OSDN Git Service

2009-11-24 Rafael Avila de Espindola <espindola@google.com>
[pf3gnuchains/gcc-fork.git] / gcc / ChangeLog
1 2009-11-24  Rafael Avila de Espindola  <espindola@google.com>
2
3         * lto-wrapper.c (lto_wrapper_exit): Don't try to delete files if
4         being called recursively.
5
6 2009-11-24  Basile Starynkevitch  <basile@starynkevitch.net>
7
8         * Makefile.in (PLUGIN_HEADERS): Added files: cppdefault.h flags.h
9         $(MD5_H) params.def params.h prefix.h tree-inline.h.
10
11 2009-11-24  Paul Brook  <paul@codesourcery.com>
12
13         * gcc/config/arm/arm.c (arm_compute_save_reg0_reg12_mask): Fix comment
14         typo.
15
16 2009-11-24  Julian Brown  <julian@codesourcery.com>
17             Paul Brook  <paul@codesourcery.com>
18
19         * config/arm/arm.c (TARGET_DWARF_REGISTER_SPAN): Define.
20         (arm_dwarf_register_span): New function.
21         (arm_dbx_register_number): Add VFPv3 dwarf numbering.
22
23 2009-11-24  David Binderman <dcb314@hotmail.com>
24
25         * cfgrtl.c (commit_one_edge_insertion): Remove set but not used
26         local variable bb_note.
27         * dominance.c (get_dominated_by): Likewise local var n.
28         (output_file_names): Likewise local var idx.
29         (add_location_or_const_value_attribute): Likewise local var status.
30         * dwarf2out.c (gen_variable_die): Likewise local var field.
31         * emit-rtl.c (no_line_numbers): Remove.
32         (init_emit_once): Remove line_numbers parameter.
33         * rtl.h (init_emit_once): Adjust prototype.
34         * toplev.c (backend_init): Adjust init_emit_once call.
35
36 2009-11-24  Richard Guenther  <rguenther@suse.de>
37
38         PR tree-optimization/42142
39         * tree-ssa-dce.c (mark_aliased_reaching_defs_necessary_1):
40         Handle iv-dependent (non-)kills properly.
41         (mark_aliased_reaching_defs_necessary): Pass the basic-block
42         of the reference statement to mark_aliased_reaching_defs_necessary_1.
43
44 2009-11-24  Martin Jambor  <mjambor@suse.cz>
45
46         PR tree-optimization/42154
47         * tree-sra.c (struct access): Added comments.
48         (sra_modify_expr): Build references to the old aggregate with
49         build_ref_for_offset instead of reusing access->expr.
50         (load_assign_lhs_subreplacements): Likewise.
51
52 2009-11-24  Uros Bizjak  <ubizjak@gmail.com>
53
54         * config/i386/i386.md (add<mode>3_carry): Change insn pattern
55         to expander.
56         (sub<mode>3_carry): Ditto.
57         (x86_mov<mode>cc_0_m1): Ditto.
58         (*add<mode>3_carry): New insn pattern.  Use VOIDmode match_operator
59         for ix86_carry_flag_operator operator predicate.
60         (*sub<mode>3_carry): Ditto.
61         (*x86_mov<mode>cc_0_m1): Ditto.
62         (*addsi3_carry_zext): Use VOIDmode match_operator for
63         ix86_carry_flag_operator operator predicate.
64         (*subsi3_carry_zext): Ditto.
65         (*x86_mov<mode>cc_0_m1_s): Ditto.
66         (*x86_mov<mode>cc_0_m1_neg): Ditto.
67         * config/i386/predocates.md (ix86_carry_flag_operator): Do not
68         check operator sub-expressions for FLAGS_REG and const0_rtx.
69         * config/i386/i386.c (*ix86_gen_sub3_carry): Update prototype.
70         (ix86_expand_int_movcc): Update calls to gen_x86_mov{si,di}cc_0_m1.
71         (ix86_expand_int_addcc): Update calls to
72         gen_{add,sub}{qi,hi,si,di}3_carry.  Do not set mode of compare_op.
73         (ix86_expand_strlensi_unroll_1): Update calls to ix86_gen_sub3_carry.
74         Do not set mode of compare operation.
75
76 2009-11-23  Jan Hubicka  <jh@suse.cz>
77
78         PR middle-end/42151
79         * ipa-inline.c (inline_transform): Avoid ICE when transform is called
80         twice.
81
82 2009-11-23  Jan Hubicka  <jh@suse.cz>
83
84         * ipa-cp.c (ipcp_compute_node_scale): Work around completely
85         wrong profile updates.
86         * predict.c (counts_to_freqs): Be expected for ENTRY/EXIT block
87         having largest frequency.
88         * ira-live.c (ira_implicitly_set_insn_hard_regs): Silecne
89         used uninitalized warning.
90         * tree-optimize.c (execute_fixup_cfg): Rescale entry and exit block
91         frequencies.
92
93 2009-11-23  Uros Bizjak  <ubizjak@gmail.com>
94
95         * config/alpha/alpha.md (*cmp_sadd_sidi): Use gen_lowpart instead
96         of gen_rtx_REG to generate operand 5.
97         (*cmp_ssub_sidi): Ditto.
98
99 2009-11-23  Richard Henderson  <rth@redhat.com>
100
101         * config/i386/i386.c (avx_vpermilp_parallel): Fix sign compare
102         mismatch.
103
104 2009-11-23  Paul Brook  <paul@codesourcery.com>
105
106         * config/arm/arm.c (arm_compute_save_reg0_reg12_mask): Add special
107         case for noreturn functions.
108         (arm_compute_save_reg_mask): Remove special noreturn handling.
109
110 2009-11-23  Richard Guenther  <rguenther@suse.de>
111
112         * tree-dfa.c (get_ref_base_and_extent): Adjust maximum access
113         size for DECL bases.
114
115 2009-11-22  Richard Henderson  <rth@redhat.com>
116
117         * i386.c (avx_vpermilp_parallel): New function.
118         * i386-protos.h: Declare it.
119         * predicates.md (avx_vpermilp_v8sf_operand, avx_vpermilp_v4df_operand,
120         avx_vpermilp_v4sf_operand, avx_vpermilp_v2df_operand): New.
121         * sse.md (AVXMODEFDP, AVXMODEFSP): New iterators.
122         (ssescalarnum, ssedoublesizemode): Add AVX modes.
123         (vpermilbits): Remove.
124         (avx_vpermil<mode>): Change insns to expanders.
125         (*avx_vpermil<mode>): New.  Use vec_select.
126
127 2009-11-22  Richard Earnshaw  <rearnsha@arm.com>
128
129         * opts.c (decode_options): Don't enable flag_schedule_insns
130         when optimizing for size.
131         * doc/invoke.texi: Document change.
132
133 2009-11-22  Uros Bizjak  <ubizjak@gmail.com>
134
135         PR target/42113
136         * config/alpha/alpha.md (*cmp_sadd_si): Change mode
137         of scratch register to SImode.
138         (*cmp_sadd_sidi): Ditto.
139         (*cmp_ssub_si): Ditto.
140         (*cmp_ssub_sidi): Ditto.
141
142 2009-11-21  Ian Lance Taylor  <iant@google.com>
143
144         * Makefile.in (HOST_LIBS): Move higher in file.
145         (LINKER, LINKER_FLAGS): If ENABLE_BUILD_WITH_CXX, but $(HOST_LIBS)
146         is not empty, set to $(CC) and $(CFLAGS).
147
148 2009-11-22  Martin Jambor  <mjambor@suse.cz>
149
150         * tree-cfg.c (verify_types_in_gimple_reference): Error out on
151         V_C_E of an SSA_NAME or an invariant if lvalue is required.
152         (verify_gimple_call): Verify LHS also with with
153         verify_types_in_gimple_reference.
154
155 2009-11-21  Martin Jambor  <mjambor@suse.cz>
156
157         PR middle-end/42025
158         * tree-sra.c (access_precludes_ipa_sra_p): New function.
159         (splice_param_accesses): Check all accesses by calling
160         access_precludes_ipa_sra_p.
161         (sra_ipa_modify_expr): Rename argument erite to dont_convert and do
162         not convert types if it is true.
163         (sra_ipa_modify_assign): Convert types in case of mismatch.
164
165 2009-11-21  Kaushik Phatak  <kaushik.phatak@kpitcummins.com>
166
167         * config/sh/sh.md (cmpeqsi_t-1): Use logical_operand predicate
168         for operand 1.
169
170 2009-11-21  Adam Nemet  <adambnemet@gmail.com>
171
172         * config/mips/mips-protos.h (mulsidi3_gen_fn): New typedef.
173         (mips_mulsidi3_gen_fn): Declare new function.
174         * config/mips/mips.c (mips_mulsidi3_gen_fn): New function.
175         * config/mips/mips.md (<u>mulsidi3): Change condition to use
176         mips_mulsidi3_gen_fn.  Use mips_mulsidi3_gen_fn to generate the insn.
177         (<u>mulsidi3_64bit): Don't match for ISA_HAS_DMUL3.
178         (mulsidi3_64bit_dmul): New define_insn.
179
180 2009-11-21  Ben Elliston  <bje@au.ibm.com>
181
182         * gengtype-lex.l: Enable noinput flex option.
183         (YY_NO_INPUT): Remove define.
184
185 2009-11-21  Alexandre Oliva  <aoliva@redhat.com>
186
187         * tree-ssa.c (find_released_ssa_name): Handle NULL wi.
188         (insert_debug_temp_for_var_def): Handle degenerate PHI nodes.
189         (insert_debug_temps_for_defs): Handle PHI nodes.
190         * tree-ssa-dom.c (degenerate_phi_result): Don't crash on released
191         SSA names.
192
193 2009-11-21  Alexandre Oliva  <aoliva@redhat.com>
194
195         * tree-ssa-pre.c (remove_dead_inserted_code): Don't release_defs
196         after remove_phi_node.
197
198 2009-11-21  Alexandre Oliva  <aoliva@redhat.com>
199
200         PR tree-optimization/42078
201         * gimple.h (gimple_replace_lhs): New declaration.
202         * gimple.c (gimple_replace_lhs): New function.
203         * tree-ssa-math-opts.c (execute_cse_reciprocals): Call it before
204         modifying the call.
205
206 2009-11-20  Sebastian Pop  <sebastian.pop@amd.com>
207
208         * config/i386/sse.md (*xop_pmacsdql_mem): Don't call reg_mentioned_p.
209         (xop_mulv2div2di3_low): Same.
210         (*xop_pmacsdqh_mem): Same.
211
212 2009-11-20  Richard Henderson  <rth@redhat.com>
213
214         * config/i386/i386-builtin-types.awk: New file.
215         * config/i386/i386-builtin-types.def: New file.
216         * config/i386/t-i386: Use them to build i386-builtin-types.inc.
217         * config/i386/i386.c: Include it.
218         (ix86_builtin_type_tab, ix86_get_builtin_type): New.
219         (ix86_builtin_func_type_tab, ix86_get_builtin_func_type): New.
220         (struct builtin_isa): Remove GTY marker.  Replace tree type with
221         ix86_builtin_func_type; add set_and_not_built_p.
222         (def_builtin): Change type parameter to tcode; use
223         ix86_get_builtin_func_type; update all callers.  Accept zero mask
224         to mean the builtin is unconditionally available.
225         (ix86_add_new_builtins): Use set_and_not_built_p instead of type
226         being set to NULL.
227         (enum ix86_special_builtin_type, enum ix86_builtin_type): Remove.
228         Update some users to rationalized enumeration codes from new include.
229         (enum multi_arg_type): Remove.  Replace all enumeration values
230         with defines to new ix86_builtin_func_type.
231         (ix86_init_mmx_sse_builtins): Don't build any types here.  Defer
232         all type resolution to def_builtin.
233         (ix86_init_builtin_types): Split out from ...
234         (ix86_init_builtins): ... here.  Use ix86_get_builtin_func_type.
235
236 2009-11-20  Michael Meissner  <meissner@linux.vnet.ibm.com>
237
238         PR target/41787
239         * config/rs6000/rs6000.c (struct machine_function): Revert
240         2009-10-23 change to set VRSAVE to non-0 if we use VSX.
241         (rs6000_expand_to_rtl_hook): Ditto.
242         (rs6000_check_vector_mode): Ditto.
243         (compute_vrsave_mask): Ditto.
244
245 2009-11-20  Paul Brook  <paul@codesourcery.com>
246
247         * doc/invoke.texi: Document ARM -mcpu=cortex-a5.
248         * config/arm/arm-cores.def: Add cortex-a5.
249         * config/arm/bpabi.h (BE8_LINK_SPEC): Add mcpu=cortex-a5.
250         * config/arm/arm-tune.md: Regenerate.
251
252 2009-11-20 Olga Golovanevsky <olga@il.ibm.com>
253
254         PR middle-end/39960
255         * ipa-struct-reorg.c (find_pos_in_stmt): New parameter.
256         (ref_pos): New field in structure.
257         (insert_new_var_in_stmt): New function.
258
259
260 2009-11-20  Rainer Orth  <ro@CeBiTec.Uni-Bielefeld.DE>
261
262         * config.gcc (alpha*-dec-osf[45]*): Set use_gcc_stdint.
263         * config/alpha/osf.h (SIG_ATOMIC_TYPE): Define.
264         (INT8_TYPE, INT16_TYPE, INT32_TYPE, INT64_TYPE): Define.
265         (UINT8_TYPE, UINT16_TYPE, UINT32_TYPE, UINT64_TYPE): Define.
266         (INT_LEAST8_TYPE, INT_LEAST16_TYPE, INT_LEAST32_TYPE,
267         INT_LEAST64_TYPE): Define.
268         (UINT_LEAST8_TYPE, UINT_LEAST16_TYPE, UINT_LEAST32_TYPE,
269         UINT_LEAST64_TYPE): Define.
270         (INT_FAST8_TYPE, INT_FAST16_TYPE, INT_FAST32_TYPE,
271         INT_FAST64_TYPE): Define.
272         (UINT_FAST8_TYPE, UINT_FAST16_TYPE, UINT_FAST32_TYPE,
273         UINT_FAST64_TYPE): Define.
274         (INTPTR_TYPE, UINTPTR_TYPE): Define.
275
276 2009-11-20  Julian Brown  <julian@codesourcery.com>
277
278         * config/arm/arm.h (ASM_OUTPUT_REG_PUSH): Handle STATIC_CHAIN_REGNUM
279         specially for Thumb-1.
280         (ASM_OUTPUT_REG_POP): Likewise.
281
282 2009-11-19  Jason Merrill  <jason@redhat.com>
283
284         * dwarf2out.c (get_context_die): Take TYPE_MAIN_VARIANT.
285
286 2009-11-19  Basile Starynkevitch  <basile@starynkevitch.net>
287             Rafael Avila de Espindola  <espindola@google.com>
288
289         * doc/plugins.texi (Plugin initialization): Added advices for
290         retrieving the version of GCC at plugin compilation and loading times.
291
292 2009-11-19  Basile Starynkevitch  <basile@starynkevitch.net>
293
294         * plugin.c (FMT_FOR_PLUGIN_EVENT): added definition.
295         (dump_active_plugins): output to file everything. Use
296         internationalized dump & FMT_FOR_PLUGIN_EVENT.
297
298 2009-11-19  Richard Guenther  <rguenther@suse.de>
299
300         * gimple.c (canonicalize_cond_expr_cond): Strip conversions
301         around truth-valued expressions.
302         * tree.c (free_lang_data): Untangle check for LTO frontend.
303
304 2009-11-19  Jakub Jelinek  <jakub@redhat.com>
305
306         * tree.c (need_assembler_name_p): Use cgraph_get_node instead
307         of cgraph_node_for_decl.
308         * cgraph.h (cgraph_node_for_decl): Remove prototype.
309         * cgraph.c (cgraph_node_for_decl): Remove.
310         (cgraph_get_node): Just return NULL if !cgraph_hash.
311
312 2009-11-19  Paul Brook  <paul@codesourcery.com>
313
314         * config.gcc: Add new ARM --with-fpu options.
315         * doc/invoke.texi: Docuent ARM -mfpu=fpv4-sp-d16.
316         * config/arm/arm.c (all_fpus): Add fpv4-sp-d16.
317
318 2009-11-18  Richard Guenther  <rguenther@suse.de>
319
320         * gimple.h (union gimple_statement_d): Add gsmembase member.
321         (gimple_vuse_op): Use gsmembase for access.
322         (gimple_vdef_op): Likewise.
323         (gimple_vuse): Likewise.
324         (gimple_vdef): Likewise.
325         (gimple_vuse_ptr): Likewise.
326         (gimple_vdef_ptr): Likewise.
327         (gimple_set_vuse): Likewise.
328         (gimple_set_vdef): Likewise.
329         * gsstruct.def (GSS_WITH_MEM_OPS_BASE): Add.
330
331 2009-11-18  Daniel Jacobowitz  <dan@codesourcery.com>
332
333         * doc/arm-neon-intrinsics.texi: Regenerated.
334
335 2009-11-18  Daniel Jacobowitz  <dan@codesourcery.com>
336
337         * config/arm/neon-docgen.ml (analyze_shape_elt): Handle alternatives.
338
339 2009-11-18  Paul Brook  <paul@codesourcery.com>
340             Daniel Jacobowitz  <dan@codesourcery.com>
341
342         * config/arm/arm.c (FL_ARCH7EM, FL_FOR_ARCH7EM): Define.
343         (arm_arch7em): New variable.
344         (all_architectures): Add armv7e-m.
345         (arm_override_options): Set arm_arch7em.
346         * config/arm/arm.h (TARGET_DSP_MULTIPLY, TARGET_INT_SIMD):
347         Include arm_arch7em.
348         (arm_arch7em): Declare.
349
350 2009-11-18  Richard Guenther  <rguenther@suse.de>
351
352         * lto-streamer-in.c (input_gimple_stmt): Assert that we find
353         a valid field decl if checking is enabled.
354
355 2009-11-18  Martin Jambor  <mjambor@suse.cz>
356
357         * ipa-prop.h (struct ipa_param_call_note): New field lto_stmt_uid.
358         (lto_ipa_fixup_call_notes): Declare.
359         * ipa-prop.c (ipa_note_param_call): Store gimple uid.
360         (update_call_notes_after_inlining): Copy call stmt uid to the new
361         edge.
362         (ipa_write_param_call_note): New function.
363         (ipa_read_param_call_note): New function
364         (ipa_write_node_info): Write also param call notes.  Removed a bogus
365         comment, reformatted to fit 80 columns.
366         (ipa_read_node_info): Read also param call notes. Removed a bogus
367         comment.  Remove ipa_edge_args_vector growth.
368         (lto_ipa_fixup_call_notes): New function.
369         * ipa-cp.c (pass_ipa_cp): Add stmt_fixup hook.
370         * ipa-inline.c (cgraph_mark_inline_edge): Perform indirect
371         inlining regardless of flag_wpa.
372         (cgraph_decide_inlining_of_small_functions): Likewise.
373         (cgraph_decide_inlining): Likewise.
374         (inline_read_summary): Likewise.
375
376 2009-11-18  Jan Hubicka  <jh@suse.cz>
377
378         * predict.c (compute_function_frequency): Export.
379         * predict.h (compute_function_frequency): Declare.
380         * tree-optimize.c (execute_fixup_cfg): Rescale frequencies.
381
382 2009-11-18  Martin Jambor  <mjambor@suse.cz>
383
384         * passes.c (ipa_write_summaries): Call renumber_gimple_stmt_uids
385         on all nodes we write summaries for.
386
387 2009-11-18  Shujing Zhao  <pearly.zhao@oracle.com>
388         
389         PR middle-end/22201
390         * params.def (PARAM_INLINE_UNIT_GROWTH, PARAM_IPCP_UNIT_GROWTH)
391         (PARAM_EARLY_INLINING_INSNS, PARAM_IRA_MAX_LOOPS_NUM)
392         (PARAM_IRA_MAX_CONFLICT_TABLE_SIZE)
393         (PARAM_LOOP_INVARIANT_MAX_BBS_IN_LOOP)
394         (PARAM_MIN_INSN_TO_PREFETCH_RATIO)
395         (PARAM_PREFETCH_MIN_INSN_TO_MEM_RATIO)
396         (PARAM_IPA_SRA_PTR_GROWTH_FACTOR): Uppercase the first letter of the
397         description string.
398
399 2009-11-18  Jakub Jelinek  <jakub@redhat.com>
400
401         * dwarf2out.c (loc_list_from_tree): Don't call rtl_for_decl_location
402         unnecessarily.
403         (rtl_for_decl_location): Try harder to get a rtl for TREE_STATIC vars.
404
405         PR c++/3187
406         * cgraph.h (struct cgraph_node): Add same_body and same_body_alias
407         fields.
408         (cgraph_same_body_alias, cgraph_remove_same_body_alias): New
409         prototypes.
410         * cgraphunit.c (cgraph_expand_function, cgraph_emit_thunks,
411         cgraph_materialize_all_clones): Handle same_body aliases.
412         * cgraph.c (cgraph_allocate_node): New function.
413         (cgraph_create_node): Use it.
414         (cgraph_node_for_decl, cgraph_node, cgraph_get_node,
415         cgraph_node_for_asm, cgraph_remove_node): Handle same_body aliases.
416         (cgraph_same_body_alias, cgraph_remove_same_body_alias): New
417         functions.
418         * lto-cgraph.c (lto_output_node): Stream out same_body aliases.
419         (input_node): Stream in same_body aliases.
420         * lto-symtab.c (lto_cgraph_replace_node): Clear node pointers
421         for same_body aliases.
422         (lto_symtab_merge_cgraph_nodes_1): Handle same_body aliases.
423
424 2009-11-18  Iain Sandoe <iain.sandoe@sandoe-acoustics.co.uk>
425
426         PR other/39888
427         * config/darwin.h: Use the extension stub libraries to access
428         current libgcc_s features.
429
430 2009-11-18  Alexandre Oliva  <aoliva@redhat.com>
431
432         PR debug/41926
433         * tree-vect-loop.c (vect_loop_kill_debug_uses): New.
434         (vect_transform_loop): Call it.
435
436 2009-11-18  Alexandre Oliva  <aoliva@redhat.com>
437
438         * tree-ssa.c (insert_debug_temp_for_var_def): Fix handling of
439         released SSA names.
440
441 2009-11-18  Alexandre Oliva  <aoliva@redhat.com>
442
443         PR debug/41888
444         PR debug/41886
445         * graphite-scop-detection.c (stmt_simple_for_scop_p): Debug stmts
446         are ok.
447         * graphite-sese-to-poly.c (graphite_stmt_p): Likewise.
448         (try_generate_gimple_bb): Skip debug stmts when finding data refs.
449         * sese.c (sese_build_liveouts_bb): Skip debug stmts.
450         (sese_bad_liveouts_use): New.
451         (sese_reset_debug_liveouts_bb): New.
452         (sese_build_liveouts): Use it.
453         (rename_variables_in_stmt): Reset debug stmts rather than creating
454         new vars for them.
455         (expand_scalar_variable_stmt): Likewise.
456
457 2009-11-18  Alexandre Oliva  <aoliva@redhat.com>
458
459         * df-scan.c (df_ref_create): Don't mark BB as dirty on debug insns.
460         (df_ref_remove): Likewise.
461
462 2009-11-17  Jan Hubicka  <jh@suse.cz>
463
464         * ipa-struct-reorg.c (update_cgraph_with_malloc_call): Fix profile
465         info.
466
467 2009-11-17  Eric Botcazou  <ebotcazou@adacore.com>
468
469         * toplev.c (process_options): Remove dead code.
470         * doc/invoke.texi (-frename-registers): Mention -fpeel-loops.
471
472 2009-11-17  Rafael Avila de Espindola  <espindola@google.com>
473
474         * lto-symtab.c (lto_symtab_resolve_symbols): Always initialize the
475         nodes.
476
477 2009-11-17  Ulrich Weigand  <Ulrich.Weigand@de.ibm.com>
478
479         PR tree-optimization/41857
480         * tree-ssa-address.c (move_hint_to_base): Use void pointer to
481         TYPE's address space instead of pointer to TYPE.
482
483 2009-11-17  Ulrich Weigand  <Ulrich.Weigand@de.ibm.com>
484
485         * reload.c (find_reloads_address): Fix typo.
486
487 2009-11-17  Ulrich Weigand  <Ulrich.Weigand@de.ibm.com>
488
489         * config/spu/spu.c (get_pic_reg): Use LAST_ARG_REGNUM as PIC
490         registers in leaf functions if possible.
491
492 2009-11-17  Maxim Kuvyrkov  <maxim@codesourcery.com>
493
494         * config/m68k/m68k-devices.def: Add MCF5441x family.
495
496 2009-11-17  Jan Hubicka  <jh@suse.cz>
497
498         * cgraph.c (cgraph_update_edges_for_call_stmt_node): Do not access
499         removed node.
500         * cgraphunit.c (verify_cgraph_node): Verify frequencies for match.
501
502 2009-11-17  Uros Bizjak  <ubizjak@gmail.com>
503
504         * config/i386/predicates.md (x86_64_szext_general_operand): Do not
505         nest ior expressions.
506         (x86_64_szext_nonmemory_operand): Ditto.
507         (call_insn_operand): Ditto.
508
509 2009-11-16  Alexandre Oliva  <aoliva@redhat.com>
510
511         * stmt.c (expand_asm_stmt): Get locus from stmt.
512
513 2009-11-16  Alexandre Oliva  <aoliva@redhat.com>
514
515         * tree-cfg.c (gimple_redirect_edge_and_branch) <case GIMPLE_ASM>:
516         Create the decl label for the new dest block on demand.  Require
517         a fallthrough edge if no asm labels were redirected.
518
519 2009-11-16  Uros Bizjak  <ubizjak@gmail.com>
520
521         * config/i386/i386.md (cbranchsi4): Use nonimmediate_operand for
522         operand 1 predicate.
523         (cstoresi4): Ditto for operand 2.
524         (cbranch<mode>4): Macroize expander from cbranch{qi,hi,si,di,ti}4
525         patterns using SDWIM mode iterator.
526         (cstore<mode>4): Macroize expander from cstore{qi,hi,si,di}4 patterns
527         using SWIM mode iterator.
528         (cmpdi_1): Rename from cmpdi_1_rex64.
529         (cmp<mode>_1): Macroize expander from cmp{si,di}_1 patterns using
530         SWI48 mode iterator.
531         (*cmp<mode>_1): Macroize insn from *cmp{qi,hi,si,di}_1_insn using SWI
532         mode iterator.
533         (*cmp<mode>_ccno_1): Ditto from *cmp{qi,hi,si,di}_ccno_1.
534         (*cmp<mode>_minus_1): Ditto from *cmp{qi,hi,si,di}_minus_1.
535         (*cmpqi_ext_3_insn): Make private.
536         (*cmpqi_ext_3_insn_rex64): Make private.
537         (cmpstrnsi): Update for renamed cmpdi_1_rex64.
538         * config/i386/predicates.md (cmpsi_operand): Remove.
539
540 2009-11-16  Paul Brook  <paul@codesourcery.com>
541
542         * doc/invoke.texi: Document ARM VFPv4 based FPUs.
543         * config/arm/arm.c (all_fpus): Add VFPv4 entries.
544
545 2009-11-14  Jan Hubicka  <jh@suse.cz>
546
547         * cgraphbuild.c (compute_call_stmt_bb_frequency): Use proper
548         ENTRY_BLOCK_PTR.
549         * cgraph.c (cgraph_clone_edge): Avoid freq_scale 0 to completely
550         zero out all callees.
551         * cgraphunit.c (verify_cgraph_node): Verify cgraph nodes for
552         frequency and count match.
553         * ipa-inline.c (update_noncloned_frequencies): New function.
554         (cgraph_clone_inlined_nodes): Use it.
555         * tree-inline.c (copy_bb): Fix frequency scaling; output
556         diagnostic on frequency mismatches to dump file.
557         (initialize_cfun): Do not scale frequency; fix count scaling;
558         initialize entry and exit block frequencies; copy profile info.
559         (copy_cfg_body): Use frequency_scale as argument; fix count scaling.
560         (copy_body): Use frequency_scale as argument.
561         (expand_call_inline): Compute frequency scale and output diagnostic
562         to dump file.
563         (delete_unreachable_blocks_update_callgrah): Remove checking that
564         has to be done after edge redirection.
565         (tree_function_versioning): Update initialize_cfun and copy_body call.
566
567 2009-11-14  Jan Hubicka  <jh@suse.cz>
568
569         * cgraph.c (cgraph_release_function_body): Update use of
570         ipa_transforms_to_apply.
571         (cgraph_remove_node): Remove ipa_transforms_to_apply.
572         * cgraph.h (struct cgraph_node): Add ipa_transforms_to_apply.
573         * cgraphunit.c (save_inline_function_body): Clear ipa_transforms for
574         copied body.
575         (cgraph_materialize_clone): Remove original if dead.
576         * lto-streamer-in.c (lto_read_body): Remove FIXME and
577         ipa_transforms_to_apply hack.
578         * function.h (struct function): Add ipa_transforms_to_apply.
579         * ipa.c (cgraph_remove_unreachable_nodes): Handle dead clone originals.
580         * tree-inline.c (copy_bb): Update sanity check.
581         (initialize_cfun): Do not copy ipa_transforms_to_apply.
582         (expand_call_inline): remove dead clone originals.
583         (tree_function_versioning): Merge transformation queues.
584         * passes.c (add_ipa_transform_pass): Remove.
585         (execute_one_ipa_transform_pass): Update ipa_transforms_to_apply
586         tracking.
587         (execute_all_ipa_transforms): Update.
588         (execute_one_pass): Update.
589
590 2009-11-14  Andy Hutchinson  <hutchinsonandy@gcc.gnu.org>
591
592         PR target/21078, 21080
593         * config/avr/avr.c (avr_return_addr_rtx): New function for
594         builtin_return_address.
595         (expand_prologue): Calculate stack usage.
596         (avr_asm_function_end_prologue): Output stack size and offset label.
597         * config/avr/avr.h (RETURN_ADDR_RTX): Replace.
598         (machine_function): Add stack_usage.
599         * config/avr/avr-protos.h (avr_return_addr_rtx): New function.
600
601 2009-11-14  Anatoly Sokolov  <aesok@post.ru>
602
603         * config/iq2000/iq2000.c (iq2000_function_value): Make static, add
604         new 'outgoing' argument.
605         (iq2000_libcall_value, iq2000_function_value_regno_p): New functions.
606         (TARGET_FUNCTION_VALUE, TARGET_LIBCALL_VALUE): Declare.
607         * config/iq2000/iq2000.h (FUNCTION_VALUE_REGNO_P): Redefine, use
608         iq2000_function_value_regno_p.
609         (FUNCTION_VALUE, LIBCALL_VALUE): Remove.
610         * config/iq2000/iq2000-protos.h (iq2000_function_value_regno_p):
611         Declare.
612
613 2009-11-14  Richard Earnshaw  <rearnsha@arm.com>
614
615         PR target/42031
616         * arm.md (adddi_sesidi_di): Place tied contraint first.
617         (adddi_zesidi_di, subdi_di_zesidi, subdi_di_sesidi): Likewise
618         (subdi_zesidi_di, subdi_sesidi_di): Likewise.
619         (mulsi3_compare0, mulsi_compare0_scratch): Likewise.
620         (mulsi3addsi, mulsi3addsi_compare0): Likewise.
621         (mulsi3addsi_compare0_scratch, smulsi3_highpart_nov6): Likewise.
622         (umulsi3_highpart_nov6, anddi_zesidi_di, anddi_sesdi_di): Likewise.
623         (anddi_notdi_di, iordi_sesidi_di, xordi_sesidi_di): Likewise.
624         (andsi_iorsi3_notsi, arm_ashldi3_1bit, arm_ashrdi3_1_bit): Likewise.
625         (arm_lshrdi3_1bit, one_cmpldi2): Likewise.
626
627 2009-11-14  Uros Bizjak  <ubizjak@gmail.com>
628
629         * config/i386/predicates.md (call_register_no_elim_operand):
630         New predicate.  Reject stack register as valid call operand
631         for 32bit targets.
632         (call_insn_operand): Use call_register_no_elim_operand.
633
634 2009-11-13  Richard Henderson  <rth@redhat.com>
635
636         * function.c (stack_protect_prologue): Don't bypass expand_expr
637         for stack_protect_guard and guard_decl.
638         (stack_protect_epilogue): Likewise.
639
640 2009-11-13  Jan Hubicka  <jh@suse.cz>
641
642         * ipa.c (function_and_variable_visibility): Clear COMDAT on functions
643         when to PUBLIC is set.
644
645 2009-11-13  Jakub Jelinek  <jakub@redhat.com>
646
647         PR middle-end/42029
648         * gimplify.c (gimplify_omp_atomic): Set DECL_GIMPLE_REG_P on
649         tmp_load if needed.
650
651 2009-11-13  Uros Bizjak  <ubizjak@gmail.com>
652
653         PR target/41900
654         * config/i386/i386.md (*call_pop_1, *call_1, *call_value_pop_1,
655         *call_value_1): Use "lsm" as operand 1 constraint.
656         * config/i386/predicates.md (call_insn_operand): Depend on
657         index_register_operand to avoid %esp register.
658
659 2009-11-13  Uros Bizjak  <ubizjak@gmail.com>
660
661         Revert:
662         2009-11-03  Uros Bizjak  <ubizjak@gmail.com>
663
664         PR target/41900
665         * config/i386/i386.h (ix86_arch_indices) <X86_ARCH_CALL_ESP>: New.
666         (TARGET_CALL_ESP): New define.
667         * config/i386/i386.c (initial_ix86_tune_features): Initialize
668         X86_ARCH_CALL_ESP.
669         * config/i386/i386.md (*call_pop_1_esp, *call_1_esp,
670         *call_value_pop_1_esp, *call_value_1_esp): Rename from *call_pop_1,
671         *call_1, *call_value_pop_1 and *call_value_1.  Depend on
672         TARGET_CALL_ESP.
673         (*call_pop_1, *call_1, *call_value_pop_1, *call_value_1):
674         New patterns, use "lsm" as operand 1 constraint.
675         * config/i386/predicates.md (call_insn_operand): Depend on
676         index_register_operand for !TARGET_CALL_ESP to avoid %esp register.
677
678 2009-11-13  Jason Merrill  <jason@redhat.com>
679
680         PR debug/26965
681         * dwarf2out.c (gen_variable_die): Don't worry about DECL_COMDAT.
682         Don't emit a second declaration at any scope.
683
684 2009-11-13  Andrey Belevantsev  <abel@ispras.ru>
685
686         PR rtl-optimization/41697
687         * sel-sched-ir.c (fallthru_bb_of_jump): Bail out when a block with
688         a conditional jump has a single successor.
689
690 2009-11-13  Andrey Belevantsev  <abel@ispras.ru>
691
692         * sched-deps.c (init_deps): New parameter lazy_reg_last.  Don't
693         allocate reg_last when in case lazy_reg_last is true.
694         (init_deps_reg_last): New.
695         (free_deps): When max_reg is 0, this context is already freed.
696         * sched-int.h (init_deps_reg_last): Export.
697         (init_deps): Update prototype.
698         * sched-ebb.c (schedule_ebb): Update the call to init_deps.
699         * sched-rgn.c (sched_rgn_compute_dependencies): Likewise.
700         * ddg.c (build_intra_loop_deps): Likewise.
701         * sel-sched-ir.c (copy_deps_context, create_deps_context,
702         reset_deps_context, deps_init_id): Likewise.
703         (init_first_time_insn_data): Lazy allocate INSN_DEPS_CONTEXT.
704         (free_data_for_scheduled_insn): New, break down from ...
705         (free_first_time_insn_data): ... here.
706         (has_dependence_p): Allocate reg_last now, when it is needed.
707         (extend_insn_data): When maximal LUID is big enough, allocate
708         per-insn data in smaller chunks.
709         * sel-sched-ir.h (free_data_for_scheduled_insn): Export.
710         * sel-sched.c (update_seqnos_and_stage): Free INSN_DEPS_CONTEXT
711         in scheduled insn.
712
713 2009-11-13  Uros Bizjak  <ubizjak@gmail.com>
714
715         * config/i386/i386.md (call_value): Fix comment.
716         (sibcall_value): Ditto.
717
718 2009-11-13  Eric Botcazou  <ebotcazou@adacore.com>
719
720         * config/i386/linux-unwind.h (x86_frob_update_context): New function.
721         (MD_FROB_UPDATE_CONTEXT): Define.
722
723 2009-11-12  Eric Botcazou  <ebotcazou@adacore.com>
724             Laurent GUERBY  <laurent@guerby.net>
725
726         * config/sparc/linux-unwind.h (sparc64_fallback_frame_state): Tidy.
727         Do not schedule an %sp restore.  Compensate for RETURN_ADDR_OFFSET.
728         (sparc_fallback_frame_state): Tidy.  Compensate for RETURN_ADDR_OFFSET.
729
730 2009-11-12  Jan Hubicka  <jh@suse.cz>
731
732         * ipa.c (function_and_variable_visibility): Fix my accidentail commit
733         and clear DECL_COMMON on localized declarations.
734
735 2009-11-12  Bernd Schmidt  <bernd.schmidt@analog.com>
736
737         PR rtl-opt/38582
738         * regrename.c (struct du_head): New structure; some elements moved
739         from...
740         (struct du_chain): ... this one.
741         (open_chains, closed_chains): Now of type struct du_head *.
742         (do_replace): Accept du_head argument, not du_chain.  All callers
743         changed.  Modified code to match new data structures.
744         (build_def_use): Return a list of du_head structures.  Modified code
745         to match new data structures.
746         (dump_def_use_chain): Accept du_head argument, not du_chain.  All
747         callers changed.  Modified code to match new data structures.
748         (merge_overlapping_regs): Accept du_head argument, not du_chain.  All
749         callers changed.  Modified code to match new data structures.
750         (scan_rtx_reg): Change type of this_regno and this_nregs to unsigned.
751         Allocate a du_head structure as well as a du_chain when creating a
752         new chain.  Modified other code to match new data structures.
753
754 2009-11-12  Jan Hubicka  <jh@suse.cz>
755
756         * cgraph.h (varpool_node_name): Declare.
757         * cgraphunit.c (process_function_and_variable_attributes): Set
758         force_output flag on used variables.
759         * ipa.c (function_and_variable_visibility): Dump externally visible
760         and needed variables.
761         * varpool.c (varpool_node_name): Export.
762         (decide_is_variable_needed): Check COMDAT for externally visible vars;
763         ignore needed flag.
764
765 2009-11-12  Uros Bizjak  <ubizjak@gmail.com>
766
767         PR middle-end/41930
768         * simplify-rtx.c (simplify_replace_fn_rtx) <case 'e'>: Skip
769         processing if XEXP (x, i) is NULL.
770
771 2009-11-12  Jan Hubicka  <jh@suse.cz>
772
773         * ipa.c (function_and_variable_visibility): Verify that WEAK || COMMON
774         imply PUBLIC || EXTERNAL.
775
776 2009-11-11  Andy Hutchinson  <hutchinsonandy@gcc.gnu.org>
777
778         PR middle-end/41440
779         * cfgexpand.c (expand_gimple_basic_block): Append NOP to a fallthru,
780         single successor block, ending with jump created by RTL expander.
781
782 2009-11-11  Jan Hubicka  <jh@suse.cz>
783
784         PR middle-end/41729
785         * ipa.c (function_and_variable_visibility): Do not privatize COMDAT
786         and WEAK variables at -fwhole-program.
787
788         PR middle-end/41735
789         * ipa.c (whole_program_function_and_variable_visility): COMDAT
790         functions/variables are not needed even if they are externally visible.
791
792 2009-11-11  Jan Hubicka  <jh@suse.cz>
793
794         (patch by Richard Guenther)
795         * lto-streamer-out.c (output_function): Output head of argument list
796         earlier.
797         * lto-streamer-in.c (input_function): Re-map arguments into merged
798         declaration.
799
800 2009-11-11  Jan Hubicka  <jh@suse.cz>
801
802         * lto-cgraph.c: Include gcov-io.h
803         (output_profile_summary): New function.
804         (output_cgraph): Use it.
805         (input_profile_summary): New function.
806         (input_cgraph): Use it.
807         * coverage.c (build_ctr_info_value): Use varpool; initalize
808         DECL_ASSEMBLER_NAME.
809         (create_coverage): Likewise.
810         * tree-profile.c (tree_init_ic_make_global_vars): Likewise.
811         (tree_init_edge_profiler): Likewise.
812         * Makefile.in (lto-cgraph.o): Add dependency on gcov-io.h.
813
814 2009-11-11  Kai Tietz  <kai.tietz@onevision.com>
815
816         * config/i386/cygming.h (HANDLE_PRAGMA_PUSH_POP_MACRO): Removed.
817         * c-pragma.c (def_pragma_macro_value): Likewise.
818         (def_pragma_macro): Likewise.
819         (pushed_macro_table): Likewise.
820         (HANDLE_PRAGMA_PUSH_POP_MACRO): Remove guarded code.
821         * doc/tm.texi (HANDLE_PRAGMA_PUSH_POP_MACRO): Removed.
822
823 2009-11-11  Basile Starynkevitch  <basile@starynkevitch.net>
824
825         * doc/plugins.texi (Registering custom attributes): section
826         renamed as (Registering custom attributes or pragmas).
827         Mentions custom attributes & pragmas, and c_register_pragma, with
828         a small example.
829         * doc/cpp.texi (Pragmas): Mentions that plugins can provide their
830         pragmas.
831         * doc/extend.texi (Function Attributes): Mentions that plugin can
832         provide their attributes.
833
834 2009-11-11  Jon Beniston  <jon@beniston.com>
835
836         * config.gcc: Add lm32 elf and uclinux targets.
837         * config/lm32: New directory.
838         * config/lm32/lm32.c: New file.
839         * config/lm32/lm32.h: New file.
840         * config/lm32/lm32.md: New file.
841         * config/lm32/lm32.opt: New file.
842         * config/lm32/lm32-protos.h: New file.
843         * config/lm32/constraints.md: New file.
844         * config/lm32/predicates.md: New file.
845         * config/lm32/sfp-machine.h: New file.
846         * config/lm32/t-fprules-softfp: New file.
847         * config/lm32/uclinux-elf.h: New file.
848         * doc/invoke.texi: Document lm32 options.
849         * doc/contrib.texi: Document lm32 porter.
850         * doc/install.texi: Document lm32 targets.
851
852 2009-11-11  Martin Jambor  <mjambor@suse.cz>
853
854         PR lto/41932
855         * ipa-prop.c (ipa_update_after_lto_read): Call
856         ipa_check_create_node_params and ipa_check_create_edge_args.  Also
857         call ipa_initialize_node_params instead of ipa_populate_param_decls.
858
859 2009-11-11  Daniel Jacobowitz  <dan@codesourcery.com>
860
861         * config/arm/arm.c (neon_vdup_constant, neon_make_constant): New.
862         (neon_expand_vector_init): Use them.  Also handle non-constant
863         vectors with identical elements and vectors with only one
864         non-constant element.
865         (arm_print_operand): Handle 'y' modifier.
866         * config/arm/arm-protos.h (neon_make_constant): Declare.
867         * config/arm/neon.md (neon_vdup_n<mode>): Split into two
868         patterns.  Use VX instead of VDQW for the first one.  Allow
869         a VFP alternative and V32 modes for the second one.
870         * config/arm/neon.ml (shape_elt): Add Alternatives.
871         (ops): Use Alternatives for vdup lane instructions.
872         * config/arm/neon-testgen.ml (analyze_shape): Handle Alternatives.
873         * config/arm/vec-common.md (mov<mode>): Use neon_make_constant.
874
875 2009-11-11  Daniel Jacobowitz  <dan@codesourcery.com>
876
877         * config/arm/neon.md (*neon_mov<mode>): Reject two non-register
878         operands.
879         (movti, mov<mode>): Call force_reg on one operand if required.
880         * config/arm/vec-common.md (mov<mode>): Likewise.
881
882 2009-11-11  Daniel Jacobowitz  <dan@codesourcery.com>
883
884         * config/arm/arm.c (arm_override_options): Enable scheduling for
885         Thumb-2.
886
887 2009-11-10  Eric Botcazou  <ebotcazou@adacore.com>
888
889         PR target/10127
890         PR ada/20548
891         * expr.h (anti_adjust_stack_and_probe): Declare.
892         * explow.c (anti_adjust_stack_and_probe): Make global, add ADJUST_BACK
893         parameter and rewrite head comment.
894         (allocate_dynamic_stack_space): Adjust call to above function.
895         * function.c (expand_function_end): Handle STACK_CHECK_MOVING_SP.
896
897         * tree.h (dwarf2out_args_size): Delete.
898         * dwarf2out.c (dwarf2out_args_size): Make static and move around.
899         (dwarf2out_args_size_adjust): Delete prototype and move around.
900         (dwarf2out_frame_debug_expr): Do not record arg size adjustments for
901         ACCUMULATE_OUTGOING_ARGS targets.
902
903 2009-11-10  Eric Botcazou  <ebotcazou@adacore.com>
904
905         * config/sparc/sparc.c (print_operand) <')'>: Test for a non-null
906         DECL_SIZE of DECL_RESULT before evaluating it.
907
908 2009-11-10  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
909
910         PR tree-optimization/41987
911         * fold-const.c (const_binop): Avoid using fold_buildN().
912
913 2009-11-10  Martin Jambor  <mjambor@suse.cz>
914
915         * tree-pass.h (struct ipa_opt_pass_d): Added stmt_fixup field.
916         (execute_all_ipa_stmt_fixups): Declare.
917         * ipa-cp.c (pass_ipa_cp): Added stmt_fixup value.
918         * ipa-inline.c (pass_ipa_inline): Likewise.
919         * ipa-pure-const.c (pass_ipa_pure_cons): Likewise.
920         * ipa-reference.c (pass_ipa_reference): Likewise.
921         * ipa.c (pass_ipa_whole_program_visibility): Likewise.
922         * lto-streamer-out.c (pass_ipa_lto_gimple_out): Likewise.
923         (pass_ipa_lto_finish_out): Likewise.
924         * lto-wpa-fixup.c (pass_ipa_lto_wpa_fixup): Likewise.
925         * passes.c (execute_ipa_stmt_fixups): New function.
926         (execute_all_ipa_stmt_fixups): New function.
927         * lto-streamer-in.c (input_function): Call execute_all_ipa_stmt_fixups.
928
929 2009-11-10  Eric Botcazou  <ebotcazou@adacore.com>
930
931         PR ada/20548
932         * explow.c (probe_stack_range): Fix typo.
933         * config/sparc/sparc.md (probe_stack): New expander.
934
935 2009-11-09  Dave Korn  <dave.korn.cygwin@gmail.com>
936
937         * config/i386/cygwin.h (LINK_SPEC): Add -tsaware flag if !mno-cygwin.
938
939 2009-11-09  Jason Merrill  <jason@redhat.com>
940
941         * gdbinit.in (pgq): New function for printing gimple sequence.
942
943 2009-11-09  Paul Brook  <paul@codesourcery.com>
944             Daniel Jacobowitz  <dan@codesourcery.com>
945             Sandra Loosemore  <sandra@codesourcery.com>
946
947         * doc/extend.texi (Half-Precision): Update wording to reflect
948         that there are now multiple -mfpu options that enable fp16
949         hardware support.
950         * doc/invoke.texi: Update list of ARM -mfpu= options.
951         * config.gcc: Update ARM --with-fpu option list.
952         * config/arm/arm.c (all_fpus): Add vfpv3-fp16, vfpv3-d16-fp16,
953         vfpv3xd and vfpv3xd-fp16.
954         (use_vfp_abi): New function.
955         (aapcs_vfp_is_call_or_return_candidate): Avoid double precision regs
956         when undesirable.
957         (aapcs_vfp_is_return_candidate, aapcs_vfp_is_call_candidate,
958         aapcs_vfp_allocate_return_reg): Use use_vfp_abi.
959         (arm_rtx_costs_1, arm_size_rtx_costs, arm_fastmul_rtx_costs,
960         arm_9e_rtx_costs): Only expect double-precision operations if the FPU
961         provides them.
962         (coproc_secondary_reload_class): Reload HFmode via GENERAL_REGS if no
963         NEON.
964         (arm_print_operand): Handle 'p' modifier.
965         (arm_hard_regno_mode_ok): : Allow HFmode in VFP registers if
966         TARGET_FP16.
967         * config/arm/arm.h (TARGET_VFP_SINGLE, TARGET_VFP_DOUBLE): Define.
968         (TARGET_FP16): Define.
969         * config/arm/vfp.md: Disable double-precision patterns if the FPU
970         does not provide them.
971         (arm_movdi_vfp, thumb2_movdi_vfp): Use fcpys to move
972         double-precision values on a single-precision FPU.
973         (movdf_vfp, thumb2_movdf_vfp): Likewise.  Use "Dy" for
974         double-precision constants.
975         (movhf_vfp_neon): New pattern (was movhf_vfp).
976         (movhf_vfp): Remove NEON instructions.
977         * config/arm/constraints.md: Add new "Dy" constraint for
978         double-precision constants.  Update description of "Dv".
979         * config/arm/arm.md: Disable double-precision patterns if the FPU
980         does not provide them
981
982 2009-11-09  Jakub Jelinek  <jakub@redhat.com>
983
984         * config/i386/i386.c (print_operand) <case 'D'>: Fix formatting.
985         (print_operand) <case 'Y'>: Likewise.  Fix a pasto in operand lossage
986         diagnostics.
987
988 2009-11-08  H.J. Lu  <hongjiu.lu@intel.com>
989
990         * collect2.c (main): Search PLUGIN_LD for plugin linker.
991
992         * configure.ac (--with-plugin-ld): New.  Default to ld.
993         * configure: Regenerated.
994         * config.in: Likewise.
995
996         * exec-tool.in (ORIGINAL_PLUGIN_LD_FOR_TARGET): New.
997         (collect-ld): Use ORIGINAL_PLUGIN_LD_FOR_TARGET for -plugin.
998
999 2009-11-08  Jonathan Gray  <jsg@openbsd.org>
1000
1001         * config/openbsd-stdint.h: Change to reflect what
1002         c_common_nodes_and_builtins expects.
1003
1004 2009-11-08  Paolo Carlini  <paolo.carlini@oracle.com>
1005
1006         * builtins.c (apply_args_reg_offset): Remove commented out delaration.
1007
1008 2009-11-08  Jakub Jelinek  <jakub@redhat.com>
1009
1010         PR target/41985
1011         * config/i386/i386.c (get_some_local_dynamic_name): Don't assert
1012         function contains at least one local dynamic name.
1013         (print_operand) <case '&'>: Instead output operand lossage diagnostics
1014         here if that happens.
1015
1016 2009-11-08  Zbigniew Chamski  <zbigniew.chamski@gmail.com>
1017             Joern Rennecke  <amylaar@spamcop.net>
1018
1019         * cfgrtl.c (pass_free_cfg): Add pass name.
1020         * cgraphbuild.c (pass_build_cgraph_edges): Likewise.
1021         (pass_rebuild_cgraph_edges, pass_remove_cgraph_callee_edges): Likewise.
1022         * dce.c (pass_ud_rtl_dce, pass_fast_rtl_dce): Change pass name.
1023         * df-core.c (pass_df_initialize_no_opt): Likewise.
1024         * except.c (pass_rtl_eh): Likewise.
1025         * function.c (pass_init_function, pass_leaf_regs): Likewise.
1026         * gcse.c (pass_rtl_pre): Change pass name.
1027         * passes.c (pass_postreload): Add pass name.
1028         (make_pass_instance): Don't use duplicate-tracking logic for
1029         names starting with '*'.
1030         (next_pass_1): Assert that pass has a name.
1031         (register_one_dump_file): If there is an space in the name,
1032         skip past it.
1033         * predict.c (pass_strip_predict_hints): Add pass name.
1034         * reg-stack.c (pass_stack_regs): Likewise.
1035         * stack-ptr-mod.c (pass_stack_ptr_mod): Likewise.
1036         * tree-cfg.c (pass_warn_function_return,
1037         pass_warn_function_noreturn): Add pass name.
1038         * tree-dfa.c (pass_referenced_vars): Likewise.
1039         * tree-optimize.c (pass_cleanup_cfg_post_optimizing):
1040         Fix whitespace before comment.
1041         (pass_fixup_cfg): Add pass name, fix whitespace before comment.
1042         (pass_init_datastructures): Add pass name.
1043         * tree-ssa-loop.c (pass_record_bounds): Likewise.
1044         * tree-ssa.c (pass_early_warn_uninitialized,
1045         pass_late_warn_uninitialized): Likewise.
1046         * tree.c (pass_ipa_free_lang_data): Likewise.
1047         * doc/passes.texi (pass manager): Document how to disambiguate
1048         pass names.
1049
1050 2009-11-08  Paolo Bonzini  <bonzini@gnu.org>
1051
1052         * df-problems.c: Fix documentation for forward simulation of LR.
1053         (df_simulate_one_insn_forwards): Use df_simulate_find_defs.
1054         (df_simulate_finalize_forwards): Remove.
1055         * df.h (df_simulate_finalize_forwards): Remove.
1056
1057 2009-11-08  Richard Guenther  <rguenther@suse.de>
1058
1059         * tree-ssa-structalias.c (build_succ_graph): Properly make
1060         variables escape if they are stored to anything.
1061
1062 2009-11-08  Richard Guenther  <rguenther@suse.de>
1063
1064         PR rtl-optimization/41928
1065         * loop-invariant.c (free_loop_data): If we didn't allocate
1066         loop data do not try to free it.
1067
1068 2009-11-07  Jason Merrill  <jason@redhat.com>
1069
1070         * tree.c (reconstruct_complex_type): Preserve attributes.
1071
1072 2009-11-07  Richard Guenther  <rguenther@suse.de>
1073
1074         * tree-ssa-structalias.c (build_succ_graph): Feed stores
1075         to anything only to variables that can take pointers.
1076         (get_constraint_for_ssa_var): Properly exclude full
1077         variables from expanding.
1078         (first_vi_for_offset): Avoid overflow in arithmetic.
1079         (first_or_preceding_vi_for_offset): Likewise.
1080         (count_num_arguments): Fix implementation.
1081         (gate_ipa_pta): Do not run when not optimizing.
1082
1083 2009-11-07  David Binderman <dcb314@hotmail.com>
1084
1085         * builtins.c (apply_args_size, expand_builtin_mathfn, expand_powi,
1086         expand_builtin_expect, maybe_emit_sprintf_chk_warning): Remove some
1087         set but not used variables.
1088         (apply_args_reg_offset): Comment out as unused.
1089         * calls.c (flags_from_decl_or_type): Likewise.
1090         * genautomata.c (check_regexp_units_distribution): Likewise.
1091
1092 2009-11-07  Uros Bizjak  <ubizjak@gmail.com>
1093
1094         * config/i386/sse.md (xop_pmacsww, xop_pmacssww, xop_pmacsdd,
1095         xop_pmacssdd, xop_pmacssdql, xop_pmacssdqh, xop_pmacsdql,
1096         *xop_pmacsdql_mem, xop_pmacsdqh, *xop_pmacsdqh_mem, xop_pmacsswd,
1097         xop_pmacswd, xop_pmadcsswd, xop_pmadcswd, xop_pcmov_<mode>,
1098         xop_pcmov_<mode>256, xop_pperm, xop_pperm_pack_v2di_v4si,
1099         xop_pperm_pack_v4si_v8hi, xop_pperm_pack_v8hi_v16qi): Compress
1100         operand alternatives.
1101
1102 2009-11-06  Michael Matz  <matz@suse.de>
1103
1104         PR middle-end/41963
1105         * tree-ssa-math-opts.c (execute_cse_reciprocals): Check all uses
1106         of a potential reciprocal to really be reciprocals.
1107
1108 2009-11-06  Jakub Jelinek  <jakub@redhat.com>
1109
1110         * config/i386/x86intrin.h: Include fma4intrin.h, xopintrin.h and
1111         lwpintrin.h after immintrin.h.
1112         * config/i386/fma4intrin.h (__v8sf, __v4df, __m256, __m256d): Remove
1113         typedefs.
1114
1115         PR middle-end/41935
1116         * c-common.c (fold_offsetof_1) <case ARRAY_REF>: Don't crash for VLAs
1117         or non-constant index, allow index one past the last element and
1118         allow exceeding array bound in arrays that might be used as flexible
1119         array members.
1120
1121 2009-11-05  Richard Henderson  <rth@redhat.com>
1122
1123         * config/i386/ia32intrin.h: Protect CRC32 builtins with __SSE4_2__.
1124
1125 2009-11-05  Paul Brook  <paul@codesourcery.com>
1126
1127         * config/arm/arm.c (arm_fp_model, arm_fpu_arch, arm_fpu_tune): Remove.
1128         (arm_fpu_desc): New.
1129         (all_fpus): Add FPU details.
1130         (fp_model_for_fpu): Remove.
1131         (arm_override_options): Set and use arm_fpu_desc and arm_fpu_attr.
1132         (arm_output_epilogue, arm_save_coproc_regs): Use TARGET_FPA_EMU2.
1133         (arm_file_start): Use arm_fpu_desc.
1134         * config/arm/arm.h (TARGET_FPA, TARGET_MAVERICK, TARGET_VFP,
1135         TARGET_VFPD32, TARGET_VFP3, TARGET_NEON_FP16, TARGET_NEON): Use
1136         arm_fpu_desc.
1137         (TARGET_FPA_EMU2): Define.
1138         (arm_fp_model, fputype, arm_fpu_tune): Remove.
1139         (vfp_reg_type, arm_fpu_desc): New.
1140         * config/arm/arm.md (attr fpu): Simplify.
1141         * config/arm/fpa.md (movxf_fpa): Use TARGET_FPA_EMU2.
1142         * config/arm/linux-elf.h (FPUTYPE_DEFAULT): Use string value.
1143         * config/arm/bpabi.h (FPUTYPE_DEFAULT): Use string value.
1144         * config/arm/netbsd-elf.h (FPUTYPE_DEFAULT): Use string value.
1145         * config/arm/vxworks.h (FPUTYPE_DEFAULT): Use string value.
1146
1147 2009-11-05  Michael Matz  <matz@suse.de>
1148
1149         * config/i386/i386.c (ix86_builtin_reciprocal): Remove dependency
1150         on TARGET_RECIP.
1151         * doc/invoke.texi (-mrecip): Clarify that we don't need -mrecip
1152         for 1/sqrtf.
1153
1154 2009-11-04  Jason Merrill  <jason@redhat.com>
1155
1156         PR c++/36912
1157         * varasm.c (initializer_constant_valid_p): A PLUS_EXPR
1158         or MINUS_EXPR of REAL_TYPE is not a valid constant initializer.
1159         (output_constant): Avoid crash after error.
1160
1161 2009-11-05  Martin Jambor  <mjambor@suse.cz>
1162
1163         * tree-sra.c (struct access): Changed comment of next_sibling field.
1164         (analyze_modified_params): Loop over accesses of a group rather than
1165         over all with the ame base, pass a common bitmap to
1166         walk_aliased_vdefs.
1167         (unmodified_by_ref_scalar_representative): Build link lists of
1168         accesses of a group.
1169         (splice_param_accesses): Likewise.
1170
1171 2009-11-04  Kenneth Zadeck  <zadeck@naturalbridge.com>
1172
1173         * df-scan.c (df-uses-record): Add case zero_extract of mem.
1174
1175 2009-11-04  Eric Botcazou  <ebotcazou@adacore.com>
1176
1177         PR target/10127
1178         PR ada/20548
1179         * config/i386/i386.md (probe_stack): New expander.
1180         (logical operation peepholes): Do not split stack checking probes.
1181
1182 2009-11-04  Harsha Jagasia  <harsha.jagasia@amd.com>
1183             Dwarakanath Rajagopal  <dwarak.rajagopal@amd.com>
1184
1185         * doc/invoke.texi (-mlwp): Add documentation.
1186         * doc/extend.texi (x86 intrinsics): Add LWP intrinsics.
1187         * config.gcc (i[34567]86-*-*): Include lwpintrin.h.
1188         (x86_64-*-*): Ditto.
1189         * config/i386/lwpintrin.h: New file, provide x86 compiler
1190         intrinisics for LWP.
1191         * config/i386/cpuid.h (bit_LWP): Define LWP bit.
1192         * config/i386/x86intrin.h: Add LWP check and lwpintrin.h.
1193         * config/i386/i386-c.c (ix86_target_macros_internal): Check
1194         ISA_FLAG for LWP.
1195         * config/i386/i386.h (TARGET_LWP): New macro for LWP.
1196         * config/i386/i386.opt (-mlwp): New switch for LWP support.
1197         * config/i386/i386.c (OPTION_MASK_ISA_LWP_SET): New.
1198         (OPTION_MASK_ISA_LWP_UNSET): New.
1199         (ix86_handle_option): Handle -mlwp.
1200         (isa_opts): Handle -mlwp.
1201         (enum pta_flags): Add PTA_LWP.
1202         (override_options): Add LWP support.
1203         (IX86_BUILTIN_LLWPCB16): New for LWP intrinsic.
1204         (IX86_BUILTIN_LLWPCB32): Ditto.
1205         (IX86_BUILTIN_LLWPCB64): Ditto.
1206         (IX86_BUILTIN_SLWPCB16): Ditto.
1207         (IX86_BUILTIN_SLWPCB32): Ditto.
1208         (IX86_BUILTIN_SLWPCB64): Ditto.
1209         (IX86_BUILTIN_LWPVAL16): Ditto.
1210         (IX86_BUILTIN_LWPVAL32): Ditto.
1211         (IX86_BUILTIN_LWPVAL64): Ditto.
1212         (IX86_BUILTIN_LWPINS16): Ditto.
1213         (IX86_BUILTIN_LWPINS32): Ditto.
1214         (IX86_BUILTIN_LWPINS64): Ditto.
1215         (enum  ix86_special_builtin_type): Add LWP intrinsic support.
1216         (builtin_description): Ditto.
1217         (ix86_init_mmx_sse_builtins): Ditto.
1218         (ix86_expand_special_args_builtin): Ditto.
1219         * config/i386/i386.md (UNSPEC_LLWP_INTRINSIC): Add new UNSPEC for
1220         LWP support.
1221         (UNSPEC_SLWP_INTRINSIC): Ditto.
1222         (UNSPECV_LWPVAL_INTRINSIC): Ditto.
1223         (UNSPECV_LWPINS_INTRINSIC): Ditto.
1224         (lwp_llwpcbhi1): New lwp pattern.
1225         (lwp_llwpcbsi1): Ditto.
1226         (lwp_llwpcbdi1): Ditto.
1227         (lwp_slwpcbhi1): Ditto.
1228         (lwp_slwpcbsi1): Ditto.
1229         (lwp_slwpcbdi1): Ditto.
1230         (lwp_lwpvalhi3): Ditto.
1231         (lwp_lwpvalsi3): Ditto.
1232         (lwp_lwpvaldi3): Ditto.
1233         (lwp_lwpinshi3): Ditto.
1234         (lwp_lwpinssi3): Ditto.
1235         (lwp_lwpinsdi3): Ditto.
1236
1237 2009-11-04  Andrew Pinski  <andrew_pinski@playstation.sony.com>
1238             Trevor Smigiel <Trevor_Smigiel@playstation.sony.com>
1239
1240         PR rtl-opt/41833
1241         * simplify-rtx.c (simplify_binary_operation_1): Simplify vec_select of
1242         a vec_duplicate.
1243
1244 2009-11-04  Richard Guenther  <rguenther@suse.de>
1245             Rafael Avila de Espindola  <espindola@google.com>
1246
1247         * gcc.c (process_command): Handle arguments name@offset.
1248
1249 2009-11-04  Harsha Jagasia  <harsha.jagasia@amd.com>
1250             Dwarakanath Rajagopal  <dwarak.rajagopal@amd.com>
1251
1252         * config.gcc (i[34567]86-*-*): Include xopintrin.h.
1253         (x86_64-*-*): Ditto.
1254         * config/i386/xopintrin.h: New file, provide common x86 compiler
1255         intrinisics for XOP.
1256         * config/i386/cpuid.h (bit_XOP): Define XOP bit.
1257         * config/i386/x86intrin.h: Add XOP check and xopintrin.h.
1258         * config/i386/i386-c.c(ix86_target_macros_internal): Check
1259         ISA_FLAG for XOP.
1260         * config/i386/i386.h(TARGET_XOP): New macro for XOP.
1261         * config/i386/i386.opt (-mxop): New switch for XOP support.
1262         * config/i386/i386.md (UNSPEC_XOP_UNSIGNED_CMP)
1263         (UNSPEC_XOP_TRUEFALSE)
1264         (UNSPEC_XOP_PERMUTE)
1265         (UNSPEC_FRCZ): Add new UNSPEC for XOP support.
1266         (PPERM_*): New constants for vpperm instruction.
1267         (xop_pcmov_<mode>): Add XOP conditional mov instructions.
1268         * config/i386/i386.c (OPTION_MASK_ISA_XOP_SET): New.
1269         (OPTION_MASK_ISA_XOP_UNSET): New.
1270         (OPTION_MASK_ISA_XOP_UNSET): Change definition to depend on XOP.
1271         (ix86_handle_option): Handle -mxop.
1272         (isa_opts): Handle -mxop.
1273         (enum pta_flags): Add PTA_XOP.
1274         (override_options): Add XOP support.
1275         (print_operand): Add code for XOP compare instructions.
1276         (ix86_expand_sse_movcc): Extend for XOP conditional move instruction.
1277         (ix86_expand_int_vcond): Extend for XOP compare instruction.
1278
1279         (IX86_BUILTIN_VPCMOV): New for XOP intrinsic.
1280         (IX86_BUILTIN_VPCMOV_V2DI): Ditto.
1281         (IX86_BUILTIN_VPCMOV_V4SI): Ditto.
1282         (IX86_BUILTIN_VPCMOV_V8HI): Ditto.
1283         (IX86_BUILTIN_VPCMOV_V16QI): Ditto.
1284         (IX86_BUILTIN_VPCMOV_V4SF): Ditto.
1285         (IX86_BUILTIN_VPCMOV_V2DF): Ditto.
1286
1287         (IX86_BUILTIN_VPCMOV256): Ditto.
1288         (IX86_BUILTIN_VPCMOV_V4DI256): Ditto.
1289         (IX86_BUILTIN_VPCMOV_V8SI256): Ditto.
1290         (IX86_BUILTIN_VPCMOV_V16HI256): Ditto.
1291         (IX86_BUILTIN_VPCMOV_V32QI256): Ditto.
1292         (IX86_BUILTIN_VPCMOV_V8SF256): Ditto.
1293         (IX86_BUILTIN_VPCMOV_V4DF256): Ditto.
1294
1295         (IX86_BUILTIN_VPPERM): Ditto.
1296
1297         (IX86_BUILTIN_VPMACSSWW): Ditto.
1298         (IX86_BUILTIN_VPMACSWW): Ditto.
1299         (IX86_BUILTIN_VPMACSSWD): Ditto.
1300         (IX86_BUILTIN_VPMACSWD): Ditto.
1301         (IX86_BUILTIN_VPMACSSDD): Ditto.
1302         (IX86_BUILTIN_VPMACSDD): Ditto.
1303         (IX86_BUILTIN_VPMACSSDQL): Ditto.
1304         (IX86_BUILTIN_VPMACSSDQH): Ditto.
1305         (IX86_BUILTIN_VPMACSDQL): Ditto.
1306         (IX86_BUILTIN_VPMACSDQH): Ditto.
1307         (IX86_BUILTIN_VPMADCSSWD): Ditto.
1308         (IX86_BUILTIN_VPMADCSWD): Ditto.
1309
1310         (IX86_BUILTIN_VPHADDBW): Ditto.
1311         (IX86_BUILTIN_VPHADDBD): Ditto.
1312         (IX86_BUILTIN_VPHADDBQ): Ditto.
1313         (IX86_BUILTIN_VPHADDWD): Ditto.
1314         (IX86_BUILTIN_VPHADDWQ): Ditto.
1315         (IX86_BUILTIN_VPHADDDQ): Ditto.
1316         (IX86_BUILTIN_VPHADDUBW): Ditto.
1317         (IX86_BUILTIN_VPHADDUBD): Ditto.
1318         (IX86_BUILTIN_VPHADDUBQ): Ditto.
1319         (IX86_BUILTIN_VPHADDUWD): Ditto.
1320         (IX86_BUILTIN_VPHADDUWQ): Ditto.
1321         (IX86_BUILTIN_VPHADDUDQ): Ditto.
1322         (IX86_BUILTIN_VPHSUBBW): Ditto.
1323         (IX86_BUILTIN_VPHSUBWD): Ditto.
1324         (IX86_BUILTIN_VPHSUBDQ): Ditto.
1325
1326         (IX86_BUILTIN_VPROTB): Ditto.
1327         (IX86_BUILTIN_VPROTW): Ditto.
1328         (IX86_BUILTIN_VPROTD): Ditto.
1329         (IX86_BUILTIN_VPROTQ): Ditto.
1330         (IX86_BUILTIN_VPROTB_IMM): Ditto.
1331         (IX86_BUILTIN_VPROTW_IMM): Ditto.
1332         (IX86_BUILTIN_VPROTD_IMM): Ditto.
1333         (IX86_BUILTIN_VPROTQ_IMM): Ditto.
1334
1335         (IX86_BUILTIN_VPSHLB): Ditto.
1336         (IX86_BUILTIN_VPSHLW): Ditto.
1337         (IX86_BUILTIN_VPSHLD): Ditto.
1338         (IX86_BUILTIN_VPSHLQ): Ditto.
1339         (IX86_BUILTIN_VPSHAB): Ditto.
1340         (IX86_BUILTIN_VPSHAW): Ditto.
1341         (IX86_BUILTIN_VPSHAD): Ditto.
1342         (IX86_BUILTIN_VPSHAQ): Ditto.
1343
1344         (IX86_BUILTIN_VFRCZSS): Ditto.
1345         (IX86_BUILTIN_VFRCZSD): Ditto.
1346         (IX86_BUILTIN_VFRCZPS): Ditto.
1347         (IX86_BUILTIN_VFRCZPD): Ditto.
1348         (IX86_BUILTIN_VFRCZPS256): Ditto.
1349         (IX86_BUILTIN_VFRCZPD256): Ditto.
1350
1351         (IX86_BUILTIN_VPCOMEQUB): Ditto.
1352         (IX86_BUILTIN_VPCOMNEUB): Ditto.
1353         (IX86_BUILTIN_VPCOMLTUB): Ditto.
1354         (IX86_BUILTIN_VPCOMLEUB): Ditto.
1355         (IX86_BUILTIN_VPCOMGTUB): Ditto.
1356         (IX86_BUILTIN_VPCOMGEUB): Ditto.
1357         (IX86_BUILTIN_VPCOMFALSEUB): Ditto.
1358         (IX86_BUILTIN_VPCOMTRUEUB): Ditto.
1359
1360         (IX86_BUILTIN_VPCOMEQUW): Ditto.
1361         (IX86_BUILTIN_VPCOMNEUW): Ditto.
1362         (IX86_BUILTIN_VPCOMLTUW): Ditto.
1363         (IX86_BUILTIN_VPCOMLEUW): Ditto.
1364         (IX86_BUILTIN_VPCOMGTUW): Ditto.
1365         (IX86_BUILTIN_VPCOMGEUW): Ditto.
1366         (IX86_BUILTIN_VPCOMFALSEUW): Ditto.
1367         (IX86_BUILTIN_VPCOMTRUEUW): Ditto.
1368
1369         (IX86_BUILTIN_VPCOMEQUD): Ditto.
1370         (IX86_BUILTIN_VPCOMNEUD): Ditto.
1371         (IX86_BUILTIN_VPCOMLTUD): Ditto.
1372         (IX86_BUILTIN_VPCOMLEUD): Ditto.
1373         (IX86_BUILTIN_VPCOMGTUD): Ditto.
1374         (IX86_BUILTIN_VPCOMGEUD): Ditto.
1375         (IX86_BUILTIN_VPCOMFALSEUD): Ditto.
1376         (IX86_BUILTIN_VPCOMTRUEUD): Ditto.
1377
1378         (IX86_BUILTIN_VPCOMEQUQ): Ditto.
1379         (IX86_BUILTIN_VPCOMNEUQ): Ditto.
1380         (IX86_BUILTIN_VPCOMLTUQ): Ditto.
1381         (IX86_BUILTIN_VPCOMLEUQ): Ditto.
1382         (IX86_BUILTIN_VPCOMGTUQ): Ditto.
1383         (IX86_BUILTIN_VPCOMGEUQ): Ditto.
1384         (IX86_BUILTIN_VPCOMFALSEUQ): Ditto.
1385         (IX86_BUILTIN_VPCOMTRUEUQ): Ditto.
1386
1387         (IX86_BUILTIN_VPCOMEQB): Ditto.
1388         (IX86_BUILTIN_VPCOMNEB): Ditto.
1389         (IX86_BUILTIN_VPCOMLTB): Ditto.
1390         (IX86_BUILTIN_VPCOMLEB): Ditto.
1391         (IX86_BUILTIN_VPCOMGTB): Ditto.
1392         (IX86_BUILTIN_VPCOMGEB): Ditto.
1393         (IX86_BUILTIN_VPCOMFALSEB): Ditto.
1394         (IX86_BUILTIN_VPCOMTRUEB): Ditto.
1395
1396         (IX86_BUILTIN_VPCOMEQW): Ditto.
1397         (IX86_BUILTIN_VPCOMNEW): Ditto.
1398         (IX86_BUILTIN_VPCOMLTW): Ditto.
1399         (IX86_BUILTIN_VPCOMLEW): Ditto.
1400         (IX86_BUILTIN_VPCOMGTW): Ditto.
1401         (IX86_BUILTIN_VPCOMGEW): Ditto.
1402         (IX86_BUILTIN_VPCOMFALSEW): Ditto.
1403         (IX86_BUILTIN_VPCOMTRUEW): Ditto.
1404
1405         (IX86_BUILTIN_VPCOMEQD): Ditto.
1406         (IX86_BUILTIN_VPCOMNED): Ditto.
1407         (IX86_BUILTIN_VPCOMLTD): Ditto.
1408         (IX86_BUILTIN_VPCOMLED): Ditto.
1409         (IX86_BUILTIN_VPCOMGTD): Ditto.
1410         (IX86_BUILTIN_VPCOMGED): Ditto.
1411         (IX86_BUILTIN_VPCOMFALSED): Ditto.
1412         (IX86_BUILTIN_VPCOMTRUED): Ditto.
1413
1414         (IX86_BUILTIN_VPCOMEQQ): Ditto.
1415         (IX86_BUILTIN_VPCOMNEQ): Ditto.
1416         (IX86_BUILTIN_VPCOMLTQ): Ditto.
1417         (IX86_BUILTIN_VPCOMLEQ): Ditto.
1418         (IX86_BUILTIN_VPCOMGTQ): Ditto.
1419         (IX86_BUILTIN_VPCOMGEQ): Ditto.
1420         (IX86_BUILTIN_VPCOMFALSEQ): Ditto.
1421         (IX86_BUILTIN_VPCOMTRUEQ): Ditto.
1422
1423         (enum multi_arg_type): New enum for describing the various XOP
1424         intrinsic argument types.
1425         (bdesc_multi_arg): New table for XOP intrinsics.
1426         (ix86_init_mmx_sse_builtins): Add XOP intrinsic support.
1427         (ix86_expand_multi_arg_builtin): New function for creating XOP
1428         intrinsics.
1429
1430         * config/i386/sse.md (sserotatemax): New mode attribute for XOP.
1431         (xop_pmacsww): Ditto.
1432         (xop_pmacssww): Ditto.
1433         (xop_pmacsdd): Ditto.
1434         (xop_pmacssdd): Ditto.
1435         (xop_pmacssdql): Ditto.
1436         (xop_pmacssdqh): Ditto.
1437         (xop_pmacsdql): Ditto.
1438         (xop_pmacsdql_mem): Ditto.
1439         (xop_mulv2div2di3_low): Ditto.
1440         (xop_pmacsdqh): Ditto.
1441         (xop_pmacsdqh_mem): Ditto.
1442         (xop_mulv2div2di3_high): Ditto.
1443         (xop_pmacsswd): Ditto.
1444         (xop_pmacswd): Ditto.
1445         (xop_pmadcsswd): Ditto.
1446         (xop_pmadcswd): Ditto.
1447         (xop_pcmov_<mode>): Ditto.
1448         (xop_pcmov_<mode>256): Ditto.
1449         (xop_phaddbw): Ditto.
1450         (xop_phaddbd): Ditto.
1451         (xop_phaddbq): Ditto.
1452         (xop_phaddwd): Ditto.
1453         (xop_phaddwq): Ditto.
1454         (xop_phadddq): Ditto.
1455         (xop_phaddubw): Ditto.
1456         (xop_phaddubd): Ditto.
1457         (xop_phaddubq): Ditto.
1458         (xop_phadduwd): Ditto.
1459         (xop_phadduwq): Ditto.
1460         (xop_phaddudq): Ditto.
1461         (xop_phsubbw): Ditto.
1462         (xop_phsubwd): Ditto.
1463         (xop_phsubdq): Ditto.
1464         (xop_pperm): Ditto.
1465         (rotl<mode>3): Ditto.
1466         (rotr<mode>3): Ditto.
1467         (xop_rotl<mode>3): Ditto.
1468         (xop_rotr<mode>3): Ditto.
1469         (vrotr<mode>3): Ditto.
1470         (vrotl<mode>3): Ditto.
1471         (xop_vrotl<mode>3): Ditto.
1472         (vlshr<mode>3): Ditto.
1473         (vashr<mode>3): Ditto.
1474         (vashl<mode>3
1475         (xop_ashl<mode>3): Ditto.
1476         (xop_lshl<mode>3): Ditto.
1477         (ashlv16qi3): Ditto.
1478         (lshlv16qi3): Ditto.
1479         (ashrv16qi3): Ditto.
1480         (ashrv2di3): Ditto.
1481         (xop_frcz<mode>2): Ditto.
1482         (xop_vmfrcz<mode>2): Ditto.
1483         (xop_frcz<mode>2256): Ditto.
1484         (xop_maskcmp<mode>3): Ditto.
1485         (xop_maskcmp_uns<mode>3): Ditto.
1486         (xop_maskcmp_uns2<mode>3): Ditto.
1487         (xop_pcom_tf<mode>3): Ditto.
1488
1489         * doc/invoke.texi (-mxop): Add documentation.
1490         * doc/extend.texi (x86 intrinsics): Add XOP intrinsics.
1491
1492 2009-11-03  Mark Mitchell  <mark@codesourcery.com>
1493
1494         PR driver/11810
1495         * gcc.c (SWITCHES_NEED_SPACES): Define to "o".
1496         * config/alpha/osf.h (SWITCHES_NEED_SPACES): Remove here.
1497         * config/mips/iris.h (SWITCHES_NEED_SPACES): Remove here.
1498
1499 2009-11-04  Richard Earnshaw  <rearnsha@arm.com>
1500
1501         PR target/40835
1502         * arm.md (peephole2 patterns for move and compare): New.
1503
1504 2009-11-04  Nick Clifton  <nickc@redhat.com>
1505
1506         * defaults.h (CONSTANT_ADDRESS_P): Provide a default definition.
1507         Make sure that it does not allow CONST_DOUBLEs.
1508         * doc/tm.texi (CONSTANT_ADDRESS_P): Update description.
1509         * config/avr/avr.h (CONSTANT_ADDRESS_P): Delete.
1510         * config/bfin/bfin.h (CONSTANT_ADDRESS_P): Delete.
1511         * config/cris/cris.h (CONSTANT_ADDRESS_P): Delete.
1512         * config/fr30/fr30.h (CONSTANT_ADDRESS_P): Delete.
1513         * config/frv/frv.h (CONSTANT_ADDRESS_P): Delete.
1514         * config/m32c/m32c.h (CONSTANT_ADDRESS_P): Delete.
1515         * config/m68hc11/m68hc11.h (CONSTANT_ADDRESS_P): Delete.
1516         * config/mep/mep.h (CONSTANT_ADDRESS_P): Delete.
1517         * config/mn10300/mn10300.h (CONSTANT_ADDRESS_P): Delete.
1518         * config/moxie/moxie.h (CONSTANT_ADDRESS_P): Delete.
1519         * config/pdp11/pdp11.h (CONSTANT_ADDRESS_P): Delete.
1520         * config/picochip/picochip.h (CONSTANT_ADDRESS_P): Delete.
1521         * config/score/score.h (CONSTANT_ADDRESS_P): Delete.
1522         * config/stormy16/stormy16.h (CONSTANT_ADDRESS_P): Delete.
1523
1524 2009-11-04  Richard Guenther  <rguenther@suse.de>
1525
1526         PR tree-optimization/41919
1527         * tree-vrp.c (test_for_singularity): Properly compare values.
1528
1529 2009-11-04  Revital Eres  <eres@il.ibm.com>
1530
1531         * tree-vect-data-refs.c (vect_enhance_data_refs_alignment):
1532         Consider peeling for alignment only for stores and remove
1533         redundant assignment.
1534
1535 2009-11-04  Maxim Kuvyrkov  <maxim@codesourcery.com>
1536
1537         PR target/41302
1538         * config/m68k/m68k.c (m68k_reg_present_p): New static function.
1539         (m68k_ok_for_sibcall_p): Handle different result return locations.
1540
1541 2009-11-04  Richard Guenther  <rguenther@suse.de>
1542
1543         * c-opts.c (c_common_post_options): Move LTO option processing
1544         code ...
1545         * opts.c (decode_options): ... here.
1546
1547 2009-11-04  Jakub Jelinek  <jakub@redhat.com>
1548
1549         * c-common.c (fold_offsetof_1): Use %wd instead of
1550         HOST_WIDE_INT_PRINT_DEC.
1551
1552 2009-11-04  Maciej W. Rozycki  <macro@linux-mips.org>
1553
1554         * config/vax/linux.h (TARGET_OS_CPP_BUILTINS): Don't define
1555         __pic__ or __PIC__.
1556
1557 2009-11-04  Maciej W. Rozycki  <macro@linux-mips.org>
1558
1559         * config.gcc (vax-*-linux*): Keep the original contents of
1560         tmake_file while adding vax/t-linux.
1561
1562 2009-11-03  Eric Botcazou  <ebotcazou@adacore.com>
1563
1564         PR target/10127
1565         PR ada/20548
1566         * expr.h (STACK_CHECK_PROBE_INTERVAL): Delete.
1567         (STACK_CHECK_PROBE_INTERVAL_EXP): New macro.
1568         (STACK_CHECK_MOVING_SP): Likewise.
1569         * system.h (STACK_CHECK_PROBE_INTERVAL): Poison it.
1570         * doc/tm.texi (Stack Checking): Delete STACK_CHECK_PROBE_INTERVAL.
1571         Document STACK_CHECK_PROBE_INTERVAL_EXP and STACK_CHECK_MOVING_SP.
1572         * doc/md.texi (Standard Pattern Names): Tweak entry of CHECK_STACK.
1573         Document PROBE_STACK.
1574         * explow.c (anti_adjust_stack_and_probe): New function.
1575         (allocate_dynamic_stack_space): Do not directly allocate space if
1576         STACK_CHECK_MOVING_SP, instead invoke above function.
1577         (emit_stack_probe): Handle probe_stack insn.
1578         (PROBE_INTERVAL): New macro.
1579         (STACK_GROW_OPTAB): Likewise.
1580         (STACK_GROW_OFF): Likewise.
1581         (probe_stack_range): Use Pmode and memory_address consistently.  Fix
1582         loop condition in the small constant case.  Rewrite in the general
1583         case to be immune to wraparounds.  Make sure the address of probes
1584         is valid.  Try to use [base + disp] addressing mode if possible.
1585         * ira.c (setup_eliminable_regset): Set frame_pointer_needed if stack
1586         checking is enabled and STACK_CHECK_MOVING_SP.
1587         * rtlanal.c (may_trap_p_1) <MEM>: If stack checking is enabled,
1588         return 1 for volatile references to the stack pointer.
1589         * tree.c (build_common_builtin_nodes): Do not set ECF_NOTHROW on
1590         __builtin_alloca if stack checking is enabled.
1591         * unwind-dw2.c (uw_identify_context): Take into account whether the
1592         context is that of a signal frame or not.
1593         * config/i386/linux.h (STACK_CHECK_MOVING_SP): Define to 1.
1594         * config/i386/linux64.h (STACK_CHECK_MOVING_SP): Likewise.
1595
1596 2009-11-03  Jakub Jelinek  <jakub@redhat.com>
1597
1598         PR rtl-optimization/41917
1599         * rtlanal.c (num_sign_bit_copies1) <case UMOD>: If sign bit of second
1600         operand isn't known to be 0, return 1.
1601
1602 2009-11-03  Richard Sandiford  <rdsandiford@googlemail.com>
1603
1604         * config/mips/mips.md: Fix typos.
1605
1606 2009-11-03  Richard Sandiford  <rdsandiford@googlemail.com>
1607
1608         * doc/invoke.texi: Fix typo.
1609
1610 2009-11-03  Paul Brook  <paul@codesourcery.com>
1611
1612         * config/arm/neon.ml (vectype): Add T_floatSF.
1613         (string_of_vectype): Ditto.
1614         * config/arm/neon-gen.ml (signed_ctype): Add T_floatSF.
1615         (deftypes): Use float for float32_t.
1616         * config/arm/arm_neon.h: Regenerate.
1617
1618 2009-11-03  Nick Clifton  <nickc@redhat.com>
1619             Kevin Buettner  <kevinb@redhat.com>
1620
1621         * config/rx/predicates.md (rx_store_multiple_vector): Reverse
1622         order of expected registers.
1623         (rx_load_multiple_vector): Likewise.
1624         (rx_rtsd_vector): Likewise.
1625         * config/rx/rx.c (rx_cpu_type): New variable.
1626         (rx_print_operand): Fix bug printing 64-bit constant values.
1627         (rx_emit_stack_pushm): Reverse order of pushed registers.
1628         (gen_rx_store_vector): Likewise.
1629         (is_fast_interrupt_func): Only accept "fast_interrupt" as the
1630         attribute name.
1631         (is_exception_func): Rename to is_interrupt_func and only accept
1632         "interrupt" as the attribute name.
1633         (rx_get_stack_layout): Use new function name.
1634         (rx_func_attr_inlinable): Likewise.
1635         (rx_attribute_table): Remove "exception".
1636         (rx_expand_prologue): If necessary push the accumulator register
1637         in the prologue of interrupt functions.
1638         (rx_expand_epilogue): If necessary pop the accumulator.
1639         (rx_builtins): Add RX_BUILTIN_MVTIPL.
1640         (rx_expand_builtin_stz): Remove.
1641         (rx_expand_builtin_mvtipl): New function.
1642         (rx_init_builtins): Handle RX_BUILTIN_MVTIPL.
1643         (rx_expand_builtin): Likewise.
1644         (rx_enable_fpu): New variable.
1645         (rx_handle_option): Handle -fpu, -nofpu, -mcpu and -patch.
1646         * config/rx/rx.h (TARGET_CPU_CPP_BUILTINS): Assert machine based
1647         on rx_cpu_type.  Define __RX_FPU_INSNS__ if FPU insns are allowed.
1648         (enum rx_cpu_types): Define.
1649         (ASM_SPEC): Pass -m32bit-doubles on to assembler.
1650         (INCOMING_FRAME_SP_OFFSET): Define.
1651         (ARG_POINTER_CFA_OFFSET): Define.
1652         (FRAME_POINTER_CFA_OFFSET): Define.
1653         (OVERRIDE_OPTIONS): Enable fast math if RX FPU insns are enabled.
1654         (ALLOW_RX_FPU_INSNS): Define.
1655         * config/rx/rx.md: Test ALLOW_RX_FPU_INSNS instead of
1656         fast_math_flags_set_p.
1657         (UNSPEC_BUILTIN_MVTIPL): Define.
1658         (revl): Rename to bswapsi2.
1659         (bswaphi2): New pattern.
1660         (mvtachi): Mark as volatile because it uses a register unknown to GCC.
1661         (mvtaclo): Likewise.
1662         (racw): Likewise.
1663         (mvtc): Remove clobber of cc0.
1664         (mvtcp): Delete.
1665         (opecp): Delete.
1666         * config/rx/rx.opt (mieee): Remove.
1667         (fpu): Add.
1668         (nofpu): Add.
1669         (mcpu=): Add.
1670         (patch=): Add.
1671         (msave-acc-in-interrupts): Add.
1672         * config/rx/t-rx (MULTILIB_OPTIONS): Change default to 64bit doubles.
1673         (MULTILIB_DIRS): Likewise.
1674         (MULTILIB_MATCHES): Treat -fpu as an alias for -m32bit-doubles.
1675         * doc/extend.texi: Remove description of "exception" function
1676         attribute.
1677         * doc/invoke.texi: Document -fpu, -nofpu, -mcpu=, -patch= and
1678         -msave-acc-in-interrupts options.
1679
1680 2009-11-03  Richard Guenther  <rguenther@suse.de>
1681
1682         * c-common.c (fold_offsetof_1): Use HOST_WIDE_INT_PRINT_DEC.
1683
1684 2009-11-03  Dodji Seketeli  <dodji@redhat.com>
1685
1686         PR c++/38699
1687         * c-common.c (fold_offsetof_1): Issue errors when the member
1688         designator of the offsetof expression is not legitimate.
1689
1690 2009-11-03  Uros Bizjak  <ubizjak@gmail.com>
1691
1692         * config/i386/i386.md (*call_value_1_rex64_ms_sysv): Use register
1693         names instead of numerical constants.
1694         (sse_prologue_save): Ditto.
1695         (*sse_prologue_save_insn): Ditto.
1696
1697 2009-11-03  Uros Bizjak  <ubizjak@gmail.com>
1698
1699         PR target/41900
1700         * config/i386/i386.h (ix86_arch_indices) <X86_ARCH_CALL_ESP>: New.
1701         (TARGET_CALL_ESP): New define.
1702         * config/i386/i386.c (initial_ix86_tune_features): Initialize
1703         X86_ARCH_CALL_ESP.
1704         * config/i386/i386.md (*call_pop_1_esp, *call_1_esp,
1705         *call_value_pop_1_esp, *call_value_1_esp): Rename from *call_pop_1,
1706         *call_1, *call_value_pop_1 and *call_value_1.  Depend on
1707         TARGET_CALL_ESP.
1708         (*call_pop_1, *call_1, *call_value_pop_1, *call_value_1):
1709         New patterns, use "lsm" as operand 1 constraint.
1710         * config/i386/predicates.md (call_insn_operand): Depend on
1711         index_register_operand for !TARGET_CALL_ESP to avoid %esp register.
1712
1713 2009-11-02  Ulrich Weigand  <Ulrich.Weigand@de.ibm.com>
1714
1715         PR tree-optimization/41857
1716         * tree-flow.h (rewrite_use_address): Add BASE_HINT argument.
1717         * tree-ssa-loop-ivopts.c (rewrite_use_address): Pass base hint
1718         to create_mem_ref.
1719         * tree-ssa-address.c (move_hint_to_base): New function.
1720         (most_expensive_mult_to_index): Add TYPE argument.  Use mode and
1721         address space associated with TYPE.
1722         (addr_to_parts): Add TYPE and BASE_HINT arguments.  Pass TYPE to
1723         most_expensive_mult_to_index.  Call move_hint_to_base.
1724         (create_mem_ref): Add BASE_HINT argument.  Pass BASE_HINT and
1725         TYPE to addr_to_parts.
1726
1727 2009-11-02  Martin Jambor  <mjambor@suse.cz>
1728
1729         PR tree-optimization/41750
1730         * tree-sra.c (analyze_modified_params): Loop over all
1731         representatives of components of a parameter.
1732
1733 2009-11-02  Jakub Jelinek  <jakub@redhat.com>
1734
1735         PR tree-optimization/41841
1736         * ipa-struct-reorg.c (build_data_structure): Don't attempt to look at
1737         local variables of not yet materialized clones.
1738
1739         PR debug/41893
1740         * cfgexpand.c (expand_debug_expr): Don't attempt to create DECL_RTL
1741         for a VOIDmode variable.
1742
1743         PR c++/41774
1744         * c-pragma.c (visstack): Change into vector of ints rather than
1745         enum symbol_visibility.
1746         (push_visibility): Add kind argument, push default_visibility together
1747         with kind.
1748         (pop_visibility): Add kind argument, return true if successful, fail
1749         if visibility stack is empty or if stack top is of different kind.
1750         (handle_pragma_visibility): Don't check length of visstack, instead
1751         call pop_visibility and issue diagnostics if it failed.  Pass 0
1752         as last argument to push_visibility and pop_visibility.
1753         * c-pragma.h (push_visibility): Add kind argument.
1754         (pop_visibility): Likewise.  Return bool instead of void.
1755
1756 2009-11-01  Eric Botcazou  <ebotcazou@adacore.com>
1757
1758         * tree.def (TARGET_MEM_REF): Update comment.
1759         * alias.c (get_alias_set): Retrieve the original memory reference for
1760         a TARGET_MEM_REF before proceeding.
1761
1762 2009-10-31  Anatoly Sokolov  <aesok@post.ru>
1763
1764         * config/frv/frv.c (frv_function_value, frv_libcall_value,
1765         frv_function_value_regno_p): New functions.
1766         (TARGET_FUNCTION_VALUE, TARGET_LIBCALL_VALUE): Declare.
1767         * config/frv/frv.h (FUNCTION_VALUE, LIBCALL_VALUE): Remove.
1768         (FUNCTION_VALUE_REGNO_P): Redefine, use frv_function_value_regno_p.
1769         * config/frv/frv-protos.h (frv_function_value_regno_p): Declare.
1770
1771 2009-10-31  Anatoly Sokolov  <aesok@post.ru>
1772
1773         * config/mn10300/mn10300.c (mn10300_function_value): Make static, add
1774         new 'outgoing' argument.
1775         (mn10300_libcall_value, mn10300_function_value_regno_p): New functions.
1776         (TARGET_FUNCTION_VALUE, TARGET_LIBCALL_VALUE): Declare.
1777         * config/mn10300/mn10300.h (FUNCTION_VALUE, FUNCTION_OUTGOING_VALUE,
1778         LIBCALL_VALUE): Remove.
1779         (FUNCTION_VALUE_REGNO_P): Redefine, use mn10300_function_value_regno_p.
1780         * config/mn10300/mn10300-protos.h (mn10300_function_value): Remove.
1781         (mh10300_function_value_regno_p): Declare.
1782
1783 2009-10-31  Ramana Radhakrishnan  <ramana.radhakrishnan@arm.com>
1784
1785         * config/arm/cortex-a9.md: New - integer pipeline description.
1786
1787 2009-10-31  Eric Botcazou  <ebotcazou@adacore.com>
1788
1789         * tree-ssa-sccvn.c (vn_reference_lookup_3): Bail out instead of
1790         aborting if the sizes of the two references don't match.
1791
1792 2009-10-31  Toon Moene  <toon@moene.org>
1793
1794         * ipa-inline.c (cgraph_decide_inlining):
1795         Include reason for not inlining called-once functions in dump file.
1796
1797 2009-10-30  Daniel Gutson  <dgutson@codesourcery.com>
1798
1799         * config/arm/linux-eabi.h (LINK_SPEC): BE8_LINK_SPEC added.
1800         * config/arm/bpapi.h (BE8_LINK_SPEC): New define.
1801         (LINK_SPEC): BE_LINK_SPEC added.
1802
1803 2009-10-30  Richard Guenther  <rguenther@suse.de>
1804
1805         PR lto/41858
1806         * lto-streamer.h (struct lto_file_decl_data): Remove fd member.
1807
1808 2009-10-30  Nathan Sidwell  <nathan@codesourcery.com>
1809
1810         * target-def.h (TARGET_ASM_TTYPE): Correct typo of TARGET_ARM_TTYPE.
1811         * config/arm/unwind-arm.c (__gnu_Unwind_Backtrace): Remove unused
1812         label.
1813
1814 2009-10-30  Martin Jambor  <mjambor@suse.cz>
1815
1816         * tree-sra.c (build_ref_for_offset_1): Remove a comment.
1817
1818 2009-10-30  H.J. Lu  <hongjiu.lu@intel.com>
1819
1820         PR target/40838
1821         * cfgexpand.c (expand_stack_alignment): Call update_stack_boundary
1822         first.  Move assert on stack_alignment_estimated just before
1823         setting stack_realign_needed.
1824         (gimple_expand_cfg): Initialize stack_alignment_estimated to 0.
1825         Don't call update_stack_boundary.
1826
1827         * config/i386/i386.c (ix86_minimum_incoming_stack_boundary): New.
1828         (verride_options): Don't check ix86_force_align_arg_pointer here.
1829         (ix86_function_ok_for_sibcall): Use it.
1830         (ix86_update_stack_boundary): Likewise.
1831
1832         * config/i386/i386.h (STACK_REALIGN_DEFAULT): Update comments.
1833
1834 2009-10-30  Richard Earnshaw  <rearnsha@arm.com>
1835
1836         * arm.md (QHSI): New mode iterator.
1837         (movqi): If generating for thumb, then truncate any immediate to
1838         8 bits.
1839         * thumb2.md (thumb2_movsi_shortim and peephole2 generator): Replace
1840         with...
1841         (thumb2_mov<mode>_shortim and peephole2 generator): ... iterator based
1842         version.
1843
1844 2009-10-29  Cary Coutant  <ccoutant@google.com>
1845
1846         PR debug/41700
1847         * dwarf2out.c (dwarf2_debug_hooks): Add entries for new hook (two
1848         locations in the source).
1849         (store_vcall_insn): New function.
1850         (lookup_vcall_insn): New function.
1851         (dwarf2out_virtual_call_token): Use store_vcall_insn.
1852         (dwarf2out_copy_call_info): New function.
1853         (dwarf2out_virtual_call): Use lookup_vcall_insn.
1854         * emit-rtl.c (try_split): Call copy_call_info debug hook.
1855         * debug.h (struct gcc_debug_hooks): Add copy_call_info hook.
1856         * debug.c (do_nothing_debug_hooks): Add dummy entry for new hook.
1857         (debug_nothing_rtx_rtx): New dummy hook.
1858         * dbxout.c (dbx_debug_hooks): Add dummy entry for new hook.
1859         (xcoff_debug_hooks): Likewise.
1860         * sdbout.c (sdb_debug_hooks): Likewise.
1861         * vmsdbgout.c (vmsdbg_debug_hooks): Likewise.
1862
1863 2009-10-29  David Daney  <ddaney@caviumnetworks.com>
1864
1865         * doc/invoke.texi (mmcount-ra-address): Document new command line
1866         option.
1867         * config/mips/mips.opt (mmcount-ra-address): New option.
1868         * config/mips/mips-protos.h (mips_function_profiler): Declare new
1869         function.
1870         * config/mips/mips.c (struct mips_frame_info): Add ra_fp_offset
1871         member.
1872         (mips_for_each_saved_gpr_and_fpr): Set ra_fp_offset.
1873         (mips_function_profiler): Moved from FUNCTION_PROFILER, and
1874         rewritten.
1875         * config/mips/mips.h (FUNCTION_PROFILER): Body of macro moved to
1876         mips_function_profiler.
1877
1878 2009-10-29  Steve Ellcey  <sje@cup.hp.com>
1879
1880         PR middle-end/37565
1881         PR target/38018
1882         * doc/tm.texi (OVERRIDE_OPTIONS): Update.
1883         (TARGET_OVERRIDE_OPTIONS_AFTER_CHANGE): New.
1884         * optc-gen.awk (cl_target_option_restore): Include call to
1885         targetm.override_options_after_change.
1886         * target-def.h (TARGET_OVERRIDE_OPTIONS_AFTER_CHANGE): New.
1887         * target.h (override_options_after_change): New.
1888         * c-common.c (parse_optimize_options): Call
1889         targetm.override_options_after_change.
1890         * config/ia64/ia64.c (TARGET_OVERRIDE_OPTIONS_AFTER_CHANGE): New.
1891         (ia64_override_options_after_change): New.
1892         (ia64_override_options) Add call to above.
1893
1894 2009-10-29  Michael Matz  <matz@suse.de>
1895
1896         * tree-ssa-math-opts.c (execute_convert_to_rsqrt): Remove.
1897         (gate_convert_to_rsqrt): Ditto.
1898         (pass_convert_to_rsqrt): Ditto.
1899         * tree-pass.h (pass_convert_to_rsqrt): Don't declare.
1900         * passes.c (init_optimization_passes): Don't add pass_convert_to_rsqrt
1901         to pass list.
1902
1903         * config/i386/i386.c (ix86_emit_swdivsf): Change evaluation order.
1904
1905 2009-10-29  Ramana Radhakrishnan  <ramana.radhakrishnan@arm.com>
1906
1907         * config/arm/arm.c (find_best_start): Fix type of remainder to be
1908         unsigned.
1909
1910 2009-10-29  Martin Jambor  <mjambor@suse.cz>
1911
1912         PR tree-optimization/41775
1913         * tree-sra.c (build_ref_for_offset): Unshare *expr if not NULL.
1914         (generate_subtree_copies): Do not unshare agg.
1915         (load_assign_lhs_subreplacements): Do not unshare rhs.
1916         (sra_modify_assign): Do not unshare exprs.
1917         (propagate_subacesses_accross_link): Renamed to
1918         propagate_subaccesses_across_link.
1919
1920 2009-10-29  Richard Earnshaw  <rearnsha@arm.com>
1921
1922         * arm.c (count_insns_for_constant): Rework to support counting for
1923         thumb2 immediates as well.
1924         (find_best_start): Split out from arm_gen_constant.
1925         (arm_gen_constant): Rework to support XOR with immediate.
1926
1927 2009-10-29  Chao-ying Fu  <fu@mips.com>
1928
1929         * config/mips/mips.c (mips_emit_unary, mips_force_unary): New
1930         functions.
1931         (mips_expand_synci_loop):  Use the length rtx to control the
1932         synci loop from the begin rtx that points to the first byte of
1933         the cache line.
1934
1935 2009-10-28  Rafael Avila de Espindola  <espindola@google.com>
1936
1937         * doc/invoke.texi: Rename -use-linker-plugin -fuse-linker-plugin.
1938
1939 2009-10-28  Rafael Avila de Espindola  <espindola@google.com>
1940
1941         * dbxout.c (dbxout_common_check): Accept non public trees.
1942         * dwarf2out.c (fortran_common): Accept non public trees.
1943
1944 2009-10-28  Rafael Avila de Espindola  <espindola@google.com>
1945
1946         * common.opt (fuse-linker-plugin): New option.
1947         * gcc.c (LINK_COMMAND_SPEC, main): Rename use-linker-plugin to
1948         fuse-linker-plugin.
1949         * opts.c (common_handle_option): Ignore OPT_fuse_linker_plugin.
1950
1951 2009-10-28  Paolo Bonzini  <bonzini@gnu.org>
1952
1953         PR rtl-optimization/39715
1954         * config/arm/arm.md (cstoresi4): Use gen_cstoresi_ltu_thumb1.
1955         (gen_cstoresi_ltu_thumb1): New splitter.
1956
1957 2009-10-28  Richard Guenther  <rguenther@suse.de>
1958
1959         PR lto/41808
1960         PR lto/41839
1961         * tree-ssa.c (useless_type_conversion_p): Do not treat
1962         conversions to pointers to incomplete types as useless.
1963         * gimple.c (gimple_types_compatible_p): Compare struct tags,
1964         not typedef names.
1965
1966 2009-10-28  Jakub Jelinek  <jakub@redhat.com>
1967
1968         * var-tracking.c (emit_note_insn_var_location): Don't call the second
1969         vt_expand_loc unnecessarily when location is not a register nor
1970         memory.
1971
1972         PR middle-end/41837
1973         * ipa-struct-reorg.c (find_field_in_struct_1): Return NULL if
1974         fields don't have DECL_NAME.
1975
1976         PR debug/41801
1977         * builtins.c (get_builtin_sync_mem): Expand loc in ptr_mode,
1978         call convert_memory_address on addr.
1979
1980         PR target/41762
1981         * config/i386/i386.c (ix86_pic_register_p): Don't call
1982         rtx_equal_for_cselib_p for VALUEs discarded as useless.
1983
1984 2009-10-28  Richard Sandiford  <rdsandiford@googlemail.com>
1985
1986         * var-tracking.c (emit_note_insn_var_location): Get the mode of
1987         a variable part from its REG, MEM or VALUE.
1988
1989 2009-10-28  Richard Guenther  <rguenther@suse.de>
1990
1991         * gimple.c (gimple_get_alias_set): Fix comment typo.
1992
1993 2009-10-28  Richard Guenther  <rguenther@suse.de>
1994
1995         * tree.c (free_lang_data_in_type): Do not call get_alias_set.
1996         (free_lang_data): Unconditionally compute alias sets for all
1997         standard integer types.  Bail out if gate bailed out previously.
1998         Do not reset the types_compatible_p langhook.
1999         (gate_free_lang_data): Remove.
2000         (struct pass_ipa_free_lang_data): Enable unconditionally.
2001         * gimple.c (gimple_get_alias_set): Use the same alias-set for
2002         all pointer types.
2003
2004 2009-10-28  Richard Guenther  <rguenther@suse.de>
2005
2006         PR middle-end/41855
2007         * tree-ssa-alias.c (refs_may_alias_p_1): Deal with CONST_DECLs
2008         (ref_maybe_used_by_call_p_1): Fix bcopy handling.
2009         (call_may_clobber_ref_p_1): Likewise.
2010         * tree-ssa-structalias.c (find_func_aliases): Likewise.
2011         * alias.c (nonoverlapping_memrefs_p): Deal with CONST_DECLs.
2012
2013 2009-10-28  Paolo Bonzini  <bonzini@gnu.org>
2014
2015         PR rtl-optimization/41812
2016
2017         Revert:
2018         2009-06-27  Paolo Bonzini  <bonzini@gnu.org>
2019
2020         * df-problems.c (df_md_scratch): New.
2021         (df_md_alloc, df_md_free): Allocate/free it.
2022         (df_md_local_compute): Only include live registers in init.
2023         (df_md_transfer_function): Prune the in-set computed by
2024         the confluence function, and the gen-set too.
2025
2026 2009-10-28  Paolo Bonzini  <bonzini@gnu.org>
2027
2028         PR rtl-optimization/39715
2029         * combine.c (simplify_comparison): Use extensions to
2030         widen comparisons.  Try an ANDing first.
2031
2032 2009-10-28  Paolo Bonzini  <bonzini@gnu.org>
2033
2034         PR rtl-optimization/40741
2035         * config/arm/arm.c (thumb1_rtx_costs): IOR or XOR with
2036         a small constant is cheap.
2037         * config/arm/arm.md (andsi3, iorsi3): Try to place the result of
2038         force_reg on the LHS.
2039         (xorsi3): Likewise, and split the XOR if the constant is complex
2040         and not in Thumb mode.
2041
2042 2009-10-28  Paolo Bonzini  <bonzini@gnu.org>
2043
2044         * expmed.c (emit_store_flag): Check costs before
2045         transforming to the opposite representation.
2046
2047 2009-10-28  Paolo Bonzini  <bonzini@gnu.org>
2048
2049         * config/sh/sh.md (cbranchfp4_media): Remove hack extending
2050         cstore result to DImode.
2051
2052 2009-10-28  Kaz Kojima  <kkojima@gcc.gnu.org>
2053
2054         * config/sh/sh.md (stuff_delay_slot): Move const_int pattern
2055         inside the unspec vector.
2056
2057 2009-10-27  Richard Henderson  <rth@redhat.com>
2058
2059         * cgraphunit.c (cgraph_optimize): Maintain timevar stack properly.
2060
2061 2009-10-27  Richard Henderson  <rth@redhat.com>
2062
2063         PR c++/41819
2064         * tree-eh.c (eh_region_may_contain_throw_map): Rename from
2065         eh_region_may_contain_throw; update users.
2066         (eh_region_may_contain_throw): New function.
2067         (lower_catch): Check flag_exceptions before creating exception region.
2068         (lower_eh_filter, lower_eh_must_not_throw): Likewise.
2069         (lower_cleanup): Tidy existing flag_exceptions check to match.
2070
2071 2009-10-27  Kai Tietz <kai.tietz@onevision.com>
2072
2073         PR/41799
2074         * config/i386/mingw32.h (CHECK_EXECUTE_STACK_ENABLED): New macro.
2075         * config/i386/mingw.opt: Add fset-stack-executable.
2076         * config/i386/i386.c (ix86_trampoline_init): Make call to
2077         emit_library_call conditional, if CHECK_EXECUTE_STACK_ENABLED is
2078         defined and its value is not zero.
2079         * doc/invoke.texi
2080
2081 2009-10-27  Richard Guenther  <rguenther@suse.de>
2082
2083         * tree-ssa-structalias.c (find_func_aliases): In IPA mode
2084         handle calls to externally visible functions like in regular mode.
2085         (create_variable_info_for): Do not create function infos here.
2086         (have_alias_info): Remove write-only variable.
2087         (solve_constraints): New function split out from common code
2088         in compute_points_to_sets and ipa_pta_execute.
2089         (compute_points_to_sets): Adjust.
2090         (ipa_pta_execute): Likewise.  Handle clones and externally visible
2091         functions like in non-IPA mode.
2092
2093 2009-10-27  Jakub Jelinek  <jakub@redhat.com>
2094
2095         PR c/41842
2096         * c-typeck.c (convert_arguments): Return -1 if any of the arguments is
2097         error_mark_node.
2098
2099 2009-10-27  Richard Guenther  <rguenther@suse.de>
2100
2101         * tree-complex.c (expand_complex_div_wide): Check for
2102         INTEGER_CST, not TREE_CONSTANT on comparison folding result.
2103
2104 2009-10-27  Revital Eres  <eres@il.ibm.com>
2105
2106         PR tree-optimization/40648
2107         * tree-vect-data-refs.c (vect_enhance_data_refs_alignment):
2108         Change decision of when to peel for alignment.
2109
2110 2009-10-27  Richard Guenther  <rguenther@suse.de>
2111
2112         PR lto/41821
2113         * gimple.c (gimple_types_compatible_p): Handle OFFSET_TYPE.
2114
2115 2009-10-27  Aldy Hernandez  <aldyh@redhat.com>
2116
2117         PR bootstrap/41451
2118         * fold-const.c (fold_binary_loc): Do not call
2119         protected_set_expr_location.
2120
2121 2009-10-27  Wei Guozhi  <carrot@google.com>
2122
2123         PR target/41705
2124         * target.h (have_conditional_execution): Add a new target hook
2125         function.
2126         * target-def.h (TARGET_HAVE_CONDITIONAL_EXECUTION): Likewise.
2127         * targhooks.h (default_have_conditional_execution): Likewise.
2128         * targhooks.c (default_have_conditional_execution): Likewise.
2129         * doc/tm.texi (TARGET_HAVE_CONDITIONAL_EXECUTION): Document it.
2130         * config/arm/arm.c (TARGET_HAVE_CONDITIONAL_EXECUTION): Define it.
2131         (arm_have_conditional_execution): New function.
2132         * ifcvt.c (noce_process_if_block, find_if_header,
2133         cond_exec_find_if_block, dead_or_predicable): Change the usage of
2134         macro HAVE_conditional_execution to a target hook call.
2135         * recog.c (peephole2_optimize): Likewise.
2136         * sched-rgn.c (add_branch_dependences): Likewise.
2137         * final.c (asm_insn_count, final_scan_insn): Likewise.
2138         * bb-reorder.c (HAVE_conditional_execution): Remove it.
2139
2140 2009-10-26  Ben Elliston  <bje@au.ibm.com>
2141             Michael Meissner  <meissner@linux.vnet.ibm.com>
2142             Ulrich Weigand  <uweigand@de.ibm.com>
2143
2144         * config.gcc (spu-*-elf*): Add spu_cache.h to extra_headers.
2145         * config/spu/spu_cache.h: New file.
2146
2147         * config/spu/cachemgr.c: New file.
2148         * config/spu/cache.S: New file.
2149
2150         * config/spu/spu.h (ASM_OUTPUT_SYMBOL_REF): Define.
2151         (ADDR_SPACE_EA): Define.
2152         (TARGET_ADDR_SPACE_KEYWORDS): Define.
2153         * config/spu/spu.c (EAmode): New macro.
2154         (TARGET_ADDR_SPACE_POINTER_MODE): Define.
2155         (TARGET_ADDR_SPACE_ADDRESS_MODE): Likewise.
2156         (TARGET_ADDR_SPACE_LEGITIMATE_ADDRESS_P): Likewise.
2157         (TARGET_ADDR_SPACE_LEGITIMIZE_ADDRESS): Likewise.
2158         (TARGET_ADDR_SPACE_SUBSET_P): Likewise.
2159         (TARGET_ADDR_SPACE_CONVERT): Likewise.
2160         (TARGET_ASM_SELECT_SECTION): Likewise.
2161         (TARGET_ASM_UNIQUE_SECTION): Likewise.
2162         (TARGET_ASM_UNALIGNED_SI_OP): Likewise.
2163         (TARGET_ASM_ALIGNED_DI_OP): Likewise.
2164         (ea_symbol_ref): New function.
2165         (spu_legitimate_constant_p): Handle __ea qualified addresses.
2166         (spu_addr_space_legitimate_address_p): New function.
2167         (spu_addr_space_legitimize_address): Likewise.
2168         (cache_fetch): New global.
2169         (cache_fetch_dirty): Likewise.
2170         (ea_alias_set): Likewise.
2171         (ea_load_store): New function.
2172         (ea_load_store_inline): Likewise.
2173         (expand_ea_mem): Likewise.
2174         (spu_expand_mov): Handle __ea qualified memory references.
2175         (spu_addr_space_pointer_mode): New function.
2176         (spu_addr_space_address_mode): Likewise.
2177         (spu_addr_space_subset_p): Likewise.
2178         (spu_addr_space_convert): Likewise.
2179         (spu_section_type_flags): Handle "._ea" section.
2180         (spu_select_section): New function.
2181         (spu_unique_section): Likewise.
2182         * config/spu/spu-c.c (spu_cpu_cpp_builtins): Support __EA32__
2183         and __EA64__ predefined macros.
2184         * config/spu/spu-elf.h (LIB_SPEC): Handle -mcache-size= and
2185         -matomic-updates switches.
2186
2187         * config/spu/t-spu-elf (MULTILIB_OPTIONS): Define.
2188         (EXTRA_MULTILIB_PARTS): Add libgcc_cachemgr.a,
2189         libgcc_cachemgr_nonatomic.a, libgcc_cache8k.a, libgcc_cache16k.a,
2190         libgcc_cache32k.a, libgcc_cache64k.a, libgcc_cache128k.a.
2191         ($(T)cachemgr.o, $(T)cachemgr_nonatomic.o): New target.
2192         ($(T)cache8k.o, $(T)cache16k.o, $(T)cache32k.o, $(T)cache64k.o,
2193         $(T)cache128k.o): Likewise.
2194         ($(T)libgcc_%.a): Likewise.
2195
2196         * config/spu/spu.h (TARGET_DEFAULT): Add MASK_ADDRESS_SPACE_CONVERSION.
2197         * config/spu/spu.opt (-mea32/-mea64): Add switches.
2198         (-maddress-space-conversion): Likewise.
2199         (-mcache-size=): Likewise.
2200         (-matomic-updates): Likewise.
2201         * doc/invoke.texi (-mea32/-mea64): Document.
2202         (-maddress-space-conversion): Likewise.
2203         (-mcache-size=): Likewise.
2204         (-matomic-updates): Likewise.
2205
2206 2009-10-26  Ben Elliston  <bje@au.ibm.com>
2207             Michael Meissner  <meissner@linux.vnet.ibm.com>
2208             Ulrich Weigand  <uweigand@de.ibm.com>
2209
2210         * doc/tm.texi (TARGET_ADDR_SPACE_KEYWORDS): Document.
2211
2212         * c-common.c (c_common_reswords): If TARGET_ADDR_SPACE_KEYWORDS is
2213         defined, add the named address space keywords.
2214         (c_addr_space_name): New function.
2215         (complete_array_type): Preserve named address space.
2216         (handle_mode_attribute): Use targetm.addr_space.valid_pointer_mode
2217         instead of targetm.valid_pointer_mode.
2218
2219         * c-common.h (enum rid): Add RID_ADDR_SPACE_0 .. RID_ADDR_SPACE_15,
2220         RID_FIRST_ADDR_SPACE and RID_LAST_ADDR_SPACE.
2221         (ADDR_SPACE_KEYWORD): New macro.
2222         (c_addr_space_name): Add prototype.
2223
2224         * c-tree.h (struct c_declspecs): Add address_space member.
2225         (declspecs_add_addrspace): Add prototype.
2226
2227         * c-pretty-print.c (pp_c_type_qualifier_list): Handle address spaces.
2228
2229         * c-parser.c (c_parse_init): Add assertion.
2230         (typedef enum c_id_kind): Add C_ID_ADDRSPACE.
2231         (c_lex_one_token): Handle address space keywords.
2232         (c_token_starts_typename): Likewise.
2233         (c_token_starts_declspecs): Likewise.
2234         (c_parser_declspecs): Likewise.
2235         (c_parser_postfix_expression_after_paren_type): Diagnose compound
2236         literal within function qualified with named address space.
2237
2238         * c-decl.c (diagnose_mismatched_decls): Diagnose conflicting named
2239         address space qualifiers.
2240         (shadow_tag_warned): Warn about useless address space qualifiers.
2241         (quals_from_declspecs): Handle address space qualifiers.
2242         (grokdeclarator): Likewise.
2243         (build_null_declspecs): Likewise.
2244         (declspecs_add_addrspace): New function.
2245
2246         * c-typeck.c (addr_space_superset): New function.
2247         (qualify_type): Handle named address spaces.
2248         (composite_type): Likewise.
2249         (common_pointer_type): Likewise.
2250         (comp_target_types): Likewise.
2251         (build_conditional_expr): Likewise.
2252         (handle_warn_cast_qual): Likewise.
2253         (build_c_cast): Likewise.
2254         (convert_for_assignment): Likewise.
2255         (build_binary_op): Likewise.
2256         (pointer_diff): Handle named address spaces.  Use intermediate
2257         integer type of sufficient size if required.
2258
2259 2009-10-26  Ben Elliston  <bje@au.ibm.com>
2260             Michael Meissner  <meissner@linux.vnet.ibm.com>
2261             Ulrich Weigand  <uweigand@de.ibm.com>
2262
2263         * doc/tm.texi (TARGET_ADDR_SPACE_POINTER_MODE): Document.
2264         (TARGET_ADDR_SPACE_ADDRESS_MODE): Likewise.
2265         (TARGET_ADDR_SPACE_VALID_POINTER_MODE): Likewise.
2266
2267         * target.h (struct target_def): Add pointer_mode, address_mode,
2268         and valid_pointer_mode to addr_space substructure.
2269         * target-def.h (TARGET_ADDR_SPACE_POINTER_MODE): Define.
2270         (TARGET_ADDR_SPACE_ADDRESS_MODE): Likewise.
2271         (TARGET_ADDR_SPACE_VALID_POINTER_MODE): Likewise.
2272         (TARGET_ADDR_SPACE_HOOKS): Add them.
2273         * targhooks.c (target_default_pointer_address_modes_p): New function.
2274         * target.h (target_default_pointer_address_modes_p): Add prototype.
2275         * targhooks.c (default_addr_space_pointer_mode): New function.
2276         (default_addr_space_address_mode): Likewise.
2277         (default_addr_space_valid_pointer_mode): Likewise.
2278         * targhooks.h (default_addr_space_pointer_mode): Add prototype.
2279         (default_addr_space_address_mode): Likewise.
2280         (default_addr_space_valid_pointer_mode): Likewise.
2281         * output.h (default_valid_pointer_mode): Move to ...
2282         * targhooks.h (default_valid_pointer_mode): ... here.
2283         * varasm.c (default_valid_pointer_mode): Move to ...
2284         * targhooks.c (default_valid_pointer_mode): ... here.
2285
2286         * varasm.c (output_constant): Use targetm.addr_space.valid_pointer_mode
2287         instead of targetm.valid_pointer_mode.
2288
2289         * fold-const.c (fit_double_type): Use int_or_pointer_precision.
2290         * tree.c (integer_pow2p): Likewise.
2291         (tree_log2): Likewise.
2292         (tree_floor_log2): Likewise.
2293         (signed_or_unsigned_type_for): Support pointer type of different size.
2294         (int_or_pointer_precision): New function.
2295         * tree.h (int_or_pointer_precision): Add prototype.
2296         * stor-layout.c (layout_type): Set TYPE_PRECISION for offset types.
2297         * varasm.c (initializer_constant_valid_p): Use TYPE_PRECISION of
2298         incoming pointer type instead of POINTER_SIZE.
2299
2300         * tree.c (build_pointer_type): Use appropriate pointer mode
2301         instead of ptr_mode.
2302         (build_reference_type): Likewise.
2303         * expr.c (store_expr): Likewise.
2304         (expand_expr_addr_expr): Likewise.
2305         * tree-vect-data-refs.c (vect_create_data_ref_ptr): Likewise.
2306         * cfgexpand.c (expand_debug_expr): Likewise.
2307
2308         * auto-inc-dec.c: Include "target.h".
2309         (try_merge): Use appropriate address mode instead of Pmode.
2310         (find_inc): Likewise.
2311         * combine.c (find_split_point): Likewise.
2312         * cselib.c (cselib_record_sets): Likewise.
2313         * dse.c (replace_inc_dec): Likewise.
2314         (canon_address): Likewise.
2315         * var-tracking.c (replace_expr_with_values): Likewise.
2316         (count_uses): Likewise.
2317         (add_uses): Likewise.
2318         (add_stores): Likewise.
2319         * emit-rtl.c: Include "target.h".
2320         (adjust_address_1): Use appropriate address mode instead of Pmode.
2321         (offset_address): Likewise.
2322         * explow.c (break_out_memory_refs): Likewise.
2323         (memory_address_addr_space): Likewise.
2324         (promote_mode): Likewise.
2325         * expr.c (move_by_pieces): Likewise.
2326         (emit_block_move_via_loop): Likewise.
2327         (store_by_pieces): Likewise.
2328         (store_by_pieces_1): Likewise.
2329         (expand_assignment): Likewise.
2330         (store_constructor): Likewise.
2331         (expand_expr_addr_expr): Likewise.
2332         (expand_expr_real_1): Likewise.
2333         * cfgexpand.c (expand_debug_expr): Likewise.
2334         * ifcvt.c (noce_try_cmove_arith): Likewise.
2335         * regcprop.c (kill_autoinc_value): Likewise.
2336         * regmove.c (try_auto_increment): Likewise.
2337         * reload.c (find_reloads): Likewise.
2338         (find_reloads_address): Likewise.
2339         (find_reloads_address_1): Likewise.
2340         * sched-deps.c: Include "target.h".
2341         (sched_analyze_1): Use appropriate address mode instead of Pmode.
2342         (sched_analyze_2): Likewise.
2343         * sel-sched-dump.c: Include "target.h".
2344         (debug_mem_addr_value): Use appropriate address mode instead of Pmode.
2345         * stor-layout.c (layout_type): Likewise.
2346         * tree-ssa-loop-ivopts.c (produce_memory_decl_rtl): Likewise.
2347         (multiplier_allowed_in_address_p): Likewise.
2348         (get_address_cost): Likewise.
2349         * varasm.c (make_decl_rtl): Likewise.
2350
2351         * expr.c (expand_assignment): Always convert offsets to appropriate
2352         address mode.
2353         (store_expr): Likewise.
2354         (store_constructor): Likewise.
2355         (expand_expr_real_1): Likewise.
2356
2357         * reload.h (form_sum): Add MODE argument.
2358         * reload.c (form_sum): Add MODE argument, use it instead of Pmode.
2359         Update recursive calls.
2360         (subst_indexed_address): Update calls to form_sum.
2361
2362         * tree-flow.h (addr_for_mem_ref): Add ADDRSPACE argument.
2363         * tree-ssa-address.c: Include "target.h".
2364         (templates): Replace by ...
2365         (mem_addr_template_list): ... this new vector.
2366         (TEMPL_IDX): Handle address space numbers.
2367         (gen_addr_rtx): Add address mode argument, use it instead of Pmode.
2368         (addr_for_mem_ref): Add ADDRSPACE argument.  Use per-address-space
2369         instead of global cache.  Update call to gen_addr_rtx.
2370         (valid_mem_ref_p): Update call to addr_for_mem_ref.
2371         * expr.c (expand_expr_real_1): Update call to addr_for_mem_ref.
2372
2373         * rtl.h (convert_memory_address_addr_space): Add prototype.
2374         (convert_memory_address): Define as macro.
2375         * explow.c (convert_memory_address): Rename to ...
2376         (convert_memory_address_addr_space): ... this.  Add ADDRSPACE argument.
2377         Use appropriate pointer and address modes instead of ptr_mode / Pmode.
2378         Update recursive calls.
2379         (memory_address_addr_space): Call convert_memory_address_addr_space.
2380         * expmed.c (make_tree): Likewise.
2381         * expr.c (expand_assignment): Likewise.
2382         (expand_expr_addr_expr_1): Likewise.  Also, add ADDRSPACE argument.
2383         (expand_expr_addr_expr): Likewise.  Also, update call.
2384
2385         * alias.c (find_base_value): Guard pointer size optimizations.
2386         (find_base_term): Likewise.
2387         * rtlanal.c (nonzero_bits1): Likewise.
2388         (num_sign_bit_copies1): Likewise.
2389         * simplify-rtx.c (simplify_unary_operation_1): Likewise.
2390
2391         * Makefile.in (tree-ssa-address.o): Add $(TARGET_H) dependency.
2392         (emit-rtl.o): Likewise.
2393         (auto-inc-dec.o): Likewise.
2394         (sched-deps.o): Likewise.
2395
2396 2009-10-26  Ben Elliston  <bje@au.ibm.com>
2397             Michael Meissner  <meissner@linux.vnet.ibm.com>
2398             Ulrich Weigand  <uweigand@de.ibm.com>
2399
2400         * doc/extend.texi (Named Address Spaces): New section.
2401         * coretypes.h (addr_space_t): New type.
2402         (ADDR_SPACE_GENERIC): New define.
2403         (ADDR_SPACE_GENERIC_P): New macro.
2404
2405         * doc/tm.texi (Named Address Spaces): New section.
2406         (TARGET_ADDR_SPACE_LEGITIMATE_ADDRESS_P): Document.
2407         (TARGET_ADDR_SPACE_LEGITIMIZE_ADDRESS): Document.
2408         (TARGET_ADDR_SPACE_SUBSET_P): Document.
2409         (TARGET_ADDR_SPACE_CONVERT): Document.
2410         * target.h (struct gcc_target): Add addr_space substructure.
2411         * target-def.h (TARGET_ADDR_SPACE_LEGITIMATE_ADDRESS_P): Define.
2412         (TARGET_ADDR_SPACE_LEGITIMIZE_ADDRESS): Likewise.
2413         (TARGET_ADDR_SPACE_SUBSET_P): Likewise.
2414         (TARGET_ADDR_SPACE_CONVERT): Likewise.
2415         (TARGET_ADDR_SPACE_HOOKS): Likewise.
2416         (TARGET_INITIALIZER): Initialize addr_space hooks.
2417         * targhooks.c (default_addr_space_legitimate_address_p): New function.
2418         (default_addr_space_legitimize_address): Likewise.
2419         (default_addr_space_subset_p): Likewise.
2420         (default_addr_space_convert): Likewise.
2421         * targhooks.h (default_addr_space_legitimate_address_p): Add prototype.
2422         (default_addr_space_legitimize_address): Likewise.
2423         (default_addr_space_subset_p): Likewise.
2424         (default_addr_space_convert): Likewise.
2425
2426         * doc/rtl.texi (MEM_ADDR_SPACE): Document.
2427         * rtl.h (mem_attrs): Add ADDRSPACE memory attribute.
2428         (MEM_ADDR_SPACE): New macro.
2429         * emit-rtl.c (get_mem_attrs): Add ADDRSPACE argument and set
2430         address space memory attribute.
2431         (mem_attrs_htab_hash): Handle address space memory attribute.
2432         (mem_attrs_htab_eq): Likewise.
2433         (set_mem_attributes_minus_bitpos): Likewise.
2434         (set_mem_alias_set): Likewise.
2435         (set_mem_align): Likewise.
2436         (set_mem_expr): Likewise.
2437         (set_mem_offset): Likewise.
2438         (set_mem_size): Likewise.
2439         (adjust_address_1): Likewise.
2440         (offset_address): Likewise.
2441         (widen_memoy_address): Likewise.
2442         (get_spill_slot_decl): Likewise.
2443         (set_mem_attrs_for_spill): Likewise.
2444         (set_mem_addr_space): New function.
2445         * emit-rtl.h (set_mem_addr_space): Add prototype.
2446         * print-rtl.c (print_rtx): Print address space memory attribute.
2447         * expr.c (expand_assignment): Set address space memory attribute
2448         of generated MEM RTXes as appropriate.
2449         (expand_expr_real_1): Likewise.
2450         * cfgexpand.c (expand_debug_expr): Likewise.
2451         * tree-ssa-loop-ivopts.c (produce_memory_decl_rtl): Likewise.
2452
2453         * tree.h (struct tree_base): Add address_space bitfield.  Reduce
2454         size of "spare" bitfield.
2455         (TYPE_ADDR_SPACE): New macro.
2456         (ENCODE_QUAL_ADDR_SPACE): Likewise.
2457         (DECODE_QUAL_ADDR_SPACE): Likewise.
2458         (CLEAR_QUAL_ADDR_SPACE): Likewise.
2459         (KEEP_QUAL_ADDR_SPACE): Likewise.
2460         (TYPE_QUALS): Encode type address space.
2461         (TYPE_QUALS_NO_ADDR_SPACE): New macro.
2462         * tree.c (set_type_quals): Set type address space.
2463         (build_array_type): Inherit array address space from element type.
2464         * print-tree.c (print_node_brief): Print type address space.
2465         (print_node): Likewise.
2466         * tree-pretty-print.c (dump_generic_node): Likewise.
2467
2468         * explow.c (memory_address): Rename to ...
2469         (memory_address_addr_space): ... this.  Add ADDRSPACE argument.
2470         Use address-space aware variants of memory address routines.
2471         * recog.c (memory_address_p): Rename to ...
2472         (memory_address_addr_space_p): ... this.  Add ADDSPACE argument.
2473         Use address-space aware variants of memory address routines.
2474         (offsettable_address_p): Rename to ...
2475         (offsettable_address_addr_space_p): ... this.  Add ADDRSPACE argument.
2476         Use address-space aware variants of memory address routines.
2477         * reload.c (strict_memory_address_p): Rename to ...
2478         (strict_memory_address_addr_space_p): ... this.  Add ADDSPACE argument.
2479         Use address-space aware variants of memory address routines.
2480         (maybe_memory_address_p): Rename to ...
2481         (maybe_memory_address_addr_space_p): ... this.  Add ADDSPACE argument.
2482         Use address-space aware variants of memory address routines.
2483         * expr.h (memory_address_addr_space): Add prototype.
2484         (memory_address): Define as macro.
2485         * recog.h (memory_address_addr_space_p): Add prototype.
2486         (memory_address_p): Define as macro.
2487         (offsettable_address_addr_space_p): Add prototype.
2488         (offsettable_address_p): Define as macro.
2489         (strict_memory_address_addr_space_p): Add prototype.
2490         (strict_memory_address_p): Define as macro.
2491
2492         * combine.c (find_split_point): Use address-space aware variants
2493         of memory address routines.
2494         * emit-rtl.c (operand_subword): Likewise.
2495         (change_address_1): Likewise.
2496         (adjust_address_1): Likewise.
2497         (offset_address): Likewise.
2498         * expr.c (emit_move_insn): Likewise.
2499         (expand_assignment): Likewise.
2500         (expand_expr_real_1): Likewise.
2501         * recog.c (verify_changes): Likewise.
2502         (general_operand): Likewise.
2503         (offsettable_memref_p): Likewise.
2504         (offsettable_nonstrict_memref_p): Likewise.
2505         (constrain_operands): Likewise.
2506         * reload.c (get_secondary_mem): Likewise.
2507         (find_reloads_toplev): Likewise.
2508         (find_reloads_address): Likewise.
2509         (find_reloads_subreg_address): Likewise.
2510         * reload1.c (reload): Likewise.
2511         * rtlhooks.c (gen_lowpart_if_possible): Likewise.
2512         * rtl.h (address_cost): Add ADDRSPACE argument.
2513         * rtlanal.c (address_cost): Add ADDRSPACE argument.  Use address-space
2514         aware variant of memory address routines.
2515         * loop-invariant.c (create_new_invariant): Update address_cost call.
2516         * tree-ssa-loop-ivopts.c (computation_cost): Likewise.
2517         * fwprop.c (should_replace_address): Add ADDRSPACE argument.
2518         Use address-space aware variant of memory address routines.
2519         (propagate_rtx_1): Update call to should_replace_address.
2520         * tree-flow.h (multiplier_allowed_in_address_p): Add ADDRSPACE
2521         argument.
2522         * tree-ssa-loop-ivopts.c (multiplier_allowed_in_address_p): Add
2523         ADDRSPACE argument.  Use per-address-space instead of global cache.
2524         Use address-space aware variant of memory address routines.
2525         (get_address_cost): Likewise.
2526         (get_computation_cost_at): Update calls.
2527         * tree-ssa-address.c (valid_mem_ref_p): Add ADDRSPACE argument.
2528         Use address-space aware variant of memory address routines.
2529         (create_mem_ref_raw): Update call to valid_mem_ref_p.
2530         (most_expensive_mult_to_index): Update call to
2531         multiplier_allowed_in_address_p.
2532
2533         * dwarf2out.c (modified_type_die): Output DW_AT_address_class
2534         attribute to indicate named address spaces.
2535
2536         * varasm.c (get_variable_section): DECLs in named address spaces
2537         cannot be "common".
2538
2539         * reload.c (find_reloads_address): Do not use LEGITIMIZE_RELOAD_ADDRESS
2540         for addresses in a non-generic address space.
2541
2542         * expr.c (emit_block_move_hints): Do not use libcalls for
2543         memory in non-generic address spaces.
2544         (clear_storage_hints): Likewise.
2545         (expand_assignment): Likewise.
2546
2547         * fold-const.c (operand_equal_p): Expressions refering to different
2548         address spaces are not equivalent.
2549
2550         * rtl.c (rtx_equal_p_cb): MEMs refering to different address
2551         spaces are not equivalent.
2552         (rtx_equal_p): Likewise.
2553         * cse.c (exp_equiv_p): Likewise.
2554         * jump.c (rtx_renumbered_equal_p): Likewise.
2555         * reload.c (operands_match_p): Likewise.
2556
2557         * alias.c (nonoverlapping_memrefs_p): MEMs refering to different
2558         address spaces may alias.
2559         (true_dependence): Likewise.
2560         (canon_true_dependence): Likewise.
2561         (write_dependence_p): Likewise.
2562
2563         * dse.c (canon_address): Handle named address spaces.
2564         * ifcvt.c (noce_try_cmove_arith): Likewise.
2565
2566         * tree.def (ADDR_SPACE_CONVERT_EXPR): New tree code.
2567         * expr.c (expand_expr_real_2): Expand ADDR_SPACE_CONVERT_EXPR.
2568         * convert.c (convert_to_pointer): Generate ADDR_SPACE_CONVERT_EXPR
2569         to handle conversions between different address spaces.
2570         * fold-const.c (fold_convert_loc): Likewise.
2571         (fold_unary_loc): Handle ADDR_SPACE_CONVERT_EXPR.
2572         * tree-pretty-print.c (dump_generic_node): Likewise.
2573         * gimple-pretty-print.c (dump_unary_rhs): Likewise.
2574         * tree-cfg.c (verify_gimple_assign_unary): Likewise.
2575         * tree-inline.c (estimate_operator_cost): Likewise.
2576         * tree-ssa.c (useless_type_conversion_p): Conversions between pointers
2577         to different address spaces are not useless.
2578
2579 2009-10-26  Jakub Jelinek  <jakub@redhat.com>
2580
2581         PR bootstrap/41345
2582         * cfgcleanup.c (trivially_empty_bb_p): New function.
2583         (try_optimize_bb): Use it instead of checking BB_HEAD == BB_END.
2584
2585         PR debug/41828
2586         * dwarf2out.c (add_pubname, add_pubtype, generic_parameter_die,
2587         add_name_and_src_coords_attributes, gen_namespace_die,
2588         dwarf2out_set_name): Handle dwarf2_name returning NULL.
2589
2590 2009-10-26  Nick Clifton  <nickc@redhat.com>
2591
2592         * config.gcc: Add support for RX target.
2593         * config/rx: New directory.
2594         * config/rx/constraints.md: New file.
2595         * config/rx/predicates.md: New file.
2596         * config/rx/rx.c: New file.
2597         * config/rx/rx.h: New file.
2598         * config/rx/rx.md: New file.
2599         * config/rx/rx.opt: New file.
2600         * config/rx/rx-protos.h: New file.
2601         * config/rx/t-rx: New file.
2602         * doc/extend.texi: Document RX function attributes.
2603         * doc/invoke.texi: Document RX specific command line options.
2604         * doc/contrib.texi: Document RX contribution.
2605         * doc/md.texi: Document RX constraints.
2606         * doc/install.texi: Document RX support.
2607
2608 2009-10-26  Michael Matz  <matz@suse.de>
2609
2610         PR tree-optimization/41783
2611         * tree-ssa-alias.c (get_continuation_for_phi): Export, add a special
2612         case for simple diamonds.
2613         * tree-ssa-alias.h (get_continuation_for_phi): Declare.
2614         * tree-ssa-pre.c (translate_vuse_through_block): Add same_valid
2615         argument, use alias oracle to skip some vdefs.
2616         (phi_translate_1): Change call to above, don't allocate new
2617         value ids if they can stay the same.
2618         (compute_avail): Allow vuse walking when looking up references.
2619
2620 2009-10-26  Richard Guenther  <rguenther@suse.de>
2621
2622         PR tree-optimization/41826
2623         * tree-ssa-structalias.c (get_constraint_for_ptr_offset): Avoid
2624         access to re-allocated vector fields.
2625
2626 2009-10-26  Richard Guenther  <rguenther@suse.de>
2627
2628         * graphite-sese-to-poly.c (check_poly_representation): Fix
2629         compile without checking.
2630
2631 2009-10-26  Janus Weil  <janus@gcc.gnu.org>
2632
2633         PR fortran/41714
2634         * gimple.h (tree_annotate_all_with_location): Remove prototype.
2635         * gimplify.c (tree_should_carry_location_p,
2636         tree_annotate_one_with_location,tree_annotate_all_with_location):
2637         Remove obsolete functions.
2638
2639 2009-10-25  Kaz Kojima  <kkojima@gcc.gnu.org>
2640
2641         PR target/41813
2642         * config/sh/sh.md (stuff_delay_slot): Don't set T_REG in pattern.
2643
2644 2009-10-25  Richard Guenther  <rguenther@suse.de>
2645
2646         * lto-streamer-in.c (unpack_ts_decl_common_value_fields):
2647         Stream DECL_RESTRICTED_P.
2648         * lto-streamer-out.c (pack_ts_decl_common_value_fields): Likewise.
2649
2650 2009-10-25  Richard Sandiford  <rdsandiford@googlemail.com>
2651
2652         * config/mips/mips.c (mips_restore_gp_from_cprestore_slot): Emit
2653         a note when expanding to nothing.
2654
2655 2009-10-25  Richard Guenther  <rguenther@suse.de>
2656
2657         PR middle-end/41814
2658         * tree.c (find_decls_types_r): Deal with Java overloading
2659         BINFO_VIRTUALS for its own purpose.
2660
2661 2009-10-24  Adam Nemet  <anemet@caviumnetworks.com>
2662
2663         * config/mips/predicates.md (hilo_operand): New predicate.
2664         * config/mips/mips.md (<u>mulsidi3_64bit): Change it to a
2665         define_insn.  Correct !ISA_HAS_EXT_INS length from 24 to 28.  Move
2666         splitter part from here ...:
2667         (<u>mulsidi3_64bit splitter for !ISA_HAS_EXT_INS): ... to here.  Swap
2668         op0 and op4 to match the DINS case.
2669         (<u>mulsidi3_64bit splitter for ISA_HAS_EXT_INS): New splitter.
2670
2671 2009-10-24  Andy Hutchinson  <hutchinsonandy@gcc.gnu.org>
2672
2673         PR middle-end/19154
2674         * avr.md (QIDI): Add new mode iterator.
2675         (sbrx_branch<mode>): Create new zero extract bit, test and jump
2676         patterns for all QI thru DI modes combinations.
2677         (sbrx_and_branch<mode>): Create new and based bit test and jump
2678         patterns for QI thru SI modes.
2679         avr.c (avr_out_sbxx_branch): Use only bit number.
2680
2681 2009-10-24  Jan Hubicka  <jh@suse.cz>
2682
2683         * ipa-reference.c (check_call): Noreturn notrhow calls do not write
2684         to memory.
2685         (analyze_function): When analyzing noreturn nothrow call, do not
2686         compute written stats; free bitmaps of vars early if possible.
2687         (generate_summary): Only update bitmaps if computed.
2688         (propagate): Only dump bitmaps if computed.
2689         (ipa_reference_read_summary): Fix pasto.
2690
2691 2009-10-24  Eric Botcazou  <ebotcazou@adacore.com>
2692
2693         * tree-ssa-alias.c (nonaliasing_component_refs_p): Rename into...
2694         (aliasing_component_refs_p): ...this.  Return true if there is no
2695         common base and the base access types have the same alias set.
2696         (indirect_ref_may_alias_decl_p): Adjust for above renaming.
2697         (indirect_refs_may_alias_p): Likewise.
2698
2699 2009-10-23  Joseph Myers  <joseph@codesourcery.com>
2700
2701         PR c/40033
2702         * c-typeck.c (c_finish_stmt_expr): Do not wrap error_mark_node in
2703         a C_MAYBE_CONST_EXPR.
2704
2705 2009-10-23  Michael Meissner  <meissner@linux.vnet.ibm.com>
2706
2707         PR target/41787
2708         * config/rs6000/rs6000.c (struct machine_function): Add
2709         vsx_or_altivec_used_p to record if vector types are used.
2710         (rs6000_expand_to_rtl_hook): Rename from
2711         rs6000_alloc_sdmode_stack_slot.  If VSX, check to see if there are
2712         any vector operations, so if there are, we can set VRSAVE to
2713         non-zero when only floating point vector registers are used.
2714         (TARGET_EXPAND_TO_RTL_HOOK): Use rs6000_expand_to_rtl_hook.
2715         (rs6000_check_vector_mode): Inner function to check if vector
2716         types are used in the code.
2717         (compute_vrsave_mask): If VSX, make sure VRSAVE is non-zero if
2718         vector instructions are used.
2719
2720         * config/rs6000/rs6000.h (HARD_REGNO_CALL_PART_CLOBBERED):
2721         Indicate that VSX registers which overlap floating point
2722         registers, can't be used across a call, since the ABI only states
2723         the scalar part of the register will be saved and restored.
2724
2725 2009-10-23  Joseph Myers  <joseph@codesourcery.com>
2726
2727         PR c/41673
2728         * alias.c (get_alias_set): Call langhook before returning 0 for
2729         types with structural equality.
2730         * c-common.c (c_common_get_alias_set): Use alias set of element
2731         type for arrays with structural comparison.
2732
2733 2009-10-23  Richard Guenther  <rguenther@suse.de>
2734
2735         PR middle-end/41805
2736         * cfgexpand.c (expand_call_stmt): Use gimple_has_side_effects and
2737         gimple_call_nothrow_p.
2738
2739 2009-10-23  Richard Guenther  <rguenther@suse.de>
2740
2741         PR tree-optimization/41778
2742         * tree-ssa-pre.c (do_regular_insertion): Only insert if a
2743         redundancy along a path in the CFG we want to optimize for speed
2744         is going to be removed.
2745         (execute_pre): Do partial-PRE only if the function is to be
2746         optimized for speed.
2747         (gate_pre): Do not turn off all of PRE when not optimizing a
2748         function for speed.
2749
2750 2009-10-23  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
2751
2752         * builtins.c (fold_builtin_cabs): Use validate_arg().
2753         (fold_builtin_cexp): Fix if-logic.
2754         (fold_builtin_1): Check subtype for BUILT_IN_CIMAG.
2755
2756 2009-10-22  Jeff Law  <law@redhat.com>
2757
2758         * ira-lives.c (process_single_reg_class_operands): Update the
2759         hard reg costs for all the hard registers desired by the
2760         single reg class operand.
2761
2762 2009-10-22  Richard Sandiford  <rdsandiford@googlemail.com>
2763
2764         * simplify-rtx.c (simplify_replace_fn_rtx): Add a fallback case
2765         for rtxes that aren't handled specially.
2766
2767 2009-10-22  Richard Sandiford  <rdsandiford@googlemail.com>
2768
2769         * rtl.h (shallow_copy_rtvec): Declare.
2770         * rtl.c (shallow_copy_rtvec): New function.
2771         * cselib.c (cselib_subst_to_values): Use it.  Only modify an
2772         rtx field if the subrtx has changed.
2773
2774 2009-10-22  Anatoly Sokolov  <aesok@post.ru>
2775
2776         * config/m32c/m32c.c (m32c_function_value_regno_p): New function.
2777         (m32c_function_value): Make static, add new 'outgoing' argument.
2778         (m32c_libcall_value): Make static, add new 'fun' argument.
2779         (TARGET_FUNCTION_VALUE, TARGET_LIBCALL_VALUE): Declare.
2780         * config/m32c/m32c.h (FUNCTION_VALUE, LIBCALL_VALUE): Remove.
2781         (FUNCTION_VALUE_REGNO_P): Redefine, use m32c_function_value_regno_p.
2782         * config/m32c/m32c-protos.h (m32c_function_value_regno_p): Declare.
2783         (m32c_function_value, m32c_libcall_value): Delete declaration.
2784
2785 2009-10-22  Diego Novillo  <dnovillo@google.com>
2786
2787         * Makefile.in (PLUGIN_HEADERS): Add output.h and IPA_UTILS_H.
2788
2789 2009-10-22  Razya Ladelsky  <razya@il.ibm.com>
2790
2791         * tree-cfg.c (gimple_duplicate_sese_tail): Fix typos/indentation/white
2792         space.
2793
2794 2009-10-22  Richard Guenther  <rguenther@suse.de>
2795
2796         * lto-streamer.h (lto_symtab_merge_cgraph_nodes): Declare.
2797         * lto-symtab.c (struct lto_symtab_entry_def): Add node member.
2798         (lto_symtab_merge): Do not merge cgraph nodes here.
2799         (lto_symtab_resolve_can_prevail_p): Simplify.
2800         (lto_symtab_resolve_symbols): Store cgraph node.
2801         (lto_symtab_merge_decls_1): Simplify.  Do not drop non-prevailing
2802         functions from the symtab.
2803         (lto_symtab_merge_cgraph_nodes_1): New function.
2804         (lto_symtab_merge_cgraph_nodes): Likewise.
2805
2806 2009-10-22  Richard Guenther  <rguenther@suse.de>
2807
2808         PR lto/41791
2809         * lto-streamer-out.c (lto_output_location): Stream the
2810         system header flag.
2811         * lto-streamer-in.c (lto_input_location): Likewise.
2812
2813 2009-10-22  Razya Ladelsky  <razya@il.ibm.com>
2814
2815         * cfgloopmanip.c (duplicate_subloops): Export.
2816         * tree-parloops.c (loop_parallel_p): Dump if loop is innermost.
2817         (transform_to_exit_first_loop): Duplicate bbs starting from
2818         header up to loop->latch instead of exit->src.
2819         Initialize control variable to the correct number of iterations.
2820         (gather_scalar_reductions): Do not register double reductions.
2821         (parallelize_loops): Dump which loop is tested.
2822         Indicate whether the parallelized loop is inner or not.
2823         Remove the innermost-loop requirement.
2824         * cfgloop.h (duplicate_subloops): Export.
2825         * tree-cfg.c (add_phi_args_after_redirect): New function.
2826         (gimple_duplicate_sese_tail): Remove the no-subloops constraint.
2827         Call duplicate_subloops.
2828         Update number of iterations at the exit condition.
2829         Don't redirect nexits always to the loop exit.
2830         Redirect copied edges from latch to the loop exit.
2831
2832 2009-10-22  Jan Hubicka  <jh@suse.cz>
2833
2834         * ipa-cp.c (ipcp_read_summary): Remove now invalid FIXME and
2835         flag_ltrans check.
2836         * ipa-inline.c (cgraph_mark_inline_edge,
2837         cgraph_decide_inlining_of_small_function,
2838         cgraph_decide_inlining, inline_read_summary): Disable indirect
2839         inlining for WPA for time being.
2840
2841         PR tree-optimize/40556
2842         * ipa-inline.c (cgraph_early_inlining): Fix iterations condition.
2843
2844 2009-10-22  Richard Guenther  <rguenther@suse.de>
2845
2846         * lto-streamer.h (lto_symtab_clear_resolution): Remove.
2847         * lto-symtab.c (lto_symtab_clear_resolution): Likewise.
2848
2849 2009-10-22  Jan Hubicka  <jh@suse.cz>
2850
2851         PR lto/41730
2852         * ipa-reference.c (has_proper_scope_for_analysis): Add fixme about
2853         global vars.
2854         (check_call): Handle only indirect calls.
2855         (propagate_bits): Update comment.
2856         (write_node_summary_p): Turn bogus check to assert.
2857         (ipa_reference_write_summary): Stream calls_read_all properly.
2858         (ipa_reference_read_summary): Stream in calls_read_all properly.
2859         (read_write_all_from_decl): New function.
2860         (propagate): Handle OVERWRITABLE nodes and external calls here.
2861         * ipa-pre-const.c (check_call): In IPA mode handle indirect
2862         calls only.
2863         (analyze_function): Do not check visibility here.
2864         (add_new_function): We summary OVERWRITABLE too.
2865         (generate_summary): Stream OVERWRITABLE nodes too.
2866         (propagate): Handle external calls and OVERWRITABLE nodes here.
2867         (local_pure_const): Check visibility here.
2868
2869 2009-10-22  Jan Hubicka  <jh@suse.cz>
2870
2871         * ipa-cp.c (ipcp_write_summary, ipcp_read_summary): New functions.
2872         (pass_ipa_cp): Register them.
2873         (ipcp_init_stage): Analyze all functions for whopr/lto.
2874         (ipcp_propagate_stage): Skip external calls.
2875         (ipcp_iterate_stage): Call ipa_update_after_lto_read if needed.
2876         * ipa-reference.c (write_node_summary_p): Fix thinko about
2877         availability.
2878         * cgraphunit.c (ipa_passes): When in lto, ne er produce new summaries;
2879         when in ltrans, skip executing of ipa passes since everything
2880         should've been done.
2881         * ipa-inline.c (cgraph_decide_inlining): Remove FIXMEs.
2882         (inline_generate_summary): Likewise.
2883         (inline_read_summary): New function.
2884         (inline_write_summary): New function.
2885         (pass_ipa_inline): Register new hooks.
2886         * ipa-prop.c: Inlcude lto-streamer.h
2887         (ipa_edge_args_vector): Update declaration.
2888         (ipa_count_arguments, ipa_compute_jump_functions,
2889         ipa_free_edge_args_substructures): Move ipa_edge_args_vector into ggc.
2890         (ipa_write_jump_function, ipa_read_jump_function, ipa_write_node_info,
2891         ipa_read_node_info): New static functions.
2892         (ipa_prop_write_jump_functions, ipa_prop_read_jump_functions): Update.
2893         (duplicate_array): Use xmalloc.
2894         (duplicate_ggc_array): New.
2895         (ipa_edge_duplication_hook): Use it.
2896         (ipa_update_after_lto_read): New function.
2897         * ipa-prop.h (ipa_prop_write_jump_functions,
2898         ipa_prop_read_jump_functions): Declare.
2899         (ipa_pass_through_data, ipa_ancestor_jf_data, ipa_member_ptr_cst,
2900         jump_func_value, ipa_member_ptr_cst, ipa_edge_args): Add GTY markers.
2901         (ipa_edge_args_vector): Move into GGC.
2902         (ipa_check_create_edge_args): Update.
2903         (ipa_update_after_lto_read): New.
2904         * passes.c (ipa_write_summaries_1): When in wpa, do not write
2905         summaries.
2906         (ipa_read_summaries): When in ltrans, so not read summaries.
2907         * lto-streamer.c (lto_get_section_name): Add
2908         LTO_section_jump_functions.
2909         * lto-streamer.h (LTO_section_jump_functions): New section.
2910         (produce_asm): Declare.
2911         * lto-cgraph.c (output_cgraph): Output edges in reverse order.
2912         * lto-streamer-out.c (produce_asm): Export.
2913         * lto-streamer-in.c: Include tree-pass.h
2914         (input_function): Free dominance info when done.
2915         (lto_read_body): Push ipa_inline in ltrans stage.
2916         * gengtype.c (open_base_files): Add ipa-prop.h into includes.
2917         * Makefile.in (GTFILES): Add ipa-prop.h
2918
2919 2009-10-22  Matthias Klose  <doko@ubuntu.com>
2920
2921         * doc/install.texi: Document --enable-browser-plugin.
2922
2923 2009-10-21  Vladimir Makarov  <vmakarov@redhat.com>
2924
2925         * doc/invoke.texi (fira-loop-pressure): Update default value.
2926         * opts.c (decode_options): Remove default value setting for
2927         flag_ira_loop_pressure.
2928         * config/ia64/ia64.c (ia64_override_options): Set
2929         flag_ira_loop_pressure up for -O3.
2930         * config/rs6000/rs6000.c (rs6000_override_options): Ditto.
2931
2932 2009-10-21  Sebastian Pop  <sebastian.pop@amd.com>
2933
2934         PR tree-optimization/41497
2935         * tree-scalar-evolution.c (analyze_evolution_in_loop): Return
2936         chrec_dont_know if the evolution function returned by follow_ssa_edge
2937         is constant in the analyzed loop and is not compatible with the
2938         initial value before the loop.
2939         * tree-chrec.h (no_evolution_in_loop_p): Call STRIP_NOPS.
2940
2941 2009-10-21  Joseph Myers  <joseph@codesourcery.com>
2942
2943         * config/sh/sh.c (nonpic_symbol_mentioned_p): Allow UNSPEC_TPOFF.
2944
2945 2009-10-21  Jakub Jelinek  <jakub@redhat.com>
2946
2947         PR other/25507
2948         * doc/invoke.texi: Document -print-multi-os-directory.
2949
2950 2009-10-21  Jack Howarth  <howarth@bromo.med.uc.edu>
2951
2952         PR c++/41313
2953         * gcc/config/darwin10.h: Use default_emit_unwind_label.
2954         * gcc/config/darwin.c: Disable -freorder-blocks-and-partition
2955         when darwin_emit_unwind_label is used.
2956
2957 2009-10-21  Eric Botcazou  <ebotcazou@adacore.com>
2958
2959         * tree-vect-stmts.c (exist_non_indexing_operands_for_use_p): Tweak
2960         order of checks.
2961
2962 2009-10-20  Richard Henderson  <rth@redhat.com>
2963
2964         * tree-eh.c (lower_try_finally_copy): Do lower_eh_constructs_1
2965         before emit_post_landing_pad.
2966
2967 2009-10-20  Adam Nemet  <anemet@caviumnetworks.com>
2968
2969         * config/mips/mips.c (mips_binary_cost): Add new argument speed.
2970         Use when calling rtx_costs.
2971         (mips_rtx_costs): Fix formatting.  Use argument speed rather than the
2972         global optimize_size.  Pass speed to mips_binary_cost.
2973
2974 2009-10-20  Jakub Jelinek  <jakub@redhat.com>
2975
2976         * config/rs6000/rs6000.c (def_builtin): Set TREE_READONLY instead
2977         of TREE_CONSTANT.
2978
2979 2009-10-20  Richard Sandiford  <rdsandiford@googlemail.com>
2980
2981         * rtl.h (simplify_replace_fn_rtx): Declare.
2982         (wrap_constant, unwrap_constant): Delete.
2983         * cfgexpand.c (unwrap_constant, wrap_constant): Delete.
2984         (expand_debug_expr): Don't call wrap_constant.
2985         * combine.c (rtx_subst_pair): Only define for AUTO_INC_DEC.
2986         (auto_adjust_pair): Fold into...
2987         (propagate_for_debug_subst): ...here.  Only define for AUTO_INC_DEC.
2988         Just return a new value.
2989         (propagate_for_debug): Use simplify_replace_fn_rtx for AUTO_INC_DEC,
2990         otherwise use simplify_replace_rtx.
2991         * cselib.c (wrap_constant): Reinstate old definition.
2992         (cselib_expand_value_rtx_1): Don't wrap constants.
2993         * gcse.c (try_replace_reg): Don't use copy_rtx in the call to
2994         simplify_replace_rtx.
2995         (bypass_block): Fix formatting in calls to simplify_replace_rtx.
2996         * reload1.c (reload): Skip all uses for an insn before adjusting it.
2997         Use simplify_replace_rtx.
2998         * simplify-rtx.c (simplify_replace_fn_rtx): New function,
2999         adapted from...
3000         (simplify_replace_rtx): ...here.  Turn into a wrapper for
3001         simplify_replace_fn_rtx.
3002         (simplify_unary_operation): Don't unwrap CONSTs.
3003         * var-tracking.c (check_wrap_constant): Delete.
3004         (vt_expand_loc_callback): Don't call it.
3005         (vt_expand_loc): Likewise.
3006
3007 2009-10-20  Pascal Obry  <obry@adacore.com>
3008             Eric Botcazou  <ebotcazou@adacore.com>
3009
3010         * config/i386/cygming.h (DWARF_FRAME_REGNUM): Add enclosing parens.
3011
3012 2009-10-20  Michael Matz  <matz@suse.de>
3013
3014         * loop-invariant.c (create_new_invariant): Use different magic number.
3015
3016 2009-10-20  Richard Earnshaw  <rearnsha@arm.com>
3017
3018         PR target/39247
3019         * arm.c (arm_override_options): Forcibly disable hot/cold block
3020         partitioning.
3021
3022 2009-10-20  Alexandre Oliva  <aoliva@redhat.com>
3023
3024         PR debug/41739
3025         * haifa-sched.c (try_ready): Skip debug deps updating speculation
3026         status.
3027
3028 2009-10-20  Richard Guenther  <rguenther@suse.de>
3029
3030         * ggc-page.c: Include cfgloop.h.
3031         (struct max_alignment): Drop long double, add void *.
3032         (extra_order_size_table): Add low non-power-of-two multiples
3033         of MAX_ALIGNMENT.  Drop small type-based entries, add
3034         tree_type, cgraph_node and loop.
3035         * alloc-pool.c (struct allocation_object_def): Drop long double
3036         aligning element.
3037
3038 2009-10-20  Jakub Jelinek  <jakub@redhat.com>
3039
3040         PR debug/41340
3041         * loop-invariant.c (calculate_loop_reg_pressure): Don't count regs
3042         referenced just in DEBUG_INSNs.
3043
3044 2009-10-20  Richard Guenther  <rguenther@suse.de>
3045
3046         PR lto/41761
3047         * gimple.c (gimple_register_type): Make sure we register
3048         the types main variant first.
3049
3050 2009-10-20  Richard Guenther  <rguenther@suse.de>
3051
3052         * gimple.c (gimple_types_compatible_p): Simplify.  Move
3053         cheap checks before hashtable queries.  Add checks for
3054         TYPE_NONALIASED_COMPONENT and DECL_NONADDRESSABLE_P.
3055
3056 2009-10-20  Eric Botcazou  <ebotcazou@adacore.com>
3057
3058         * tree-sra.c (build_ref_for_offset_1) <RECORD_TYPE>: Skip fields
3059         without size or with size that can't be represented as a host integer.
3060
3061 2009-10-20  Alexandre Oliva  <aoliva@redhat.com>
3062
3063         * tree-ssa-dce.c (eliminate_unnecessary_stmts): Don't regard
3064         the removal of a debug stmt as a significant change.
3065
3066 2009-10-20  Wolfgang Gellerich  <gellerich@de.ibm.com>
3067
3068         * config/s390/s390.md: Added agen condition to operand
3069         forwarding bypasses.  Added bypass for early address generation
3070         use of int results.  Updated comments.
3071
3072 2009-10-20  Stefan Dösinger  <stefan@codeweavers.com>
3073
3074         * config/i386/i386.c: Remove signal.h #include.
3075
3076 2009-10-20  Jie Zhang  <jie.zhang@analog.com>
3077
3078         * simplify-rtx.c (simplify_const_unary_operation): Handle SS_ABS.
3079         * doc/rtl.texi: Document ss_abs.
3080
3081 2009-10-19  Jakub Jelinek  <jakub@redhat.com>
3082
3083         * c-common.c (c_parse_error): Handle CPP_UTF8STRING.
3084         * c-lex.c (c_lex_with_flags): Likewise.  Test C_LEX_STRING_NO_JOIN
3085         instead of C_LEX_RAW_STRINGS.
3086         (lex_string): Handle CPP_UTF8STRING.
3087         * c-parser.c (c_parser_postfix_expression): Likewise.
3088         * c-pragma.h (C_LEX_RAW_STRINGS): Rename to ...
3089         (C_LEX_STRING_NO_JOIN): ... this.
3090
3091 2009-10-19  Anatoly Sokolov  <aesok@post.ru>
3092
3093         * config/cris/cris.c (cris_function_value, cris_libcall_value,
3094         cris_function_value_regno_p): New functions.
3095         (cris_promote_function_mode): Update comment.
3096         (TARGET_FUNCTION_VALUE, TARGET_LIBCALL_VALUE): Declare.
3097         * config/cris/cris.h (FUNCTION_VALUE, LIBCALL_VALUE): Remove.
3098         (FUNCTION_VALUE_REGNO_P): Redefine, use cris_function_value_regno_p.
3099         * config/cris/cris-protos.h (cris_function_value_regno_p): Declare.
3100
3101 2009-10-19  Jakub Jelinek  <jakub@redhat.com>
3102
3103         * unwind-dw2.c (execute_stack_op): Fix operand order for
3104         DW_OP_le, DW_OP_ge, DW_OP_lt and DW_OP_gt.
3105
3106 2009-10-19  Eric Botcazou  <ebotcazou@adacore.com>
3107
3108         * gimple-low.c (struct lower_data): Add cannot_fallthru field.
3109         (lower_stmt) <GIMPLE_BIND>: Add comment.
3110         <GIMPLE_COND, GIMPLE_GOTO, GIMPLE_SWITCH>: Set cannot_fallthru to true
3111         and return.
3112         <GIMPLE_RETURN>: Remove the statement if cannot_fallthru is set.
3113         Otherwise lower it and set cannot_fallthru to true.
3114         <GIMPLE_TRY>: Update cannot_fallthru for GIMPLE_TRY_FINALLY and return.
3115         <GIMPLE_CATCH, GIMPLE_EH_FILTER>: Set cannot_fallthru to false.
3116         <GIMPLE_CALL>: Set cannot_fallthru to false for BUILT_IN_SETJMP and
3117         to true for a noreturn call.  Do not remove statements.
3118         <GIMPLE_OMP_PARALLEL, GIMPLE_OMP_TASK>: Set cannot_fallthru to false.
3119         Set cannot_fallthru to false on function exit.
3120         (gimple_stmt_may_fallthru) <GIMPLE_SWITCH>: Really return false.
3121         <GIMPLE_ASSIGN>: Remove.
3122
3123 2009-10-19  Andreas Krebbel  <Andreas.Krebbel@de.ibm.com>
3124
3125         * config/s390/s390.c (s390_z10_optimize_cmp): Don't touch FP compares.
3126
3127 2009-10-19  Andreas Krebbel  <Andreas.Krebbel@de.ibm.com>
3128
3129         * config/s390/s390.c (s390_z10_optimize_cmp): Use
3130         next/prev_active_insn to skip DEBUG_INSNs as well.
3131
3132 2009-10-19  Joseph Myers  <joseph@codesourcery.com>
3133
3134         * config/arm/arm.c (output_move_neon): Use DImode in call to
3135         adjust_address.
3136
3137 2009-10-19  Matthias Klose  <doko@ubuntu.com>
3138
3139         PR target/40134
3140         * config.gcc (arm*-*-linux-*eabi): Use config/t-slibgcc-libgcc.
3141
3142 2009-10-19  Jakub Jelinek  <jakub@redhat.com>
3143
3144         * cfgexpand.c (expand_debug_expr): Fail if bitpos < 0 for non-MEM op0.
3145
3146 2009-10-17  Andy Hutchinson  <hutchinsonandy@gcc.gnu.org>
3147
3148         PR middle-end/41738
3149         * optabs.c (expand_binop): Make mode of shift count expression mode
3150         of shift count not target.
3151         Remove indent nit.
3152
3153 2009-10-17  Eric Botcazou  <ebotcazou@adacore.com>
3154
3155         * tree-nested.c (convert_nonlocal_reference_stmt) <GIMPLE_COND>: New
3156         case.  Force using values to replace references within the statement.
3157         (convert_local_reference_stmt): Likewise.
3158
3159 2009-10-17  Eric Botcazou  <ebotcazou@adacore.com>
3160
3161         * gimple-low.c (lower_stmt) <GIMPLE_CALL>: If the call is noreturn,
3162         remove a subsequent GOTO or RETURN statement.
3163
3164 2009-10-17  Andy Hutchinson  <hutchinsonandy@aim.com>
3165
3166         * config/avr.md (*movqi): Add zero as equally preferable constraint
3167         as general register.
3168         (*movhi): Ditto.
3169
3170 2009-10-17  Eric Botcazou  <ebotcazou@adacore.com>
3171
3172         * print-tree.c (print_node): Fix string for DECL_STRUCT_FUNCTION.
3173
3174 2009-10-17  Richard Guenther  <rguenther@suse.de>
3175
3176         * lto-streamer-in.c (lto_input_location): Try to reuse previous maps.
3177
3178 2009-10-17  Richard Guenther  <rguenther@suse.de>
3179
3180         * lto-streamer-in.c (input_gimple_stmt): Fixup FIELD_DECL
3181         operands in COMPONENT_REFs.
3182
3183 2009-10-17  Anatoly Sokolov  <aesok@post.ru>
3184
3185         * targhooks.c (default_libcall_value): Don't use LIBCALL_VALUE macro
3186         if not defined. Change type of second argument to const_rtx.
3187         (default_function_value): Call gcc_unreachable if FUNCTION_VALUE
3188         macro not defined.
3189         * targhooks.h (default_libcall_value): Update prototype.
3190         * target.h (struct gcc_target): Change type of second argument of
3191         libcall_value to const_rtx.
3192         * config/arm/arm.c (arm_libcall_value): Change type of second argument
3193         to const_rtx.
3194         (arm_libcall_uses_aapcs_base): Change type of argument to const_rtx.
3195         * doc/tm.texi (TARGET_LIBCALL_VALUE):  Revise documentation.
3196
3197 2009-10-17  Jakub Jelinek  <jakub@redhat.com>
3198
3199         PR debug/40521
3200         * debug.h (struct gcc_debug_hooks): Add assembly_start hook.
3201         * cgraphunit.c (cgraph_optimize): Call it.
3202         * dwarf2out.c (dwarf2out_init): Move .cfi_sections printing into...
3203         (dwarf2out_assembly_start): ... here.  New hook.
3204         (dwarf2out_debug_hooks): Add dwarf2out_assembly_start.
3205         * debug.c (do_nothing_debug_hooks): Do nothing for assembly_start
3206         hook.
3207         * dbxout.c (dbx_debug_hooks, xcoff_debug_hooks): Likewise.
3208         * sdbout.c (sdb_debug_hooks): Likewise.
3209         * vmsdbgout.c (vmsdbg_debug_hooks): Add vmsdbgout_assembly_start.
3210         (vmsdbgout_assembly_start): New hook.
3211
3212 2009-10-17  Alexandre Oliva  <aoliva@redhat.com>
3213
3214         * rtl.h (RTL_LOCATION): Fix typo.
3215
3216 2009-10-17  Alexandre Oliva  <aoliva@redhat.com>
3217
3218         * print-rtl.c (print_rtx): Print locators in asm_operands
3219         and asm_input.
3220
3221 2009-10-17  Alexandre Oliva  <aoliva@redhat.com>
3222
3223         PR debug/41535
3224         * sched-deps.c (depl_on_debug_p): New.
3225         (attach_dep_link): Reject debug deps before nondebug deps.
3226         (add_to_deps_list): Insert debug deps after nondebug deps.
3227         (sd_lists_empty_p): Stop at first nonempty list.  Disregard debug
3228         deps.
3229         (sd_add_dep): Do not reject debug deps.
3230         (add_insn_mem_dependence): Don't count debug deps.
3231         (remove_from_deps): Likewise.
3232         (sched_analyze_2): Set up mem deps on debug insns.
3233         (sched_analyze_insn): Record reg uses for deps on debug insns.
3234         * haifa-sched.c (schedule_insn): Reset deferred debug insn.  Don't
3235         try_ready nondebug insn after debug insn.
3236         * ddg.c (create_ddg_dep_from_intra_loop_link,
3237         create_ddg_dep_no_link): Don't reject debug deps.
3238
3239 2009-10-16  Richard Guenther  <rguenther@suse.de>
3240
3241         * lto-symtab.c (merge_incomplete_and_complete_type): Remove.
3242         (maybe_merge_incomplete_and_complete_type): Likewise.
3243         (lto_symtab_merge): Do not call them.  Do not warn for
3244         complete vs. incomplete compatible types.
3245         (lto_symtab_merge_decls_2): Simplify.
3246         * gimple.c (gimple_force_type_merge): Remove.
3247         (gimple_types_compatible_p): Make it static.
3248         * gimple.h (gimple_force_type_merge): Remove.
3249         (gimple_types_compatible_p): Likewise.
3250
3251 2009-10-16  Jakub Jelinek  <jakub@redhat.com>
3252
3253         * dwarf2out.c (mem_loc_descriptor) <case ZERO_EXTRACT>: Cast
3254         DWARF2_ADDR_SIZE to int to avoid signed vs. unsigned warnings.
3255
3256 2009-10-16  Richard Guenther  <rguenther@suse.de>
3257
3258         PR tree-optimization/41728
3259         * tree-ssa-dom.c (optimize_stmt): Mark the stmt modified
3260         if fold_stmt did anything.
3261
3262 2009-10-16  Richard Guenther  <rguenther@suse.de>
3263
3264         PR lto/41715
3265         * lto-streamer-in.c (lto_input_tree_ref): Revert last change.
3266         (maybe_fixup_handled_component): New function.
3267         (input_gimple_stmt): Fixup mismatched decl replacements.
3268
3269 2009-10-16  Richard Guenther  <rguenther@suse.de>
3270
3271         PR lto/41713
3272         * lto-streamer-out.c (lto_output_tree_ref): Handle DEBUG_EXPR_DECL
3273         the same as VAR_DECL.
3274
3275 2009-10-16  Richard Guenther  <rguenther@suse.de>
3276
3277         * gimple.c (iterative_hash_gimple_type): For integer types
3278         also hash their minimum and maximum values and the string flag.
3279         For array types hash their domain and the string flag.
3280
3281 2009-10-16  Richard Guenther  <rguenther@suse.de>
3282
3283         * gimple.c (gimple_types_compatible_p): Restrict completing
3284         types to record or unions.  Simplify completion.
3285         Do not merge records or unions with different
3286         TYPE_STRUCTURAL_EQUALITY_P tag.
3287         (iterative_hash_gimple_type): Restrict non-recursing into
3288         pointer targets for records and unions.
3289
3290 2009-10-15  Jakub Jelinek  <jakub@redhat.com>
3291
3292         PR debug/41717
3293         * cfgexpand.c (expand_debug_expr): Handle CONJ_EXPR.
3294         * dwarf2out.c (mem_loc_descriptor): Don't handle
3295         POST_INT/POST_DEC/POST_MODIFY like SUBREG.  For SUBREG
3296         punt if it is not lowpart subreg or if inner mode isn't
3297         MODE_INT.
3298
3299 2009-10-16  Andreas Krebbel  <Andreas.Krebbel@de.ibm.com>
3300
3301         * config/s390/s390.c (s390_z10_optimize_cmp): Skip notes when
3302         investigating previous or next insns.
3303
3304 2009-10-16  Eric Botcazou  <ebotcazou@adacore.com>
3305
3306         * tree-sra.c (build_ref_for_offset_1): Update comment.
3307
3308 2009-10-16  Wolfgang Gellerich  <gellerich@de.ibm.com>
3309
3310         * config/s390/s390.md (atype): Added missing values.
3311
3312 2009-10-15  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
3313
3314         PR target/41702
3315         * pa.md (casesi): Use sign extended index in call to gen_casesi64p.
3316         (casesi64p): Update pattern to reflect above.
3317
3318 2009-10-15  Steve Ellcey  <sje@cup.hp.com>
3319
3320         PR rtl-optimization/41697
3321         * sel-sched-ir.h (_eligible_successor_edge_p): Check successor count.
3322
3323 2009-10-15  Michael Meissner  <meissner@linux.vnet.ibm.com>
3324
3325         PR target/23983
3326         * config/rs6000/predicates.md: Update copyright year.
3327         * config/rs6000/altivec.md: Ditto.
3328
3329         * config/rs6000/t-rs6000 (TM_H): Add rs6000-builtin.def.
3330         (MD_INCLUDES): Add a2.md.
3331
3332         * config/rs6000/rs6000.c (rs6000_builtin_decls): Change
3333         RS6000_BUILTIN_COUNT to MAX_RS6000_BUILTINS.
3334         (builtin_classify): New static vector to classify various builtins
3335         to get the tree attributes correct.
3336         (def_builtin): Set the attributes of builtins based on what the
3337         builtin does (i.e. memory operation, floating point, saturation
3338         need special attributes, others are pure functions).
3339
3340         * config/rs6000/rs6000.h (enum rs6000_btc): New enum to classify
3341         the builtins.
3342         (enum rs6000_builtins): Include rs6000-builtin.def to define the
3343         builtins.  Change the end marker to MAX_RS6000_BUILTINS from
3344         RS6000_BUILTIN_COUNT.
3345         (rs6000_builtin_decls): Change RS6000_BUILTIN_COUNT to
3346         MAX_RS6000_BUILTINS.
3347
3348         * config/rs6000/rs6000-builtin.def: New file that combines the
3349         builtin enumeration name and attributes.
3350
3351 2009-10-15  H.J. Lu  <hongjiu.lu@intel.com>
3352
3353         * config/i386/linux.h (ASM_SPEC): Add --32.
3354
3355 2009-10-15  Jakub Jelinek  <jakub@redhat.com>
3356
3357         * dwarf2out.c (dwarf_tag_name): Handle DW_TAG_rvalue_reference_type
3358         and DW_TAG_template_alias.
3359         (dwarf_attr_name): Handle DW_AT_main_subprogram,
3360         DW_AT_data_bit_offset, DW_AT_const_expr, DW_AT_enum_class,
3361         DW_AT_linkage_name, DW_AT_GNU_guarded_by, DW_AT_GNU_pt_guarded_by,
3362         DW_AT_GNU_guarded, DW_AT_GNU_pt_guarded, DW_AT_GNU_locks_excluded,
3363         DW_AT_GNU_exclusive_locks_required, DW_AT_GNU_shared_locks_required
3364         and DW_AT_GNU_odr_signature.
3365         (dwarf_form_name): Handle DW_FORM_sec_offset, DW_FORM_exprloc,
3366         DW_FORM_flag_present and DW_FORM_ref_sig8.
3367         (output_signature): Only print name on the first byte.
3368         (output_die): Likewise for dw_val_class_data8.
3369
3370 2009-10-15  Alexander Monakov  <amonakov@ispras.ru>
3371
3372         * doc/invoke.texi: Clarify that most optimizations are not enabled
3373         without -O.
3374
3375 2009-10-15  Richard Guenther  <rguenther@suse.de>
3376
3377         PR lto/41668
3378         * gimple.c (compare_type_names_p): Handle anonymous names
3379         differently based on new mode argument.
3380         (gimple_types_compatible_p): For structs also compare the tags.
3381         (iterative_hash_type_name): Rename to ...
3382         (iterative_hash_name): ... this.  Hash all names.
3383         (iterative_hash_gimple_type): Fix hashing the struct tag of
3384         pointer targets.  Hash field decl names.
3385
3386 2009-10-15  Richard Guenther  <rguenther@suse.de>
3387
3388         PR lto/41669
3389         * gimple.c (gimple_get_alias_set): Avoid recursing on
3390         invalid type topology.
3391
3392 2009-10-15  Andrew Pinski  <andrew_pinski@playstation.sony.com>
3393
3394         * config/spu/spu.c (get_branch_target): Use extract_asm_operands.
3395
3396 2009-10-15  Richard Guenther  <rguenther@suse.de>
3397
3398         * tree.c (free_lang_data_in_decl): Free DECL_FCONTEXT.
3399
3400 2009-10-15  Jakub Jelinek  <jakub@redhat.com>
3401
3402         * config/rs6000/option-defaults.h (OPTION_DEFAULT_SPECS): Don't
3403         add --with-tune{,-32,-64} configured default for -mtune if explicit
3404         -mcpu is used.
3405
3406 2009-10-14  Daniel Gutson  <dgutson@codesourcery.com>
3407
3408         * config/arm/neon.md (neon_vshll_n<mode>): Checking Bounds fixed.
3409
3410 2009-10-14  DJ Delorie  <dj@redhat.com>
3411
3412         * config/h8300/h8300.c (F): New.
3413         (Fpa): New.
3414         (h8300_emit_stack_adjustment): Call them.
3415         (push): Likewise.
3416         (h8300_push_pop): Likewise.
3417         (h8300_expand_prologue): Likewise.
3418         * config/h8300/h8300.h (DWARF2_DEBUGGING_INFO): Define.
3419         (MUST_USE_SJLJ_EXCEPTIONS): Define.
3420         (INCOMING_RETURN_ADDR_RTX): Define.
3421         (INCOMING_FRAME_SP_OFFSET): Define.
3422         (DWARF_CIE_DATA_ALIGNMENT): Define.
3423
3424 2009-10-14  Jakub Jelinek  <jakub@redhat.com>
3425
3426         * stor-layout.c (place_field): Don't emit -Wpadded warnings for
3427         fields in builtin structs.
3428         (finalize_record_size): Likewise.
3429
3430 2009-10-14  Richard Guenther  <rguenther@suse.de>
3431
3432         * gimple.c (gtc_ob): New global.
3433         (struct type_pair_d): Replace pointers with type UIDs.
3434         (type_pair_hash): Adjust.
3435         (type_pair_eq): Likewise.
3436         (lookup_type_pair): Likewise.  Allocate from an obstack.
3437         (gimple_force_type_merge): Adjust.
3438         (gimple_types_compatible_p): Likewise.
3439         (free_gimple_type_tables): Free the obstack.
3440
3441 2009-10-14  Jakub Jelinek  <jakub@redhat.com>
3442
3443         * tree-parloops.c (separate_decls_in_region_debug_bind): Drop debug
3444         stmts setting DEBUG_EXPR_DECLs.
3445
3446         * cfgexpand.c (expand_debug_expr): Ignore zero-length bitfields.
3447         Don't crash if mode1 is VOIDmode.
3448
3449 2009-09-26  Vladimir Makarov  <vmakarov@redhat.com>
3450
3451         * params.def (PARAM_IRA_LOOP_RESERVED_REGS): New.
3452         * params.h (IRA_LOOP_RESERVED_REGS): New.
3453         * tree-pass.h (pass_subregs_of_mode_init,
3454         pass_subregs_of_mode_finish): Remove.
3455         * passes.c (pass_subregs_of_mode_init,
3456         pass_subregs_of_mode_finish): Remove.
3457         (pass_reginfo_init): Move before loop optimizations.
3458         * config/i386/i386.h (STACK_REG_COVER_CLASS): Define.
3459         * common.opt (fira-loop-pressure): New.
3460         * toplev.h (flag_ira_loop_pressure): New.
3461         * rtl.h (init_subregs_of_mode, finish_subregs_of_mode): New externals.
3462         * reginfo.c (init_subregs_of_mode, finish_subregs_of_mode):
3463         Make external and void type functions.
3464         (gate_subregs_of_mode_init, pass_subregs_of_mode_init,
3465         pass_subregs_of_mode_finish): Remove.
3466         * ira-costs.c (init_costs): Call init_subregs_of_mode.
3467         * regmove.c: Include ira.h.
3468         (regmove_optimize): Call ira_set_pseudo_classes after IRA based
3469         register pressure calculation in loops.
3470         * loop-invariant.c: Include REGS_H and ira.h.
3471         (struct loop_data): New members max_reg_pressure, regs_ref, and
3472         regs_live.
3473         (struct invariant): New member orig_regno.
3474         (curr_loop): New variable.
3475         (find_exits): Initialize regs_ref and regs_live.
3476         (create_new_invariant): Initialize orig_regno.
3477         (get_cover_class_and_nregs): New.
3478         (get_inv_cost): Make aregs_needed an array.  Use regs_needed as an
3479         array.  Add code for flag_ira_loop_pressure.
3480         (gain_for_invariant): Make new_regs an array.  Add code for
3481         flag_ira_loop_pressure.
3482         (best_gain_for_invariant): Ditto.
3483         (set_move_mark): New parameter gain.  Use it for debugging output.
3484         (find_invariants_to_move): Make regs_needed and new_regs an array.
3485         Add code for flag_ira_loop_pressure.
3486         (move_invariant_reg): Set up orig_regno.
3487         (move_invariants): Set up reg classes for pseudos for
3488         flag_ira_loop_pressure.
3489         (free_loop_data): Clear regs_ref and regs_live.
3490         (curr_regs_live, curr_reg_pressure, regs_set, n_regs_set,
3491         get_regno_cover_class, change_pressure, mark_regno_live,
3492         mark_regno_death, mark_reg_store, mark_reg_clobber,
3493         mark_reg_death, mark_ref_regs, calculate_loop_reg_pressure): New.
3494         (move_loop_invariants): Calculate pressure.  Initialize curr_loop.
3495         * ira.c (ira): Call ira_set_pseudo_classes after IRA based
3496         register pressure calculation in loops if new regs were added.
3497         Call finish_subregs_of_mode.
3498         * opts.c (decode_options): Set up flag_ira_loop_pressure.
3499         * Makefile.in (loop-invariant.o): Add ira.h.
3500         (regmove.o): Ditto.
3501         * doc/invoke.texi (-fira-loop-pressure, ira-loop-reserved-regs):
3502         Describe.
3503         * doc/tm.texi (STACK_REG_COVER_CLASS): Describe.
3504
3505 2009-10-14  Richard Guenther  <rguenther@suse.de>
3506
3507         * lto-symtab.c (lto_symtab_compatible): Fold in ...
3508         (lto_symtab_merge): ... here.  Rewrite both to take the
3509         prevailing and a to-be-merged entry and to queue diagnostics properly.
3510         (lto_symtab_resolve_replaceable_p): New predicate for
3511         symbol resolution.
3512         (lto_symtab_resolve_can_prevail_p): Likewise.
3513         (lto_symtab_resolve_symbols): Rewrite.  Fold in code that
3514         handles merging commons by choosing the largest decl.  Fold
3515         in code that gives ODR errors.
3516         (lto_symtab_merge_decls_2): Simplify a lot.  Emit queued
3517         diagnostics here.
3518         (lto_symtab_merge_decls_1): Re-structure.  Deal with the
3519         case of no prevailing decl here.  Diagnose mismatches
3520         in object types here.  Drop all but the prevailing decls.
3521         (lto_symtab_prevailing_decl): Return the single prevailing decl.
3522         * lto-streamer-in.c (lto_input_tree_ref): Deal with
3523         VIEW_CONVERT_EXPRs in decl slots.  Unshare the tree in this case.
3524
3525 2009-10-14  Richard Guenther  <rguenther@suse.de>
3526
3527         PR lto/41521
3528         * lto-streamer-in.c (input_bb): Replace debug stmts with
3529         nops instead of dropping them.
3530
3531 2009-10-14  Nick Clifton  <nickc@redhat.com>
3532
3533         * gcc/doc/extended.texi: Replace the dash character with @minus{}
3534         in situations where it is being used as a minus symbol.
3535         * gcc/doc/tm.texi: Likewise.
3536         * gcc/doc/md.texi: Likewise.
3537
3538 2009-10-14  Jakub Jelinek  <jakub@redhat.com>
3539
3540         PR preprocessor/41543
3541         * input.h (BUILTINS_LOCATION): Change to 1 from 2.
3542         Assert BUILTINS_LOCATION < RESERVED_LOCATION_COUNT.
3543         * tree.c: Include intl.h.
3544         (expand_location): Handle BUILTINS_LOCATION.
3545         * Makefile.in (tree.o): Depend on intl.h.
3546
3547         PR debug/41695
3548         * dwarf2out.c (dwarf2out_var_location): Always clear
3549         last_postcall_label when changing last_label.
3550
3551 2009-10-14  Pascal Obry  <obry@adacore.com>
3552
3553         * gcc.c (DEFAULT_SWITCH_CURTAILS_COMPILATION): Add -E.
3554         (process_command): Handle -E as done with -c and -S.  Do not add
3555         the target executable suffix to the output file when -E is used.
3556         (main): Adjust error message accordingly.
3557
3558 2009-10-14  Alexandre Oliva  <aoliva@redhat.com>
3559
3560         PR debug/41343
3561         PR debug/41447
3562         PR debug/41264
3563         PR debug/41338
3564         * tree.c (tree_node_structure_for_code): DEBUG_EXPR_DECL uses
3565         decl with rtl.
3566         (tree_code_size): Likewise.
3567
3568 2009-10-13  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
3569
3570         * builtins.c (fold_builtin_1): Support complex "arc" functions.
3571         * real.h (HAVE_mpc_arc): Define.
3572
3573 2009-10-14  Kaz Kojima  <kkojima@gcc.gnu.org>
3574
3575         * config/sh/sh.c (TARGET_BUILTIN_DECL): Define.
3576         (struct builtin_description): Add fndecl field.
3577         (bdesc): Remove const qualifier.  Update initializer.
3578         (sh_media_init_builtins): Remove const qualifier for d.  Record
3579         the result of add_builtin_function to the fndecl field.
3580         (sh_builtin_decl): New.
3581         (sh_media_builtin_decl): New.
3582
3583 2009-10-14  Hans-Peter Nilsson  <hp@axis.com>
3584
3585         PR target/38948
3586         * config/cris/cris.h (SECONDARY_RELOAD_CLASS): Handle reload
3587         requests between special registers.
3588
3589 2009-10-13  Eric Botcazou  <ebotcazou@adacore.com>
3590
3591         * dwarf2out.c (mem_loc_descriptor): Accept UNGT as well.
3592
3593 2009-10-13  Richard Henderson  <rth@redhat.com>
3594
3595         PR tree-optimization/41377
3596         * tree-eh.c (unsplit_eh): Propagate degenerate PHIs.
3597         (cleanup_empty_eh_merge_phis): New change_region parameter;
3598         pass it on to redirect_eh_edge_1.  Update callers.
3599         (cleanup_empty_eh_unsplit): Don't require an existing EH label
3600         at the destination block.
3601
3602 2009-10-13  Basile Starynkevitch  <basile@starynkevitch.net>
3603
3604         * passes.c (register_pass): Replaced gcc_unreachable by
3605         fatal_error on failure. Mentions plugins in comments & messages.
3606
3607 2009-10-13  Jakub Jelinek  <jakub@redhat.com>
3608
3609         PR target/41693
3610         * rtl.h (DEBUG_EXPR_TREE_DECL): Define.
3611         * sched-vis.c (print_value): Use it.
3612         * cselib.c (cselib_hash_rtx): Likewise.
3613         * print-rtl.c (print_rtx): Likewise.
3614         * cfgexpand.c (expand_debug_rtx): Likewise.
3615         * var-tracking.c (vt_expand_loc_callback): Likewise.
3616
3617 2009-10-13  Richard Guenther  <rguenther@suse.de>
3618
3619         PR lto/41565
3620         * opts.c (handle_option): Split out code to handle setting
3621         the options flag var ...
3622         (set_option): ... here.
3623         * opts.h (set_option): Declare.
3624         * lto-opts.c (register_user_option_p): Include -fexceptions
3625         and all position independent code variants.
3626         (handle_common_option): Remove.
3627         (lto_reissue_options): Use set_option.
3628
3629 2009-10-13  Martin Jambor  <mjambor@suse.cz>
3630
3631         PR tree-optimization/41661
3632         * ipa-prop.c (compute_complex_pass_through): Allow only operations
3633         that are tcc_comparisons or do not change the type in any
3634         un-usleless way.
3635         * ipa-cp.c (ipcp_lattice_from_jfunc): Request boolean type when
3636         folding tcc_comparison operations.
3637
3638 2009-10-13  Andreas Krebbel  <Andreas.Krebbel@de.ibm.com>
3639
3640         * config/s390/s390.c (s390_encode_section_info): Handle BLKmode
3641         properly.
3642
3643 2009-10-12  Alexandre Oliva  <aoliva@redhat.com>
3644
3645         PR debug/41343
3646         PR debug/41447
3647         PR debug/41264
3648         PR debug/41338
3649         * tree.def (DEBUG_EXPR_DECL): New.
3650         * rtl.def (DEBUG_EXPR): New.
3651         * gengtype.c (adjust_field_rtx_def): Handle it.
3652         * tree-ssa.c (propagate_var_def_into_debug_stmts): Rename to...
3653         (insert_debug_temp_for_var_def): ... this.  Drop support for
3654         moving.  Take iterator for def stmt; insert debug stmt before it.
3655         Scan early for use count and kind in debug stmts.
3656         (propagate_defs_into_debug_stmts): Rename to...
3657         (insert_debug_temps_for_defs): ... this.  Likewise.
3658         * tree.h (DEBUG_TEMP_UID): New.
3659         * tree.c (next_debug_decl_uid): New.
3660         (make_node_stat): Count debug decls separately.
3661         (copy_node_stat): Likewise.
3662         * cfgexpand.c (expand_debug_expr): Handle DEBUG_EXPR_DECL.
3663         * var-tracking.c (dv_is_decl_p): Recognize it.
3664         (VALUE_RECURSED_INTO): Apply to DEBUG_EXPRs too.
3665         (track_expr_p): Track expanded DEBUG_EXPR_DECLs.
3666         (vt_expand_loc_callback): Expand DEBUG_EXPRs.
3667         (emit_note_insn_var_location): Don't emit notes for DEBUG_EXPR_DECLs.
3668         * cselib.c (rtx_equal_for_cselib_p): Handle DEBUG_EXPR.
3669         (cselib_hash_rtx): Likewise.
3670         (cselib_expand_value_rtx_1): Use callback for DEBUG_EXPR.
3671         * tree-ssa-operands.c (get_expr_operands): Skip DEBUG_EXPR_DECLs in
3672         debug bind stmts.
3673         * emit-rtl.c (verify_rtx_sharing): Handle DEBUG_EXPR and VALUE.
3674         (copy_rtx_if_shared_1, reset_used_flags, set_used_flags): Likewise.
3675         * rtl.c (copy_rtx): Likewise.
3676         (rtx_equal_p_cb, rtx_equal_p): Handle DEBUG_EXPR.
3677         * print-rtl.c (print_rtx): Likewise.
3678         * sched-vis.c (print_value): Likewise.
3679         (print_insn): Handle DEBUG_EXPR_DECL.
3680         * tree-dump.c (dequeue_and_dump): Likewise.
3681         * tree-pretty-print.c (dump_decl_name, dump_generic_node): Likewise.
3682         * gimple-iterator (gsi_replace): Check for same lhs.
3683         (gsi_remove): Insert debug temps.
3684         * tree-ssa-loop-im.c (rewrite_reciprocal): Replace with same lhs.
3685         (move_computations_stmt): Drop explicit propagation into debug stmts.
3686         (rewrite_bittest): Likewise.  Use gsi_remove for propagation.
3687         * tree-ssa-reassoc.c (rewrite_expr_tree, linearize_expr): Likewise.
3688         * tree-ssa-sink.c (statement_sink_location): Likewise.
3689         * tree-ssa-forwprop (forward_propagate_addr_expr): Likewise.
3690         * tree-ssanames.c (release_ssa_name): Adjust for rename.
3691         * tree-flow.h: Likewise.
3692         * tree-ssa-dce.c (mark_stmt_if_obviously_necessary): Don't mark
3693         debug temps without values.
3694         (eliminate_unnecessary_stmts): Don't discard just-inserted
3695         debug stmts.
3696
3697 2009-10-12  Hans-Peter Nilsson  <hp@axis.com>
3698
3699         PR target/26515
3700         * config/cris/cris.md (andu): Check that operand 1 is one of the
3701         general registers.  Fix typo in head comment.
3702
3703 2009-10-12  Stefan Dösinger  <stefan@codeweavers.com>
3704
3705         * config/i386/i386.md (vswapmov): New.
3706         * config/i386/i386.c (ix86_handle_fndecl_attribute): New.
3707         (ix86_function_ms_hook_prologue): New.
3708         (ix86_expand_prologue): Handle ms_hook_prologue attribute.
3709         * configure.ac: Test for swap suffix support in as.
3710         * configure: Rebuild.
3711
3712 2009-10-12  Jakub Jelinek  <jakub@redhat.com>
3713
3714         PR target/41680
3715         * config/i386/i386.md (split after *testqi_ext_3_rex64): Only narrow
3716         paradoxical subregs to prevent partial register stalls if the inner
3717         mode is integer mode.
3718
3719 2009-10-12  Uros Bizjak  <ubizjak@gmail.com>
3720
3721         * config/i386/i386.md (*setcc_<mode>_2): Remove insn pattern.
3722
3723 2009-10-12  Dodji Seketeli  <dodji@redhat.com>
3724
3725         PR c++/41570
3726         * gcc/dwarf2out.c (template_parameter_pack_die,
3727         gen_formal_parameter_pack_die): Use add_name_and_src_coords_attributes.
3728
3729 2009-10-12  Alexandre Oliva  <aoliva@redhat.com>
3730
3731         PR debug/41616
3732         * tree-into-ssa.c (insert_phi_nodes_for): Build debug bind stmts
3733         on updates too.
3734         (maybe_register_def): Likewise.  Take stmt iterator.
3735         (rewrite_update_stmt): Take stmt iterator and pass it on.
3736         (rewrite_update_enter_block): Pass stmt iterator.
3737
3738 2009-10-11  Andrew Pinski  <andrew_pinski@playstation.sony.com>
3739
3740         * config/spu/spu.c (TARGET_BUILTIN_DECL): Define.
3741         (spu_builtin_decl): New function.
3742
3743 2009-10-12  Uros Bizjak  <ubizjak@gmail.com>
3744
3745         * config/i386/i386.md (SWIM): New mode iterator.
3746         (mov<mode>cc): Macroize expander from mov{qi,hi,si,di}cc patterns
3747         using SWIM mode iterator.
3748         (x86_mov<mode>cc_0_m1): Macroize insn from x86_mov{si,di}cc_0_m1
3749         patterns using SWI48 mode iterator.
3750         (*x86_mov<mode>cc_0_m1_se):  Macroize insn from
3751         *x86_mov{si,di}cc_0_m1_se patterns using SWI48 mode iterator.
3752         (*x86_mov<mode>cc_0_m1_neg): New insn pattern.
3753         (*mov<mode>cc_noc): Macroize insn from *mov{hi,si,di}cc_noc
3754         patterns using SWI248 mode iterator.
3755         * config/i386/i386.c (ix86_expand_int_movcc): Update the call to
3756         gen_x86_movdicc_0_m1_rex64 for renamed function
3757
3758 2009-10-11  Jose Ruiz  <ruiz@adacore.com>
3759             Eric Botcazou  <ebotcazou@adacore.com>
3760
3761         PR target/33743
3762         * config/sparc/sol2.h (MD_UNWIND_SUPPORT): Define.
3763         * config/sparc/sol2-unwind.h: New file.
3764
3765 2009-10-11  Olivier Hainque  <hainque@adacore.com>
3766             Eric Botcazou  <ebotcazou@adacore.com>
3767
3768         PR target/33743
3769         * config/i386/sol2.h (MD_UNWIND_SUPPORT): Define.
3770         * config/i386/sol2-unwind.h: New file.
3771
3772 2009-10-11  H.J. Lu  <hongjiu.lu@intel.com>
3773
3774         PR target/41665
3775         * config/i386/i386.md (addsi_1_zext): Get the proper second
3776         operand for lea.
3777
3778 2009-10-11  Richard Sandiford  <rdsandiford@googlemail.com>
3779
3780         * simplify-rtx.c (simplify_replace_rtx): Use rtx_equal_p for
3781         all OLD_RTXes, not just REGs.  Use copy_rtx to create the
3782         replacement value.
3783
3784 2009-10-11  Richard Guenther  <rguenther@suse.de>
3785
3786         * gimple.c (iterative_hash_type_name): Do not handle special
3787         anonymous names.
3788
3789 2009-10-11  Uros Bizjak  <ubizjak@gmail.com>
3790
3791         * config/i386/i386.md (*setcc_di_1): New insn_and_split pattern.
3792         (*setcc_si_1_and): Ditto.
3793         (*setcc_si_1_movzbl): Ditto.
3794         (*setcc_<mode>_2): Ditto.
3795         (*setcc_qi): Rename from *setcc_1.
3796         (*setcc_qi_slp): Rename from *setcc_2.
3797
3798         (*zero_extendqihi2_movzbw_and splitter): Use ix86_expand_clear.
3799         (*zero_extendqisi2_movzbw_and splitter): Ditto.
3800
3801         * config/i386/i386.c (ix86_expand_clear): Remove reload_completed from
3802         "if" condition, there is already assert with reload_completed present.
3803
3804 2009-10-11  Gerald Pfeifer  <gerald@pfeifer.com>
3805
3806         * plugin.c (try_init_one_plugin): Improve constness of variable err.
3807
3808 2009-10-10  Gerald Pfeifer  <gerald@pfeifer.com>
3809
3810         * doc/install.texi (Final install): Refer to
3811         http://gcc.gnu.org/bugs/ for bug reporting.
3812
3813 2009-10-10  Peter Bergner  <bergner@vnet.ibm.com>
3814
3815         * configure.ac: Add test for dci instruction.
3816         * configure: Regenerate.
3817         * config.in: Likewise.
3818         * config.gcc: Handle --with-cpu=476 and --with-cpu=476fp.
3819         * doc/invoke.texi: Add cpu_type 476 and 476fp.
3820         (-mmulhw): Add 476 to description.
3821         (-mdlmzb): Likewise.
3822         * config/rs6000/t-fprules (MULTILIB_MATCHES_FLOAT): Include -mcpu=476.
3823         * config/rs6000/rs6000.c (processor_costs): Add ppc476_cost.
3824         (processor_target_table): Add 476 and 476fp entries.
3825         (rs6000_override_options): Use ppc476_cost for PROCESSOR_PPC476.
3826         (rs6000_issue_rate): Add CPU_PPC476.
3827         * config/rs6000/rs6000.h (ASM_CPU_476_SPEC): Define.
3828         (ASM_CPU_SPEC): Pass %(asm_cpu_476) for -mcpu=476 and -mcpu=476fp.
3829         (processor_type): Add PROCESSOR_PPC476.
3830         (EXTRA_SPECS): Add asm_cpu_476 string.
3831         * config/rs6000/rs6000.md (define_attr "type"): Add isel attribute.
3832         (define_attr "cpu"): Add ppc476.
3833         Include 476.md.
3834         Update comments for 476.
3835         (isel_signed, isel_unsigned): Change to use "isel" type attribute.
3836         * config/rs6000/vxworks.h (CPP_SPEC): Handle 464 and 476.
3837         Update copyright year.
3838         * config/rs6000/476.md: New file.
3839         * config/rs6000/40x.md: Add description for "isel" attribute.
3840         Update copyright year.
3841         * config/rs6000/440.md: Likewise.
3842         * config/rs6000/603.md: Likewise.
3843         * config/rs6000/6xx.md: Likewise.
3844         * config/rs6000/7450.md: Likewise.
3845         * config/rs6000/7xx.md: Likewise.
3846         * config/rs6000/8540.md: Likewise.
3847         * config/rs6000/cell.md: Likewise.
3848         * config/rs6000/e300c2c3.md: Likewise.
3849         * config/rs6000/e500mc.md: Likewise.
3850         * config/rs6000/mpc.md: Likewise.
3851         * config/rs6000/power4.md: Likewise.
3852         * config/rs6000/power5.md: Likewise.
3853         * config/rs6000/power6.md: Likewise.
3854         * config/rs6000/power7.md: Likewise.
3855         * config/rs6000/rios1.md: Likewise.
3856         * config/rs6000/rios2.md: Likewise.
3857         * config/rs6000/rs64.md: Likewise.
3858
3859 2009-10-10  Richard Guenther  <rguenther@suse.de>
3860
3861         PR tree-optimization/41654
3862         * tree-ssa-ifcombine.c (ifcombine_ifandif): Properly canonicalize
3863         a cond expr before calling gimple_cond_set_condition_from_tree.
3864         (ifcombine_iforif): Likewise.
3865
3866 2009-10-09  Ian Lance Taylor  <iant@google.com>
3867
3868         * configure.ac: Use AC_SEARCH_LIBS to find dlopen.
3869         * configure: Rebuild.
3870
3871 2009-10-09  Neil Vachharajani <nvachhar@google.com>
3872
3873         * doc/cpp.texi (Other Directives): Do not list #ident and #sccs as
3874         deprecated.
3875
3876 2009-10-09  Richard Guenther  <rguenther@suse.de>
3877
3878         PR lto/41638
3879         * target-def.h (TARGET_BUILTIN_DECL): Define.
3880         (TARGET_INITIALIZER): Add TARGET_BUILTIN_DECL.
3881         * target.h (struct gcc_target): Add builtin_decl target hook.
3882         * doc/tm.texi (TARGET_BUILTIN_DECL): Document.
3883         * lto-streamer-in.c (lto_get_builtin_tree): Fix handling of
3884         target builtins.
3885         * lto-streamer-out.c (lto_output_tree_pointers): Use sorry,
3886         not gcc_unreachable.
3887         (lto_output_builtin_tree): Sorry if the target does not support
3888         streaming target builtins.
3889         * config/rs6000/rs6000.c (TARGET_BUILTIN_DECL): Define.
3890         (rs6000_builtin_decl): New function.
3891         * config/i386/i386.c (TARGET_BUILTIN_DECL): Define.
3892         (ix86_builtin_decl): New function.
3893
3894 2009-10-09  Jakub Jelinek  <jakub@redhat.com>
3895
3896         PR preprocessor/41445
3897         * c-ppoutput.c (do_line_change): New function.
3898         (cb_line_change): Use it.
3899         (scan_translation_unit): Call do_line_change if
3900         avoid_paste or PREV_WHITE and token location is on a different line
3901         than print.src_line.
3902
3903         PR debug/40521
3904         * dwarf2out.c (dwarf2out_init): Test whether
3905         HAVE_GAS_CFI_SECTIONS_DIRECTIVE is non-zero instead of checking
3906         it is defined.
3907
3908         PR rtl-optimization/41646
3909         * calls.c (expand_call): For BLKmode types returned in registers
3910         avoid likely spilled hard regs in copy_blkmode_from_reg generated
3911         insns.
3912
3913 2009-10-09  Richard Guenther  <rguenther@suse.de>
3914
3915         PR tree-optimization/41634
3916         * tree-ssa-dom.c (remove_local_expressions_from_table): Assert
3917         we remove the correct elements.
3918         (optimize_stmt): Make sure to update stmt operands before
3919         optimizing redundancies.
3920
3921 2009-10-09  Andreas Krebbel  <Andreas.Krebbel@de.ibm.com>
3922
3923         * config/s390/s390.md ("prefetch"): Remove stcmh for prefetching.
3924
3925 2009-10-09  Richard Guenther  <rguenther@suse.de>
3926
3927         PR driver/41637
3928         * lto-wrapper.c (ltrans_output_file, flto_out, args_name): New
3929         globals.
3930         (lto_wrapper_exit): New function.
3931         (fatal): Use it.
3932         (fatal_perror): Likewise.
3933         (fork_execute): Use global args_name, do not free it.
3934         (run_gcc): Use global ltrans_output_file, flto_out, do not free them.
3935         * lto-streamer.h: Remove duplicate prototypes.
3936
3937 2009-10-09  Richard Guenther  <rguenther@suse.de>
3938
3939         * cgraph.c (cgraph_create_edge): Check for NULL call_stmt
3940         before calling stmt_can_throw_external.
3941
3942 2009-10-09  Eric Botcazou  <ebotcazou@adacore.com>
3943
3944         PR tree-optimization/40071
3945         * tree-vect-data-refs.c (vect_create_data_ref_ptr): Build a ref-all
3946         pointer if the original data reference doesn't conflict with the
3947         created vector data reference.  Fix long line.
3948
3949 2009-10-09  Uros Bizjak  <ubizjak@gmail.com>
3950
3951         * config/i386/i386.md (any_div): New code iterator.
3952         (u): Handle div and udiv.
3953         (sgnprefix): Ditto.
3954         (<u>divqi3): Macroize insn from {,u}divqi3  using any_div
3955         code iterator.
3956         (lfloor<MODEF:mode><SWI48:mode>2): Macroize insn from
3957         lfloor<mode>{si,di}2 patterns using SWI48 mode iterator.
3958         (lceil<MODEF:mode><SWI48:mode>2): Macroize insn from
3959         lceil<mode>{si,di}2 patterns using SWI48 mode iterator.
3960
3961 2009-10-08  Joseph Myers  <joseph@codesourcery.com>
3962
3963         * gcc.c (main): Remove trailing "." from diagnostics.
3964
3965 2009-10-08  Cary Coutant  <ccoutant@google.com>
3966
3967         Add support for debugging with ICF (Identical Code Folding).
3968         * calls.c (debug.h): New #include.
3969         (emit_call_1): Call virtual_call_token debug hook.
3970         * common.opt (-fenable-icf-debug): New option.
3971         * dwarf2out.c (dwarf2_debug_hooks): Add entries for new hooks (two
3972         locations in the source).
3973         (poc_label_num): New variable.
3974         (dcall_entry, vcall_entry): New typedefs.
3975         (dcall_table, vcall_table): New variables.
3976         (struct vcall_insn): New type.
3977         (vcall_insn_table): New variable.
3978         (DEBUG_DCALL_SECTION, DEBUG_VCALL_SECTION): New macros.
3979         (size_of_dcall_table): New function.
3980         (output_dcall_table): New function.
3981         (size_of_vcall_table): New function.
3982         (output_vcall_table): New function.
3983         (dwarf2out_direct_call): New function.
3984         (vcall_insn_table_hash): New function.
3985         (vcall_insn_table_eq): New function.
3986         (dwarf2out_virtual_call_token): New function.
3987         (dwarf2out_virtual_call): New function.
3988         (dwarf2out_init): Allocate new tables and sections.
3989         (prune_unused_types): Mark DIEs referenced from direct call table.
3990         (dwarf2out_finish): Output direct and virtual call tables.
3991         * final.c (final_scan_insn): Call direct_call and virtual_call
3992         debug hooks.
3993         * debug.h (struct gcc_debug_hooks): Add direct_call,
3994         virtual_call_token, virtual_call hooks.
3995         (debug_nothing_uid): New function.
3996         * debug.c (do_nothing_debug_hooks): Add dummy entries for new hooks.
3997         (debug_nothing_uid): New function.
3998         * dbxout.c (dbx_debug_hooks): Add dummy entries for new hooks.
3999         (xcoff_debug_hooks): Likewise.
4000         * sdbout.c (sdb_debug_hooks): Likewise.
4001         * vmsdbgout.c (vmsdbg_debug_hooks): Likewise.
4002         * doc/invoke.texi (-fenable-icf-debug): New option.
4003
4004 2009-10-08  Alexandre Oliva  <aoliva@redhat.com>
4005
4006         PR debug/41353
4007         * regmove.c (regmove_backward_pass): Replace src with dst in the
4008         debug insn, and check for dst before rather than after.
4009
4010 2009-10-08  Janis Johnson <janis187@us.ibm.com>
4011
4012         * config/rs6000/rs6000.c (rs6000_delegitimize_address): Remove.
4013         (TARGET_DELEGITIMIZE_ADDRESS): Likewise.
4014
4015 2009-10-08  Jan Hubicka  <jh@suse.cz>
4016
4017         PR middle-end/41626
4018         * cgraphbuild.c (record_reference): When parameter DATA is NULL,
4019         do not mark cgraph nodes as needed.
4020         (record_references_in_initializer): Add new only_vars parameter.
4021         * cgraph.h (record_references_in_initializer): New parameter.
4022         * varasm.c (assemble_variable): Update call.
4023         * varpool.c (varpool_analyze_pending_decls): Always look for
4024         referenced vars.
4025
4026 2009-10-08  Anatoly Sokolov  <aesok@post.ru>
4027
4028         * config/avr/avr.c (last_insn_address) Remove variable.
4029         (expand_prologue): Don't initialise last_insn_address variable.
4030         (final_prescan_insn): Don't output insn size.
4031         * config/avr/avr.opt (msize): Remove switch.
4032         * doc/invoke.texi (AVR Options): Remove documentation of -msize
4033         switch.
4034
4035 2009-10-08  Adam Nemet  <anemet@caviumnetworks.com>
4036
4037         * combine.c (label_tick_ebb_start): Fix comment.
4038         (combine_instructions): Set label_tick and label_tick_ebb_start before
4039         calling setup_incoming_promotions.  Start them from 1.  Increment
4040         label_tick instead of deriving it from the BB index.  Rather than
4041         comparing ticks use the block from the previous iteration to decide
4042         whether to start a new EBB.  Remove empty lines before function.
4043
4044 2009-10-08  Michael Matz  <matz@suse.de>
4045
4046         PR middle-end/41573
4047         * builtins.c (fold_builtin_isascii): Use fold_build2.
4048         (fold_builtin_isdigit): Ditto.
4049         * except.c (duplicate_eh_regions_1): Tolerate NULL labels.
4050         * tree-cfg.c (struct rus_data, remove_useless_stmts_warn_notreached,
4051         remove_useless_stmts_cond, remove_useless_stmts_tf,
4052         remove_useless_stmts_tc, remove_useless_stmts_bind,
4053         remove_useless_stmts_goto, remove_useless_stmts_label,
4054         remove_useless_stmts_1, remove_useless_stmts,
4055         pass_remove_useless_stmts): Remove.
4056         * tree-pass.h (pass_remove_useless_stmts): Don't declare.
4057         * passes.c (init_optimization_passes): Don't add
4058         pass_remove_useless_stmts.
4059         * tree-eh.c (lower_eh_constructs_2): Handle empty cleanups.
4060         * tree.c (free_lang_data_in_decl): Don't clear DECL_INITIAL of
4061         static constants.
4062         * lto-symtab.c (lto_symtab_register_decl): Accepts DECL_INITIAL
4063         for static constants.
4064         * lto-streamer-out.c (output_gimple_stmt): Handle GIMPLE_NOP.
4065         * lto-streamer-in.c (input_gimple_stmt): Handle GIMPLE_NOP.
4066
4067 2009-10-08  Richard Guenther  <rguenther@suse.de>
4068
4069         * gimple.c (free_gimple_type_tables): New function.
4070         * gimple.h (free_gimple_type_tables): Declare.
4071
4072 2009-10-07  Mark Heffernan  <meheff@google.com>
4073
4074         * ipa-prop.c (ipa_print_node_params) Only print
4075         names of named arguments.
4076
4077 2009-10-08  Rafael Avila de Espindola  <espindola@google.com>
4078
4079         * gcc.c (LINK_COMMAND_SPEC): Pass libc with -pass-through if it is
4080         being statically linked.
4081
4082 2009-10-08  Rainer Orth  <ro@CeBiTec.Uni-Bielefeld.DE>
4083
4084         * collect2.c (add_lto_object): Only define if OBJECT_FORMAT_NONE.
4085
4086 2009-10-08  Jan Hubicka  <jh@suse.cz>
4087
4088         PR bootstrap/41620
4089         * ipa.c (cgraph_externally_visible_p,
4090         function_and_variable_visibility,
4091         whole_program_function_and_variable_visibility): Skip non-finalized
4092         nodes.
4093
4094 2009-10-08  Nick Clifton  <nickc@redhat.com>
4095
4096         * config/mn10300/mn10300.h (CONSTANT_ADDRESS_P): Do not allow
4097         CONST_DOUBLEs.
4098
4099 2009-10-08  Andreas Tobler  <a.tobler@schweiz.org>
4100
4101         PR bootstrap/37739
4102         * config.host: Use config/x-cflags-O1 for powerpc FreeBSD.
4103
4104 2009-10-07  Joseph Myers  <joseph@codesourcery.com>
4105
4106         PR c/41182
4107         * c-common.c (c_fully_fold_internal): Strip nops from the result
4108         of recursive calls to c_fully_fold_internal.
4109         (c_wrap_maybe_const): New.
4110         (c_save_expr): Use c_wrap_maybe_const.
4111         * c-common.h (c_wrap_maybe_const): Declare.
4112         * c-typeck.c (build_conditional_expr, c_finish_stmt_expr,
4113         build_binary_op): Use c_wrap_maybe_const.
4114
4115 2009-10-07  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
4116
4117         * real.c: Fix comment to reflect actual exponent size.
4118
4119 2009-10-08  Ben Elliston  <bje@au.ibm.com>
4120
4121         * config/rs6000/a2.md: Add FSF comment header.
4122
4123 2009-10-07  Uros Bizjak  <ubizjak@gmail.com>
4124
4125         * config/i386/i386.md (any_extend): New code iterator.
4126         (u, s): New code attributes.
4127         (sgnprefix): Ditto.
4128         (DWIH): Rewrite as code iterator for SI and DI modes.
4129         (DWI): Rewrite as mode attribute.
4130         (dwi): New mode attribute.
4131         (di): Depend on SI mode and DI mode.
4132         (doubleint_general_operand): Remove mode attribute.
4133
4134         (*lea_1): Macroize insn from *lea_1_rex64 and *lea_1 patterns using
4135         DWIH mode iterator.
4136
4137         (*add<mode>3_doubleword): Use DWIH as the base mode iterator.
4138         (*sub<mode>3_doubleword): Ditto.
4139
4140         (mul<mode>3): Macroize expander from mul{hi,si,di}3 patterns
4141         using SWIM248 mode iterator.
4142         (*mul<mode>3_1): Macroize insn from mul{si,di}3_1 patterns
4143         using SWI48 mode iterator.
4144         (<u>mul<mode><dwi>3): Macroize expander from {,u}mul{sidi,diti}3
4145         patterns using DWIH mode iterator and any_extend code iterator.
4146         (<u>mulqihi3): Macroize expander from {,u}mulqihi3 patterns
4147         using any_extend code iterator.
4148         (*<u>mul<mode><dwi>3_1): Macroize insn from {,u}mul{sidi,diti}3_1
4149         patterns using DWIH mode iterator and any_extend code iterator.
4150         (*<u>mulqihi3_1): Macroize insn from {,u}mulqihi3_1 patterns
4151         using any_extend code iterator.
4152         (<s>mul<mode>3_highpart): Macroize expander from
4153         {s,u}mul{si,di}3_highpart patterns using DWIH mode iterator
4154         and any_extend code iterator.
4155         (*<s>muldi3_highpart_1): Macroize insn from
4156         *{s,u}muldi3_highpart_rex64 patterns using any_extend code iterator.
4157         (*<s>mulsi3_highpart_1): Macroize insn from *{s,u}mulsi3_highpart_1
4158         patterns using any_extend code iterator.
4159         (*<s>mulsi3_highpart_zext): Macroize insn from
4160         *{s,u}mulsi3_highpart_zext patterns using any_extend code iterator.
4161
4162 2009-10-07  Jakub Jelinek  <jakub@redhat.com>
4163
4164         * dwarf2out.c (tree_add_const_value_attribute_for_decl): Don't add
4165         DW_AT_const_value if VAR_DIE already has DW_AT_abstract_origin
4166         refering to a DIE with DW_AT_const_value.
4167
4168 2009-10-07  Vladimir Makarov  <vmakarov@redhat.com>
4169
4170         PR middle-end/22072
4171         * ira-lives.c (check_and_make_def_conflict): Process all operands.
4172
4173 2009-10-06  Jan Hubicka  <jh@suse.cz>
4174
4175         * cgraph.c (cgraph_node_can_be_local): Handle externally visible nodes
4176         correctly.
4177
4178 2009-10-06  Uros Bizjak  <ubizjak@gmail.com>
4179
4180         * config/i386/i386.md (*lea_1_rex64, *lea_1, *lea_1_zext,
4181         *lea_2_rex64): Move before *add<mode>_1 pattern.
4182
4183 2009-10-07  Jan Hubicka  <jh@suse.cz>
4184
4185         * collect2.c (main): Add -fno-whole-program.
4186         * gcc.c (set_collect_gcc_options): Do not remove whole program here.
4187
4188 2009-10-07  Jan Hubicka  <jh@suse.cz>
4189
4190         * lto-symtab.c (lto_cgraph_replace_node): Assert that inline clones
4191         has no address taken.
4192         * cgraph.c (cgraph_mark_needed_node): Assert that inline clones are
4193         never needed.
4194         (cgraph_clone_node): Clear externally_visible flag for clones.
4195         * cgraph.h (cgraph_only_called_directly_p,
4196         cgraph_can_remove_if_no_direct_calls_p): New predicates.
4197         * tree-pass.h (pass_ipa_whole_program_visibility): Declare.
4198         * ipa-cp.c (ipcp_cloning_candidate_p): Use new predicate.
4199         (ipcp_initialize_node_lattices, ipcp_estimate_growth,
4200         ipcp_insert_stage): Likwise.
4201         * cgraphunit.c (cgraph_decide_is_function_needed): Do not compute
4202         externally_visible flag.
4203         (verify_cgraph_node): Verify that inline clones look right.
4204         (process_function_and_variable_attributes): Do not set
4205         externally_visible flags.
4206         (ipa_passes): Avoid executing small_ipa_passes at LTO stage; they've
4207         been already run.
4208         * lto-cgraph.c (lto_output_node): Assert that inline clones are not
4209         boundaries.
4210         * ipa-inline.c (cgraph_clone_inlined_nodes): Use new predicates;
4211         clear externally_visible when turning into inline clones
4212         (cgraph_mark_inline_edge): Use new predicates.
4213         (cgraph_estimate_growth): Likewise.
4214         (cgraph_decide_inlining): Likewise.
4215         * ipa.c (cgraph_postorder): Likewise.
4216         (cgraph_remove_unreachable_nodes): Likewise; sanity check
4217         that inline clones are not needed.
4218         (cgraph_externally_visible_p): New predicate.
4219         (function_and_variable_visibility): Add whole_program parameter;
4220         always set externally_visible flag; handle COMDAT function
4221         privatization.
4222         (local_function_and_variable_visibility): New function.
4223         (gate_whole_program_function_and_variable_visibility): New function.
4224         (whole_program_function_and_variable_visibility): New function.
4225         (pass_ipa_whole_program_visibility): New function.
4226         * passes.c  (init_optimization_passes): Add whole program visibility
4227         pass.
4228         (do_per_function_toporder, function_called_by_processed_nodes_p): Do
4229         not care about needed/reachable flags.
4230         * varpool.c: Include flags.h
4231         (decide_is_variable_needed): When doing LTO assume whole-program mode.
4232         (varpool_finalize_decl): When we are in LTO read-back, all variables
4233         are analyzed.
4234         (varpool_analyze_pending_decls): Skip analyzis of analyzed vars.
4235
4236 2009-10-07  Andreas Krebbel  <Andreas.Krebbel@de.ibm.com>
4237
4238         * config/s390/tpf.h (TARGET_DEFAULT): Remove MASK_HARD_FLOAT and
4239         add MASK_HARD_DFP.
4240
4241 2009-10-07  Andreas Krebbel  <Andreas.Krebbel@de.ibm.com>
4242
4243         * config.gcc: Don't include the makefile fragments intended for
4244         libgcc.
4245         * config/s390/fixdfdi.h: File removed.
4246         * config/s390/libgcc-glibc.ver: File removed.
4247         * config/s390/s390.h: Remove the fixdfdi.h hack.
4248         * config/s390/t-crtstuff: File moved to libgcc dir.
4249         * config/s390/t-linux: Likewise.
4250         * config/s390/t-tpf: libgcc specific parts removed.
4251         * config/s390/t-linux64: Likewise.
4252
4253 2009-10-06  Jerry Quinn  <jlquinn@optonline.net>
4254
4255         * Makefile.in (lto-wrapper): Use COMPILER and ALL_COMPILERFLAGS.
4256         (lto-compress.o): Likewise.
4257
4258 2009-10-07  Danny Smith  <dannysmith@users.sourceforge.net>
4259
4260         PR target/41512
4261         * config/i386/winnt.c (i386_pe_determine_dllexport_p): Don't propagate
4262         dllexport to class members here.
4263         (i386_pe_determine_dllimport_p): Only check static class data for
4264         definition.
4265         (i386_pe_encode_section_info): Don't recheck DECL_DLLIMPORT_P.
4266         * config/i386/winnt-cxx.c (i386_pe_type_dllimport_p): Only check
4267         functions for vague linkage.
4268         (i386_pe_type_dllexport_p): Fix formatting.
4269         (maybe_add_dllexport) New function.
4270         (i386_pe_adjust_class_at_definition): Use it to propagate dllexport
4271         to class members.
4272
4273 2009-10-07  Ben Elliston  <bje@au.ibm.com>
4274
4275         * config/rs6000/a2.md: Remove duplicated lines.
4276
4277 2009-10-07  Ben Elliston  <bje@au.ibm.com>
4278
4279         * config.gcc (powerpc*-*-*): Handle a2.
4280         * config/rs6000/rs6000.md (cpu): Add ppca2.  Include "a2.md".
4281         * config/rs6000/a2.md: New file.
4282         * config/rs6000/rs6000.opt (mno-update): New.
4283         (mupdate): Return to using a mask, not a var.
4284         * config/rs6000/rs6000.h (ASM_CPU_SPEC): Add support for a2.
4285         (enum processor_type): Add PROCESSOR_PPCA2.
4286         * config/rs6000/rs6000.c (ppca2_cost): New costs.
4287         (rs6000_override_options): Add "a2" to processor_target_table.
4288         Update rs6000_always_hint logic.  Correctly set rs6000_cost for a2.
4289         * doc/invoke.texi (RS/6000 and PowerPC Options): Document -mcpu=a2.
4290
4291 2009-10-06  Uros Bizjak  <ubizjak@gmail.com>
4292
4293         * config/i386/i386.md (float<SSEMODEI24:mode><X87MODEF:mode>2):
4294         Use explicit gen_truncxfsf2 and gen_truncxfdf2 references to avoid
4295         reference to nonexistent gen_truncxfxf2 function.
4296
4297 2009-10-06  Uros Bizjak  <ubizjak@gmail.com>
4298
4299         * config/i386/i386.md (SWI48, SDWIM, DWI): New mode iterators.
4300         (DWIH, g, di, doubleint_general_operand): New mode attributes.
4301         (general_operand): Handle TI mode.
4302         (add<mode>3): Macroize expander from add{qi,hi,si,di,ti}3 patterns
4303         using SDWIM mode iterator.
4304         (*add<mode>3_doubleword): New insn_and_split pattern.  Macroize
4305         pattern from *add{di,ti}3_1 patterns and corresponding splitters
4306         using DWI mode iterator.
4307         (add<mode>3_carry): Macroize insn from add{qi,hi,si,di}3_carry
4308         patterns using SWI mode iterator.
4309         (*add<mode>3_cc): Macroize insn from add{si,di}3_cc patterns
4310         using SWI48 mode iterator.
4311         (*add<mode>_1): Ditto from add{si,di}_1 patterns.
4312         (*add<mode>_2): Ditto from add{si,di}_2 patterns.
4313         (*add<mode>_3): Ditto from add{si,di}_3 patterns.
4314         (*add<mode>_5): Ditto from add{si,di}_5 patterns.
4315         (sub<mode>3): Macroize expander from sub{qi,hi,si,di,ti}3 patterns
4316         using SDWIM mode iterator.
4317         (*sub<mode>3_doubleword): New insn_and_split pattern.  Macroize
4318         pattern from *sub{di,ti}3_1 patterns and corresponding splitters
4319         using DWI mode iterator.
4320         (sub<mode>3_carry): Macroize insn from sub{qi,hi,si,di}3_carry
4321         patterns using SWI mode iterator.
4322         (*sub<mode>_1): Ditto from from sub{qi,hi,si,di}_1 patterns.
4323         (*sub<mode>_2): Ditto from sub{qi,hi,si,di}_2 patterns.
4324         (*sub<mode>_3): Ditto from sub{qi,hi,si,di}_3 patterns.
4325         (<plusminus_insn>xf3): Macroize expander from addxf3 and subxf3
4326         patterns using plusminus code iterator.
4327         (<plusminus_insn><mode>3): Macroize expander from add<mode>3 and
4328         sub<mode>3 patterns using plusminus code iterator.
4329         * config/i386/i386.c (override_options): Update the call to
4330         gen_subdi_carry_rex64 for renamed function.
4331         (ix86_expand_int_addcc): Update calls to gen_subdi3_carry_rex64
4332         and gen_adddi3_carry_rex64 for renamed functions.  Use indirect
4333         calls to instruction expanders.
4334
4335 2009-10-06  Martin Jambor  <mjambor@suse.cz>
4336
4337         PR bootstrap/41395
4338         * opts.c (decode_options): Run IPA-SRA at -O2.
4339
4340 2009-10-06  Richard Guenther  <rguenther@suse.de>
4341
4342         * lto-symtab.c (lto_symtab_entry_hash): Hash strings, not pointers.
4343
4344 2009-10-06  Tobias Burnus  <burnus@net-b.de>
4345
4346         PR lto/41591
4347         * doc/invoke.texi (-flto,-fwhole-program): Make clear that the
4348         -flto and -fwhole-program flags can be combined.
4349
4350 2009-10-06  Ryan Mansfield  <rmansfield@qnx.com>
4351
4352         PR driver/41217
4353         * gcc.c (process_command): Check that -o argument was specified.
4354
4355 2009-10-06  Jerry Quinn  <jlquinn@optonline.net>
4356
4357         * gimple.c (gimple_type_hash): Use CONST_CAST_TREE to fix compilation.
4358
4359 2009-10-05  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
4360
4361         * c.opt (Wjump-misses-init): Fix typo to enable for ObjC.
4362         * doc/invoke.texi (Warning Options): Annotate allowed languages
4363         for -Wunsuffixed-float-constants.
4364
4365 2009-10-05  Jakub Jelinek  <jakub@redhat.com>
4366
4367         * dwarf2out.c (modified_type_die): Don't add DW_AT_name to
4368         DW_TAG_{const,volatile}_type if its DW_AT_type already has the
4369         same name and isn't the main variant.
4370
4371         PR debug/41558
4372         * dwarf2out.c (loc_by_reference): Removed.
4373         (dw_loc_list_1): New function.
4374         (dw_loc_list): Remove toplev argument, add want_address argument.
4375         Don't look at decl_by_reference_p at all.  Use dw_loc_list_1.
4376         (loc_list_from_tree) <case VAR_DECL>: Pass want_address rather than
4377         want_address == 2 to dw_loc_list.  For successful dw_loc_list
4378         set have_address to 1 only if want_address is not 0.
4379
4380 2009-10-05  Richard Sandiford  <rdsandiford@googlemail.com>
4381
4382         * config/mips/mips-protos.h (mips_trampoline_code_size): Declare.
4383         * config/mips/mips.h (TRAMPOLINE_SIZE): Redefine as the size of
4384         a code block followed by two pointers.
4385         (TRAMPOLINE_ALIGNMENT): Define to 64 for 32-bit targets too.
4386         * config/mips/mips.c (MIPS_LOAD_PTR): New macro.
4387         (MIPS_MOVE): Likewise.
4388         (MIPS_LUI): Likewise.
4389         (MIPS_JR): Likewise.
4390         (MIPS_BAL): Likewise.
4391         (MIPS_NOP): Likewise.
4392         (mips_asm_trampoline_template): Delete.
4393         (mips_trampoline_code_size): New function.
4394         (mips_trampoline_init): Add shorter sequences for all cases
4395         except Pmode == DImoe && !TARGET_USE_PIC_FN_ADDR_REG.
4396         Calculate the opcodes directly, rather than copying from a template.
4397         Only flush the code part of the trampoline.
4398         (TARGET_ASM_TRAMPOLINE_TEMPLATE): Delete.
4399
4400 2009-10-05  Richard Sandiford  <rdsandiford@googlemail.com>
4401
4402         * config/mips/mips.h (DWARF_FRAME_RETURN_COLUMN): Replace
4403         GP_REG_FIRST + 31 with RETURN_ADDR_REGNUM.
4404         (INCOMING_RETURN_ADDR_RTX): Likewise.
4405         (FUNCTION_PROFILER): Likewise.  Replace GP_REG_FIRST + 1
4406         with AT_REGNUM.
4407         * config/mips/sdemtk.h (FUNCTION_PROFILER): Replace GP_REG_FIRST + 31
4408         with RETURN_ADDR_REGNUM.
4409         (MIPS_SAVE_REG_FOR_PROFILING_P): Likewise.
4410         * config/mips/mips.c (mips16_build_call_stub): Replace
4411         GP_REG_FIRST + 31 with RETURN_ADDR_REGNUM, GP_REG_FIRST + 1
4412         with AT_REGNUM and 31 with RETURN_ADDR_REGNUM.
4413         (mips_print_operand_punctuation): Likewise.
4414         (mips_frame_set): Likewise.
4415         (mips16e_output_save_restore): Likewise.
4416         (mips_cfun_might_clobber_call_saved_reg_p): Likewise.
4417         (mips_save_reg_p): Likewise.
4418         (mips_return_addr): Likewise.
4419         (mips_set_return_address): Likewise.
4420         (mips_direct_save_slot_move_p): Likewise.
4421         (mips_output_function_prologue): Likewise.
4422         (mips_restore_reg): Likewise.
4423         (mips_expand_epilogue): Likewise.
4424         (mips_epilogue_uses): Likewise.
4425         * config/mips/mips.md (RETURN_ADD_REGNUM): Define.
4426         (*mov<mode>_ra): Use it instead of a hard-coded 31.
4427         (clear_hazard_<mode>): Likewise.
4428         (call_internal): Likewise.
4429         (call_internal_direct): Likewise.
4430         (call_direct_split): Likewise.
4431         (call_value_internal): Likewise.
4432         (call_value_split): Likewise.
4433         (call_value_internal_direct): Likewise.
4434         (call_value_direct_split): Likewise.
4435         (call_value_multiple_internal): Likewise.
4436         (call_value_multiple_split): Likewise.
4437
4438 2009-10-05  Eric Botcazou  <ebotcazou@adacore.com>
4439             Jakub Jelinek  <jakub@redhat.com>
4440
4441         PR rtl-optimization/41511
4442         * combine.c (record_value_for_reg): Pass explicit values as argument
4443         to get_last_value_validate.
4444         (get_last_value_validate): Document INSN parameter.
4445         For non-readonly MEMs, assume they might have been modified if INSN
4446         was in another basic block.
4447         (get_last_value): Minor reformatting.
4448
4449 2009-10-05  Andrew Pinski  <andrew_pinski@playstation.sony.com>
4450
4451         PR tree-opt/40992
4452         * final.c (asm_str_count): Split out from asm_insn_count.
4453         * rtl.h (asm_str_count): New prototype.
4454         * tree-inline (estimate_num_insns) <case GIMPLE_ASM>: Call
4455         asm_str_count.
4456
4457 2009-10-05  Sriraman Tallam  <tmsriram@google.com>
4458
4459         * doc/plugins.texi: Change plugin_pass to register_pass_info.
4460
4461 2009-10-05  Basile Starynkevitch  <basile@starynkevitch.net>
4462             Rafael Espindola  <espindola@google.com>
4463
4464         * gengtype.c (write_types): Moved call to write_func_for_structure
4465         into seperate loops.
4466
4467 2009-10-05  Richard Guenther  <rguenther@suse.de>
4468
4469         PR lto/41281
4470         * lto-cgraph.c (output_cgraph): Output toplevel asms.
4471         (input_cgraph_1): Input toplevel asms.
4472
4473 2009-10-05  Richard Guenther  <rguenther@suse.de>
4474
4475         PR lto/40902
4476         * lto-symtab.c (lto_compatible_attributes_p): Remove.
4477         (external_aggregate_decl_p): Likewise.
4478         (lto_symtab_compatible): Re-structure.  Remove dead code.
4479         For variables ignore toplevel qualifiers when comparing types.
4480         Issue warnings, not errors for mismatched user-alignment.
4481
4482 2009-10-05  Richard Guenther  <rguenther@suse.de>
4483
4484         PR lto/41552
4485         PR lto/41487
4486         * lto-symtab.c (struct lto_symtab_base_def): Remove.
4487         (struct lto_symtab_identifier_def): Likewise.
4488         (struct lto_symtab_decl_def): Likewise.
4489         (struct lto_symtab_entry_def): New.
4490         (lto_symtab_identifier_t): Rename to ...
4491         (lto_symtab_entry_t): ... this.
4492         (lto_symtab_decls): Remove.
4493         (lto_symtab_base_hash): Rename to ...
4494         (lto_symtab_entry_hash): ... this.
4495         (lto_symtab_base_eq): Rename to ...
4496         (lto_symtab_entry_eq): ... this.
4497         (lto_symtab_base_marked_p): Rename to ...
4498         (lto_symtab_entry_marked_p): ... this.
4499         (lto_symtab_identifier_marked_p): Remove.
4500         (lto_symtab_decl_marked_p): Likewise.
4501         (lto_symtab_maybe_init_hash_tables): Rename to ...
4502         (lto_symtab_maybe_init_hash_table): ... this.
4503         (lto_symtab_set_resolution_and_file_data): Remove.
4504         (lto_symtab_register_decl): New function.
4505         (lto_symtab_get_identifier): Remove.
4506         (lto_symtab_get): New function.
4507         (lto_symtab_get_resolution): Adjust.
4508         (lto_symtab_get_identifier_decl): Remove.
4509         (lto_symtab_set_identifier_decl): Likewise.
4510         (lto_symtab_merge_decl): Rename to ...
4511         (lto_symtab_merge): ... this.  Rewrite.
4512         (lto_symtab_merge_var): Remove.
4513         (lto_symtab_merge_fn): Likewise.
4514         (lto_symtab_prevailing_decl): Adjust.
4515         (lto_cgraph_replace_node): New function.
4516         (lto_symtab_merge_decls_2): Likewise.
4517         (lto_symtab_merge_decls_1): Likewise.
4518         (lto_symtab_fixup_var_decls): Likewise.
4519         (lto_symtab_resolve_symbols): Likewise.
4520         (lto_symtab_merge_decls): Likewise.
4521         (lto_symtab_prevailing_decl): Adjust.
4522         (lto_symtab_get_symtab_def): Remove.
4523         (lto_symtab_get_file_data): Likewise.
4524         (lto_symtab_clear_resolution): Adjust.
4525         (lto_symtab_clear_resolution): Likewise.
4526         * lto-cgraph.c (input_edge): Do not merge cgraph nodes here.
4527         (input_cgraph_1): Likewise.
4528         * lto-streamer-in.c (get_resolution): Do not provide fake
4529         symbol resolutions here.
4530         (deferred_global_decls): Remove.
4531         (lto_register_deferred_decls_in_symtab): Likewise.
4532         (lto_register_var_decl_in_symtab): Change signature, register
4533         variable via lto_symtab_register_decl.
4534         (lto_register_function_decl_in_symtab): Likewise.
4535         (lto_read_tree): Adjust.
4536         * lto-streamer.h (lto_register_deferred_decls_in_symtab): Remove.
4537         (lto_symtab_merge_var): Likewise.
4538         (lto_symtab_merge_fn): Likewise.
4539         (lto_symtab_register_decl): Declare.
4540         (lto_symtab_merge_decls): Likewise.
4541
4542 2009-10-05  Richard Guenther  <rguenther@suse.de>
4543
4544         PR tree-optimization/23821
4545         * tree-vrp.c (vrp_finalize): Do not perform copy propagation.
4546         * tree-ssa-dom.c (cprop_operand): Do not propagate copies into
4547         simple IV increments.
4548
4549 2009-10-05  Ramana Radhakrishnan  <ramana.radhakrishnan@arm.com>
4550
4551         * config/arm/arm.c (arm_override_options): Really initialize
4552         flag_dwarf2_cfi_asm to 0.
4553
4554 2009-10-05  Doug Kwan  <dougkwan@google.com>
4555
4556         PR rtl-optimization/41574
4557         * combine.c (distribute_and_simplify_rtx): Quit if RTX mode is
4558         floating point and we are not doing unsafe math optimizations.
4559
4560 2009-10-03  Simon Baldwin  <simonb@google.com>
4561             Cary Coutant  <ccoutant@google.com>
4562             Rafael Espindola  <espindola@google.com>
4563             Richard Guenther  <rguenther@suse.de>
4564             Jan Hubicka  <jh@suse.cz>
4565             Doug Kwan <dougkwan@google.com>
4566             H.J. Lu  <hongjiu.lu@intel.com>
4567             Bill Maddox  <maddox@google.com>
4568             Ryan Mansfield  <rmansfield@qnx.com>
4569             Diego Novillo  <dnovillo@google.com>
4570             Ollie Wild  <aaw@google.com>
4571             Kenneth Zadeck <zadeck@naturalbridge.com>
4572
4573         * lto-cgraph.c: New file.
4574         * lto-compress.c: New file.
4575         * lto-compress.h: New file.
4576         * lto-opts.c: New file.
4577         * lto-section-in.c: New file.
4578         * lto-section-out.c: New file.
4579         * lto-streamer-in.c: New file.
4580         * lto-streamer-out.c: New file.
4581         * lto-streamer.c: New file.
4582         * lto-streamer.h: New file.
4583         * lto-symtab.c: New file.
4584         * lto-wpa-fixup.c: New file.
4585         * lto-wrapper.c: New file.
4586
4587 2009-10-03  Simon Baldwin  <baldwin@google.com>
4588             Ben Elliston  <bje@au.ibm.com>
4589             Rafael Espindola  <espindola@google.com>
4590             Nathan Froyd  <froydnj@codesourcery.com>
4591             Jan Hubicka  <jh@suse.cz>
4592             Doug Kwan  <dougkwan@google.com>
4593             Diego Novillo  <dnovillo@google.com>
4594             Kenneth Zadeck  <zadeck@naturalbridge.com>
4595
4596         * Makefile.in (enable_lto): New.
4597         (site.exp): If @enable_lto@ is set to 'yes' define ENABLE_LTO.
4598         (LINKER_PLUGIN_API_H): Define.
4599         (LTO_SYMTAB_H): Define.
4600         (LTO_STREAMER_H): Define.
4601         (TREE_VECTORIZER_H): Define.
4602         (INCLUDES): Add LIBELFINC.
4603         (OBJS-common): Add lto-cgraph.o, lto-streamer-in.o,
4604         lto-streamer-out.o, lto-section-in.o, lto-section-out.o, lto-symtab.o,
4605         lto-opts.o, lto-streamer.o, lto-wpa-fixup.o, lto-compress.o.
4606         (MOSTLYCLEANFILES): Add lto-wrapper$(exeext)
4607         (native): Add lto-wrapper$(exeext)
4608         (lto-compress.o, lto-cgraph.o, lto-streamer-in.o,
4609         lto-streamer-out.o, lto-section-in.o, lto-section-out.o,
4610         lto-symtab.o, lto-opts.o, lto-streamer.o, lto-wpa-fixup.o): New rules.
4611         (gimple.o): Add dependency on LTO_HEADER_H and LTO_SECTION_OUT_H.
4612         (varasm.o): Add dependency on tree-iterator.h.
4613         (cgraph.o): Add dependency on cif-code.def.
4614         (ipa-reference.o): Add dependency on LTO_STREAMER_H.
4615         (ipa-pure-const.o): Likewise.
4616         (GTFILES): Add lto-symtab.c.
4617         (install-lto-wrapper): New.
4618         * configure.ac: If 'lto' is in enable_languages, define ENABLE_LTO
4619         and enable_lto.  If LIBELFLIBS is set, define HAVE_libelf.
4620         * config.in: Regenerate.
4621
4622 2009-10-03  Rafael Espindola  <espindola@google.com>
4623             Diego Novillo  <dnovillo@google.com>
4624
4625         * cgraphunit.c (ipa_passes): Prevent lto1 from calling
4626         ipa_write_summaries.
4627         Call execute_ipa_summary_passes for all_regular_ipa_passes and
4628         all_lto_gen_passes.
4629         (cgraph_optimize): Make extern.
4630
4631 2009-10-03  Nathan Froyd  <froydnj@codesourcery.com>
4632             Kenneth Zadeck <zadeck@naturalbridge.com>
4633
4634         * toplev.c (in_lto_p): Declare.
4635         * collect2.c (scan_prog_file): Read all the output when reading
4636         information for LTO.
4637         (enum lto_mode_d): Declare.
4638
4639 2009-10-03  Richard Guenther  <rguenther@suse.de>
4640             Diego Novillo  <dnovillo@google.com>
4641
4642         * gimple.c: Include target.h and alias.h.
4643         (gimple_types): Declare.
4644         (type_hash_cache): Declare.
4645         (gimple_alloc_stat): Make extern.
4646         (gimple_build_eh_must_not_throw): Call
4647         gimple_eh_must_not_throw_set_fndecl.
4648         (struct type_pair_d): Declare.
4649         (type_pair_t): Declare.
4650         (type_pair_hash): New.
4651         (type_pair_eq): New.
4652         (lookup_type_pair): New.
4653         (gimple_force_type_merge): New.
4654         (compare_type_names_p): New.
4655         (compare_field_offset): New.
4656         (gimple_types_compatible_p): New.
4657         (struct sccs): Declare.
4658         (next_dfs_num): Declare.
4659         (iterative_hash_gimple_type): New.
4660         (visit): New.
4661         (iterative_hash_type_name): New.
4662         (iterative_hash_gimple_type): New.
4663         (gimple_type_hash): New.
4664         (gimple_type_eq): New.
4665         (gimple_register_type): New.
4666         (print_gimple_types_stats): New.
4667         (gimple_signed_or_unsigned_type): New.
4668         (gimple_unsigned_type): New.
4669         (gimple_signed_type): New.
4670         (gimple_get_alias_set): New.
4671         (gimple_decl_printable_name): Do not use DMGL_TYPES.
4672         * gimple.h (gimple_alloc, gimple_alloc_stat): Declare.
4673         (gimple_force_type_merge): Declare.
4674         (gimple_types_compatible_p): Declare.
4675         (gimple_register_type): Declare.
4676         (print_gimple_types_stats): Declare.
4677         (gimple_unsigned_type): Declare.
4678         (gimple_signed_type): Declare.
4679         (gimple_get_alias_set): Declare.
4680         (gimple_eh_must_not_throw_set_fndecl): New.
4681
4682 2009-10-03  Jan Hubicka  <jh@suse.cz>
4683             Kenneth Zadeck <zadeck@naturalbridge.com>
4684
4685         * ipa-pure-const.c: Include lto-streamer.h.
4686         (register_hooks): Factor out of ...
4687         (generate_summary): ... here.
4688         (pure_const_write_summary): New.
4689         (pure_const_read_summary): New.
4690         (pass_ipa_pure_const): Add pure_const_write_summary and
4691         pure_const_read_summary.
4692         * ipa-reference.c: Include lto-streamer.h.
4693         (add_new_function): New.
4694         (remove_node_data): New.
4695         (duplicate_node_data): New.
4696         (ipa_init): Guard against multiple calls.
4697         Move hook setup from analyze_function.
4698         (write_node_summary_p): New.
4699         (ipa_reference_write_summary): New.
4700         (ipa_reference_read_summary): New.
4701         (pass_ipa_reference): Add ipa_reference_write_summary and
4702         ipa_reference_read_summary.
4703         * cgraph.h (cgraph_local_info): Add field lto_file_data.
4704         (struct cgraph_edge): Add fields lto_stmt_uid and
4705         call_stmt_cannot_inline_p.
4706         (cgraph_optimize): Declare.
4707         (cgraph_decide_is_function_needed): Declare.
4708         (reset_inline_failed): Declare.
4709         (enum LTO_cgraph_tags): Declare.
4710         (LTO_cgraph_tag_names): Declare.
4711         (LCC_NOT_FOUND): Define.
4712
4713 2009-10-03  Doug Kwan  <dougkwan@google.com>
4714             Rafael Espindola  <espindola@google.com>
4715             Jan Hubicka  <jh@suse.cz>
4716             Diego Novillo  <dnovillo@google.com>
4717             Kenneth Zadeck  <zadeck@naturalbridge.com>
4718
4719         * passes.c (all_regular_ipa_passes): New.
4720         (all_ipa_passes): Rename to all_small_ipa_passes.
4721         (init_optimization_passes): Init all_regular_ipa_passes.
4722         * tree-pass.h (all_regular_ipa_passes): New.
4723         (all_ipa_passes): Rename to all_small_ipa_passes.
4724         * passes.c (all_lto_gen_passes): New.
4725         (init_optimization_passes): Initialize all_lto_gen_passes.
4726         (execute_ipa_summary_passes): Make non-static.
4727         (ipa_write_summaries_1): New.
4728         (ipa_write_summaries_2): New.
4729         (ipa_write_summaries): New.
4730         (ipa_write_summaries_of_cgraph_node_set): New.
4731         (ipa_read_summaries_1): New.
4732         (ipa_read_summaries): New.
4733         (execute_ipa_pass_list): Call cgraph_process_new_functions.
4734         (execute_regular_ipa_pass_list): Remove.
4735         (init_optimization_passes): Schedule
4736         pass_rebuild_cgraph_edges and pass_early_inline outside
4737         of pass_all_early_optimizations.  Document reason.
4738         (pass_ipa_lto_gimple_out, pass_ipa_lto_wpa_fixup,
4739         pass_ipa_lto_finish_out): New pass.
4740         (pass_ipa_summary_passes): Start and stop timers if the pass has them.
4741         (execute_all_ipa_transforms): New.
4742         (execute_one_pass): Don't call execute_one_ipa_transform_pass.
4743         (dump_properties, debug_properties): New.
4744         * tree-optimize.c (gate_all_early_local_passes): Return
4745         false if we are in lto1.
4746         (tree_rest_of_compilation): Call execute_all_ipa_transforms.
4747         * tree-pass.h (execute_all_ipa_transforms): Declare.
4748         (pass_ipa_function_and_variable_visibility): Declare.
4749         (pass_ipa_early_inline): Declare.
4750         (pass_ipa_lto_gimple_out): Declare.
4751         (pass_ipa_lto_wpa_fixup): Declare.
4752         (pass_ipa_lto_finish_out): Declare.
4753         (all_small_ipa_passes, all_regular_ipa_passes,
4754         all_lto_gen_passes): Declare.
4755         (execute_ipa_summary_passes): Declare.
4756         (execute_all_ipa_transforms): Declare.
4757         (ipa_write_summaries): Declare
4758         (ipa_write_summaries_of_cgraph_node_set): Declare.
4759         (ipa_read_summaries): Declare.
4760
4761 2009-10-03  Doug Kwan  <dougkwan@google.com>
4762             Ollie Wild  <aaw@google.com>
4763
4764         * ipa-prop.c (ipa_propagate_indirect_call_infos): Do nothing in WPA.
4765
4766         * collect2.c (LTO_MODE_NONE, LTO_MODE_LTO, LTO_MODE_WPA): New enums.
4767         (lto_mode): New variable.
4768         (maybe_run_lto_and_relink): Handle the -fwpa option.
4769         (main): Handle the -fwpa option.
4770         (maybe_unlink_list): New function.
4771         * gcc.c (link_lto_options): Replace -flto with -fwpa.
4772         * common.opt (flto): New flag.
4773         * toplev.c (flag_generate_lto): Declare.
4774
4775 2009-10-03  Simon Baldwin  <simonb@google.com>
4776
4777         * common.opt (flto-compression-level): New flag.
4778
4779         * opts.c: Include lto-opts.h.
4780         (handle_option): Call lto_register_user_option for each
4781         valid option handled.
4782         (decode_options): Clear registered options before the options
4783         handling loop.
4784
4785 2009-10-03  Cary Coutant  <ccoutant@google.com>
4786
4787         * collect2.c (is_elf): New function.
4788         (scan_prog_file): Require LTO object to be in ELF format.
4789
4790 2009-10-03  Rafael Espindola  <espindola@google.com>
4791
4792         * gcc.c (LINK_COMMAND_SPEC): Use the -pass-through option to pass
4793         libgcc to the linker.
4794
4795         * ipa-cp.c (cgraph_gate_cp): Return false if LTRANS is running.
4796
4797         * collect2.c (maybe_run_lto_and_relink): Execute lto-wrapper.
4798         (collect_execute): Add flags argument. Pass flags to pex_run. Update
4799         all callers.
4800         * collect2.h (collect_execute): Add flags argument.
4801         * tlink.c (tlink_execute): Update call to collect_execute.
4802         * gcc.c (main): Set the COLLECT_LTO_WRAPPER environment variable.
4803         (use_linker_plugin): New.
4804         (use_linker_plugin_spec_function): New.
4805         (LINK_COMMAND_SPEC): Pass plugin options to the linker.
4806         (linker_plugin_file_spec): New.
4807         (lto_wrapper_spec): New.
4808         (lto_gcc_spec): New.
4809         (static_specs): Add linker_plugin_file, lto_wrapper and lto_gcc.
4810         (static_spec_functions): Add use-linker-plugin.
4811         (process_command): Handle -use-linker-plugin.
4812         (main): Use lto_wrapper_spec instead of lto_wrapper. Set
4813         linker_plugin_file_spec and lto_gcc_spec.
4814         (use_linker_plugin_spec_function): New.
4815
4816 2009-10-03  Richard Guenther  <rguenther@suse.de>
4817
4818         PR lto/41547
4819         PR lto/41548
4820         * tree.h (is_lang_specific): Include LANG_TYPE.
4821         * tree.c (find_decls_types_r): Manually add interesting parts
4822         of TYPE_FIELDS.  Walk BINFO_VIRTUALS.  Do not walk TYPE_METHODS.
4823
4824         * gimple.c (type_pair_hash): Make symmetric.
4825         (type_pair_eq): Likewise.
4826         (lookup_type_pair): Increase initial hashtable size.
4827         (gimple_force_type_merge): Rely on type-pair symmetry.
4828         (visit): Remove excessive checking code.
4829         (iterative_hash_type_name): Do not hash TYPE_NAME of anonymous unions.
4830         (gimple_register_type): Remove getenv calls, shrink initial
4831         hashtable size.
4832
4833         PR middle-end/41502
4834         * cgraphunit.c (ipa_passes): Do not remove bodies of extern
4835         inline functions if not generating lto output.
4836
4837         PR lto/41379
4838         * toplev.c (finalize): In WPA mode remove the asm file.
4839
4840 2009-10-03  Doug Kwan  <dougkwan@google.com>
4841
4842         * ipa-inline.c (cgraph_mark_inline): Check
4843         edge->call_stmt_cannot_inline_p instead of calling
4844         gimple_call_cannot_inline_p.
4845         (cgraph_decide_inlining): Do nothing in WPA and LTRANS.
4846         (cgraph_gate_ipa_early_inlining): Return false if in_lto_p is set.
4847         (inline_generate_summary): Do nothing in LTRANS.
4848         * cgraph.c (initialize_inline_failed): Make sure e->call_stmt
4849         exists before calling gimple_call_cannot_inline_p.
4850         (cgraph_create_edge): Set edge->call_stmt_cannot_inline_p.
4851         (cgraph_clone_edge): Add argument STMT_UID.  Modify all callers.
4852         Update new_edge->lto_stmt_uid.
4853         * cgraphbuild.c (reset_inline_failed): New.
4854
4855         * common.opt (fwpa): New flag.
4856         (fltrans): New option.
4857         * gcc.c (gcc_lto_option_t): New type.
4858         (current_lto_option): New variable.
4859         (lto_single_spec_function): Remove and is replaced by ..
4860         (lto_option_spec_function): New function.
4861         (LINK_COMMAND_SPEC): Use link_lto_option spec instead of just
4862         passing the -flto flag.
4863         (cc1_options): Separate non-LTO related parts into ..
4864         (cc1_non_lto_options): Non-LTO related options shared by all FEs.
4865         (lto1_options): New spec for lto FE.
4866         (link_lto_options): New spec for handling LTO flags in linker.
4867         (invoke_lto_single): Re-format to fit in 80 column.  Replace
4868         lto-single with lto-option.
4869         (static_specs): Add cc1_non_lto_options, lto1_options and
4870         link_lto_options.
4871         (static_spec_function): Replace lto-single with lto-option.
4872         (process_command): Handle -flto, -fwpa and -fltran by setting
4873         current_lto_option and not passing it to subprocess unconditionally.
4874
4875 2009-10-03  Bill Maddox  <maddox@google.com>
4876
4877         Add `gcc' driver support for link-time code generation (LTO).
4878
4879         * collect2.c (enum pass): Add new literal PASS_LTOINFO.
4880         (lto_flag, lto_objects, lto_o_file): New variables.
4881         (struct lto_object, struct lto_object_list): New structures.
4882         (collect_exit, handler): Remove LTO temporary output file on exit.
4883         (add_lto_object): New function.
4884         (maybe_run_lto_and_relink): New function. Perform link time code
4885         generation and relinking for object files containing LTO information.
4886         (main): Invoke maybe_run_lto_and_relink().
4887         (dump_argv): New function.  For debugging, currently disabled.
4888         (scan_prog_file): Add LTO information pass.
4889         * gcc.c (LINK_COMMAND_SPEC): Pass `-flto' switch to linker, i.e.,
4890         collect2.
4891         * toplev.c (compile_file): Emit assembler directive to create
4892         the `gnu_lto_v1' marker symbol when compiling with `-flto'.
4893
4894 2009-10-03  Diego Novillo  <dnovillo@google.com>
4895
4896         * c.opt: Add LTO to warn_abi and warn_psabi.
4897
4898         * tree.c (fld_worklist_push): Rename from PUSH.  Convert to static
4899         inline function.  Ignore language-specific nodes.  Update all users.
4900         (find_decls_types_r): Do not traverse the subtrees of
4901         language-specific nodes.  Do not traverse DECL_INITIAL for TYPE_DECLs.
4902         * tree.h (is_lang_specific): New.
4903         * langhooks.h (struct lang_hooks_for_decls): Remove
4904         may_need_assembler_name_p.  Update all users.
4905
4906         * c-common.c (set_builtin_user_assembler_name): Move ...
4907         * builtins.c (set_builtin_user_assembler_name): ... here.
4908         (is_builtin_name): Add comment
4909         (is_builtin_fn): New.
4910         * except.c (output_ttype): Only call
4911         lookup_type_for_runtime if TYPE is not a runtime type.
4912
4913         * passes.c (register_pass): Call position_pass on
4914         all_small_ipa_passes, all_regular_ipa_passes and all_lto_gen_passes.
4915         * timevar.def (TV_IPA_LTO_GIMPLE_IO): Define.
4916         (TV_IPA_LTO_DECL_IO): Define.
4917         (TV_IPA_LTO_CGRAPH_IO): Define.
4918         (TV_LTO): Define.
4919         (TV_WHOPR_WPA): Define.
4920         (TV_WHOPR_WPA_IO): Define.
4921         (TV_WHOPR_LTRANS): Define.
4922         (TV_WHOPR_WPA_FIXUP): Define.
4923         (TV_WHOPR_WPA_LTRANS_EXEC): Define.
4924         * tree-cfg.c (tree_node_can_be_shared): Make extern.
4925         * tree-flow.h (tree_node_can_be_shared): Declare.
4926         * tree-inline.c (tree_can_inline_p): Check that E has a
4927         statement associated with it.
4928         * tree.c (free_lang_data_in_binf): Factor out of ...
4929         (free_lang_data_in_type): ... here.
4930         Call RECORD_OR_UNION_TYPE_P.
4931         (need_assembler_name_p): Ignore DECL if it does not have TREE_PUBLIC
4932         set.  Call lang_hooks.decls.may_need_assembler_name_p if set.
4933         (free_lang_data_in_decl): Do not clear DECL_CONTEXT for CONST_DECLs.
4934         (free_lang_data): Set debug_info_level to DINFO_LEVEL_NONE.  Set
4935         write_symbols to NO_DEBUG.  Set debug_hooks to do_nothing_debug_hooks.
4936         (gate_free_lang_data): Return true if flag_generate_lto is set.
4937         (walk_tree_1): Call RECORD_OR_UNION_TYPE_P.
4938         * c-common.h (set_builtin_user_assembler_name): Move ...
4939         * tree.h (set_builtin_user_assembler_name): ... here.
4940
4941         * common.opt (flto-report): New flag.
4942         * opts.c (complain_wrong_lang): Do not complain if running lto1.
4943         * collect2.c (scan_prog_file): Send the error output of
4944         'nm' to HOST_BIT_BUCKET.
4945
4946 2009-10-03  Ollie Wild  <aaw@google.com>
4947
4948         * langhooks-def.h (lhd_begin_section): New function declaration.
4949         (lhd_write_section): New function declaration.
4950         (lhd_end_section): New function declaration.
4951         (LANG_HOOKS_BEGIN_SECTION): New macro.
4952         (LANG_HOOKS_WRITE_SECTION_DATA): New macro.
4953         (LANG_HOOKS_END_SECTION): New macro.
4954         (LANG_HOOKS_LTO): New macro.
4955         (LANG_HOOKS_INITIALIZER): Add LANG_HOOKS_LTO.
4956         * langhooks.c (output.h): Add include.
4957         (saved_section): New static variable.
4958         (lhd_begin_section): New function.
4959         (lhd_write_section_data): New function.
4960         (lhd_end_section): New function.
4961         * langhooks.h (struct lang_hooks_for_lto): New structure.
4962         (struct lang_hooks): Add member lto.
4963         * Makefile.in (langhooks.o): Add dependency on output.h.
4964
4965         * c-opts.c (c_common_post_options): Handle -flto and -fwhopr.
4966
4967 2009-10-03  Richard Guenther  <rguenther@suse.de>
4968
4969         * config/rs6000/rs6000.c (rs6000_output_function_epilogue):
4970         Handle LTO.
4971
4972 2009-10-03  Simon Baldwin  <simonb@google.com>
4973             Richard Guenther  <rguenther@suse.de>
4974             Janis Johnson  <janis187@us.ibm.com>
4975             Doug Kwan  <dougkwan@google.com>
4976             Diego Novillo  <dnovillo@google.com>
4977             Ramana Radhakrishnan  <ramana.r@gmail.com>
4978             Ollie Wild  <aaw@google.com>
4979
4980         * doc/install.texi: Add documentation for libelf and --enable-lto.
4981         * doc/invoke.texi: Document -fwpa, -flto, -fwhopr, -fltrans,
4982         -flto-report, -flto-compression-level and -use-linker-plugin.
4983         * doc/sourcebuild.texi: Document use of zlib.  Document lto-plugin.
4984         Add section for LTO Testing.
4985
4986 2009-10-02  Cary Coutant  <ccoutant@google.com>
4987
4988         Add support for comdat type sections for DWARF v4.
4989         Merge from dwarf4 branch.
4990
4991         * dwarf2out.c (DWARF_TYPE_SIGNATURE_SIZE): New constant.
4992         (dw_die_ref): Define vector type.
4993         (enum dw_val_class): Add dw_val_class_data8.
4994         (struct dw_val_struct): Add v.val_data8.
4995         (comdat_type_node_ref): New type.
4996         (struct die_struct): Move die_symbol into a union; add new field
4997         die_type_node.  Change all uses.
4998         (comdat_type_node): New type.
4999         (skeleton_chain_node): New type.
5000         (DWARF_COMDAT_TYPE_UNIT_HEADER_SIZE): New constant.
5001         (comdat_type_list): New variable.
5002         (dwarf_tag_name): Add DW_TAG_type_unit.
5003         (dwarf_attr_name): Add DW_AT_signature.
5004         (add_AT_data8): New function.
5005         (replace_child): New function.
5006         (move_all_children): New function.
5007         (print_signature): New function.
5008         (print_die): Print signature information; add dw_val_class_data8.
5009         (attr_checksum): Support dw_val_class_data8.
5010         (CHECKSUM_STRING): Redefine for DWARF-4 to include trailing NULL byte.
5011         (CHECKSUM_SLEB128, CHECKSUM_ULEB128): New macros.
5012         (checksum_sleb128, checksum_uleb128): New functions.
5013         (checksum_die_context): New function.
5014         (loc_checksum_ordered): New function.
5015         (attr_checksum_ordered): New function.
5016         (struct checksum_attributes): New structure.
5017         (collect_checksum_attributes): New function.
5018         (die_checksum_ordered): New function.
5019         (generate_type_signature): New function.
5020         (same_dw_val_p): Add dw_val_class_data8.
5021         (is_symbol_die): Use new is_declaration_die function.
5022         (is_declaration_die): New function.
5023         (should_move_die_to_comdat): New function.
5024         (clone_die): New function.
5025         (clone_tree): New function.
5026         (clone_as_declaration): New function.
5027         (copy_declaration_context): New function.
5028         (generate_skeleton_ancestor_tree): New function.
5029         (generate_skeleton_bottom_up): New function.
5030         (generate_skeleton): New function.
5031         (remove_child_or_replace_with_skeleton): New function.
5032         (break_out_comdat_types): New function.
5033         (struct decl_table_entry): New type.
5034         (htab_decl_hash): New function.
5035         (htab_decl_eq): New function.
5036         (htab_decl_del): New function.
5037         (copy_ancestor_tree): New function.
5038         (copy_decls_walk): New function.
5039         (copy_decls_for_unworthy_types): New function.
5040         (build_abbrev_table): Don't assert on missing die_symbol when doing
5041         comdat type sections.
5042         (size_of_die): Use DW_FORM_sig8 for external references.  Add
5043         dw_val_class_data8.
5044         (unmark_dies): Don't assert for unmarked dies when doing comdat
5045         type sections.
5046         (value_format): Support DW_FORM_sig8 and dw_val_class_data8.
5047         (output_signature): New function.
5048         (output_die): Likewise.
5049         (output_compilation_unit_header): Mark output as DWARF version 3
5050         even if generating DWARF 4.
5051         (output_comdat_type_unit): New function.
5052         (output_line_info): Mark output as DWARF version 3 even if generating
5053         DWARF 4.
5054         (dwarf2out_start_source_file): Don't do eliminate_dwarf2_dups with
5055         DWARF-4.
5056         (dwarf2out_end_source_file): Likewise.
5057         (prune_unused_types_walk_attribs): Don't follow references into
5058         comdat type sections.
5059         (prune_unused_types_mark): When generating type units, do not mark
5060         children of non-defining declarations of types; do mark children of
5061         type entries.
5062         (prune_unused_types): Process comdat type sections.
5063         (htab_ct_hash): New function.
5064         (htab_ct_eq): New function.
5065         (dwarf2out_finish): Move types to comdat sections when using DWARF-4.
5066         Add a pointer to the line table from type unit entries so
5067         DW_AT_decl_file has meaning.
5068         * varasm.c (default_elf_asm_named_section): Use identifier name as
5069         comdat key instead of lang hook.
5070
5071 2009-10-02  Neil Vachharajani  <nvachhar@google.com>
5072
5073         * gcov-io.c (gcov_open): Open files read-only when MODE < 0.
5074
5075 2009-10-02  Uros Bizjak  <ubizjak@gmail.com>
5076
5077         * config/i386/i386.md (SWIM248): New mode iterator.
5078         (divmod<mode>4) Macroize expander from divmoddi4, divmodsi4 and
5079         divmodhi4 patterns using SWIM248 macro.
5080         (*divmod<mode>4): Macroize insn_and_split pattern from
5081         *divmoddi4_cltd_rex64, *divmodsi4_cltd and divmodhi4 insn patterns
5082         and their corresponding splitters usign SWIM248 macro.  Split SImode
5083         insn to generate cltd and DImode insn to generate cqto instead of
5084         move+shift when optimizing for size or TARGET_USE_CLTD is in effect.
5085         (*divmoddi4_nocltd_rex64, *divmodsi4_nocltd): Remove insn patterns.
5086         (*divmod<mode>4_noext): Macroize insn from *divmoddi_noext_rex64 and
5087         *divmodsi_noext patterns using SWIM248 macro.
5088         (udivmod<mode>4): Macroize expander from udivmoddi4, udivmodsi4 and
5089         udivmodhi4 patterns using SWIM248 macro.
5090         (*udivmod<mode>4): Macroize insn_and_split pattern from
5091         *udivmoddi4, udivmodsi4 and udivmodhi4 patterns and their
5092         corresponding splitters using SWIM248 macro.
5093         (*udivmod<mode>4_noext): Macroize insn from *udivmoddi4_noext,
5094         *udivmodsi4_noext and *udivmodhi_noext patterns using SWIM248 macro.
5095
5096 2009-10-02  Eric Botcazou  <ebotcazou@adacore.com>
5097
5098         * stor-layout.c (layout_type) <ARRAY_TYPE>: Make sure that an array
5099         of zero-sized element is zero-sized regardless of its extent.
5100
5101 2009-10-02  Jakub Jelinek  <jakub@redhat.com>
5102
5103         PR debug/40521
5104         * configure.ac (HAVE_GAS_CFI_SECTIONS_DIRECTIVE): New test.
5105         * configure: Regenerated.
5106         * config.in: Regenerated.
5107         * dwarf2out.c (dwarf2out_do_cfi_asm): Return false if
5108         !HAVE_GAS_CFI_SECTIONS_DIRECTIVE and not emitting .eh_frame.
5109         (dwarf2out_init): If HAVE_GAS_CFI_SECTIONS_DIRECTIVE and
5110         not emitting .eh_frame, emit .cfi_sections .debug_frame
5111         directive.
5112
5113         PR debug/41404
5114         PR debug/41353
5115         * cfgexpand.c (expand_debug_expr) <case STRING_CST>: Don't create
5116         CONST_STRING if STRING_CST contains embedded '\0's or doesn't end
5117         with '\0'.
5118         (expand_debug_expr) <case VAR_DECL>: For TREE_STATIC !DECL_EXTERNAL
5119         vars use DECL_RTL with resetting it back to NULL afterwards.
5120         * dwarf2out.c (same_dw_val_p): For dw_val_class_addr compare with
5121         rtx_equal_p instead of asserting it is a SYMBOL_REF.
5122         (value_format): For dw_val_class_addr only use DW_FORM_addr if
5123         the attribute type allows it, otherwise use DW_FORM_dataN.
5124         (mem_loc_descriptor): Handle CONST_STRING.
5125         (add_const_value_attribute): Handle CONST_STRING using add_AT_addr.
5126         Handle MEM with CONST_STRING address using add_AT_string.
5127         (rtl_for_decl_init): Return MEM with CONST_STRING address instead of
5128         CONST_STRING for const arrays initialized with a string literal.
5129         (resolve_one_addr, resolve_addr_in_expr, resolve_addr): New functions.
5130         (dwarf2out_finish): Call resolve_addr.
5131
5132 2009-10-02  Andreas Schwab  <schwab@linux-m68k.org>
5133             Maxim Kuvyrkov  <maxim@codesourcery.com>
5134
5135         * config/m68k/lb1sf68.asm (PICCALL): Use variable sized branch.
5136
5137 2009-10-02  Nick Clifton  <nickc@redhat.com>
5138
5139         * config/mn10300/mn10300.h (USER_LABEL_PREFIX): Define.
5140         (ASM_OUTPUT_LABELREF): Use asm_fprintf and %U.
5141
5142 2009-10-01  Jan Hubicka  <jh@suse.cz>
5143
5144         * cgraph.c (cgraph_clone_node): Add redirect_callers parameter.
5145         (cgraph_create_virtual_clone): Just pass redirect_callers
5146         around.
5147         * cgraph.h (cgraph_clone_node): Update prototype.
5148         * ipa-pure-const.c (self_recursive_p): New function.
5149         (propagate): Use it.
5150         * ipa-inline.c (cgraph_clone_inlined_nodes,
5151         cgraph_decide_recursive_inlining): Update.
5152
5153 2009-10-01  David Daney  <ddaney@caviumnetworks.com>
5154
5155         * gcc/config/mips/mips.c (mips_process_sync_loop) Emit syncw
5156         instructions for TARGET_OCTEON.
5157
5158 2009-10-01  Ramana Radhakrishnan  <ramana.radhakrishnan@arm.com>
5159
5160         * config/arm/arm.c (arm_override_options): Turn off
5161         flag_dwarf2_cfi_asm for AAPCS variants.
5162
5163 2009-10-01  Martin Jambor  <mjambor@suse.cz>
5164
5165         PR middle-end/12392
5166         * tree-sra.c (convert_callers): Do not call
5167         compute_inline_parameters on one caller more than once.
5168
5169 2009-10-01  Nick Clifton  <nickc@redhat.com>
5170
5171         * config/vax/netbsd-elf.h (NETBSD_CC1_AND_CC1PLUS_SPEC): Define as
5172         an empty string if not already defined.
5173
5174 2009-10-01  Martin Jambor  <mjambor@suse.cz>
5175
5176         PR bootstrap/41395
5177         * tree-sra.c (is_va_list_type): New function.
5178         (find_var_candidates): Call is_va_list_type.
5179         (find_param_candidates): Check that the type or the type pointed
5180         to are not va_list types.
5181
5182 2009-10-01  Martin Jambor  <mjambor@suse.cz>
5183
5184         PR c++/41503
5185         * cp/pt.c (function_parameter_expanded_from_pack_p): Return false if
5186         DECL_ARTIFICIAL (param_decl) is true.
5187
5188 2009-09-30  Gabriel Dos Reis  <gdr@cs.tamu.edu>
5189
5190         * tree.h (tree_decl_common::lang_flag_8): New.
5191         * c-common.c (c_common_reswords): Include "constexpr" as C++0x
5192         keyword.
5193         * c-common.h (RID_CONSTEXPR): New.
5194
5195 2009-09-30  Uros Bizjak  <ubizjak@gmail.com>
5196
5197         * config/alpha/alpha.c (alpha_gimplify_va_arg_1):
5198         Use ref-all pointers.
5199         (alpha_gimplify_va_arg): Ditto.
5200
5201 2009-09-30  Jakub Jelinek  <jakub@redhat.com>
5202
5203         PR target/41279
5204         * cfgloopanal.c (num_loop_insns): Don't increment ninsns for each bb
5205         before insn counting loop now that BB_END (bb) is counted.  Ensure
5206         the return value isn't zero.
5207
5208 2009-09-30  Nick Clifton  <nickc@redhat.com>
5209
5210         * config.gcc (sh-symbianelf): Replace definition of extra_objs
5211         with separate definitions of c_target_objs and cxx_target_objs.
5212         * config/sh/t-sh: Add rules to build symbian-cxx.o, symbian-c.o
5213         and symbian-base.o.
5214         * config/sh/sh.c (TARGET_CXX_INPUT_EXPORT_CLASS): Use
5215         sh_symbian_import_export_class.
5216         * config/sh/sh-protos.h: Fix names of exported symbian functions.
5217         * config/sh/symbian.c: Delete, moving code into...
5218         * config/sh/symbian-base.c: ... here
5219         * config/sh/symbian-c.c: ... and here
5220         * config/sh/symbian-cxx.c: ... and here.
5221
5222 2009-09-30  Uros Bizjak  <ubizjak@gmail.com>
5223
5224         PR target/22093
5225         * config/alpha/alpha.md (unaligned_storehi_be): Force operand
5226         of plus RTX into register.
5227
5228 2009-09-30  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
5229
5230         * doc/install.texi: Linguistic and markup fixes.
5231         (Configuration) <--disable-cpp>: Remove description.
5232         <--enable-maintainer-mode>: Autotools files are affected, too.
5233         <--with-sysroot>: Improve description.
5234         (Building): Bump required GNU make version.
5235
5236 2009-09-29  Harsha Jagasia  <harsha.jagasia@amd.com>
5237
5238         * config.gcc (i[34567]86-*-*): Include fma4intrin.h.
5239         (x86_64-*-*): Ditto.
5240
5241         * config/i386/fma4intrin.h: New file, provide common x86 compiler
5242         intrinisics for FMA4.
5243         * config/i386/cpuid.h (bit_FMA4): Define FMA4 bit.
5244         * config/i386/x86intrin.h: Fix typo to SSE4A instead of SSE4a.
5245         Add FMA4 check and fma4intrin.h.
5246         * config/i386/i386-c.c(ix86_target_macros_internal): Check
5247         ISA_FLAG for FMA4.
5248         * config/i386/i386.h(TARGET_FMA4): New macro for FMA4.
5249         * config/i386/i386.md (UNSPEC_FMA4_INTRINSIC): Add new UNSPEC
5250         constant for FMA4 support.
5251         (UNSPEC_FMA4_FMADDSUB): Ditto.
5252         (UNSPEC_FMA4_FMSUBADD): Ditto.
5253         * config/i386/i386.opt (-mfma4): New switch for FMA4 support.
5254         * config/i386/i386-protos.h (ix86_fma4_valid_op_p): Add declaration.
5255         (ix86_expand_fma4_multiple_memory): Ditto.
5256         * config/i386/i386.c (OPTION_MASK_ISA_FMA4_SET): New.
5257         (OPTION_MASK_ISA_FMA4_UNSET): New.
5258         (OPTION_MASK_ISA_SSE4A_UNSET): Change definition to depend on FMA4.
5259         (OPTION_MASK_ISA_AVX_UNSET): Change definition to depend on FMA4.
5260         (ix86_handle_option): Handle -mfma4.
5261         (isa_opts): Handle -mfma4.
5262         (enum pta_flags): Add PTA_FMA4.
5263         (override_options): Add FMA4 support.
5264         (IX86_BUILTIN_VFMADDSS): New for FMA4 intrinsic.
5265         (IX86_BUILTIN_VFMADDSD): Ditto.
5266         (IX86_BUILTIN_VFMADDPS): Ditto.
5267         (IX86_BUILTIN_VFMADDPD): Ditto.
5268         (IX86_BUILTIN_VFMSUBSS): Ditto.
5269         (IX86_BUILTIN_VFMSUBSD): Ditto.
5270         (IX86_BUILTIN_VFMSUBPS): Ditto.
5271         (IX86_BUILTIN_VFMSUBPD): Ditto.
5272         (IX86_BUILTIN_VFMADDSUBPS): Ditto.
5273         (IX86_BUILTIN_VFMADDSUBPD): Ditto.
5274         (IX86_BUILTIN_VFMSUBADDPS): Ditto.
5275         (IX86_BUILTIN_VFMSUBADDPD): Ditto.
5276         (IX86_BUILTIN_VFNMADDSS): Ditto.
5277         (IX86_BUILTIN_VFNMADDSD): Ditto.
5278         (IX86_BUILTIN_VFNMADDPS): Ditto.
5279         (IX86_BUILTIN_VFNMADDPD): Ditto.
5280         (IX86_BUILTIN_VFNMSUBSS): Ditto.
5281         (IX86_BUILTIN_VFNMSUBSD): Ditto.
5282         (IX86_BUILTIN_VFNMSUBPS): Ditto.
5283         (IX86_BUILTIN_VFNMSUBPD): Ditto.
5284         (IX86_BUILTIN_VFMADDPS256): Ditto.
5285         (IX86_BUILTIN_VFMADDPD256): Ditto.
5286         (IX86_BUILTIN_VFMSUBPS256): Ditto.
5287         (IX86_BUILTIN_VFMSUBPD256): Ditto.
5288         (IX86_BUILTIN_VFMADDSUBPS256): Ditto.
5289         (IX86_BUILTIN_VFMADDSUBPD256): Ditto.
5290         (IX86_BUILTIN_VFMSUBADDPS256): Ditto.
5291         (IX86_BUILTIN_VFMSUBADDPD256): Ditto.
5292         (IX86_BUILTIN_VFNMADDPS256): Ditto.
5293         (IX86_BUILTIN_VFNMADDPD256): Ditto.
5294         (IX86_BUILTIN_VFNMSUBPS256): Ditto.
5295         (IX86_BUILTIN_VFNMSUBPD256): Ditto.
5296         (enum multi_arg_type): New enum for describing the various FMA4
5297         intrinsic argument types.
5298         (bdesc_multi_arg): New table for FMA4 intrinsics.
5299         (ix86_init_mmx_sse_builtins): Add FMA4 intrinsic support.
5300         (ix86_expand_multi_arg_builtin): New function for creating FMA4
5301         intrinsics.
5302         (ix86_expand_builtin): Add FMA4 intrinsic support.
5303         (ix86_fma4_valid_op_p): New function to validate FMA4 3 and 4
5304         operand instructions.
5305         (ix86_expand_fma4_multiple_memory): New function to split the
5306         second memory reference from FMA4 instructions.
5307         * config/i386/sse.md (ssemodesuffixf4): New mode attribute for FMA4.
5308         (ssemodesuffixf2s): Ditto.
5309         (fma4_fmadd<mode>4): Add FMA4 floating point multiply/add
5310         instructions.
5311         (fma4_fmsub<mode>4): Ditto.
5312         (fma4_fnmadd<mode>4): Ditto.
5313         (fma4_fnmsub<mode>4): Ditto.
5314         (fma4_vmfmadd<mode>4): Ditto.
5315         (fma4_vmfmsub<mode>4): Ditto.
5316         (fma4_vmfnmadd<mode>4): Ditto.
5317         (fma4_vmfnmsub<mode>4): Ditto.
5318         (fma4_fmadd<mode>4256): Ditto.
5319         (fma4_fmsub<mode>4256): Ditto.
5320         (fma4_fnmadd<mode>4256): Ditto.
5321         (fma4_fnmsub<mode>4256): Ditto.
5322         (fma4_fmaddsubv8sf4): Ditto.
5323         (fma4_fmaddsubv4sf4): Ditto.
5324         (fma4_fmaddsubv4df4): Ditto.
5325         (fma4_fmaddsubv2df4): Ditto.
5326         (fma4_fmsubaddv8sf4): Ditto.
5327         (fma4_fmsubaddv4sf4): Ditto.
5328         (fma4_fmsubaddv4df4): Ditto.
5329         (fma4_fmsubaddv2df4): Ditto.
5330         (fma4i_fmadd<mode>4): Add FMA4 floating point multiply/add
5331         instructions for intrinsics.
5332         (fma4i_fmsub<mode>4): Ditto.
5333         (fma4i_fnmadd<mode>4): Ditto.
5334         (fma4i_fnmsub<mode>4): Ditto.
5335         (fma4i_vmfmadd<mode>4): Ditto.
5336         (fma4i_vmfmsub<mode>4): Ditto.
5337         (fma4i_vmfnmadd<mode>4): Ditto.
5338         (fma4i_vmfnmsub<mode>4): Ditto.
5339         (fma4i_fmadd<mode>4256): Ditto.
5340         (fma4i_fmsub<mode>4256): Ditto.
5341         (fma4i_fnmadd<mode>4256): Ditto.
5342         (fma4i_fnmsub<mode>4256): Ditto.
5343         (fma4i_fmaddsubv8sf4): Ditto.
5344         (fma4i_fmaddsubv4sf4): Ditto.
5345         (fma4i_fmaddsubv4df4): Ditto.
5346         (fma4i_fmaddsubv2df4): Ditto.
5347         (fma4i_fmsubaddv8sf4): Ditto.
5348         (fma4i_fmsubaddv4sf4): Ditto.
5349         (fma4i_fmsubaddv4df4): Ditto.
5350         (fma4i_fmsubaddv2df4): Ditto.
5351
5352         * doc/invoke.texi (-mfma4): Add documentation.
5353         * doc/extend.texi (x86 intrinsics): Add FMA4 intrinsics.
5354
5355 2009-09-29  Richard Henderson  <rth@redhat.com>
5356
5357         * tree-eh.c (unsplit_eh): Do not unsplit if there's already
5358         an edge to the new destination block.
5359
5360 2009-09-29  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
5361
5362         PR target/41393
5363         * pa.c (hppa_profile_hook): Use
5364         make_reg_eh_region_note_nothrow_nononlocal to add REG_EH_REGION note.
5365
5366 2009-09-29  Steve Ellcey  <sje@cup.hp.com>
5367             Alexander Monakov  <amonakov@ispras.ru>
5368
5369         PR target/41365
5370         * config/ia64/predicates.md (not_postinc_destination_operand): New.
5371         (not_postinc_memory_operand): New.
5372         (not_postinc_move_operand): New.
5373         * config/ia64/ia64.md (*cmovdi_internal): Disallow autoincrement.
5374         (*cmovsi_internal): Ditto.
5375
5376 2009-09-29  Pat Haugen  <pthaugen@us.ibm.com>
5377
5378         * config/rs6000/rs6000.c (rs6000_issue_rate): Don't artificially
5379         restrict issue_rate in first pass when scheduling for register
5380         pressure.
5381
5382 2009-09-29  Basile Starynkevitch  <basile@starynkevitch.net>
5383             Rafael Avila de Espindola  <espindola@google.com>
5384
5385         * gengtype.c (plugin_output): New.
5386         (get_output_file_with_visibility): Return plugin_output for plugins.
5387         (main): Parse and use the -P option.
5388         * gty.texi: Update the command line format.
5389
5390 2009-09-29  Jakub Jelinek  <jakub@redhat.com>
5391
5392         PR debug/41438
5393         * dwarf2out.c (const_ok_for_output_1, const_ok_for_output): New
5394         functions.
5395         (mem_loc_descriptor, loc_descriptor, add_const_value_attribute): Bail
5396         out if !const_ok_for_output.
5397
5398         PR debug/41474
5399         * dwarf2out.c (mem_loc_descriptor) <case CONCAT, case CONCATN,
5400         case VAR_LOCATION>: Remove gcc_unreachable ().
5401
5402 2009-09-29  Harsha Jagasia  <harsha.jagasia@amd.com>
5403
5404         * config.gcc (i[34567]86-*-*): Remove mmintrin-common.h.
5405         (x86_64-*-*): Ditto.
5406         * config/i386/smmintrin.h: Move instructions in mmintrin-common.h
5407         back to smmintrin.h.
5408         * config/i386/cpuid.h (bit_SSE5): Remove SSE5 bit.
5409         * config/i386/x86intrin.h: Remove SSE5.
5410         * config/i386/mmintrin-common.h: Delete file.
5411         * doc/extend.texi (x86 intrinsics): Remove SSE5 flags and builtins.
5412
5413 2009-09-29  Richard Guenther  <rguenther@suse.de>
5414
5415         * alias.c (ao_ref_from_mem): Properly deal with off decl accesses
5416         resulting from stack temporaries on STRICT_ALIGNMENT targets.
5417
5418 2009-09-29  Nick Clifton  <nickc@redhat.com>
5419
5420         * function.c (current_function_name): If there is no current
5421         function just return "<none>".
5422
5423 2009-09-28  Sriraman Tallam  <tmsriram@google.com>
5424
5425         * tree-pass.h (register_pass_info): New structure.
5426         (pass_positioning_ops): Move enum from gcc-plugin.h.
5427         (register_pass): New function.
5428         * gcc-plugin.h (plugin_pass): Delete structure.
5429         (pass_positioning_ops): Delete enum.
5430         * plugin.c (regsiter_pass): Delete function.
5431         (position_pass): Delete function.
5432         (added_pass_nodes): Delete variable.
5433         (prev_added_pass_nodes): Delete variable.
5434         (pass_list_node): Delete structure.
5435         * passes.c (make_pass_instance): New function.
5436         (next_pass_1): Change to call make_pass_instance.
5437         (pass_list_node): Move structure from gcc-plugin.h.
5438         (added_pass_nodes): Move variable from plugin.c.
5439         (prev_added_pass_nodes): Move variable from plugin.c.
5440         (position_pass): New function.
5441         (register_pass): New function.
5442
5443 2009-09-28  Easwaran Raman  <eraman@google.com>
5444
5445         * ifcvt.c (noce_try_abs): Recognize pattern and call
5446         expand_one_cmpl_abs_nojump.
5447         * optabs.c (expand_one_cmpl_abs_nojump): New function.
5448         * optabs.h (expand_one_cmpl_abs_nojump): Declare.
5449
5450 2009-09-28  Ian Lance Taylor  <iant@google.com>
5451
5452         PR middle-end/40500
5453         * c-opts.c (c_common_handle_option): Don't set
5454         warn_jump_misses_init for -Wall.
5455         * doc/invoke.texi (Warning Options): Update documentation.
5456
5457 2009-09-28  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
5458
5459         * Makefile.in ($(out_object_file)): Depend on
5460         gt-$(basename $(notdir $(out_file))).h.
5461
5462 2009-09-28  Richard Henderson  <rth@redhat.com>
5463
5464         * except.h (struct eh_region_d): Add use_cxa_end_cleanup.
5465         * except.c (gen_eh_region): Set it.
5466         (duplicate_eh_regions_1): Copy it.
5467         * tree-eh.c (lower_resx): Use it to determine which function
5468         to call to resume.
5469
5470         * langhooks.h (struct lang_hooks): Add eh_use_cxa_end_cleanup.
5471         * langhooks-def.h (LANG_HOOKS_EH_USE_CXA_END_CLEANUP): New.
5472         * builtins.def (BUILT_IN_CXA_END_CLEANUP): New.
5473         * tree.c (build_common_builtin_nodes): Remove parameter.  Build
5474         BUILT_IN_CXA_END_CLEANUP if necessary.
5475
5476         * c-common.c (c_define_builtins): Update call to
5477         build_common_builtin_nodes.
5478
5479 2009-09-28  Andrew Pinski  <andrew_pinski@playstation.sony.com>
5480
5481         * spu.c (get_branch_target): Return NULL for ASM_OPERANDS patterns.
5482
5483 2009-09-28  Michael Matz  <matz@suse.de>
5484
5485         * builtins.c (interclass_mathfn_icode): New helper.
5486         (expand_builtin_interclass_mathfn): Use it here, and split folding
5487         into ...
5488         (fold_builtin_interclass_mathfn): ... this new folder.
5489         (build_call_nofold_loc): New static helper.
5490         (build_call_nofold): New wrapper macro for above.
5491         (expand_builtin_int_roundingfn): Use it instead of build_call_expr.
5492         (expand_builtin_pow): Ditto.
5493         (expand_builtin_memset_args): Ditto.
5494         (expand_builtin_printf): Ditto.
5495         (expand_builtin_fprintf): Ditto.
5496         (expand_builtin_sprintf): Ditto.
5497         (expand_builtin_memory_chk): Ditto.
5498         (expand_builtin_mempcpy_args): Ditto and don't call folders.
5499         (expand_builtin_stpcpy): Ditto.
5500         (expand_builtin_strcmp): Ditto.
5501         (expand_builtin_strncmp): Ditto.
5502         (expand_builtin_strcpy): Remove FNDECL and MODE arguments.
5503         (expand_builtin_strcpy_args): Don't call folders.
5504         (expand_builtin_memcmp): Ditto.
5505         (expand_builtin_strncpy): Ditto, and use target.
5506         (expand_builtin_memcpy): Ditto.
5507         (expand_builtin_strstr, expand_builtin_strchr, expand_builtin_strrchr,
5508         expand_builtin_strpbrk, expand_builtin_memmove,
5509         expand_builtin_memmove_args, expand_builtin_bcopy,
5510         expand_builtin_memchr, expand_builtin_strcat, expand_builtin_strncat,
5511         expand_builtin_strspn, expand_builtin_strcspn,
5512         expand_builtin_fputs): Remove these.
5513         (expand_builtin): Don't call the above, change calls to other
5514         expanders that changed prototype.
5515         (fold_builtin_stpcpy): New folder split out from expand_builtin_stpcpy.
5516         (fold_builtin_1 <ISFINITE, ISINF, ISNORMAL>): Call
5517         fold_builtin_interclass_mathfn.
5518         (fold_builtin_2 <STPCPY>): Call fold_builtin_stpcpy.
5519         (fold_builtin_strcat): Add folding split from expand_builtin_strcat.
5520
5521         * fold-const.c (fold_binary_loc <NE_EXPR>): Add !exp != 0 -> !exp.
5522         * passes.c (init_optimization_passes): Move pass_fold_builtins
5523         after last phiopt pass.
5524         * tree-inline.c (fold_marked_statements): When folding builtins
5525         iterate over all instruction potentially generated.
5526         * tree-ssa-ccp.c (gimplify_and_update_call_from_tree): Declare
5527         earlier.
5528         (fold_gimple_call): Use it to always fold calls (into potentially
5529         multiple instructions).
5530         * tree-ssa-dom.c (optimize_stmt): Resolve __builtin_constant_p
5531         calls into zero at this time.
5532         * tree-ssa-propagate.c (substitute_and_fold): Ignore multiple
5533         statements generated by builtin folding.
5534
5535 2009-09-28  Nick Clifton  <nickc@redhat.com>
5536
5537         * config/m32r/m32r.c (m32r_is_insn): Return false for debugging insns.
5538
5539 2009-09-28  Duncan Sands  <baldrick@free.fr>
5540
5541         * gcc-plugin.h (PLUGIN_REGISTER_GGC_CACHES): New event.
5542         * plugin.c (plugin_event_name): Add PLUGIN_REGISTER_GGC_CACHES.
5543         (register_callback): Dispatch it.
5544         (invoke_plugin_callbacks): Incorporate in sanity check.
5545         * ggc.h (ggc_register_cache_tab): Add declaration.
5546         * ggc-common.c (ggc_register_root_tab): Simplify.
5547         (const_ggc_cache_tab_t): New typedef.
5548         (extra_cache_vec): New vector of dynamically added cache tables.
5549         (ggc_register_cache_tab): New function.
5550         (ggc_scan_cache_tab): New function.
5551         (ggc_mark_roots): Simplify dynamic roots.  Handle dynamic caches.
5552         * doc/plugins.texi: Document PLUGIN_REGISTER_GGC_CACHES.
5553
5554 2009-09-27  Richard Henderson  <rth@redhat.com>
5555
5556         * tree-ssa-ccp.c (optimize_stack_restore): Relax the conditions under
5557         which we remove __builtin_stack_restore.
5558
5559 2009-09-27  Bernd Schmidt  <bernd.schmidt@analog.com>
5560
5561         * loop-iv.c (iv_analyze_op): Use function_invariant_p, not CONSTANT_P,
5562         to test for GRD_INVARIANT.
5563         (simple_rhs_p): Anything that's function_invariant_p is fine.
5564
5565 2009-09-27  Rafael Avila de Espindola  <espindola@google.com>
5566
5567         * gengtype.c (main): Use plunge_files instead of plugin_output.
5568
5569 2009-09-27  Basile Starynkevitch  <basile@starynkevitch.net>
5570             Rafael Avila de Espindola  <espindola@google.com>
5571
5572         * gengtype.c (write_root, write_roots): Add a emit_pch argument.
5573         Don't print pch related info if it is false.
5574         (main): Don't print pch info in plugin mode.
5575
5576 2009-09-27  Eric Botcazou  <ebotcazou@adacore.com>
5577
5578         * dwarf2out.c (enum dw_val_class): Replace dw_val_class_long_long
5579         with dw_val_class_const_double.
5580         (struct dw_val_struct): Replace val_long_long with val_double and
5581         adjust for above change.
5582         (output_loc_operands): Likewise.
5583         (add_AT_long_long): Rename into...
5584         (add_AT_double): ...this.
5585         (print_die): Replace dw_val_class_long_long with
5586         dw_val_class_const_double and adjust.
5587         (attr_checksum): Likewise.
5588         (same_dw_val_p): Likewise.
5589         (size_of_die): Likewise.
5590         (value_format): Likewise.
5591         (output_die): Likewise.
5592         (loc_descriptor) <CONST_DOUBLE>: Likewise.
5593         (add_const_value_attribute) <CONST_DOUBLE>: Call add_AT_double
5594         instead of add_AT_long_long.
5595         (add_bound_info) <INTEGER_CST>: Generate the bound as an unsigned
5596         value with the precision of its type.
5597
5598 2009-09-27  Andreas Schwab  <schwab@linux-m68k.org>
5599
5600         PR c/41476
5601         * c-typeck.c (build_conditional_expr): Use the readonly and
5602         volatile flags of the operand types, not of the operands itself.
5603
5604 2009-09-27  Peter O'Gorman  <pogma@thewrittenword.com>
5605
5606         * collect2.c (main): Look for -brtl before adding libraries.
5607
5608 2009-09-27  Jonathan Gray  <jsg@openbsd.org>
5609
5610         * config.gcc: Update OpenBSD targets.
5611         * config/openbsd-stdint.h: New file.
5612         * config/openbsd-libpthread.h: New file.
5613         * config/openbsd.h: Update and break out LIB_SPEC definition.
5614         * config/alpha/openbsd.h: Overhaul to reflect ELF migration.
5615         * config/i386/openbsdelf.h: Correct types.
5616         * config/m68k/openbsd.h: Likewise.
5617         * config/mips/openbsd.h: Likewise.
5618         * config/vax/openbsd.h: Likewise.
5619
5620 2009-09-27  Eric Botcazou  <ebotcazou@adacore.com>
5621
5622         * fold-const.c (maybe_lvalue_p): Return false for M(IN|AX)_EXPR.
5623         (extract_muldiv_1) <MINUS_EXPR>: Swap operands if necessary.
5624         * stor-layout.c (layout_type) <ARRAY_TYPE>: Do not take the maximum
5625         of the length and zero.
5626
5627 2009-09-27  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
5628
5629         * Makefile.in (TOPLEV_H): Use $(INPUT_H) not input.h.
5630         (FLAGS_H): Add options.h $(REAL_H).
5631         (SEL_SCHED_IR_H): Add $(BITMAP_H) vecprim.h $(CFGLOOP_H).
5632         (TREE_VECTORIZER_H): New.
5633         (EBITMAP_H): Renamed from EBIMAP_H.
5634         (c-decl.o, c-objc-common.o, c-pretty-print.o, attribs.o, c-omp.o)
5635         (gtype-desc.o, ggc-common.o, ggc-page.o, ggc-zone.o, langhooks.o)
5636         (tree.o, tree-ssa-structalias.o, tree-ssa-ter.o, tree-ssanames.o)
5637         (tree-phinodes.o, tree-ssa-loop.o, tree-ssa-math-opts.o)
5638         (gimple-low.o, omp-low.o, sese.o, graphite-blocking.o)
5639         (graphite-clast-to-gimple.o, graphite-dependences.o)
5640         (graphite-interchange.o, graphite-poly.o, graphite-scop-detection.o)
5641         (graphite-sese-to-poly.o, tree-vect-loop.o, tree-vect-loop-manip.o)
5642         (tree-vect-patterns.o, tree-vect-slp.o, tree-vect-stmts.o)
5643         (tree-vect-data-refs.o, tree-vectorizer.o, gimple.o, tree-mudflap.o)
5644         (targhooks.o, stmt.o, emit-rtl.o, ipa.o, matrix-reorg.o, ipa-inline.o)
5645         (gcse.o, tree-ssa-ccp.o, df-byte-scan.o, vec.o, caller-save.o)
5646         (ira-build.o, ira-costs.o, ira-color.o, ira-emit.o, ira.o)
5647         (haifa-sched.o, sched-rgn.o, sel-sched.o, sel-sched-dump.o)
5648         (sel-sched-ir.o, final.o, $(out_object_file)): Dependencies
5649         updated and fixed as per above changes and per
5650         check_makefile_deps.sh output.
5651
5652         PR bootstrap/40928
5653         * configure.ac: Use $LIBS for '-ldl', not $LDFLAGS.
5654         * configure: Regenerate.
5655
5656 2009-09-26  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
5657
5658         * doc/install.texi: Update minimum MPC version to 0.7.
5659
5660 2009-09-26  Gerald Pfeifer  <gerald@pfeifer.com>
5661
5662         * doc/install.texi (Binaries): Remove reference to the binary
5663         distribution CD-ROM from the FSF.
5664
5665 2009-09-26  Michael Matz  <matz@suse.de>
5666
5667         PR lto/40758
5668         PR middle-end/41470
5669         * tree-ssa-coalesce.c (coalesce_ssa_name): Add only SSA names
5670         that are mentioned in the body.
5671
5672 2009-09-26  Michael Matz  <matz@suse.de>
5673
5674         PR tree-optimization/41454
5675         * tree-ssa-dom (stmts_to_rescan): Remove variable.
5676         (tree_ssa_dominator_optimize): Don't allocate and free it.
5677         (dom_opt_leave_block): Don't iterate over it.
5678         (eliminate_redundant_computations): Don't return a value.
5679         (cprop_operand, cprop_into_stmt): Ditto.
5680         (optimize_stmt): Don't defer updating stmts.
5681
5682 2009-09-25  Dodji Seketeli  <dodji@redhat.com>
5683
5684         * dwarf2out.c (dwarf_tag_name, gen_generic_params_dies,
5685         generic_parameter_die, template_parameter_pack_die,
5686         gen_formal_parameter_die, gen_subprogram_die): Adjust after
5687         renaming DW_TAG_formal_parameter_pack and
5688         DW_TAG_template_parameter_pack into DW_TAG_GNU_formal_parameter_pack
5689         and DW_TAG_GNU_template_parameter_pack.
5690
5691 2009-09-25  Anatoly Sokolov  <aesok@post.ru>
5692
5693         * config/v850/v850.h (FUNCTION_VALUE): Remove.
5694         * config/v850/v850.c (v850_function_value): New function.
5695         (TARGET_FUNCTION_VALUE): Define.
5696
5697 2009-09-25  Jakub Jelinek  <jakub@redhat.com>
5698
5699         * tree-vect-stmts.c (vectorizable_call): Call
5700         mark_symbols_for_renaming after vect_finish_stmt_generation.
5701
5702         * dwarf2out.c (tls_mem_loc_descriptor): Pass 1 instead of 2
5703         to loc_descriptor_from_tree.
5704         (add_location_or_const_value_attribute): Pass 0 instead of 2
5705         for decl_by_reference_p decls.
5706
5707 2009-09-25  Richard Guenther  <rguenther@suse.de>
5708
5709         PR middle-end/41463
5710         * tree-dfa.c (get_ref_base_and_extent): Fix issue with trailing
5711         arrays again.
5712
5713 2009-09-25  Ben Elliston  <bje@au.ibm.com>
5714
5715         * doc/invoke.texi (RS/6000 and PowerPC Options): Add missing comma
5716         after `power7'.
5717
5718 2009-09-25  Alan Modra  <amodra@bigpond.net.au>
5719
5720         * config/rs6000/rs6000.md (load_toc_v4_PIC_3c): Correct POWER
5721         form of instruction.
5722
5723 2009-09-24  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
5724
5725         PR middle-end/41435
5726         * fold-const.c (const_binop): Handle complex int division.
5727         * tree-complex.c (expand_complex_div_straight,
5728         expand_complex_div_wide): Update comments.
5729
5730 2009-09-24  DJ Delorie  <dj@redhat.com>
5731
5732         PR target/41456
5733         * config/m32c/m32c.h (REG_CLASS_CONTENTS): Add R13.
5734         (reg_class): Likewise.
5735         (REG_CLASS_NAMES): Likewise.
5736         * config/m32c/m32c.c (m32c_reg_class_from_constraint): Likewise.
5737         (m32c_override_options): Disable -fivopts for M32C.
5738
5739 2009-09-24  Michael Meissner  <meissner@linux.vnet.ibm.com>
5740
5741         * config/rs6000/predicates.md (indexed_or_indirect_operand):
5742         Delete VSX load/store with update support.
5743         * config/rs6000/rs6000.c (rs6000_legitimate_address_p): Ditto.
5744         * config/rs6000/vsx.md (vsx_mov<mode>): Ditto.
5745         (vsx_movti): Ditto.
5746         (VSX_U): Delete.
5747         (VSbit): Ditto.
5748         (VStype_load_update): Ditto.
5749         (VStype_store_update): Ditto.
5750         (vsx_load<VSX_U:mode>_update_<P:mptrsize>): Ditto.
5751         (vsx_store<VSX_U:mode>_update_<P:mptrsize>): Ditto.
5752
5753         * config/rs6000/rs6000.h (enum rs6000_builtins): Delete VSX
5754         load/store with update builtins.
5755
5756 2009-09-24  Kai Tietz  <kai.tietz@onevision.com>
5757
5758         * libgcc2.c (L_trampoline): Prototype for getpagesize
5759         and mprotect in WINNT case.
5760
5761 2009-09-24  Anatoly Sokolov  <aesok@post.ru>
5762
5763         * config/rs6000/rs6000.h (FUNCTION_VALUE): Remove macro.
5764         * config/rs6000/rs6000-protos.h (rs6000_function_value): Remove.
5765         * config/rs6000/rs6000.c (rs6000_function_value): Make static, add
5766         'outgoing' argument.
5767         (TARGET_FUNCTION_VALUE): Define.
5768
5769 2009-09-24  Iain Sandoe  <iain.sandoe@sandoe-acoustics.co.uk>
5770
5771         * config/darwin.h (DWARF2_DEBUGGING_INFO): Define as 1.
5772
5773 2009-09-24  Iain Sandoe  <iain.sandoe@sandoe-acoustics.co.uk>
5774
5775         PR bootstrap/41405
5776         * common.opt: Initialize dwarf_strict to -1.
5777         * toplev.c (process_options): Catch unset dwarf_strict
5778         and set to 0 for all targets not overriding.
5779         * config/darwin.c (darwin_override_options): Catch unset
5780         dwarf_strict and override to 1.
5781
5782 2009-09-24  Jeff Law  <law@redhat.com>
5783
5784         * tree-into-ssa.c (rewrite_into_ssa): Free interesting_blocks.
5785
5786 2009-09-24  Richard Guenther  <rguenther@suse.de>
5787
5788         PR tree-optimization/36143
5789         PR tree-optimization/38747
5790         * tree-ssa-forwprop.c (forward_propagate_addr_expr_1): Only
5791         create VIEW_CONVERT_EXPRs for TBAA compatible accesses.
5792
5793 2009-09-24  Jakub Jelinek  <jakub@redhat.com>
5794
5795         PR bootstrap/41457
5796         * dwarf2out.c (add_const_value_attribute): For HIGH and CONST_FIXED,
5797         return false instead of gcc_unreachable ().  For CONST return the
5798         value returned by recursive call instead of always returning true.
5799         (tree_add_const_value_attribute): Return the value returned by
5800         add_const_value_attribute instead of always returning true if rtl
5801         is non-NULL.
5802
5803 2009-09-23  Justin Seyster  <jrseys@gmail.com>
5804
5805         * Makefile.in (PLUGIN_HEADERS): Include real.h.
5806
5807 2009-09-24  Jakub Jelinek  <jakub@redhat.com>
5808
5809         * cgraphunit.c (cgraph_lower_function): Revert last change.
5810         * targhooks.c (default_static_chain): Use !DECL_STATIC_CHAIN
5811         instead of DECL_NO_STATIC_CHAIN.
5812         * tree-cfg.c (verify_gimple_call): Likewise.
5813         * tree-nested.c (get_chain_decl, get_chain_field,
5814         convert_tramp_reference_op, convert_gimple_call): Likewise.
5815         (convert_all_function_calls): Likewise.  Always set or clear
5816         DECL_STATIC_CHAIN initially, for !n->outer clear it.
5817         (lower_nested_functions): Remove DECL_NO_STATIC_CHAIN checking code.
5818         * c-parser.c (c_parser_declaration_or_fndef): Set DECL_STATIC_CHAIN
5819         if nested.
5820         * print-tree.c (print_node): Handle DECL_STATIC_CHAIN instead of
5821         DECL_NO_STATIC_CHAIN.
5822         * config/i386/i386.c (ix86_static_chain): Use !DECL_STATIC_CHAIN
5823         instead of DECL_NO_STATIC_CHAIN.
5824         (ix86_function_regparm, find_drap_reg): Likewise.  Don't test
5825         decl_function_context.
5826         * varasm.c (initializer_constant_valid_p): Likewise.
5827         * tree.h (DECL_NO_STATIC_CHAIN): Renamed to ...
5828         (DECL_STATIC_CHAIN): ... this.
5829         * config/moxie/moxie.c (moxie_static_chain): Use !DECL_STATIC_CHAIN
5830         instead of DECL_NO_STATIC_CHAIN.
5831
5832 2009-09-23  Basile Starynkevitch  <basile@starynkevitch.net>
5833             Rafael Avila de Espindola  <espindola@google.com>
5834
5835         * gengtype.c (nb_plugin_files): Make it unsigned to match
5836         num_gt_files. Adjust other variables to avoid warnings.
5837         (main): Allocate an all zero lang_bitmap before each plugin file name
5838         to match regular file names.
5839
5840 2009-09-23  Richard Henderson  <rth@redhat.com>
5841
5842         * doc/tm.texi (STATIC_CHAIN, STATIC_CHAIN_INCOMING): Remove.
5843         (TARGET_STATIC_CHAIN): Mention that this hook must be used for
5844         static chain passed in memory.
5845         * system.h (STATIC_CHAIN, STATIC_CHAIN_INCOMING): Poison.
5846         * targhooks.c (default_static_chain): Don't handle STATIC_CHAIN,
5847         STATIC_CHAIN_INCOMING.  Issue a sorry if there's no
5848         STATIC_CHAIN_REGNUM defined.
5849
5850         * config/picochip/picochip-protos.h: s/class/klass/.
5851         * config/picochip/picochip.c (TARGET_STATIC_CHAIN): New.
5852         (picochip_static_chain): New.
5853         * config/picochip/picochip.h (STATIC_CHAIN): Remove.
5854         (STATIC_CHAIN_INCOMING): Remove.
5855
5856         * config/xtensa/xtensa.c (TARGET_STATIC_CHAIN): New.
5857         (xtensa_static_chain): New.
5858         * config/xtensa/xtensa.h (STATIC_CHAIN): Remove.
5859         (STATIC_CHAIN_INCOMING): Remove.
5860
5861 2009-09-23  Anatoly Sokolov  <aesok@post.ru>
5862
5863         * config/pa/pa.h (FUNCTION_VALUE): Remove macro.
5864         * config/pa/pa-protos.h (function_value): Remove.
5865         * config/pa/pa.c (pa_function_value): Rename from function_value.
5866         Make static, add 'outgoing' argument.
5867         (TARGET_FUNCTION_VALUE): Define.
5868
5869 2009-09-23  Anatoly Sokolov  <aesok@post.ru>
5870
5871         * config/avr/avr.c (avr_regs_to_save): Use current_function_is_leaf
5872         instead of cfun->machine->is_leaf.
5873         * config/avr/avr.h (machine_function): Remove is_leaf field.
5874
5875 2009-09-23  Jakub Jelinek  <jakub@redhat.com>
5876
5877         PR debug/41439
5878         * dwarf2out.c (address_of_int_loc_descriptor): Don't emit
5879         DW_OP_piece after DW_OP_stack_value, adjust size calculations
5880         for it, when DW_OP_stack_value and DW_OP_implicit_value has
5881         the same size, prefer DW_OP_stack_value.
5882         (loc_descriptor, loc_list_for_address_of_addr_expr_of_indirect_ref,
5883         loc_list_from_tree): Don't emit DW_OP_piece after DW_OP_stack_value.
5884
5885 2009-09-23  Alexandre Oliva  <aoliva@redhat.com>
5886
5887         PR debug/41353
5888         * var-tracking.c (add_with_sets): Sort MO_VAL_LOC last among uses.
5889
5890 2009-09-23  Alexandre Oliva  <aoliva@redhat.com>
5891
5892         PR debug/41248
5893         * cfgexpand.c (convert_debug_memory_address): New.
5894         (expand_debug_expr): Convert base address and offset to the same
5895         mode.  Use it to convert addresses to other modes.  Accept
5896         ptr_mode addresses.
5897
5898 2009-09-23  Dodji Seketeli <dodji@redhat.com>
5899
5900         PR debug/41065
5901         * function.h (types_used_by_vars_hash): Declare new hash table.
5902         (types_used_by_vars_eq, types_used_by_var_decl_insert): Declare
5903         equality and hash function for the hash table.
5904         (types_used_by_cur_var_decl): Declare a new global chained list.
5905         (types_used_by_var_decl_insert): Declare new function.
5906         * function.c (types_used_by_vars_hash): Define the hashtable ...
5907         (types_used_by_vars_eq, types_used_by_vars_do_hash): ... as well as
5908         its equality and hash functions.
5909         (hash_types_used_by_vars_entry): New hash helper.
5910         (types_used_by_cur_var_decl): Define the global chained list.
5911         (used_types_insert): Update the list of types used by the global
5912         variable being parsed.
5913         (types_used_by_var_decl_insert): Define new function.
5914         * c-common.h (record_types_used_by_current_var_decl): Declare ...
5915         * c-common.c (record_types_used_by_current_var_decl): ... new
5916         function.
5917         * c-decl.c (finish_decl): Record the types used by the global
5918         variable declaration we've just parsed.
5919         * dwarf2out.c (premark_used_types): Insert a new line between
5920         comment and function.
5921         (premark_used_types_helper): Fix comment.
5922         (premark_types_used_by_global_vars_helper,
5923         premark_types_used_by_global_vars): New functions.
5924         (prune_unused_types): Do not prune types used by global variables.
5925
5926 2009-09-23  Richard Guenther  <rguenther@suse.de>
5927
5928         * alias.c (ao_ref_from_mem): Correct for negative MEM_OFFSET
5929         produced for bigendian targets with promoted subregs.
5930
5931 2009-09-23  Richard Guenther  <rguenther@suse.de>
5932
5933         * value-prof.c (gimple_ic): Purge old EH edges only after building
5934         the new ones.
5935
5936 2009-09-23  Nick Clifton  <nickc@redhat.com>
5937
5938         * config/arc/arc.c (arc_trampoline_init): Fix typo.
5939
5940 2009-09-23  Jakub Jelinek  <jakub@redhat.com>
5941
5942         PR bootstrap/41405
5943         * doc/invoke.texi: Document -gstrict-dwarf and -gno-strict-dwarf.
5944
5945         PR bootstrap/41436
5946         * cgraphunit.c (cgraph_lower_function): Set DECL_NO_STATIC_CHAIN
5947         on non-nested functions.
5948
5949 2009-09-23  Jakub Jelinek  <jakub@redhat.com>
5950             Jan Hubicka  <jh@suse.cz>
5951
5952         * dwarf2out.c (loc_list_plus_const): Only define if
5953         DWARF2_DEBUGGING_INFO.
5954         (address_of_int_loc_descriptor): Likewise.
5955
5956         PR debug/41411
5957         * dwarf2out.c (mem_loc_descriptor): Handle HIGH.
5958
5959 2009-09-23  Uros Bizjak  <ubizjak@gmail.com>
5960
5961         PR c/39779
5962         * c-typeck.c (build_binary_op) <short_shift>: Check that integer
5963         constant is more than zero.
5964
5965 2009-09-23  Alan Modra  <amodra@bigpond.net.au>
5966
5967         PR target/40473
5968         * config/rs6000/rs6000.c (rs6000_output_function_prologue): Don't
5969         call final to emit non-scheduled prologue, instead insert at entry.
5970
5971 2009-09-22  Loren J. Rittle  <ljrittle@acm.org>
5972             Joseph S. Myers  <joseph@codesourcery.com>
5973
5974         * doc/install.texi (*-*-freebsd*): Add proper format codes.
5975
5976 2009-09-22  Basile Starynkevitch  <basile@starynkevitch.net>
5977             Rafael Avila de Espindola  <espindola@google.com>
5978
5979         * gengtype.c (is_file_equal): New function.
5980         (close_output_files): Use is_file_equal. Free of->buf.
5981
5982 2009-09-22  Basile Starynkevitch  <basile@starynkevitch.net>
5983             Rafael Avila de Espindola  <espindola@google.com>
5984
5985         * gengtype.c (write_types, write_local): Add the output_header
5986         argument. Update all callers.
5987
5988 2009-09-22  Dodji Seketeli  <dodji@redhat.com>
5989
5990         * dwarf2out.c (template_parameter_pack_die,
5991         gen_formal_parameter_pack_die ): New functions.
5992         (make_ith_pack_parameter_name): Remove this function.
5993         (dwarf_tag_name): Support printing DW_TAG_template_parameter_pack and
5994         DW_TAG_formal_parameter_pack.
5995         (gen_generic_params_dies): Represent each template parameter pack
5996         by a DW_TAG_template_parameter_pack DIE. Argument pack elements are
5997         represented by usual DW_TAG_template_*_parameter DIEs that are
5998         children of the DW_TAG_template_parameter_pack element DIE.
5999         (generic_parameter_die): This doesn't deal with parameter pack
6000         names anymore. Don't generate DW_AT_name for some DIEs, e.g. children
6001         of parameter pack DIEs.
6002         (gen_formal_parameter_die): Add a flag to not emit DW_AT_name
6003         in certain cases, e.g. for pack elements.
6004         (gen_formal_types_die, gen_decl_die): Adjust usage of
6005         gen_formal_parameter_die.
6006         (gen_subprogram_die): Represent each function parameter pack by a
6007         DW_TAG_formal_parameter_pack DIE. Arguments of of the pack are
6008         represented by usual DW_TAG_formal_parameter DIEs that are children
6009         of the DW_TAG_formal_parameter_pack DIE. Remove references to
6010         ____builtin_va_alist decls as no part of the compiler uses those
6011         anymore.
6012         * langhooks.h (struct lang_hooks_for_decls): Add
6013         function_parm_expanded_from_pack_p, get_generic_function_decl
6014         and function_parameter_pack_p hooks.  Fix comment for
6015         get_innermost_generic_parms hook.
6016         * langhooks-def.h (LANG_HOOKS_FUNCTION_PARAMETER_PACK_P,
6017         LANG_HOOKS_FUNCTION_PARM_EXPANDED_FROM_PACK_P ): Declare new hook
6018         macros and use them to initialize lang_hook.
6019
6020 2009-09-22  Richard Henderson  <rth@redhat.com>
6021
6022         * system.h (TRAMPOLINE_TEMPLATE, INITIALIZE_TRAMPOLINE): Poison.
6023         (TRAMPOLINE_ADJUST_ADDRESS): Poison.
6024         * target-def.h (TARGET_ASM_TRAMPOLINE_TEMPLATE): Don't conditionalize
6025         on TRAMPOLINE_TEMPLATE.
6026         (TARGET_TRAMPOLINE_ADJUST_ADDRESS): Don't conditionalize on
6027         TRAMPOLINE_ADJUST_ADDRESS.
6028         * targhooks.c (default_asm_trampoline_template): Remove.
6029         (default_trampoline_adjust_address): Remove.
6030         (default_trampoline_init): Don't handle INITIALIZE_TRAMPOLINE.
6031         * targhooks.h: Update decls.
6032
6033 2009-09-22  Dave Korn  <dave.korn.cygwin@gmail.com>
6034
6035         * config/i386/cygming.h (TARGET_USE_JCR_SECTION): Enable.
6036         * config/i386/cygwin.h (LIBGCJ_SONAME): Define.
6037         * config/i386/mingw32.h (LIBGCJ_SONAME): Likewise.
6038
6039 2009-09-22  Alexandre Oliva  <aoliva@redhat.com>
6040
6041         PR debug/41295
6042         * reload1.c (reload): Reset debug insns with pseudos without
6043         equivalences.
6044
6045 2009-09-22  Janis Johnson  <janis187@us.ibm.com>
6046
6047         * config/i386/i386.c (ix86_scalar_mode_supported_p): Don't return
6048         unconditional true for decimal float modes.
6049         * config/rs6000/rs6000.c (rs6000_scalar_mode_supported_p): Ditto.
6050         * config/s390/s390.c (s390_scalar_mode_supported_p): Ditto.
6051
6052 2009-09-22  Loren J. Rittle  <ljrittle@acm.org>
6053
6054         * unwind-dw2-fde-glibc.c: Define and use USE_PT_GNU_EH_FRAME.
6055         Enable a new case for __FreeBSD__ >= 7.
6056         * crtstuff.c:  Define USE_PT_GNU_EH_FRAME for __FreeBSD__ >= 7.
6057         * config/t-freebsd: Define LIB2ADDEH and LIB2ADDEHDEP.
6058         * config/freebsd-spec.h: Conditionally define LINK_EH_SPEC
6059         and USE_LD_AS_NEEDED.
6060
6061         * doc/install.texi (*-*-freebsd*): Update target information.
6062
6063 2009-09-22  Richard Guenther  <rguenther@suse.de>
6064
6065         PR middle-end/41395
6066         * tree-dfa.c (get_ref_base_and_extent): Handle trailing
6067         arrays really properly.
6068
6069 2009-09-22  Richard Henderson  <rth@redhat.com>
6070
6071         PR target/41246
6072         * target.h (struct gcc_target): Add asm_out.trampoline_template,
6073         calls.static_chain, calls.trampoline_init,
6074         calls.trampoline_adjust_address.
6075         * target-def.h (TARGET_ASM_TRAMPOLINE_TEMPLATE): New.
6076         (TARGET_STATIC_CHAIN, TARGET_TRAMPOLINE_INIT): New.
6077         (TARGET_TRAMPOLINE_ADJUST_ADDRESS): New.
6078         * builtins.c (expand_builtin_setjmp_receiver): Use
6079         targetm.calls.static_chain; only clobber registers.
6080         (expand_builtin_init_trampoline): Use targetm.calls.trampoline_init;
6081         set up memory attributes properly for the trampoline block.
6082         (expand_builtin_adjust_trampoline): Use
6083         targetm.calls.trampoline_adjust_address.
6084         * calls.c (prepare_call_address): Add fndecl argument.  Use
6085         targetm.calls.static_chain.
6086         * df-scan.c (df_need_static_chain_reg): Remove.
6087         (df_get_entry_block_def_set): Use targetm.calls.static_chain;
6088         consolodate static chain handling.
6089         * doc/tm.texi: Document new hooks.
6090         * emit-rtl.c (static_chain_rtx, static_chain_incoming_rtx): Remove.
6091         (init_emit_regs): Don't initialize them.
6092         * expr.h (prepare_call_address): Update decl.
6093         * final.c (profile_function): Use targetm.calls.static_chain.
6094         * function.c (expand_function_start): Likewise.
6095         * rtl.h (static_chain_rtx, static_chain_incoming_rtx): Remove.
6096         * stmt.c (expand_nl_goto_receiver): Use targetm.calls.static_chain;
6097         only clobber registers.
6098         * targhooks.c (default_static_chain): New.
6099         (default_asm_trampoline_template, default_trampoline_init): New.
6100         (default_trampoline_adjust_address): New.
6101         * targhooks.h: Declare them.
6102         * varasm.c (assemble_trampoline_template): Use
6103         targetm.asm_out.trampoline_template.  Make the memory block const
6104         and set its size.
6105
6106         * config/alpha/alpha.c (alpha_trampoline_init): Rename from
6107         alpha_initialize_trampoline.  Make static.  Merge VMS parameter
6108         differences into the TARGET_ABI_OPEN_VMS code block.
6109         (TARGET_TRAMPOLINE_INIT): New.
6110         * config/alpha/alpha.h (TRAMPOLINE_TEMPLATE): Remove.
6111         (TRAMPOLINE_SECTION, INITIALIZE_TRAMPOLINE): Remove.
6112         * config/alpha/vms.h (TRAMPOLINE_SIZE, TRAMPOLINE_ALIGNMENT): Remove.
6113         (INITIALIZE_TRAMPOLINE): Remove.
6114
6115         * config/arc/arc.h (TRAMPOLINE_ALIGNMENT): New.
6116         (TRAMPOLINE_TEMPLATE): Merge with ...
6117         (INITIALIZE_TRAMPOLINE): ... this and move ...
6118         * config/arc/arc.c (arc_trampoline_init): ... here.
6119         (TARGET_TRAMPOLINE_INIT): New.
6120
6121         * config/arm/arm.c (TARGET_ASM_TRAMPOLINE_TEMPLATE): New.
6122         (TARGET_TRAMPOLINE_INIT, TARGET_TRAMPOLINE_ADJUST_ADDRESS): New.
6123         (arm_asm_trampoline_template): New.
6124         (arm_trampoline_init, arm_trampoline_adjust_address): New.
6125         * config/arm/arm.h (TRAMPOLINE_TEMPLATE, ARM_TRAMPOLINE_TEMPLATE,
6126         THUMB2_TRAMPOLINE_TEMPLATE, THUMB1_TRAMPOLINE_TEMPLATE): Move all
6127         code to arm_asm_trampoline_template.
6128         (TRAMPOLINE_ADJUST_ADDRESS): Move code to
6129         arm_trampoline_adjust_address.
6130         (INITIALIZE_TRAMPOLINE): Move code to arm_trampoline_init;
6131         adjust for target hook parameters.
6132
6133         * config/avr/avr.h (TRAMPOLINE_TEMPLATE, INITIALIZE_TRAMPOLINE):
6134         Remove.
6135
6136         * config/bfin/bfin-protos.h (initialize_trampoline): Remove.
6137         * config/bfin/bfin.c (bfin_asm_trampoline_template): New.
6138         (bfin_trampoline_init): Rename from initialize_trampoline;
6139         make static; update for target hook parameters.
6140         (TARGET_ASM_TRAMPOLINE_TEMPLATE, TARGET_TRAMPOLINE_INIT): New.
6141         * config/bfin/bfin.h (TRAMPOLINE_TEMPLATE): Move code to
6142         bfin_asm_trampoline_template.
6143         (INITIALIZE_TRAMPOLINE): Remove.
6144
6145         * config/cris/cris.c (TARGET_ASM_TRAMPOLINE_TEMPLATE,
6146         TARGET_TRAMPOLINE_INIT, cris_asm_trampoline_template,
6147         cris_trampoline_init): New.
6148         * config/cris/cris.h (TRAMPOLINE_TEMPLATE): Move code to
6149         cris_asm_trampoline_template.
6150         (INITIALIZE_TRAMPOLINE): Move code to cris_trampoline_init;
6151         adjust for target hook parameters.
6152
6153         * config/crx/crx.h (INITIALIZE_TRAMPOLINE): Remove.
6154
6155         * config/fr30/fr30.c (TARGET_ASM_TRAMPOLINE_TEMPLATE,
6156         TARGET_TRAMPOLINE_INIT, fr30_asm_trampoline_template,
6157         fr30_trampoline_init): New.
6158         * config/fr30/fr30.h (TRAMPOLINE_TEMPLATE): Move code to
6159         fr30_asm_trampoline_template.
6160         (INITIALIZE_TRAMPOLINE): Move code to fr30_trampoline_init;
6161         adjust for target hook parameters.
6162
6163         * config/frv/frv.c (TARGET_TRAMPOLINE_INIT): New.
6164         (frv_trampoline_init): Rename from frv_initialize_trampoline;
6165         make static, adjust arguments for TARGET_TRAMPOLINE_INIT hook.
6166         * config/frv/frv.h (INITIALIZE_TRAMPOLINE): Remove.
6167         * config/frv/frv-protos.h (frv_initialize_trampoline): Remove.
6168
6169         * config/h8300/h8300.c (h8300_trampoline_init): New.
6170         (TARGET_TRAMPOLINE_INIT): New.
6171         * config/h8300/h8300.h (INITIALIZE_TRAMPOLINE): Move code
6172         to h8300_trampoline_init and adjust for hook parameters.
6173
6174         * config/ia64/ia64-protos.h (ia64_initialize_trampoline): Remove.
6175         * config/ia64/ia64.c (TARGET_TRAMPOLINE_INIT): New.
6176         (ia64_trampoline_init): Rename from ia64_initialize_trampoline;
6177         make static; adjust for hook parameters.
6178         * config/ia64/ia64.h (INITIALIZE_TRAMPOLINE): Remove.
6179
6180         * config/iq2000/iq2000.c (TARGET_ASM_TRAMPOLINE_TEMPLATE): New.
6181         (TARGET_TRAMPOLINE_INIT): New.
6182         (iq2000_asm_trampoline_template, iq2000_trampoline_init): New.
6183         * config/iq2000/iq2000.h (TRAMPOLINE_TEMPLATE): Move code to
6184         iq2000_asm_trampoline_template.
6185         (INITIALIZE_TRAMPOLINE): Move code to iq2000_trampoline_init.
6186         (TRAMPOLINE_CODE_SIZE): New.
6187         (TRAMPOLINE_SIZE): Use it.
6188         (TRAMPOLINE_ALIGNMENT): Follow Pmode.
6189
6190         * config/m32c/m32c-protos.h (m32c_initialize_trampoline): Remove.
6191         * config/m32c/m32c.c (TARGET_TRAMPOLINE_INIT): New.
6192         (m32c_trampoline_init): Rename from m32c_initialize_trampoline;
6193         adjust for hook parameters.
6194         * config/m32c/m32c.h (INITIALIZE_TRAMPOLINE): Remove.
6195
6196         * config/m32r/m32r.c (TARGET_TRAMPOLINE_INIT): New.
6197         (m32r_trampoline_init): New.
6198         * config/m32r/m32r.h (INITIALIZE_TRAMPOLINE): Move code to
6199         m32r_trampoline_init.
6200
6201         * config/m68hc11/m68hc11.c (TARGET_TRAMPOLINE_INIT): New.
6202         (m68hc11_trampoline_init): Rename from m68hc11_initialize_trampoline;
6203         make static; update for hook parameters.
6204         * config/m68hc11/m68hc11-protos.h: Update.
6205         * config/m68hc11/m68hc11.h (INITIALIZE_TRAMPOLINE): Remove.
6206
6207         * config/mcore/mcore.c (TARGET_ASM_TRAMPOLINE_TEMPLATE): New.
6208         (TARGET_TRAMPOLINE_INIT): New.
6209         (mcore_function_value): Fix typo.
6210         (mcore_asm_trampoline_template, mcore_trampoline_init): New.
6211         * config/mcore/mcore.h (TRAMPOLINE_TEMPLATE): Move code
6212         to mcore_asm_trampoline_template.
6213         (INITIALIZE_TRAMPOLINE): Move code to mcore_trampoline_init.
6214
6215         * config/mep/mep.h (INITIALIZE_TRAMPOLINE): Remove.
6216         * config/mep/mep.c (TARGET_TRAMPOLINE_INIT): New.
6217         (mep_trampoline_init): Rename from mep_init_trampoline; make static;
6218         update for hook parameters.
6219         * config/mep/mep-protos.h (mep_init_trampoline): Remove.
6220
6221         * config/mips/mips.c (TARGET_ASM_TRAMPOLINE_TEMPLATE,
6222         mips_asm_trampoline_template, TARGET_TRAMPOLINE_INIT,
6223         mips_trampoline_init): New.
6224         * config/mips/mips.h (TRAMPOLINE_TEMPLATE): Move code to
6225         mips_asm_trampoline_template.
6226         (INITIALIZE_TRAMPOLINE): Move code to mips_trampoline_init;
6227         update for hook parameters.
6228
6229         * gcc/config/mmix/mmix.c (TARGET_ASM_TRAMPOLINE_TEMPLATE): New.
6230         (TARGET_TRAMPOLINE_INIT): New.
6231         (mmix_trampoline_size): Remove.
6232         (mmix_asm_trampoline_template): Rename from mmix_trampoline_template;
6233         make static.  Remove out-of-date tetra vs octa comment.
6234         (mmix_trampoline_init): Rename from mmix_initialize_trampoline;
6235         make static; update for hook parameters.
6236         * config/mmix/mmix.h (TRAMPOLINE_TEMPLATE): Remove.
6237         (INITIALIZE_TRAMPOLINE): Remove.
6238         (TRAMPOLINE_SIZE): Use a constant instead of mmix_trampoline_size.
6239         (TRAMPOLINE_ALIGNMENT): New.
6240         * gcc/config/mmix/mmix-protos.h: Update.
6241
6242         * config/mn10300/mn10300.c (TARGET_ASM_TRAMPOLINE_TEMPLATE,
6243         mn10300_asm_trampoline_template, TARGET_TRAMPOLINE_INIT,
6244         mn10300_trampoline_init): New.
6245         * config/mn10300/mn10300.h (TRAMPOLINE_TEMPLATE): Move code to
6246         mn10300_asm_trampoline_template.
6247         (INITIALIZE_TRAMPOLINE): Move code to mn10300_trampoline_init.
6248
6249         * config/moxie/moxie.c (moxie_static_chain,
6250         moxie_asm_trampoline_template, moxie_trampoline_init,
6251         TARGET_STATIC_CHAIN, TARGET_ASM_TRAMPOLINE_TEMPLATE,
6252         TARGET_TRAMPOLINE_INIT): New.
6253         * config/moxie/moxie.h (INITIALIZE_TRAMPOLINE): Move code to
6254         moxie_trampoline_init.
6255         (TRAMPOLINE_TEMPLATE): Move code to moxie_asm_trampoline_template.
6256         (STATIC_CHAIN, STATIC_CHAIN_INCOMING): Remove.
6257
6258         * gcc/config/pa/pa.c (TARGET_ASM_TRAMPOLINE_TEMPLATE,
6259         pa_asm_trampoline_template, TARGET_TRAMPOLINE_INIT,
6260         pa_trampoline_init, TARGET_TRAMPOLINE_ADJUST_ADDRESS,
6261         pa_trampoline_adjust_address): New.
6262         * config/pa/pa.h (TRAMPOLINE_TEMPLATE): Move code to
6263         pa_asm_trampoline_template.
6264         (TRAMPOLINE_ALIGNMENT): New.
6265         (TRAMPOLINE_CODE_SIZE): Move to pa.c.
6266         (INITIALIZE_TRAMPOLINE): Move code to pa_trampoline_init;
6267         adjust for hook parameters.
6268         (TRAMPOLINE_ADJUST_ADDRESS): Move code to pa_trampoline_adjust_address.
6269
6270         * config/pdp11/pdp11.c (pdp11_trampoline_init): New.
6271         (TARGET_TRAMPOLINE_INIT): New.
6272         * config/pdp11/pdp11.h (TRAMPOLINE_TEMPLATE): Remove.
6273         (INITIALIZE_TRAMPOLINE): Move code to pdp11_trampoline_init.
6274
6275         * config/picochip/picochip.h (INITIALIZE_TRAMPOLINE): Remove.
6276
6277         * config/rs6000/rs6000-protos.h (rs6000_initialize_trampoline): Remove.
6278         * config/rs6000/rs6000.c (TARGET_TRAMPOLINE_INIT): New.
6279         (rs6000_trampoline_init): Rename from rs6000_initialize_trampoline;
6280         make static; adjust parameters for the hook.
6281         * config/rs6000/rs6000.h (INITIALIZE_TRAMPOLINE): Remove.
6282
6283         * config/s390/s390.c (s390_asm_trampoline_template): Rename from
6284         s390_trampoline_template; make static.
6285         (s390_trampoline_init): Rename from s390_initialize_trampoline;
6286         make static; adjust for target hook.
6287         (TARGET_ASM_TRAMPOLINE_TEMPLATE, TARGET_TRAMPOLINE_INIT): New.
6288         * config/s390/s390-protos.h: Remove trampoline decls.
6289         * config/s390/s390.h (INITIALIZE_TRAMPOLINE): Remove.
6290         (TRAMPOLINE_TEMPLATE): Remove.
6291         (TRAMPOLINE_ALIGNMENT): New.
6292
6293         * config/score/score-protos.h (score_initialize_trampoline): Remove.
6294         * config/score/score.c (TARGET_ASM_TRAMPOLINE_TEMPLATE): New.
6295         (TARGET_TRAMPOLINE_INIT): New.
6296         (score_asm_trampoline_template): New.
6297         (score_trampoline_init): Rename from score_initialize_trampoline;
6298         make static; adjust for hook parameters.
6299         * config/score/score.h (TRAMPOLINE_TEMPLATE): Move code to
6300         score[37]_asm_trampoline_template.
6301         (INITIALIZE_TRAMPOLINE): Remove.
6302         * config/score/score3.c (score3_asm_trampoline_template): New.
6303         (score3_trampoline_init): Rename from score3_initialize_trampoline;
6304         adjust for target hook.
6305         * config/score/score7.c (score7_asm_trampoline_template): New.
6306         (score7_trampoline_init): Rename from score7_initialize_trampoline;
6307         adjust for target hook.
6308         * config/score/score3.h, config/score/score7.h: Update.
6309
6310         * config/sh/sh-protos.h (sh_initialize_trampoline): Remove.
6311         * config/sh/sh.c (TARGET_TRAMPOLINE_INIT): New.
6312         (TARGET_TRAMPOLINE_ADJUST_ADDRESS): New.
6313         (sh_trampoline_init): Rename from sh_initialize_trampoline;
6314         make static; adjust for target hook parameters.
6315         (sh_trampoline_adjust_address): New.
6316         * config/sh/sh.h (INITIALIZE_TRAMPOLINE): New.
6317         (TRAMPOLINE_ADJUST_ADDRESS): Move code to sh_trampoline_adjust_address.
6318
6319         * config/sparc/sparc.c (TARGET_TRAMPOLINE_INIT): New.
6320         (sparc32_initialize_trampoline): Rename from
6321         sparc_initialize_trampoline; make static; replace tramp parameter
6322         with m_tramp and update memory accesses.
6323         (sparc64_initialize_trampoline): Similarly.
6324         (sparc_trampoline_init): New.
6325         * config/sparc/sparc-protos.h: Remove trampoline decls.
6326         * config/sparc/sparc.h (INITIALIZE_TRAMPOLINE): Remove.
6327         * config/sparc/sparc.md (nonlocal_goto): Don't use static_chain_rtx.
6328
6329         * config/spu/spu.c (TARGET_TRAMPOLINE_INIT): New.
6330         (array_to_constant): Make ARR parameter const.
6331         (spu_trampoline_init): Rename from spu_initialize_trampoline;
6332         make static; update for hook parameters.
6333         * config/spu/spu-protos.h: Update decls.
6334         * config/spu/spu.h (INITIALIZE_TRAMPOLINE): Remove.
6335
6336         * config/stormy16/stormy16.c (xstormy16_trampoline_init): Rename
6337         from xstormy16_initialize_trampoline; make static; update for
6338         hook parameters.
6339         (TARGET_TRAMPOLINE_INIT): New.
6340         * config/stormy16/stormy16.h (INITIALIZE_TRAMPOLINE): Remove.
6341
6342         * config/v850/v850.c (TARGET_ASM_TRAMPOLINE_TEMPLATE): New.
6343         (TARGET_TRAMPOLINE_INIT): New.
6344         (v850_can_eliminate): Make static.
6345         (v850_asm_trampoline_template, v850_trampoline_init): New.
6346         * config/v850/v850.h (TRAMPOLINE_TEMPLATE): Move code to
6347         v850_asm_trampoline_template.
6348         (INITIALIZE_TRAMPOLINE): Move code to v850_trampoline_init
6349         and adjust for target hook parameters.
6350
6351         * config/vax/vax.c (TARGET_ASM_TRAMPOLINE_TEMPLATE): New.
6352         (TARGET_TRAMPOLINE_INIT): New.
6353         (vax_asm_trampoline_template, vax_trampoline_init): New.
6354         * config/vax/vax.h (TRAMPOLINE_TEMPLATE): Move code to
6355         vax_asm_trampoline_template.
6356         (INITIALIZE_TRAMPOLINE): Move code to vax_trampoline_init.
6357
6358         * config/xtensa/xtensa.c (TARGET_ASM_TRAMPOLINE_TEMPLATE): New.
6359         (TARGET_TRAMPOLINE_INIT): New.
6360         (xtensa_asm_trampoline_template): Rename from
6361         xtensa_trampoline_template; make static.
6362         (xtensa_trampoline_init): Rename from xtensa_initialize_trampoline;
6363         make static; update for hook parameters.
6364         * config/xtensa/xtensa-protos.h: Remove trampoline decls.
6365         * config/xtensa/xtensa.h (TRAMPOLINE_TEMPLATE): Remove.
6366         (INITIALIZE_TRAMPOLINE): Remove.
6367
6368         * config/i386/i386.c (ix86_function_regparm): Do not issue an
6369         error for nested functions with regparm=3.
6370         (ix86_compute_frame_layout): Adjust frame pointer offset for
6371         ix86_static_chain_on_stack.
6372         (ix86_expand_prologue): Handle ix86_static_chain_on_stack.
6373         (ix86_emit_restore_reg_using_pop): Increment ix86_cfa_state->offset,
6374         don't reset to UNITS_PER_WORD.
6375         (ix86_emit_leave): Adjust ix86_cfa_state.
6376         (ix86_expand_epilogue): Handle ix86_static_chain_on_stack.
6377         (ix86_static_chain): New.
6378         (ix86_trampoline_init): Rename from x86_initialize_trampoline;
6379         make static; update for target hook parameters; use ix86_static_chain.
6380         (TARGET_STATIC_CHAIN, TARGET_TRAMPOLINE_INIT): New.
6381         * config/i386/i386.h (STATIC_CHAIN_REGNUM): Remove.
6382         (INITIALIZE_TRAMPOLINE): Remove.
6383         (TRAMPOLINE_SIZE): Use 24 for 64-bit.
6384         (struct machine_function): Use BOOL_BITFIELD; rearrange bitfields
6385         to the end.  Add static_chain_on_stack.
6386         (ix86_static_chain_on_stack): New.
6387
6388         * config/m68k/m68k.c (TARGET_TRAMPOLINE_INIT): New.
6389         (m68k_output_mi_thunk): Don't use static_chain_rtx.
6390         (m68k_trampoline_init): New.
6391         * config/m68k/m68k.h (INITIALIZE_TRAMPOLINE): Move code to
6392         m68k_trampoline_init and adjust for hook parameters.
6393         * config/m68k/netbsd-elf.h (TRAMPOLINE_TEMPLATE): Remove.
6394         (TRAMPOLINE_SIZE, INITIALIZE_TRAMPOLINE): Remove.
6395
6396 2009-09-22  Jakub Jelinek  <jakub@redhat.com>
6397
6398         * config/rs6000/rs6000.c (bdesc_2arg): Fix CODE_FOR_vector_gt* codes
6399         for __builtin_altivec_vcmpgt{sb,uh,sh,uw}.
6400
6401         * reload1.c (reload): Call wrap_constant when substituting
6402         reg for equiv inside of DEBUG_INSNs.
6403
6404         PR bootstrap/41405
6405         * dwarf2out.c (base_type_die, record_type_tag, gen_subprogram_die,
6406         add_call_src_coords_attributes, add_high_low_attributes,
6407         gen_compile_unit_die, gen_type_die_with_usage force_decl_die,
6408         gen_decl_die, dwarf2out_imported_module_or_decl_1, dwarf2out_finish,
6409         dwarf2out_imported_module_or_decl): Avoid using DWARF3 additions
6410         when -gdwarf-2 -gstrict-dwarf.
6411         (loc_list_from_tree): Likewise.  Avoid using DWARF4 additions when
6412         -gdwarf-[23] -gstrict-dwarf.
6413         (address_of_int_loc_descriptor, loc_descriptor,
6414         loc_list_for_address_of_addr_expr_of_indirect_ref): Avoid using
6415         DWARF4 additions when -gdwarf-[23] -gstrict-dwarf.
6416         * common.opt (gno-strict-dwarf, gstrict-dwarf): New options.
6417
6418 2009-09-22  Richard Guenther  <rguenther@suse.de>
6419
6420         PR tree-optimization/41428
6421         * tree-ssa-ccp.c (ccp_fold_stmt): New function.
6422         (ccp_finalize): Pass it to substitute_and_fold.
6423
6424 2009-09-22  Richard Guenther  <rguenther@suse.de>
6425
6426         * tree-ssa-propagate.h (ssa_prop_fold_stmt_fn): Declare.
6427         (substitute_and_fold): Adjust prototype.
6428         * tree-vrp.c (vrp_evaluate_conditional): Make static.
6429         (simplify_stmt_using_ranges): Likewise.
6430         (fold_predicate_in): Move here from tree-ssa-propagate.c.
6431         (vrp_fold_stmt): New function.
6432         (vrp_finalize): Pass it to substitute_and_fold.
6433         * tree-flow.h (vrp_evaluate_conditional): Remove.
6434         (simplify_stmt_using_ranges): Likewise.
6435         * tree-ssa-ccp.c (ccp_finalize): Adjust call to substitute_and_fold.
6436         * tree-ssa-copy.c (fini_copy_prop): Likewise.
6437         * tree-ssa-propagate.c (struct prop_stats_d): Rename num_pred_folded
6438         member.
6439         (fold_predicate_in): Move to tree-vrp.c.
6440         (substitute_and_fold): Use the callback instead of calling into
6441         tree-vrp.c functions directly.
6442
6443 2009-09-22  Jakub Jelinek  <jakub@redhat.com>
6444
6445         * dwarf2out.c (address_of_int_loc_descriptor): Avoid signed/unsigned
6446         comparison warning on rs6000.
6447
6448         PR middle-end/41429
6449         * tree-cfg.c (remove_useless_stmts_tc): Call gsi_next (gsi) even for
6450         GIMPLE_EH_MUST_NOT_THROW cleanup.
6451         (verify_types_in_gimple_stmt): Handle GIMPLE_EH_MUST_NOT_THROW.
6452
6453 2009-09-22  Jack Howarth  <howarth@bromo.med.uc.edu>
6454
6455         PR middle-end/41260
6456         * gcc/config.gcc: Use darwin9.h and darwin10.h on darwin10 and later.
6457         * gcc/config/darwin10.h: Add file to pass -no_compact_unwind on
6458         LIB_SPEC for darwin10 and later since it always uses the unwinder in
6459         libSystem which is derived from the gcc 4.2.1 unwinder.
6460
6461 2009-09-22  Dave Korn  <dave.korn.cygwin@gmail.com>
6462
6463         PR middle-end/41357
6464         * varasm.c (default_encode_section_info): Copy TLS model into
6465         sym_ref flags regardless of backend support for TLS, for all
6466         model types except TLS_MODEL_EMULATED.
6467
6468 2009-09-22  Dave Korn  <dave.korn.cygwin@gmail.com>
6469
6470         PR bootstrap/41404
6471         * dwarf2out.c (mem_loc_descriptor): Punt on CONST_STRING until
6472         we can handle it correctly.
6473
6474 2009-09-21  Gerald Pfeifer  <gerald@pfeifer.com>
6475
6476         * doc/install.texi (os2): Remove section.
6477
6478 2009-09-21  Gerald Pfeifer  <gerald@pfeifer.com>
6479
6480         * doc/standards.texi (Objective-C): Adjust two URLs.
6481
6482 2009-09-21  Giuseppe Scrivano <gscrivano@gnu.org>
6483
6484         * tree-tailcall.c (process_assignment): Don't check if a
6485         multiplication or an addition are already present.
6486         (find_tail_calls): Combine multiple additions and multiplications.
6487         (adjust_accumulator_values): Emit accumulators.
6488
6489 2009-09-21  Kai Tietz  <kai.tietz@onevision.com>
6490
6491         * config/i386/i386.c (ix86_expand_epilogue): Adjust offset for
6492         xmm register restore.
6493
6494 2009-09-21  Jan Hubicka  <jh@suse.cz>
6495
6496         * dwarf2out.c (decl_loc_table_eq): Allow decl_loc_table to be NULL.
6497         (dwarf2out_abstract_function): NULLify decl_loc_table at begginig and
6498         restore at the end.
6499
6500 2009-09-21  Eric Botcazou  <ebotcazou@adacore.com>
6501
6502         * stor-layout.c (layout_type): Remove obsolete code.
6503
6504 2009-09-20  H.J. Lu  <hongjiu.lu@intel.com>
6505
6506         PR middle-end/41395
6507         * opts.c (decode_options): Don't turn on flag_ipa_sra for opt2.
6508
6509 2009-09-20  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
6510
6511         PR middle-end/30789
6512         * builtins.c (do_mpc_arg2): Accept DO_NONFINITE parameter.
6513         (do_mpc_ckconv): Accept FORCE_CONVERT parameter.
6514         (fold_builtin_2, do_mpc_arg1): Update accordingly.
6515         * fold-const.c (const_binop): Likewise.
6516         * real.h (do_mpc_arg2): Update prototype.
6517
6518 2009-09-20  Jan Hubicka  <jh@suse.cz>
6519
6520         * dwarf2out.c (add_const_value_attribute): Return true if successful.
6521         (add_location_or_const_value_attribute): Rewrite using
6522         loc_list_from_tree.
6523         (tree_add_const_value_attribute): Return true if successful.
6524         (tree_add_const_value_attribute_for_decl): Likewise.
6525
6526         * dwarf2out.c (address_of_int_loc_descriptor): Break out from ...
6527         (loc_descriptor): ... here;
6528         (loc_list_for_address_of_addr_expr_of_indirect_ref): New function.
6529         (cst_pool_loc_descr): Break out from ...; do not reffer constant
6530         pool items that was not marked for output.
6531         (loc_list_from_tree): ... here; handle special cases of ADDR_EXPR;
6532         (loc_list_for_address_of_addr_expr_of_indirect_ref): New function.
6533         (loc_list_for_address_of_addr_expr_of_indirect_ref): New function.
6534         handle ALIGN_INDIRECT_REF, MISALIGNED_INDIRECT_REF, REALPART_EXPR,
6535         IMAGPART_EXPR; handle address of INTEGER_CST; improve handling of
6536         CONSTRUCTOR; handle REAL_CST, STRING_CST, COMPLEX_CST; use
6537         DW_OP_stack_value to get address of items that are not available
6538         as addresses.
6539         (dw_loc_list): Handle single element lists correctly.
6540
6541 2009-09-20  Kai Tietz  <kai.tietz@onevision.com>
6542             Pascal Obry  <obry@adacore.com>
6543
6544         * unwind-dw2-fde.c (classify_object_over_fdes):
6545         Cast the constant 1 to _Unwind_Ptr.
6546         (add_fdes): Likewise.
6547         (linear_search_fdes): Likewise.
6548
6549 2009-09-20  Eric Botcazou  <ebotcazou@adacore.com>
6550
6551         * stor-layout.c (set_sizetype): Avoid useless type copy.
6552
6553 2009-09-20  Richard Sandiford  <rdsandiford@googlemail.com>
6554
6555         * configure.ac (gcc_cv_ld_mips_personality_relaxation): New
6556         feature check.
6557         (HAVE_LD_PERSONALITY_RELAXATION): New macro definition.
6558         * configure, config.in: Regenerate.
6559         * dwarf2asm.c (eh_data_format_name): Handle DW_EH_PE_indirect |
6560         DW_EH_PE_absptr.
6561         * config/mips/mips.h (TARGET_WRITABLE_EH_FRAME): New macro.
6562         (ASM_PREFERRED_EH_DATA_FORMAT): Define.  Use MIPS_EH_INDIRECT
6563         for global data if the output could be used in a shared library.
6564         * config/mips/mips.c (mips_override_options): Set flag_dwarf2_cfi_asm
6565         to 0 if TARGET_WRITABLE_EH_FRAME.
6566
6567 2009-09-20  Paolo Bonzini <bonzini@gnu.org>
6568
6569         PR rtl-optimization/39886
6570         * combine.c (update_cfg_for_uncondjump): Set EDGE_FALLTHRU
6571         just when insn is equal to BB_END (bb).
6572
6573 2009-09-19  Adam Nemet  <anemet@caviumnetworks.com>
6574
6575         * config/mips/mips.opt (mrelax-pic-calls): New option.
6576         * config/mips/mips.c (mips_strip_unspec_address): Move it up in
6577         the file.
6578         (mips_unspec_call): Change "unspec_call" expander into this.
6579         (mips_strip_unspec_call): New function.
6580         (mips_got_load): Call mips_unspec_call instead of
6581         gen_unspec_call<mode>.
6582         (mips16_build_call_stub): Fix comment for fp_code.  Adjust call to
6583         MIPS_CALL.
6584         (mips_cfg_in_reorg): New function.
6585         (mips16_lay_out_constants): Use it to decide whether to call
6586         CFG-aware insn splitting.
6587         (r10k_insert_cache_barriers): Move CFG set-up code from here to
6588         mips_reorg.  Move DF set-up code from here ...
6589         (mips_df_reorg): ... to here.  Call r10k_insert_cache_barriers
6590         from here.
6591         (mips_reorg): Call mips_df_reorg instead of
6592         r10k_insert_cache_barriers.  Move CFG set-up code here from
6593         r10k_insert_cache_barriers.
6594         (mips_call_expr_from_insn): New function.
6595         (mips_pic_call_symbol_from_set): Likewise.
6596         (mips_find_pic_call_symbol): Likewise.
6597         (mips_annotate_pic_call_expr): Likewise.
6598         (mips_get_pic_call_symbol): Likewise.
6599         (mips_annotate_pic_calls): Likewise.
6600         (mips_override_options): Disable -mrelax-pic-calls unless PIC
6601         calls are used.
6602         (mips_set_mips16_mode): Disable -mrelax-pic-calls for MIPS16.
6603         * config/mips/mips-protos.h (mips_get_pic_call_symbol): Declare it.
6604         * config/mips/mips.h (MIPS_CALL): Use it to print the .reloc
6605         directive.
6606         * config/mips/mips.md (UNSPEC_CALL_ATTR): New unspec.
6607         (unspec_call<mode>): Remove it.
6608         (sibcall_internal, sibcall_value_internal,
6609         sibcall_value_multiple_internal, call_internal, call_split,
6610         call_value_internal, call_value_split,
6611         call_value_multiple_internal, call_value_multiple_split): Pass
6612         SIZE_OPNO to MIPS_CALL.
6613         (call_internal_direct, call_direct_split,
6614         call_value_internal_direct, call_value_direct_split): Pass -1 as
6615         SIZE_OPNO to MIPS_CALL.
6616         * configure.ac <mips*-*-*>: Add test for .reloc R_MIPS_JALR.
6617         * configure: Regenerate.
6618         * doc/invoke.texi (Option Summary): Add -mrelax-pic-calls
6619         and -mno-relax-pic-calls.
6620         (MIPS Options): Document -mrelax-pic-calls and -mno-relax-pic-calls.
6621
6622 2009-09-19  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
6623
6624         PR bootstrap/35619
6625         * Makefile.in (stmp-fixinc): Ensure `include-fixed' is created
6626         in the directory this rule is called from, rather than the
6627         toplevel 'gcc' directory, to fix in-tree build.
6628
6629 2009-09-19  Chris Demetriou  <cgd@google.com>
6630
6631         PR preprocessor/28435:
6632         * c-opts.c (c_common_handle_option): For -MD and -MMD, indicate
6633         to cpplib that the preprocessor output is needed.
6634
6635 2009-09-19  Jakub Jelinek  <jakub@redhat.com>
6636
6637         * config/rs6000/rs6000.md (*save_gpregs_<mode>, *save_fpregs_<mode>,
6638         *restore_gpregs_<mode>, *return_and_restore_gpregs_<mode>,
6639         *return_and_restore_fpregs_<mode>,
6640         *return_and_restore_fpregs_aix_<mode>): Remove 'z' operand modifier.
6641
6642         PR bootstrap/41397
6643         * dwarf2out.c (mem_loc_descriptor) <case SUBREG>: Recurse
6644         instead of assuming it has always a REG inside of it.
6645
6646 2009-09-18  Gerald Pfeifer  <gerald@pfeifer.com>
6647
6648         * config/freebsd.h: Update comment on types.
6649         (WINT_TYPE): Define.
6650
6651 2009-09-18  Jason Merrill  <jason@redhat.com>
6652
6653         * c.opt: Add -fno-deduce-init-list.
6654
6655 2009-09-18  Neil Vachharajani  <nvachhar@google.com>
6656
6657         * value-prof.c (interesting_stringop_to_profile_p): Added output
6658         argument to indicate which parameter is the size parameter.
6659         * value-prof.c (gimple_stringop_fixed_value): Use
6660         INTERESTING_STRINGOP_TO_PROFILE_P to find size argument.
6661         * value-prof.c (gimple_stringops_transform): Update call sites to
6662         INTERESTING_STRINGOP_TO_PROFILE_P to reflect parameter change.
6663
6664 2009-09-18  Uros Bizjak  <ubizjak@gmail.com>
6665
6666         PR target/38288
6667         From David Binderman <dcb314@hotmail.com>:
6668         * gcc/config/i386/i386.c (ix86_function_regparm): Remove useless
6669         local variable f.  Remove stale comments.
6670         (ix86_compute_frame_layout): Remove useless local variable total_size.
6671         Remove #if 0'd code.
6672         (legitimate_address_p): Remove useless local variables
6673         reason_rtx and reason.
6674         (ix86_split_copysign_const): Remove useless local variable op1.
6675         (scale_counter): Remove useless local variable piece_size_mask.
6676
6677 2009-09-18  Jakub Jelinek  <jakub@redhat.com>
6678
6679         * stmt.c (expand_asm_operands): Set REG_ATTRS on the temporary from
6680         output decl.
6681
6682 2009-09-17  Michael Haubenwallner  <michael.haubenwallner@salomon.at>
6683
6684         PR target/40913
6685         * config/pa/t-hpux-shlib: Set soname in libgcc_s.sl.
6686
6687 2009-09-17  Jakub Jelinek  <jakub@redhat.com>
6688
6689         * c-decl.c (finish_struct): Adjust DECL_SOURCE_LOCATION of
6690         TYPE_STUB_DECL.
6691
6692 2009-09-17  Alexandre Oliva  <aoliva@redhat.com>
6693
6694         * dwarf2out.c (loc_descriptor): Emit DW_OP_stack_value and
6695         DW_OP_implicit_value even without dwarf_version 4.
6696
6697 2009-09-17  Jan Hubicka  <jh@suse.cz>
6698
6699         * dwarf2out.c: Include tree-pass.h and gimple.h.
6700         (loc_list_plus_const): New function.
6701         (loc_descriptor_from_tree_1): Rename to ...
6702         (loc_descriptor_from_tree): ... remove original.
6703         (loc_list_from_tree): New function.
6704         (add_AT_location_description): Accept location list.
6705         (tls_mem_loc_descriptor): Update call of loc_descriptor_from_tree.
6706         (concatn_mem_loc_descriptor): Remove.
6707         (mem_loc_descriptor): Handle CONCAT/CONCATN and VAR_LOCATION by
6708         returning NULL.
6709         (secname_for_decl): Move up.
6710         (hidden_reference_p): New function; break out from ...
6711         (loc_by_refernece): ... here; move up.
6712         (dw_loc_list): New function.
6713         (single_element_loc_list): New function.
6714         (single_element_loc_list_p): New function.
6715         (add_loc_descr_to_each): New function.
6716         (add_loc_list): New function.
6717         (loc_descr_from_tree): Make wraper of loc_list_from_tree.
6718         (loc_list_from_tree): Reroganized from loc_descr_from_tree;
6719         add diagnostics why expansion failed.
6720         (add_location_or_const_value_attribute): Support location lists.
6721         (add_bound_info): Likewise.
6722         (descr_info_loc): Update call of loc_descriptor_from_tree.
6723         (gen_variable_die): Work on location lists.
6724         * final.c (pass_final): Add dump file.
6725         * Makefile.in (dwarf2out.o): Add new dependencies.
6726
6727 2009-09-17  Janis Johnson  <janis187@us.ibm.com>
6728
6729         PR c/41049
6730         * real.c decimal_from_integer, decimal_integer_string): New.
6731         (real_from_integer): Use them as special case for decimal float.
6732         * config/dfp-bit.c (_si_to_sd, _usi_to_sd): Use default rounding.
6733         (_di_to_sd, _di_to_dd, _di_to_td, _udi_to_sd, _udi_to_dd, _udi_to_td):
6734         Do not append zero after the decimal point in string to convert.
6735
6736 2009-09-17  Alexander Monakov  <amonakov@ispras.ru>
6737
6738         * graphite-sese-to-poly.c (pdr_add_data_dimensions): Add bounds only
6739         for ARRAY_REFs.  Use array_ref_{low,up}_bound to determine bounds.
6740
6741 2009-09-17  Martin Jambor  <mjambor@suse.cz>
6742
6743         * common.opt (fipa-sra): New switch.
6744         * opts.c (decode_options): Turn flag_ipa_sra on for opt2.
6745         * timevar.def (TV_IPA_SRA): New timevar.
6746         * params.def (ipa-sra-ptr-growth-factor): New parameter.
6747         * doc/invoke.texi: Document -fipa-sra and ipa-sra-ptr-growth-factor.
6748         * tree-sra.c: Include cgraph.c.
6749         (enum sra_mode): Added SRA_MODE_EARLY_IPA.
6750         (struct access): Added fields stmt, grp_maybe_modified, grp_scalar_ptr
6751         and grp_not_necessarilly_dereferenced.
6752         (func_param_count): New variable.
6753         (encountered_apply_args): New variable.
6754         (bb_dereferences): New variable.
6755         (final_bbs): New variable.
6756         (no_accesses_representant): New variable.
6757         (no_accesses_p): New function.
6758         (dump_access): Dump the new fields.
6759         (sra_initialize): Set encountered_apply_args to false.
6760         (get_ssa_base_param): New function.
6761         (mark_parm_dereference): New function.
6762         (create_access): Caring for INIDRECT_REFs and different handling of
6763         varialble length accesses in early IPA SRA.  Store the stmt - a new
6764         parameter - to the new access.
6765         (build_access_from_expr_1): New parameter stmt, passed to
6766         create_access.  Handle INDIRECT_REFs.
6767         (build_access_from_expr): Pass the current statement to
6768         build_access_from_expr_1.
6769         (disqualify_ops_if_throwing_stmt): Trigger only in intraprocedural
6770         passes.
6771         (build_accesses_from_assign): Pass the current statement to
6772         build_access_from_expr_1.  Do not create assign links in IPA-SRA.
6773         (scan_function): Call handle_ssa_defs on phi nodes.  Set bits in
6774         final_bbs when necessary.  Check for calls to __builtin_apply_args.
6775         Fixup EH info if anythng was changed.
6776         (is_unused_scalar_param): New function.
6777         (ptr_parm_has_direct_uses): New function.
6778         (find_param_candidates): New function.
6779         (mark_maybe_modified): New function.
6780         (analyze_modified_params): New function.
6781         (propagate_dereference_distances): New function.
6782         (dump_dereferences_table): New function.
6783         (analyze_caller_dereference_legality): New function.
6784         (unmodified_by_ref_scalar_representative): New function.
6785         (splice_param_accesses): New function.
6786         (decide_one_param_reduction): New function.
6787         (enum ipa_splicing_result): New type.
6788         (splice_all_param_accesses): New function.
6789         (get_param_index): New function.
6790         (turn_representatives_into_adjustments): New function.
6791         (analyze_all_param_acesses): New function.
6792         (get_replaced_param_substitute): New function.
6793         (get_adjustment_for_base): New function.
6794         (replace_removed_params_ssa_names): New function.
6795         (sra_ipa_reset_debug_stmts): New function.
6796         (sra_ipa_modify_expr): New function.
6797         (sra_ipa_modify_assign): New function.
6798         (convert_callers): New function.
6799         (modify_function): New function.
6800         (ipa_sra_preliminary_function_checks): New function.
6801         (ipa_early_sra): New function.
6802         (ipa_early_sra_gate): New function.
6803         (pass_early_ipa_sra): New variable.
6804         * Makefile.in (tree-sra.o): Add cgraph.h to dependencies.
6805
6806 2009-09-17  Michael Matz  <matz@suse.de>
6807
6808         PR middle-end/41347
6809         * tree.c (build_type_attribute_qual_variant): Export.
6810         * tree.h (build_type_attribute_qual_variant): Declare.
6811         * tree-inline.c (remap_type_1): Use it to build variants with
6812         the original qualifiers and attributes.
6813
6814 2009-09-17  Andreas Krebbel  <Andreas.Krebbel@de.ibm.com>
6815
6816         * cfglayout.c (fixup_reorder_chain): Accept conditional jumps
6817         without a fallthrough edge.
6818
6819 2009-09-16  DJ Delorie  <dj@redhat.com>
6820
6821         * config/m32c/m32c.c (m32c_emit_epilogue): Check for R8C or M16C
6822         chip and ignore the "fast_interrupt" attribute if so.
6823
6824 2009-09-16  Richard Henderson  <rth@redhat.com>
6825
6826         PR middle-end/41360
6827         * cfgbuild.c (find_bb_boundaries): Really re-instate 2009-09-02
6828         barrier fix.
6829
6830 2009-09-16  Richard Henderson  <rth@redhat.com>
6831
6832         PR target/41246
6833         * tree-cfg.c (verify_gimple_call): Validate that gimple_call_chain
6834         is set only if DECL_NO_STATIC_CHAIN is unset.
6835         * tree-nested.c (iter_nestinfo_start, iter_nestinfo_next): New.
6836         (FOR_EACH_NEST_INFO): New.
6837         (walk_all_functions): Use it.
6838         (finalize_nesting_tree): Likewise.
6839         (unnest_nesting_tree): Likewise.
6840         (free_nesting_tree): Use iter_nestinfo_start, iter_nestinfo_next.
6841         (get_chain_decl, get_chain_field): Reset DECL_NO_STATIC_CHAIN.
6842         (convert_gimple_call): Early out if gimple_call_chain already set.
6843         (convert_all_function_calls): Iterate until no new functions
6844         require a static chain.
6845         (finalize_nesting_tree_1): Assert DECL_NO_STATIC_CHAIN is unset
6846         when building a trampoline.  Use dump_function_to_file instead
6847         of dump_function.
6848         (lower_nested_functions): Open dump_file.  Validate that decls
6849         that have DECL_NO_STATIC_CHAIN from the front end don't have that
6850         bit reset by this pass.
6851
6852 2009-09-16  Michael Matz  <matz@suse.de>
6853
6854         PR fortran/41212
6855         * tree.h (struct tree_decl_common): Add decl_restricted_flag,
6856         shorten decl_common_unused.
6857         (DECL_RESTRICTED_P): New accessor.
6858         * tree-ssa-alias.c (ptr_deref_may_alias_decl_p): Use it
6859         to disambiguate marked decls and restrict pointers.
6860
6861 2009-09-16  Richard Henderson  <rth@redhat.com>
6862
6863         PR middle-end/41360
6864         * cfgbuild.c (find_bb_boundaries): Re-instate 2009-09-02 barrier fix.
6865
6866 2009-09-16  Jakub Jelinek  <jakub@redhat.com>
6867
6868         * integrate.c (set_block_abstract_flags): Call
6869         set_decl_abstract_flags also on BLOCK_NONLOCALIZED_VARs.
6870
6871 2009-09-16  Richard Guenther  <rguenther@suse.de>
6872
6873         PR middle-end/34011
6874         * tree-flow-inline.h (may_be_aliased): Compute readonly variables
6875         as non-aliased.
6876
6877 2009-09-16  DJ Delorie  <dj@redhat.com>
6878             Kaz Kojima  <kkojima@gcc.gnu.org>
6879
6880         * config/sh/sh.c (output_stack_adjust): Add new argument frame_p.
6881         (sh_expand_prologue): Update calls to output_stack_adjust.
6882         (sh_expand_epilogue): Likewise.
6883
6884 2009-09-15  Adam Nemet  <anemet@caviumnetworks.com>
6885
6886         PR bootstrap/41349
6887         * reorg.c (redundant_insn): Don't count notes or DEBUG_INSNs when
6888         trying to limit the extent of searches in the insn stream.
6889
6890 2009-09-15  Nathan Froyd  <froydnj@codesourcery.com>
6891             Jakub Jelinek  <jakub@redhat.com>
6892
6893         PR target/41175
6894         PR target/40677
6895         * config/rs6000/rs6000.c (no_global_regs_above): Fix precedence
6896         problem.
6897         (SAVRES_NOINLINE_GPRS_SAVES_LR, SAVRES_NOINLINE_FPRS_SAVES_LR,
6898         SAVRES_NOINLINE_FPRS_DOESNT_RESTORE_LR): New strategy bits.
6899         (rs6000_savres_strategy): Always save FP registers inline if the
6900         target doesn't support hardware double-precision.  Set the above
6901         bits in return value when needed.
6902         (rs6000_savres_routine_sym): Fix computation for cache selector.
6903         Mark the generated symbol as a function.  Rename exitp argument to
6904         lr.  Move code for determining the name of the symbol...
6905         (rs6000_savres_routine_name): ...here.  New function.  Add cases for
6906         getting the names right on AIX and 64-bit Linux.
6907         (savres_routine_name): New variable.
6908         (rs6000_make_savres_rtx): Rename exitp argument to lr.  Don't assert
6909         lr isn't set when savep.  Use r12 resp. r1 instead of r11 depending
6910         on what the target routine uses as a base register.  If savep && lr
6911         describe saving of r0 into memory slot.
6912         (rs6000_emit_prologue): Correct use of call_used_regs.  Fix out of
6913         line calls for AIX ABI.
6914         (rs6000_output_function_prologue): Use rs6000_savres_routine_name to
6915         determine FP save/restore functions.
6916         (rs6000_emit_stack_reset): Handle savres if sp_offset != 0 and
6917         frame_reg_rtx != sp_reg_rtx.  Use gen_add3_insn instead of
6918         gen_addsi3.
6919         (rs6000_emit_epilogue): Adjust computation of restore_lr.
6920         Duplicate restoration of LR and execute the appropriate one
6921         depending on whether GPRs are being restored inline.  Set r11 from
6922         offsetted frame_reg_rtx instead of sp_reg_rtx; if frame_reg_rtx is
6923         r11, adjust sp_offset.  Use gen_add3_insn instead of gen_addsi3.
6924         Fix out of line calls for AIX ABI.
6925         * config/rs6000/rs6000.md (*return_and_restore_fpregs_aix_<mode>):
6926         New insn.
6927         * config/rs6000/spe.md (*save_gpregs_spe): Use explicit match for
6928         register 11.
6929         (*restore_gpregs_spe): Likewise.
6930         (*return_and_restore_gpregs_spe): Likewise.
6931         * config/rs6000/linux64.h (SAVE_FP_SUFFIX, RESTORE_FP_SUFFIX):
6932         Define to empty string unconditionally.
6933         * config/rs6000/sysv4.h (SAVE_FP_SUFFIX, RESTORE_FP_SUFFIX):
6934         Define to empty string unconditionally.
6935         (GP_SAVE_INLINE, FP_SAVE_INLINE): Handle TARGET_64BIT the same as
6936         !TARGET_64BIT.
6937
6938 2009-09-15  Jan Hubicka  <jh@suse.cz>
6939
6940         * doc/invoke.texi (inline-insns-auto): Drop from 60 to 50.
6941         * params.def (inline-insns-auto): Likewise.
6942
6943 2009-09-15  Martin Jambor  <mjambor@suse.cz>
6944
6945         * ipa-inline.c (estimate_function_body_sizes): Dump info about
6946         individual statements only at TDF_DETAILS dump level.  Format
6947         source for 80 characters per line.
6948
6949 2009-09-15  Christian Bruel  <christian.bruel@st.com>
6950
6951         * regrename.c (do_replace): Update REG_DEAD notes.
6952
6953 2009-09-15  Revital Eres  <eres@il.ibm.com>
6954
6955         * doc/tm.texi (TARGET_SUPPORT_VECTOR_MISALIGNMENT): Document.
6956         * targhooks.c (default_builtin_support_vector_misalignment):
6957         New builtin function.
6958         * targhooks.h (default_builtin_support_vector_misalignment):
6959         Declare.
6960         * target.h (builtin_support_vector_misalignment):
6961         New field in struct gcc_target.
6962         * tree-vect-data-refs.c (vect_supportable_dr_alignment): Call
6963         new builtin function.
6964         * target-def.h (TARGET_SUPPORT_VECTOR_MISALIGNMENT):
6965         Define.
6966         * config/rs6000/rs6000.c
6967         (rs6000_builtin_support_vector_misalignment): New function.
6968         (TARGET_SUPPORT_VECTOR_MISALIGNMENT): Define.
6969
6970 2009-09-15  Jie Zhang  <jie.zhang@analog.com>
6971
6972         * config/bfin/bfin.c (length_for_loop): Use NONDEBUG_INSN_P
6973         instead of INSN_P.
6974         (bfin_optimize_loop): Likewise.
6975         (bfin_gen_bundles): Likewise.
6976         (workaround_speculation): Likewise.
6977         (find_load): Return NULL_RTX for debug_insn.
6978
6979 2009-09-15  Uros Bizjak  <ubizjak@gmail.com>
6980
6981         * config/alpha/alpha.md (smaxsf3): Disable for IEEE mode.
6982         (sminsf3): Ditto.
6983
6984 2009-09-14  DJ Delorie  <dj@redhat.com>
6985
6986         * config/mep/mep.h (JUMP_TABLES_IN_TEXT_SECTION): Define.
6987         * config/mep/mep.c (mep_emit_cbranch): Don't use BEQZ/BNEI in
6988         VLIW mode.
6989
6990 2009-09-14  Richard Henderson  <rth@redhat.com>
6991             Jakub Jelinek  <jakub@redhat.com>
6992
6993         * builtins.c (expand_builtin_synchronize): Use gimple_build_asm_vec.
6994         * cfgbuild.c (make_edges): Handle asm goto.
6995         * cfglayout.c (fixup_reorder_chain): Likewise.
6996         * cfgrtl.c (patch_jump_insn): Likewise.
6997         * gimple-pretty-print.c (dump_gimple_asm): Likewise.
6998         * gimple.c (gimple_build_asm_1): Add and use nlabels parameter.
6999         (gimple_build_asm_vec): Add and use labels parameter.
7000         (gimple_build_asm): Remove.
7001         (walk_gimple_asm): Walk labels too.
7002         * gimple.def (GIMPLE_ASM): Update docs.
7003         * gimple.h: Update decls.
7004         (struct gimple_statement_asm): Change nc to use unsigned char;
7005         add nl member.
7006         (gimple_asm_nlabels): New.
7007         (gimple_asm_label_op, gimple_asm_set_label_op): New.
7008         * gimplify.c (gimplify_asm_expr): Copy labels from ASM_EXPR
7009         into gimple_build_asm_vec.
7010         * jump.c (mark_jump_label_asm): New.
7011         (mark_jump_label): Use it.
7012         (redirect_jump_1): Handle asm goto.
7013         (invert_jump_1): Soft fail if X is null.
7014         * recog.c (extract_asm_operands): New.
7015         (asm_noperands): Use it; handle asm labels.
7016         (decode_asm_operands): Use extract_asm_operands.
7017         (asm_operand_ok): Properly handle empty string.
7018         * reg-stack.c (get_asm_operands_in_out): Rename from
7019         get_asm_operand_n_inputs; use extract_asm_operands; return both
7020         inputs and outputs by reference; update all callers.
7021         * rtl.def (ASM_OPERANDS): Add label vector as operand 6.
7022         * rtl.h (ASM_OPERANDS_LABEL_VEC): New.
7023         (ASM_OPERANDS_LABEL_LENGTH, ASM_OPERANDS_LABEL): New.
7024         (ASM_OPERANDS_SOURCE_LOCATION): Renumber.
7025         (extract_asm_operands): Declare.
7026         * stmt.c (expand_asm_operands): Add and use labels parameter.
7027         (check_unique_operand_names): Likewise.
7028         (resolve_asm_operand_names, resolve_operand_name_1): Likewise.
7029         (expand_asm_stmt): Handle asm labels.
7030         * tree-cfg.c (make_gimple_asm_edges): New.
7031         (make_edges): Use it.
7032         (cleanup_dead_labels): Handle asm labels.
7033         (is_ctrl_altering_stmt): Likewise.
7034         (gimple_redirect_edge_and_branch): Likewise.
7035         * tree.def (ASM_EXPR): Add 5th operand.
7036         * tree.h (ASM_LABELS): New.
7037         (resolve_asm_operand_names): Update decl.
7038
7039         * c-parser.c (c_parser_asm_statement): Parse asm goto.
7040         (c_parser_asm_goto_operands): New.
7041         * c-tree.h (build_asm_expr): Update decl.
7042         * c-typeck.c (build_asm_expr): Add and use labels parameter.
7043         * doc/extend.texi: Document asm goto.
7044
7045 2009-09-14  Richard Henderson  <rth@redhat.com>
7046
7047         * except.h: Update declarations.
7048         (struct pointer_map_t): Forward declare.
7049         (ERT_UNKNOWN, ERT_THROW, ERT_CATCH): Remove.
7050         (struct eh_landing_pad_d, eh_landing_pad): New.
7051         (struct eh_catch_d, eh_catch): New.
7052         (struct eh_region_d): Remove next_region_sharing_label, aka,
7053         label, tree_label, landing_pad, post_landing_pad, resume,
7054         may_contain_throw.  Rename region_number to index.  Remove
7055         u.eh_catch, u.eh_throw.  Rename u.eh_try.eh_catch to first_catch.
7056         Add u.must_not_throw, landing_pads, exc_ptr_reg, filter_reg.
7057         (VEC(eh_landing_pad,gc)): New.
7058         (struct eh_status): Remove last_region_number.  Add lp_array,
7059         throw_stmt_table, ttype_data, ehspec_data.
7060         (ehr_next, FOR_ALL_EH_REGION_AT): New.
7061         (FOR_ALL_EH_REGION_FN, FOR_ALL_EH_REGION): New.
7062         * except.c (lang_protect_cleanup_actions): Return tree.
7063         (struct ehl_map_entry): Remove.
7064         (init_eh_for_function): Push zero entries for region and lp_array.
7065         (gen_eh_region): Add to region_array immediately.
7066         (gen_eh_region_catch): Operate on eh_catch objects.
7067         (gen_eh_landing_pad): New.
7068         (get_eh_region_may_contain_throw, get_eh_region_tree_label): Remove.
7069         (get_eh_region_no_tree_label, set_eh_region_tree_label): Remove.
7070         (get_eh_region_from_number, get_eh_region_from_number_fn): New.
7071         (get_eh_landing_pad_from_number_fn): New.
7072         (get_eh_landing_pad_from_number): New.
7073         (get_eh_region_from_lp_number_fn): New.
7074         (get_eh_region_from_lp_number): New.
7075         (expand_resx_stmt, note_eh_region_may_contain_throw): Remove.
7076         (get_exception_pointer, get_exception_filter): Remove.
7077         (collect_eh_region_array, can_be_reached_by_runtime): Remove.
7078         (current_function_has_exception_handlers): Simplify.
7079         (bring_to_root, eh_region_replaceable_by_p): Remove.
7080         (replace_region, hash_type_list, hash_eh_region): Remove.
7081         (eh_regions_equal_p, merge_peers, remove_unreachable_regions): Remove.
7082         (label_to_region_map, num_eh_regions): Remove.
7083         (get_next_region_sharing_label, must_not_throw_labels): Remove.
7084         (find_exception_handler_labels): Remove.
7085         (duplicate_eh_regions_0, find_prev_try): Remove.
7086         (struct duplicate_eh_regions_data): New.
7087         (duplicate_eh_regions_1): Rewrite.
7088         (duplicate_eh_regions): Return a pointer map instead of an
7089         integer offset.
7090         (copy_eh_region_1, copy_eh_region, push_reachable_handler): Remove.
7091         (redirect_eh_edge_to_label): Remove.
7092         (eh_region_outermost): Rewrite using eh_region pointers
7093         instead of integers.
7094         (add_ttypes_entry): Update for ttype_data move to eh_status.
7095         (add_ehspec_entry): Rewrite with VEC instead of varray.
7096         (assign_filter_values): Likewise.  Export.
7097         (build_post_landing_pads, connect_post_landing_pads): Remove.
7098         (dw2_build_landing_pads): Rewrite to use lp_array.
7099         (struct sjlj_lp_info, sjlj_find_directly_reachable_regions): Remove.
7100         (sjlj_assign_call_site_values): Rewrite to use lp_array.
7101         (sjlj_emit_dispatch_table, sjlj_build_landing_pads): Likewise.
7102         (sjlj_mark_call_sites): Update for landing pad numbers.
7103         (finish_eh_generation): Rewrite.
7104         (gate_handle_eh): Do nothing for no eh tree.
7105         (pass_rtl_eh): Move up near finish_eh_generation.
7106         (remove_eh_landing_pad): New.
7107         (remove_eh_handler): Export.
7108         (remove_eh_region, remove_eh_handler_and_replace): Remove.
7109         (for_each_eh_label): Rewrite to use lp_array.
7110         (make_reg_eh_region_note): New.
7111         (make_reg_eh_region_note_nothrow_nononlocal): New.
7112         (insn_could_throw_p): New.
7113         (copy_reg_eh_region_note_forward): New.
7114         (copy_reg_eh_region_note_backward): New.
7115         (check_handled, add_reachable_handler): Remove.
7116         (reachable_next_level, foreach_reachable_handler): Remove.
7117         (arh_to_landing_pad, arh_to_label, reachable_handlers): Remove.
7118         (get_eh_region_and_lp_from_rtx): New.
7119         (get_eh_region_from_rtx): New.
7120         (can_throw_internal_1, can_throw_external_1): Remove.
7121         (can_throw_internal): Use get_eh_region_from_rtx.
7122         (can_throw_external): Use get_eh_region_and_lp_from_rtx.
7123         (insn_nothrow_p, can_nonlocal_goto): New.
7124         (expand_builtin_eh_common, expand_builtin_eh_pointer): New.
7125         (expand_builtin_eh_filter, expand_builtin_eh_copy_values): New.
7126         (add_action_record): Use VEC not varray.
7127         (collect_one_action_chain): Update for eh_region changes.
7128         (convert_to_eh_region_ranges): Make static.  Use VEC not varray.
7129         Use get_eh_region_and_lp_from_rtx.
7130         (gate_convert_to_eh_region_ranges): New.
7131         (pass_convert_to_eh_region_ranges): Use it.
7132         (push_uleb128, push_sleb128): Use VEC not varray.
7133         (output_one_function_exception_table): Likewise.
7134         (dump_eh_tree): Update for eh_region changes.
7135         (verify_eh_tree): Likewise.
7136         (verify_eh_region, default_init_unwind_resume_libfunc): Remove.
7137         * tree-eh.c: Include target.h.
7138         (add_stmt_to_eh_lp_fn): Rename from add_stmt_to_eh_region_fn.
7139         Don't disallow GIMPLE_RESX; adjust argument check.
7140         (add_stmt_to_eh_lp): Rename from add_stmt_to_eh_region.
7141         (record_stmt_eh_region): Update for landing pad numbers;
7142         generate a landing pad if necessary.
7143         (remove_stmt_from_eh_lp): Rename from remove_stmt_from_eh_region.
7144         (remove_stmt_from_eh_lp_fn): Similarly.
7145         (lookup_stmt_eh_lp_fn): Rename from lookup_stmt_eh_region_fn.
7146         Update for lp numbers; don't special case missing throw_stmt_table.
7147         (lookup_expr_eh_lp): Similarly.
7148         (lookup_stmt_eh_lp): Rename from lookup_stmt_eh_region.
7149         (eh_seq, eh_region_may_contain_throw): New.
7150         (struct leh_state): Add ehp_region.
7151         (struct leh_tf_state): Remove eh_label.
7152         (emit_post_landing_pad): New.
7153         (emit_resx, emit_eh_dispatch): New.
7154         (note_eh_region_may_contain_throw): New.
7155         (frob_into_branch_around): Take eh_region not eh label;
7156         emit eh code into eh_seq.
7157         (honor_protect_cleanup_actions): Early exit for no actions.  Don't
7158         handle EXC_PTR_EXPR, FILTER_EXPR.  Use gimple_build_eh_must_not_throw,
7159         lower_eh_must_not_throw.  Emit code to eh_seq.
7160         (lower_try_finally_nofallthru): Emit eh code to eh_seq.
7161         (lower_try_finally_onedest): Likewise.
7162         (lower_try_finally_copy): Likewise.
7163         (lower_try_finally_switch): Likewise.
7164         (lower_try_finally): Initialize ehp_region.
7165         (lower_catch): Update for eh_catch objects.
7166         (lower_eh_filter): Don't handle must_not_throw.
7167         (lower_eh_must_not_throw): New.
7168         (lower_cleanup): Don't set eh_label.
7169         (lower_eh_constructs_2): Resolve eh builtins.
7170         Handle GIMPLE_EH_MUST_NOT_THROW.
7171         (lower_eh_constructs): Initialize eh_region_may_contain_throw.
7172         Add eh_seq to the end of the function body.
7173         (make_eh_dispatch_edges): New.
7174         (make_eh_edge): Remove.
7175         (make_eh_edges): Simplify for landing pads.
7176         (redirect_eh_edge_1): New.
7177         (redirect_eh_edge): Use it.
7178         (redirect_eh_dispatch_edge): New.
7179         (stmt_could_throw_p): Use a switch.  Allow RESX.
7180         (stmt_can_throw_external): Use lookup_stmt_eh_lp.
7181         (stmt_can_throw_internal): Likewise.
7182         (maybe_clean_eh_stmt_fn, maybe_clean_eh_stmt): New.
7183         (maybe_clean_or_replace_eh_stmt): Update for landing pads.
7184         (maybe_duplicate_eh_stmt_fn, maybe_duplicate_eh_stmt): New.
7185         (gate_refactor_eh): New.
7186         (pass_refactor_eh): Use it.
7187         (lower_resx, execute_lower_resx, pass_lower_resx): New.
7188         (lower_eh_dispatch, execute_lower_eh_dispatch): New.
7189         (gate_lower_ehcontrol, pass_lower_eh_dispatch): New.
7190         (remove_unreachable_handlers): Rename from
7191         tree_remove_unreachable_handlers; rewrite for landing pads;
7192         call remove_eh_handler directly.
7193         (remove_unreachable_handlers_no_lp): New.
7194         (unsplit_eh, unsplit_all_eh): New.
7195         (tree_empty_eh_handler_p, all_phis_safe_to_merge): Remove.
7196         (cleanup_empty_eh_merge_phis, cleanup_empty_eh_move_lp): New.
7197         (cleanup_empty_eh_unsplit): New.
7198         (cleanup_empty_eh): Rewrite.
7199         (cleanup_all_empty_eh): New.
7200         (execute_cleanup_eh): Rename from cleanup_eh.  Remove unreachable
7201         handlers first.  Use unsplit_all_eh, cleanup_all_empty_eh.
7202         (gate_cleanup_eh): New.
7203         (pass_cleanup_eh): Use it.
7204         (verify_eh_edges): Move later in file.  Expect one EH edge.
7205         (verify_eh_dispatch_edge): New.
7206
7207         * Makefile.in (FUNCTION_H): Use vecprim.h, not varray.h.
7208         (gtype-desc.o): Add TARGET_H.
7209         (tree.o): Use EXCEPT_H, not except.h.
7210         (cfgbuild.o): Add EXPR_H.
7211         (GTFILES): Add vecprim.h.
7212         * builtins.c (expand_builtin): Handle BUILT_IN_EH_POINTER,
7213         BUILT_IN_EH_FILTER, BUILT_IN_EH_COPY_VALUES.
7214         * builtins.def (BUILT_IN_UNWIND_RESUME, BUILT_IN_EH_POINTER,
7215         BUILT_IN_EH_FILTER, BUILT_IN_EH_COPY_VALUES): New.
7216         * calls.c (emit_call_1): Use make_reg_eh_region_note.
7217         * cfgbuild.c (control_flow_insn_p): Use can_nonlocal_goto; tidy
7218         calls to can_throw_internal.
7219         (rtl_make_eh_edge): Use get_eh_landing_pad_from_rtx.
7220         (make_edges): Don't handle RESX; use can_nonlocal_goto.
7221         * cfgexpand.c (expand_gimple_stmt_1): Don't handle RESX.
7222         (expand_gimple_stmt): Use make_reg_eh_region_note.
7223         (expand_debug_expr): Don't handle EXC_PTR_EXPR and FILTER_EXPR.
7224         (gimple_expand_cfg): Don't call convert_from_eh_region_ranges,
7225         or find_exception_handler_labels.
7226         * cfgrtl.c (rtl_verify_flow_info_1): Don't handle RESX.  Assert
7227         there is exacly one EH edge.  Use can_nonlocal_goto and
7228         can_throw_internal.
7229         * cgraphunit.c (update_call_expr): Use maybe_clean_eh_stmt_fn.
7230         (cgraph_materialize_all_clones): Use maybe_clean_or_replace_eh_stmt.
7231         * combine.c (can_combine_p, try_combine): Use insn_nothrow_p.
7232         * cse.c (count_reg_usage, insn_live_p): Use insn_could_throw_p.
7233         * dce.c (deletable_insn_p_1): Don't test may_trap_p.
7234         (deletable_insn_p): Use insn_nothrow_p; reorder nonjump insn test.
7235         * dse.c (scan_insn): Use insn_could_throw_p.
7236         * emit-rtl.c (try_split): Use copy_reg_eh_region_note_backward.
7237         * expr.c (expand_expr_real): Use make_reg_eh_region_note.
7238         (expand_expr_real_1): Don't handle RESX, EXC_PTR, or FILTER_EXPR.
7239         * fold-const.c (tree_expr_nonnegative_warnv_p): Don't handle
7240         EXC_PTR_EXPR or FILTER_EXPR.
7241         (tree_expr_nonzero_warnv_p): Likewise.
7242         * function.h: Include vecprim.h, not varray.h
7243         (struct rtl_eh): Remove filter, exc_ptr, built_landing_pad members;
7244         move ttype_data and ehspec_data members to struct eh_status; change
7245         action_record_data member to a VEC.
7246         * gcse.c (hash_scan_set): Use can_throw_internal.
7247         * gengtype.c (open_base_files): Add target.h to gtype-desc.c.
7248         * gimple-iterator.c (gsi_replace): Use maybe_clean_or_replace_eh_stmt.
7249         * gimple-low.c (lower_stmt): Handle GIMPLE_EH_MUST_NOT_THROW.
7250         (block_may_fallthru): Don't handle RESX_EXPR.
7251         * gimple-pretty-print.c (dump_gimple_label): Dump EH_LANDING_PAD_NR.
7252         (dump_gimple_eh_must_not_throw, dump_gimple_eh_dispatch): New.
7253         (dump_gimple_stmt): Dump landing pad information with TDF_EH;
7254         handle GIMPLE_EH_MUST_NOT_THROW, GIMPLE_EH_DISPATCH.
7255         * gimple.c (gss_for_code): Handle GIMPLE_EH_MUST_NOT_THROW,
7256         GIMPLE_EH_DISPATCH, GIMPLE_RESX.
7257         (gimple_size): Likewise.
7258         (gimple_build_eh_dispatch, gimple_build_eh_must_not_throw): New.
7259         (gimple_build_resx): Use gimple_build_with_ops.
7260         (DEFTREECODE): Don't handle EXC_PTR_EXPR, FILTER_EXPR.
7261         (is_gimple_val): Likewise.
7262         (is_gimple_stmt): Remove RESX_EXPR.
7263         * gimple.def (GIMPLE_EH_MUST_NOT_THROW, GIMPLE_EH_DISPATCH): New.
7264         (GIMPLE_RESX): Reorder with other EH constructs.
7265         * gimple.h (struct gimple_statement_eh_mnt): New.
7266         (struct gimple_statement_eh_ctrl): Rename from gimple_statement_resx.
7267         (gimple_eh_filter_must_not_throw): Remove.
7268         (gimple_eh_filter_set_must_not_throw): Remove.
7269         (gimple_eh_must_not_throw_fndecl): New.
7270         (gimple_eh_dispatch_region, gimple_eh_dispatch_set_region): New.
7271         (is_gimple_resx): New.
7272         * gimplify.c (gimplify_expr): Don't handle EXC_PTR_EXPR, RESX_EXPR.
7273         Don't copy EH_FILTER_MUST_NOT_THROW.
7274         * gsstruct.def (GSS_EH_MNT, GSS_EHCONTROL): New.
7275         * ipa-inline.c (estimate_function_body_sizes): Don't try to
7276         handle must_not_throw_labels specially.
7277         * ipa-pure-const.c (check_call): Update debug statement for LP.
7278         * ipa-type-escape.c (check_operand): Don't handle EXC_PTR or FILTER.
7279         * ipa-utils.c (get_base_var): Likewise.
7280         * libfunc.h (LTI_unwind_resume, unwind_resume_libfunc): Remove.
7281         * lower-subreg.c (move_eh_region_note): Remove.
7282         (resolve_simple_move): Use copy_reg_eh_region_note_forward.
7283         * omp-low.c (new_omp_context): Update for eh_lp_nr.
7284         (create_task_copyfn): Likewise.
7285         (maybe_catch_exception): Use gimple_build_eh_filter.
7286         * optabs.c (emit_libcall_block): Update test for no-nonlocal-goto
7287         REG_EH_REGION.  Use make_reg_eh_region_note_nothrow_nononlocal.
7288         * passes.c (init_optimization_passes): Add pass_lower_eh_dispatch
7289         and pass_lower_resx.
7290         * print-tree.c (print_node): Dump EH_LANDING_PAD_NR.
7291         * recog.c (peephole2_optimize): Use copy_reg_eh_region_note_backward,
7292         can_throw_internal, can_nonlocal_goto.
7293         * reload1.c (fixup_eh_region_note): Use insn_could_throw_p,
7294         copy_reg_eh_region_note_forward.
7295         (emit_input_reload_insns): Use copy_reg_eh_region_note_forward.
7296         (emit_output_reload_insns): Likewise.
7297         (copy_eh_notes): Remove.
7298         * rtl.def (RESX): Remove.
7299         * rtl.h: Update declarations.
7300         * sese.c (graphite_copy_stmts_from_block): Use maybe_duplicate_eh_stmt.
7301         * tree-cfg.c (make_edges): Handle GIMPLE_EH_DISPATCH.
7302         (update_eh_label): Remove.
7303         (cleanup_dead_labels_eh): New.
7304         (cleanup_deal_labels): Use it instead of update_eh_label.
7305         (gimple_merge_blocks): Update landing pad data structure when
7306         removing a landing pad label.
7307         (remove_useless_stmts_tc): Remove gimple_eh_filter_must_not_throw
7308         test; handle GIMPLE_EH_MUST_NOT_THROW.
7309         (is_ctrl_altering_stmt): Handle GIMPLE_EH_DISPATCH.
7310         (verify_gimple_assign_single): Don't handle EXC_PTR or FILTER_EXPR.
7311         (verify_types_in_gimple_stmt): Handle GIMPLE_EH_DISPATCH.
7312         (verify_stmt): Likewise.  Verify landing pads.
7313         (gimple_redirect_edge_and_branch): Handle GIMPLE_EH_DISPATCH.
7314         (gimple_duplicate_bb): Use maybe_duplicate_eh_stmt.
7315         (struct move_stmt_d): Add eh_map.
7316         (move_stmt_eh_region_nr, move_stmt_eh_region_tree_nr): New.
7317         (move_stmt_r): Remap eh region numbers in builtin calls,
7318         resx and eh_dispatch.
7319         (move_block_to_fn): Remove eh_offset parameter.  Use
7320         maybe_duplicate_eh_stmt_fn.
7321         (find_outermost_region_in_block): Operate on eh_region pointers
7322         instead of region numbers.
7323         (move_sese_region_to_fn): Expect eh_map instead of eh_offset from
7324         duplicate_eh_regions.
7325         * tree-cfgcleanup.c (tree_forwarder_block_p): Move entry block edge
7326         test earlier.  Disallow EH landing pads.
7327         * tree-cfa.c (create_tree_common_ann): Don't set ann->rn.
7328         * tree-flow.h: Update declarations.
7329         (struct tree_ann_common_d): Replace rn with lp_nr.
7330         * tree-inline.c (copy_tree_body_r): Don't handle RESX_EXPR.
7331         (remap_eh_region_nr, remap_eh_region_tree_nr): New.
7332         (remap_gimple_stmt): Remap eh region numbers in builtin calls,
7333         resx and eh_dispatch.
7334         (copy_bb): Use maybe_duplicate_eh_stmt_fn.
7335         (copy_edges_for_bb): Use make_eh_dispatch_edges.
7336         (copy_cfg_body): Expect eh_map instead of eh_region_offset
7337         from duplicate_eh_regions.
7338         (estimate_num_insns): Don't handle EXC_PTR_EXPR or FILTER_EXPR;
7339         update RESX; handle EH_DISPATCH.
7340         (expand_call_inline): Set eh_lp_nr, not eh_region.
7341         (maybe_inline_call_in_expr): Likewise.
7342         * tree-inline.h (struct copy_body_data): Replace eh_region with
7343         eh_lp_nr, eh_region_offset with eh_map.
7344         * tree-optimize.c (execute_fixup_cfg): Use maybe_clean_eh_stmt.
7345         * tree-pass.h (pass_lower_eh_dispatch, pass_lower_resx): New.
7346         * tree-pretty-print.c (dump_generic_node): Don't handle
7347         EXC_PTR_EXPR, FILTER_EXPR, RESX_EXPR.
7348         * tree-sra.c (scan_function): Use maybe_clean_eh_stmt.
7349         * tree-ssa-alias.c (ref_maybe_used_by_call_p_1): Don't handle
7350         EXC_PTR_EXPR, FILTER_EXPR.
7351         * tree-ssa-operands.c (get_expr_operands): Likewise.
7352         * tree-ssa-propagate.c (valid_gimple_rhs_p): Likewise.
7353         * tree-ssa-sccvn.c (copy_reference_ops_from_ref): Likewise.
7354         (ao_ref_init_from_vn_reference): Likewise.
7355         * tree-ssa-sink.c (statement_sink_location): Likewise.
7356         * tree-ssa-dce.c (mark_stmt_if_obviously_necessary): Likewise.
7357         (mark_virtual_phi_result_for_renaming): Export.  Tidy.
7358         * tree-ssa-pre.c (get_or_alloc_expr_for): Don't handle
7359         EXC_PTR_EXPR, FILTER_EXPR.
7360         (is_exception_related): Remove.
7361         (compute_avail): Don't call it.
7362         * tree-ssa-structalias.c: Remove VEC definitions for int and unsigned.
7363         * tree.c (find_decls_types_in_eh_region): Update for eh_region changes.
7364         (find_decls_types_in_node): Use FOR_ALL_EH_REGION_FN.
7365         (build_common_builtin_nodes): Add enable_cxa_end_cleanup parameter.
7366         Build EH builtins.
7367         (build_resx): Remove.
7368         * tree.def (EXC_PTR_EXPR, FILTER_EXPR, RESX_EXPR): Remove.
7369         * tree.h: Update declarations.
7370         (EH_FILTER_MUST_NOT_THROW): Remove.
7371         (struct tree_label_decl): Add eh_landing_pad_nr.
7372         (EH_LANDING_PAD_NR): New.
7373         * value-prof.c (gimple_ic): Tidy variable names.  Update for
7374         landing pad numbers.
7375         (gimple_stringop_fixed_value): Tidy variable names.  Assert
7376         that neither call stmt can throw.
7377         * vecprim.h (uchar): New.
7378         (VEC(uchar,heap), VEC(uchar,gc)): New.
7379
7380         * c-common.c (c_define_builtins): Update call to
7381         build_common_builtin_nodes.
7382         * c-parser.c (c_parse_file): Don't call
7383         default_init_unwind_resume_libfunc.
7384
7385 2009-09-14  Richard Sandiford  <rdsandiford@googlemail.com>
7386
7387         * config/mips/mips-protos.h (mips_cfun_has_cprestore_slot_p): Declare.
7388         (mips_cprestore_address_p): Likewise.
7389         (mips_save_gp_to_cprestore_slot): Likewise.
7390         (mips_restore_gp): Rename to...
7391         (mips_restore_gp_from_cprestore_slot): ...this.
7392         (mips_must_initialize_gp_p): Declare.
7393         (mips_emit_save_slot_move): Likewise.
7394         (mips_output_load_label): Return nothing.
7395         (mips_eh_uses): Declare.
7396         * config/mips/mips.h (TARGET_SPLIT_CALLS): Require epilogue_completed.
7397         (TARGET_CPRESTORE_DIRECTIVE): New macro.
7398         (TARGET_ABSOLUTE_JUMPS): Likewise.
7399         (EH_USES): Likewise.
7400         (FIRST_PSEUDO_REGISTER): Update comment.
7401         (MIPS_ABSOLUTE_JUMP): New macro, extracted from...
7402         (MIPS_CALL): ...here.
7403         (REGISTER_NAMES): Add $cprestore.
7404         * config/mips/mips.c (machine_function): Remove has_gp_insn_p.
7405         Add load_label_length, has_inflexible_gp_insn_p,
7406         has_flexible_gp_insn_p, must_initialize_gp_p and
7407         must_restore_gp_when_clobbered_p.
7408         (mips_expand_call): Don't generate split instructions here.
7409         (mips_split_call): Update the call to mips_restore_gp after
7410         the above name change.
7411         (mips16_cfun_returns_in_fpr_p): Move earlier in file.
7412         (mips_find_gp_ref): New function.
7413         (mips_insn_has_inflexible_gp_ref_p): Likewise.
7414         (mips_cfun_has_inflexible_gp_ref_p): Likewise.
7415         (mips_insn_has_flexible_gp_ref_p): Likewise.
7416         (mips_cfun_has_flexible_gp_ref_p): Likewise.
7417         (mips_function_has_gp_insn): Delete.
7418         (mips_global_pointer): Drop the df_regs_ever_live_p check.
7419         Use the new functions above.  Only return INVALID_REGNUM
7420         for TARGET_ABSOLUTE_JUMPS.
7421         (mips_must_initialize_gp_p): New function.
7422         (mips_get_cprestore_base_and_offset): New function, extracted from...
7423         (mips_cprestore_slot): ...here.  Take a bool parameter.
7424         (mips_cfun_has_cprestore_slot_p): New function.
7425         (mips_cprestore_address_p): Likewise.
7426         (mips_save_gp_to_cprestore_slot): Likewise.
7427         (mips_restore_gp): Rename to...
7428         (mips_restore_gp_from_cprestore_slot): ...this.  Assert
7429         epilogue_completed.  Update the call to mips_cprestore_slot.
7430         Test cfun->machine->must_restore_gp_when_clobbered_p.
7431         (mips_direct_save_slot_move_p): New function.
7432         (mips_emit_save_slot_move): Likewise.
7433         (mips_output_cplocal): Test mips_must_initialize_gp_p () instead
7434         of cfun->machine->global_pointer.
7435         (mips_output_function_prologue): Check mips_must_initialize_gp_p ().
7436         (mips_save_reg): Use mips_emit_save_slot_move.
7437         (mips_expand_prologue): Set must_initialize_gp_p.
7438         Use mips_cfun_has_cprestore_slot_p.  Use gen_potential_cprestore
7439         for all cprestore saves.  Emit a use_cprestore instruction after
7440         setting up the cprestore slot.
7441         (mips_restore_reg): Use mips_emit_save_slot_move.
7442         (mips_process_load_label): New function.
7443         (mips_load_label_length): Likewise.
7444         (mips_output_load_label): Don't return asm: output it here instead.
7445         Use mips_process_load_label.
7446         (mips_adjust_insn_length): Adjust the length of branch instructions
7447         that have length MAX_PIC_BRANCH_LENGTH.
7448         (mips_output_conditional_branch): Update the call to
7449         mips_output_load_label.  Assume the branch target is OPERANDS[0]
7450         rather than OPERANDS[1].  Use MIPS_ABSOLUTE_JUMP for absolute jumps.
7451         (mips_output_order_conditional_branch): Swap the meaning of
7452         OPERANDS[0] and OPERANDS[1].
7453         (mips_variable_issue): Don't count ghost instructions.
7454         (mips_expand_ghost_gp_insns): New function.
7455         (mips_reorg): Rerun mips_reorg_process_insns if it returns true.
7456         (mips_output_mi_thunk): Set must_initialize_gp_p.
7457         (mips_eh_uses): New function.
7458         * config/mips/predicates.md (cprestore_save_slot_operand)
7459         (cprestore_load_slot_operand): New predicates.
7460         * config/mips/mips.md (UNSPEC_POTENTIAL_CPRESTORE): New unspec.
7461         (UNSPEC_MOVE_GP): Likewise.
7462         (UNSPEC_CPRESTORE, UNSPEC_RESTORE_GP, UNSPEC_EH_RETURN)
7463         (UNSPEC_CONSTTABLE_INT, UNSPEC_CONSTTABLE_FLOAT): Bump to make room.
7464         (CPRESTORE_SLOT_REGNUM): New register.
7465         (MAX_PIC_BRANCH_LENGTH): New constant.
7466         (jal_macro): Use MIPS_ABSOLUTE_JUMPS.
7467         (length): Use MAX_PIC_BRANCH_LENGTH as a placeholder for PIC long
7468         branches.  Fix commentary.
7469         (loadgp_newabi_<mode>): Change from unspec_volatile to unspec.
7470         Only split if mips_must_initialize_gp_p; expand to nothing otherwise.
7471         Change type to "ghost".
7472         (loadgp_absolute_<mode>): Likewise.
7473         (loadgp_rtp_<mode>): Likewise.
7474         (copygp_mips16): Likewise.
7475         (loadgp_blockage): Remove redundant mode attribute.
7476         (potential_cprestore): New instruction.
7477         (cprestore): Turn into an unspec set.
7478         (use_cprestore): New instruction.
7479         (*branch_fp): Swap operands 0 and 1.  Remove redundant mode attribute.
7480         (*branch_fp_inverted): Likewise.
7481         (*branch_order<mode>): Likewise.
7482         (*branch_order<mode>_inverted): Likewise.
7483         (*branch_equality<mode>): Likewise.
7484         (*branch_equality<mode>_inverted): Likewise.
7485         (*branch_bit<bbv><mode>): Likewise.
7486         (*branch_bit<bbv><mode>_inverted): Likewise.
7487         (*branch_equality<mode>_mips16): Remove redundant mode.
7488         (jump): Turn into a define_expand.
7489         (*jump_absolute): New instruction.
7490         (*jump_pic): Likewise.
7491         (*jump_mips16): Rename previously-unnamed pattern.  Remove
7492         redundant mode attribute.
7493         (restore_gp): Split on epilogue_completed rather than
7494         reload_completed.  Change type to "ghost".
7495         (move_gp<mode>): New instruction.
7496         * config/mips/mips-dsp.md (mips_bposge): Swap operands 0 and 1.
7497         Remove redundant mode attribute.
7498         * config/mips/mips-ps-3d.md (bc1any4t): Likewise.
7499         (bc1any4f, bc1any2t, bc1any2f): Likewise.
7500         (*branch_upper_lower, *branch_upper_lower_inverted): Likewise.
7501
7502 2009-09-14  Michael Meissner  <meissner@linux.vnet.ibm.com>
7503
7504         PR target/41210
7505         * config/rs6000/rs6000.c (rs6000_function_value): V2DF and V2DI
7506         are returned in the same register (vs34 or v2) that Altivec vector
7507         types are returned in.
7508         (rs6000_libcall_value): Ditto.
7509
7510         PR target/41331
7511         * config/rs6000/rs6000.c (rs6000_emit_move): Use gen_add3_insn
7512         instead of explicit addsi3/adddi3 calls.
7513         (rs6000_split_multireg_move): Ditto.
7514         (rs6000_emit_allocate_stack): Ditto.
7515         (rs6000_emit_prologue): Ditto.
7516         (rs6000_output_mi_thunk): Ditto.
7517
7518         * config/rs6000/rs6000.md (bswapdi*): Don't assume the pointer
7519         size is 64 bits if we can use 64-bit registers.
7520
7521 2009-09-14  Bernd Schmidt  <bernd.schmidt@analog.com>
7522
7523         * config/bfin/bfin.c (bfin_longcall_p): Don't use short calls for weak
7524         symbols.
7525
7526         From Jie Zhang <jie.zhang@analog.com>:
7527         * config/bfin/bfin.c (bfin_expand_prologue): Ask do_link to
7528         save FP and RETS with saveall attribute.
7529         (bfin_expand_epilogue): Ask do_unlink to restore FP and RETS
7530         with saveall attribute.
7531
7532         * config/bfin/bfin.c (bfin_expand_builtin,
7533         case BFIN_BUILTIN_MULT_1X32X32): Force constants to registers for the
7534         operands.
7535
7536         From Jie Zhang <jie.zhang@analog.com>:
7537         * config/bfin/bfin.c (bfin_expand_builtin): Initialize icodes
7538         before use in two places.
7539         * config/bfin/bfin.md (AREG): Define mode iterator.
7540         (reload_in, reload_out): Use mode iterator AREG.
7541
7542 2009-09-14  Richard Guenther  <rguenther@suse.de>
7543
7544         PR middle-end/41350
7545         * dwarf2out.c (dwarf2out_begin_prologue): Adjust non-CFI asm
7546         EH personality path.
7547
7548 2009-09-13  Richard Guenther  <rguenther@suse.de>
7549             Rafael Avila de Espindola  <espindola@google.com>
7550
7551         * langhooks-def.h (LANG_HOOKS_EH_RUNTIME_TYPE): Define.
7552         (LANG_HOOKS_EH_PERSONALITY): Likewise.
7553         (LANG_HOOKS_INITIALIZER): Adjust.
7554         (lhd_pass_through_t): Declare.
7555         * langhooks.h (struct lang_hooks): Add eh_runtime_type and
7556         eh_personality.
7557         * langhooks.c (lhd_pass_through_t): New function.
7558         * dwarf2out.c (output_call_frame_info, dwarf2out_do_cfi_startproc,
7559         dwarf2out_begin_prologue): Use personality from current_function_decl.
7560         * expr.h (get_personality_function): Declare.
7561         * expr.c (get_personality_function): New function.
7562         (build_personality_function): Likewise.
7563         * libfuncs.h (libfunc_index): Remove LTI_eh_personality.
7564         (eh_personality_libfunc): Remove.
7565         * optabs.c (build_libfunc_function): New function split out from ...
7566         (init_one_libfunc): ... here.
7567         * tree.h (DECL_FUNCTION_PERSONALITY): New.
7568         (tree_function_decl): Add personality.
7569         (lhd_gcc_personality): Declare.
7570         (build_personality_function): Likewise.
7571         * tree.c (gcc_eh_personality_decl): New.
7572         (lhd_gcc_personality): New function.
7573         * except.h (lang_eh_runtime_type): Remove.
7574         (enum eh_personality_kind): New.
7575         (build_personality_function): Declare.
7576         (function_needs_eh_personality): Declare.
7577         * except.c (lang_eh_runtime_type): Remove.
7578         (function_needs_eh_personality): New function.
7579         (add_type_for_runtime): Call lang_hooks.type_for_runtime instead.
7580         (sjlj_emit_function_enter, output_function_exception_table):
7581         Use personality from current_function_decl.
7582         * tree-eh.c (lower_eh_constructs): Set DECL_FUNCTION_PERSONALITY.
7583         * tree-inline.c (tree_can_inline_p): Do not inline across different
7584         EH personalities.
7585         (expand_call_inline): Likewise.  Adjust the callers EH personality.
7586         (tree_function_versioning): Copy DECL_FUNCTION_PERSONALITY.
7587         * cgraph.c (cgraph_add_new_function): Set DECL_FUNCTION_PERSONALITY.
7588         * Makefile.in (cgraph.o): Add $(EXCEPT_H) dependency.
7589         (c-parser.o): Likewise
7590         * c-tree.h (c_eh_initialized_p): Remove.
7591         (c_maybe_initialize_eh): Likewise.
7592         * c-decl.c (finish_decl): Don't call c_maybe_initialize_eh.
7593         (finish_decl): Don't call c_maybe_initialize_eh.
7594         (c_eh_initialized_p): Remove.
7595         (c_maybe_initialize_eh): Likewise.
7596         * c-parser.c (c_parser_omp_construct): Likewise.
7597         (c_parse_file): Initialize exception handling.
7598
7599 2009-09-13  Kai Tietz  <kai.tietz@onevision.com>
7600
7601         * config.gcc (tm_file): Remove i386/biarch32.h
7602         for i?86-w64-mingw* case.
7603         (i?86-*-mingw* andx86_64-*-mingw*): Add multilib
7604         support.
7605         * config.host: Set for x64 mingw the option
7606         use_long_long_for_widest_fast_int to yes.
7607
7608 2009-09-13  Eric Botcazou  <ebotcazou@adacore.com>
7609
7610         * tree.h (DECL_IGNORED_P): Document further effect for FUNCTION_DECL.
7611         * dbxout.c (dbxout_function_end): Do not test DECL_IGNORED_P.
7612         (dbxout_begin_function): Likewise.
7613         * final.c (dwarf2_debug_info_emitted_p): New predicate.
7614         (final_start_function): Do not emit debug info if DECL_IGNORED_P is
7615         set on the function.
7616         (final_end_function): Likewise.
7617         (final_scan_insn): Likewise.
7618         (rest_of_handle_final): Likewise.
7619         * varasm.c (assemble_start_function): Likewise.
7620         * config/rs6000/xcoff.h (ASM_DECLARE_FUNCTION_NAME): Likewise.
7621
7622 2009-09-12  Jason Merrill  <jason@redhat.com>
7623
7624         * dbgcnt.c (dbg_cnt_process_single_pair): constify.
7625         * opts.c (common_handle_option): constify.
7626
7627 2009-09-12  Gerald Pfeifer  <gerald@pfeifer.com>
7628
7629         * doc/install.texi (avr): Remove obsolete reference site.
7630
7631 2009-09-12  Gerald Pfeifer  <gerald@pfeifer.com>
7632
7633         * doc/install.texi (Binaries): Adjust AIX link.
7634
7635 2009-09-12  Akim Demaille  <demaille@gostai.com>
7636
7637         * doc/invoke.texi (-fstrict-aliasing): Correct two examples.
7638         Use an imperative sentence.
7639
7640 2009-09-11  Richard Henderson  <rth@redhat.com>
7641
7642         * gsstruct.def (DEFGSSTRUCT): Remove printable-name argument; add
7643         structure-name and has-tree-operands arguments; update all entries.
7644         * gimple.def (DEFGSCODE): Replace 3rd argument with GSS_symbol;
7645         update all entries.
7646         * gimple.c (gimple_ops_offset_): Use HAS_TREE_OP argument.
7647         (gsstruct_code_size): New.
7648         (gss_for_code_): New.
7649         (gss_for_code): Remove.
7650         (gimple_size): Rewrite using gsstruct_code_size.
7651         (gimple_statement_structure): Move to gimple.h.
7652         * gimple.h (gimple_ops_offset_, gss_for_code_): Declare.
7653         (gss_for_code, gimple_statement_structure): New.
7654         (gimple_ops): Use new arrays; tidy.
7655
7656 2009-09-11  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
7657
7658         * config/pa/predicates.md (symbolic_operand): Require a CONST symbolic
7659         operand to be a PLUS expression.
7660         * config/pa/pa.c (pa_secondary_reload): Likewise.
7661
7662 2009-09-11  Jakub Jelinek  <jakub@redhat.com>
7663
7664         * combine.c (propagate_for_debug_subst): Call wrap_constant on top.
7665
7666         * print-rtl.c (print_rtx): Use JUMP_LABEL (in_rtx) instead of
7667         XEXP (in_rtx, 8).
7668
7669 2009-09-11  Bernd Schmidt  <bernd.schmidt@analog.com>
7670
7671         From Jie Zhang <jie.zhang@analog.com>:
7672         * doc/extend.texi (node Function Attributes): Document l2
7673         function attribute.
7674         (node Blackfin Variable Attributes): Document l2 variable attributes.
7675
7676 2009-09-11  Loren J. Rittle  <ljrittle@acm.org>
7677
7678         * config.gcc (*-*-freebsd*): Enable default_use_cxa_atexit
7679         to match the system compiler's configuration at inflection point.
7680         Add comment to remark a remaining difference with system compiler.
7681
7682         * configure.ac (*-*-freebsd*): Enable check for __stack_chk_fail.
7683         * configure: Regenerate.
7684
7685 2009-09-11  Bernd Schmidt  <bernd.schmidt@analog.com>
7686
7687         From Jie Zhang <jie.zhang@analog.com>:
7688         * config/bfin/bfin.c (bfin_expand_call): Handle L2 functions.
7689         (bfin_handle_l2_attribute): New.
7690         (bfin_attribute_table): Add l2 attribute.
7691
7692 2009-09-11  Michael Matz  <matz@suse.de>
7693
7694         PR middle-end/41275
7695         * tree-inline.c (remap_decls): Don't put DECL_EXTERNAL decls
7696         on the local_decls list.
7697
7698 2009-09-11  Alexandre Oliva  <aoliva@redhat.com>
7699
7700         PR debug/41276
7701         PR debug/41307
7702         * cselib.c (cselib_expand_value_rtx_cb): Document callback
7703         interface.
7704         (cselib_expand_value_rtx_1): Use callback for SUBREGs.  Adjust
7705         for VALUEs, to implement the documented interface.
7706         * var-tracking.c (vt_expand_loc_callback): Handle SUBREGs.
7707         Adjust for VALUEs and anything else, to implement the
7708         documented interface.
7709
7710 2009-09-10  Nathan Froyd  <froydnj@codesourcery.com>
7711
7712         * config/rs6000/rs6000.h (DATA_ALIGNMENT): Check that we are dealing
7713         with actual SPE/paired vector modes before using 64-bit alignment.
7714         Check that TYPE is a REAL_TYPE for TARGET_E500_DOUBLE.
7715
7716 2009-09-10  DJ Delorie  <dj@redhat.com>
7717
7718         * config/mep/mep.md (eh_epilogue): Defer until after epilogue is
7719         emitted.
7720
7721         * config/mep/mep.h (LEGITIMATE_CONSTANT_P): New.
7722         * config/mep/mep.c (mep_legitimate_constant_p): New.
7723         * config/mep/mep-protos.h: Prototype it.
7724
7725 2009-09-10  Richard Henderson  <rth@redhat.com>
7726
7727         * print-rtl.c (print_rtx): Fix JUMP_LABEL index.
7728
7729 2009-09-10  Jason Merrill  <jason@redhat.com>
7730
7731         * tree.c (chain_index): New fn.
7732         * tree.h: Declare it.
7733
7734 2009-09-10  Rainer Orth  <ro@CeBiTec.Uni-Bielefeld.DE>
7735
7736         * config/sol2-c.c (cmn_err_length_specs): Initialize
7737         scalar_identity_flag.
7738
7739 2009-09-10  Richard Henderson  <rth@redhat.com>
7740
7741         * tree.h (struct tree_decl_common): Move align member earlier;
7742         move label_decl_uid member ...
7743         (struct tree_label_decl): ... here.
7744         (LABEL_DECL_UID): Update to match.
7745
7746         * tree-cfg.c (dump_function_to_file): Dump eh tree with TDF_EH,
7747         not TDF_DETAILS.
7748
7749         * tree-cfg.c (gimple_redirect_edge_and_branch): Do
7750         gimple_try_redirect_by_replacing_jump test after no-op and EH tests.
7751
7752         * tree-cfg.c (split_edge_bb_loc): Don't disallow placement at
7753         dest_prev if the edge is complex.
7754
7755         * tree-cfg.c (is_ctrl_stmt): Use a switch.
7756
7757         * tree-cfg.c (gimple_can_merge_blocks_p): Move label and
7758         loop latch tests earlier.
7759
7760         * gimple-iterator.c (gimple_find_edge_insert_loc): Insert
7761         before GIMPLE_RETURN, not after its predecessor; insert
7762         before GIMPLE_RESX.
7763
7764         * gimple-iterator.c (gimple_find_edge_insert_loc): Use
7765         gimple_seq_empty_p to test for no PHI nodes.
7766         * tree-cfg.c (split_critical_edges): Likewise.
7767
7768         * c-common.h (c_dialect_cxx, c_dialect_objc): Boolify.
7769
7770 2009-09-10  Hariharan Sandanagobalane  <hariharan@picochip.com>
7771
7772         * final.c (shorten_branches) : Ignore DEBUG_INSN_P instructions
7773         introduced by the VTA branch merge.
7774
7775 2009-09-10  Uros Bizjak  <ubizjak@gmail.com>
7776
7777         * ira-conflicts.c: Use fputs or putc instead of fprintf
7778         where appropriate.
7779         * cfg.c: Ditto.
7780         * toplev.c: Ditto.
7781         * tree-switch-conversion.c: Ditto.
7782
7783 2009-09-10  Hariharan Sandanagobalane  <hariharan@picochip.com>
7784
7785         * config/picochip/picochip.c : Ignore DEBUG_INSN_P instructions
7786         introduced by the VTA branch merge.
7787
7788 2009-09-10  Uros Bizjak  <ubizjak@gmail.com>
7789
7790         Revert:
7791         2009-09-09  Uros Bizjak  <ubizjak@gmail.com>
7792
7793         PR rtl-optimization/39779
7794         * expr.c (convert_modes): Return when mode == oldmode after
7795         CONST_INTs are processed.
7796
7797 2009-09-10  Nick Clifton  <nickc@redhat.com>
7798
7799         * config/mep/mep.c (mep_encode_section_info): Copy weakness
7800         attribute and referring decl when creating renamed symbol.
7801
7802 2009-09-10  Richard Guenther  <rguenther@suse.de>
7803
7804         PR middle-end/41257
7805         * cgraphunit.c (cgraph_emit_thunks): Emit thunks only for
7806         reachable nodes.
7807         (cgraph_finalize_compilation_unit): Compute reachability
7808         before emitting thunks.  Properly process aliases before
7809         possibly removing unreachable nodes.
7810
7811 2009-09-10  Richard Guenther  <rguenther@suse.de>
7812
7813         PR middle-end/41254
7814         * tree.c (struct free_lang_data_d): Add worklist member.
7815         (find_decls_types_r): Push onto the worklist instead of recursing.
7816         Handle TREE_BINFOs properly.
7817         (find_decls_types): New function wrapped around find_decls_types_r
7818         to process the worklist.
7819         (find_decls_types_in_eh_region): Use it.
7820         (find_decls_types_in_node): Likewise.
7821         (find_decls_types_in_var): Likewise.
7822         (free_lang_data_in_cgraph): Likewise.  Free the worklist.
7823         * tree.h (RECORD_OR_UNION_TYPE_P): New.
7824         (AGGREGATE_TYPE_P): Adjust.
7825
7826 2009-09-09  Jason Merrill  <jason@redhat.com>
7827
7828         * configure.ac: Check glibc version even if we have an in-tree
7829         assembler.
7830
7831 2009-09-09  Anthony Green  <green@moxielogic.com>
7832
7833         * config/moxie/moxie.md (*movsi, *movhi, *movqi): Use xor to load
7834         the constant 0 when appropriate.
7835         * config/moxie/constraints.md: Add constraint O.
7836
7837         * config/moxie/moxie.c (moxie_setup_incoming_varargs): Adjust
7838         to pass up to 6 32-bit argument values in registers.
7839         (moxie_function_arg): Ditto.
7840         (moxie_arg_partial_bytes): Ditto.
7841         * config/moxie/moxie.h (FUNCTION_ARG_ADVANCE): Ditto.
7842         (REG_PARM_STACK_SPACE): Ditto.
7843         (FUNCTION_ARG_REGNO_P): Ditto.
7844
7845         * config/moxie/moxie.c (moxie_expand_prologue): Use dec
7846         instruction to allocate stack space.
7847
7848 2009-09-09  Segher Boessenkool  <segher@kernel.crashing.org>
7849
7850         * config/rs6000/rs6000.md (bswapdi2_64bit): Fix
7851         unnecessarily stringent constraints.  Fix address
7852         calculation in the splitters.
7853
7854 2009-09-09  Uros Bizjak  <ubizjak@gmail.com>
7855
7856         PR rtl-optimization/39779
7857         * expr.c (convert_modes): Return when mode == oldmode after
7858         CONST_INTs are processed.
7859
7860 2009-09-09  Kai Tietz  <kai.tietz@onevision.com>
7861
7862         PR/41315
7863         * config/i386.c (ix86_can_use_return_insn_p): Check for padding0, too.
7864         (ix86_expand_prologue): Take frame.padding0 into logic of
7865         to_allocate checks.
7866         (ix86_expand_epilogue): Likewise.
7867
7868 2009-09-09  Jakub Jelinek  <jakub@redhat.com>
7869
7870         * config/t-slibgcc-elf-ver (SHLIB_MAKE_SOLINK, SHLIB_INSTALL_SOLINK):
7871         New variables.
7872         (SHLIB_LINK, SHLIB_INSTALL): Use them.
7873         * config/t-slibgcc-libgcc: New file.
7874         * config.gcc (powerpc*-*-linux*, powerpc*-*-gnu*): Use it.
7875
7876 2009-09-09  Martin Jambor  <mjambor@suse.cz>
7877
7878         PR tree-optimization/41089
7879         * tree-sra.c (find_var_candidates): Do not consider va_lists in
7880         early SRA.
7881
7882 2009-09-09  Richard Henderson  <rth@redhat.com>
7883
7884         * gimple.h (CASE_GIMPLE_OMP): New.
7885         (is_gimple_omp): Use it.
7886         * tree-cfg.c (is_ctrl_altering_stmt): Likewise.
7887         (verify_gimple_debug): Likewise.
7888
7889 2009-09-09  Richard Guenther  <rguenther@suse.de>
7890
7891         PR tree-optimization/41101
7892         * tree-ssa-pre.c (maximal_set): Remove.
7893         (compute_antic_aux): Treat the maximal set as implicitly all ones.
7894         Defer all blocks we didn't visit at least one successor.
7895         (add_to_exp_gen): Do not add to the maximal set.
7896         (make_values_for_phi): Likewise.
7897         (compute_avail): Likewise.
7898         (init_pre): Do not allocate the maximal set.
7899         (execute_pre): Do not dump it.
7900
7901 2009-09-09  Martin Jambor  <mjambor@suse.cz>
7902
7903         * tree-cfg.c (verify_gimple_phi): Check that gimple_phi_result is
7904         an SSA_NAME rather than a is_gimple_variable.
7905
7906 2009-09-09  Richard Guenther  <rguenther@suse.de>
7907
7908         PR middle-end/41317
7909         * tree-ssa-ccp.c (maybe_fold_offset_to_component_ref): Remove
7910         code dealing with plain pointer bases.
7911         (maybe_fold_offset_to_reference): Likewise.
7912         (maybe_fold_stmt_addition): Adjust.
7913
7914 2009-09-09  Richard Guenther  <rguenther@suse.de>
7915
7916         * tree.c (free_lang_data_in_type): Do not free the type variant
7917         chains.
7918         (free_lang_data): Merge char_type_node with its properly signed
7919         variant.
7920         (pass_ipa_free): Collect after freeing language specific data.
7921
7922 2009-09-09  Michael Matz  <matz@suse.de>
7923
7924         PR middle-end/41268
7925         * cfgexpand.c (expand_gimple_stmt_1): Use an int for storing
7926         SUBREG_PROMOTED_UNSIGNED_P, instead of a bool.
7927         * rtl.h (struct rtx, SUBREG_PROMOTED_UNSIGNED_P): Update comments
7928         to reflect reality.
7929
7930 2009-09-08  DJ Delorie  <dj@redhat.com>
7931
7932         * config/mep/mep.c (conversions[]): Add "ml" pattern.
7933
7934 2009-09-04  Jason Merrill  <jason@redhat.com>
7935
7936         * tree.c (tree_find_value): Remove.
7937         * tree.h: Remove prototype.
7938         * varasm.c (assemble_external): Use value_member instead.
7939
7940 2009-09-08  Alexandre Oliva  <aoliva@redhat.com>
7941
7942         * toplev.c (process_options): Choose default debugging type when
7943         gtoggle enables debug info and type is unset.
7944
7945 2009-09-08  Alexandre Oliva  <aoliva@redhat.com>
7946
7947         PR debug/41276
7948         PR debug/41307
7949         * cselib.c (cselib_expand_value_rtx_1): Don't return copy of
7950         invalid subreg.
7951
7952 2009-09-08  Alexandre Oliva  <aoliva@redhat.com>
7953
7954         * configure: Rebuilt with modified libtool.m4.
7955
7956 2009-09-08  Alexandre Oliva  <aoliva@redhat.com>
7957
7958         PR debug/41229
7959         PR debug/41291
7960         PR debug/41300
7961         * tree-ssa.c (execute_update_addresses_taken): Update debug insns.
7962
7963 2009-09-08  Alexandre Oliva  <aoliva@redhat.com>
7964
7965         * tree-ssa-loop-ivopts.c (get_phi_with_result): Remove.
7966         (remove_statement): Likewise.
7967         (rewrite_use_nonlinear_expr): Adjust.
7968         (remove_unused_ivs): Collect SSA NAMEs to remove and call...
7969         * tree-ssa.c (release_defs_bitset): ... this.  New.
7970         * tree-flow.h (release_defs_bitset): Declare.
7971
7972 2009-09-08  Alexandre Oliva  <aoliva@redhat.com>
7973
7974         PR debug/41232
7975         * tree-ssa-phiopt.c (minmax_replacement): Skip debug stmts
7976         in the middle block.
7977
7978 2009-09-08  Kai Tietz  <kai.tietz@onevision.com>
7979
7980         * tree-ssa-reassoc.c (find_operand_rank): Cast pointer
7981         via intptr_t to long type.
7982         (insert_operand_rank): Cast long type via intptr_t to
7983         pointer type.
7984         * genattrtab.c (RTL_HASH): Use intptr_t to cast from
7985         pointer to scalar.
7986         * c-pretty-print.c (pp_c_tree_decl_identifier): Cast
7987         from pointer to unsigned via uintptr_t.
7988
7989         * configure.ac (GCC_STDINT_TYPES): Initialize intptr_t,
7990         uintptr_t, HAVE_INTTYPES_H, HAVE_STDINT_H, HAVE_UINTPTR_T,
7991         and HAVE_INTPTR_T.
7992         * configure: Regenerated.
7993         * config.in: Regenerated
7994         * system.h (stdint.h): Add include.
7995         (inttypes.h): Likewise.
7996         * Makefile.in (aclocal): Add config/stdint.m4.
7997         * aclocal.m4: Regenerated.
7998
7999 2009-09-08  Bernd Schmidt  <bernd.schmidt@analog.com>
8000
8001         * config/bfin/bfin.c (np_check_regno, np_after_branch): New static
8002         variables.
8003         (note_np_check_stores): New function.
8004         (harmless_null_pointer_p): New function.
8005         (trapping_loads_p): New args NP_REG and AFTER_NP_BRANCH.  Callers
8006         changed.  Take into account whether we're in the shadow of a condjump
8007         that tested NP_REG for NULL.
8008         Lose all code that tested for SEQUENCEs.
8009         (workaround_speculation): Avoid inserting NOPs for loads that are
8010         either always executed or a NULL pointer.
8011
8012 2009-09-08  Jan Hubicka  <jh@suse.cz>
8013
8014         * doc/invoke.texi (early-inlining-insns): Reduce from 12 to 8.
8015         * params.def (early-inlining-insns): Likewise.
8016
8017 2009-09-08  Jakub Jelinek  <jakub@redhat.com>
8018
8019         PR rtl-optimization/41239
8020         * sched-int.h (struct deps): Add last_function_call_may_noreturn field.
8021         * sched-rgn.c (deps_join): Join also last_function_call_may_noreturn
8022         lists.
8023         * sched-deps.c (sched_analyze_insn): Prevent moving trapping insns
8024         across calls, as the calls might not always return normally.
8025         (call_may_noreturn_p): New function.
8026         (deps_analyze_insn): Update last_function_call_may_noreturn list.
8027         (init_deps): Initialize it.
8028         (remove_from_deps): Also remove calls from
8029         last_function_call_may_noreturn list.
8030
8031 2009-09-07  Richard Henderson  <rth@redhat.com>
8032
8033         * tree-ssa-sccvn.c (vn_reference_lookup_3): Don't assume there are
8034         more VR->OPERANDS than LHS operands.  Free LHS before returning.
8035
8036 2009-09-07  Bernd Schmidt  <bernd.schmidt@analog.com>
8037
8038         * config/bfin/bfin.md (UNSPEC_VOLATILE_STALL): New constant.
8039         (attr "addrtype"): New member "spreg".
8040         Use it if mem_spfp_address_operand is true for the address.
8041         (attr "type"): New entry "stall".
8042         (cpu_unit "load"): New.
8043         (insn_reservations "load32", "loadp", "loadi"): Add reservation of
8044         "load".
8045         (insn_reservation "loadsp"): New.
8046         (insn_reservation "load_stall1"): New.
8047         (insn_reservation "load_stall3"): New.
8048         (stall): New insn.
8049         * config/bfin/predicates.md (const1_operand, const3_operand): New.
8050         (mem_p_address_operand): Exclude stack and frame pointer based
8051         addresses.
8052         (mem_spfp_address_operand): New; match them here.
8053         * config/bfin/bfin.c (add_sched_insns_for_speculation): New function.
8054         (bfin_reorg): Call it if scheduling insns.
8055         (bfin_gen_bundles): Remove dummy insns created by
8056         add_sched_insns_for_speculation.
8057
8058         From Jie Zhang <jie.zhang@analog.com>:
8059         * config/bfin/bfin-protos.h (enum bfin_cpu_type, bfin_cpu_type,
8060         bfin_si_revision, bfin_workarounds): Move these ...
8061         * config/bfin/bfin.h: ... here.
8062
8063         From Mike Frysinger  <michael.frysinger@analog.com>
8064         * config/bfin/bfin-protos.h (bfin_cpu_type): Add BFIN_CPU_BF542M,
8065         BFIN_CPU_BF544M, BFIN_CPU_BF547M, BFIN_CPU_BF548M, and BFIN_CPU_BF549M.
8066         * config/bfin/bfin.c (bfin_cpus[]): Add 0.3 for bf542m, bf544m,
8067         bf547m, bf548m, and bf549m.
8068         * config/bfin/bfin.h (TARGET_CPU_CPP_BUILTINS): Define __ADSPBF542M__
8069         for BFIN_CPU_BF542M, __ADSPBF544M__ for BFIN_CPU_BF544M,
8070         __ADSPBF547M__ for BFIN_CPU_BF547M, __ADSPBF548M__ for
8071         BFIN_CPU_BF548M, and __ADSPBF549M__ for BFIN_CPU_BF549M.
8072         * config/bfin/t-bfin-elf (MULTILIB_MATCHES): Select bf532-none for
8073         bf542m-none, bf544m-none, bf547m-none, bf548m-none, and bf549m-none.
8074         * config/bfin/t-bfin-linux (MULTILIB_MATCHES): Likewise.
8075         * config/bfin/t-bfin-uclinux (MULTILIB_MATCHES): Likewise.
8076         * doc/invoke.texi (Blackfin Options): Document that -mcpu now accepts
8077         bf542m, bf544m, bf547m, bf548m, and bf549m.
8078
8079         From Jie Zhang <jie.zhang@analog.com>:
8080         * config/bfin/predicates.md (p_register_operand): New predicate.
8081         (dp_register_operand): New predicate.
8082         * config/bfin/bfin-protos.h (WA_05000074): Define.
8083         (ENABLE_WA_05000074): Define.
8084         * config/bfin/bfin.c (bfin_cpus[]): Add WA_05000074 for all cpus.
8085         (bfin_gen_bundles): Put dsp32shiftimm instruction in slot[0].
8086         * config/bfin/bfin.md (define_attr type): Add dsp32shiftimm.
8087         (define_attr addrtype): Allow load/store register to be P register.
8088         (define_attr storereg): New.
8089         (define_cpu_unit anomaly_05000074): New.
8090         (define_insn_reservation dsp32shiftimm): New.
8091         (define_insn_reservation dsp32shiftimm_anomaly_05000074): New.
8092         (define_insn_reservation loadp): Cannot use slot2.
8093         (define_insn_reservation loadsp): Cannot use slot2.
8094         (define_insn_reservation storep): Cannot use slot2. Does not
8095         apply when working around 05000074.
8096         (define_insn_reservation storep_anomaly_05000074): New.
8097         (define_insn_reservation storei): Does not apply when working
8098         around 05000074.
8099         (define_insn_reservation storei_anomaly_05000074): New.
8100         (define_attr length): Add dsp32shiftimm case.
8101         (define_insn movsi_insn32, movsi_insv, ashlsi3_insn, ashrsi3,
8102         ror_one, rol_one, lshrsi3, lshrpdi3, ashrpdi3, movhiv2hi_low,
8103         movhiv2hi_high, composev2hi, packv2hi, movv2hi_hi,
8104         ssashiftv2hi3, ssashifthi3, ssashiftsi3, lshiftv2hi3, lshifthi3):
8105         Set type as dsp32shiftimm for dsp32shiftimm alternatives.
8106
8107 2009-09-07  Martin Jambor  <mjambor@suse.cz>
8108
8109         PR middle-end/41282
8110         * tree-sra.c (create_artificial_child_access): Return NULL if
8111         build_ref_for_offset fails.
8112         (propagate_subacesses_accross_link): Allow build_ref_for_offset
8113         and create_artificial_child_access to fail.
8114
8115 2009-09-06  Dmitry Gorbachev  <d.g.gorbachev@gmail.com>
8116
8117         PR c++/41214
8118         * unwind-dw2.c (uw_init_context_1): Mark noinline.
8119         * config/ia64/unwind-ia64.c (uw_init_context_1): Likewise.
8120         * config/xtensa/unwind-dw2-xtensa.c (uw_init_context_1): Likewise.
8121
8122 2009-09-07  Bernd Schmidt  <bernd.schmidt@analog.com>
8123
8124         * config/bfin/bfin.c (bfin_optimize_loop): When creating a new basic
8125         block, ensure it has an exit edge.  Emit a barrier after a jump.
8126
8127 2009-09-07  Nick Clifton  <nickc@redhat.com>
8128
8129         * gcc.c (this_is_linker_script): New variable.  Like
8130         this_is_library_file but for the %T constructor.
8131         (end_going_arg): If this_is_linker_script is set then locate the
8132         script and insert a --script switch before it
8133         (do_spec_2): Initialise this_is_linker_script.
8134         (do_spec_1): Likewise.  Handle %T construct.
8135         (eval_spec_function): Preserve this_is_linker_script.
8136         * doc/invoke.texi: Document %T construct in spec files.
8137         * config/m32c/m32c.h (LIB_SPEC): Use it.
8138
8139 2009-09-07  Andreas Krebbel  <Andreas.Krebbel@de.ibm.com>
8140
8141         * rtl.h (PREFETCH_SCHEDULE_BARRIER_P): New macro.
8142         * sched-deps.c (sched_analyze_2): Make prefetches a hard barrier
8143         when volatile flag is set.
8144         * doc/rtl.texi (PREFETCH_SCHEDULE_BARRIER_P): Add documentation pieces.
8145
8146 2009-09-06  Eric Botcazou  <ebotcazou@adacore.com>
8147
8148         PR bootstrap/41241
8149         * combine-stack-adj.c (try_apply_stack_adjustment): Handle stores.
8150         (combine_stack_adjustments_for_block): Allow insns between stack
8151         adjustments and stores with corresponding pre-(dec|inc)rement or
8152         pre-modify operation.
8153
8154 2009-09-06  Jakub Jelinek  <jakub@redhat.com>
8155
8156         PR bootstrap/41241
8157         * combine-stack-adj.c (struct csa_memlist): Rename to...
8158         (struct csa_reflist): ... this.  Rename mem field to ref.
8159         (free_csa_memlist): Rename to...
8160         (free_csa_reflist): ... this.
8161         (record_one_stack_memref): Rename to...
8162         (record_one_stack_ref): ... this.  Handle also REG_P.
8163         (try_apply_stack_adjustment): Handle also REG_P.
8164         (struct record_stack_memrefs_data): Rename to...
8165         (struct record_stack_refs_data): ... this.  Rename memlist field to
8166         reflist.
8167         (record_stack_memrefs): Rename to...
8168         (record_stack_refs): ... this.  For DEBUG_INSNs keep traversing
8169         subexpressions instead of failing when a MEM contains SP references.
8170         For SP itself in DEBUG_INSNs queue it also onto reflist chain.
8171         (combine_stack_adjustments_for_block): Adjust for mem to ref renaming.
8172
8173 2009-09-06  Richard Guenther  <rguenther@suse.de>
8174
8175         PR middle-end/41144
8176         * tree.c (build_array_type): Do not record types marked
8177         with structural equality in the canonical type hashtable.
8178
8179 2009-09-06  Richard Guenther  <rguenther@suse.de>
8180
8181         PR middle-end/41261
8182         * tree-ssa-alias.c (refs_may_alias_p_1): Bail out for function decls.
8183
8184 2009-09-05  Richard Guenther  <rguenther@suse.de>
8185
8186         PR middle-end/41181
8187         * tree-ssa-ccp.c (maybe_fold_stmt_addition): Use the correct type.
8188
8189 2009-09-05  Richard Guenther  <rguenther@suse.de>
8190
8191         PR debug/41273
8192         * tree-ssa-operands.c (get_tmr_operands): Pass through opf_no_vops.
8193
8194 2009-09-05  Richard Guenther  <rguenther@suse.de>
8195
8196         PR middle-end/41271
8197         * tree-ssa.c (useless_type_conversion_p): Drop qualifiers
8198         before comparing function argument types.
8199
8200 2009-09-05  Francois-Xavier Coudert  <fxcoudert@gcc.gnu.org>
8201
8202         PR target/41024
8203         * config/i386/mingw-w64.h (ASM_SPEC): Pass -v instead of -V to
8204         the assembler.
8205
8206 2009-09-04  Uros Bizjak  <ubizjak@gmail.com>
8207
8208         Revert:
8209         2009-08-18  Uros Bizjak  <ubizjak@gmail.com>
8210
8211         * config/alpha/alpha.c (alpha_output_mi_thunk_osf): Allocate insn
8212         locators before emit_insn is called.
8213
8214 2009-09-04  Vladimir Makarov  <vmakarov@redhat.com>
8215
8216         PR bootstrap/41241
8217         * ira.c (update_equiv_reg): Revert my previous patch for the PR.
8218         * reginfo.c (resize_reg_info): Call allocate_reg_info if necessary.
8219         (reginfo_init): Don't call allocate_reg_info.
8220
8221 2009-09-04  Uros Bizjak  <ubizjak@gmail.com>
8222
8223         PR target/41262
8224         * config/alpha/alpha.c (alpha_does_function_need_gp): Use
8225         NONDEBUG_INSN_P instead of INSN_P.
8226
8227 2009-09-04  Alexandre Oliva  <aoliva@redhat.com>
8228
8229         PR debug/41225
8230         * tree-vect-stmts.c (vect_stmt_relevant_p): Skip debug uses.
8231
8232 2009-09-04  Alexandre Oliva  <aoliva@redhat.com>
8233
8234         PR target/41252
8235         * config/arm/vfp.md (*cmpdf_split_vfp): Fix src mode in the second
8236         pattern of the split.
8237
8238 2009-09-04  Alexandre Oliva  <aoliva@redhat.com>
8239
8240         * toplev.c (process_options): Move setter of flag_var_tracking
8241         before other tests that depend on it.  Move down setter of
8242         flag_rename_registers.  Don't enable var-tracking-assignments
8243         by default if selective scheduling is enabled.  Warn if both
8244         are enabled.
8245
8246 2009-09-04  Alexandre Oliva  <aoliva@redhat.com>
8247
8248         * var-tracking.c (dv_is_decl_p): Adjust NULL behavior to match
8249         comment.  Use switch statement to catch overlaps between rtx
8250         and tree codes.  Accept FUNCTION_DECLs in addition to those in...
8251         (IS_DECL_CODE): ... here. Remove.
8252         (check_value_is_not_decl): Remove.
8253         (dv_from_decl, dv_from_value): Check after conversion.
8254
8255 2009-09-04  Richard Guenther  <rguenther@suse.de>
8256
8257         PR middle-end/41257
8258         * (cgraph_finalize_compilation_unit): Move finalizing aliases
8259         after emitting tunks.  Move emitting thunks and ctors from ...
8260         (cgraph_optimize): ... here.  Remove redundant
8261         cgraph_analyze_functions.
8262         * varasm.c (find_decl_and_mark_needed): Remove no longer
8263         necessary check.
8264         (finish_aliases_1): Adjust check for thunk aliases.
8265
8266 2009-09-04  Daniel Gutson  <dgutson@codesourcery.com>
8267
8268         * config/arm/arm.md (ctzsi2): Added braces
8269         to avoid warning that broke booststrap.
8270
8271 2009-09-04  Martin Jambor  <mjambor@suse.cz>
8272
8273         PR tree-optimization/41112
8274         * tree-sra.c (build_ref_for_offset_1): Signal that we cannot
8275         handle variable-bounded arrays.
8276         (expr_with_var_bounded_array_refs_p): New function.
8277         (analyze_access_subtree): Call expr_with_var_bounded_array_refs_p.
8278
8279 2009-09-04  Wolfgang Gellerich  <gellerich@de.ibm.com>
8280
8281         * config/s390/2097.md: Removed two incorrect bypasses.
8282         (z10_fsimpdf): Fixed latency.
8283         (z10_fhex): New insn_reservation.
8284         (z10_floaddf): Fixed latency.
8285         (z10_floadsf): Fixed latency.
8286         (z10_ftrunctf): Fixed latency.
8287         (z10_ftruncdf): Fixed latency.
8288         * config/s390/s390.c (z10_cost): Fixed values.
8289         (s390_adjust_priority): Added z10 path.
8290         * config/s390/s390.md (type): Added fhex.
8291         (*mov<mode>_64dfp): Updated type attribute.
8292         (*mov<mode>_64): Updated type attribute.
8293         (*mov<mode>_31): Updated type attribute.
8294         (*mov<mode>"): Likewise.
8295         * config/s390/2084.md (x_fsimpdf): Updated condition.
8296
8297 2009-09-04  Andreas Krebbel  <krebbel1@de.ibm.com>
8298
8299         * config/s390/s390.md ("*fmadd<mode>", "*fmsub<mode>"): Enable mem
8300         RTXs in the predicate for operand 1.
8301
8302 2009-09-03  Daniel Gutson  <dgutson@codesourcery.com>
8303
8304         * config/arm/arm.md (UNSPEC_RBIT): New constant.
8305         (rbitsi2): New insn.
8306         (ctzsi2): New expand.
8307         * config/arm/arm.h (CTZ_DEFINED_VALUE_AT_ZERO): New macro.
8308
8309 2009-09-03  Martin Jambor  <mjambor@suse.cz>
8310
8311         * tree-sra.c (duplicate_expr_for_different_base): Removed.
8312         (create_artificial_child_access): Use build_ref_for_offset instead
8313         of duplicate_expr_for_different_base.
8314         (propagate_subacesses_accross_link): Likewise.
8315
8316 2009-09-03  Richard Sandiford  <rdsandiford@googlemail.com>
8317
8318         * config/mips/mips.c (USEFUL_INSN_P): Use NONDEBUG_INSN_P instead
8319         of INSN_P.
8320         (mips16e_collect_argument_saves): Skip debug instructions.
8321         (mips_74k_agen_init): Use CALL_P || JUMP_P instead of !NONJUMP_INSN_P.
8322         (mips16_lay_out_constants): Use USEFUL_INSN_P instead of INSN_P.
8323         (r10k_insert_cache_barriers): Likewise.
8324         (mips_reorg_process_insns): Likewise.
8325
8326 2009-09-03  Vladimir Makarov  <vmakarov@redhat.com>
8327
8328         PR bootstrap/41241
8329         * ira.c (update_equiv_reg): Remove check on class likely spill.
8330
8331 2009-09-03  Jakub Jelinek  <jakub@redhat.com>
8332
8333         PR debug/41236
8334         * dwarf2out.c (loc_descriptor): Don't use SUBREG_REG macro on
8335         SIGN_EXTEND or ZERO_EXTEND.  Don't assume there is a REG inside of
8336         it or SUBREG.
8337
8338         PR debug/41238
8339         * function.c (assign_parm_find_stack_rtl): Don't set mem attributes on
8340         the stack slot if it is passed by invisible reference.
8341         * var-tracking.c (vt_add_function_parameters): Handle arguments passed
8342         by invisible reference.
8343
8344 2009-09-03  Bernd Schmidt  <bernd.schmidt@analog.com>
8345
8346         * config/bfin/linux.h (TARGET_SUPPORTS_SYNC_CALLS): Define to 1.
8347         * config/bfin/uclinux.h (TARGET_SUPPORTS_SYNC_CALLS): Define to 1.
8348         * config/bfin/bfin.h (TARGET_SUPPORTS_SYNC_CALLS): Provide default of
8349         0.
8350         * config/bfin/sync.md: New file.
8351         * config/bfin/bfin.md: Include it.
8352         (UNSPEC_ATOMIC): New.
8353         (UNSPEC_ONES): Provide a unique number.
8354
8355         From Jie Zhang <jie.zhang@analog.com>:
8356         * config/bfin/bfin.c (ret_regs): New.
8357         (must_save_fp_p): Don't return true because of frame_pointer_needed.
8358         (must_save_rets_p): New.
8359         (n_regs_saved_by_prologue): Use must_save_rets_p instead of
8360         current_function_is_leaf.
8361         (do_link): Likewise.
8362         (do_unlink): Likewise.
8363         (expand_interrupt_handler_prologue): Use ret_regs array.
8364         (expand_interrupt_handler_epilogue): Use ret_regs array and
8365         pass return register to gen_return_internal.
8366         (bfin_expand_epilogue): Pass return register to
8367         gen_return_internal.
8368         (bfin_expand_call): Explicitly clobber RETS.
8369         * config/bfin/bfin.h (FUNCTION_RETURN_REGISTERS): Define.
8370         * config/bfin/bfin.md (call_symbol_fdpic, call_value_symbol_fdpic,
8371         call_insn_fdpic, call_value_insn_fdpic, call_symbol,
8372         call_value_symbol, call_insn, call_value_insn): Explicitly clobber
8373         RETS.
8374         (return_internal): Take a reg rtx rather than the register number.
8375
8376 2009-09-03  H.J. Lu  <hongjiu.lu@intel.com>
8377
8378         * tree-parloops.c (parallelize_loops): Cast to HOST_WIDE_INT
8379         when comparing against estimated_loop_iterations_int return.
8380
8381 2009-09-03  Richard Guenther  <rguenther@suse.de>
8382
8383         * dwarf2out.c (dwarf2out_do_cfi_asm): Remove check of
8384         eh_personality_libfunc.
8385
8386 2009-09-03  Razya Ladelsky  <razya@il.ibm.com>
8387
8388         * tree-parloops.c (separate_decls_in_region): Add space.
8389
8390 2009-09-03  Razya Ladelsky  <razya@il.ibm.com>
8391
8392         * tree-parloops.c (separate_decls_in_region): Change the condition
8393         checking if there are reductions in the loop.
8394
8395 2009-09-03  Razya Ladelsky  <razya@il.ibm.com>
8396
8397         PR tree-optimization/38275
8398         * tree-parloops.c (parallelize_loops): Replace profitability condition
8399         for expected number of iterations.
8400
8401 2009-09-03  Alexandre Oliva  <aoliva@redhat.com>
8402
8403         * doc/invoke.texi (BUILD_CONFIG): Document --with-build-config.
8404         (bootstrap-debug): Explain conditions in which it becomes default.
8405         (bootstrap-debug-big): Rather than duplicate bootstrap-debug,
8406         make it add to it.
8407
8408 2009-09-03  Namhyung Kim  <namhyung@gmail.com>
8409
8410         * doc/invoke.texi (Optimize Options): Move
8411         -finline-small-functions to the -O2 list.
8412
8413 2009-09-03  Alexandre Oliva  <aoliva@redhat.com>
8414
8415         * toplev.c (process_options): Enable var-tracking-assignments
8416         by default if var-tracking is enabled.
8417
8418 2009-09-02  David Daney  <ddaney@caviumnetworks.com>
8419
8420         * cfgbuild.c (find_bb_boundaries): Split blocks containing a
8421         barrier.
8422         * emit-rtl.c (prev_nonnote_insn_bb): New function.
8423         * rtl.h (prev_nonnote_insn_bb): Declare it.
8424
8425 2009-09-03  Diego Novillo  <dnovillo@google.com>
8426
8427         * cgraph.c (cgraph_node_for_decl): New.
8428         * cgraph.h (cgraph_node_for_decl): Declare.
8429         * tree.c (host_integerp): Return 0 if T is NULL.
8430
8431 2009-09-03  Diego Novillo  <dnovillo@google.com>
8432
8433         * tree.h (struct alias_pair): Move from varasm.c.
8434         (alias_pairs): Likewise.
8435         (TYPE_MAXVAL): Define.
8436         (TYPE_MINVAL): Define.
8437         (iterative_hash_host_wide_int): Declare.
8438         (remove_unreachable_alias_pairs): Declare.
8439         * tree-pass.h (pass_ipa_free_lang_data): Declare.
8440         * diagnostic.c (default_diagnostic_starter): Make extern.
8441         (default_diagnostic_finalizer): Make extern.
8442         * diagnostic.h (default_diagnostic_starter): Declare.
8443         (default_diagnostic_finalizer): Declare.
8444         (default_tree_printer): Declare.
8445         * toplev.c (default_tree_printer): Make extern.
8446
8447 2009-09-03  Richard Guenther  <rguenther@suse.de>
8448             Diego Novillo  <dnovillo@google.com>
8449
8450         * cgraph.c (cgraph_add_new_function): Remove gimplification.
8451         * cgraphunit.c (cgraph_expand_function): Do not emit
8452         associated thunks from here.
8453         (cgraph_emit_thunks): New.
8454         (cgraph_optimize): Call it.
8455         Return if any IPA pass finds an error.
8456         * varasm.c (finish_aliases_1): Ignore errorneous aliases used
8457         by thunks.
8458
8459 2009-09-03  Simon Baldwin  <simonb@google.com>
8460             Rafael Espindola  <espindola@google.com>
8461             Richard Guenther  <rguenther@suse.de>
8462             Doug Kwan  <dougkwan@google.com>
8463             Diego Novillo  <dnovillo@google.com>
8464
8465         * tree.c: Include tree-pass.h, langhooks-def.h,
8466         diagnostic.h, cgraph.h, timevar.h, except.h and debug.h.
8467         (free_lang_data_in_type): New.
8468         (need_assembler_name_p): New.
8469         (free_lang_data_in_block): New.
8470         (free_lang_data_in_decl): New.
8471         (struct free_lang_data_d): New.
8472         (add_tree_to_fld_list): New.
8473         (find_decls_types_r): New.
8474         (get_eh_types_for_runtime): New.
8475         (find_decls_types_in_eh_region): New.
8476         (find_decls_types_in_node): New.
8477         (find_decls_types_in_var): New.
8478         (free_lang_data_in_cgraph): New.
8479         (free_lang_data): New.
8480         (gate_free_lang_data): New.
8481         (pass_ipa_free_lang_data): New.
8482
8483 2009-09-03  Diego Novillo  <dnovillo@google.com>
8484
8485         * timevar.def (TV_IPA_FREE_LANG_DATA): Define.
8486         * langhooks.h (struct lang_hooks): Add field free_lang_data.
8487         (lang_hooks): Remove const qualifier.
8488         * ipa.c (cgraph_remove_unreachable_nodes): Call
8489         remove_unreachable_alias_pairs.
8490         * except.c (add_type_for_runtime): Check if TYPE has
8491         already been converted.
8492         (lookup_type_for_runtime): Likewise.
8493         (check_handled): Handle converted types.
8494         * varasm.c (remove_unreachable_alias_pairs): New.
8495         * gimple.c: Include demangle.h.
8496         (gimple_decl_printable_name): New.
8497         (gimple_fold_obj_type_ref): New.
8498         * gimple.h (gimple_decl_printable_name): Declare.
8499         (gimple_fold_obj_type_ref): Declare.
8500         * passes.c (init_optimization_passes): Add pass
8501         pass_ipa_free_lang_data.
8502         * langhooks-def.h (LANG_HOOKS_FREE_LANG_DATA): Define.
8503         (LANG_HOOKS_INITIALIZER): Add LANG_HOOKS_FREE_LANG_DATA.
8504
8505 2009-09-03  Diego Novillo  <dnovillo@google.com>
8506
8507         * c-lang.c (lang_hooks): Remove const qualifier.
8508
8509 2009-09-02  Loren James Rittle  <ljrittle@acm.org>
8510
8511         * doc/install.texi (*-*-freebsd*): Update target information.
8512
8513 2009-09-02  Anatoly Sokolov  <aesok@post.ru>
8514
8515         * hard-reg-set.h (call_fixed_regs): Remove.
8516         * reginfo.c (call_fixed_regs): Remove.
8517         (init_reg_sets_1): Remove initialization of call_fixed_regs.
8518         (globalize_reg): Don't use call_fixed_regs.
8519         * caller-save.c (init_caller_save): Use call_fixed_reg_set instead of
8520         call_fixed_regs.
8521
8522 2009-09-01  Michael Matz  <matz@suse.de>
8523
8524         * expr.h (emit_storent_insn, expand_expr_real_1,
8525         expand_expr_real_2): Declare.
8526         * expr.c (emit_storent_insn, expand_expr_real_1,
8527         expand_expr_real_2): Export.
8528         (store_expr): Setting and evaluating dont_return_target is useless.
8529         (expand_expr_real_1, <case GOTO_EXPR, RETURN_EXPR, SWITCH_EXPR,
8530         LABEL_EXPR and ASM_EXPR>): Move to gcc_unreachable.
8531         * except.c (expand_resx_expr): Rename to ...
8532         (expand_resx_stmt): ... this.  Rewrite to take gimple statement.
8533         * except.h (expand_resx_stmt): Declare.
8534         * stmt.c: Add include gimple.h
8535         (expand_asm_expr): Rename to ...
8536         (expand_asm_stmt): ... this. Rewrite to take gimple statement.
8537         (expand_case): Rewrite to take gimple statement.
8538         * tree.h (expand_asm_stmt): Declare.
8539         (expand_case): Change prototype.
8540         * Makefile.in (stmt.o): Depend on gimple.h.
8541         * builtins.c (expand_builtin_synchronize): Build gimple asm
8542         statement, not an ASM_EXPR.
8543         * cfgexpand.c (gimple_cond_pred_to_tree, set_expr_location_r,
8544         gimple_to_tree, release_stmt_tree): Remove.
8545         (expand_gimple_cond): Don't call gimple_cond_pred_to_tree or
8546         ggc_free, but hold comparison code and operands separately.
8547         Call jumpif_1 and jumpifnot_1 instead of jumpif and jumpifnot.
8548         (expand_call_stmt, expand_gimple_stmt_1,
8549         expand_gimple_stmt): New helpers.
8550         (expand_gimple_tailcall): Don't call gimple_to_tree, expand_expr_stmt,
8551         release_stmt_tree.  Call expand_gimple_stmt instead.
8552         (expand_gimple_basic_block): Ditto.
8553
8554         * calls.c (emit_call_1): Don't look at EH regions here, make
8555         fntree parameter useless.
8556         (expand_call): New local rettype for TREE_TYPE(exp), use it
8557         throughout.  Remove local p, use addr instead.
8558         Don't look at EH regions here.
8559
8560 2009-09-02  Vladimir Makarov  <vmakarov@redhat.com>
8561
8562         * doc/invoke.texi (-fsched-pressure): Document it.
8563         (-fsched-reg-pressure-heuristic): Remove it.
8564
8565         * reload.c (ira.h): Include.
8566         (find_reloads): Add choosing reload on number of small spilled
8567         classes.
8568
8569         * haifa-sched.c (ira.h): Include.
8570         (sched_pressure_p, sched_regno_cover_class, curr_reg_pressure,
8571         saved_reg_pressure, curr_reg_live, saved_reg_live,
8572         region_ref_regs): New variables.
8573         (sched_init_region_reg_pressure_info, mark_regno_birth_or_death,
8574         initiate_reg_pressure_info, setup_ref_regs,
8575         initiate_bb_reg_pressure_info, save_reg_pressure,
8576         restore_reg_pressure, dying_use_p, print_curr_reg_pressure): New
8577         functions.
8578         (setup_insn_reg_pressure_info): New function.
8579         (rank_for_schedule): Add pressure checking and insn issue time.
8580         Remove comparison of insn reg weights.
8581         (ready_sort): Set insn reg pressure info.
8582         (update_register_pressure, setup_insn_max_reg_pressure,
8583         update_reg_and_insn_max_reg_pressure,
8584         sched_setup_bb_reg_pressure_info): New functions.
8585         (schedule_insn): Add code for printing and updating reg pressure info.
8586         (find_set_reg_weight, find_insn_reg_weight): Remove.
8587         (ok_for_early_queue_removal): Do nothing if pressure_only_p.
8588         (debug_ready_list): Print reg pressure info.
8589         (schedule_block): Ditto.  Check insn issue time.
8590         (sched_init): Set up sched_pressure_p.  Allocate and set up some
8591         reg pressure related info.
8592         (sched_finish): Free some reg pressure related info.
8593         (fix_tick_ready): Make insn always ready if pressure_p.
8594         (init_h_i_d): Don't call find_insn_reg_weight.
8595         (haifa_finish_h_i_d): Free insn reg pressure info.
8596
8597         * ira-int.h (ira_hard_regno_cover_class, ira_reg_class_nregs,
8598         ira_memory_move_cost, ira_class_hard_regs,
8599         ira_class_hard_regs_num, ira_no_alloc_regs,
8600         ira_available_class_regs, ira_reg_class_cover_size,
8601         ira_reg_class_cover, ira_class_translate): Move to ira.h.
8602
8603         * ira-lives.c (single_reg_class): Check mode to find how many
8604         registers are necessary for operand.
8605         (ira_implicitly_set_insn_hard_regs): New.
8606
8607         * common.opt (fsched-pressure): New options.
8608         (fsched-reg-pressure-heuristic): Remove.
8609
8610         * ira.c (setup_eliminable_regset): Rename to
8611         ira_setup_eliminable_regset.  Make it external.
8612         (expand_reg_info): Pass cover class to setup_reg_classes.
8613         (ira): Call resize_reg_info instead of allocate_reg_info.
8614
8615         * sched-deps.c: Include ira.h.
8616         (implicit_reg_pending_clobbers, implicit_reg_pending_uses): New.
8617         (create_insn_reg_use, create_insn_reg_set, setup_insn_reg_uses,
8618         reg_pressure_info, insn_use_p, mark_insn_pseudo_birth,
8619         mark_insn_hard_regno_birth, mark_insn_reg_birth,
8620         mark_pseudo_death, mark_hard_regno_death, mark_reg_death,
8621         mark_insn_reg_store, mark_insn_reg_clobber,
8622         setup_insn_reg_pressure_info): New.
8623         (sched_analyze_1): Update implicit_reg_pending_uses.
8624         (sched_analyze_insn): Find implicit sets, uses, clobbers of regs.
8625         Use them to create dependencies.  Set insn reg uses and pressure
8626         info.  Process reg_pending_uses in one place.
8627         (free_deps): Free implicit sets.
8628         (remove_from_deps): Remove implicit sets if necessary.  Check
8629         implicit sets when clearing reg_last_in_use.
8630         (init_deps_global): Clear implicit_reg_pending_clobbers and
8631         implicit_reg_pending_uses.
8632
8633         * ira.h (ira_hard_regno_cover_class, ira_reg_class_nregs,
8634         ira_memory_move_cost, ira_class_hard_regs,
8635         ira_class_hard_regs_num, ira_no_alloc_regs,
8636         ira_available_class_regs, ira_reg_class_cover_size,
8637         ira_reg_class_cover, ira_class_translate): Move from ira-int.h.
8638         (ira_setup_eliminable_regset, ira_set_pseudo_classes,
8639         ira_implicitly_set_insn_hard_regs): New prototypes.
8640
8641         * ira-costs.c (pseudo_classes_defined_p, allocno_p,
8642         cost_elements_num): New variables.
8643         (allocno_costs, total_costs): Rename to costs and
8644         total_allocno_costs.
8645         (COSTS_OF_ALLOCNO): Rename to COSTS.
8646         (allocno_pref): Rename to pref.
8647         (allocno_pref_buffer): Rename to pref_buffer.
8648         (common_classes): Rename to regno_cover_class.
8649         (COST_INDEX): New.
8650         (record_reg_classes): Set allocno attributes only if allocno_p.
8651         (record_address_regs): Ditto.  Use COST_INDEX instead of ALLOCNO_NUM.
8652         (scan_one_insn): Use COST_INDEX and COSTS instead of ALLOCNO_NUM
8653         and COSTS_OF_ALLOCNO.
8654         (print_costs): Rename to print_allocno_costs.
8655         (print_pseudo_costs): New.
8656         (process_bb_node_for_costs): Split into 2 functions with new
8657         function process_bb_for_costs.  Pass BB to process_bb_for_costs.
8658         (find_allocno_class_costs): Rename to find_costs_and_classes.  Add
8659         new parameter dump_file.  Use cost_elements_num instead of
8660         ira_allocnos_num.  Make one iteration if preferred classes were
8661         already calculated for scheduler.  Make 2 versions of code
8662         depending on allocno_p.
8663         (setup_allocno_cover_class_and_costs): Check allocno_p.  Use
8664         regno_cover_class and COSTS instead of common_classes and
8665         COSTS_OF_ALLOCNO.
8666         (init_costs, finish_costs): New.
8667         (ira_costs): Set up allocno_p and cost_elements_num.  Call
8668         init_costs and finish_costs.
8669         (ira_set_pseudo_classes): New.
8670
8671         * rtl.h (allocate_reg_info): Remove.
8672         (resize_reg_info): Change return type.
8673         (reg_cover_class): New.
8674         (setup_reg_classes): Add new parameter.
8675
8676         * sched-int.h (struct deps_reg): New member implicit_sets.
8677         (sched_pressure_p, sched_regno_cover_class): New external definitions.
8678         (INCREASE_BITS): New macro.
8679         (struct reg_pressure_data, struct reg_use_data): New.
8680         (struct _haifa_insn_data): Remove reg_weight.  Add members
8681         reg_pressure, reg_use_list, reg_set_list, and
8682         reg_pressure_excess_cost_change.
8683         (struct deps): New member implicit_sets.
8684         (pressure_p): New variable.
8685         (COVER_CLASS_BITS, INCREASE_BITS): New macros.
8686         (struct reg_pressure_data, struct reg_use_data): New.
8687         (INSN_REG_WEIGHT): Remove.
8688         (INSN_REG_PRESSURE, INSN_MAX_REG_PRESSURE, INSN_REG_USE_LIST,
8689         INSN_REG_SET_LIST, INSN_REG_PRESSURE_EXCESS_COST_CHANGE): New macros.
8690         (sched_init_region_reg_pressure_info,
8691         sched_setup_bb_reg_pressure_info): New prototypes.
8692
8693         * reginfo.c (struct reg_pref): New member coverclass.
8694         (reg_cover_class): New function.
8695         (reginfo_init, pass_reginfo_init): Move after free_reg_info.
8696         (reg_info_size): New variable.
8697         (allocate_reg_info): Make static.  Setup reg_info_size.
8698         (resize_reg_info): Use reg_info_size.  Return flag of resizing.
8699         (setup_reg_classes): Add a new parameter.  Setup cover class too.
8700
8701         * Makefile.in (reload.o, haifa-sched.o, sched-deps.o): Add ira.h to
8702         the dependencies.
8703
8704         * sched-rgn.c (deps_join): Set up implicit_sets.
8705         (schedule_region): Set up region and basic blocks pressure
8706         relative info.
8707
8708         * passes.c (init_optimization_passes): Move
8709         pass_subregs_of_mode_init before pass_sched.
8710
8711 2009-09-02  Martin Jambor  <mjambor@suse.cz>
8712
8713         * tree-sra.c (struct access): New field grp_hint.
8714         (dump_access): Dump grp_hint.
8715         (sort_and_splice_var_accesses): Set grp_hint if a group is read
8716         multiple times.
8717         (analyze_access_subtree): Only scalarize accesses with grp_hint set or
8718         those which have been specifically read and somehow written to.
8719         (propagate_subacesses_accross_link): Set grp_hint of right child and
8720         also possibly of the left child.
8721
8722 2009-09-02  Jakub Jelinek  <jakub@redhat.com>
8723
8724         * tree-object-size.c (addr_object_size): Always use object_size_type
8725         0 or 2 when determining the pointer pointed object size.
8726
8727 2009-09-02  Richard Guenther  <rguenther@suse.de>
8728
8729         Revert
8730         2009-08-31  Richard Guenther  <rguenther@suse.de>
8731
8732         * builtins.c (fold_builtin_memory_op): Use the alias oracle
8733         to query if the memory regions for memmove overlap.
8734         * tree-ssa-alias.c (ptr_deref_may_alias_decl_p): Relax the
8735         asserts on pointers, instead deal with odd trees.
8736         (ptr_derefs_may_alias_p): Likewise.
8737         (refs_may_alias_p_1): Constructor bases also never alias.
8738
8739 2009-08-01  Christian Bruel  <christian.bruel@st.com>
8740
8741         Revert:
8742         2009-07-31  Christian Bruel  <christian.bruel@st.com>
8743         * gcc/config.gcc (sh*-*-elf): test with_libgloss.
8744
8745 2009-09-01  Alexandre Oliva  <aoliva@redhat.com>
8746
8747         * doc/invoke.texi (-fvar-tracking-assignments): New.
8748         (-fvar-tracking-assignments-toggle): New.
8749         (-fdump-final-insns=file): Mark filename as optional.
8750         (--param min-nondebug-insn-uid): New.
8751         (-gdwarf-@{version}): Mention version 4.
8752         * opts.c (common_handle_option): Accept it.
8753         * tree-vrp.c (find_assert_locations_1): Skip debug stmts.
8754         * regrename.c (regrename_optimize): Drop last.  Don't count debug
8755         insns as uses.  Don't reject change because of debug insn.
8756         (do_replace): Reject DEBUG_INSN as chain starter.  Take base_regno
8757         from the chain starter, and check for inexact matches in DEBUG_INSNS.
8758         (scan_rtx_reg): Accept inexact matches in DEBUG_INSNs.
8759         (build_def_use): Simplify and fix the marking of DEBUG_INSNs.
8760         * sched-ebb.c (schedule_ebbs): Skip boundary debug insns.
8761         * fwprop.c (forward_propagate_and_simplify): ...into debug insns.
8762         * doc/gimple.texi (is_gimple_debug): New.
8763         (gimple_debug_bind_p): New.
8764         (is_gimple_call, gimple_assign_cast_p): End sentence with period.
8765         * doc/install.texi (bootstrap-debug): More details.
8766         (bootstrap-debug-big, bootstrap-debug-lean): Document.
8767         (bootstrap-debug-lib): More details.
8768         (bootstrap-debug-ckovw): Update.
8769         (bootstrap-time): New.
8770         * tree-into-ssa.c (mark_def_sites): Skip debug stmts.
8771         (insert_phi_nodes_for): Insert debug stmts.
8772         (rewrite_stmt): Take iterator.  Insert debug stmts.
8773         (rewrite_enter_block): Adjust.
8774         (maybe_replace_use_in_debug_stmt): New.
8775         (rewrite_update_stmt): Use it.
8776         (mark_use_interesting): Return early for debug stmts.
8777         * tree-ssa-loop-im.c (rewrite_bittest): Propagate DEFs into debug
8778         stmts before replacing stmt.
8779         (move_computations_stmt): Likewise.
8780         * ira-conflicts.c (add_copies): Skip debug insns.
8781         * regstat.c (regstat_init_n_sets_and_refs): Discount debug insns.
8782         (regstat_bb_compute_ri): Skip debug insns.
8783         * tree-ssa-threadupdate.c (redirection_block_p): Skip debug stmts.
8784         * tree-ssa-loop-manip.c (find_uses_to_rename_stmt,
8785         check_loop_closed_ssa_stmt): Skip debug stmts.
8786         * tree-tailcall.c (find_tail_calls): Likewise.
8787         * tree-ssa-loop-ch.c (should_duplicate_loop_header_p): Likewise.
8788         * tree.h (MAY_HAVE_DEBUG_STMTS): New.
8789         (build_var_debug_value_stat): Declare.
8790         (build_var_debug_value): Define.
8791         (target_for_debug_bind): Declare.
8792         * reload.c (find_equiv_reg): Skip debug insns.
8793         * rtlanal.c (reg_used_between_p): Skip debug insns.
8794         (side_effects_p): Likewise.
8795         (canonicalize_condition): Likewise.
8796         * ddg.c (create_ddg_dep_from_intra_loop_link): Check that non-debug
8797         insns never depend on debug insns.
8798         (create_ddg_dep_no_link): Likewise.
8799         (add_cross_iteration_register_deps): Use ANTI_DEP for debug insns.
8800         Don't add inter-loop dependencies for debug insns.
8801         (build_intra_loop_deps): Likewise.
8802         (create_ddg): Count debug insns.
8803         * ddg.h (struct ddg::num_debug): New.
8804         (num_backargs): Pair up with previous int field.
8805         * diagnostic.c (diagnostic_report_diagnostic): Skip notes on
8806         -fcompare-debug-second.
8807         * final.c (get_attr_length_1): Skip debug insns.
8808         (rest_of_clean-state): Don't dump CFA_RESTORE_STATE.
8809         * gcc.c (invoke_as): Call compare-debug-dump-opt.
8810         (driver_self_specs): Map -fdump-final-insns to
8811         -fdump-final-insns=..
8812         (get_local_tick): New.
8813         (compare_debug_dump_opt_spec_function): Test for . argument and
8814         compute output name.  Compute temp output spec without flag name.
8815         Compute -frandom-seed.
8816         (OPT): Undef after use.
8817         * cfgloopanal.c (num_loop_insns): Skip debug insns.
8818         (average_num_loop_insns): Likewise.
8819         * params.h (MIN_NONDEBUG_INSN_UID): New.
8820         * gimple.def (GIMPLE_DEBUG): New.
8821         * ipa-reference.c (scan_stmt_for_static_refs): Skip debug stmts.
8822         * auto-inc-dec.c (merge_in_block): Skip debug insns.
8823         (merge_in_block): Fix whitespace.
8824         * toplev.c (flag_var_tracking): Update comment.
8825         (flag_var_tracking_assignments): New.
8826         (flag_var_tracking_assignments_toggle): New.
8827         (process_options): Don't open final insns dump file if we're not
8828         going to write to it.  Compute defaults for var_tracking.
8829         * df-scan.c (df_insn_rescan_debug_internal): New.
8830         (df_uses_record): Handle debug insns.
8831         * haifa-sched.c (ready): Initialize n_debug.
8832         (contributes_to_priority): Skip debug insns.
8833         (dep_list_size): New.
8834         (priority): Use it.
8835         (rank_for_schedule): Likewise.  Schedule debug insns as soon as
8836         they're ready.  Disregard previous debug insns to make decisions.
8837         (queue_insn): Never queue debug insns.
8838         (ready_add, ready_remove_first, ready_remove): Count debug insns.
8839         (schedule_insn): Don't reject debug insns because of issue rate.
8840         (get_ebb_head_tail, no_real_insns_p): Skip boundary debug insns.
8841         (queue_to_ready): Skip and discount debug insns.
8842         (choose_ready): Let debug insns through.
8843         (schedule_block): Check boundary debug insns.  Discount debug
8844         insns, schedule them early.  Adjust whitespace.
8845         (set_priorities): Check for boundary debug insns.
8846         (add_jump_dependencies): Use dep_list_size.
8847         (prev_non_location_insn): New.
8848         (check_cfg): Use it.
8849         * tree-ssa-loop-ivopts.c (find-interesting_users): Skip debug
8850         stmts.
8851         (remove_unused_ivs): Reset debug stmts.
8852         * modulo-sched.c (const_iteration_count): Skip debug insns.
8853         (res_MII): Discount debug insns.
8854         (loop_single_full_bb_p): Skip debug insns.
8855         (sms_schedule): Likewise.
8856         (sms_schedule_by_order): Likewise.
8857         (ps_has_conflicts): Likewise.
8858         * caller-save.c (refmarker_fn): New.
8859         (save_call_clobbered_regs): Replace regs with saved mem in
8860         debug insns.
8861         (mark_referenced_regs): Take pointer, mark and arg.  Adjust.
8862         Call refmarker_fn mark for hardregnos.
8863         (mark_reg_as_referenced): New.
8864         (replace_reg_with_saved_mem): New.
8865         * ipa-pure-const.c (check_stmt): Skip debug stmts.
8866         * cse.c (cse_insn): Canonicalize debug insns.  Skip them when
8867         searching back.
8868         (cse_extended_basic_block): Skip debug insns.
8869         (count_reg_usage): Likewise.
8870         (is_dead_reg): New, split out of...
8871         (set_live_p): ... here.
8872         (insn_live_p): Use it for debug insns.
8873         * tree-stdarg.c (check_all_va_list_escapes): Skip debug stmts.
8874         (execute_optimize_stdarg): Likewise.
8875         * tree-ssa-dom.c (propagate_rhs_into_lhs): Likewise.
8876         * tree-ssa-propagate.c (substitute_and_fold): Don't regard
8877         changes in debug stmts as changes.
8878         * sel-sched.c (moving_insn_creates_bookkeeping_block_p): New.
8879         (moveup_expr): Don't move across debug insns.  Don't move
8880         debug insn if it would create a bookkeeping block.
8881         (moveup_expr_cached): Don't use cache for debug insns that
8882         are heads of blocks.
8883         (compute_av_set_inside_bb): Skip debug insns.
8884         (sel_rank_for_schedule): Schedule debug insns first.  Remove
8885         dead code.
8886         (block_valid_for_bookkeeping_p); Support lax searches.
8887         (create_block_for_bookkeeping): Adjust block numbers when
8888         encountering debug-only blocks.
8889         (find_place_for_bookkeeping): Deal with debug-only blocks.
8890         (generate_bookkeeping_insn): Accept no place to insert.
8891         (remove_temp_moveop_nops): New argument full_tidying.
8892         (prepare_place_to_insert): Deal with debug insns.
8893         (advance_state_on_fence): Debug insns don't start cycles.
8894         (update_boundaries): Take fence as argument.  Deal with
8895         debug insns.
8896         (schedule_expr_on_boundary): No full_tidying on debug insns.
8897         (fill_insns): Deal with debug insns.
8898         (track_scheduled_insns_and_blocks): Don't count debug insns.
8899         (need_nop_to_preserve_insn_bb): New, split out of...
8900         (remove_insn_from_stream): ... this.
8901         (fur_orig_expr_not_found): Skip debug insns.
8902         * rtl.def (VALUE): Move up.
8903         (DEBUG_INSN): New.
8904         * tree-ssa-sink.c (all_immediate_uses_same_place): Skip debug stmts.
8905         (nearest_common_dominator_of_uses): Take debug_stmts argument.
8906         Set it if debug stmts are found.
8907         (statement_sink_location): Skip debug stmts.  Propagate
8908         moving defs into debug stmts.
8909         * ifcvt.c (first_active_insn): Skip debug insns.
8910         (last_active_insns): Likewise.
8911         (cond_exec_process_insns): Likewise.
8912         (noce_process_if_block): Likewise.
8913         (check_cond_move_block): Likewise.
8914         (cond_move_convert_if_block): Likewise.
8915         (block_jumps_and_fallthru_p): Likewise.
8916         (dead_or_predicable): Likewise.
8917         * dwarf2out.c (debug_str_hash_forced): New.
8918         (find_AT_string): Add comment.
8919         (gen_label_for_indirect_string): New.
8920         (get_debug_string_label): New.
8921         (AT_string_form): Use it.
8922         (mem_loc_descriptor): Handle non-TLS symbols.  Handle MINUS , DIV,
8923         MOD, AND, IOR, XOR, NOT, ABS, NEG, and CONST_STRING.  Accept but
8924         discard COMPARE, IF_THEN_ELSE, ROTATE, ROTATERT, TRUNCATE and
8925         several operations that cannot be represented with DWARF opcodes.
8926         (loc_descriptor): Ignore SIGN_EXTEND and ZERO_EXTEND.  Require
8927         dwarf_version 4 for DW_OP_implicit_value and DW_OP_stack_value.
8928         (dwarf2out_var_location): Take during-call mark into account.
8929         (output_indirect_string): Update comment.  Output if there are
8930         label and references.
8931         (prune_indirect_string): New.
8932         (prune_unused_types): Call it if debug_str_hash_forced.
8933         More in dwarf2out.c, from Jakub Jelinek <jakub@redhat.com>:
8934         (dw_long_long_const): Remove.
8935         (struct dw_val_struct): Change val_long_long type to rtx.
8936         (print_die, attr_checksum, same_dw_val_p, loc_descriptor): Adjust for
8937         val_long_long change to CONST_DOUBLE rtx from a long hi/lo pair.
8938         (output_die): Likewise.  Use HOST_BITS_PER_WIDE_INT size of each
8939         component instead of HOST_BITS_PER_LONG.
8940         (output_loc_operands): Likewise.  For const8* assert
8941         HOST_BITS_PER_WIDE_INT rather than HOST_BITS_PER_LONG is >= 64.
8942         (output_loc_operands_raw): For const8* assert HOST_BITS_PER_WIDE_INT
8943         rather than HOST_BITS_PER_LONG is >= 64.
8944         (add_AT_long_long): Remove val_hi and val_lo arguments, add
8945         val_const_double.
8946         (size_of_die): Use HOST_BITS_PER_WIDE_INT size multiplier instead of
8947         HOST_BITS_PER_LONG for dw_val_class_long_long.
8948         (add_const_value_attribute): Adjust add_AT_long_long caller.  Don't
8949         handle TLS SYMBOL_REFs.  If CONST wraps a constant, tail recurse.
8950         (dwarf_stack_op_name): Handle DW_OP_implicit_value and
8951         DW_OP_stack_value.
8952         (size_of_loc_descr, output_loc_operands, output_loc_operands_raw):
8953         Handle DW_OP_implicit_value.
8954         (extract_int): Move prototype earlier.
8955         (mem_loc_descriptor): For SUBREG punt if inner
8956         mode size is wider than DWARF2_ADDR_SIZE.  Handle SIGN_EXTEND
8957         and ZERO_EXTEND by DW_OP_shl and DW_OP_shr{a,}.  Handle
8958         EQ, NE, GT, GE, LT, LE, GTU, GEU, LTU, LEU, SMIN, SMAX, UMIN,
8959         UMAX, SIGN_EXTRACT, ZERO_EXTRACT.
8960         (loc_descriptor): Compare mode size with DWARF2_ADDR_SIZE
8961         instead of Pmode size.
8962         (loc_descriptor): Add MODE argument.  Handle CONST_INT, CONST_DOUBLE,
8963         CONST_VECTOR, CONST, LABEL_REF and SYMBOL_REF if mode != VOIDmode,
8964         attempt to handle other expressions.  Don't handle TLS SYMBOL_REFs.
8965         (concat_loc_descriptor, concatn_loc_descriptor,
8966         loc_descriptor_from_tree_1): Adjust loc_descriptor callers.
8967         (add_location_or_const_value_attribute): Likewise.  For single
8968         location loc_lists attempt to use add_const_value_attribute
8969         for constant decls.  Add DW_AT_const_value even if
8970         NOTE_VAR_LOCATION is VAR_LOCATION with CONSTANT_P or CONST_STRING
8971         in its expression.
8972         * cfgbuild.c (inside_basic_block_p): Handle debug insns.
8973         (control_flow_insn_p): Likewise.
8974         * tree-parloops.c (eliminate_local_variables_stmt): Handle debug stmt.
8975         (separate_decls_in_region_debug_bind): New.
8976         (separate_decls_in_region): Process debug bind stmts afterwards.
8977         * recog.c (verify_changes): Handle debug insns.
8978         (extract_insn): Likewise.
8979         (peephole2_optimize): Skip debug insns.
8980         * dse.c (scan_insn): Skip debug insns.
8981         * sel-sched-ir.c (return_nop_to_pool): Take full_tidying argument.
8982         Pass it on.
8983         (setup_id_for_insn): Handle debug insns.
8984         (maybe_tidy_empty_bb): Adjust whitespace.
8985         (tidy_control_flow): Skip debug insns.
8986         (sel_remove_insn): Adjust for debug insns.
8987         (sel_estimate_number_of_insns): Skip debug insns.
8988         (create_insn_rtx_from_pattern): Handle debug insns.
8989         (create_copy_of_insn_rtx): Likewise.
8990         * sel-sched-.h (sel_bb_end): Declare.
8991         (sel_bb_empty_or_nop_p): New.
8992         (get_all_loop_exits): Use it.
8993         (_eligible_successor_edge_p): Likewise.
8994         (return_nop_to_pool): Adjust.
8995         * tree-eh.c (tre_empty_eh_handler_p): Skip debug stmts.
8996         * ira-lives.c (process_bb_node_lives): Skip debug insns.
8997         * gimple-pretty-print.c (dump_gimple_debug): New.
8998         (dump_gimple_stmt): Use it.
8999         (dump_bb_header): Skip gimple debug stmts.
9000         * regmove.c (optimize_reg_copy_1): Discount debug insns.
9001         (fixup_match_2): Likewise.
9002         (regmove_backward_pass): Likewise.  Simplify combined
9003         replacement.  Handle debug insns.
9004         * function.c (instantiate_virtual_regs): Handle debug insns.
9005         * function.h (struct emit_status): Add x_cur_debug_insn_uid.
9006         * print-rtl.h: Include cselib.h.
9007         (print_rtx): Print VALUEs.  Split out and recurse for VAR_LOCATIONs.
9008         * df.h (df_inns_rescan_debug_internal): Declare.
9009         * gcse.c (alloc_hash_table): Estimate n_insns.
9010         (cprop_insn): Don't regard debug insns as changes.
9011         (bypass_conditional_jumps): Skip debug insns.
9012         (one_pre_gcse_pass): Adjust.
9013         (one_code_hoisting_pass): Likewise.
9014         (compute_ld_motion_mems): Skip debug insns.
9015         (one_cprop_pass): Adjust.
9016         * tree-if-conv.c (tree_if_convert_stmt): Reset debug stmts.
9017         (if_convertible_stmt_p): Handle debug stmts.
9018         * init-regs.c (initialize_uninitialized_regs): Skip debug insns.
9019         * tree-vect-loop.c (vect_is_simple_reduction): Skip debug stmts.
9020         * ira-build.c (create_bb_allocnos): Skip debug insns.
9021         * tree-flow-inline.h (has_zero_uses): Discount debug stmts.
9022         (has_single_use): Likewise.
9023         (single_imm_use): Likewise.
9024         (num_imm_uses): Likewise.
9025         * tree-ssa-phiopt.c (empty_block_p): Skip debug stmts.
9026         * tree-ssa-coalesce.c (build_ssa_conflict_graph): Skip debug stmts.
9027         (create_outofssa_var_map): Likewise.
9028         * lower-subreg.c (adjust_decomposed_uses): New.
9029         (resolve_debug): New.
9030         (decompose_multiword_subregs): Use it.
9031         * tree-dfa.c (find_referenced_vars): Skip debug stmts.
9032         * emit-rtl.c: Include params.h.
9033         (cur_debug_insn_uid): Define.
9034         (set_new_first_and_last_insn): Set cur_debug_insn_uid too.
9035         (copy_rtx_if_shared_1): Handle debug insns.
9036         (reset_used_flags): Likewise.
9037         (set_used_flags): LIkewise.
9038         (get_max_insn_count): New.
9039         (next_nondebug_insn): New.
9040         (prev_nondebug_insn): New.
9041         (make_debug_insn_raw): New.
9042         (emit_insn_before_noloc): Handle debug insns.
9043         (emit_jump_insn_before_noloc): Likewise.
9044         (emit_call_insn_before_noloc): Likewise.
9045         (emit_debug_insn_before_noloc): New.
9046         (emit_insn_after_noloc): Handle debug insns.
9047         (emit_jump_insn_after_noloc): Likewise.
9048         (emit_call_insn_after_noloc): Likewise.
9049         (emit_debug_insn_after_noloc): Likewise.
9050         (emit_insn_after): Take loc from earlier non-debug insn.
9051         (emit_jump_insn_after): Likewise.
9052         (emit_call_insn_after): Likewise.
9053         (emit_debug_insn_after_setloc): New.
9054         (emit_debug_insn_after): New.
9055         (emit_insn_before): Take loc from later non-debug insn.
9056         (emit_jump_insn_before): Likewise.
9057         (emit_call_insn_before): Likewise.
9058         (emit_debug_insn_before_setloc): New.
9059         (emit_debug_insn_before): New.
9060         (emit_insn): Handle debug insns.
9061         (emit_debug_insn): New.
9062         (emit_jump_insn): Handle debug insns.
9063         (emit_call_insn): Likewise.
9064         (emit): Likewise.
9065         (init_emit): Take min-nondebug-insn-uid into account.
9066         Initialize cur_debug_insn_uid.
9067         (emit_copy_of_insn_after): Handle debug insns.
9068         * cfgexpand.c (gimple_assign_rhs_to_tree): Do not overwrite
9069         location of single rhs in place.
9070         (maybe_dump_rtl_for_gimple_stmt): Dump lineno.
9071         (floor_sdiv_adjust): New.
9072         (cell_sdiv_adjust): New.
9073         (cell_udiv_adjust): New.
9074         (round_sdiv_adjust): New.
9075         (round_udiv_adjust): New.
9076         (wrap_constant): Moved from cselib.
9077         (unwrap_constant): New.
9078         (expand_debug_expr): New.
9079         (expand_debug_locations): New.
9080         (expand_gimple_basic_block): Drop hiding redeclaration.  Expand
9081         debug bind stmts.
9082         (gimple_expand_cfg): Expand debug locations.
9083         * cselib.c: Include tree-pass.h.
9084         (struct expand_value_data): New.
9085         (cselib_record_sets_hook): New.
9086         (PRESERVED_VALUE_P, LONG_TERM_PRESERVED_VALUE_P): New.
9087         (cselib_clear_table): Move, and implemnet in terms of...
9088         (cselib_reset_table_with_next_value): ... this.
9089         (cselib_get_next_unknown_value): New.
9090         (discard_useless_locs): Don't discard preserved values.
9091         (cselib_preserve_value): New.
9092         (cselib_preserved_value_p): New.
9093         (cselib_preserve_definitely): New.
9094         (cselib_clear_preserve): New.
9095         (cselib_preserve_only_values): New.
9096         (new_cselib_val): Take rtx argument.  Dump it in details.
9097         (cselib_lookup_mem): Adjust.
9098         (expand_loc): Take regs_active in struct.  Adjust.  Silence
9099         dumps unless details are requested.
9100         (cselib_expand_value_rtx_cb): New.
9101         (cselib_expand_value_rtx): Rename and reimplment in terms of...
9102         (cselib_expand_value_rtx_1): ... this.  Adjust.  Silence dumps
9103         without details.  Copy more subregs.  Try to resolve values
9104         using a callback.  Wrap constants.
9105         (cselib_subst_to_values): Adjust.
9106         (cselib_log_lookup): New.
9107         (cselib_lookup): Call it.
9108         (cselib_invalidate_regno): Don't count preserved values as useless.
9109         (cselib_invalidate_mem): Likewise.
9110         (cselib_record_set): Likewise.
9111         (struct set): Renamed to cselib_set, moved to cselib.h.
9112         (cselib_record_sets): Adjust.  Call hook.
9113         (cselib_process_insn): Reset table when it would be cleared.
9114         (dump_cselib_val): New.
9115         (dump_cselib_table): New.
9116         * tree-cfgcleanup.c (tree_forwarded_block_p): Skip debug stmts.
9117         (remove_forwarder_block): Support moving debug stmts.
9118         * cselib.h (cselib_record_sets_hook): Declare.
9119         (cselib_expand_callback): New type.
9120         (cselib_expand_value_rtx_cb): Declare.
9121         (cselib_reset_table_with_next_value): Declare.
9122         (cselib_get_next_unknown_value): Declare.
9123         (cselib_preserve_value): Declare.
9124         (cselib_preserved_value_p): Declare.
9125         (cselib_preserve_only_values): Declare.
9126         (dump_cselib_table): Declare.
9127         * cfgcleanup.c (flow_find_cross_jump): Skip debug insns.
9128         (try_crossjump_to_edge): Likewise.
9129         (delete_unreachable_blocks): Remove dominant GIMPLE blocks after
9130         dominated blocks when debug stmts are present.
9131         * simplify-rtx.c (delegitimize_mem_from_attrs): New.
9132         * tree-ssa-live.c (remove_unused_locals): Skip debug stmts.
9133         (set_var_live_on_entry): Likewise.
9134         * loop-invariant.c (find_invariants_bb): Skip debug insns.
9135         * cfglayout.c (curr_location, last_location): Make static.
9136         (set_curr_insn_source_location): Don't avoid bouncing.
9137         (get_curr_insn_source_location): New.
9138         (get_curr_insn_block): New.
9139         (duplicate_insn_chain): Handle debug insns.
9140         * tree-ssa-forwprop.c (forward_propagate_addr_expr): Propagate
9141         into debug stmts.
9142         * common.opt (fcompare-debug): Move to sort order.
9143         (fdump-unnumbered-links): Likewise.
9144         (fvar-tracking-assignments): New.
9145         (fvar-tracking-assignments-toggle): New.
9146         * tree-ssa-dce.c (mark_stmt_necessary): Don't mark blocks
9147         because of debug stmts.
9148         (mark_stmt_if_obviously_necessary): Mark debug stmts.
9149         (eliminate_unnecessary_stmts): Walk dominated blocks before
9150         dominators.
9151         * tree-ssa-ter.c (find_replaceable_in_bb): Skip debug stmts.
9152         * ira.c (memref_used_between_p): Skip debug insns.
9153         (update_equiv_regs): Likewise.
9154         * sched-deps.c (sd_lists_size): Accept empty list.
9155         (sd_init_insn): Mark debug insns.
9156         (sd_finish_insn): Unmark them.
9157         (sd_add_dep): Reject non-debug deps on debug insns.
9158         (fixup_sched_groups): Give debug insns group treatment.
9159         Skip debug insns.
9160         (sched_analyze_reg): Don't mark debug insns for sched before call.
9161         (sched_analyze_2): Handle debug insns.
9162         (sched_analyze_insn): Compute next non-debug insn.  Handle debug
9163         insns.
9164         (deps_analyze_insn): Handle debug insns.
9165         (deps_start_bb): Skip debug insns.
9166         (init_deps): Initialize last_debug_insn.
9167         * tree-ssa.c (target_for_debug_bind): New.
9168         (find_released_ssa_name): New.
9169         (propagate_var_def_into_debug_stmts): New.
9170         (propagate_defs_into_debug_stmts): New.
9171         (verify_ssa): Skip debug bind stmts without values.
9172         (warn_uninialized_vars): Skip debug stmts.
9173         * target-def.h (TARGET_DELEGITIMIZE_ADDRESS): Set default.
9174         * rtl.c (rtx_equal_p_cb): Handle VALUEs.
9175         (rtx_equal_p): Likewise.
9176         * ira-costs.c (scan_one_insn): Skip debug insns.
9177         (process_bb_node_for_hard_reg_moves): Likewise.
9178         * rtl.h (DEBUG_INSN_P): New.
9179         (NONDEBUG_INSN_P): New.
9180         (MAY_HAVE_DEBUG_INSNS): New.
9181         (INSN_P): Accept debug insns.
9182         (RTX_FRAME_RELATED_P): Likewise.
9183         (INSN_DELETED_P): Likewise
9184         (PAT_VAR_LOCATION_DECL): New.
9185         (PAT_VAR_LOCATION_LOC): New.
9186         (PAT_VAR_OCATION_STATUS): New.
9187         (NOTE_VAR_LOCATION_DECL): Reimplement.
9188         (NOTE_VAR_LOCATION_LOC): Likewise.
9189         (NOTE_VAR_LOCATION_STATUS): Likewise.
9190         (INSN_VAR_LOCATION): New.
9191         (INSN_VAR_LOCATION_DECL): New.
9192         (INSN_VAR_LOCATION_LOC): New.
9193         (INSN_VAR_LOCATION_STATUS): New.
9194         (gen_rtx_UNKNOWN_VAR_LOC): New.
9195         (VAR_LOC_UNKNOWN_P): New.
9196         (NOTE_DURING_CALL_P): New.
9197         (SCHED_GROUP_P): Accept debug insns.
9198         (emit_debug_insn_before): Declare.
9199         (emit_debug_insn_before_noloc): Declare.
9200         (emit_debug_insn_beore_setloc): Declare.
9201         (emit_debug_insn_after): Declare.
9202         (emit_debug_insn_after_noloc): Declare.
9203         (emit_debug_insn_after_setloc): Declare.
9204         (emit_debug_insn): Declare.
9205         (make_debug_insn_raw): Declare.
9206         (prev_nondebug_insn): Declare.
9207         (next_nondebug_insn): Declare.
9208         (delegitimize_mem_from_attrs): Declare.
9209         (get_max_insn_count): Declare.
9210         (wrap_constant): Declare.
9211         (unwrap_constant): Declare.
9212         (get_curr_insn_source_location): Declare.
9213         (get_curr_insn_block): Declare.
9214         * tree-inline.c (insert_debug_decl_map): New.
9215         (processing_debug_stmt): New.
9216         (remap_decl): Don't create new mappings in debug stmts.
9217         (remap_gimple_op_r): Don't add references in debug stmts.
9218         (copy_tree_body_r): Likewise.
9219         (remap_gimple_stmt): Handle debug bind stmts.
9220         (copy_bb): Skip debug stmts.
9221         (copy_edges_for_bb): Likewise.
9222         (copy_debug_stmt): New.
9223         (copy_debug_stmts): New.
9224         (copy_body): Copy debug stmts at the end.
9225         (insert_init_debug_bind): New.
9226         (insert_init_stmt): Take id.  Skip and emit debug stmts.
9227         (setup_one_parameter): Remap variable earlier, register debug mapping.
9228         (estimate_num_insns): Skip debug stmts.
9229         (expand_call_inline): Preserve debug_map.
9230         (optimize_inline_calls): Check for no debug_stmts left-overs.
9231         (unsave_expr_now): Preserve debug_map.
9232         (copy_gimple_seq_and_replace_locals): Likewise.
9233         (tree_function_versioning): Check for no debug_stmts left-overs.
9234         Init and destroy debug_map as needed.  Split edges unconditionally.
9235         (build_duplicate_type): Init and destroy debug_map as needed.
9236         * tree-inline.h: Include gimple.h instead of pointer-set.h.
9237         (struct copy_body_data): Add debug_stmts and debug_map.
9238         * sched-int.h (struct ready_list): Add n_debug.
9239         (struct deps): Add last_debug_insn.
9240         (DEBUG_INSN_SCHED_P): New.
9241         (BOUNDARY_DEBUG_INSN_P): New.
9242         (SCHEDULE_DEBUG_INSN_P): New.
9243         (sd_iterator_cond): Accept empty list.
9244         * combine.c (create_log_links): Skip debug insns.
9245         (combine_instructions): Likewise.
9246         (cleanup_auto_inc_dec): New.  From Jakub Jelinek: Make sure the
9247         return value is always unshared.
9248         (struct rtx_subst_pair): New.
9249         (auto_adjust_pair): New.
9250         (propagate_for_debug_subst): New.
9251         (propagate_for_debug): New.
9252         (try_combine): Skip debug insns.  Propagate removed defs into
9253         debug insns.
9254         (next_nonnote_nondebug_insn): New.
9255         (distribute_notes): Use it.  Skip debug insns.
9256         (distribute_links): Skip debug insns.
9257         * tree-outof-ssa.c (set_location_for_edge): Likewise.
9258         * resource.c (mark_target_live_regs): Likewise.
9259         * var-tracking.c: Include cselib.h and target.h.
9260         (enum micro_operation_type): Add MO_VAL_USE, MO_VAL_LOC, and
9261         MO_VAL_SET.
9262         (micro_operation_type_name): New.
9263         (enum emit_note_where): Add EMIT_NOTE_AFTER_CALL_INSN.
9264         (struct micro_operation_def): Update comments.
9265         (decl_or_value): New type.  Use instead of decls.
9266         (struct emit_note_data_def): Add vars.
9267         (struct attrs_def): Use decl_or_value.
9268         (struct variable_tracking_info_def): Add permp, flooded.
9269         (struct location_chain_def): Update comment.
9270         (struct variable_part_def): Use decl_or_value.
9271         (struct variable_def): Make var_part a variable length array.
9272         (valvar_pool): New.
9273         (scratch_regs): New.
9274         (cselib_hook_called): New.
9275         (dv_is_decl_p): New.
9276         (dv_is_value_p): New.
9277         (dv_as_decl): New.
9278         (dv_as_value): New.
9279         (dv_as_opaque): New.
9280         (dv_onepart_p): New.
9281         (dv_pool): New.
9282         (IS_DECL_CODE): New.
9283         (check_value_is_not_decl): New.
9284         (dv_from_decl): New.
9285         (dv_from_value): New.
9286         (dv_htab_hash): New.
9287         (variable_htab_hash): Use it.
9288         (variable_htab_eq): Support values.
9289         (variable_htab_free): Free from the right pool.
9290         (attrs_list_member, attrs_list_insert): Use decl_or_value.
9291         (attrs_list_union): Adjust.
9292         (attrs_list_mpdv_union): New.
9293         (tie_break_pointers): New.
9294         (canon_value_cmp): New.
9295         (unshare_variable): Return possibly-modified slot.
9296         (vars_copy_1): Adjust.
9297         (var_reg_decl_set): Adjust.  Split out of...
9298         (var_reg_set): ... this.
9299         (get_init_value): Adjust.
9300         (var_reg_delete_and_set): Adjust.
9301         (var_reg_delete): Adjust.
9302         (var_regno_delete): Adjust.
9303         (var_mem_decl_set): Split out of...
9304         (var_mem_set): ... this.
9305         (var_mem_delete_and_set): Adjust.
9306         (var_mem_delete): Adjust.
9307         (val_store): New.
9308         (val_reset): New.
9309         (val_resolve): New.
9310         (variable_union): Adjust.  Speed up merge of 1-part vars.
9311         (variable_canonicalize): Use unshared slot.
9312         (VALUED_RECURSED_INTO): New.
9313         (find_loc_in_1pdv): New.
9314         (struct dfset_merge): New.
9315         (insert_into_intersection): New.
9316         (intersect_loc_chains): New.
9317         (loc_cmp): New.
9318         (canonicalize_loc_order_check): New.
9319         (canonicalize_values_mark): New.
9320         (canonicalize_values_star): New.
9321         (variable_merge_over_cur): New.
9322         (variable_merge_over_src): New.
9323         (dataflow_set_merge): New.
9324         (dataflow_set_equiv_regs): New.
9325         (remove_duplicate_values): New.
9326         (struct dfset_post_merge): New.
9327         (variable_post_merge_new_vals): New.
9328         (variable_post_merge_perm_vals): New.
9329         (dataflow_post_merge_adjust): New.
9330         (find_mem_expr_in_1pdv): New.
9331         (dataflow_set_preserve_mem_locs): New.
9332         (dataflow_set_remove_mem_locs): New.
9333         (dataflow_set_clear_at_call): New.
9334         (onepart_variable_different_p): New.
9335         (variable_different_p): Use it.
9336         (dataflow_set_different_1): Adjust.  Make detailed dump more verbose.
9337         (track_expr_p): Add need_rtl parameter.  Don't generate rtl
9338         if not needed.
9339         (track_loc_p): Pass it true.
9340         (struct count_use_info): New.
9341         (find_use_val): New.
9342         (replace_expr_with_values): New.
9343         (log_op_type): New.
9344         (use_type): New, partially split out of...
9345         (count_uses): ... this.  Count new micro-ops.
9346         (count_uses_1): Adjust.
9347         (count_stores): Adjust.
9348         (count_with_sets): New.
9349         (VAL_NEEDS_RESOLUTION): New.
9350         (VAL_HOLDS_TRACK_EXPR): New.
9351         (VAL_EXPR_IS_COPIED): New.
9352         (VAL_EXPR_IS_CLOBBERED): New.
9353         (add_uses): Adjust.  Generate new micro-ops.
9354         (add_uses_1): Adjust.
9355         (add_stores): Generate new micro-ops.
9356         (add_with_sets): New.
9357         (find_src_status): Adjust.
9358         (find_src_set_src): Adjust.
9359         (compute_bb_dataflow): Use dataflow_set_clear_at_call.
9360         Handle new micro-ops.  Canonicalize value equivalances.
9361         (vt_find_locations): Compute total size of hash tables for
9362         dumping.  Perform merge for var-tracking-assignments.  Don't
9363         disregard single-block loops.
9364         (dump_attrs_list): Handle decl_or_value.
9365         (dump_variable): Take variable.  Deal with decl_or_value.
9366         (dump_variable_slot): New.
9367         (dump_vars): Use it.
9368         (dump_dataflow_sets): Adjust.
9369         (set_slot_part): New, extended to support one-part variables
9370         after splitting out of...
9371         (set_variable_part): ... this.
9372         (clobber_slot_part): New, split out of...
9373         (clobber_variable_part): ... this.
9374         (delete_slot_part): New, split out of...
9375         (delete_variable_part): .... this.
9376         (check_wrap_constant): New.
9377         (vt_expand_loc_callback): New.
9378         (vt_expand_loc): New.
9379         (emit_note_insn_var_location): Adjust.  Handle values.  Handle
9380         EMIT_NOTE_AFTER_CALL_INSN.
9381         (emit_notes_for_differences_1): Adjust.  Handle values.
9382         (emit_notes_for_differences_2): Likewise.
9383         (emit_notes_for_differences): Adjust.
9384         (emit_notes_in_bb): Take pointer to set.  Emit AFTER_CALL_INSN notes.
9385         Adjust.  Handle new micro-ops.
9386         (vt_add_function_parameters): Adjust.  Create and bind values.
9387         (vt_initialize): Adjust.  Initialize scratch_regs and
9388         valvar_pool, flooded and perm..  Initialize and use cselib.  Log
9389         operations.  Move some code to count_with_sets and add_with_sets.
9390         (delete_debug_insns): New.
9391         (vt_debug_insns_local): New.
9392         (vt_finalize): Release permp, valvar_pool, scratch_regs.  Finish
9393         cselib.
9394         (var_tracking_main): If var-tracking-assignments is enabled
9395         but var-tracking isn't, delete debug insns and leave.  Likewise
9396         if we exceed limits or fail the stack adjustments tests, and
9397         after all var-tracking processing.
9398         More in var-tracking, from Jakub Jelinek <jakub@redhat.com>:
9399         (dataflow_set): Add traversed_vars.
9400         (value_chain, const_value_chain): New typedefs.
9401         (value_chain_pool, value_chains): New variables.
9402         (value_chain_htab_hash, value_chain_htab_eq, add_value_chain,
9403         add_value_chains, add_cselib_value_chains, remove_value_chain,
9404         remove_value_chains, remove_cselib_value_chains): New functions.
9405         (shared_hash_find_slot_unshare_1, shared_hash_find_slot_1,
9406         shared_hash_find_slot_noinsert_1, shared_hash_find_1): New
9407         static inlines.
9408         (shared_hash_find_slot_unshare, shared_hash_find_slot,
9409         shared_hash_find_slot_noinsert, shared_hash_find): Update.
9410         (dst_can_be_shared): New variable.
9411         (unshare_variable): Unshare set->vars if shared, use shared_hash_*.
9412         Clear dst_can_be_shared.  If set->traversed_vars is non-NULL and
9413         different from set->vars, look up slot again instead of using the
9414         passed in slot.
9415         (dataflow_set_init): Initialize traversed_vars.
9416         (variable_union): Use shared_hash_*.  Use initially NO_INSERT
9417         lookup if set->vars is shared.  Don't keep slot cleared before
9418         calling unshare_variable.  Unshare set->vars if needed.  Adjust
9419         unshare_variable callers.  Clear dst_can_be_shared if needed.
9420         Even ->refcount == 1 vars must be unshared if set->vars is shared
9421         and var needs to be modified.
9422         (dataflow_set_union): Set traversed_vars during canonicalization.
9423         (VALUE_CHANGED, DECL_CHANGED): Define.
9424         (set_dv_changed, dv_changed_p): New static inlines.
9425         (track_expr_p): Clear DECL_CHANGED.
9426         (dump_dataflow_sets): Set it.
9427         (variable_was_changed): Call set_dv_changed.
9428         (emit_note_insn_var_location): Likewise.
9429         (changed_variables_stack): New variable.
9430         (check_changed_vars_1, check_changed_vars_2): New functions.
9431         (emit_notes_for_changes): Do nothing if changed_variables is
9432         empty.  Traverse changed_variables with check_changed_vars_1,
9433         call check_changed_vars_2 on each changed_variables_stack entry.
9434         (emit_notes_in_bb): Add SET argument.  Just clear it at the
9435         beginning, use it instead of local &set, don't destroy it at the end.
9436         (vt_emit_notes): Call dataflow_set_clear early on all
9437         VTI(bb)->out sets, never use them, instead use emit_notes_in_bb
9438         computed set, dataflow_set_clear also VTI(bb)->in when we are
9439         done with the basic block.  Initialize changed_variables_stack,
9440         free it afterwards.  If ENABLE_CHECKING verify that after noting
9441         differences to an empty set value_chains hash table is empty.
9442         (vt_initialize): Initialize value_chains and value_chain_pool.
9443         (vt_finalize): Delete value_chains htab, free value_chain_pool.
9444         (variable_tracking_main): Call dump_dataflow_sets before calling
9445         vt_emit_notes, not after it.
9446         * tree-flow.h (propagate_defs_into_debug_stmts): Declare.
9447         (propagate_var_def_into_debug_stmts): Declare.
9448         * df-problems.c (df_lr_bb_local_compute): Skip debug insns.
9449         (df_set_note): Reject debug insns.
9450         (df_whole_mw_reg_dead_p): Take added_notes_p argument.  Don't
9451         add notes to debug insns.
9452         (df_note_bb_compute): Adjust.  Likewise.
9453         (df_simulate_uses): Skip debug insns.
9454         (df_simulate_initialize_backwards): Likewise.
9455         * reg-stack.c (subst_stack_regs_in_debug_insn): New.
9456         (subst_stack_regs_pat): Reject debug insns.
9457         (convert_regs_1): Handle debug insns.
9458         * Makefile.in (TREE_INLINE_H): Take pointer-set.h from GIMPLE_H.
9459         (print-rtl.o): Depend on cselib.h.
9460         (cselib.o): Depend on TREE_PASS_H.
9461         (var-tracking.o): Depend on cselib.h and TARGET_H.
9462         * sched-rgn.c (rgn_estimate_number_of_insns): Discount debug insns.
9463         (init_ready_list): Skip boundary debug insns.
9464         (add_branch_dependences): Skip debug insns.
9465         (free_block_dependencies): Check for blocks with only debug insns.
9466         (compute_priorities): Likewise.
9467         * gimple.c (gss_for_code): Handle GIMPLE_DEBUG.
9468         (gimple_build_with_ops_stat): Take subcode as unsigned.  Adjust
9469         all callers.
9470         (gimple_build_debug_bind_stat): New.
9471         (empty_body_p): Skip debug stmts.
9472         (gimple_has_side_effects): Likewise.
9473         (gimple_rhs_has_side_effects): Likewise.
9474         * gimple.h (enum gimple_debug_subcode, GIMPLE_DEBUG_BIND): New.
9475         (gimple_build_debug_bind_stat): Declare.
9476         (gimple_build_debug_bind): Define.
9477         (is_gimple_debug): New.
9478         (gimple_debug_bind_p): New.
9479         (gimple_debug_bind_get_var): New.
9480         (gimple_debug_bind_get_value): New.
9481         (gimple_debug_bind_get_value_ptr): New.
9482         (gimple_debug_bind_set_var): New.
9483         (gimple_debug_bind_set_value): New.
9484         (GIMPLE_DEBUG_BIND_NOVALUE): New internal temporary macro.
9485         (gimple_debug_bind_reset_value): New.
9486         (gimple_debug_bind_has_value_p): New.
9487         (gsi_next_nondebug): New.
9488         (gsi_prev_nondebug): New.
9489         (gsi_start_nondebug_bb): New.
9490         (gsi_last_nondebug_bb): New.
9491         * sched-vis.c (print_pattern): Handle VAR_LOCATION.
9492         (print_insn): Handle DEBUG_INSN.
9493         * tree-cfg.c (remove_bb): Walk stmts backwards.  Let loc
9494         of first insn prevail.
9495         (first_stmt): Skip debug stmts.
9496         (first_non_label_stmt): Likewise.
9497         (last_stmt): Likewise.
9498         (has_zero_uses_1): New.
9499         (single_imm_use_1): New.
9500         (verify_gimple_debug): New.
9501         (verify_types_in_gimple_stmt): Handle debug stmts.
9502         (verify_stmt): Likewise.
9503         (debug_loop_num): Skip debug stmts.
9504         (remove_edge_and_dominated_blocks): Remove dominators last.
9505         * tree-ssa-reasssoc.c (rewrite_expr_tree): Propagate into debug stmts.
9506         (linearize_expr): Likewise.
9507         * config/i386/i386.c (ix86_delegitimize_address): Call
9508         default implementation.
9509         * config/ia64/ia64.c (ia64_safe_itanium_class): Handle debug insns.
9510         (group_barrier_needed): Skip debug insns.
9511         (emit_insn_group_barriers): Likewise.
9512         (emit_all_insn_group_barriers): Likewise.
9513         (ia64_variable_issue): Handle debug insns.
9514         (ia64_dfa_new_cycle): Likewise.
9515         (final_emit_insn_group_barriers): Skip debug insns.
9516         (ia64_dwarf2out_def_steady_cfa): Take frame argument.  Don't
9517         def cfa without frame.
9518         (process_set): Likewise.
9519         (process_for_unwind_directive): Pass frame on.
9520         * config/rs6000/rs6000.c (TARGET_DELEGITIMIZE_ADDRESS): Define.
9521         (rs6000_delegitimize_address): New.
9522         (rs6000_debug_adjust_cost): Handle debug insns.
9523         (is_microcoded_insn): Likewise.
9524         (is_cracked_insn): Likewise.
9525         (is_nonpipeline_insn): Likewise.
9526         (insn_must_be_first_in_group): Likewise.
9527         (insn_must_be_last_in_group): Likewise.
9528         (force_new_group): Likewise.
9529         * cfgrtl.c (rtl_split_block): Emit INSN_DELETED note if block
9530         contains only debug insns.
9531         (rtl_merge_blocks): Skip debug insns.
9532         (purge_dead_edges): Likewise.
9533         (rtl_block_ends_with_call_p): Skip debug insns.
9534         * dce.c (deletable_insn_p): Handle VAR_LOCATION.
9535         (mark_reg_dependencies): Skip debug insns.
9536         * params.def (PARAM_MIN_NONDEBUG_INSN_UID): New.
9537         * tree-ssanames.c (release_ssa_name): Propagate def into debug stmts.
9538         * tree-ssa-threadedge.c
9539         (record_temporary_equivalences_from_stmts): Skip debug stmts.
9540         * regcprop.c (replace_oldest_value_addr): Skip debug insns.
9541         (replace_oldest_value_mem): Use ALL_REGS for debug insns.
9542         (copyprop_hardreg_forward_1): Handle debug insns.
9543         * reload1.c (reload): Skip debug insns.  Replace unassigned
9544         pseudos in debug insns with their equivalences.
9545         (eliminate_regs_in_insn): Skip debug insns.
9546         (emit_input_reload_insns): Skip debug insns at first, adjust
9547         them later.
9548         * tree-ssa-operands.c (add_virtual_operand): Reject debug stmts.
9549         (get_indirect_ref_operands): Pass opf_no_vops on.
9550         (get_expr_operands): Likewise.  Skip debug stmts.
9551         (parse_ssa_operands): Scan debug insns with opf_no_vops.
9552
9553 2009-09-01  Richard Henderson  <rth@redhat.com>
9554
9555         * tree-ssa-ccp.c (ccp_initialize): Make sure to simulate
9556         stmt_ends_pp_p statements at least once.
9557         * tree-vrp.c (vrp_initialize): Likewise.
9558         (vrp_visit_stmt): Be prepared for non-interesting stmts.
9559
9560 2009-09-01  Dodji Seketeli  <dodji@redhat.com>
9561
9562         PR bootstrap/41205
9563         Fix AIX bootstrap after PR debug/30161
9564         * dwarf2out.c (make_ith_pack_parameter_name): Don't used strnlen
9565         that is a GNU extension.
9566         (tmpl_value_parm_die_table): Move the definition of this global
9567         outside #ifdef DWARF2_DEBUGGING_INFO region.
9568
9569 2009-09-01  Richard Guenther  <rguenther@suse.de>
9570
9571         * tree.c (tree_expr_size): New function.
9572         * tree.h (tree_expr_size): Declare.
9573         * rtlanal.c (rtx_addr_can_trap_p_1): Adjust comment.
9574         * builtins.c (fold_builtin_memory_op): Use tree_expr_size.
9575         * langhooks.c (lhd_expr_size): Remove.
9576         * langhooks.h (struct lang_hooks): Remove expr_size.
9577         * explow.c (expr_size): Use tree_expr_size.
9578         (int_expr_size): Likewise.
9579         * langhooks-def.h (lhd_expr_size): Remove.
9580         (LANG_HOOKS_EXPR_SIZE): Likewise.
9581         (LANG_HOOKS_INITIALIZER): Adjust.
9582
9583 2009-09-01  Richard Guenther  <rguenther@suse.de>
9584
9585         * tree-flow.h (mark_addressable): Move declaration ...
9586         * tree.h (mark_addressable): ... here.
9587         * stmt.c (expand_asm_operands): Use mark_addressable, not
9588         lang_hooks.mark_addressable.
9589         * langhooks-def.h (LANG_HOOKS_INITIALIZER): Remove
9590         LANG_HOOKS_MARK_ADDRESSABLE.
9591         * langhooks.h (struct lang_hooks): Remove mark_addressable langhook.
9592         * c-objc-common.h (LANG_HOOKS_MARK_ADDRESSABLE): Remove.
9593
9594 2009-08-31  Chris Demetriou  <cgd@google.com>
9595
9596         * config/i386/i386.c (ix86_vectorize_builtin_conversion): Never
9597         vectorize if not TARGET_SSE2.
9598
9599 2009-08-31  DJ Delorie  <dj@redhat.com>
9600
9601         * config/mep/mep.h (FUNCTION_ARG_REGNO_P): Exclude coprocessor
9602         registers if no coprocessor is enabled.
9603
9604 2009-08-31  Dodji Seketeli  <dodji@redhat.com>
9605
9606         PR debug/30161
9607         * cgraph.h (cgraph_get_node): Declare ...
9608         * cgraph.c (cgraph_get_node): ... new function.
9609         * dwarf2out.c (gen_generic_params_dies,
9610         generic_parameter_die, tree_add_const_value_attribute_for_decl,
9611         make_ith_pack_parameter_name,
9612         append_entry_to_tmpl_value_parm_die_table,
9613         gen_remaining_tmpl_value_param_die_attribute): New functions.
9614         (gen_subprogram_die): Generate debug info for template parameters
9615         if debug info level is higher than DINFO_LEVEL_TERSE.
9616         Use tree_add_const_value_attribute_for_decl instead of
9617         tree_add_const_value_attribute.
9618         (gen_const_die): Use tree_add_const_value_attribute_for_decl
9619         instead of tree_add_const_value_attribute.
9620         (gen_struct_or_union_type_die): Generate debug
9621         info for template parameters if debug info level is higher than
9622         DINFO_LEVEL_TERSE.
9623         (tree_add_const_value_attribute): Handle integral and pointer
9624         constants. Update comment.
9625         (dwarf_tag_name): Support DW_TAG_GNU_template_template_param.
9626         (dwarf_attr_name): Support DW_AT_GNU_template_name.
9627         (reference_to_unused): Fix thinko. Remove redundant predicates from
9628         tests.
9629         (tree_add_const_value_attribute): Make this work for constant
9630         expressions only.
9631         tree_add_const_value_attribute_for_decl is to be used for variable
9632         DECLs now.
9633         (add_location_or_const_value_attribute): Use
9634         tree_add_const_value_attribute_for_decl now.
9635         (dwarf2out_finish): Emit the DW_AT_const_value attribute of
9636         DW_TAG_template_value_param DIEs after function DIEs have been
9637         emitted.
9638         * langhooks.h (lang_hooks_for_types): Add
9639         get_argument_pack_elems.
9640         (lang_hooks_for_decls): Add generic_generic_parameter_decl_p.
9641         (lang_hooks): Added get_innermost_generic_parms,
9642         get_innermost_generic_args.
9643         * langhooks-def.h (LANG_HOOKS_GET_INNERMOST_GENERIC_PARMS,
9644         LANG_HOOKS_GET_INNERMOST_GENERIC_ARGS,
9645         LANG_HOOKS_GET_ARGUMENT_PACK_ELEMS,
9646         LANG_HOOKS_GENERIC_GENERIC_PARAMETER_DECL_P): New language hooks.
9647
9648 2009-08-31  DJ Delorie  <dj@redhat.com>
9649
9650         * config/mep/mep.c (machine_function): Add frame_locked flag.  Set
9651         it once we start generating the prologue or epilogue.
9652         (mep_call_saves_register): If the frame is locked, re-use
9653         cached values.
9654         (mep_assign_save_slots): New, broken out from mep_expand_prologue.
9655         (mep_expand_prologue): Call it.
9656         (mep_expand_epilogue): Likewise.
9657         (mep_start_function): Use the same logic as mep_expand_prologue.
9658         (mep_pass_by_reference): Make logic more readable.
9659         (mep_return_in_memory): Zero-sized objects are passed in memory.
9660         (mep_reorg_noframe): Make sure we have accurate REG_DEAD notes.
9661
9662 2009-08-31  Richard Guenther  <rguenther@suse.de>
9663
9664         * builtins.c (fold_builtin_memory_op): Use the alias oracle
9665         to query if the memory regions for memmove overlap.
9666         * tree-ssa-alias.c (ptr_deref_may_alias_decl_p): Relax the
9667         asserts on pointers, instead deal with odd trees.
9668         (ptr_derefs_may_alias_p): Likewise.
9669         (refs_may_alias_p_1): Constructor bases also never alias.
9670
9671 2009-08-31  Gerald Pfeifer  <gerald@pfeifer.com>
9672
9673         * doc/install.texi (Final install): Adjust reference on where to
9674         order printed manuals.
9675
9676 2009-08-30  Olivier Hainque  <hainque@adacore.com>
9677
9678         * dwarf2out.c (switch_to_frame_table_section): Move
9679         definition prior to first use.
9680
9681 2009-08-30  Richard Guenther  <rguenther@suse.de>
9682
9683         PR tree-optimization/41186
9684         * tree-ssa-alias.c (ptr_deref_may_alias_ref_p): Remove.
9685         (ao_ref_init_from_ptr_and_size): New function.
9686         (ref_maybe_used_by_call_p_1): Be more precise tracking
9687         used ranges for builtin functions.
9688         (ref_maybe_used_by_call_p): Adjust.
9689         (call_may_clobber_ref_p_1): Be more precise tracking clobbered
9690         ranges for builtin functions.
9691         * tree-ssa-alias.h (ao_ref_init_from_ptr_and_size): Declare.
9692
9693 2009-08-30  Alan Modra  <amodra@bigpond.net.au>
9694
9695         PR target/41081
9696         * fwprop.c (get_reg_use_in): Delete.
9697         (free_load_extend): New function.
9698         (forward_propagate_subreg): Use it.
9699
9700 2009-08-29  Kaz Kojima  <kkojima@gcc.gnu.org>
9701
9702         * config.gcc (sh*-*-elf): Add superh stuff only for sh*-superh-elf.
9703
9704 2009-08-29  Kai Tietz<kai.tietz@onevision.com>
9705
9706         PR/41184
9707         * config/i386.c (ix86_expand_epilogue): Correct stack adjustment for
9708         padding.
9709
9710 2009-08-29  Douglas B Rupp  <rupp@gnat.com>
9711
9712         * crtstuff.c (__do_global_dtors_aux): Use atexit if no
9713         fini or fini_array section.
9714
9715 2009-08-28  Sebastian Pop  <sebastian.pop@amd.com>
9716
9717         * graphite-dependences.c (graphite_legal_transform_bb): Call
9718         pbb_remove_duplicate_pdrs.
9719         * graphite-poly.c (can_collapse_pdr): Removed.
9720         (pdr_find_duplicate): Removed.
9721         (can_collapse_pdrs): New.
9722         (pbb_remove_duplicate_pdrs): New.
9723         (new_poly_dr): Do not look for duplicates.
9724         * graphite-poly.h (struct poly_bb): New field pdr_duplicates_removed.
9725         (PBB_PDR_DUPLICATES_REMOVED): New.
9726         (pbb_remove_duplicate_pdrs): Declared.
9727
9728 2009-08-28  Sebastian Pop  <sebastian.pop@amd.com>
9729
9730         * graphite-interchange.c (pbb_interchange_profitable_p): Adjust
9731         the strides by multiplying by PDR_NB_REFS.
9732         * graphite-poly.c (can_collapse_pdr): New.
9733         (pdr_find_duplicate): New.
9734         (new_poly_dr): Call pdr_find_duplicate.  Collapse duplicate PDRs.
9735         Initialize PDR_NB_REFS.
9736         * graphite-poly.h (struct poly_dr): Add field nb_refs.
9737         (PDR_NB_REFS): New.
9738         (new_poly_dr): Number of subscripts is a graphite_dim_t.
9739
9740 2009-08-28  Sebastian Pop  <sebastian.pop@amd.com>
9741
9742         PR middle-end/40965
9743         * graphite-poly.c (apply_poly_transforms): Remove legality test before
9744         any transform.
9745
9746 2009-08-28  Sebastian Pop  <sebastian.pop@amd.com>
9747
9748         * graphite-dependences.c (pddr_original_scattering): Return NULL
9749         for read-read dependence relations.
9750         * graphite-poly.h (enum poly_dr_type): Fix comment.
9751         (pdr_read_p): New.
9752         (pdr_write_p): New.
9753         (pdr_may_write_p): New.
9754
9755 2009-08-28  Sebastian Pop  <sebastian.pop@amd.com>
9756
9757         * graphite-poly.h (enum POLY_DR_TYPE): Renamed poly_dr_type.
9758         (struct poly_dr): Same.
9759         (new_poly_dr): Same.
9760         * graphite-poly.c (new_poly_dr): Same.
9761         * graphite-dependences.c (dot_deps): Disable call to system.
9762
9763 2009-08-28  Cary Coutant  <ccoutant@google.com>
9764
9765         PR debug/41063
9766         * dwarf2out.c (gen_type_die_with_usage): Use proper context for
9767         struct/union/enum types local to a function.
9768
9769 2009-08-28  Konrad Trifunovic  <konrad.trifunovic@gmail.com>
9770             Sebastian Pop  <sebastian.pop@amd.com>
9771
9772         * graphite-blocking.c (pbb_strip_mine_loop_depth): Renamed
9773         pbb_strip_mine_time_depth.  Changed the implementation so that
9774         transformation is expressed as a transformation on
9775         time (scatttering) dimensions.  Also, ensures that the 2d+1
9776         scheduling format is preserved.
9777         (pbb_strip_mine_profitable_p): Profitability is based on the
9778         iteration number of a given time (scattering) dimension,
9779         and not on a original loop depth dimension.
9780         (pbb_strip_mine): Call pbb_number_of_iterations_at_time.
9781         (pbb_do_strip_mine): Call psct_dynamic_dim.
9782         * graphite-poly.c (pbb_number_of_iterations_at_time): New.
9783         * graphite-poly.h (pbb_number_of_iterations_at_time): Declared.
9784         (pbb_nb_dynamic_scattering_transform): New.
9785         (psct_dynamic_dim): New.
9786
9787 2009-08-28  Konrad Trifunovic  <konrad.trifunovic@gmail.com>
9788
9789         * graphite-ppl.c (ppl_max_for_le): Renamed ppl_max_for_le_pointset.
9790         * graphite-ppl.h (ppl_max_for_le): Renamed ppl_max_for_le_pointset.
9791         * graphite-poly.c (pbb_number_of_iterations): Rename ppl_max_for_le.
9792         * graphite-interchange.c (build_linearized_memory_access): Same.
9793         (memory_stride_in_loop): Same.
9794
9795 2009-08-28  Sebastian Pop  <sebastian.pop@amd.com>
9796
9797         * graphite-dependences.c (pddr_original_scattering): New.
9798         (graphite_legal_transform_dr): Call pddr_original_scattering.
9799         (dot_deps_1): New.
9800         (dot_deps): New.
9801         * graphite-dependences.h (dot_deps): Declared.
9802         * graphite-poly.c (new_poly_dr): Initialize PDR_ID.
9803         (print_pdr): Print PDR_ID.
9804         * graphite-poly.h (struct poly_dr): Add field id.
9805         (PDR_ID): New.
9806         (pbb_index): New.
9807         * graphite-scop-detection.c (dot_all_scops_1): Cleanup comment.
9808
9809 2009-08-28  Sebastian Pop  <sebastian.pop@amd.com>
9810
9811         * graphite-dependences.c (graphite_carried_dependence_level_k): Do
9812         not delete the original dependence relation.
9813
9814 2009-08-28  Sebastian Pop  <sebastian.pop@amd.com>
9815
9816         * graphite-dependences.c (new_poly_dr_pair): Renamed new_poly_ddr.
9817         (eq_poly_dr_pair_p): Renamed eq_poly_ddr_p.
9818         (hash_poly_dr_pair_p): Renamed hash_poly_ddr_p.
9819         (free_poly_ddr): New.
9820         (pddr_is_empty): New.
9821         (dependence_polyhedron_1): Now returns a poly_ddr_p.
9822         (dependence_polyhedron): Same.  Remove useless gcc_assert.
9823         Remove fprintfs.
9824         (graphite_legal_transform_dr): Call pddr_is_empty and free_poly_ddr.
9825         (graphite_carried_dependence_level_k): Call pddr_is_empty.
9826         * graphite-dependences.h (enum poly_dependence_kind): New.
9827         (poly_dr_pair): Renamed poly_ddr.  Added a field kind.
9828         (PDRP_SOURCE): Renamed PDDR_SOURCE.
9829         (PDRP_SINK): Renamed PDDR_SINK.
9830         (PDRP_DDP): Renamed PDDR_DDP.
9831         (PDDR_KIND): New.
9832         (free_poly_ddr): Declared.
9833         * graphite-poly.c (new_scop): Use the new hash function names.
9834         * graphite-poly.h (struct scop): Renamed field original_pdr_pairs
9835         into original_pddrs.
9836         (SCOP_ORIGINAL_PDR_PAIRS): Renamed SCOP_ORIGINAL_PDDRS.
9837
9838 2009-08-28  Sebastian Pop  <sebastian.pop@amd.com>
9839
9840         * cfgloopmanip.c (create_empty_loop_on_edge): Generate upper
9841         bounds with LT_EXPR to make niter analysis more precise on code
9842         generated by Graphite.
9843
9844 2009-08-28  Sebastian Pop  <sebastian.pop@amd.com>
9845
9846         * graphite-dependences.c (graphite_legal_transform_dr): Fix formatting.
9847         (graphite_legal_transform_bb): Same.
9848         (poly_drs_may_alias_p): Same.
9849
9850 2009-08-28  Richard Guenther  <rguenther@suse.de>
9851
9852         * tree.def: Remove note about obsolete TYPE_NONCOPIED_PARTS.
9853
9854 2009-08-28  Jan Beulich  <jbeulich@novell.com>
9855
9856         * config/i386/netware.c: Include langhooks.h.
9857         (i386_nlm_encode_section_info): Simplify.
9858         (netware_override_options): Delete.
9859         * config/i386/netware.h (netware_override_options): Delete
9860         declaration.
9861         (OVERRIDE_OPTIONS): Delete definition.
9862         (SUBTARGET_OVERRIDE_OPTIONS): Define.
9863         (ASM_COMMENT_START): Define.
9864         * config/i386/nwld.h (SUBSUBTARGET_OVERRIDE_OPTIONS): Define.
9865
9866 2009-08-28  Jan Beulich  <jbeulich@novell.com>
9867
9868         * configure.ac: For in-tree ld, do a plain version check to
9869         determine whether comdat groups are supported.
9870         * configure: Regenerate.
9871
9872 2009-08-28  Olivier Hainque  <hainque@adacore.com>
9873
9874         * collect2.c (DO_COLLECT_EXPORT_LIST): New internal macro,
9875         always defined.  Reflect definition or absence of such for
9876         COLLECT_EXPORT_LIST.  Readability helper.
9877         (scanfilter): New enum, to help control what symbols
9878         are to be considered or ignored by scan_prog_file.
9879         (enum pass): Rename as "scanpass", moved together with scanfilter
9880         prior to scan_prog_file's prototype.
9881         (scan_prog_file): Accept and honor scanpass and scanfilter arguments.
9882         Group prototype with the scanpass/scanfilter definitions, factorize
9883         head comments for the several implementations at the prototype.
9884         (main): Reorganize the first pass link control to let AIX
9885         drag only the needed frame tables in executables.  Prevent
9886         frame tables collection during the scan aimed at static ctors.
9887         Pre-link and scan for frame tables later to compensate.
9888         * doc/tm.texi (ASM_OUTPUT_DWARF_TABLE_REF): New macro.
9889         A C statement to issue assembly directives that create a reference
9890         to the given DWARF table identifier label from the current function
9891         section.
9892         * dwarf2out.c (switch_to_eh_frame_section): Add a BACK argument
9893         to differentiate first time section entry.  Only emit a .data
9894         tables start identifier label the first time around.
9895         (switch_to_frame_table_section): New function.  Helper for
9896         output_call_frame_info to switch possibly BACK into the eh_frame
9897         or the debug_frame section depending on FOR_EH.
9898         (output_call_frame_info): Use helper to first enter the proper
9899         frame section.
9900         (output_fde): Use ASM_OUTPUT_DWARF_TABLE_REF when defined to
9901         emit a link to the frame table start label from each function
9902         section.
9903         * config/rs6000/rs6000.c (rs6000_aix_asm_output_dwarf_table_ref):
9904         New function.  Implementation of ASM_OUTPUT_DWARF_TABLE_REF.
9905         * config/rs6000/rs6000-protos.h: Declare it.
9906         * config/rs6000/aix.h (ASM_OUTPUT_DWARF_TABLE_REF): Define.
9907
9908 2009-08-27  Kaz Kojima  <kkojima@gcc.gnu.org>
9909
9910         * config/sh/sh.c (split_branches): Check the result of
9911         next_active_insn.
9912
9913 2009-08-27  Steve Ellcey  <sje@cup.hp.com>
9914
9915         * config/ia64/hpux.h (LIB_SPEC): Add -lrt for when
9916         using -pthread -fopenmp
9917
9918 2009-08-27  Gerald Pfeifer  <gerald@pfeifer.com>
9919
9920         * doc/service.texi (service directory): Update URL.
9921
9922 2009-08-27  Uros Bizjak  <ubizjak@gmail.com>
9923
9924         PR rtl-optimization/40861
9925         * simplify-rtx.c (simplify_subreg): Do not call simplify_gen_subreg to
9926         extract word from a multi-word subreg for negative byte positions.
9927
9928 2009-08-27  Tristan Gingold  <gingold@adacore.com>
9929             Douglas B Rupp  <rupp@gnat.com>
9930
9931         * config/ia64/ia64.c (ia64_attribute_table): Add "common_object" entry.
9932         (SECTION_VMS_OVERLAY): Define.
9933         (ia64_vms_common_object_attribute): Added.  Handle the "common_object"
9934         attribute.
9935         (ia64_vms_elf_asm_named_section): Added.  Generate .section pseudo-op
9936         for common_object.
9937         (ia64_vms_output_aligned_decl_common): Added.  Generate pseudo-op for
9938         common_object declarations.
9939         (ia64_section_type_flags): Set section flag for common_object.
9940         * config/ia64/ia64-protos.h
9941         (ia64_vms_output_aligned_decl_common): Declare.
9942         (ia64_vms_elf_asm_named_section): Declare.
9943
9944 2009-08-27  Michael Matz  <matz@suse.de>
9945
9946         * expr.c (expand_expr_real_2): New function taking exploded
9947         unary or binary expression, split out from ...
9948         (expand_expr_real_1): ... here.  Move over all unary/binary
9949         switch parts to above function, in particular these codes:
9950         PAREN_EXPR, NOP_EXPR, CONVERT_EXPR, POINTER_PLUS_EXPR, PLUS_EXPR,
9951         MINUS_EXPR, MULT_EXPR, TRUNC_DIV_EXPR, FLOOR_DIV_EXPR, CEIL_DIV_EXPR,
9952         ROUND_DIV_EXPR, EXACT_DIV_EXPR, RDIV_EXPR, TRUNC_MOD_EXPR,
9953         FLOOR_MOD_EXPR, CEIL_MOD_EXPR, ROUND_MOD_EXPR, FIXED_CONVERT_EXPR,
9954         FIX_TRUNC_EXPR, FLOAT_EXPR, NEGATE_EXPR, ABS_EXPR, MAX_EXPR, MIN_EXPR,
9955         BIT_NOT_EXPR, TRUTH_AND_EXPR, BIT_AND_EXPR, TRUTH_OR_EXPR,
9956         BIT_IOR_EXPR, TRUTH_XOR_EXPR, BIT_XOR_EXPR, LROTATE_EXPR, RROTATE_EXPR,
9957         LSHIFT_EXPR, RSHIFT_EXPR, LT_EXPR, LE_EXPR, GT_EXPR, GE_EXPR, EQ_EXPR,
9958         NE_EXPR, UNORDERED_EXPR, ORDERED_EXPR, UNLT_EXPR, UNLE_EXPR, UNGT_EXPR,
9959         UNGE_EXPR, UNEQ_EXPR, LTGT_EXPR, TRUTH_NOT_EXPR, COMPLEX_EXPR,
9960         WIDEN_SUM_EXPR, REDUC_MAX_EXPR, REDUC_MIN_EXPR, REDUC_PLUS_EXPR,
9961         VEC_EXTRACT_EVEN_EXPR, VEC_EXTRACT_ODD_EXPR, VEC_INTERLEAVE_HIGH_EXPR,
9962         VEC_INTERLEAVE_LOW_EXPR, VEC_LSHIFT_EXPR, VEC_RSHIFT_EXPR,
9963         VEC_UNPACK_HI_EXPR, VEC_UNPACK_LO_EXPR, VEC_UNPACK_FLOAT_HI_EXPR,
9964         VEC_UNPACK_FLOAT_LO_EXPR, VEC_WIDEN_MULT_HI_EXPR,
9965         VEC_WIDEN_MULT_LO_EXPR, VEC_PACK_TRUNC_EXPR, VEC_PACK_SAT_EXPR,
9966         VEC_PACK_FIX_TRUNC_EXPR.
9967         (<case PAREN_EXPR>): Call set_mem_attributes() with type, not the
9968         full expression.
9969
9970 2009-08-27  Richard Guenther  <rguenther@suse.de>
9971
9972         * gengtype.c (main): Handle uint64_t.
9973         * ipa-utils.c (get_base_var): Indent properly.
9974         * tree-ssa-live.c (debug_scope_block): New function.
9975         * tree-flow.h (debug_scope_block): Declare.
9976         * tree-ssa-copy.c (replace_exp_1): Add vertical space.
9977         * basic-block.h (enum profile_status): Rename to
9978         enum profile_status_d.
9979         (x_profile_status): Adjust type.
9980
9981 2009-08-27  Dodji Seketeli  <dodji@redhat.com>
9982
9983         PR debug/41170
9984         * dwarf2out.c (get_context_die): Declare this static function.
9985         (gen_type_die_with_usage): Make sure a DIE is a generated for
9986         the context of a typedef.
9987
9988 2009-08-26  Anatoly Sokolov  <aesok@post.ru>
9989
9990         * doc/invoke.texi (AVR Options): Remove documentation of -minit-stack
9991         switch.
9992
9993 2009-08-26  Richard Sandiford  <rdsandiford@googlemail.com>
9994
9995         * config/mips/mips-protos.h (mips_output_sync): Declare.
9996         (mips_sync_loop_insns): Likewise.
9997         (mips_output_sync_loop): Replace first two parameters with an rtx.
9998         * config/mips/mips.c (mips_multi_member): New structure.
9999         (mips_multi_members): New variable.
10000         (mips_multi_start): New function.
10001         (mips_multi_add): Likewise.
10002         (mips_multi_add_insn): Likewise.
10003         (mips_multi_add_label): Likewise.
10004         (mips_multi_last_index): Likewise.
10005         (mips_multi_copy_insn): Likewise.
10006         (mips_multi_set_operand): Likewise.
10007         (mips_multi_write): Likewise.
10008         (mips_print_operand_punctuation): Remove '%|' and '%-'.
10009         (mips_init_print_operand_punct): Update accordingly.
10010         (mips_start_ll_sc_sync_block): New function.
10011         (mips_end_ll_sc_sync_block): Likewise.
10012         (mips_output_sync): Likewise.
10013         (mips_sync_insn1_template): Likewise.
10014         (mips_sync_insn2_template): Likewise.
10015         (mips_get_sync_operand): Likewise.
10016         (mips_process_sync_loop): Likewise.
10017         (mips_output_sync_loop): Use mips_process_sync_loop.
10018         (mips_sync_loop_insns): New function.
10019         * config/mips/mips.h (MIPS_COMPARE_AND_SWAP): Delete.
10020         (MIPS_COMPARE_AND_SWAP_12): Likewise.
10021         (MIPS_COMPARE_AND_SWAP_12_ZERO_OP): Likewise.
10022         (MIPS_COMPARE_AND_SWAP_12_NONZERO_OP): Likewise.
10023         (MIPS_SYNC_OP, MIPS_SYNC_OP_12): Likewise.
10024         (MIPS_SYNC_OP_12_AND, MIPS_SYNC_OP_12_XOR): Likewise.
10025         (MIPS_SYNC_OLD_OP_12): Likewise.
10026         (MIPS_SYNC_OLD_OP_12_AND, MIPS_SYNC_OLD_OP_12_XOR): Likewise.
10027         (MIPS_SYNC_NEW_OP_12): Likewise.
10028         (MIPS_SYNC_NEW_OP_12_AND, MIPS_SYNC_NEW_OP_12_XOR): Likewise.
10029         (MIPS_SYNC_OLD_OP, MIPS_SYNC_NEW_OP): Likewise.
10030         (MIPS_SYNC_NAND, MIPS_SYNC_OLD_NAND, MIPS_SYNC_NEW_NAND): Likewise.
10031         (MIPS_SYNC_EXCHANGE, MIPS_SYNC_EXCHANGE_12): Likewise.
10032         (MIPS_SYNC_EXCHANGE_12_ZERO_OP): Likewise.
10033         (MIPS_SYNC_EXCHANGE_12_NONZER_OP): Likewise.
10034         * config/mips/mips.md (sync_mem): New attribute.
10035         (sync_oldval, sync_newval, sync_inclusive_mask): Likewise.
10036         (sync_exclusive_mask, sync_required_oldval): Likewise.
10037         (sync_insn1_op2, sync_insn1, sync_insn2): Likewise.
10038         (sync_release_barrier): Likewise.
10039         (length): Handle sync loops.
10040         (sync): Use mips_output_sync.
10041         * config/mips/sync.md (*memory_barrier): Use mips_output_sync.
10042         (sync_compare_and_swap<mode>): Set the new sync_* attributes
10043         and use mips_output_sync_loop.
10044         (compare_and_swap_12, sync_add<mode>, sync_<optab>_12): Likewise.
10045         (sync_old_<optab>_12, sync_new_<optab>_12, sync_nand_12): Likewise.
10046         (sync_old_nand_12, sync_new_nand_12, sync_sub<mode>): Likewise.
10047         (sync_old_add<mode>, sync_old_sub<mode>): Likewise.
10048         (sync_new_add<mode>, sync_new_sub<mode>): Likewise.
10049         (sync_<optab><mode>, sync_old_<optab><mode>): Likewise.
10050         (sync_new_<optab><mode>, sync_nand<mode>): Likewise.
10051         (sync_old_nand<mode>, sync_new_nand<mode>): Likewise.
10052         (sync_lock_test_and_set<mode>, test_and_set_12): Likewise.
10053
10054 2009-08-26  Richard Guenther  <rguenther@suse.de>
10055
10056         PR middle-end/41163
10057         * gimplify.c (gimplify_addr_expr): Canonicalize ADDR_EXPRs if
10058         the types to not match.
10059         * tree-cfg.c (verify_gimple_assign_single): Adjust ADDR_EXPR
10060         verification.
10061         * tree-ssa.c (useless_type_conversion_p): Conversions to
10062         pointers to unprototyped functions are useless.
10063
10064 2009-08-26  Richard Guenther  <rguenther@suse.de>
10065
10066         * tree-ssa-structalias.c (create_variable_info_for): Remove strange
10067         whole-program condition, prepare to be called for non-globals.
10068         (intra_create_variable_infos): For restrict qualified DECL_BY_REFERENCE
10069         params build a representative with known type and track its fields.
10070
10071 2009-08-26  Uros Bizjak  <ubizjak@gmail.com>
10072
10073         * config/alpha/sync.md: Update comment about unpredictable LL/SC lock
10074         clearing by a taken branch.
10075         (sync_<fetchop_name><mode>): Split when epilogue_completed is set,
10076         effectively after bbro pass.
10077         (sync_nand<mode>): Ditto.
10078         (sync_old_<fetchop_name><mode>): Ditto.
10079         (sync_old_nand<mode>): Ditto.
10080         (sync_new_<fetchop_name><mode>): Dito.
10081         (sync_new_nand<mode>): Ditto.
10082         (sync_compare_and_swap<mode>_1): Ditto.
10083         (*sync_compare_and_swap<mode>): Ditto.
10084         (sync_lock_test_and_set<mode>_1): Ditto.
10085         ("sync_lock_test_and_set<mode>): Ditto.
10086
10087 2009-08-25  Douglas B Rupp  <rupp@gnat.com>
10088
10089         * hwint.h (HOST_LONG_FORMAT): New macro
10090         * bitmap.c, c-decl.c, mips-tfile.c, print-rtl.c, print-tree.c:
10091         Use HOST_PTR_PRINTF.
10092         * system.h (HOST_PTR_PRINTF): Resurrect old macro
10093         * doc/hostconfig.texi (HOST_LONG_FORMAT): Document.
10094         (HOST_PTR_PRINTF): Document.
10095
10096 2009-08-25 Jan Hubicka  <jh@suse.cz>
10097
10098         * config/i386/bmmintrin.h: Replace by #error.
10099
10100         Revert:
10101         Michael Meissner  <michael.meissner@amd.com>
10102         Dwarakanath Rajagopal  <dwarak.rajagopal@amd.com>
10103         Tony Linthicum  <tony.linthicum@amd.com>
10104
10105         * config/i386/i386.h (TARGET_SSE5): New macro for SSE5.
10106         (TARGET_ROUND): New macro for the round/ptest instructions which
10107         are shared between SSE4.1 and SSE5.
10108         (OPTION_MASK_ISA_ROUND): Ditto.
10109         (OPTION_ISA_ROUND): Ditto.
10110         (TARGET_FUSED_MADD): New macro for -mfused-madd swtich.
10111         (TARGET_CPU_CPP_BUILTINS): Add SSE5 support.
10112
10113         * config/i386/i386.opt (-msse5): New switch for SSE5 support.
10114         (-mfused-madd): New switch to give users control over whether the
10115         compiler optimizes to use the multiply/add SSE5 instructions.
10116
10117         * config/i386/i386.c (enum pta_flags): Add PTA_SSE5.
10118         (ix86_handle_option): Turn off 3dnow if -msse5.
10119         (override_options): Add SSE5 support.
10120         (print_operand): %Y prints comparison codes for SSE5 com/pcom
10121         instructions.
10122         (ix86_expand_sse_movcc): Add SSE5 support.
10123         (ix86_expand_sse5_unpack): New function to use pperm to unpack a
10124         vector type to the next largest size.
10125         (ix86_expand_sse5_pack): New function to use pperm to pack a
10126         vector type to the next smallest size.
10127         (IX86_BUILTIN_FMADDSS): New for SSE5 intrinsic.
10128         (IX86_BUILTIN_FMADDSD): Ditto.
10129         (IX86_BUILTIN_FMADDPS): Ditto.
10130         (IX86_BUILTIN_FMADDPD): Ditto.
10131         (IX86_BUILTIN_FMSUBSS): Ditto.
10132         (IX86_BUILTIN_FMSUBSD): Ditto.
10133         (IX86_BUILTIN_FMSUBPS): Ditto.
10134         (IX86_BUILTIN_FMSUBPD): Ditto.
10135         (IX86_BUILTIN_FNMADDSS): Ditto.
10136         (IX86_BUILTIN_FNMADDSD): Ditto.
10137         (IX86_BUILTIN_FNMADDPS): Ditto.
10138         (IX86_BUILTIN_FNMADDPD): Ditto.
10139         (IX86_BUILTIN_FNMSUBSS): Ditto.
10140         (IX86_BUILTIN_FNMSUBSD): Ditto.
10141         (IX86_BUILTIN_FNMSUBPS): Ditto.
10142         (IX86_BUILTIN_FNMSUBPD): Ditto.
10143         (IX86_BUILTIN_PCMOV_V2DI): Ditto.
10144         (IX86_BUILTIN_PCMOV_V4SI): Ditto.
10145         (IX86_BUILTIN_PCMOV_V8HI): Ditto.
10146         (IX86_BUILTIN_PCMOV_V16QI): Ditto.
10147         (IX86_BUILTIN_PCMOV_V4SF): Ditto.
10148         (IX86_BUILTIN_PCMOV_V2DF): Ditto.
10149         (IX86_BUILTIN_PPERM): Ditto.
10150         (IX86_BUILTIN_PERMPS): Ditto.
10151         (IX86_BUILTIN_PERMPD): Ditto.
10152         (IX86_BUILTIN_PMACSSWW): Ditto.
10153         (IX86_BUILTIN_PMACSWW): Ditto.
10154         (IX86_BUILTIN_PMACSSWD): Ditto.
10155         (IX86_BUILTIN_PMACSWD): Ditto.
10156         (IX86_BUILTIN_PMACSSDD): Ditto.
10157         (IX86_BUILTIN_PMACSDD): Ditto.
10158         (IX86_BUILTIN_PMACSSDQL): Ditto.
10159         (IX86_BUILTIN_PMACSSDQH): Ditto.
10160         (IX86_BUILTIN_PMACSDQL): Ditto.
10161         (IX86_BUILTIN_PMACSDQH): Ditto.
10162         (IX86_BUILTIN_PMADCSSWD): Ditto.
10163         (IX86_BUILTIN_PMADCSWD): Ditto.
10164         (IX86_BUILTIN_PHADDBW): Ditto.
10165         (IX86_BUILTIN_PHADDBD): Ditto.
10166         (IX86_BUILTIN_PHADDBQ): Ditto.
10167         (IX86_BUILTIN_PHADDWD): Ditto.
10168         (IX86_BUILTIN_PHADDWQ): Ditto.
10169         (IX86_BUILTIN_PHADDDQ): Ditto.
10170         (IX86_BUILTIN_PHADDUBW): Ditto.
10171         (IX86_BUILTIN_PHADDUBD): Ditto.
10172         (IX86_BUILTIN_PHADDUBQ): Ditto.
10173         (IX86_BUILTIN_PHADDUWD): Ditto.
10174         (IX86_BUILTIN_PHADDUWQ): Ditto.
10175         (IX86_BUILTIN_PHADDUDQ): Ditto.
10176         (IX86_BUILTIN_PHSUBBW): Ditto.
10177         (IX86_BUILTIN_PHSUBWD): Ditto.
10178         (IX86_BUILTIN_PHSUBDQ): Ditto.
10179         (IX86_BUILTIN_PROTB): Ditto.
10180         (IX86_BUILTIN_PROTW): Ditto.
10181         (IX86_BUILTIN_PROTD): Ditto.
10182         (IX86_BUILTIN_PROTQ): Ditto.
10183         (IX86_BUILTIN_PROTB_IMM): Ditto.
10184         (IX86_BUILTIN_PROTW_IMM): Ditto.
10185         (IX86_BUILTIN_PROTD_IMM): Ditto.
10186         (IX86_BUILTIN_PROTQ_IMM): Ditto.
10187         (IX86_BUILTIN_PSHLB): Ditto.
10188         (IX86_BUILTIN_PSHLW): Ditto.
10189         (IX86_BUILTIN_PSHLD): Ditto.
10190         (IX86_BUILTIN_PSHLQ): Ditto.
10191         (IX86_BUILTIN_PSHAB): Ditto.
10192         (IX86_BUILTIN_PSHAW): Ditto.
10193         (IX86_BUILTIN_PSHAD): Ditto.
10194         (IX86_BUILTIN_PSHAQ): Ditto.
10195         (IX86_BUILTIN_FRCZSS): Ditto.
10196         (IX86_BUILTIN_FRCZSD): Ditto.
10197         (IX86_BUILTIN_FRCZPS): Ditto.
10198         (IX86_BUILTIN_FRCZPD): Ditto.
10199         (IX86_BUILTIN_CVTPH2PS): Ditto.
10200         (IX86_BUILTIN_CVTPS2PH): Ditto.
10201         (IX86_BUILTIN_COMEQSS): Ditto.
10202         (IX86_BUILTIN_COMNESS): Ditto.
10203         (IX86_BUILTIN_COMLTSS): Ditto.
10204         (IX86_BUILTIN_COMLESS): Ditto.
10205         (IX86_BUILTIN_COMGTSS): Ditto.
10206         (IX86_BUILTIN_COMGESS): Ditto.
10207         (IX86_BUILTIN_COMUEQSS): Ditto.
10208         (IX86_BUILTIN_COMUNESS): Ditto.
10209         (IX86_BUILTIN_COMULTSS): Ditto.
10210         (IX86_BUILTIN_COMULESS): Ditto.
10211         (IX86_BUILTIN_COMUGTSS): Ditto.
10212         (IX86_BUILTIN_COMUGESS): Ditto.
10213         (IX86_BUILTIN_COMORDSS): Ditto.
10214         (IX86_BUILTIN_COMUNORDSS): Ditto.
10215         (IX86_BUILTIN_COMFALSESS): Ditto.
10216         (IX86_BUILTIN_COMTRUESS): Ditto.
10217         (IX86_BUILTIN_COMEQSD): Ditto.
10218         (IX86_BUILTIN_COMNESD): Ditto.
10219         (IX86_BUILTIN_COMLTSD): Ditto.
10220         (IX86_BUILTIN_COMLESD): Ditto.
10221         (IX86_BUILTIN_COMGTSD): Ditto.
10222         (IX86_BUILTIN_COMGESD): Ditto.
10223         (IX86_BUILTIN_COMUEQSD): Ditto.
10224         (IX86_BUILTIN_COMUNESD): Ditto.
10225         (IX86_BUILTIN_COMULTSD): Ditto.
10226         (IX86_BUILTIN_COMULESD): Ditto.
10227         (IX86_BUILTIN_COMUGTSD): Ditto.
10228         (IX86_BUILTIN_COMUGESD): Ditto.
10229         (IX86_BUILTIN_COMORDSD): Ditto.
10230         (IX86_BUILTIN_COMUNORDSD): Ditto.
10231         (IX86_BUILTIN_COMFALSESD): Ditto.
10232         (IX86_BUILTIN_COMTRUESD): Ditto.
10233         (IX86_BUILTIN_COMEQPS): Ditto.
10234         (IX86_BUILTIN_COMNEPS): Ditto.
10235         (IX86_BUILTIN_COMLTPS): Ditto.
10236         (IX86_BUILTIN_COMLEPS): Ditto.
10237         (IX86_BUILTIN_COMGTPS): Ditto.
10238         (IX86_BUILTIN_COMGEPS): Ditto.
10239         (IX86_BUILTIN_COMUEQPS): Ditto.
10240         (IX86_BUILTIN_COMUNEPS): Ditto.
10241         (IX86_BUILTIN_COMULTPS): Ditto.
10242         (IX86_BUILTIN_COMULEPS): Ditto.
10243         (IX86_BUILTIN_COMUGTPS): Ditto.
10244         (IX86_BUILTIN_COMUGEPS): Ditto.
10245         (IX86_BUILTIN_COMORDPS): Ditto.
10246         (IX86_BUILTIN_COMUNORDPS): Ditto.
10247         (IX86_BUILTIN_COMFALSEPS): Ditto.
10248         (IX86_BUILTIN_COMTRUEPS): Ditto.
10249         (IX86_BUILTIN_COMEQPD): Ditto.
10250         (IX86_BUILTIN_COMNEPD): Ditto.
10251         (IX86_BUILTIN_COMLTPD): Ditto.
10252         (IX86_BUILTIN_COMLEPD): Ditto.
10253         (IX86_BUILTIN_COMGTPD): Ditto.
10254         (IX86_BUILTIN_COMGEPD): Ditto.
10255         (IX86_BUILTIN_COMUEQPD): Ditto.
10256         (IX86_BUILTIN_COMUNEPD): Ditto.
10257         (IX86_BUILTIN_COMULTPD): Ditto.
10258         (IX86_BUILTIN_COMULEPD): Ditto.
10259         (IX86_BUILTIN_COMUGTPD): Ditto.
10260         (IX86_BUILTIN_COMUGEPD): Ditto.
10261         (IX86_BUILTIN_COMORDPD): Ditto.
10262         (IX86_BUILTIN_COMUNORDPD): Ditto.
10263         (IX86_BUILTIN_COMFALSEPD): Ditto.
10264         (IX86_BUILTIN_COMTRUEPD): Ditto.
10265         (IX86_BUILTIN_PCOMEQUB): Ditto.
10266         (IX86_BUILTIN_PCOMNEUB): Ditto.
10267         (IX86_BUILTIN_PCOMLTUB): Ditto.
10268         (IX86_BUILTIN_PCOMLEUB): Ditto.
10269         (IX86_BUILTIN_PCOMGTUB): Ditto.
10270         (IX86_BUILTIN_PCOMGEUB): Ditto.
10271         (IX86_BUILTIN_PCOMFALSEUB): Ditto.
10272         (IX86_BUILTIN_PCOMTRUEUB): Ditto.
10273         (IX86_BUILTIN_PCOMEQUW): Ditto.
10274         (IX86_BUILTIN_PCOMNEUW): Ditto.
10275         (IX86_BUILTIN_PCOMLTUW): Ditto.
10276         (IX86_BUILTIN_PCOMLEUW): Ditto.
10277         (IX86_BUILTIN_PCOMGTUW): Ditto.
10278         (IX86_BUILTIN_PCOMGEUW): Ditto.
10279         (IX86_BUILTIN_PCOMFALSEUW): Ditto.
10280         (IX86_BUILTIN_PCOMTRUEUW): Ditto.
10281         (IX86_BUILTIN_PCOMEQUD): Ditto.
10282         (IX86_BUILTIN_PCOMNEUD): Ditto.
10283         (IX86_BUILTIN_PCOMLTUD): Ditto.
10284         (IX86_BUILTIN_PCOMLEUD): Ditto.
10285         (IX86_BUILTIN_PCOMGTUD): Ditto.
10286         (IX86_BUILTIN_PCOMGEUD): Ditto.
10287         (IX86_BUILTIN_PCOMFALSEUD): Ditto.
10288         (IX86_BUILTIN_PCOMTRUEUD): Ditto.
10289         (IX86_BUILTIN_PCOMEQUQ): Ditto.
10290         (IX86_BUILTIN_PCOMNEUQ): Ditto.
10291         (IX86_BUILTIN_PCOMLTUQ): Ditto.
10292         (IX86_BUILTIN_PCOMLEUQ): Ditto.
10293         (IX86_BUILTIN_PCOMGTUQ): Ditto.
10294         (IX86_BUILTIN_PCOMGEUQ): Ditto.
10295         (IX86_BUILTIN_PCOMFALSEUQ): Ditto.
10296         (IX86_BUILTIN_PCOMTRUEUQ): Ditto.
10297         (IX86_BUILTIN_PCOMEQB): Ditto.
10298         (IX86_BUILTIN_PCOMNEB): Ditto.
10299         (IX86_BUILTIN_PCOMLTB): Ditto.
10300         (IX86_BUILTIN_PCOMLEB): Ditto.
10301         (IX86_BUILTIN_PCOMGTB): Ditto.
10302         (IX86_BUILTIN_PCOMGEB): Ditto.
10303         (IX86_BUILTIN_PCOMFALSEB): Ditto.
10304         (IX86_BUILTIN_PCOMTRUEB): Ditto.
10305         (IX86_BUILTIN_PCOMEQW): Ditto.
10306         (IX86_BUILTIN_PCOMNEW): Ditto.
10307         (IX86_BUILTIN_PCOMLTW): Ditto.
10308         (IX86_BUILTIN_PCOMLEW): Ditto.
10309         (IX86_BUILTIN_PCOMGTW): Ditto.
10310         (IX86_BUILTIN_PCOMGEW): Ditto.
10311         (IX86_BUILTIN_PCOMFALSEW): Ditto.
10312         (IX86_BUILTIN_PCOMTRUEW): Ditto.
10313         (IX86_BUILTIN_PCOMEQD): Ditto.
10314         (IX86_BUILTIN_PCOMNED): Ditto.
10315         (IX86_BUILTIN_PCOMLTD): Ditto.
10316         (IX86_BUILTIN_PCOMLED): Ditto.
10317         (IX86_BUILTIN_PCOMGTD): Ditto.
10318         (IX86_BUILTIN_PCOMGED): Ditto.
10319         (IX86_BUILTIN_PCOMFALSED): Ditto.
10320         (IX86_BUILTIN_PCOMTRUED): Ditto.
10321         (IX86_BUILTIN_PCOMEQQ): Ditto.
10322         (IX86_BUILTIN_PCOMNEQ): Ditto.
10323         (IX86_BUILTIN_PCOMLTQ): Ditto.
10324         (IX86_BUILTIN_PCOMLEQ): Ditto.
10325         (IX86_BUILTIN_PCOMGTQ): Ditto.
10326         (IX86_BUILTIN_PCOMGEQ): Ditto.
10327         (IX86_BUILTIN_PCOMFALSEQ): Ditto.
10328         (IX86_BUILTIN_PCOMTRUEQ): Ditto.
10329         (enum multi_arg_type): New enum for describing the various SSE5
10330         intrinsic argument types.
10331         (bdesc_multi_arg): New table for SSE5 intrinsics.
10332         (ix86_init_mmx_sse_builtins): Add SSE5 intrinsic support.
10333         (ix86_expand_multi_arg_builtin): New function for creating SSE5
10334         intrinsics.
10335         (ix86_expand_builtin): Add SSE5 intrinsic support.
10336         (ix86_sse5_valid_op_p): New function to validate SSE5 3 and 4
10337         operand instructions.
10338         (ix86_expand_sse5_multiple_memory): New function to split the
10339         second memory reference from SSE5 instructions.
10340         (type_has_variadic_args_p): Delete in favor of stdarg_p.
10341         (ix86_return_pops_args): Use stdarg_p to determine if the function
10342         has variable arguments.
10343         (ix86_setup_incoming_varargs): Ditto.
10344         (x86_this_parameter): Ditto.
10345
10346         * config/i386/i386-protos.h (ix86_expand_sse5_unpack): Add
10347         declaration.
10348         (ix86_expand_sse5_pack): Ditto.
10349         (ix86_sse5_valid_op_p): Ditto.
10350         (ix86_expand_sse5_multiple_memory): Ditto.
10351
10352         * config/i386/i386.md (UNSPEC_SSE5_INTRINSIC): Add new UNSPEC
10353         constant for SSE5 support.
10354         (UNSPEC_SSE5_UNSIGNED_CMP): Ditto.
10355         (UNSPEC_SSE5_TRUEFALSE): Ditto.
10356         (UNSPEC_SSE5_PERMUTE): Ditto.
10357         (UNSPEC_SSE5_ASHIFT): Ditto.
10358         (UNSPEC_SSE5_LSHIFT): Ditto.
10359         (UNSPEC_FRCZ): Ditto.
10360         (UNSPEC_CVTPH2PS): Ditto.
10361         (UNSPEC_CVTPS2PH): Ditto.
10362         (PCOM_FALSE): Add new constant for true/false SSE5 comparisons.
10363         (PCOM_TRUE): Ditto.
10364         (COM_FALSE_S): Ditto.
10365         (COM_FALSE_P): Ditto.
10366         (COM_TRUE_S): Ditto.
10367         (COM_TRUE_P): Ditto.
10368         (type attribute): Add ssemuladd, sseiadd1, ssecvt1, sse4arg types.
10369         (unit attribute): Add support for ssemuladd, ssecvt1, sseiadd1 sse4arg
10370         types.
10371         (memory attribute): Ditto.
10372         (sse4_1_round<mode>2): Use TARGET_ROUND instead of TARGET_SSE4_1.
10373         Use SSE4_1_ROUND_* constants instead of hard coded numbers.
10374         (rint<mode>2): Use TARGET_ROUND instead of TARGET_SSE4_1.
10375         (floor<mode>2): Ditto.
10376         (ceil<mode>2): Ditto.
10377         (btrunc<mode>2): Ditto.
10378         (nearbyintdf2): Ditto.
10379         (nearbyintsf2): Ditto.
10380         (sse_setccsf): Disable if SSE5.
10381         (sse_setccdf): Ditto.
10382         (sse5_setcc<mode>): New support for SSE5 conditional move.
10383         (sse5_pcmov_<mode>): Ditto.
10384
10385         * config/i386/sse.md (SSEMODE1248): New mode iterator for SSE5.
10386         (SSEMODEF4): Ditto.
10387         (SSEMODEF2P): Ditto.
10388         (ssemodesuffixf4): New mode attribute for SSE5.
10389         (ssemodesuffixf2s): Ditto.
10390         (ssemodesuffixf2c): Ditto.
10391         (sserotatemax): Ditto.
10392         (ssescalarmode): Ditto.
10393         (sse_maskcmpv4sf3): Disable if SSE5.
10394         (sse_maskcmpv2df3): Ditto.
10395         (sse_vmmaskcmpv4sf3): Ditto.
10396         (sse5_fmadd<mode>4): Add SSE5 floating point multiply/add instructions.
10397         (sse5_vmfmadd<mode>4): Ditto.
10398         (sse5_fmsub<mode>4): Ditto.
10399         (sse5_vmfmsub<mode>4): Ditto.
10400         (sse5_fnmadd<mode>4): Ditto.
10401         (sse5_vmfnmadd<mode>4): Ditto.
10402         (sse5_fnmsub<mode>4): Ditto.
10403         (sse5_vmfnmsub<mode>4): Ditto.
10404         (sse5i_fmadd<mode>4): Ditto.
10405         (sse5i_fmsub<mode>4): Ditto.
10406         (sse5i_fnmadd<mode>4): Ditto.
10407         (sse5i_fnmsub<mode>4): Ditto.
10408         (sse5i_vmfmadd<mode>4): Ditto.
10409         (sse5i_vmfmsub<mode>4): Ditto.
10410         (sse5i_vmfnmadd<mode>4): Ditto.
10411         (sse5i_vmfnmsub<mode>4): Ditto.
10412         (mulv16qi3): Add SSE5 support.
10413         (mulv4si3): Ditto.
10414         (sse5_mulv4si3): New insn for 32-bit multiply support on SSE5.
10415         (sse2_mulv4si3): Disable if SSE5.
10416         (sse4_1_roundpd): Use TARGET_ROUND instead of TARGET_SSE4_1.
10417         (sse4_1_roundps): Ditto.
10418         (sse4_1_roundsd): Ditto.
10419         (sse4_1_roundss): Ditto.
10420         (sse_maskcmpv4sf3): Disable if SSE5 so the SSE5 instruction will
10421         be generated.
10422         (sse_maskcmpsf3): Ditto.
10423         (sse_vmmaskcmpv4sf3): Ditto.
10424         (sse2_maskcmpv2df3): Ditto.
10425         (sse2_maskcmpdf3): Ditto.
10426         (sse2_vmmaskcmpv2df3): Ditto.
10427         (sse2_eq<mode>3): Ditto.
10428         (sse2_gt<mode>3): Ditto.
10429         (sse5_pcmov_<mode>): Add SSE5 support.
10430         (vec_unpacku_hi_v16qi): Ditto.
10431         (vec_unpacks_hi_v16qi): Ditto.
10432         (vec_unpacku_lo_v16qi): Ditto.
10433         (vec_unpacks_lo_v16qi): Ditto.
10434         (vec_unpacku_hi_v8hi): Ditto.
10435         (vec_unpacks_hi_v8hi): Ditto.
10436         (vec_unpacku_lo_v8hi): Ditto.
10437         (vec_unpacks_lo_v8hi): Ditto.
10438         (vec_unpacku_hi_v4si): Ditto.
10439         (vec_unpacks_hi_v4si): Ditto.
10440         (vec_unpacku_lo_v4si): Ditto.
10441         (vec_unpacks_lo_v4si): Ditto.
10442         (sse5_pmacsww): New SSE5 intrinsic insn.
10443         (sse5_pmacssww): Ditto.
10444         (sse5_pmacsdd): Ditto.
10445         (sse5_pmacssdd): Ditto.
10446         (sse5_pmacssdql): Ditto.
10447         (sse5_pmacssdqh): Ditto.
10448         (sse5_pmacsdqh): Ditto.
10449         (sse5_pmacsswd): Ditto.
10450         (sse5_pmacswd): Ditto.
10451         (sse5_pmadcsswd): Ditto.
10452         (sse5_pmadcswd): Ditto.
10453         (sse5_pcmov_<move>): Conditional move support on SSE5.
10454         (sse5_phaddbw): New SSE5 intrinsic insn.
10455         (sse5_phaddbd): Ditto.
10456         (sse5_phaddbq): Ditto.
10457         (sse5_phaddwd): Ditto.
10458         (sse5_phaddwq): Ditto.
10459         (sse5_phadddq): Ditto.
10460         (sse5_phaddubw): Ditto.
10461         (sse5_phaddubd): Ditto.
10462         (sse5_phaddubq): Ditto.
10463         (sse5_phadduwd): Ditto.
10464         (sse5_phadduwq): Ditto.
10465         (sse5_phaddudq): Ditto.
10466         (sse5_phsubbw): Ditto.
10467         (sse5_phsubwd): Ditto.
10468         (sse5_phsubdq): Ditto.
10469         (sse5_pperm): Ditto.
10470         (sse5_pperm_sign_v16qi_v8hi): New insns for pack/unpack with SSE5.
10471         (sse5_pperm_zero_v16qi_v8hi): Ditto.
10472         (sse5_pperm_sign_v8hi_v4si): Ditto.
10473         (sse5_pperm_zero_v8hi_v4si): Ditto.
10474         (sse5_pperm_sign_v4si_v2di): Ditto.
10475         (sse5_pperm_sign_v4si_v2di): Ditto.
10476         (sse5_pperm_pack_v2di_v4si): Ditto.
10477         (sse5_pperm_pack_v4si_v8hi): Ditto.
10478         (sse5_pperm_pack_v8hi_v16qi): Ditto.
10479         (sse5_perm<mode>): New SSE5 intrinsic insn.
10480         (rotl<mode>3): Ditto.
10481         (sse5_rotl<mode>3): Ditto.
10482         (sse5_ashl<mode>3): Ditto.
10483         (sse5_lshl<mode>3): Ditto.
10484         (sse5_frcz<mode>2): Ditto.
10485         (sse5s_frcz<mode>2): Ditto.
10486         (sse5_cvtph2ps): Ditto.
10487         (sse5_cvtps2ph): Ditto.
10488         (sse5_vmmaskcmp<mode>3): Ditto.
10489         (sse5_com_tf<mode>3): Ditto.
10490         (sse5_maskcmp<mode>3): Ditto.
10491         (sse5_maskcmp_uns<mode>3): Ditto.
10492         (sse5_maskcmp_uns2<mode>3): Ditto.
10493         (sse5_pcom_tf<mode>3): Ditto.
10494
10495         * config/i386/predicates.md (sse5_comparison_float_operator):
10496         New predicate to match the comparison operators supported by
10497         the SSE5 com instruction.
10498         (ix86_comparison_int_operator): New predicate to match just the
10499         signed int comparisons.
10500         (ix86_comparison_uns_operator): New predicate to match just the
10501         unsigned int comparisons.
10502
10503         * doc/invoke.texi (-msse5): Add documentation.
10504         (-mfused-madd): Ditto.
10505
10506         * doc/extend.texi (x86 intrinsics): Document new SSE5 intrinsics.
10507
10508         * config.gcc (i[34567]86-*-*): Include bmmintrin.h and
10509         mmintrin-common.h.
10510         (x86_64-*-*): Ditto.
10511
10512         * config/i386/cpuid.h (bit_SSE5): Define SSE5 bit.
10513
10514         * config/i386/bmmintrin.h: New file, provide common x86 compiler
10515         intrinisics for SSE5.
10516
10517         * config/i386/smmintrin.h: Move instructions shared with SSE5 to
10518         mmintrin-common.h.
10519
10520         * config/i386/mmintrin-common.h: New file, to contain common
10521         instructions between SSE4.1 and SSE5.
10522
10523         * config/i386/netware.c (gen_stdcall_or_fastcall_decoration): Use
10524         FOREACH_FUNCTION_ARGS to iterate over the argument list.
10525         (gen_regparm_prefix): Ditto.
10526
10527         * config/i386/winnt.c (gen_stdcall_or_fastcall_suffix): Use
10528         FOREACH_FUNCTION_ARGS to iterate over the argument list.  Use
10529         prototype_p to determine if a function is prototyped.
10530
10531 2009-08-25 Ville Voutilainen <ville.voutilainen@gmail.com>
10532
10533         * c-common.c (c_common_reswords) add the alignof keyword,
10534         with same RID as __alignof and __alignof__
10535
10536 2009-08-25  Anatoly Sokolov  <aesok@post.ru>
10537
10538         * hooks.h (hook_bool_const_int_const_int_true): Declare.
10539         * hooks.c (hook_bool_const_int_const_int_true): New function.
10540         * target.h (struct gcc_target): Add can_eliminate field.
10541         * target-def.h (TARGET_CAN_ELIMINATE): Define.
10542         (TARGET_INITIALIZER): Use TARGET_CAN_ELIMINATE.
10543         * ira.c (setup_eliminable_regset): Use can_eliminate target hook.
10544         * reload1.c (update_eliminables, init_elim_table): (Ditto.).
10545         (elim_table): Revise comment.
10546         * system.h (CAN_ELIMINATE): Poison.
10547         * defaults.h (CAN_ELIMINATE): Remove.
10548         * doc/tm.texi (CAN_ELIMINATE): Revise documentation.
10549
10550         * config/alpha/vms.h (CAN_ELIMINATE): Remove macro.
10551         * config/alpha/alpha.c (TARGET_CAN_ELIMINATE) [TARGET_ABI_OPEN_VMS]:
10552         Define macro.
10553         (alpha_vms_can_eliminate): Declare as static, change return type to
10554         bool.
10555         * config/alpha/alpha-protos.h (alpha_vms_can_eliminate): Remove.
10556
10557         * config/arm/arm.h (CAN_ELIMINATE): Remove macro.
10558         * config/arm/arm.c (TARGET_CAN_ELIMINATE): Define macro.
10559         (arm_can_eliminate): New function.
10560
10561         * config/avr/avr.h (CAN_ELIMINATE): Remove macro.
10562         * config/avr/avr.c (TARGET_CAN_ELIMINATE): Define macro.
10563         (avr_can_eliminate): Declare as static.
10564         * config/avr/avr-protos.h (avr_can_eliminate): Remove.
10565
10566         * config/bfin/bfin.h (CAN_ELIMINATE): Remove macro.
10567         * config/bfin/bfin.c (TARGET_CAN_ELIMINATE): Define macro.
10568         (bfin_can_eliminate): New function.
10569
10570         * config/crx/crx.h (CAN_ELIMINATE): Remove macro.
10571         * config/crx/crx.c (TARGET_CAN_ELIMINATE): Define macro.
10572         (crx_can_eliminate): New function.
10573
10574         * config/fr30/fr30.h (CAN_ELIMINATE): Remove macro.
10575         * config/fr30/fr30.c (TARGET_CAN_ELIMINATE): Define macro.
10576         (fr30_can_eliminate): New function.
10577
10578         * config/frv/frv.h (CAN_ELIMINATE): Remove macro.
10579         * config/frv/frv.c (TARGET_CAN_ELIMINATE): Define macro.
10580         (frv_can_eliminate): New function.
10581
10582         * config/h8300/h8300.h (CAN_ELIMINATE): Remove macro.
10583         * config/h8300/h8300.c (TARGET_CAN_ELIMINATE): Define macro.
10584         (h8300_can_eliminate): New function.
10585
10586         * config/i386/i386.h (CAN_ELIMINATE): Remove macro.
10587         * config/i386/i386.c (TARGET_CAN_ELIMINATE): Define macro.
10588         (i386_can_eliminate): Declare as static, change return type to bool.
10589         * config/i386/i386-protos.h (i386_can_eliminate): Remove.
10590
10591         * config/ia64/ia64.h (CAN_ELIMINATE): Remove macro.
10592         * config/ia64/ia64.c (TARGET_CAN_ELIMINATE): Define macro.
10593         (ia64_can_eliminate): New function.
10594
10595         * config/iq2000/iq2000.h (CAN_ELIMINATE): Remove macro.
10596         * config/iq2000/iq2000.c (TARGET_CAN_ELIMINATE): Define macro.
10597         (iq2000_can_eliminate): New function.
10598
10599         * config/m32r/m32r.h (CAN_ELIMINATE): Remove macro.
10600         * config/m32r/m32r.c (TARGET_CAN_ELIMINATE): Define macro.
10601         (m32r_can_eliminate): New function.
10602
10603         * config/m68hc11/m68hc11.h (CAN_ELIMINATE): Remove macro.
10604         * config/m68hc11/m68hc11.c (TARGET_CAN_ELIMINATE): Define macro.
10605         (m68hc11_can_eliminate): New function.
10606
10607         * config/m68k/m68k.h (CAN_ELIMINATE): Remove macro.
10608         * config/m68k/m68k.c (TARGET_CAN_ELIMINATE): Define macro.
10609         (m68k_can_eliminate): New function.
10610
10611         * config/mep/mep.h (CAN_ELIMINATE): Remove macro.
10612         * config/mep/mep.c (TARGET_CAN_ELIMINATE): Define macro.
10613         (mep_can_eliminate): New function.
10614
10615         * config/mips/mips.h (CAN_ELIMINATE): Remove macro.
10616         * config/mips/mips.c (TARGET_CAN_ELIMINATE): Define macro.
10617         (mips_can_eliminate): New function.
10618
10619         * config/rs6000/rs6000.h (CAN_ELIMINATE): Remove macro.
10620         * config/rs6000/rs6000.c (TARGET_CAN_ELIMINATE): Define macro.
10621         (rs6000_can_eliminate): New function.
10622
10623         * config/s390/s390.h (CAN_ELIMINATE): Remove macro.
10624         * config/s390/s390.c (TARGET_CAN_ELIMINATE): Define macro.
10625         (s390_can_eliminate): Declare as static.
10626         * config/s390/s390-protos.h (sparc_can_eliminate): Remove.
10627
10628         * config/score/score.h (CAN_ELIMINATE): Remove macro.
10629         * config/score/score.c (TARGET_CAN_ELIMINATE): Define macro.
10630         (score_can_eliminate): New function.
10631
10632         * config/sparc/sparc.h (CAN_ELIMINATE): Remove macro.
10633         * config/sparc/sparc.c (TARGET_CAN_ELIMINATE): Define macro.
10634         (sparc_can_eliminate): Declare as static.
10635         * config/sparc/sparc-protos.h (sparc_can_eliminate): Remove.
10636
10637         * config/stormy16/stormy16.h (CAN_ELIMINATE): Remove macro.
10638         * config/stormy16/stormy16.c (TARGET_CAN_ELIMINATE): Define macro.
10639         (xstormy16_can_eliminate): New function.
10640
10641         * config/v850/v850.h (CAN_ELIMINATE): Remove macro.
10642         * config/v850/v850.c (TARGET_CAN_ELIMINATE): Define macro.
10643         (v850_can_eliminate): New function.
10644
10645 2009-08-25  Uros Bizjak  <ubizjak@gmail.com>
10646
10647         * config/alpha/alpha.md (*cmpdf_ieee_ext[123]): Remove.
10648         (*cmpdf_internal): Enable for all ALPHA_FPTM levels.
10649         (*movdfcc_ext[1234]): Disable for IEEE mode.
10650
10651 2009-08-25  Eric Botcazou  <ebotcazou@adacore.com>
10652
10653         * gimplify.c (prepare_gimple_addressable): New static function.
10654         (gimplify_modify_expr_to_memcpy): Invoke it on the RHS before marking
10655         it addressable.
10656         (gimplify_addr_expr): Invoke it similarly on the operand instead of
10657         manually fiddling with it.
10658
10659 2009-08-25  Michael Matz  <matz@suse.de>
10660
10661         * expr.h (jumpifnot_1, jumpif_1, do_jump_1): Declare.
10662         * dojump.c (do_jump_by_parts_greater): Take two operands instead of
10663         full expression.
10664         (do_jump_by_parts_equality, do_compare_and_jump): Ditto.
10665         (jumpifnot_1, jumpif_1): New wrappers for do_jump_1.
10666         (do_jump): Split out code for simple binary comparisons into ...
10667         (do_jump_1): ... this, taking the individual operands and code.
10668         Change callers to helper function above accordingly.
10669         * expr.c (expand_expr_real_1): Use jumpifnot_1 for simple binary
10670         comparisons.
10671
10672 2009-08-25  Michael Matz  <matz@suse.de>
10673
10674         * expr.h (struct separate_ops, sepops): New type for passing
10675         around an exploded simple expression.
10676         * optabs.c (expand_widen_pattern_expr, expand_vec_shift_expr):
10677         Use this structure instead of expression tree.
10678         (get_vcond_icode, expand_vec_cond_expr_p): Don't take whole
10679         expression, only its type.
10680         (expand_vec_cond_expr): Take type and individual operands instead
10681         of full expression.
10682         * optabs.h (expand_widen_pattern_expr, expand_vec_cond_expr,
10683         expand_vec_shift_expr): Change prototype accordingly.
10684         * tree-vect-stmts.c (vectorizable_condition): Change call of
10685         expand_vec_cond_expr_p to pass only type.
10686         * expr.c (do_store_flags): Change prototype and implementation
10687         to take an exploded expression.
10688         (expand_expr_real_1): New local ops initialized with details
10689         of the full expression.  Use it instead of full
10690         expression in calls to do_store_flags, expand_vec_cond_expr,
10691         expand_widen_pattern_expr and expand_vec_shift_expr.
10692
10693 2009-08-25  Michael Matz  <matz@suse.de>
10694
10695         * expr.c (expand_expr_real_1): New local treeop0, treeop1,
10696         treeop2 initialized with first three operands of the full expression.
10697         Substitute all TREE_OPERAND (exp, [012]) calls with them.
10698
10699 2009-08-25  Kai Tietz  <kai.tietz@onevision.com>
10700
10701         * gcc/gthr-win32.h (__UNUSED_PARAM): Define, if not already present.
10702         (__gthread_objc_condition_allocate): Mark arguments as unused.
10703         (__gthread_objc_condition_deallocate): Likewise.
10704         (__gthread_objc_condition_wait): Likewise.
10705         (__gthread_objc_condition_broadcast): Likewise.
10706         (__gthread_objc_condition_signal): Likewise.
10707         (__gthread_objc_thread_detach): Cast via INT_PTR to pointer.
10708         (__gthread_objc_thread_id): Likewise.
10709
10710 2009-08-25  Janus Weil  <janus@gcc.gnu.org>
10711
10712         PR middle-end/41149
10713         * tree-pretty-print.c (print_call_name): Print the correct call name
10714         for procedure pointer components.
10715
10716 2009-08-24  Steve Ellcey  <sje@cup.hp.com>
10717
10718         * config/ia64/ia64.c (ia64_promote_function_mode): Call
10719         default_promote_function_mode when not VMS.
10720
10721 2009-08-24  Olivier Hainque  <hainque@adacore.com>
10722
10723         * convert.c (convert_to_integer): Don't assume an input pointer is
10724         POINTER_SIZE wide.  Fetch from the type instead.
10725
10726 2009-08-24  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
10727
10728         * configure.ac (AC_PREREQ): Bump to 2.64.
10729
10730 2009-08-24  Rafael Avila de Espindola  <espindola@google.com>
10731
10732         * gcc.c (standard_exec_prefix_1,standard_exec_prefix_2): Remove.
10733         (process_command): Don't search standard_exec_prefix_1 and
10734         standard_exec_prefix_2.
10735
10736 2009-08-24  Ramana Radhakrishnan  <ramana.radhakrishnan@arm.com>
10737
10738         * config/arm/arm.c (output_return_instruction): Handle for
10739         unified syntax.
10740
10741 2009-08-24  Ramana Radhakrishnan  <ramana.radhakrishnan@arm.com>
10742
10743         * config/arm/arm.c (arm_select_cc_mode): Handle subreg.
10744
10745 2009-08-24  Ramana Radhakrishnan  <ramana.radhakrishnan@arm.com>
10746
10747         * config/arm/vfp.md (*arm_movdi_vfp): Mark as predicable.
10748         (*arm_movdf_vfp): Likewise.
10749
10750 2009-08-24  Ramana Radhakrishnan  <ramana.radhakrishnan@arm.com>
10751
10752         * config/arm/neon.md (vashl<mode>3): Rename from ashl<mode>3.
10753         (vashr<mode>3): Rename from ashr<mode>3.
10754         (vlshr<mode>3): Rename from lshr<mode>3.
10755
10756 2009-08-24  Kai Tietz  <kai.tietz@onevision.com>
10757
10758         PR/40786
10759         * c-format.c (format_wanted_type): Add new member scalar_identity_flag.
10760         (check_format_info_main): Use scalar_identify_flag.
10761         (check_format_types): Check for scalar size identity if
10762         scalar_identify_flag is set.
10763         (printf_length_specs): Extend by new field.
10764         (asm_fprintf_length_specs): Likewise.
10765         (gcc_diag_length_specs): Likewise.
10766         (scanf_length_specs): Likewise.
10767         (strfmon_length_specs): Likewise.
10768         (gcc_gfc_length_specs): Likewise.
10769         * config/i386/msformat-c.c (ms_printf_length_specs): Likewise.
10770         (ms_printf_flag_specs): Likewise.
10771         * c-format.h (format_length_info): Add new member scalar_identity_flag.
10772
10773 2009-08-23  Uros Bizjak  <ubizjak@gmail.com>
10774
10775         PR target/40718
10776         * config/i386/i386.c (*call_pop_1): Disable for sibling calls.
10777         (*call_value_pop_1): Ditto.
10778         (*sibcall_pop_1): New insn pattern.
10779         (*sibcall_value_pop_1): Ditto.
10780
10781 2009-08-23  Alan Modra  <amodra@bigpond.net.au>
10782
10783         PR target/41081
10784         * config/rs6000/rs6000.md (rotlsi3_64, ashlsi3_64, lshrsi3_64,
10785         ashrsi3_64): New.
10786
10787 2009-08-23  Alan Modra  <amodra@bigpond.net.au>
10788
10789         PR target/41081
10790         * fwprop.c (try_fwprop_subst): Allow multiple sets.
10791         (get_reg_use_in): New function.
10792         (forward_propagate_subreg): Propagate through subreg of zero_extend
10793         or sign_extend.
10794
10795 2009-08-22  Kaz Kojima  <kkojima@gcc.gnu.org>
10796
10797         * config/sh/t-sh (TARGET_LIBGCC2_CFLAGS): Define.
10798         * config/sh/t-netbsd (TARGET_LIBGCC2_CFLAGS): Add -mieee.
10799
10800 2009-08-22  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
10801
10802         * configure.ac: Remove --with-datarootdir, --with-docdir,
10803         --with-htmldir switches.  No need to call AC_SUBST for
10804         datarootdir, docdir, htmldir any more.
10805         * configure: Regenerate.
10806         * doc/install.texi (Configuration): Document --datarootdir,
10807         --docdir, --htmldir, --pdfdir; update documentation for
10808         --infodir, --mandir.
10809         (Prerequisites): Bump Autoconf version to 2.64, Automake to 1.11,
10810         M4 to 1.4.6.
10811
10812         * aclocal.m4: Regenerate.
10813         * config.in: Regenerate.
10814         * configure: Regenerate.
10815
10816 2009-08-21  Douglas B Rupp  <rupp@gnat.com>
10817             Olivier Hainque  <hainque@adacore.com>
10818
10819         * config/ia64/ia64.c: Include libfuncs.h.
10820         (TARGET_PROMOTE_FUNCITON_MODE): Define target macro.
10821         (ia64_expand_call): Use reg 25 on VMS.
10822         (ia64_initialize_trampoline): Fix for VMS ABI.
10823         (ia64_function_arg_offset): Always returns 0 when TARGET_ABI_OPEN_VMS.
10824         (ia64_function_arg): Initialize reg 25 on VMS.
10825         Fix OpenVMS ABI issues for varargs.
10826         For OpenVMS, emit the Argument Information register set in the
10827         incoming/sibcall case as well.
10828         (ia64_arg_type): New function.
10829         (ia64_function_arg_advance): Keep track of cum->words.
10830         Fix OpenVMS ABI issues for varargs.
10831         (ia64_function_value): On VMS, promote mode of non-aggregate types.
10832         (ia64_override_options): Set flag_no_common on VMS.
10833         (ia64_init_builtins): Disable FWRITE builtin.
10834         (ia64_asm_output_external): Call DO_CRTL_NAMES.
10835         (ia64_vms_init_libfuncs): Add decc$ routines.
10836         (ia64_vms_valid_pointer_mode): New function.
10837         (ia64_struct_value_rtx): Allways NULL_RTX on VMS.
10838         (ia64_promote_function_mode): New function
10839         * config/ia64/ia64.h (TARGET_ABI_OPEN_VMS): Define as 0 for default.
10840         (LONG_DOUBLE_TYPE_SIZE): Force to 64 on VMS.
10841         (LIBCGC2_LONG_DOUBLE_TYPE_SIZE): Likewise.
10842         (INIT_CUMULATIVE_ARGS): Add atypes for VMS.
10843         (INIT_CUMULATIVE_INCOMING_ARGS): Likewise.
10844         (ASM_OUTPUT_DEF): Use ISDIGIT instead of isdigit.
10845         Suppress trailing '#' if VALUE is numeric.
10846         * config/ia64/vms.h (PROMOTE_FUNCTION_MODE): Remove, code moved to
10847         ia64_promote_function_mode.
10848         (TARGET_VALID_POINTER_MODE): Define.
10849
10850 2009-08-21  Michael Meissner  <meissner@linux.vnet.ibm.com>
10851
10852         PR target/40671
10853         * config/rs6000/rs6000.c (rs6000_override_options): Use
10854         TARGET_64BIT instead of TARGET_POWERPC64 to set the size of pointers.
10855
10856         PR target/41145
10857         * config/rs6000/rs6000.c (rs6000_handle_altivec_attribute): Fix
10858         reporting of vector + decimal/boolean/complex error.
10859
10860 2009-08-21  Jakub Jelinek  <jakub@redhat.com>
10861
10862         * config/rs6000/rs6000.c (rs6000_init_builtins): Fix type of
10863         __vector double TYPE_DECL.
10864
10865 2009-08-21  Richard Earnshaw  <rearnsha@arm.com>
10866
10867         * arm.h (MACHMODE): New define.  Include insn-modes.h if available.
10868         (CUMULATIVE_ARGS): Use MACHMODE for declaration of aapcs_vfp_mode.
10869         * arm.c (aapcs_vfp_is_call_or_return_candidate): Change base_mode
10870         to pointer to enum machine_mode.  Update all callers as needed.
10871
10872 2009-08-21  Uros Bizjak  <ubizjak@gmail.com>
10873
10874         * config/alpha/alpha.md (exception_receiver): Emit alternative
10875         GP load sequence if flag_reorder_blocks_and_partition is set.
10876         (*exception_receiver_2): Also enable when
10877         flag_reorder_blocks_and_partition is set.
10878
10879 2009-08-20  Matt Rice  <ratmice@gmail.com>
10880             Diego Novillo  <dnovillo@google.com>
10881
10882         * Makefile.in (PLUGIN_HEADERS): Include incpath.h and
10883         tree-ssa-sccvn.h.
10884
10885 2009-08-20  Richard Guenther  <rguenther@suse.de>
10886
10887         * c-objc-common.h (LANG_HOOKS_DUP_LANG_SPECIFIC_DECL): Do not define.
10888         * c-tree.h (c_dup_lang_specific_decl): Remove.
10889         (struct lang_decl, struct lang_type): Move definitions ...
10890         * c-lang.h: ... here.  New file.
10891         * c-decl.c: Include c-lang.h.
10892         (c_dup_lang_specific_decl): Remove.
10893         * c-typeck.c: Include c-lang.h.
10894         * Makefile.in (c-decl.o): Add c-lang.h dependency.
10895         (c-typeck.o): Likewise.
10896         * c-config-lang.in (gtfiles): Add c-lang.h.
10897         * gengtype.c (get_output_file_with_visibility): Handle c-lang.h
10898         like c-tree.h.
10899
10900 2009-08-20  Uros Bizjak  <ubizjak@gmail.com>
10901
10902         * config/alpha/alpha.c (alpha_end_function): Do not clear
10903         crtl->emit structure and free insn locators if cfun->is_thunk is true,
10904         this is now handled in generic code.
10905
10906 2009-08-20  Andreas Krebbel  <krebbel1@de.ibm.com>
10907
10908         * config/s390/s390.c (Z10_PREDICT_DISTANCE): New macro.
10909         (s390_z10_fix_long_loop_prediction): New function.
10910         (s390_z10_optimize_cmp): INSN walk moved to callee - s390_reorg.
10911         (s390_reorg): Walk over the INSNs and invoke
10912         s390_z10_fix_long_loop_prediction and s390_z10_optimize_cmp.
10913
10914 2009-08-20  Andreas Krebbel  <krebbel1@de.ibm.com>
10915
10916         * config/s390/s390.md ("*brx_stage1_<GPR:mode>", "*brxg_64bit",
10917         "*brx_64bit", "*brx_31bit"): New patterns.
10918         * config/s390/s390.c ('E'): New output modifier.
10919
10920 2009-08-20  Ramana Radhakrishnan  <ramana.radhakrishnan@arm.com>
10921             Richard Earnshaw  <richard.earnshaw@arm.com>
10922
10923         * config/arm/arm.c (arm_emit_movpair): Handle CONST_INT.
10924         * config/arm/arm.md (*arm_movtas_ze): New pattern for movt.
10925
10926 2009-08-19  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
10927
10928         * pa.md (reload_inhi, reload_outhi, reload_inqi, reload_outqi): New
10929         patterns.
10930         * pa.c (emit_move_sequence): Check if address of operand1 is valid
10931         for mode mode of operand0 when doing secondary reload for SAR.
10932
10933 2009-08-19  Jakub Jelinek  <jakub@redhat.com>
10934
10935         PR middle-end/41123
10936         * expr.c (expand_expr_real_1) <normal_inner_ref>: Handle all kinds
10937         of CONCAT, not just bitpos 0 bitsize size of the whole CONCAT.
10938
10939 2009-08-19  Jason Merrill  <jason@redhat.com>
10940
10941         * doc/invoke.texi (C++ Dialect Options): Note change of minimum
10942         supported template depth in C++0x.
10943
10944 2009-08-19  Jakub Jelinek  <jakub@redhat.com>
10945
10946         * config/rs6000/rs6000.c (rs6000_output_mi_thunk): Don't call
10947         free_after_compilation.
10948         * config/score/score7.c (score7_output_mi_thunk): Likewise.
10949         * config/score/score3.c (score3_output_mi_thunk): Likewise.
10950         * config/ia64/ia64.c (ia64_output_mi_thunk): Likewise.
10951         * config/mips/mips.c (mips_output_mi_thunk): Likewise.
10952         * config/sh/sh.c (sh_output_mi_thunk): Likewise.
10953         * config/m68k/m68k.c (m68k_output_mi_thunk): Likewise.
10954         * config/sparc/sparc.c (sparc_output_mi_thunk): Likewise.
10955
10956 2009-08-19  Ian Lance Taylor  <iant@google.com>
10957
10958         * doc/md.texi (Insn Canonicalizations): Correct canonicalization
10959         of (plus (mult (neg B) C) A).
10960
10961 2009-08-18  Michael Matz  <matz@suse.de>
10962
10963         * omp-low.c (optimize_omp_library_calls): Use types_compatible_p
10964         instead of comparing TYPE_MAIN_VARIANT for equality.
10965         * tree-vect-patterns.c (vect_recog_dot_prod_pattern,
10966         vect_recog_widen_mult_pattern, vect_recog_widen_sum_pattern): Ditto.
10967         * tree-vect-loop.c (vect_is_simple_reduction): Ditto.
10968         * gimplify.c (goa_lhs_expr_p): Ditto and use
10969         STRIP_USELESS_TYPE_CONVERSION.
10970
10971 2009-08-18  Michael Matz  <matz@suse.de>
10972
10973         * tree-ssa-structalias.c (create_variable_info_for): Also mark
10974         first field in a struct.
10975         (intra_create_variable_infos): Don't deal with flag_argument_noalias.
10976
10977 2009-08-18  Uros Bizjak  <ubizjak@gmail.com>
10978
10979         * config/alpha/alpha.c (alpha_output_mi_thunk_osf): Allocate insn
10980         locators before emit_insn is called.  Remove assert that
10981         cfun->is_thunk.
10982         (alpha_end_function): Clear crtl->emit structure and free insn
10983         locators if cfun->is_thunk is true.
10984
10985 2009-08-18  Jason Merrill  <jason@redhat.com>
10986
10987         * config/elfos.h (ASM_DECLARE_OBJECT_NAME): Use gnu_unique_object
10988         type if available.
10989         * configure.ac: Test for it.
10990         * configure, config.in: Regenerate.
10991         * doc/install.texi: Document --enable-gnu-unique-object.
10992
10993 2009-08-18  Richard Guenther  <rguenther@suse.de>
10994
10995         PR middle-end/41094
10996         * builtins.c (fold_builtin_pow): Fold pow(pow(x,y),z) to
10997         pow(x,y*z) only if x is nonnegative.
10998
10999 2009-08-18  Jakub Jelinek  <jakub@redhat.com>
11000
11001         * bb-reorder.c (fix_up_fall_thru_edges): Only call invert_jump
11002         on jumps.
11003
11004         PR target/40971
11005         * config/rs6000/rs6000.c (rs6000_legitimize_address): For
11006         [DT][FDI]mode ensure the offset isn't 4/8/12 bytes below 0x8000.
11007
11008 2009-08-17  DJ Delorie  <dj@redhat.com>
11009
11010         * config/m32c/m32c.md (UNS_FSETB, UNS_FREIT): New.
11011         * config/m32c/prologue.md (epilogue_freit): New.
11012         (fset_b): New.
11013         * config/m32c/m32c.c (m32c_function_needs_enter): Add prototype.
11014         (bank_switch_p): Likewise.
11015         (fast_interrupt_p): Likewise.
11016         (interrupt_p): Likewise.
11017         (m32c_conditional_register_usage): Round memregs size up.
11018         (need_to_save): We only need to save $a0 when we use ENTER.
11019         (interrupt_p): Check for fast_interrupt too.
11020         (bank_switch_p): New.
11021         (fast_interrupt_p): New.
11022         (m32c_attribute_table): Add bank_switch and fast_interrupt.
11023         (m32c_emit_prolog): Support bank switching and fast interrupts.
11024         * doc/extend.texi (Function Attributes): Add bank_switch and
11025         fast_interrupt.
11026
11027 2009-08-17  Douglas B Rupp  <rupp@gnat.com>
11028
11029         * config/alpha/alpha.c (vms_valid_pointer_mode): New function.
11030         * config/alpha/vms.h (TARGET_VALID_POINTER_MODE): Define.
11031
11032 2009-08-16  Douglas B Rupp  <rupp@gnat.com>
11033
11034         * doc/invoke.texi (Target options): Add new option list for IA-64/VMS.
11035         (menu): Add IA-64/VMS Options.
11036         (IA-64/VMS Options): Likewise.
11037
11038 2009-08-16  Richard Sandiford  <rdsandiford@googlemail.com>
11039
11040         PR target/38599
11041         * config/mips/mips.md (*lwxs): Use :P for pointer values.
11042
11043 2009-08-16  Richard Sandiford  <rdsandiford@googlemail.com>
11044
11045         * config/mips/mips-protos.h (mips_push_asm_switch): New function.
11046         (mips_pop_asm_switch): Likewise.
11047         * config/mips/mips.c (set_noreorder, set_nomacro, set_noat): Replace
11048         with...
11049         (mips_noreorder, mips_nomacro, mips_noat): ...these new variables.
11050         (mips_push_asm_switch_1, mips_pop_asm_switch_1): New functions.
11051         (mips_push_asm_switch, mips_pop_asm_switch): Likewise.
11052         (mips_print_operand_punctuation): Use them.  Check mips_noreorder
11053         instead of set_noreorder.
11054         (mips_output_function_prologue): Use the new functions.
11055         (mips_output_function_epilogue): Likewise.
11056         (mips_need_noat_wrapper_p): New function, split out from...
11057         (mips_final_prescan_insn, mips_final_postscan_insn): ...here.
11058         Use mips_push_asm_switch and mips_pop_asm_switch.
11059         * config/mips/mips.h (FUNCTION_PROFILER): Use mips_push_asm_switch
11060         and mips_pop_asm_switch.
11061         (ASM_OUTPUT_REG_POP): Likewise.
11062         (DBR_OUTPUT_SEQEND): Remove boilerplate comment.
11063         Use mips_pop_asm_switch.
11064         (mips_asm_switch): New structure.
11065         (set_noreorder, set_nomacro): Replace with...
11066         (mips_noreorder, mips_nomacro, mips_noat): ...these new variables.
11067         * config/mips/mips.md (fix_truncdfsi2_macro): Use mips_nomacro
11068         instead of set_nomacro.
11069         (fix_truncsfsi2_macro): Likewise.
11070         (cprestore): Likewise.
11071         (hazard): Use mips_noreorder instead of set_noreorder.
11072         * config/mips/sdemtk.h (FUNCTION_PROFILER): As for mips.h.
11073
11074 2009-08-16  Uros Bizjak  <ubizjak@gmail.com>
11075
11076         * config/alpha/alpha.c (alpha_end_function): Handle NULL_RTX returned
11077         from prev_active_insn.
11078
11079 2009-08-16  Anatoly Sokolov  <aesok@post.ru>
11080
11081         * config/avr/avr.h (AVR_HAVE_8BIT_SP): New macros.
11082         * config/avr/avr.c (avr_override_options): Initialize
11083         avr_current_arch variable.
11084         (avr_cpu_cpp_builtins): Define __AVR_HAVE_8BIT_SP__ or
11085         __AVR_HAVE_16BIT_SP__ according to the device type.
11086         (expand_prologue, output_movhi): Use AVR_HAVE_8BIT_SP instead of
11087         TARGET_TINY_STACK.
11088         (expand_epilogue): Use correct QI mode frame pointer for tiny stack.
11089         Use AVR_HAVE_8BIT_SP instead of TARGET_TINY_STACK.
11090
11091 2009-08-16  Dodji Seketeli  <dodji@redhat.com>
11092
11093         PR debug/37801
11094         * gcc/dwarf2out.c (gen_inlined_subroutine_die): Concentrate on
11095         generating inlined subroutine die only. We shouldn't be
11096         called for anything else.
11097         (gen_block_die): Don't generate inline subroutine debug info for
11098         abstract blocks.
11099
11100 2009-08-15  Sebastian Pop  <sebastian.pop@amd.com>
11101
11102         * graphite-poly.c (print_pbb): Print PBB index.
11103
11104 2009-08-15  Sebastian Pop  <sebastian.pop@amd.com>
11105
11106         PR middle-end/40981
11107         * graphite-interchange.c (ppl_max_for_le): Moved...
11108         * graphite-poly.c (pbb_number_of_iterations): Call ppl_max_for_le.
11109         * graphite-ppl.c (ppl_max_for_le): ... here.  Correct the use of
11110         ppl_Pointset_Powerset_C_Polyhedron_maximize.
11111         * graphite-ppl.h (ppl_max_for_le): Declared.
11112
11113 2009-08-14  Olatunji Ruwase <tjruwase@google.com>
11114
11115         * doc/extend.texi (Symbol-Renaming Pragmas): redefine_extname is
11116         supported on all platforms.
11117         * target.h (struct gcc_target): Remove handle_pragma_redefine_extname.
11118         * c-cppbuiltin.c: Remove use of targetm.handle_pragma_redefine_extname.
11119         * c-pragma.c: Likewise.
11120         * target-def.h (TARGET_INITIALIZER): Remove
11121         TARGET_HANDLE_PRAGMA_REDEFINE_EXTNAME.
11122         * config/sol2.h: Remove use of TARGET_HANDLE_PRAGMA_REDEFINE_EXTNAME.
11123
11124 2009-08-14  Douglas B Rupp  <rupp@gnat.com>
11125
11126         * config/ia64/fde-vms.c: New file.
11127         * config/ia64/fde-glibc.c (_Unwind_FindTableEntry): Add dummy arg.
11128         * config/ia64/unwind-ia64.c (UNW_ accessors): Move to unwind-ia64.h
11129         (MD_UNW_COMPATIBLE_PERSONALITY_P): Provide default.
11130         (uw_frame_state_for): Only register a personality routine if it is
11131         known to be compatible with our expectations.
11132         (_Unwind_FindEnclosingFunction, uw_frame_state_for):
11133         Declare unw_table_entry stack variable and
11134         mod all calls to _Unwind_FindTableEntry to add arg.
11135         * config/ia64/unwind-ia64.h (UNW_ accessors): Move here.
11136         (_Unwind_FindTableEntry): Add arg to prototype.
11137
11138 2009-08-14  Eric Botcazou  <ebotcazou@adacore.com>
11139
11140         * config/ia64/unwind-ia64.c (struct _Unwind_Context): Add new
11141         field 'signal_pfs_loc'.
11142         (uw_frame_state_for): Remove duplicate code dealing with leaf
11143         procedures without unwind info.
11144         If in the frame after unwinding through a signal handler, restore
11145         the AR.PFS register instead of the CFM if AR.PFS has not been saved.
11146         * config/ia64/linux-unwind.h (ia64_fallback_frame_state): Do not set
11147         'pfs_loc' to the AR.PFS location in the signal context; instead
11148         set 'signal_pfs_loc'.
11149         Manually generate the unwind info for the AR.PFS register.
11150         (ABI_MARKER_OLD_LINUX_SIGTRAMP, ABI_MARKER_OLD_LINUX_INTERRUPT,
11151         ABI_MARKER_LINUX_SIGTRAMP, ABI_MARKER_LINUX_INTERRUPT): Define.
11152         (ia64_handle_unwabi): Test 'fs->unwabi' against them.
11153         Do not set 'pfs_loc' to the AR.PFS location in the signal context;
11154         instead set 'signal_pfs_loc'.
11155         Remove code preventing the AR.PFS register from being restored
11156         from the signal context.
11157
11158 2009-08-14  Douglas B Rupp  <rupp@gnat.com>
11159             Tristan Gingold  <gingold@adacore.com>
11160
11161         * config.gcc (ia64-hp-*vms*): Insert ia64/t-ia64 in tmake_file.
11162         * config/ia64/t-vms: New file.
11163         * config/ia64/vms64.h: New file.
11164         * config/ia64/vms.h: New file.
11165         * config/ia64/vms-crtinit.asm: New file.
11166         * config/ia64/vms_symvec_libgcc_s.opt: New file.
11167         * config/ia64/vms-unwind.h: New file.
11168
11169 2009-08-14  Uros Bizjak  <ubizjak@gmail.com>
11170
11171         * config/alpha/alpha.c (alpha_emit_conditional_move): Handle
11172         TFmode compares.
11173
11174 2009-08-14  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
11175
11176         PR middle-end/30789
11177         * builtins.c (do_mpc_arg2): Make extern, define for any MPC version.
11178         Move declaration...
11179         * real.h (do_mpc_arg2): ... here.
11180         * fold-const.c (const_binop): Use MPC for complex MULT_EXPR
11181         and RDIV_EXPR.
11182
11183 2009-08-14  Rafael Avila de Espindola  <espindola@google.com>
11184
11185         * final.c (add_debug_prefix_map): Don't use GC memory for
11186         old_prefix and new_prefix.
11187
11188 2009-08-14  Richard Guenther  <rguenther@suse.de>
11189
11190         * ipa-prop.c (compute_complex_pass_through): If we cannot
11191         compute a non-varying offset for IPA_JF_ANCESTOR punt.
11192
11193 2009-08-14  Ulrich Weigand  <Ulrich.Weigand@de.ibm.com>
11194
11195         * c-lex.c (c_lex_with_flags): Increase size of local variable
11196         to avoid memory clobber.
11197
11198 2009-08-14  Paolo Bonzini  <bonzini@gnu.org>
11199
11200         PR target/40934
11201         * config/i386/i386.c (ix86_fp_comparison_strategy):
11202         Only enable/disable sahf at function granularity.
11203
11204 2009-08-14  Hans-Peter Nilsson  <hp@axis.com>
11205
11206         PR rtl-optimization/41064
11207         * reload1.c (reload_as_needed): Don't call extract_insn
11208         for known invalid replacements after calling
11209         validate_replace_rtx_group and verify_changes.
11210
11211 2009-08-14  Uros Bizjak  <ubizjak@gmail.com>
11212
11213         PR target/41019
11214         * config/i386/sse.md (SSEMODE124C8): New mode iterator.
11215         (vcond<SSEMODEF2P:mode>): Assert that operation is supported by
11216         ix86_expand_fp_vcond.
11217         (vcond<SSEMODE124C8:mode>): Use SSEMODE124C8 instead of SSEMODE124.
11218         Assert that operation is supported by ix86_expand_int_vcond.
11219         (vcondu<SSEMODE124C8:mode>): Ditto.
11220
11221 2009-08-13  DJ Delorie  <dj@redhat.com>
11222
11223         * config/i386/djgpp-stdint.h: New.
11224         * config.gcc (djgpp): Use it.
11225
11226 2009-08-13  Kaz Kojima  <kkojima@gcc.gnu.org>
11227
11228         * config/sh/sh.c (sh_override_options): When flag_exceptions or
11229         flag_unwind_tables is on, turn flag_reorder_blocks_and_partition off.
11230
11231 2009-08-13  Ghassan Shobaki  <ghassan.shobaki@amd.com>
11232
11233         * tree-ssa-loop-prefetch.c
11234         (prune_ref_by_group_reuse): Enhance probabilistic analysis
11235         for long-stride pruning.
11236         (compute_miss_rate): New function to compute the probability
11237         that two memory references access different cache lines.
11238
11239 2009-08-13  Dave Korn  <dave.korn.cygwin@gmail.com>
11240
11241         * gcc/config/i386/cygwin.h (LINK_SPEC): Add --enable-auto-image-base.
11242
11243 2009-08-13  Richard Guenther  <rguenther@suse.de>
11244
11245         PR middle-end/41047
11246         * tree-ssa-ccp.c (ccp_fold): When folding pointer additions
11247         use the constant pointer type.
11248         * gimplify.c (canonicalize_addr_expr): Canonicalize independent
11249         of CV qualifiers on the target pointer type.
11250         * tree-ssa.c (useless_type_conversion_p): Move incomplete pointer
11251         conversion check before restrict check.
11252
11253 2009-08-12  Kaz Kojima  <kkojima@gcc.gnu.org>
11254
11255         PR target/41029
11256         * config/sh/sh.md (reload_outdf__RnFRm+4): Fix thinko.
11257
11258 2009-08-12  Kaz Kojima  <kkojima@gcc.gnu.org>
11259
11260         * config/sh/sh.c (sh_promote_function_mode): Add ATTRIBUTE_UNUSED.
11261
11262 2009-08-12  Richard Guenther  <rguenther@suse.de>
11263
11264         PR tree-optimization/41011
11265         * ipa-cp.c (ipcp_lattice_from_jfunc): Deal with failing fold
11266         and reference constructing.
11267
11268 2009-08-12  Xinliang David Li  <davidxl@google.com>
11269
11270         PR tree-optimization/41012
11271         * tree-flow.h : New external interface.
11272         * gimple-low.c (check_call_arg): Change to public function.
11273         Remove argument mismatch check in lowering.
11274         * tree-inline.h (tree_can_inline_p): Interface change.
11275         * tree-inline.c (tree_can_inline_p): Fold argument mismatch check
11276         into this function.
11277         * ipa-inline.c (cgraph_decide_inlining_of_small_functions):
11278         Call change to tree_can_inline_p function.
11279         (cgraph_decide_inlining_incrementally): Ditto.
11280
11281 2009-08-12  Richard Sandiford  <rdsandiford@googlemail.com>
11282
11283         PR tree-optimization/41031
11284         * tree-outof-ssa.c (insert_value_copy_on_edge): Use promote_decl_mode
11285         on the partition variable rather than promote_mode on the source
11286         type.  Assert that the partition variable's type has the same
11287         mode as the source value's.
11288
11289 2009-08-12  Paolo Bonzini  <bonzini@gnu.org>
11290
11291         * doc/tm.texi (TARGET_PROMOTE_FUNCTION_MODE): Add documentation
11292         for for_return == 2.
11293         * function.c (assign_parm_setup_reg): Use for_return == 2, improve
11294         comments.
11295         * calls.c (expand_call): Fix typo.
11296         * explow.c (promote_decl_mode): Use for_return == 2 for RESULT_DECL
11297         and PARM_DECL.
11298         * stmt.c (expand_value_return): Use promote_function_mode to copy out
11299         of pseudo.
11300         * targhooks.c (default_promote_function_mode): Handle for_return == 2.
11301         * config/cris/cris.c (cris_promote_function_mode): Likewise.
11302         * config/mmix/mmix.c (mmix_promote_function_mode): Likewise.
11303         * config/pa/pa.c (pa_promote_function_mode): Likewise.
11304
11305 2009-08-12  Andrew Haley  <aph@redhat.com>
11306
11307         * config/arm/arm.c (arm_init_libfuncs): Add __sync_synchronize.
11308
11309 2009-08-12  Sebastian Pop  <sebastian.pop@amd.com>
11310
11311         PR bootstrap/40103
11312         * graphite.c: Remove pragma GCC diagnostic warning "-Wc++-compat".
11313
11314 2009-08-12  Richard Guenther  <rguenther@suse.de>
11315
11316         * alias.c (get_alias_set): Honor TYPE_STRUCTURAL_EQUALITY_P.
11317         * gimplify.c (gimplify_modify_expr): Do not use
11318         lang_hooks.types_compatible_p.
11319         * tree-ssa.c (useless_type_conversion_p): For aggregates
11320         just return false if the canonical types differ.
11321
11322 2009-08-12  Sebastian Pop  <sebastian.pop@amd.com>
11323
11324         PR middle-end/40980
11325         * sese.c (convert_for_phi_arg): New.
11326         (add_guard_exit_phis): Use convert_for_phi_arg.
11327
11328 2009-08-12  Sebastian Pop  <sebastian.pop@amd.com>
11329
11330         * graphite-sese-to-poly.c (pdr_add_data_dimensions): Dont add
11331         unknown subscript upper bounds.
11332
11333 2009-08-12  Sebastian Pop  <sebastian.pop@amd.com>
11334             Pranav Garg  <pranav.garg2107@gmail.com>
11335
11336         * graphite-interchange.c (gather_access_strides): Removed.
11337         (ppl_max_for_le): New.
11338         (build_linearized_memory_access): New.
11339         (memory_stride_in_loop): New.
11340         (pbb_interchange_profitable_p): Reimplemented.
11341         * graphite-ppl.h (ppl_new_id_map): New.
11342         (ppl_interchange): New.
11343
11344 2009-08-12  Sebastian Pop  <sebastian.pop@amd.com>
11345
11346         * graphite-interchange.c (compute_subscript): Removed.
11347         (compute_array_size_cstr): Removed.
11348         (compute_array_size_poly): Removed.
11349         (compute_array_size): Removed.
11350         (gather_access_strides_poly): Removed.
11351         (gather_access_strides): Empty.
11352
11353 2009-08-12  Sebastian Pop  <sebastian.pop@amd.com>
11354
11355         * graphite-dependences.c (dependence_polyhedron_1): Replace
11356         pdr_nb_subscripts with PDR_NB_SUBSCRIPTS.
11357         (graphite_legal_transform_dr): Same.
11358         (graphite_carried_dependence_level_k): Same.
11359         * graphite-poly.c (new_poly_dr): Add a parameter nb_subscripts.
11360         Initialize PDR_NB_SUBSCRIPTS.
11361         (print_pdr_access_layout): Replace pdr_nb_subscripts with
11362         PDR_NB_SUBSCRIPTS.
11363         * graphite-poly.h (struct poly_dr): Add nb_subscripts field.
11364         (PDR_NB_SUBSCRIPTS): New.
11365         (pdr_nb_subscripts): Removed.
11366         (pdr_dim): Simplified.
11367         * graphite-sese-to-poly.c (build_poly_dr): Replace pdr_nb_subscripts
11368         with PDR_NB_SUBSCRIPTS.
11369
11370 2009-08-12  Sebastian Pop  <sebastian.pop@amd.com>
11371
11372         * graphite-interchange.c (compute_array_size): Remove use of
11373         PDR_DATA_CONTAINER.
11374         * graphite-poly.c (new_poly_dr): Remove argument data_container.
11375         Do not initialize PDR_DATA_CONTAINER.
11376         (print_pdr): Do not print PDR_DATA_CONTAINER.
11377         * graphite-poly.h (struct poly_dr): Remove data_container field.
11378         (PDR_DATA_CONTAINER): Removed.
11379         * graphite-sese-to-poly.c (pdr_add_data_dimensions): Remove use of
11380         PDR_DATA_CONTAINER.
11381         (build_poly_dr): Same.
11382
11383 2009-08-12  Konrad Trifunovic  <konrad.trifunovic@gmail.com>
11384             Sebastian Pop  <sebastian.pop@amd.com>
11385
11386         * graphite-dependences.c (graphite_legal_transform_dr): Work on a
11387         copy of the dependence polyhedron.  Free the temporary objects.
11388         (graphite_carried_dependence_level_k): Free unused objects before
11389         returning.
11390
11391 2009-08-12  Sebastian Pop  <sebastian.pop@amd.com>
11392
11393         * graphite-blocking.c (scop_do_strip_mine): Call store_scattering.
11394         Early return without analyzing the data dependences if no
11395         transform has been done.  Call restore_scattering if the transform
11396         is not legal.
11397         (graphite-interchange.c): Same.
11398         * graphite-poly.c (print_scattering_function): Test for
11399         PBB_TRANSFORMED.
11400         (graphite_read_transforms): Initialize PBB_TRANSFORMED.
11401         (apply_poly_transforms): Do not gcc_assert that
11402         the transform is legal.
11403         (new_poly_bb): Initialize PBB_TRANSFORMED, PBB_SAVED and PBB_ORIGINAL.
11404         Do not initialize PBB_NB_SCATTERING_TRANSFORM, PBB_NB_LOCAL_VARIABLES,
11405         PBB_TRANSFORMED_SCATTERING, and PBB_ORIGINAL_SCATTERING.
11406         (free_poly_dr): Free PBB_TRANSFORMED, PBB_SAVED, and PBB_ORIGINAL.
11407         * graphite-poly.h (struct poly_scattering): New.
11408         (struct poly_bb): Add original, transformed, and saved fields.
11409         Remove transformed_scattering, original_scattering,
11410         nb_local_variables and nb_scattering_transform fields.
11411         (PBB_ORIGINAL, PBB_TRANSFORMED, PBB_SAVED): New.
11412         (poly_scattering_new): New.
11413         (poly_scattering_free): New.
11414         (poly_scattering_copy): New.
11415         (store_scattering_pbb): New.
11416         (store_scattering): New.
11417         (restore_scattering_pbb): New.
11418         (restore_scattering): New.
11419         * graphite-sese-to-poly.c (build_pbb_scattering_polyhedrons):
11420         Initialize PBB_TRANSFORMED and PBB_ORIGINAL.
11421
11422 2009-08-12  Sebastian Pop  <sebastian.pop@amd.com>
11423
11424         * graphite-poly.c (print_pbb): Add parentheses in the pretty print.
11425         (print_scop): Same.
11426
11427 2009-08-12  Sebastian Pop  <sebastian.pop@amd.com>
11428
11429         * Makefile.in (graphite.o): Depends on PREDICT_H.
11430         * graphite.c: Include predict.h.
11431         (graphite_finalize): Call tree_estimate_probability.
11432         * predict.c (predict_loops): Do not call scev_initialize and
11433         scev_finalize.
11434         (tree_estimate_probability_bb): New.
11435         (tree_estimate_probability): Do not initialize loops: move that
11436         code to the driver.  Call tree_estimate_probability_bb.
11437         (tree_estimate_probability_driver): New.
11438         (pass_profile): Use tree_estimate_probability_driver.
11439         * predict.h (tree_estimate_probability): Declared.
11440
11441 2009-08-12  Sebastian Pop  <sebastian.pop@amd.com>
11442
11443         * graphite-clast-to-gimple.c (gloog): Add time to TV_GRAPHITE_CODE_GEN.
11444         * graphite-dependences.c (graphite_legal_transform): Add time to
11445         TV_GRAPHITE_DATA_DEPS.
11446         (dependency_between_pbbs_p): Same.
11447         * timevar.def (TV_GRAPHITE_DATA_DEPS, TV_GRAPHITE_CODE_GEN): New.
11448
11449 2009-08-12  Andrey Belevantsev  <abel@ispras.ru>
11450
11451         PR rtl-optimization/41033
11452         * alias.c (nonoverlapping_component_refs_p): Punt when strict
11453         aliasing is disabled.
11454
11455 2009-08-11  Adam Nemet  <anemet@caviumnetworks.com>
11456
11457         * config/mips/predicates.md (qi_mask_operand, hi_mask_operand,
11458         si_mask_operand, and_load_operand, low_bitmask_operand,
11459         and_reg_operand, and_operand): New predicates.
11460         * config/mips/constraints.md (Yb, Yh, Yw, Yz): New constraints.
11461         * config/mips/mips.c (and_operands_ok): New function.
11462         * config/mips/mips-protos.h (and_operands_ok): Declare it.
11463         * config/mips/mips.md (move_type): Add ext_ins and logical.
11464         (type): Handle them.
11465         (and<mode>3): Use and_reg_operand as the second operand's predicate.
11466         (*and<mode>3): Add alternatives for lbu, lhu, lwu, <d>ext and
11467         shift_shift.  Remove commutative constraint modifier.
11468         (*and<mode>3_mips16): Add alternatives for lbu, lhu, lwu and
11469         shift_shift.
11470         (*clear_upper32_dext): Remove define_insn_and_split.
11471         (*clear_upper32): Turn this define_insn_and_split ...
11472         (splitter for ANDing register with 0xffff_ffff): .. into this.
11473
11474 2009-08-11  Adam Nemet  <anemet@caviumnetworks.com>
11475
11476         * combine.c (try_widen_shift_mode): Factor out code to check if an
11477         integer constant is a low-order bitmask from here ...
11478         * rtlanal.c (low_bitmask_len): ... to here.
11479         * rtl.h (low_bitmask_len): Declare.
11480
11481 2009-08-11  Uros Bizjak  <ubizjak@gmail.com>
11482
11483         PR target/8603
11484         * config/alpha/alpha.md (addsi3): Remove expander.
11485         (addsi3): Rename from *addsi3_internal insn pattern.
11486         (subsi3): Remove expander.
11487         (subsi3): Rename from *subsi3_internal insn pattern.
11488
11489 2009-08-11  Douglas B Rupp  <rupp@gnat.com>
11490
11491         * config/alpha/alpha.c (alpha_init_builtins): Nullify FWRITE and
11492         FWRITE_UNLOCKED.
11493
11494 2009-08-11  Vasiliy Fofanov  <fofanov@adacore.com>
11495             Eric Botcazou  <botcazou@adacore.com>
11496             Douglas B Rupp  <rupp@gnat.com>
11497
11498         * config/alpha/alpha.c (alpha_return_in_memory): On VMS, ensure
11499         that records that fit in 64 bits are returned by immediate value,
11500         as required by OpenVMS Calling Standard.
11501         (function_value): Adjust for above modification.
11502         (alpha_va_start) <TARGET_ABI_OPEN_VMS>: Use
11503         virtual_incoming_args_rtx as base object, not next_arg.
11504         * config/alpha/vms.h (DEFAULT_PCC_STRUCT_RETURN): Define as 0.
11505
11506 2009-08-11  Ulrich Weigand  <Ulrich.Weigand@de.ibm.com>
11507
11508         * reload.c (find_reloads_subreg_address): Check the original
11509         req_equiv_mem address to detect the case where an address is
11510         not valid in the outer mode.
11511
11512 2009-08-11  Richard Guenther  <rguenther@suse.de>
11513
11514         PR bootstrap/40788
11515         * builtins.c (gimplify_va_arg_expr): Do not call SET_EXPR_LOCATION.
11516
11517 2009-08-10  Douglas B Rupp  <rupp@gnat.com>
11518
11519         * config/alpha/vms.h (OPTIMIZATION_OPTIONS): Remove
11520         (OVERRIDE_OPTIONS): Incorporate removed OPTIMIZATION_OPTIONS.
11521
11522 2009-08-10  Olivier Hainque  <hainqueu@adacore.com>
11523             Douglas B Rupp  <rupp@gnat.com>
11524
11525         * config/alpha/alpha.c (alpha_sa_size): Force procedure type to
11526         PT_STACK when frame_pointer_needed on OpenVMS.
11527         (alpha_pv_save_size, alpha_using_fp): Remove.
11528         (alpha_vms_can_eliminate): New function. Support for CAN_ELIMINATE
11529         with proper processing for PT_NULL.
11530         (alpha_vms_initial_elimination_offset): New function. Support for
11531         INITIAL_ELIMINATION_OFFSET with proper processing for PT_NULL.
11532         (alpha_sa_size): Force procedure type to PT_STACK when
11533         frame_pointer_needed on OpenVMS.
11534         * config/alpha/alpha-protos.h (alpha_pv_save_size): Remove prototype.
11535         (alpha_using_fp): Likewise.
11536         (alpha_vms_can_eliminate): Add prototype.
11537         (alpha_vms_initial_elimination_offset): Likewise.
11538         * config/alpha/vms.h (CAN_ELIMINATE, INITIAL_ELIMINATION_OFFSET):
11539         Call alpha_vms_can_eliminate and alpha_vms_initial_elimination_offset.
11540
11541 2009-08-10  Eric Botcazou  <botcazou@adacore.com>
11542             Douglas B Rupp  <rupp@gnat.com>
11543
11544         * config/alpha/alpha.c (common_object_handler): New function.
11545         (vms_attribute_table): Declare a single attribute "common_object".
11546         (vms_output_aligned_decl_common): New global function.
11547         (SECTION_VMS_OVERLAY): Delete.
11548         (SECTION_VMS_GLOBAL): Likewise.
11549         (SECTION_VMS_INITIALIZE): Likewise.
11550         (vms_asm_named_section): Remove support for above flags.
11551         (vms_section_type_flags): Delete.
11552         (TARGET_SECTION_TYPE_FLAGS): Likewise.
11553         * config/alpha/alpha-protos.h (vms_output_aligned_decl_common): New.
11554         * config/alpha/vms.h (ASM_OUTPUT_ALIGNED_COMMON): Delete.
11555         (ASM_OUTPUT_ALIGNED_DECL_COMMON): New macro.
11556
11557 2009-08-10  SUGIOKA Toshinobu  <sugioka@itonet.co.jp>
11558
11559         PR target/41015
11560         * longlong.h [__sh__] (udiv_qrnnd): Add T register to clobber list.
11561         (sub_ddmmss): Likewise.
11562
11563 2009-08-10  Andreas Tobler  <a.tobler@schweiz.org>
11564
11565         PR bootstrap/41018
11566         * config/rs6000/freebsd.h: Define SVR4_ASM_SPEC. Adjust copyright
11567         year.
11568
11569 2009-08-10  Ulrich Weigand  <Ulrich.Weigand@de.ibm.com>
11570
11571         PR target/37053
11572         * reload1.c (reload_as_needed): Use cancel_changes to completely
11573         undo a failed replacement attempt.
11574
11575 2009-08-10  Richard Guenther  <rguenther@suse.de>
11576
11577         PR middle-end/41006
11578         * tree-ssa.c (useless_type_conversion_p_1): Fold into ...
11579         (useless_type_conversion_p): ... here.  Require pointer targets
11580         to be compatible.
11581
11582 2009-08-10  Dodji Seketeli  <dodji@redhat.com>
11583
11584         PR c++/40866
11585         * tree-inline.c (copy_statement_list): The resulting copy shouldn't
11586         loose the original type of the statement list.
11587
11588 2009-08-09  Douglas B Rupp  <rupp@gnat.com>
11589
11590         * config/alpha/alpha.c: Include libfuncs.h
11591         (avms_asm_output_extern): New function.
11592         (alpha_init_libfuncs): Init some decc libfuncs.
11593         * config/alpha/alpha-protos.h (avms_asm_output_external): Declare.
11594         * config/alpha/vms.h (ASM_OUTPUT_EXTERNAL): Define.
11595         (DO_CRTL_NAMES): Define.
11596         (LIB_SPEC): Remove.
11597         * config/alpha/vms64.h (POINTERS_EXTEND_UNSIGNED): Remove undef.
11598         (LONG_TYPE_SIZE): Define.
11599         (TARGET_OS_CPP_BUILTINS): Define with __LONG_POINTERS=1
11600         (SUBTARGET_SWITCHES): Define malloc64 switch.
11601         (TARGET_DEFAULT): Default MASK_MALLOC64 set.
11602         (MASK_RETURN_ADDR): Define.
11603         doc/invoke.texi (mmalloc64): Document switch.
11604
11605 2009-08-09  Olivier Hainque  <hainque@adacore.com>
11606             Douglas B Rupp  <rupp@gnat.com>
11607
11608         * config/alpha/alpha.c (struct machine_function): New flag for VMS,
11609         uses_condition_handler.
11610         (alpha_expand_builtin_establish_vms_condition_handler): New expander.
11611         (alpha_expand_builtin_revert_vms_condition_handler): New expander.
11612         (enum alpha_builtin): New ALPHA_BUILTIN_REVERT_VMS_CONDITION_HANDLER
11613         and ALPHA_BUILTIN_ESTABLISH_VMS_CONDITION_HANDLER values.
11614         (code_for_builtin): New insn codes for the new alpha_builtins.
11615         (alpha_init_builtins): Register the new functions as BUILT_IN_MD.
11616         (alpha_sa_size): Account for uses_condition_handler.
11617         (alpha_expand_prologue): Likewise.
11618         (alpha_start_function): Likewise.
11619         (alpha_expand_epilogue): Likewise.
11620         * config/alpha/alpha-protos.h: Prototype the new alpha.c builtin
11621         establish/revert expanders.
11622         * config/alpha/alpha.h (DWARF_FRAME_REGNUM): Define.
11623         * config/alpha/alpha.md (builtin_establish_vms_condition_handler):
11624         New expander, resorting to the alpha.c associated function.
11625         (builtin_revert_vms_condition_handler): Likewise.
11626         * config/alpha/vms-gcc_shell_handler.c: New file. Implements
11627         __gcc_shell_handler, the static VMS condition handler used as
11628         an indirection wrapper to the current dynamically established
11629         handler.
11630         * config/alpha/vms-unwind.h: Complete rewrite.
11631         * config/alpha/t-vms (LIB2FUNCS_EXTRA): Add vms-gcc_shell_handler.c
11632         * config/alpha/vms.h (MD_UNWIND_SUPPORT):
11633
11634 2009-08-09  Eric Botcazou  <botcazou@adacore.com>
11635             Douglas B Rupp  <rupp@gnat.com>
11636
11637         * config/alpha/alpha.c (alpha_links): Add 'target' field.
11638         (alpha_need_linkage): Handle aliases.  Return function symbol.
11639         (alpha_use_linkage): Rename 'linkage' argument to 'func'.
11640         Use ultimate alias target for the linkage name.
11641         * config/alpha/alpha.md (movmemdi): Use the symbol returned
11642         by alpha_need_linkage for the function symbol.
11643         (setmemdi): Likewise.
11644
11645 2009-08-09  Douglas B Rupp  <rupp@gnat.com>
11646
11647         * config/alpha/alpha.c (TARGET_ASM_UNALIGNED_*_OP): Define if on VMS.
11648         * config/alpha/vms.h (OBJECT_FORMAT_ELF): Define.
11649         (ASM_WEAKEN_LABEL): Define.
11650         (CRT_CALL_STATIC_FUNCTION): Define.
11651         (STARTFILE_SPEC): Add crtbegin.o crtbeginS.o.
11652         (ENDFILE_SPEC): Define.
11653         (INIT_SECTION_ASM_OP): Define.
11654         * config/alpha/vms-dwarf2eh.asm (__EH_FRAME_BEGIN__): Remove.
11655         * config/alpha/t-vms (EXTRA_PARTS): Add crtbegin.o crtbeginS.o
11656         crtend.o crtendS.o.
11657         (MULTILIB_OSDIRNAMES): Define.
11658         (shlib_version): Define.
11659         (SHLIB_EXT): Define.
11660         (SHLIB_OBJS): Define.
11661         (SHLIB_NAME): Define.
11662         (SHLIB_MULTILIB): Define.
11663         (SHLIB_INSTALL): Define.
11664         (SHLIB_SYMVEC): Define.
11665         (SHLIB_SYMVECX2): Define.
11666         (SHLIB_LINK): Define.
11667
11668 2009-08-09  Douglas B Rupp  <rupp@gnat.com>
11669
11670         * config/alpha/alpha.c (alpha_initialize_trampoline):
11671         Initialize VMS trampoline IAW ABI for bounded procedure calls.
11672         (alpha_start_function): Emit transfer address on nested functions
11673         for VMS trampoline call.
11674         * config/alpha/t-vms (LIB2FUNCS_EXTRA): Remove vms_tramp.asm
11675         since no longer used.
11676         * config/alpha/vms-tramp.asm: Remove.
11677         * config/alpha/vms.h (TRAMPOLINE_TEMPLATE): Leave undefined
11678         since now only data initialized at runtime.
11679
11680 2009-08-09  Douglas B Rupp  <rupp@gnat.com>
11681
11682         * config/alpha/vms.h (HANDLE_SYSV_PRAGMA): Define.
11683         (LINK_GCC_C_SEQUENCE_SPEC): Define.
11684         (MD_EXEC_PREFIX): Remove, no longer used.
11685         (MD_STARTFILE_PREFIX): Likewise.
11686         (INCLUDE_DEFAULTS): Likewise.
11687         * config/alpha/t-vms:
11688         (vms-dwarf2.o, vms-dwarf2eh.o): Use GCC_FOR_TARGET to compile.
11689
11690 2009-08-09  Richard Guenther  <rguenther@suse.de>
11691
11692         PR tree-optimization/41016
11693         * tree-ssa-ifcombine.c (get_name_for_bit_test): Fix tuplification bug.
11694         (operand_precision): Remove.
11695         (integral_operand_p): Likewise.
11696         (recognize_single_bit_test): Adjust.
11697
11698 2009-08-09  Richard Sandiford  <rdsandiford@googlemail.com>
11699
11700         * c-common.c (c_fully_fold_internal): Issue a warning if a binary
11701         operation overflows.  Likewise non-cast unary arithmetic.
11702         If one arm of a conditional expression is always taken,
11703         inhibit evaluation warnings for the other arm.  Likewise inhibit
11704         evaluation warnings for the second && or || operand if the first
11705         operand is enough to determine the result.
11706         * c-typeck.c (build_conditional_expr): Apply the same inhibition
11707         rules here.
11708         (build_binary_op): Prevent duplicate evaluation warnings.
11709
11710 2009-08-09  Richard Sandiford  <rdsandiford@googlemail.com>
11711
11712         * tree-out-of-ssa.c (insert_value_copy_on_edge): If the source
11713         and destination have different modes, Use promote_mode to
11714         determine the signedness of the conversion.  Assert that the
11715         promoted source mode matches the destination mode.  Don't pass
11716         the destination and destination mode to expand_expr if the source
11717         mode is different.  Simplify conversion logic.
11718
11719 2009-08-09  Ira Rosen  <irar@il.ibm.com>
11720
11721         PR tree-optimization/41008
11722         * tree-vect-loop.c (vect_is_simple_reduction): Get operands
11723         from condition only in case it's a comparison. Adjust checks.
11724
11725 2009-08-09  Bernd Schmidt  <bernd.schmidt@analog.com>
11726
11727         * tree-dfa.c (renumber_gimple_stmt_uids_in_blocks): New function.
11728         * tree-flow.h (renumber_gimple_stmt_uids_in_blocks): Declare it.
11729         * tree-ssa-loop-ivopts.c (comp_cost): Make COST an integer.
11730         (enum iv_position): Add IP_AFTER_USE and IP_BEFORE_USE.
11731         (dump_cand): Handle them.
11732         (struct iv_cand): New members COST_STEP and AINC_USE.
11733         (stmt_after_increment): Likewise.
11734         (stmt_after_inc_pos): Renamed from stmt_after_ip_original_pos.  All
11735         callers changed.  Use gimple_uid comparison instead of scanning.
11736         (add_candidate_1): When looking for identical candidates, take
11737         AINC_USE into account.  Set it for new candidates.
11738         (force_expr_to_var_cost): Cast target_spill_cost to int.
11739         (get_address_cost): New arguments STMT_AFTER_INC and MAY_AUTOINC.
11740         All callers changed.  Check for availability of autoinc addressing
11741         modes, both in general for a given mode, and in the specific use case.
11742         (get_computation_cost_at): New argument CAN_AUTOINC.  All callers
11743         changed.
11744         (get_computation_cost): Likewise.
11745         (autoinc_possible_for_pair, set_autoinc_for_original_candidates,
11746         add_autoinc_candidates): New static functions.
11747         (add_candidate): Call add_autoinc_candidates for candidates based on
11748         a USE_ADDRESS use.
11749         (find_iv_candidates): Call set_autoinc_for_original_candidates.
11750         (determine_use_iv_cost_address): If we have an autoinc candidate at
11751         the matching use, verify autoinc is possible and subtract the cost
11752         of the candidate's step from the cost.
11753         (determine_iv_cost): Record the cost of the increment in the COST_STEP
11754         member of the candidate.
11755         (tree_ssa_iv_optimize_loop): Swap the calls to determine_iv_costs and
11756         determine_use_iv_costs.  Call renumber_gimple_stmt_uids_in_blocks.
11757
11758 2009-08-09  Douglas B Rupp  <rupp@gnat.com>
11759
11760         * config.build (ia64-hp-*vms*): New target.
11761         (alpha64-dec-*vms*,alpha*-dec-*vms*): Fix for config/vms and unify
11762         with ia64-hp-*vms*.
11763         * config.gcc (ia64-hp-*vms*): New target.
11764         (alpha64-dec-*vms*,alpha*-dec-*vms*): Fix for config/vms and unify
11765         with ia64-hp-*vms*.
11766         * config.host (ia64-hp-*vms*): New target.
11767         (alpha64-dec-*vms*,alpha*-dec-*vms*): Fix for config/vms and unify
11768         with ia64-hp-*vms*.
11769
11770 2009-08-08  Richard Guenther  <rguenther@suse.de>
11771
11772         PR tree-optimization/40991
11773         * tree-ssa-pre.c (eliminate): Delay purging EH edges.
11774
11775 2009-08-08  Richard Sandiford  <rdsandiford@googlemail.com>
11776
11777         * combine.c (gen_lowpart_or_truncate): Exclude CONST_INTs from
11778         mode check.  Do truncations in an integer mode.
11779         (force_to_mode): Handle subregs for all mode types.  Only do
11780         arithmetic simplifications on integer modes.
11781
11782 2009-08-07  Richard Guenther  <rguenther@suse.de>
11783
11784         PR tree-optimization/40999
11785         * tree-ssa-ccp.c (get_symbol_constant_value): Handle CONST_DECLs.
11786         (maybe_fold_reference): Lookup constant initializers.
11787         (fold_gimple_assign): Likewise.
11788
11789 2009-08-07  Richard Guenther  <rguenther@suse.de>
11790
11791         * tree-ssa.c (useless_type_conversion_p_1): Only for types
11792         that require structural equality defer to the langhook.
11793
11794 2009-08-07  Martin Jambor  <mjambor@suse.cz>
11795
11796         * ipa-prop.h (enum jump_func_type): New value IPA_JF_ANCESTOR, changed
11797         comments.
11798         (struct ipa_pass_through_data): New type.
11799         (struct ipa_ancestor_jf_data): New type.
11800         (union jump_func_value): Removed field formal_id, added fields
11801         pass_through and ancestor.
11802         (struct ipa_param_call_note): Changed type of formal_id to int from
11803         unsigned.
11804         * ipa-prop.c (ipa_print_node_jump_functions): Print pass through with
11805         operations jump functions and ancestor jump functions.
11806         (compute_complex_pass_through): New function.
11807         (compute_scalar_jump_functions): Call compute_complex_pass_through,
11808         reflect changes in the jump function strucutre.
11809         (update_jump_functions_after_inlining): Ignore complex pass-through
11810         and ancestor jump functions.
11811         * ipa-cp.c (ipcp_lattice_from_jfunc): Added support for ancestor and
11812         polynomial pass-through with operation jump functions.
11813
11814 2009-08-07  Jakub Jelinek  <jakub@redhat.com>
11815
11816         * dwarf2out.c (output_fde): When doing hot/cold partitioning, use
11817         fde->dw_fde_begin as begin label instead of hot/cold label.
11818         Use LLSDAC label instead of LLSDA for second section lsda.
11819         (dwarf2out_do_cfi_startproc): Add SECOND argument.  Use LLSDAC
11820         label instead of LLSDA if it is true.
11821         (dwarf2out_begin_prologue, dwarf2out_switch_text_section): Adjust
11822         callers.
11823         * except.c (add_call_site, dw2_size_of_call_site_table): Add
11824         SECTION argument.  Use it as index into crtl->eh.call_site_record
11825         array.
11826         (dw2_output_call_site_table): Likewise.  Add CS_FORMAT argument,
11827         use it to determine how to print table entries instead of using
11828         #ifdef HAVE_AS_LEB128.  For SECTION > 0 use hot resp. cold
11829         label instead of normal begin label as base.
11830         (sjlj_assign_call_site_values): Adjust add_call_site caller.
11831         (convert_to_eh_region_ranges): When doing hot/cold partitioning,
11832         ensure no EH range spans between sections and that landing pads
11833         are always in the corresponding section.
11834         (sjlj_size_of_call_site_table, sjlj_output_call_site_table): Adjust
11835         for crtl->eh.call_site_record being an array rather than scalar.
11836         (output_one_function_exception_table): New function, copied
11837         from output_function_exception_table.  Adjust
11838         dw2_size_of_call_site_table, dw2_output_call_site_table
11839         callers.  For SECOND section use *C suffixed labels.
11840         (output_function_exception_table): Call
11841         output_one_function_exception_table and, when doing hot/cold
11842         partitioning, also another time for the second section.
11843         * opts.c: Include except.h.
11844         (decode_options): Allow -freorder-blocks-and-partition with
11845         exceptions, unless SJLJ or TARGET_UNWIND_INFO.
11846         * Makefile.in (opts.o): Depend on $(EXCEPT_H).
11847         * function.h (struct rtl_eh): Change call_site_record from
11848         scalar into array of 2 elements.
11849
11850 2009-08-07  Martin Jambor  <mjambor@suse.cz>
11851
11852         * ipa-prop.c (count_formal_params_1): New function.
11853         (ipa_get_vector_of_formal_parms): New function.
11854         (get_vector_of_formal_parm_types): New function.
11855         (ipa_modify_formal_parameters): New function.
11856         (ipa_modify_call_arguments): New function.
11857         (index_in_adjustments_multiple_times_p): New function.
11858         (ipa_combine_adjustments): New function.
11859         (ipa_dump_param_adjustments): New function.
11860         * ipa-prop.h (struct ipa_parm_adjustment): New type.
11861         (ipa_get_vector_of_formal_parms): Declare.
11862         (ipa_modify_formal_parameters): Declare.
11863         (ipa_modify_call_arguments): Declare.
11864         (ipa_combine_adjustments): Declare.
11865         (ipa_dump_param_adjustments): Declare.
11866         (build_ref_for_offset): Declare.
11867         * Makefile.in (tree-sra.o): Add ipa-prop.h to dependencies.
11868         * tree-sra.c: Include ipa-prop.c.
11869         (build_ref_for_offset): Make public.
11870
11871 2009-08-06  Neil Vachharajani  <nvachhar@gmail.com>
11872
11873         * value-prof.c (init_pid_map): Replace xmalloc with XCNEWVEC.
11874
11875 2009-08-06  Thomas Schwinge  <tschwinge@gnu.org>
11876
11877         * gcc/doc/extend.texi (__builtin_extract_return_address)
11878         (__builtin_frob_return_address): Document.
11879
11880 2009-08-06  Paul Brook  <paul@codesourcery.com>
11881
11882         * config/arm/lib1funcs.asm (ARM_DIV_BODY): Add Thumb-2 implementation.
11883         (udivsi3, aeabi_uidivmod, divsi3, aeabi_idivmod): Only use Thumb-1
11884         implementation on ARMv6-M.
11885
11886 2009-08-06  Richard Earnshaw  <rearnsha@arm.com>
11887
11888         * doc/extend.texi (pcs): Document new attribute for ARM.
11889
11890 2009-08-06  Richard Earnshaw  <rearnsha@arm.com>
11891
11892         * arm.c (pcs_attribute_args): Comment out unsupported attribute
11893         variants.
11894
11895 2009-08-06  Richard Earnshaw  <rearnsha@arm.com>
11896
11897         * arm.c (arm_handle_pcs_attribute): Pass the entire name object to
11898         warning ().
11899
11900 2009-08-06  Richard Earnshaw  <rearnsha@arm.com>
11901
11902         * arm.c (arm_handle_pcs_attribute): Use %qE in warning.
11903
11904 2009-08-06  Richard Earnshaw  <rearnsha@arm.com>
11905
11906         Merge ARM/hard_vfp_branch to trunk.
11907
11908         2009-08-04  Richard Earnshaw  <rearnsha@arm.com>
11909
11910         * arm.c (libcall_eq): New function.
11911         (libcall_hash): New function.
11912         (add_libcall): New function.
11913         (arm_libcall_uses_aapcs_base): New function.
11914         (arm_libcall_value): Use arm_libcall_uses_aapcs_base to check for
11915         libcalls using the base PCS.
11916         (arm_init_cumulative_args): Likewise.
11917
11918         2009-07-20  Joseph Myers  <joseph@codesourcery.com>
11919
11920         * config/arm/arm.c (arm_libcall_value, arm_init_cumulative_args):
11921         Use base ABI for conversion libfuncs between HFmode and SFmode.
11922
11923         2009-05-12  Joseph Myers  <joseph@codesourcery.com>
11924
11925         * config/arm/arm.c (aapcs_vfp_sub_candidate): Use V2SImode and
11926         V4SImode as representatives of all 64-bit and 128-bit vector
11927         types.  Allow vector types without vector modes.
11928         (aapcs_vfp_is_call_or_return_candidate): Handle vector types
11929         without vector modes like BLKmode.
11930         (aapcs_vfp_allocate): Handle TImode for non-TARGET_NEON like
11931         BLKmode.  Avoid unsupported vector modes or TImode moves for
11932         non-TARGET_NEON.
11933         (aapcs_vfp_allocate_return_reg): Likewise.
11934         (arm_vector_mode_supported_p): Only support V2SImode, V4HImode and
11935         V8QImode if TARGET_NEON || TARGET_IWMMXT.
11936
11937         2009-05-12  Joseph Myers  <joseph@codesourcery.com>
11938
11939         * config/arm/arm.c (arm_handle_pcs_attribute): New.
11940         (arm_get_pcs_model): Pass attribute arguments to
11941         arm_pcs_from_attribute.
11942         (arm_init_cumulative_args): Use base AAPCS for conversions from
11943         floating-point types to DImode.
11944         (arm_attribute_table): Add pcs attribute.
11945         (arm_handle_pcs_attribute): New.
11946         * config/arm/bpabi.h (DECLARE_LIBRARY_RENAMES): When renaming
11947         conversions from floating-point types to DImode, also declare them
11948         to use base AAPCS and declare functions they call to use base
11949         AAPCS and their RTABI names.
11950
11951         2009-05-12  Joseph Myers  <joseph@codesourcery.com>
11952
11953         * doc/invoke.texi (-mfloat-abi=@var{name}): Remove statement about
11954         -mfloat-abi=hard not being supported for VFP.
11955
11956         2009-05-11  Kazu Hirata  <kazu@codesourcery.com>
11957
11958         * config/sparc/sparc.c (sparc_emit_float_lib_cmp): Pass a libcall
11959         SYMBOL_REF to hard_libcall_value.
11960
11961         2009-03-05  Joseph Myers  <joseph@codesourcery.com>
11962             Richard Earnshaw  <rearnsha@arm.com>
11963
11964         * config/arm/arm.c (aapcs_layout_arg): Once a co-processor argument
11965         has been put on the stack, all remaining co-processory arguments for
11966         that co-processor also go on the stack.
11967
11968         2009-03-05  Joseph Myers  <joseph@codesourcery.com>
11969
11970         * config/arm/arm.c (arm_return_in_memory): Handle returning
11971         vectors of suitable size in registers also for AAPCS case.
11972
11973         2009-01-13  Richard Earnshaw <rearnsha@arm.com>
11974
11975         * doc/tm.texi (TARGET_LIBCALL_VALUE): Add missing end statement.
11976
11977         2008-12-09  Richard Earnshaw <rearnsha@arm.com>
11978
11979         ARM Hard-VFP calling convention
11980         * target-def.h (TARGET_LIBCALL_VALUE): New hook.
11981         * target.h (gcc_target): Add libcall_value to table of call hooks.
11982         * targhooks.h (default_libcall_value): Default implementation.
11983         * targhooks.c (default_libcall_value): Likewise.
11984         * doc/tm.texi (TARGET_LIBCALL_VALUE): Document it.
11985         * optabs.c (expand_unop): Use it.
11986         * expr.h (hard_libcall_value): Pass the function RTX through.
11987         * calls.c (emit_library_call_value_1): Update call to
11988         hard_libcall_value.
11989         * explow.c (hard_libcall_value): Use new target hook.
11990         * config/arm/arm.c: Include cgraph.h
11991         (TARGET_FUNCTION_VALUE): Override default hook.
11992         (arm_pcs_default): New variable.
11993         (arm_override_options): Don't fault hard calling convention with VFP.
11994         Add support for AAPCS variants.
11995         (arm_function_value): Make static.  Handle AAPCS variants.
11996         (arm_libcall_value): New function.
11997         (arm_apply_result_size): Handle VFP registers in results.
11998         (arm_return_in_memory): Rework all AAPCS variants; handle hard-vfp
11999         conventions.
12000         (pcs_attribute_args): New variable.
12001         (arm_pcs_from_attribute): New function.
12002         (arm_get_pcs_model): New function.
12003         (aapcs_vfp_cum_init): New function.
12004         (aapcs_vfp_sub_candidate): New function.
12005         (aapcs_vfp_is_return_candidate): New function.
12006         (aapcs_vfp_is_call_candidate): New function.
12007         (aapcs_vfp_allocate): New function.
12008         (aapcs_vfp_allocate_return_reg): New function.
12009         (aapcs_vfp_advance): New function.
12010         (aapcs_cp_arg_layout): New variable.
12011         (aapcs_select_call_coproc): New function.
12012         (aapcs_select_return_coproc): New function.
12013         (aapcs_allocate_return_reg): New function.
12014         (aapcs_libcall_value): New function.
12015         (aapcs_layout_arg): New function.
12016         (arm_init_cumulative_args): Initialize AAPCS args data.
12017         (arm_function_arg): Handle AAPCS variants using new interface.
12018         (arm_arg_parital_bytes): Likewise.
12019         (arm_function_arg_advance): New function.
12020         (arm_function_ok_for_sibcall): Ensure that sibling calls agree on
12021         calling conventions.
12022         (arm_setup_incoming_varargs): Handle new AAPCS args data.
12023         * arm.h (NUM_VFP_ARG_REGS): Define.
12024         (LIBCALL_VALUE): Update.
12025         (FUNCTION_VALUE): Delete.
12026         (FUNCTION_VALUE_REGNO_P): Add VFP regs.
12027         (arm_pcs): New enum.
12028         (CUMULATIVE_ARGS): New data to support AAPCS argument marshalling.
12029         (FUNCTION_ARG_ADVANCE): Call arm_function_arg_advance.
12030         (FUNCTION_ARG_REGNO_P): Add VFP regs.
12031         * arm-protos.h (arm_function_arg_advance): Add.
12032         (aapcs_libcall_value): Add.
12033         (arm_function_value): Delete.
12034
12035 2009-08-06  Uros Bizjak  <ubizjak@gmail.com>
12036             H.J. Lu  <hongjiu.lu@intel.com>
12037
12038         PR target/40957
12039         * config/i386/i386.c (standard_sse_mode_p): Remove.
12040         (standard_sse_constant_p): Return 2 for integer mode
12041         vector_all_ones_operand when SSE2 is enabled.
12042         (standard_sse_constant_opcode)<case 2>: Always return [v]pcmpeqd.
12043         (ix86_expand_vector_move): Do not check for negative values from
12044         standard_sse_constant_p.
12045
12046 2009-08-06  Richard Guenther  <rguenther@suse.de>
12047
12048         * tree-ssa.c (useless_type_conversion_p_1): Make function and
12049         array type comparisons frontend independent.
12050         * Makefile.in (tree-ssa.o): Add $(TARGET_H) dependency.
12051         * tree-ssa-sccvn.c (copy_reference_ops_from_ref): Always fill
12052         out array reference lower bound and element size operands.
12053         (ao_ref_init_from_vn_reference): Properly compute the offset
12054         for ARRAY_RANGE_REF.
12055         (vn_reference_fold_indirect): Fill out array reference lower
12056         bound and element size operands.
12057         * tree-ssa-pre.c (phi_translate_1): Fail if we have to translate
12058         a non gimple valued reference operand which can happen for
12059         array reference lower bound or element size.
12060         (create_component_ref_by_pieces_1): Properly generate the
12061         element size operand for array references.
12062
12063 2009-08-06  Richard Guenther  <rguenther@suse.de>
12064
12065         PR tree-optimization/40964
12066         * tree.c (iterative_hash_host_wide_int): Export.
12067         * tree.h (iterative_hash_host_wide_int): Declare.
12068         * tree-ssa-structalias.c (heapvar_map): New struct.
12069         (heapvar_map_eq): New function.
12070         (heapvar_map_hash): Likewise.
12071         (heapvar_lookup): Adjust.
12072         (heapvar_insert): Likewise.
12073         (make_constraint_from_heapvar): Allow multiple heap variables
12074         per decl at different offsets.
12075         (init_alias_heapvars): Adjust.
12076
12077 2009-08-04  David Daney  <ddaney@caviumnetworks.com>
12078
12079         * config/mips/mips.h (TARGET_SYNC_AFTER_SC): New macro.
12080         * mips_output_sync_loop (mips_output_sync_loop): Only emit
12081         trailing sync if TARGET_SYNC_AFTER_SC.
12082
12083 2009-08-05  David Daney  <ddaney@caviumnetworks.com>
12084
12085         * gcc/config/mips/sync.md (sync_compare_and_swap<mode>,
12086         compare_and_swap_12, sync_add<mode>, sync_<optab>_12,
12087         sync_old_<optab>_12, sync_new_<optab>_12, sync_nand_12,
12088         sync_old_nand_12, sync_new_nand_12, sync_sub<mode>,
12089         sync_old_add<mode>, sync_old_sub<mode>, sync_new_add<mode>,
12090         sync_new_sub<mode>, sync_<optab><mode>, sync_old_<optab><mode>,
12091         sync_new_<optab><mode>, sync_nand<mode>, sync_old_nand<mode>,
12092         sync_new_nand<mode>, sync_lock_test_and_set<mode>,
12093         test_and_set_12): Rewrite calls to mips_output_sync_loop.
12094         * gcc/config/mips/mips-protos.h (mips_output_sync_loop): Make
12095         the prototype declaration match the definition.
12096         * gcc/config/mips/mips.c (mips_output_sync_loop):  Emit sync
12097         instructions explicitly.  Add barrier_before and operands
12098         parameters.
12099         * gcc/config/mips/mips.h (MIPS_COMPARE_AND_SWAP,
12100         MIPS_COMPARE_AND_SWAP_12, MIPS_SYNC_OP, MIPS_SYNC_OP_12,
12101         MIPS_SYNC_OLD_OP_12, MIPS_SYNC_NEW_OP_12, MIPS_SYNC_OLD_OP,
12102         MIPS_SYNC_NEW_OP, MIPS_SYNC_NAND, MIPS_SYNC_OLD_NAND,
12103         MIPS_SYNC_NEW_NAND, MIPS_SYNC_EXCHANGE,
12104         MIPS_SYNC_EXCHANGE_12): Remove sync instructions.
12105
12106 2009-08-05  Andrew Pinski  <pinskia@gmail.com>
12107
12108         * tree-ssa-alias.c: Fix intervals to use [) syntax.
12109
12110 2009-08-05  Uros Bizjak  <ubizjak@gmail.com>
12111             Mikulas Patocka  <mikulas@artax.karlin.mff.cuni.cz>
12112
12113         PR target/40906
12114         * config/i386/i386.c (ix86_split_long_move): Fix push of multi-part
12115         source operand.
12116
12117 2009-08-05  Jakub Jelinek  <jakub@redhat.com>
12118
12119         PR rtl-optimization/40924
12120         * dse.c (canon_address): Before calling cselib_expand_value_rtx
12121         make sure canon_rtx (mem_address) isn't simpler than
12122         canon_rtx (expanded_mem_address).
12123
12124 2009-08-05  Li Feng  <nemokingdom@gmail.com>
12125
12126         * graphite-sese-to-poly.c (build_pbb_drs): Remove build alias set
12127         for each poly_bb_p.
12128         (build_scop_drs): Build alias set for each SCoP.
12129
12130 2009-08-04  Sandra Loosemore  <sandra@codesourcery.com>
12131
12132         * doc/invoke.texi (MIPS Options): Document new 1004K -march options.
12133         * config/mips/mips.c (mips_cpu_info_table): Add 1004K cores.
12134         * config/mips/mips.h (MIPS_ISA_LEVEL_SPEC): Add pattern for 1004K.
12135         (MIPS_ARCH_FLOAT_SPEC): Likewise.
12136         (BASE_DRIVER_SELF_SPECS): Likewise.
12137
12138 2009-08-04  Andrew Pinski  <pinskia@gmail.com>
12139
12140         * tree-ssa-alias.c: Fix some comment typos.
12141
12142 2009-08-04  Kaz Kojima  <kkojima@gcc.gnu.org>
12143
12144         * config/sh/linux-atomic.asm (ATOMIC_BOOL_COMPARE_AND_SWAP,
12145         ATOMIC_OP_AND_FETCH, ATOMIC_COMBOP_AND_FETCH): Define.
12146
12147 2009-08-03  Janis Johnson  <janis187@us.ibm.com>
12148
12149         PR c/39902
12150         * simplify-rtx.c (simplify_binary_operation_1): Disable
12151         simplifications for decimal float operations.
12152
12153 2009-08-03  Jakub Jelinek  <jakub@redhat.com>
12154
12155         PR middle-end/40943
12156         * tree-ssa.c (warn_uninitialized_var): Even on LHS warn for
12157         operand of INDIRECT_REF.
12158
12159 2009-08-03  Uros Bizjak  <ubizjak@gmail.com>
12160
12161         * config/alpha/alpha.c (alpha_legitimate_constant_p): Reject CONST
12162         constants referencing TLS symbols.
12163
12164 2009-08-03  SUGIOKA Toshinobu  <sugioka@itonet.co.jp>
12165
12166         * config/sh/linux-atomic.asm (ATOMIC_COMPARE_AND_SWAP): Rename
12167         __sync_compare_and_swap_* to __sync_val_compare_and_swap_*.
12168
12169 2009-08-03  Richard Guenther  <rguenther@suse.de>
12170
12171         * tree.c (make_vector_type): Build a main variant first,
12172         get the canonical one and then build the variant.
12173         * tree-ssa.c (useless_type_conversion_p_1): Handle
12174         fixed-point types.
12175         (useless_type_conversion_p): Conversions to pointers to
12176         incomplete record types are useless.
12177
12178 2009-08-03  Richard Guenther  <rguenther@suse.de>
12179
12180         * tree-cfg.c (pass_warn_unused_result): Mark name that no dump
12181         file will be created.
12182         * omp-low.c (pass_diagnose_omp_blocks): Likewise.
12183         * toplev.c (compile_file): Adjust comment.
12184
12185 2009-08-03  Kaz Kojima  <kkojima@gcc.gnu.org>
12186
12187         * config/sh/sh-protos.h (sh_promote_function_mode): Remove.
12188         * config/sh/sh.c (sh_promote_function_mode): Wrap long lines.
12189         (TARGET_PROMOTE_FUNCTION_MODE): Define.
12190         (TARGET_PROMOTE_FUNCTION_ARGS): Remove.
12191         (sh_promote_function_mode): Fix typo.
12192
12193 2009-08-03  Andreas Krebbel  <krebbel1@de.ibm.com>
12194
12195         * explow.c (promote_mode): Mark TYPE and PUNSIGNEDP as possibly unused.
12196
12197 2009-08-02  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
12198
12199         * pa.c (pa_promote_function_mode): Remove ATTRIBUTE_UNUSED from
12200         declaration arguments.
12201
12202 2009-08-02  Uros Bizjak  <ubizjak@gmail.com>
12203
12204         * config/i386/i386.c (ix86_expand_fp_compare): Use const0_rtx instead
12205         of GEN_INT (0x00) and const1_rtx instead of GEN_INT (0x01).
12206         (ix86_split_ashl): Ditto.
12207         (ix86_expand_vector_init_one_nonzero): Ditto.
12208         (ix86_expand_vector_set): Ditto.
12209         (ix86_expand_reduc_v4sf): Ditto.
12210
12211 2009-08-02  Paolo Bonzini  <bonzini@gnu.org>
12212
12213         * explow.c (promote_function_mode): Remove assert.
12214         * config/sh/sh.c (sh_promote_function_mode): Declare.
12215
12216 2009-08-01  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
12217
12218         * config/pa/pa.c (pa_promote_function_mode): Declare.
12219         Change to static.  Fix promote_mode call.
12220
12221         * gthr-dce.h (CONST_CAST2): Define if not defined.
12222         (__gthread_setspecific): Use CONST_CAST2 to fix warning.
12223
12224         * config.gcc (hppa[12]*-*-hpux10*): Add stdint support.
12225
12226 2009-08-01  Paolo Bonzini  <bonzini@gnu.org>
12227
12228         * expr.c (store_constructor): Use promote_decl_mode.  Remove
12229         now write-only variable unsignedp.
12230         (expand_expr_real_1): Use promote_decl_mode.
12231         * expr.h (promote_function_mode, promote_decl_mode): New.
12232         (promote_mode): Remove last argument.
12233         * function.c (assign_temp): Drop last argument of promote_mode.
12234         (assign_parm_find_data_types): Use promote_function_mode.
12235         (assign_parm_setup_reg): Likewise.
12236         (expand_function_end): Use promote_function_mode.
12237         * calls.c (initialize_argument_information): Use promote_function_mode.
12238         (precompute_arguments): Use promote_mode instead of checking if
12239         only PROMOTE_FUNCTION_MODE is defined.
12240         (expand_call): When making sibcall decisions, use promote_function_mode.
12241         Below, remove an if for targetm.calls.promote_function_return and
12242         and use promote_function_mode.
12243         (emit_library_call_value_1): Use promote_function_mode, fix bug
12244         where promote_mode was passed FOR_CALL == 0 for a return value in an
12245         assertion.
12246         * cfgexpand.c (expand_one_register_var): Use promote_decl_mode.
12247         * explow.c (promote_function_mode, promote_decl_mode): New.
12248         (promote_mode): Keep only the FOR_CALL == 0 case.
12249         * combine.c (setup_incoming_promotion): Remove test of
12250         promote_function_args.  Use promote_function_mode.
12251         * stmt.c (expand_value_return): Use promote_decl_mode.
12252         (expand_decl): Use promote_decl_mode.
12253
12254         * expr.c (store_constructor): Use promote_decl_mode.  Remove
12255         now write-only variable unsignedp.
12256         (expand_expr_real_1): Use promote_decl_mode.
12257         * expr.h (promote_function_mode, promote_decl_mode): New.
12258         (promote_mode): Remove last argument.
12259         * function.c (assign_temp): Drop last argument of promote_mode.
12260         (assign_parm_find_data_types): Use promote_function_mode.
12261         (assign_parm_setup_reg): Likewise.
12262         (expand_function_end): Use promote_function_mode.
12263         * calls.c (initialize_argument_information): Use promote_function_mode.
12264         (precompute_arguments): Use promote_mode instead of checking if
12265         only PROMOTE_FUNCTION_MODE is defined.
12266         (expand_call): When making sibcall decisions, use promote_function_mode.
12267         Below, remove an if for targetm.calls.promote_function_return and
12268         and use promote_function_mode.
12269         (emit_library_call_value_1): Use promote_function_mode, fix bug
12270         where promote_mode was passed FOR_CALL == 0 for a return value in an
12271         assertion.
12272         * cfgexpand.c (expand_one_register_var): Use promote_decl_mode.
12273         * explow.c (promote_function_mode, promote_decl_mode): New.
12274         (promote_mode): Keep only the FOR_CALL == 0 case.
12275         * combine.c (setup_incoming_promotion): Remove test of
12276         promote_function_args.  Use promote_function_mode.
12277         * stmt.c (expand_value_return): Use promote_decl_mode.
12278         (expand_decl): Use promote_decl_mode.
12279
12280         * explow.c (promote_function_mode): Just call the target hook.
12281         * targhooks.c (default_promote_function_mode,
12282         default_promote_function_mode_always_promote): New.
12283         * targhooks.h (default_promote_function_mode,
12284         default_promote_function_mode_always_promote): Declare.
12285         * target.h (promote_function_args, promote_function_return): Remove.
12286         (promote_function_mode): New.
12287         * target-def.h (TARGET_PROMOTE_FUNCTION_ARGS,
12288         TARGET_PROMOTE_FUNCTION_RETURN): Remove.
12289         (TARGET_PROMOTE_FUNCTION_MODE): New.
12290         (TARGET_CALLS): Adjust.
12291         * system.h (TARGET_PROMOTE_FUNCTION_ARGS,
12292         TARGET_PROMOTE_FUNCTION_RETURN, PROMOTE_FUNCTION_MODE): Poison.
12293
12294         * config/s390/s390.h (PROMOTE_FUNCTION_MODE): Move...
12295         * config/s390/s390.c (s390_promote_function_mode): ... here,
12296         with pointer handling.
12297         (TARGET_PROMOTE_FUNCTION_MODE): Define.
12298         (TARGET_PROMOTE_FUNCTION_ARGS, TARGET_PROMOTE_FUNCTION_RETURN): Remove.
12299
12300         * config/sparc/sparc.h (PROMOTE_FUNCTION_MODE): Move...
12301         * config/sparc/sparc.c (sparc_promote_function_mode): ... here,
12302         with pointer handling.
12303         (TARGET_PROMOTE_FUNCTION_MODE): Define.
12304         (TARGET_PROMOTE_FUNCTION_ARGS, TARGET_PROMOTE_FUNCTION_RETURN): Remove.
12305
12306         * config/sh/sh-protos.h (sh_promote_function_mode): New.
12307         * config/sh/sh.c (sh_promote_function_mode): New.
12308         (TARGET_PROMOTE_FUNCTION_MODE): Define.
12309         (TARGET_PROMOTE_FUNCTION_ARGS, TARGET_PROMOTE_FUNCTION_RETURN): Remove.
12310
12311         * config/cris/cris.h (PROMOTE_FUNCTION_MODE): Move...
12312         * config/cris/cris.c (cris_promote_function_mode): ... here.
12313         (TARGET_PROMOTE_FUNCTION_MODE): Define.
12314         (TARGET_PROMOTE_FUNCTION_ARGS): Remove.
12315
12316         * config/mmix/mmix.h (PROMOTE_FUNCTION_MODE): Move...
12317         * config/mmix/mmix.c (mmix_promote_function_mode): ... here.
12318         (TARGET_PROMOTE_FUNCTION_MODE): Define.
12319         (TARGET_PROMOTE_FUNCTION_ARGS): Remove.
12320
12321         * config/arm/arm.h (PROMOTE_FUNCTION_MODE): Move...
12322         * config/arm/arm.c (arm_promote_function_mode): ... here, without
12323         complex type handling.
12324         (TARGET_PROMOTE_FUNCTION_MODE): Define.
12325         (TARGET_PROMOTE_FUNCTION_ARGS, TARGET_PROMOTE_FUNCTION_RETURN): Remove.
12326
12327         * config/pa/pa.c (pa_promote_function_mode): New.
12328         (TARGET_PROMOTE_FUNCTION_MODE): Define.
12329         (TARGET_PROMOTE_FUNCTION_RETURN): Remove.
12330
12331         * config/alpha/alpha.c (TARGET_PROMOTE_FUNCTION_ARGS,
12332         TARGET_PROMOTE_FUNCTION_RETURN): Remove.
12333         (TARGET_PROMOTE_FUNCTION_MODE): Define equivalently.
12334         * config/xtensa/xtensa.c: Likewise.
12335         * config/stormy16/stormy16.c: Likewise.
12336         * config/iq2000/iq2000.c: Likewise.
12337         * config/rs6000/rs6000.c: Likewise.
12338         * config/picochip/picochip.c: Likewise.
12339         * config/arc/arc.c: Likewise.
12340         * config/mcore/mcore.c: Likewise.
12341         * config/score/score.c: Likewise.
12342         * config/mips/mips.c: Likewise.
12343         * config/bfin/bfin.c: Likewise.
12344         * config/ia64/ia64.c: Likewise (disabled though).
12345
12346         * config/frv/frv.h: Remove pointless remark.
12347
12348         * doc/tm.texi (PROMOTE_FUNCTION_MODE,
12349         TARGET_PROMOTE_FUNCTION_ARGS,
12350         TARGET_PROMOTE_FUNCTION_RETURN): Consolidate into...
12351         (TARGET_PROMOTE_FUNCTION_MODE): ... this.
12352
12353 2009-08-01  Sebastian Pop  <sebastian.pop@amd.com>
12354
12355         * doc/invoke.texi (-fgraphite-force-parallel): Renamed
12356         -floop-parallelize-all.
12357         * toplev.c (process_options): Rename flag_graphite_force_parallel to
12358         flag_loop_parallelize_all.
12359         * tree-ssa-loop.c (gate_graphite_transforms): Same.
12360         * graphite.c (graphite_transform_loops): Same.
12361         * common.opt: Same.
12362         * graphite-poly.c (apply_poly_transforms): Same.
12363
12364 2009-07-31  Richard Earnshaw  <rearnsha@arm.com>
12365
12366         PR tree-optimization/40914
12367         * ipa-prop.c (ipa_get_ptr_load_param): New argument use_delta,
12368         if set, then check the delta field of the PMF record.
12369         (ipa_get_stmt_member_ptr_load_param): Propagate new param use_delta.
12370         (ipa_analyze_call_uses): Handle machines where the vbit for a PMF
12371         call is stored in the delta.
12372
12373 2009-07-31  Adam Nemet  <anemet@caviumnetworks.com>
12374
12375         * config/mips/mips.md (*clear_upper32_dext): New pattern.
12376
12377 2009-07-31  Uros Bizjak  <ubizjak@gmail.com>
12378
12379         * config/i386/bsd.h (ASM_BYTE): New define.
12380         * config/i386/darwin.h (ASM_BYTE): Rename from ASM_BYTE_OP.
12381         * config/i386/att.h (ASM_BYTE): New define. Use ASM_BYTE instead of
12382         .byte.  Use fputs or putc instead of fprintf where appropriate.
12383         * config/i386/i386-interix.h: Use ASM_BYTE instead of .byte.  Use
12384         fputs or putc instead of fprintf where appropriate.
12385         * config/i386/i386elf.h: Ditto.
12386         * config/i386/sysv4.h: Ditto.
12387
12388         * config/i386/i386.c (TARGET_ASM_BYTE_OP): New define.
12389         * config/i386/i386.md (x86_sahf_1): Use ASM_BYTE instead of .byte.
12390         (*tls_global_dynamic_64): Ditto.
12391
12392 2009-07-31  Christian Bruel  <christian.bruel@st.com>
12393
12394         * gcc/config.gcc (sh*-*-elf): test with_libgloss.
12395
12396 2009-07-31  Ramana Radhakrishnan  <ramana.radhakrishnan@arm.com>
12397
12398         * config/arm/arm.c (arm_arm_address_cost): Fix typo.
12399         Remove dead code for MINUS.
12400
12401 2009-07-31  Anthony Green  <green@moxielogic.com>
12402
12403         * config/moxie/moxie.c (moxie_expand_prologue): Use $r5 instead of
12404         $r12 in prologue.
12405         (moxie_expand_epilogue): Ditto for epilogue.
12406         (moxie_setup_incoming_varargs): ABI change.  Use 5 registers for
12407         incoming arguments.
12408         (moxie_function_arg): Ditto.
12409         (moxie_pass_by_reference): Ditto.
12410         (moxie_arg_partial_bytes): Ditto.
12411         * config/moxie/moxie.h (CALL_USED_REGISTERS): Ditto.
12412         (FUNCTION_ARG_ADVANCE) Ditto.
12413         (REG_PARM_STACK_SPACE) Ditto.
12414         (FUNCTION_ARG_REGNO_P) Dito.
12415
12416         * config.gcc: Add moxie linux config support.
12417         * gcc/config/moxie/uclinux.h: New file.
12418
12419 2009-07-31  DJ Delorie  <dj@redhat.com>
12420
12421         * config/sh/sh.md (UNSPECV_SP_SWITCH_B): New.
12422         (UNSPECV_SP_SWITCH_E): New.
12423         (sp_switch_1): Change to an unspec.
12424         (sp_switch_2): Change to an unspec.  Don't use post-inc when we
12425         replace $r15.
12426         * config/sh/sh.c (sh_expand_prologue): Use the constant pool to
12427         reference the new stack's address
12428
12429 2009-07-30  Sebastian Pop  <sebastian.pop@amd.com>
12430
12431         * Makefile.in (OBJS-common): Added dependence on graphite-blocking.o,
12432         graphite-clast-to-gimple.o, graphite-dependences.o,
12433         graphite-interchange.o, graphite-poly.o, graphite-ppl.o,
12434         graphite-scop-detection.o, graphite-sese-to-poly.o, and sese.o.
12435         (graphite-blocking.o,
12436         graphite-clast-to-gimple.o, graphite-dependences.o,
12437         graphite-interchange.o, graphite-poly.o, graphite-ppl.o,
12438         graphite-scop-detection.o, graphite-sese-to-poly.o, and sese.o): New.
12439         * cfgloop.c (alloc_loop): Set loop->can_be_parallel to false.
12440         * cfgloop.h (struct loop): Add can_be_parallel field.
12441         * common.opt (fgraphite-identity): Moved up.
12442         (fgraphite-force-parallel): New flag.
12443         * graphite.c: Rewrite.
12444         * graphite.h: Rewrite.
12445         * passes.c (init_optimization_passes): Schedule a pass of DCE and LIM
12446         after Graphite.
12447         * toplev.c (graphite_out_file): New file descriptor.
12448         (graphite_in_file): New.
12449         (process_options): flag_graphite_force_parallel cannot be used without
12450         Graphite.
12451         * tree-ssa-loop.c: Include toplev.h.
12452         (gate_graphite_transforms): Enable flag_graphite for
12453         flag_graphite_force_parallel.
12454
12455 2009-07-30  Sebastian Pop  <sebastian.pop@amd.com>
12456
12457         * ChangeLog.graphite: New.
12458         * graphite-blocking.c: New.
12459         * graphite-clast-to-gimple.c: New.
12460         * graphite-clast-to-gimple.h: New.
12461         * graphite-dependences.c: New.
12462         * graphite-dependences.h: New.
12463         * graphite-interchange.c: New.
12464         * graphite-poly.c: New.
12465         * graphite-poly.h: New.
12466         * graphite-ppl.c: New.
12467         * graphite-ppl.h: New.
12468         * graphite-scop-detection.c: New.
12469         * graphite-scop-detection.h: New.
12470         * graphite-sese-to-poly.c: New.
12471         * graphite-sese-to-poly.h: New.
12472         * sese.c: New.
12473         * sese.h: New.
12474
12475 2009-07-30  Sebastian Pop  <sebastian.pop@amd.com>
12476
12477         * tree-chrec.c (evolution_function_right_is_integer_cst): New.
12478         * tree-chrec.h (evolution_function_right_is_integer_cst): Declared.
12479
12480 2009-07-30  Sebastian Pop  <sebastian.pop@amd.com>
12481
12482         * tree-chrec.c (operator_is_linear): Handle BIT_NOT_EXPR.
12483         (scev_is_linear_expression): Return false if the evolution is not
12484         affine multivariate.
12485
12486 2009-07-30  Sebastian Pop  <sebastian.pop@amd.com>
12487
12488         * tree-data-ref.c (graphite_find_data_references_in_stmt): New.
12489         * tree-data-ref.h (graphite_find_data_references_in_stmt): Declared.
12490
12491 2009-07-30  Sebastian Pop  <sebastian.pop@amd.com>
12492
12493         * tree-data-ref.c (debug_data_references): New.
12494         (debug_data_reference): New.
12495         * tree-data-ref.h (debug_data_references): Declared.
12496         (debug_data_reference): Declared.
12497
12498 2009-07-30  Sebastian Pop  <sebastian.pop@amd.com>
12499
12500         * tree-data-ref.c (stmt_simple_memref_p: Removed.
12501         * tree-data-ref.h (scop_p): Removed.
12502         (struct data_reference): Remove field scop.
12503         (DR_SCOP): Removed.
12504         (stmt_simple_memref_p): Removed.
12505
12506 2009-07-30  Sebastian Pop  <sebastian.pop@amd.com>
12507
12508         * cfgloop.h (create_empty_loop_on_edge): Pass an extra argument.
12509         * cfgloopmanip.c (create_empty_loop_on_edge): Leave the loop_latch
12510         basic block empty.
12511
12512 2009-07-30  Sebastian Pop  <sebastian.pop@amd.com>
12513
12514         * doc/invoke.texi (-fgraphite-force-parallel): Documented.
12515
12516 2009-07-30  Sebastian Pop  <sebastian.pop@amd.com>
12517
12518         * doc/invoke.texi (-fgraphite-identity): Documented.
12519
12520 2009-07-30  Sebastian Pop  <sebastian.pop@amd.com>
12521
12522         * tree-scalar-evolution.c: Fix comment.
12523         (instantiate_scev_1): Return unknow from scev instantiation if the
12524         result is not above instantiate_below.
12525
12526 2009-07-30  Sebastian Pop  <sebastian.pop@amd.com>
12527
12528         * tree-scalar-evolution.c (compute_overall_effect_of_inner_loop): Not
12529         static anymore.  Instantiate the symbols that may have been introduced
12530         by chrec_apply.
12531         * tree-scalar-evolution.h (compute_overall_effect_of_inner_loop):
12532         Declared.
12533
12534 2009-07-30  DJ Delorie  <dj@redhat.com>
12535
12536         * config/mep/mep.c (mep_asm_init_sections): Add section flags and
12537         .vliw directive to VLIW sections.
12538
12539 2009-07-30  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
12540
12541         * Makefile.in (AUTOCONF, ACLOCAL, ACLOCAL_AMFLAGS, aclocal_deps):
12542         New variables.
12543         ($(srcdir)/configure, $(srcdir)/aclocal.m4): New rules.
12544         (AUTOHEADER): New variable.
12545         ($(srcdir)/cstamp-h.in): Use it.
12546
12547 2009-07-30  Michael Meissner  <meissner@linux.vnet.ibm.com>
12548             Pat Haugen  <pthaugen@us.ibm.com>
12549             Revital Eres <ERES@il.ibm.com>
12550
12551         * config/rs6000/vector.md (VEC_F): Add VSX support.
12552         (VEC_A): Ditto.
12553         (VEC_N): Ditto.
12554         (mov<mode>): Ditto.
12555         (vector_load_<mode>): Ditto.
12556         (vector_store_<mode>): Ditto.
12557         (vector GPR move split): Ditto.
12558         (vec_reload_and_plus_<mptrsize>): Ditto.
12559         (vec_reload_and_reg_<mptrsize>): Ditto.
12560         (add<mode>3): Ditto.
12561         (sub<mode>3): Ditto.
12562         (mul<mode>3): Ditto.
12563         (neg<mode>2): Ditto.
12564         (abs<mode>2): Ditto.
12565         (smin<mode>3): Ditto.
12566         (smax<mode>3): Ditto.
12567         (vector_eq<mode>): Ditto.
12568         (vector_gt<mode>): Ditto.
12569         (vector_ge<mode>): Ditto.
12570         (vector_gtu<mode>): Ditto.
12571         (vector_select_<mode>_uns): Ditto.
12572         (vector_eq_<mode>_p): Ditto.
12573         (vector_gt_<mode>_p): Ditto.
12574         (vector_ge_<mode>_p): Ditto.
12575         (vector_gtu_<mode>_p): Ditto.
12576         (cr6_test_for_zero): Ditto.
12577         (cr6_test_for_zero_reverse): Ditto.
12578         (cr6_test_for_lt): Ditto.
12579         (cr6_test_for_lt_reverse): Ditto.
12580         (xor<mode>3): Ditto.
12581         (ior<mode>3): Ditto.
12582         (and<mode>3): Ditto.
12583         (one_cmpl<mode>2): Ditto.
12584         (nor<mode>2): Ditto.
12585         (andc<mode>2): Ditto.
12586         (float<VEC_int<mode>2): Ditto.
12587         (unsigned_float<VEC_int><mode>2): Ditto.
12588         (fix_trunc<mode><VEC_int>2): Ditto.
12589         (fixuns_trunc<mode><VEC_int>2): Ditto.
12590         (vec_init<mode>):
12591         (vec_set<mode>): Ditto.
12592         (vec_extract<mode>): Ditto.
12593         (vec_interleave_highv4sf): Ditto.
12594         (vec_interleave_lowv4sf): Ditto.
12595         (vec_realign_load_<mode>): Ditto.
12596         (vec_shl_<mode>): Ditto.
12597         (vec_shr_<mode>): Ditto.
12598         (div<mode>3): New patterns for VSX.
12599         (vec_interleave_highv2df): Ditto.
12600         (vec_interleave_lowv2df): Ditto.
12601         (vec_pack_trunc_v2df): Ditto.
12602         (vec_pack_sfix_trunc_v2df): Ditto.
12603         (vec_pack_ufix_trunc_v2df): Ditto.
12604         (vec_unpacks_hi_v4sf): Ditto.
12605         (vec_unpacks_lo_v4sf): Ditto.
12606         (vec_unpacks_float_hi_v4si): Ditto.
12607         (vec_unpacks_float_lo_v4si): Ditto.
12608         (vec_unpacku_float_hi_v4si): Ditto.
12609         (vec_unpacku_float_lo_v4si): Ditto.
12610         (movmisalign<mode>): Ditto.
12611         (vector_ceil<mode>2): New patterns for vectorizing math library.
12612         (vector_floor<mode>2): Ditto.
12613         (vector_btrunc<mode>2): Ditto.
12614         (vector_copysign<mode>3): Ditto.
12615
12616         * config/rs6000/predicates.md (easy_vector_constant_msb): New
12617         predicate for setting the high bit in each word, used for copysign.
12618
12619         * config/rs6000/ppc-asm.h (f19): Whitespace.
12620         (f32-f63): Define if VSX.
12621         (v0-v31): Define if Altivec.
12622         (vs0-vs63): Define if VSX.
12623
12624         * config/rs6000/t-rs6000 (MD_INCLUDES): Add power7.md and vsx.md.
12625
12626         * config/rs6000/power7.md: New file, provide tuning parameters for
12627         -mcpu=power7.
12628
12629         * config/rs6000/rs6000-c.c (rs6000_macro_to_expand): Add VSX support.
12630         (rs6000_cpu_cpp_builtins): Ditto.
12631         (altivec_overloaded_builtins): Ditto.
12632         (altivec_resolve_overloaded_builtin): Ditto.
12633
12634         * config/rs6000/rs6000.opt (-mno-vectorize-builtins): Add new
12635         debug switch to disable vectorizing simple math builtin
12636         functions.
12637
12638         * config/rs6000/rs6000.c (rs6000_builtin_vectorized_function):
12639         Vectorize simple math builtin functions.
12640         (TARGET_VECTORIZE_BUILTIN_VECTORIZED_FUNCTION): Define target
12641         hook to vectorize math builtins.
12642         (rs6000_override_options): Enable -mvsx on -mcpu=power7.
12643         (rs6000_builtin_conversion): Add VSX/power7 support.
12644         (rs6000_builtin_vec_perm): Ditto.
12645         (vsplits_constant): Add support for loading up a vector constant
12646         with just the high bit set in each part.
12647         (rs6000_expand_vector_init): Add VSX/power7 support.
12648         (rs6000_expand_vector_set): Ditto.
12649         (rs6000_expand_vector_extract): Ditto.
12650         (rs6000_emit_move): Ditto.
12651         (bdesc_3arg): Ditto.
12652         (bdesc_2arg): Ditto.
12653         (bdesc_1arg): Ditto.
12654         (rs6000_expand_ternop_builtin): Ditto.
12655         (altivec_expand_builtin): Ditto.
12656         (rs6000_expand_unop_builtin): Ditto.
12657         (rs6000_init_builtins): Ditto.
12658         (altivec_init_builtins): Ditto.
12659         (builtin_function_type): Ditto.
12660         (rs6000_common_init_builtins): Ditto.
12661         (rs6000_handle_altivec_attribute); Ditto.
12662         (rs6000_mangle_type): Ditto.
12663         (rs6000_vector_mode_supported_p): Ditto.
12664         (rs6000_mode_dependent_address): Altivec addresses with AND -16
12665         are mode dependent.
12666
12667         * config/rs6000/vsx.md: New file for VSX support.
12668
12669         * config/rs6000/rs6000.h (EASY_VECTOR_MSB): New macro for
12670         identifing values with just the most significant bit set.
12671         (enum rs6000_builtins): Add builtins for VSX.  Add simple math
12672         vectorized builtins.
12673
12674         * config/rs6000/altivec.md (UNSPEC_VRFIP): Delete.
12675         (UNSPEC_VRFIM): Delete.
12676         (splitter for loading up vector with most significant bit): New
12677         splitter for vectorizing copysign.
12678         (altivec_vrfiz): Rename from altivec_fturncv4sf2.  Add support for
12679         vectorizing simple math functions.
12680         (altivec_vrfip): Add support for vectorizing simple math functions.
12681         (altivec_vrfim): Ditto.
12682         (altivec_copysign_v4sf3): New insn for Altivec copysign support.
12683
12684         * config/rs6000/rs6000.md (UNSPEC_BPERM): New constant.
12685         (power7.md, vsx.md): Include for power7 support.
12686         (copysigndf3): Use VSX instructions if -mvsx.
12687         (negdf2_fpr): Ditto.
12688         (absdf2_fpr): Ditto.
12689         (nabsdf2_fpr): Ditto.
12690         (adddf3_fpr): Ditto.
12691         (subdf3_fpr): Ditto.
12692         (muldf3_fpr): Ditto.
12693         (divdf3_fpr): Ditto.
12694         (fix_truncdfdi2_fpr): Ditto.
12695         (cmpdf_internal1): Ditto.
12696         (fred, fred_fpr): Convert into expander/insn to add VSX support.
12697         (btruncdf2, btruncdf2_fpr): Ditto.
12698         (ceildf2, ceildf2_fpr): Ditto.
12699         (floordf2, floordf2_fpr): Ditto.
12700         (floatdidf2, floatdidf2_fpr): Ditto.
12701         (fmadddf4_fpr): Name insn.  Use VSX instructions if -mvsx.
12702         (fmsubdf4_fpr): Ditto.
12703         (fnmadddf4_fpr_1): Ditto.
12704         (fnmadddf4_fpr_2): Ditto.
12705         (fnmsubdf4_fpr_1): Ditto.
12706         (fnmsubdf4_fpr_2): Ditto.
12707         (fixuns_truncdfdi2): Add expander for VSX support.
12708         (fix_truncdfdi2): Ditto.
12709         (fix_truncdfsi2): Ditto.
12710         (ftruncdf2): Ditto.
12711         (btruncsf2): Whitespace.
12712         (movdf_hardfloat32): Add support for VSX registers.
12713         (movdf_softfloat32): Ditto.
12714         (movdf_hardfloat64): Ditto.
12715         (movdf_hardfloat64_mfpgpr): Ditto.
12716         (movdf_softfloat64): Ditto.
12717         (movti splitters): Add check for vector registers supporting
12718         TImode in the future.
12719         (bpermd): Add power7 bpermd instruction.
12720
12721         * config/rs6000/altivec.h (vec_div): Define if VSX.
12722         (vec_mul): Ditto.
12723         (vec_msub): Ditto.
12724         (vec_nmadd): Ditto.
12725         (vec_nearbyint): Ditto.
12726         (vec_rint): Ditto.
12727         (vec_sqrt): Ditto.
12728         (all predicates): Use the generic builtin function, and not the V4SF
12729         specific function so that the predicates will work with VSX's V2DF.
12730         (vec_all_*): Ditto.
12731         (vec_any_*): Ditto.
12732
12733         * doc/extend.texi (PowerPC Altivec/VSX Built-in Functions):
12734         Document new VSX functions and types.
12735
12736         * doc/invoke.texi (PowerPc options): Document -mpopcntd, -mvsx
12737         switches.
12738
12739         * doc/md.texi (PowerPC constraints): Document "wd", "wf", "ws",
12740         "wa", and "j" constraints.  Modify "v" to talk about Altivec
12741         instead of just vector.
12742
12743 2009-07-30  Andrew MacLeod  <amacleod@redhat.com>
12744
12745         PR debug/26475
12746         * tree-into-ssa.c (insert_phi_nodes_for, rewrite_add_phi_arguments): Set
12747         location for phi arguments.
12748         (rewrite_update_phi_arguments): Find locations for reaching defs.
12749         * tree-ssa-threadupdate.c (create_edge_and_update_destination_phis):
12750         Add location to add_phi_arg calls.
12751         * tree-loop-districbution.c (update_phis_for_loop_copy): Add locations.
12752         * tree-ssa-loop-manip.c (create_iv, add_exit_phis_edge,
12753         split_loop_exit_edge, tree_transform_and_unroll_loop): Add locations.
12754         * tree-tailcall.c (add_successor_phi_arg, eliminate_tail_call,
12755         create_tailcall_accumulator, tree_optimize_tail_calls_1): Add locations.
12756         * tree.h (struct phi_arg_d): Add location_t to PHI arguments.
12757         * tree-phinodes.c (make_phi_node): Initialize location.
12758         (resize_phi_node): Initialize location to UNKNOWN_LOCATION.
12759         (add_phi_arg): Add location parameter.
12760         (remove_phi_arg_num): Move location when moving phi argument.
12761         * omp-low.c (expand_parallel_call, expand_omp_for_static_chunk): Set
12762         location.
12763         * tree-vect-loop-manip.c (slpeel_update_phis_for_duplicate_loop,
12764         slpeel_update_phi_nodes_for_guard1,
12765         slpeel_update_phi_nodes_for_guard2,
12766         slpeel_tree_duplicate_loop_to_edge_cfg, set_prologue_iterations,
12767         vect_loop_versioning): Set locations.
12768         * tree-parloops.c (create_phi_for_local_result,
12769         transform_to_exit_first_loop, create_parallel_loop): Add locations.
12770         * gimple-pretty-print.c (dump_gimple_phi): Dump lineno's if present.
12771         * tree-vect-loop.c (get_initial_def_for_induction,
12772         vect_create_epilog_for_reduction, vect_finalize_reduction): Add
12773         locations.
12774         * tree-flow-inline.h (gimple_phi_arg_location): New.  Return locus.
12775         (gimple_phi_arg_location_from_edge): New.  Return locus from an edge.
12776         (gimple_phi_arg_set_location): New.  Set locus.
12777         (gimple_phi_arg_has_location): New.  Check for locus.
12778         (redirect_edge_var_map_location): New.  Return locus from var_map.
12779         * tree-vect-data-refs.c (vect_setup_realignment): Set location.
12780         * tree-ssa-phiopt.c (conditional_replacement): Set locus when
12781         combining PHI arguments.
12782         (cond_store_replacement): Set location.
12783         * cfgexpand.c (gimple_assign_rhs_to_tree): Transfer locus if possible.
12784         * grpahite.c (add_loop_exit_phis, add_guard_exit_phis,
12785         scop_add_exit_phis_edge): Add locations.
12786         * tree-cfgcleanup.c (remove_forwarder_block,
12787         remove_forwarder_block_with_phi): Add locations.
12788         * tree-ssa-pre.c (insert_into_preds_of_block): Add locations.
12789         * tree-predcom.c (initialize_root_vars, initialize_root_vars_lm): Add
12790         locations.
12791         * tree-ssa-dce.c (forward_edge_to_pdom): Add locations.
12792         * tree-ssa.c (redirect_edge_var_map_add, ssa_redirect_edge,
12793         flush_pending_stmts): Add source location.
12794         * lambda-code.c (perfect_nestify): Maintain location stack with argument
12795         stack to preserve locations.
12796         * tree-vect-stmts.c (vectorizable_load): Add location.
12797         * tree-inline.c (copy_phis_for_bb): Copy locus.
12798         (setup_one_parameter): Add call locus to inlined parameter stmts.
12799         (initialize_inlined_parameters): Pass in call location as parameter
12800         assignment locus.
12801         (tree_function_versioning): Pass location to setup_one_parameter.
12802         * tree-ssa-phiprop.c (phiprop_insert_phi): Set locations.
12803         * tree-outof-ssa.c (struct _elim_graph): Add source_location vecs for
12804         copy and edge lists.
12805         (insert_partition_copy_on_edge, insert_value_copy_on_edge,
12806         insert_rtx_to_part_on_edge, insert_part_to_rtx_on_edge): Provide a
12807         locus parameter and override the stmt default if provided.
12808         (new_elim_graph, clear_elim_graph, delete_elim_graph,
12809         elim_graph_add_edge, elim_graph_remove_succ_edge,
12810         FOR_EACH_ELIM_GRAPH_SUCC, FOR_EACH_ELIM_GRAPH_PRED, eliminate_build,
12811         elim_forward, elim_unvisited_predecessor, elim_backward, elim_create,
12812         eliminate_phi):  Add locus info in elimination graph for each edge and
12813         value copy.
12814         (insert_backedge_copies): Copy locus if present.
12815         * tree-flow.h (struct _edge_var_map): Add locus field.
12816         * tree-switch_conversions.c (fix_phi_nodes): Add locations.
12817         * tree-cfg.c (reinstall_phi_args, gimple_make_forwarder_block,
12818         add_phi_args_after_copy_edge, gimple_lv_adjust_loop_header_phi): Add
12819         locations.
12820         * ipa-struct-reorg.c (make_edge_and_fix_phis_of_dest): Add locations.
12821
12822 2009-07-30  Martin Jambor  <mjambor@suse.cz>
12823
12824         PR tree-optimization/40570
12825         * ipa-inline.c (cgraph_decide_inlining): Watch out for dead single
12826         use inlining loops.
12827
12828 2009-07-30  Razya Ladelsky <razya@il.ibm.com>
12829
12830         * ssa-loop-manip.c: Include langhooks.h.
12831         (rewrite_phi_with_iv): New.
12832         (rewrite_all_phi_nodes_with_iv): New.
12833         (canonicalize_loop_ivs): Move here from tree-parloops.c.
12834         Remove reduction_list argument. Use rewrite_all_phi_nodes_with_iv.
12835         * tree-parloops.c (loop_parallel_p): Move out all conditions
12836         except dependency check.
12837         (canonicalize_loop_ivs): Move to tree-ssa-loop-manip.c.
12838         (gen_parallel_loop): Call canonicalize_loop_ivs without
12839         reduction_list argument.
12840         (build_new_reduction): New.
12841         (gather_scalar_reductions): New.
12842         (try_get_loop_niter): New.
12843         (try_create_reduction_list): New.
12844         (parallleize_loops): Change the parallel conditions check.
12845         * tree-flow.h (canonicalize_loop_ivs): Remove one argument.
12846         * Makefile.in (tree-ssa-loop-manip.o): Add langhooks.h dependency.
12847
12848 2009-07-30  Dave Korn  <dave.korn.cygwin@gmail.com>
12849
12850         * opt-functions.awk (opt_args): Allow argument to be enclosed in
12851         curly braces.
12852         * doc/options.texi (Option properties):  Mention new quoting syntax.
12853
12854 2009-07-29  Douglas B Rupp  <rupp@gnat.com>
12855
12856         * config/alpha/alpha.c (alpha_start_function):
12857         Handle VMS_DEBUG_MAIN_POINTER
12858         * config/alpha/vms.h (VMS_DEBUG_MAIN_POINTER): Define new macro.
12859         * doc/invoke.texi: Document -mdebug-main switch.
12860
12861 2009-07-29  Richard Henderson  <rth@redhat.com>
12862
12863         * cgraph.c (cgraph_set_call_stmt_including_clones): Tidy.
12864         (cgraph_create_edge_including_clones): Likewise.
12865         * tree-inline.c (copy_bb): Operate on the correct edges
12866         when updating the callgraph.
12867
12868 2009-07-29  Douglas B Rupp  <rupp@gnat.com>
12869
12870         * config/alpha/vms-cc.c: Deleted.
12871         * config/alpha/vms-ld.c: Deleted.
12872         * config/alpha/t-vms64: Moved to config/vms
12873         * config/alpha/vms-crt0-64.c: Moved to config/vms
12874         * config/alpha/vms-crt0.c: Moved to config/vms
12875         * config/alpha/vms-psxcrt0-64.c: Moved to config/vms
12876         * config/alpha/vms-psxcrt0.c: Moved to config/vms
12877         * config/alpha/xm-vms.h: Moved to config/vms
12878         * config/alpha/x-vms: Moved to config/vms
12879         * config/alpha/t-vms (vcrt0.o, pcrt0.o): Move rules to new file
12880         config/vms/t-vms.
12881         * config/vms/t-vms: Moved here from config/alpha. Alpha specific
12882         parts removed. (STMP_FIXPROTO, STMP_FIXINC, LIMITS_H_TEST): Set.
12883         (version): Set.
12884         * config/vms/t-vms64: Moved here from config/alpha
12885         * config/vms/vms-crt0-64.c: Moved here from config/alpha.
12886         (argc,argv,envp): Enforce 32bit malloc'ing.
12887         * config/vms/vms-psxcrt0-64.c: Likewise.
12888         * config/vms/vms-crt0.c: Moved here from config/alpha.
12889         * config/vms/vms-psxcrt0.c: Likewise.
12890         * config/vms/vms-crtl-64.h: New file.
12891         * config/vms/vms-crtl.h: New file.
12892         * config/vms/vms.opt: New file.
12893         * config/vms/xm-vms64.h: New file.
12894         * config/vms/xm-vms.h: Moved here from config/alpha.
12895         (STANARD_EXEC_PREFIX, STANDARD_STARTFILE_PREFIX, STANDARD_INCLUDE_DIR):
12896         Set.
12897         * config/vms/x-vms: Moved here from config/alpha.
12898         (version, VMS_EXTRA_PARTS): Moved to t-vms.
12899         (vms-ld.o, vms-cc.o): Removed.
12900         (LN, LN_S, USE_COLLECT2, POD2MAN): Set.
12901
12902 2009-07-29  Douglas B Rupp  <rupp@gnat.com>
12903
12904         * dwarf2out.c (add_name_and_src_coords_attributes): Push on the
12905         correct stack (obvious VMS fix).
12906
12907 2009-07-29  Douglas B Rupp  <rupp@gnat.com>
12908
12909         * dwarf2out.c (output_file_names): Output VMS style file name, size,
12910         date, version info if VMS_DEBUGGING_INFO defined.
12911         * vmsdgbout.c (vms_file_stats_name): New functon. VMS style file name,
12912         size, date calculating code moved here.
12913
12914 2009-07-29  Paul Brook  <paul@codesourcery.com>
12915
12916         * config/arm/lib1funcs.asm (clear_cache): Use ARM_FUNC_START and
12917         do_push/do_pop.
12918
12919 2009-07-29  Uros Bizjak  <ubizjak@gmail.com>
12920
12921         PR target/40577
12922         * config/alpha/alpha.c (alpha_expand_unaligned_store): Convert src
12923         to DImode when generating insq_le insn.
12924
12925 2009-07-28  Douglas B Rupp  <rupp@gnat.com>
12926
12927         * dwarf2out.c (DWARF2_INDIRECT_STRING_SUPPORT_MISSING_ON_TARGET):
12928         New macro set for VMS_DEBUGGGING_INFO.
12929         (AT_string_form): Use it.
12930
12931 2009-07-28  DJ Delorie  <dj@redhat.com>
12932
12933         * config/mep/mep.c (vtext_section): New.
12934         (vftext_section): New.
12935         (ftext_section): New.
12936         (mep_select_section): Add support for functions.
12937         (mep_unique_section): Likewise.
12938         (mep_asm_init_sections): Likewise.
12939         (mep_encode_section_info): Remove it from here.
12940
12941         * config/mep/mep.h (USE_SELECT_SECTION_FOR_FUNCTIONS): Define.
12942
12943 2009-07-28  Paolo Bonzini  <bonzinI@gnu.org>
12944
12945         * tree.h (TREE_DEPRECATED): Document it is used for types too.
12946         (TYPE_VECTOR_OPAQUE): Use default_def_flag
12947
12948 2009-07-28  Douglas B Rupp  <rupp@gnat.com>
12949
12950         * dwarf2out.c (output_file_names): Test new macro
12951         DWARF2_DIR_SHOULD_END_WITH_SEPARATOR.
12952         (add_comp_dir_attribute): Likewise.
12953
12954 2009-07-28  Kai Tietz  <kai.tietz@onevision.com>
12955
12956         * config/i386/mingw-w64.h (LINK_SPEC): Add
12957         separating space between commands.
12958
12959 2009-07-28  Jan Hubicka  <jh@suse.cz>
12960
12961         PR tree-optimization/40759
12962         * tree-ssa-dce.c (mark_virtual_phi_result_for_renaming): Mark all uses
12963         for renaming.
12964
12965 2009-07-27  DJ Delorie  <dj@redhat.com>
12966
12967         * config/mep/mep.c (mep_expand_builtin_saveregs): Make sure 64-bit
12968         types are dword-aligned.
12969         (mep_expand_va_start): Likewise.
12970
12971 2009-07-27  Olivier Hainque  <hainque@adacore.com>
12972             Douglas B Rupp  <rupp@gnat.com>
12973
12974         * convert.c (convert_to_pointer): Don't assume the target
12975         pointer type is POINTER_SIZE long. Fetch its precision instead.
12976
12977 2009-07-27  Douglas B Rupp  <rupp@gnat.com>
12978
12979         * system.h (fopen): Undefine if macro.
12980
12981 2009-07-27  Jakub Jelinek  <jakub@redhat.com>
12982
12983         * dwarf2out.c (output_cfi_p): Removed.
12984         (output_cfis): New function.
12985         (output_fde): New function, split from output_call_frame_info.
12986         (output_call_frame_info): Use it.
12987         (dwarf2out_switch_text_section): Use output_cfis.
12988
12989 2009-07-24  Kai Tietz  <kai.tietz@onevision.com>
12990
12991         * config/i386/cygming.h (DWARF2_UNWIND_INFO): Error build when
12992         TARGET_BI_ARCH is specified without enabling SJLJ.
12993         * config/i386/mingw32.h (MD_UNWIND_SUPPORT): Define MD_UNWIND_SUPPORT,
12994         if TARGET_64BIT and TARGET_BI_ARCH aren't defined.
12995
12996 2009-07-26  Mikael Pettersson <mikpe@it.uu.se>
12997
12998         * arm.md (negdi2): Use DImode if forcing a value into a register.
12999
13000 2009-07-26  Ira Rosen  <irar@il.ibm.com>
13001
13002         PR tree-optimization/40801
13003         * tree-vect-stmts.c (vectorizable_call): Get previous copy
13004         of vector operand from the previous copy of vector statement.
13005         Pass the correct definition type value to
13006         vect_get_vec_def_for_stmt_copy().
13007
13008 2009-07-25  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
13009
13010         * collect2.c (scan_libraries): Use CONST_CAST2 to perform char ** to
13011         const char ** conversion.
13012
13013 2009-07-25 David Daney <ddaney@caviumnetworks.com>
13014
13015         * system.h (gcc_assert): Invoke __builtin_unreachable() instead of
13016         fancy_abort() if !ENABLE_ASSERT_CHECKING.
13017         (gcc_unreachable): Invoke __builtin_unreachable() if
13018         !ENABLE_ASSERT_CHECKING.
13019
13020 2009-07-25  David Daney  <ddaney@caviumnetworks.com>
13021
13022         PR rtl-optimization/40445
13023         * emit-rtl.c (next_nonnote_insn_bb): New function.
13024         * rtl.h (next_nonnote_insn_bb): Declare new function.
13025         * cfgcleanup.c (try_optimize_cfg): Don't remove an empty block
13026         with no successors that is the successor of the ENTRY_BLOCK.
13027         Continue from the top after removing an empty fallthrough block.
13028         * cfgrtl.c (get_last_bb_insn): Call next_nonnote_insn_bb instead
13029         of next_nonnote_insn.
13030
13031 2009-07-25  David Daney  <ddaney@caviumnetworks.com>
13032
13033         * cfgcleanup.c (old_insns_match_p): Handle the case of empty blocks.
13034
13035 2009-07-25  Martin Jambor  <mjambor@suse.cz>
13036
13037         * c-common.c (c_common_attribute_table): New element for noclone.
13038         (handle_noclone_attribute): New function. Forward-declare.
13039         * tree-inline.c (tree_versionable_function_p): Check for noclone
13040         attribute.
13041         * doc/extend.texi (Labels as Values): Document need for noclone.
13042         (Function Attributes): Document noclone attribute.
13043
13044 2009-07-25  Jakub Jelinek  <jakub@redhat.com>
13045
13046         PR rtl-optimization/34999
13047         * dwarf2out.c (struct dw_fde_struct): Add dw_fde_switch_cfi
13048         and dw_fde_switched_cold_to_hot fields.
13049         (output_cfi_p): New function.
13050         (output_call_frame_info): If fde->dw_fde_switched_sections,
13051         output 2 FDEs instead of one with corrupted header.
13052         (dwarf2out_do_cfi_startproc): New function.
13053         (dwarf2out_begin_prologue): Use it.  Initialize fde->dw_fde_switch_cfi
13054         and fde->dw_fde_switched_cold_to_hot.
13055         (dwarf2out_switch_text_section): Compute
13056         fde->dw_fde_switched_cold_to_hot.  Switch to new text section here.
13057         If dwarf2out_do_cfi_asm, emit .cfi_endproc before it and call
13058         dwarf2out_do_cfi_startproc plus emit again currently active CFI insns.
13059         Otherwise, compute fde->dw_fde_switch_cfi.
13060
13061 2009-07-24  Cary Coutant  <ccoutant@google.com>
13062
13063         * tree-cfg.c (assign_discriminator): Add explicit parentheses.
13064
13065 2009-07-24  Cary Coutant  <ccoutant@google.com>
13066
13067         * cfghooks.c (split_block): Copy discriminator to new block.
13068         * tree-cfg.c (assign_discriminator): Check location of last
13069         instruction in block as well as first.
13070
13071 2009-07-24  Uros Bizjak  <ubizjak@gmail.com>
13072
13073         * config/i386/linux.c: Use fputs or putc instead of fprintf
13074         where appropriate.
13075         * config/i386/gas.h: Ditto.
13076         * config/i386/x86-64.h: Ditto.
13077         * config/i386/att.h: Ditto.
13078
13079 2009-07-24  Andreas Krebbel  <Andreas.Krebbel@de.ibm.com>
13080
13081         * expmed.c (emit_store_flag): Use a recursive call to optimize the
13082         xor case.
13083
13084 2009-07-24  Martin Jambor  <mjambor@suse.cz>
13085
13086         * ipa-prop.h (struct ipa_node_params): New flag node_enqued.
13087         (ipa_push_func_to_list_1): Declare.
13088         (ipa_push_func_to_list): New function.
13089
13090         * ipa-prop.c (ipa_push_func_to_list_1): New function.
13091         (ipa_init_func_list): Call ipa_push_func_to_list_1.
13092         (ipa_push_func_to_list): Removed.
13093         (ipa_pop_func_from_list): Clear node_enqueued flag.
13094
13095 2009-07-24  Andreas Krebbel  <krebbel1@de.ibm.com>
13096
13097         * config/s390/s390.c (override_options): Default
13098         max-unrolled-insns to 100 for z10 tuning.
13099
13100 2009-07-24  Tobias Grosser  <grosser@fim.uni-passau.de>
13101
13102         * Makefile.in (TREE_DATA_REF_H, tree-vrp.o, tree-cfg.o, tree-if-conv.o
13103         tree-ssa-loop.o, tree-ssa-loop-niter.o, tree-ssa-loop-ivcanon.o,
13104         tree-ssa-loop-prefetch.o, tree-predcom.o, tree-affine.o,
13105         tree-scalar-evolution.o, tree-data-ref.o, tree-vect-loop.o,
13106         tree-vect-data-refs.o, tree-loop-linear.o, tree-loop-distribution.o
13107         tree-parloops.o, tree-pretty-printer.o, fold-const.o, tree-ssa-dce.o,
13108         lambda-code.o, params.o): Cleanup use of SCEV_H and TREE_DATA_REF_H.
13109
13110 2009-07-24  Kai Tietz  <kai.tietz@onevision.com>
13111
13112         * config/i386/mingw-w64.h (STANDARD_INCLUDE_DIR): Remove and
13113         use default set in mingw32.h header.
13114         * config/i386/mingw32.h (STANDARD_INCLUDE_DIR): Use for 32-bit and
13115         64-bit /mingw/include path.
13116         (STANDARD_STARTFILE_PREFIX_1): Use for 32-bit and 64-bit /mingw/lib
13117         path.
13118
13119 2009-07-23  Neil Vachharajani  <nvachhar@google.com>
13120
13121         PR rtl-optimization/40209
13122         * loop-iv.c (iv_analysis_loop_init): Call df_note_add_problem.
13123
13124 2009-07-23  Uros Bizjak  <ubizjak@gmail.com>
13125
13126         * config/i386/i386.c: Use ASM_LONG instead of .long.  Concatenate
13127         ASM_LONG, LPREFIX, MCOUNT_NAME and PROFILE_COUNT_REGISTER strings
13128         with the rest of string where appropriate.  Use fputs or putc
13129         instead of fprintf where appropriate.
13130
13131 2009-07-22  Michael Meissner  <meissner@linux.vnet.ibm.com>
13132             Pat Haugen  <pthaugen@us.ibm.com>
13133             Revital Eres <ERES@il.ibm.com>
13134
13135         * config/rs6000/vector.md: New file.  Move most of the vector
13136         expander support here from altivec.md to allow for the VSX vector
13137         unit in the future.  Add support for secondary_reload patterns.
13138         Rewrite the patterns for vector comparison, and vector comparison
13139         predicate instructions so that the RTL expresses the desired
13140         behavior, instead of using unspec.
13141
13142         * config/rs6000/constraints.md ("f" constraint): Use
13143         rs6000_constraints to hold the precalculated register class.
13144         ("d" constraint): Ditto.
13145         ("wd" constraint): New constraint for VSX.
13146         ("wf" constraint): Ditto.
13147         ("ws" constraint): Ditto.
13148         ("wa" constraint): Ditto.
13149         ("wZ" constraint): Ditto.
13150         ("j" constraint): Ditto.
13151
13152         * config/rs6000/predicates.md (vsx_register_operand): New
13153         predicate for VSX.
13154         (vfloat_operand): New predicate for vector.md.
13155         (vint_operand): Ditto.
13156         (vlogical_operand): Ditto.
13157         (easy_fp_constant): If VSX, 0.0 is an easy constant.
13158         (easy_vector_constant): Add VSX support.
13159         (altivec_indexed_or_indirect_operand): New predicate for
13160         recognizing Altivec style memory references with AND -16.
13161
13162         * config/rs6000/rs6000.c (rs6000_vector_reload): New static global
13163         for vector secondary reload support.
13164         (rs6000_vector_reg_class): Delete, replacing it with
13165         rs6000_constraints.
13166         (rs6000_vsx_reg_class): Ditto.
13167         (rs6000_constraints): New array to hold the register classes of
13168         each of the register constraints that can vary at runtime.
13169         (builtin_mode_to_type): New static array for builtin function type
13170         creation.
13171         (builtin_hash_table): New static hash table for builtin function
13172         type creation.
13173         (TARGET_SECONDARY_RELOAD): Define target hook.
13174         (TARGET_IRA_COVER_CLASSES): Ditto.
13175         (rs6000_hard_regno_nregs_internal): If -mvsx, floating point
13176         registers are 128 bits if VSX memory reference instructions are used.
13177         (rs6000_hard_regno_mode_ok): For VSX, only check if the VSX memory
13178         unit is being used.
13179         (rs6000_debug_vector_unit): Move into rs6000_debug_reg_global.
13180         (rs6000_debug_reg_global): Move -mdebug=reg statements here.
13181         Print several of the scheduling related parameters.
13182         (rs6000_init_hard_regno_mode_ok): Switch to putting constraints in
13183         rs6000_constraints instead of rs6000_vector_reg_class.  Move
13184         -mdebug=reg code to rs6000_debug_reg_global.  Add support for
13185         -mvsx-align-128 debug switch.  Drop testing float_p if VSX or
13186         Altivec.  Add VSX support.  Setup for secondary reload support on
13187         Altivec/VSX registers.
13188         (rs6000_override_options): Make power7 set the scheduling groups
13189         like the power5.  Add support for new debug switches to override
13190         the scheduling defaults.  Temporarily disable -mcpu=power7 from
13191         setting -mvsx.  Add support for debug switches -malways-hint,
13192         -msched-groups, and -malign-branch-targets.
13193         (rs6000_buitlin_conversion): Add support for returning unsigned
13194         vector conversion functions to fix regressions due to stricter
13195         type checking.
13196         (rs6000_builtin_mul_widen_even): Ditto.
13197         (rs6000_builtin_mul_widen_odd): Ditto.
13198         (rs6000_builtin_vec_perm): Ditto.
13199         (rs6000_vec_const_move): On VSX, use xxlxor to clear register.
13200         (rs6000_expand_vector_init): Initial VSX support for using xxlxor
13201         to zero a register.
13202         (rs6000_emit_move): Fixup invalid const symbol_ref+reg that is
13203         generated upstream.
13204         (bdesc_3arg): Add builtins for unsigned types.  Add builtins for
13205         VSX types for bit operations.  Changes to accomidate vector.md.
13206         (bdesc_2arg): Ditto.
13207         (bdesc_1arg): Ditto.
13208         (struct builtin_description_predicates): Rewrite predicate
13209         handling so that RTL describes the operation, instead of passing
13210         the instruction to be used as a string argument.
13211         (bdesc_altivec_preds): Ditto.
13212         (altivec_expand_predicate_builtin): Ditto.
13213         (altivec_expand_builtin): Ditto.
13214         (rs6000_expand_ternop_builtin): Use a switch instead of an if
13215         statement for vsldoi support.
13216         (altivec_expand_ld_builtin): Change to use new names from vector.md.
13217         (altivec_expand_st_builtin): Ditto.
13218         (paired_expand_builtin): Whitespace changes.
13219         (rs6000_init_builtins): Add V2DF/V2DI types.  Initialize the
13220         builtin_mode_to_type table for secondary reload.  Call
13221         builtin_function_type to build random builtin functions.
13222         (altivec_init_builtins): Change to use builtin_function_type to
13223         create builtin function types dynamically as we need them.
13224         (builtin_hash_function): New support for hashing the tree types
13225         for builtin function as we need it, rather than trying to build
13226         all of the trees that we need.  Add initial preliminary VSX support.
13227         (builtin_function_type): Ditto.
13228         (builtin_function_eq): Ditto.
13229         (builtin_hash_struct): Ditto.
13230         (rs6000_init_builtins): Ditto.
13231         (rs6000_common_init_builtins): Ditto.
13232         (altivec_init_builtins): Ditto.
13233         (rs6000_common_init_builtins): Ditto.
13234         (enum reload_reg_type): New enum for simplifing reg classes.
13235         (rs6000_reload_register_type): Simplify register classes into GPR,
13236         Vector, and other registers.  Altivec and VSX addresses in reload.
13237         (rs6000_secondary_reload_inner): Ditto.
13238         (rs6000_ira_cover_classes): New target hook, that returns the
13239         appropriate cover classes, based on -mvsx being used or not.
13240         (rs6000_secondary_reload_class): Add VSX support.
13241         (get_vec_cmp_insn): Delete, rewrite vector conditionals.
13242         (get_vsel_insn): Ditto.
13243         (rs6000_emit_vector_compare): Rewrite vector conditional support
13244         so that where we can, we use RTL operators, instead of blindly use
13245         UNSPEC.
13246         (rs6000_emit_vector_select): Ditto.
13247         (rs6000_emit_vector_cond_expr): Ditto.
13248         (rs6000_emit_minmax): Directly generate min/max under altivec, vsx.
13249         (create_TOC_reference): Add -mdebug=addr support.
13250         (emit_frame_save): VSX loads/stores need register indexed addressing.
13251
13252         * config/rs6000/rs6000.md: Include vector.md.
13253
13254         * config/rs6000/t-rs6000 (MD_INCLUDES): Add vector.md.
13255
13256         * config/rs6000/rs6000-c.c (altivec_overloaded_builtins): Add
13257         support for V2DI, V2DF in logical, permute, select operations.
13258
13259         * config/rs6000/rs6000.opt (-mvsx-scalar-double): Add new debug
13260         switch for vsx/power7.
13261         (-mvsx-scalar-memory): Ditto.
13262         (-mvsx-align-128): Ditto.
13263         (-mallow-movmisalign): Ditto.
13264         (-mallow-df-permute): Ditto.
13265         (-msched-groups): Ditto.
13266         (-malways-hint): Ditto.
13267         (-malign-branch-targets): Ditto.
13268
13269         * config/rs6000/rs6000.h (IRA_COVER_CLASSES): Delete, use target
13270         hook instead.
13271         (IRA_COVER_CLASSES_PRE_VSX): Cover classes if not -mvsx.
13272         (IRA_COVER_CLASSES_VSX): Cover classes if -mvsx.
13273         (rs6000_vector_reg_class): Delete.
13274         (rs6000_vsx_reg_class): Ditto.
13275         (enum rs6000_reg_class_enum): New enum for the constraints that
13276         vary based on target switches.
13277         (rs6000_constraints): New array to hold the register class for all
13278         of the register constraints that vary based on the switches used.
13279         (ALTIVEC_BUILTIN_*_UNS): Add unsigned builtin functions.
13280         (enum rs6000_builtins): Add unsigned varients for the builtin
13281         declarations returned by target hooks for expanding multiplies,
13282         select, and permute operations.  Add VSX builtins.
13283         (enum rs6000_builtin_type_index): Add entries for VSX.
13284         (V2DI_type_node): Ditto.
13285         (V2DF_type_node): Ditto.
13286         (unsigned_V2DI_type_node): Ditto.
13287         (bool_long_type_node): Ditto.
13288         (intDI_type_internal_node): Ditto.
13289         (uintDI_type_internal_node): Ditto.
13290         (double_type_internal_node): Ditto.
13291
13292         * config/rs6000/altivec.md (whole file): Move all expanders to
13293         vector.md from altivec.md.  Rename insn matching functions to be
13294         altivec_foo.
13295         (UNSPEC_VCMP*): Delete, rewrite vector comparisons.
13296         (altivec_vcmp*): Ditto.
13297         (UNSPEC_VPERM_UNS): New, add for unsigned types using vperm.
13298         (VM): New iterator for moves that includes the VSX types.
13299         (altivec_vperm_<mode>): Add VSX types.  Add unsigned types.
13300         (altivec_vperm_<mode>_uns): New, for unsigned types.
13301         (altivec_vsel_*): Rewrite vector comparisons and predicate builtins.
13302         (altivec_eq<mode>): Ditto.
13303         (altivec_gt<mode>): Ditto.
13304         (altivec_gtu<mode>): Ditto.
13305         (altivec_eqv4sf): Ditto.
13306         (altivec_gev4sf): Ditto.
13307         (altivec_gtv4sf): Ditto.
13308         (altivec_vcmpbfp_p): Ditto.
13309
13310 2009-07-23  Richard Earnshaw  <rearnsha@arm.com>
13311
13312         * arm.md (split for ior/xor with shift and zero-extend): Cast op3 to
13313         unsigned HWI.
13314
13315 2009-07-23  Uros Bizjak  <ubizjak@gmail.com>
13316
13317         PR target/40832
13318         * config/i386/i386.c (output_387_ffreep): Rewrite to use
13319         ASM_SHORT instead of .word.
13320         * config/i386/i386.md (*tls_global_dynamic_64): Use ASM_SHORT
13321         instead of .word in asm template.
13322
13323 2009-07-22  Vladimir Makarov  <vmakarov@redhat.com>
13324
13325         PR target/37488
13326         * ira-lives.c (bb_has_abnormal_call_pred): New function.
13327         (process_bb_node_lives): Use it.
13328
13329         * ira.c (setup_cover_and_important_classes): Don't setup
13330         ira_important_class_nums.  Add cover classes to the end of
13331         important classes.
13332         (cover_class_order, comp_reg_classes_func, reorder_important_classes):
13333         New.
13334         (find_reg_class_closure): Use reorder_important_classes.
13335
13336         * config/i386/i386.h (IRA_COVER_CLASSES): Remove.
13337
13338         * config/i386/i386.c (i386_ira_cover_classes): New function.
13339         (TARGET_IRA_COVER_CLASSES): Redefine.
13340
13341         * doc/tm.texi (TARGET_IRA_COVER_CLASSES): Add a comment about
13342         importance of order of cover classes in the array.
13343
13344 2009-07-22  Diego Novillo  <dnovillo@google.com>
13345
13346         * tree-pass.h (TDF_EH): Define.
13347         * gimple-pretty-print.c (dump_gimple_stmt): If FLAGS
13348         contains TDF_EH, print the EH region number holding GS.
13349         * tree-dump.c (dump_options): Add "eh".
13350         * doc/invoke.texi: Document it.
13351
13352 2009-07-22  Doug Kwan  <dougkwan@google.com>
13353
13354         * config/arm/arm.md (subdi3) Copy non-reg values to DImode registers.
13355
13356 2009-07-22  Michael Matz  <matz@suse.de>
13357
13358         PR tree-optimization/35229
13359         PR tree-optimization/39300
13360
13361         * tree-ssa-pre.c (includes): Include tree-scalar-evolution.h.
13362         (inhibit_phi_insertion): New function.
13363         (insert_into_preds_of_block): Call it for REFERENCEs.
13364         (init_pre): Initialize and finalize scalar evolutions.
13365         * Makefile.in (tree-ssa-pre.o): Depend on tree-scalar-evolution.h .
13366
13367 2009-07-22  Uros Bizjak  <ubizjak@gmail.com>
13368
13369         * config/i386/predicates.md (zero_extended_scalar_load_operand):
13370         Use CONST_VECTOR_NUNITS to determine number of elements.
13371
13372 2009-07-22  Andreas Krebbel  <krebbel1@de.ibm.com>
13373
13374         * config/s390/constraints.md (ZQ, ZR, ZS, ZT): New constraints.
13375         (U, W): Constraints are now deprecated and will be removed if we
13376         run out of letters.
13377         * config/s390/s390.md (U, W): Replaced with ZQZR, ZSZT throughout
13378         the file.
13379         ("prefetch"): Add the stcmh instruction for prefetching.
13380         * config/s390/s390.c (s390_symref_operand_p): Function moved. No
13381         changes.
13382         (s390_short_displacement): Return always true if compiling for
13383         machines not providing the long displacement facility.
13384         (s390_mem_constraint): Support the new constraint letter Z.
13385         (s390_check_qrst_address): New function.
13386
13387 2009-07-21  DJ Delorie  <dj@redhat.com>
13388
13389         * config/mep/mep.c (mep_legitimize_arg): Leave control registers
13390         alone too.
13391
13392 2009-07-21  Jason Merrill  <jason@redhat.com>
13393
13394         * c-common.c (max_tinst_depth): Increase default to 1024.
13395
13396 2009-07-21  Uros Bizjak  <ubizjak@gmail.com>
13397
13398         * config/i386/sse.md (vec_unpacku_float_hi_v4si): New expander.
13399         (vec_unpacku_float_lo_v4si): Ditto.
13400
13401 2009-07-21  Uros Bizjak  <ubizjak@gmail.com>
13402
13403         PR target/40811
13404         * config/i386/sse.md (sse2_cvtudq2ps): New expander.
13405         (enum ix86_builtins): Add IX86_BUILTIN_CVTUDQ2PS.
13406         (builtin_description): Add __builtin_ia32_cvtudq2ps.
13407         (ix86_vectorize_builtin_conversion): Handle IX86_BUILTIN_CVTUDQ2PS.
13408
13409 2009-07-21  Jakub Jelinek  <jakub@redhat.com>
13410
13411         PR tree-optimization/40813
13412         * tree-inline.c (copy_bb): Regimplify RHS after last stmt, not before
13413         it.
13414
13415 2009-07-21  Kaz Kojima  <kkojima@gcc.gnu.org>
13416
13417         * config/sh/sh.c (sh_gimplify_va_arg_expr): Wrap the result
13418         with a NOP_EXPR if needed.
13419
13420 2009-07-21  Paul Brook <paul@codesourcery.com>
13421
13422         * tree-vectorizer.c (increase_alignment): Handle nested arrays.
13423         Terminate debug dump with newline.
13424
13425 2009-07-20  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
13426
13427         * pa.c (compute_zdepwi_operands): Limit deposit length to 32 - lsb.
13428         Cast "1" to unsigned HOST_WIDE_INT.
13429         (compute_zdepdi_operands): Limit maximum length to 64 bits.  Limit
13430         deposit length to the maximum length - lsb.  Extend length if
13431         HOST_BITS_PER_WIDE_INT is 32.
13432
13433 2009-07-20  Olatunji Ruwase <tjruwase@google.com>
13434
13435         * cgraph.h (constant_pool_htab): New function.
13436         (constant_descriptor_tree): Move from varasm.c.
13437         * varasm.c (constant_pool_htab): New function.
13438         (constant_descriptor_tree): Move to cgraph.h.
13439
13440 2009-07-20  Olatunji Ruwase  <tjruwase@google.com>
13441
13442         * toplev.c: Invoke FINISH_UNIT callbacks before call to finalize().
13443
13444 2009-07-20  Shujing Zhao  <pearly.zhao@oracle.com>
13445
13446         * Makefile.in (TREE_INLINE_H, tree-inline.o, cgraph.o): Remove
13447         $(VARRAY_H).
13448
13449 2009-07-20  Xinliang David Li  <davidxl@google.com>
13450
13451         * dbgcnt.c (dbg_cnt_set_limit_by_name): Add length check.
13452
13453 2009-07-20  Adam Nemet  <anemet@caviumnetworks.com>
13454
13455         * config/mips/mips.md (move_type): Add arith.
13456         (type): Handle arith.
13457         (zero_extendsidi2): Rename this into ...
13458         (*zero_extendsidi2): ... this.  Don't match if ISA_HAS_EXT_INS.
13459         (zero_extendsidi2): New expander.
13460         (*zero_extendsidi2_dext): New pattern.
13461
13462 2009-07-20  Nick Clifton  <nickc@redhat.com>
13463
13464         * config.gcc (mips64-*-*): Add definition of tm_defines in order
13465         to set MIPS_ABI_DEFAULT.
13466         * config/mips/vr.h (MIPS_ABI_DEFAULT): Remove definition.
13467
13468 2009-07-20  Jakub Jelinek  <jakub@redhat.com>
13469
13470         * tree-object-size.c (addr_object_size): Handle unions with
13471         array in it as last field of structs in __bos (, 1) as __bos (, 0).
13472
13473         PR tree-optimization/40792
13474         * tree.c (build_function_type_skip_args): Remove bogus assert.
13475
13476 2009-07-20  Jan Hubicka  <jh@suse.cz>
13477             Martin Jambor  <mjambor@suse.cz>
13478
13479         * cgraph.h (combined_args_to_skip): New field.
13480         * cgraph.c (cgraph_create_virtual_clone): Properly handle
13481         combined_args_to_skip and args_to_skip.
13482         * tree-inline.c (update_clone_info): New function.
13483         (tree_function_versioning): Call update_clone_info.
13484         * cgraphunit.c (cgraph_materialize_clone): Dump materialized
13485         functions.
13486         (cgraph_materialize_all_clones): More extensive dumping, working
13487         with combined_args_to_skip rather than args_to_skip.
13488
13489 2009-07-20  Ira Rosen  <irar@il.ibm.com>
13490
13491         * tree-vectorizer.h (vectorizable_condition): Add parameters.
13492         * tree-vect-loop.c (vect_is_simple_reduction): Support COND_EXPR.
13493         (get_initial_def_for_reduction): Likewise.
13494         (vectorizable_reduction): Skip the check of first operand in case
13495         of COND_EXPR. Add check that it is outer loop vectorization if
13496         nested cycle was detected. Call vectorizable_condition() for
13497         COND_EXPR. If reduction epilogue cannot be created do not fail for
13498         nested cycles (if it is not double reduction). Assert that there
13499         is only one type in the loop in case of COND_EXPR. Call
13500         vectorizable_condition() to vectorize COND_EXPR.
13501         * tree-vect-stmts.c (vectorizable_condition): Update comment.
13502         Add parameters. Allow nested cycles if called from
13503         vectorizable_reduction(). Use reduction vector variable if provided.
13504         (vect_analyze_stmt): Call vectorizable_reduction() before
13505         vectorizable_condition().
13506         (vect_transform_stmt): Update call to vectorizable_condition().
13507
13508 2009-07-20  Christian Bruel  <christian.bruel@st.com>
13509
13510         * config/sh/sh.opt (-mfmovd): Resurrect and document.
13511         * doc/invoke.texi (-mfmovd): Likewise.
13512         * config/sh/sh.h (TARGET_FMOVD, MASK_FMOVD): Remove default setting.
13513
13514 2009-07-20  Jan Hubicka  <jh@suse.cz>
13515
13516         * tree-ssa-dce.c (remove_dead_phis): Only look for abnormal PHIs
13517         when handling SSA name.
13518
13519 2009-07-19  Jan Hubicka  <jh@suse.cz>
13520
13521         PR tree-optimization/40676
13522         * tree-ssa-dce.c (eliminate_unnecessary_stmts): Do renaming on all
13523         virtual PHIs in empty BBs.
13524
13525 2009-07-18  Adam Nemet  <anemet@caviumnetworks.com>
13526
13527         * combine.c (make_compound_operation) <SUBREG>: If force_to_mode
13528         re-expanded the compound use gen_lowpart instead to convert to the
13529         desired mode.
13530
13531 2009-07-18  Adam Nemet  <anemet@caviumnetworks.com>
13532
13533         * combine.c (try_widen_shift_mode): Add COUNT, OUTER_CODE and
13534         OUTER_CONST arguments.
13535         <LSHIFTRT>: Use them to allow widening if the bits shifted in from
13536         the new wider mode will be masked off.
13537         (simplify_shift_const_1): Adjust calls to try_widen_shift_mode.
13538
13539 2009-07-18  Adam Nemet  <anemet@caviumnetworks.com>
13540
13541         * combine.c (try_widen_shift_mode) <LSHIFTRT>: Allow widening if the
13542         high-order bits are zero.
13543
13544 2009-07-18  Adam Nemet  <anemet@caviumnetworks.com>
13545
13546         * combine.c (simplify_shift_const_1): Split code to determine
13547         shift_mode into ...
13548         (try_widen_shift_mode): ... here.  Allow widening for ASHIFTRT if the
13549         new bits shifted in are identical to the old sign bit.
13550
13551 2009-07-18  Richard Guenther  <rguenther@suse.de>
13552
13553         PR c/40787
13554         * gimplify.c (gimplify_call_expr): Reject code using results from
13555         functions returning void.
13556
13557 2009-07-18  Richard Sandiford  <r.sandiford@uk.ibm.com>
13558
13559         * doc/md.texi: Document the new PowerPC "es" constraint.
13560         Document that "m" can include automodified addresses on this target,
13561         and explain how %U must be used.  Extend the "Q" and "Z" documentation
13562         to suggest "es" as well as "m".
13563         * config/rs6000/constraints.md (es): New memory constraint.
13564         (Q, Z): Update strings to match new documentation.
13565
13566 2009-07-18  Richard Sandiford  <r.sandiford@uk.ibm.com>
13567
13568         * config/rs6000/rs6000.c (rs6000_mode_dependent_address): Allow any
13569         offset from virtual_stack_vars_rtx and arg_pointer_rtx.
13570         * config/rs6000/predicates.md (volatile_mem_operand): Use
13571         offsettable_nonstrict_memref_p.
13572         * config/rs6000/rs6000.md (*floatsidf2_internal): Remove split check.
13573         (*floatunssidf2_internal): Likewise.
13574         (*fix_truncdfsi2_internal): Likewise.
13575         (*fix_trunctfsi2_internal): Likewise.
13576
13577 2009-07-17  Anatoly Sokolov  <aesok@post.ru>
13578
13579         * config/avr/avr-devices.c (avr_mcu_t): Add atmega8u2, atmega16u2 and
13580         atmega32u2 devices.
13581         * config/avr/t-avr (MULTILIB_MATCHES): (Ditto.).
13582
13583 2009-07-17  Richard Guenther  <rguenther@suse.de>
13584
13585         PR c/40401
13586         * tree-pass.h (pass_diagnose_omp_blocks): Declare.
13587         (pass_warn_unused_result): Likewise.
13588         (TODO_set_props): Remove.
13589         * omp-low.c (diagnose_omp_structured_block_errors): Change to
13590         run as a pass.
13591         (pass_diagnose_omp_blocks): Define.
13592         * c-decl.c (pop_file_scope): Do not finalize the CU here.
13593         (c_gimple_diagnostics_recursively): Remove.
13594         (finish_function): Do not call it.
13595         (c_write_global_declarations): Continue after errors.
13596         Finalize the CU here.
13597         * c-gimplify.c (c_genericize): Do not gimplify here.
13598         * c-common.c (c_warn_unused_result): Move ...
13599         * tree-cfg.c (do_warn_unused_result): ... here.
13600         (run_warn_unused_result): New function.
13601         (gate_warn_unused_result): New function.
13602         (pass_warn_unused_result): New pass.
13603         * c-common.h (c_warn_unused_result): Remove.
13604         * flags.h (flag_warn_unused_result): Declare.
13605         * c-opts.c (c_common_init_options): Enable flag_warn_unused_result.
13606         * opts.c (flag_warn_unused_result): Initialize to false.
13607         * toplev.c (compile_file): Add comment.
13608         * omp-low.c (create_omp_child_function): Do not register
13609         the function with the frontend.
13610         (diagnose_omp_structured_block_errors): Prepare to be
13611         called as optimization pass.
13612         (gate_diagnose_omp_blocks): New function.
13613         (pass_diagnose_omp_blocks): New pass.
13614         * cgraph.h (cgraph_optimize): Remove.
13615         (cgraph_analyze_function): Likewise.
13616         * cgraph.c (cgraph_add_new_function): Gimplify C++ thunks.
13617         * cgraphunit.c (cgraph_lower_function): Lower nested functions
13618         before their parents here.
13619         (cgraph_finalize_function): Not here.
13620         (cgraph_analyze_function): Gimplify functions here.
13621         (cgraph_finalize_compilation_unit): Continue after errors.
13622         Optimize the callgraph from here.
13623         (cgraph_optimize): Make static.
13624         * langhooks.c (write_global_declarations): Finalize the CU.
13625         * gimplify.c (gimplify_asm_expr): Do not emit ASMs with errors.
13626         (gimplify_function_tree): Assert we gimplify only once.
13627         Set PROP_gimple_any property.
13628         * tree-nested.c (gimplify_all_functions): New function.
13629         (lower_nested_functions): Gimplify all nested functions.
13630         * gimple.h (diagnose_omp_structured_block_errors): Remove.
13631         * passes.c (init_optimization_passes): Add pass_warn_unused_result
13632         and pass_diagnose_omp_blocks after gimplification.  Do not
13633         set TODO_set_props on all_lowering_passes.
13634         (execute_one_pass): Do not handle TODO_set_props.
13635         * Makefile.in (cgraphunit.o): Add $(TREE_DUMP_H) dependency.
13636         (gimplify.o): Add tree-pass.h dependency.
13637         * tree-inline.c (copy_statement_list): Properly copy STATEMENT_LIST.
13638         (copy_tree_body_r): Properly handle TARGET_EXPR like SAVE_EXPR.
13639         (unsave_r): Likewise.
13640         * c-omp.c (c_finish_omp_atomic): Set DECL_CONTEXT on the
13641         temporary variable.
13642
13643 2009-07-17  Sandra Loosemore  <sandra@codesourcery.com>
13644
13645         * doc/service.texi (Service): Restore previously removed link,
13646         which isn't broken after all.
13647
13648 2009-07-17  Richard Guenther  <rguenther@suse.de>
13649
13650         PR tree-optimization/40321
13651         * tree-ssa-pre.c (add_to_exp_gen): Also add names defined by
13652         PHI nodes to the maximal set.
13653         (make_values_for_phi): Add PHI arguments to the maximal set.
13654         (execute_pre): Dump PHI_GEN and the maximal set.
13655
13656 2009-07-17  Jakub Jelinek  <jakub@redhat.com>
13657
13658         PR c++/40780
13659         * gimplify.c (gimplify_conversion): Don't change non-conversions into
13660         VIEW_CONVERT_EXPR.
13661
13662 2009-07-16  Sandra Loosemore  <sandra@codesourcery.com>
13663
13664         * doc/extend.texi (Nested Functions): Replace broken link with
13665         textual reference.
13666         * doc/service.texi (Service): Remove broken link.
13667
13668 2009-07-16  H.J. Lu  <hongjiu.lu@intel.com>
13669
13670         PR bootstrap/40781
13671         * builtins.c (expand_builtin_memcmp): Use loc instead of
13672         EXPR_LOCATION (exp).
13673         (expand_builtin_strncmp): Likewise.
13674
13675 2009-07-17  Aldy Hernandez  <aldyh@redhat.com>
13676             Manuel López-Ibáñez  <manu@gcc.gnu.org>
13677
13678         PR 40435
13679         * tree-complex.c, tree-loop-distribution.c, tree.c, tree.h,
13680         builtins.c, fold-const.c, omp-low.c, cgraphunit.c, tree-ssa-ccp.c,
13681         tree-ssa-dom.c, gimple-low.c, expr.c, tree-ssa-ifcombine.c,
13682         c-decl.c, stor-layout.c, tree-if-conv.c, c-typeck.c, gimplify.c,
13683         calls.c, tree-sra.c, tree-mudflap.c, tree-ssa-copy.c,
13684         tree-ssa-forwprop.c, c-convert.c, c-omp.c, varasm.c,
13685         tree-inline.c, c-common.c, c-common.h, gimple.c,
13686         tree-switch-conversion.c, gimple.h, tree-cfg.c, c-parser.c,
13687         convert.c: Add location argument to fold_{unary,binary,ternary},
13688         fold_build[123], build_call_expr, build_size_arg,
13689         build_fold_addr_expr, build_call_array, non_lvalue, size_diffop,
13690         fold_build1_initializer, fold_build2_initializer,
13691         fold_build3_initializer, fold_build_call_array,
13692         fold_build_call_array_initializer, fold_single_bit_test,
13693         omit_one_operand, omit_two_operands, invert_truthvalue,
13694         fold_truth_not_expr, build_fold_indirect_ref, fold_indirect_ref,
13695         combine_comparisons, fold_builtin_*, fold_call_expr,
13696         build_range_check, maybe_fold_offset_to_address, round_up,
13697         round_down.
13698
13699 2009-07-16  Jason Merrill  <jason@redhat.com>
13700
13701         PR libstdc++/37907
13702         * c-common.c (c_common_reswords): Add __is_standard_layout
13703         and __is_trivial.
13704         * c-common.h (enum rid): Add RID_IS_STD_LAYOUT and RID_IS_TRIVIAL.
13705         * doc/implement-cxx.texi: New.
13706         * doc/gcc.texi: Include it.
13707
13708 2009-07-16  DJ Delorie  <dj@redhat.com>
13709
13710         * config/m32c/m32c.c (m32c_compare_redundant): Avoid removing
13711         compares that may be indirectly affected by previous instructions.
13712
13713 2009-07-16  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
13714
13715         * builtins.c (do_mpc_arg2): New.
13716         (fold_builtin_2): Fold builtin cpow.
13717         * real.h (HAVE_mpc_pow): New.
13718
13719 2009-07-16  Bingfeng Mei  <bmei@broadcom.com>
13720
13721         * modulo-sched.c (sms_schedule): stage_count <= 1 as correct
13722         comparison to skip unprofitable schedule
13723
13724 2009-07-16  Simon Baldwin  <simonb@google.com>
13725
13726         * gcc.c (option_map): New flag -no-canonical-prefixes.
13727         * (display_help): Print help text for new flag.
13728         * (process_command): Move options translation and language specifics
13729         and handle new flag early.  Use it to set a function pointer to a
13730         prefix builder.  Replace make_relative_prefix calls with calls to
13731         the function pointed to.  Ignore new flag in regular options handling.
13732         * doc/invoke.texi (Overall Options): Documented -no-canonical-prefixes.
13733
13734 2009-07-15  DJ Delorie  <dj@redhat.com>
13735
13736         * config/mep/mep.md (sibcall_internal): Change register to avoid
13737         argument registers.
13738         (sibcall_value_internal): Likewise.
13739
13740 2009-07-15  Eric Botcazou  <ebotcazou@adacore.com>
13741
13742         PR rtl-optimization/40710
13743         * resource.c (mark_target_live_regs): Reset DF problem to LR.
13744
13745 2009-07-15  Adam Nemet  <anemet@caviumnetworks.com>
13746
13747         * config/mips/mips.md (*extenddi_truncate<mode>,
13748         *extendsi_truncate<mode>): Change type attribute to move_type
13749         with shift_shift.  Split out code handling exts from here ...
13750         (*extend<GPR:mode>_truncate<SHORT:mode>_exts): ... to this new
13751         pattern.
13752         (*extendhi_truncateqi): Change type attribute to move_type with
13753         shift_shift.  Split out code handling exts from here ...
13754         (*extendhi_truncateqi_exts): ... to this new pattern.
13755
13756 2009-07-15  Uros Bizjak  <ubizjak@gmail.com>
13757
13758         * config/i386/sse.md (copysign<mode>3): Use "and-not" SSE instruction
13759         instead of "and" with inverted sign bit mask value.  Use
13760         "nonimmediate_operand" for operand 1 and operand 2 predicate.
13761         Allocate registers only for operand 4 and operand 5.
13762
13763 2009-07-15  Jakub Jelinek  <jakub@redhat.com>
13764
13765         PR middle-end/40747
13766         * fold-const.c (fold_cond_expr_with_comparison): When folding
13767         < and <= to MIN, make sure the MIN uses the same type as the
13768         comparison's operands.
13769
13770 2009-07-15  Richard Earnshaw  <rearnsha@arm.com>
13771
13772         * arm.md (ior_xor): New code iterator.
13773         (split for ior/xor with shift and zero-extend): New split pattern.
13774         * arm/predicates.md (subreg_lowpart_operator): New special predicate.
13775
13776 2009-07-15  Richard Guenther  <rguenther@suse.de>
13777
13778         * tree-ssa-structalias.c (make_constraint_from_heapvar): Initialize
13779         offset member.
13780
13781 2009-07-15  Richard Guenther  <rguenther@suse.de>
13782
13783         PR middle-end/40753
13784         * alias.c (ao_ref_from_mem): Reject FUNCTION_DECL and LABEL_DECL bases.
13785
13786 2009-07-15  Maxim Kuvyrkov  <maxim@codesourcery.com>
13787
13788         * config/m68k/linux-unwind.h (m68k_fallback_frame_state): Update to
13789         handle 2.6.30 kernel.
13790
13791 2009-07-15  DJ Delorie  <dj@redhat.com>
13792
13793         * config/mep/mep.md (sibcall_internal): Change register to allow
13794         for 24-bit addresses.
13795         (sibcall_value_internal): Likewise.
13796
13797 2009-07-14  Ghassan Shobaki  <ghassan.shobaki@amd.com>
13798
13799         * doc/invoke.texi: Added descriptions of the  scheduling heuristics
13800         that are enabled/disabled by the flags introduced by a previous patch.
13801
13802 2009-07-14  DJ Delorie  <dj@redhat.com>
13803
13804         * config/mep/mep.md (sibcall_internal): Include non-toggling
13805         non-jmp case.
13806         (sibcall_value_internal): Likewise.
13807
13808 2009-07-14  Taras Glek  <tglek@mozilla.com>
13809             Rafael Espindola  <espindola@google.com>
13810
13811         * doc/sourcebuild.texi: Document install-plugin target.
13812         * configure.ac: Added install-plugin target to language makefiles.
13813         * configure: Regenerate.
13814         * Makefile.in (install-plugin): Install more headers,
13815         depend on lang.install-plugin.
13816
13817 2009-07-15  Manuel López-Ibáñez  <manu@gcc.gnu.org>
13818
13819         * tree-vrp.c (vrp_evaluate_conditional): Mark strings for
13820         translation.
13821
13822 2009-07-14  DJ Delorie  <dj@redhat.com>
13823
13824         * config/mep/mep.c (mep_vliw_jmp_match): New function.
13825         * config/mep/mep-protos.h (mep_vliw_jmp_match): Prototype it.
13826         * config/mep/mep.md (sibcall_internal): Change test from
13827         mep_vliw_mode_match to mep_vliw_jmp_match.
13828         (sibcall_value_internal): Likewise.
13829
13830 2009-07-14  Uros Bizjak  <ubizjak@gmail.com>
13831
13832         * config/i386/sse.md (copysign<mode>3): New expander.
13833         * config/i386/i386-protos.h (ix86_build_signbit_mask): New prototype.
13834         * config/i386/i386.c (ix86_build_signbit_mask): Make public.
13835         Use ix86_build_const_vector.
13836         (enum ix86_builtins): Add IX86_BUILTIN_CPYSGNPS and
13837         IX86_BUILTIN_CPYSGNPD.
13838         (builtin_description): Add __builtin_ia32_copysignps and
13839         __builtin_ia32_copysignpd.
13840         (ix86_builtin_vectorized_function): Handle BUILT_IN_COPYSIGN
13841         and BUILT_IN_COPYSIGNF.
13842
13843 2009-07-13  Jason Merrill  <jason@redhat.com>
13844
13845         * builtins.c (can_trust_pointer_alignment): New fn.
13846         (get_pointer_alignment): Factor it out from here.
13847         * tree.h: Declare it.
13848
13849 2009-07-14  David Edelsohn  <edelsohn@gnu.org>
13850
13851         * config/rs6000/predicates.md (offsettable_mem_operand): Test
13852         RTX_AUTOINC class.
13853
13854 2009-07-14  Dodji Seketeli  <dodji@redhat.com>
13855
13856         PR debug/40705
13857         PR c++/403057
13858         * dwarf2.out.c (gen_type_die_with_usage): Added comment.
13859
13860 2009-07-14  Richard Guenther  <rguenther@suse.de>
13861             Andrey Belevantsev <abel@ispras.ru>
13862
13863         PR middle-end/40745
13864         * cfgexpand.c (partition_stack_vars): Do not bother to update
13865         alias information when not optimizing.
13866
13867 2009-07-14  Richard Guenther  <rguenther@suse.de>
13868             Andrey Belevantsev <abel@ispras.ru>
13869
13870         * tree-ssa-alias.h (refs_may_alias_p_1): Declare.
13871         (pt_solution_set): Likewise.
13872         * tree-ssa-alias.c (refs_may_alias_p_1): Export.
13873         * tree-ssa-structalias.c (pt_solution_set): New function.
13874         * final.c (rest_of_clean_state): Free SSA data structures.
13875         * print-rtl.c (print_decl_name): Remove.
13876         (print_mem_expr): Implement in terms of print_generic_expr.
13877         * alias.c (ao_ref_from_mem): New function.
13878         (rtx_refs_may_alias_p): Likewise.
13879         (true_dependence): Query alias-export info.
13880         (canon_true_dependence): Likewise.
13881         (write_dependence_p): Likewise.
13882         * tree-dfa.c (get_ref_base_and_extent): For void types leave
13883         size unknown.
13884         * emit-rtl.c (component_ref_for_mem_expr): Remove.
13885         (mem_expr_equal_p): Use operand_equal_p.
13886         (set_mem_attributes_minus_bitpos): Do not use
13887         component_ref_for_mem_expr.
13888         * cfgexpand.c (add_partitioned_vars_to_ptset): New function.
13889         (update_alias_info_with_stack_vars): Likewise.
13890         (partition_stack_vars): Call update_alias_info_with_stack_vars.
13891         * tree-ssa.c (delete_tree_ssa): Do not release SSA names
13892         explicitly nor clear stmt operands.
13893         Free the decl-to-pointer map.
13894         * tree-optimize.c (execute_free_datastructures): Do not free
13895         SSA data structures here.
13896         * tree-flow.h (struct gimple_df): Add decls_to_pointers member.
13897         * Makefile.in (emit-rtl.o): Add pointer-set.h dependency.
13898         (alias.o): Add tree-ssa-alias.h, pointer-set.h and $(TREE_FLOW_H)
13899         dependencies.
13900         (print-rtl.o): Add $(DIAGNOSTIC_H) dependency.
13901
13902 2009-07-13  DJ Delorie  <dj@redhat.com>
13903
13904         * config/mep/mep.h (CC1_SPEC): Tweak parameters to trigger
13905         unrolling at the right iteration count.
13906
13907         * config/mep/mep.c (mep_expand_prologue): Fix frame pointer
13908         calculations.
13909
13910 2009-07-13  Ghassan Shobaki  <ghassan.shobaki@amd.com>
13911
13912         * haifa-sched.c (rank_for_schedule): Introduced flags to
13913         enable/disable individual scheduling heuristics.
13914         * common.opt: Introduced flags to enable/disable individual
13915         heuristics in the scheduler.
13916         * doc/invoke.texi: Introduced flags to enable/disable individual
13917         heuristics in the scheduler.
13918
13919 2009-07-13  Kai Tietz  <kai.tietz@onevision.com>
13920
13921         * config/i386/t-gthr-win32 (LIB2FUNCS_EXTRA): Remove file
13922         config/i386/mingw-tls.c.
13923         * config/i386/mingw-tls.c: Removed.
13924
13925 2009-07-13  Ira Rosen  <irar@il.ibm.com>
13926
13927         * tree-vect-loop.c (get_initial_def_for_reduction): Ensure that the
13928         checks access only relevant statements.
13929         (vectorizable_reduction): Likewise.
13930
13931 2009-07-12  Kai Tietz  <kai.tietz@onevision.com>
13932
13933         * config/i386/cygming.h (TARGET_OS_CPP_BUILTINS): Define _X86_
13934         just for 32-bit case.
13935
13936 2009-07-12  Jan Hubicka  <jh@suse.cz>
13937
13938         PR tree-optimization/40585
13939         * except.c (expand_resx_expr): When there already is resume
13940         instruction, produce linked list.
13941         (build_post_landing_pads): Assert that resume is empty.
13942         (connect_post_landing_pads): Handle resume lists.
13943         (dump_eh_tree): Dump resume list.
13944
13945 2009-07-12  Ira Rosen  <irar@il.ibm.com>
13946
13947         * tree-parloops.c (loop_parallel_p): Call vect_is_simple_reduction
13948         with additional argument.
13949         * tree-vectorizer.h (enum vect_def_type): Add
13950         vect_double_reduction_def.
13951         (vect_is_simple_reduction): Add argument.
13952         * tree-vect-loop.c (vect_determine_vectorization_factor): Fix
13953         indentation.
13954         (vect_analyze_scalar_cycles_1): Detect double reduction. Call
13955         vect_is_simple_reduction with additional argument.
13956         (vect_analyze_loop_operations): Handle exit phi nodes in case of
13957         double reduction.
13958         (reduction_code_for_scalar_code): Handle additional codes by
13959         returning ERROR_MARK for them. Fix comment and indentation.
13960         (vect_is_simple_reduction): Fix comment, add argument to specify
13961         double reduction. Detect double reduction.
13962         (get_initial_def_for_induction): Fix indentation.
13963         (get_initial_def_for_reduction): Fix comment and indentation.
13964         Handle double reduction. Create initial definitions that do not
13965         require adjustment if ADJUSTMENT_DEF is NULL. Handle additional cases.
13966         (vect_create_epilog_for_reduction): Fix comment, add argument to
13967         handle double reduction. Use PLUS_EXPR in case of MINUS_EXPR in
13968         epilogue result extraction. Create double reduction phi node and
13969         replace relevant uses.
13970         (vectorizable_reduction): Call vect_is_simple_reduction with
13971         additional argument. Fix indentation. Update epilogue code treatment
13972         according to the changes in reduction_code_for_scalar_code. Check
13973         for double reduction. Call vect_create_epilog_for_reduction with
13974         additional argument.
13975         * tree-vect-stmts.c (process_use): Handle double reduction, update
13976         documentation.
13977         (vect_mark_stmts_to_be_vectorized): Handle double reduction.
13978         (vect_get_vec_def_for_operand): Likewise.
13979
13980 2009-07-12  Danny Smith  <dansmister@gmail.com>
13981
13982         * config/i386/winnt.c (i386_pe_determine_dllexport_p): Don't
13983         dllexport if !TREE_PUBLIC.
13984         (i386_pe_maybe_record_exported_symbol): Assert TREE_PUBLIC.
13985
13986 2009-07-11  Anatoly Sokolov  <aesok@post.ru>
13987
13988         * config/avr/avr.h (TARGET_CPU_CPP_BUILTINS): Redefine.
13989         (avr_extra_arch_macro) Remove declatation.
13990         * config/avr/avr.c (avr_cpu_cpp_builtins): New function.
13991         (avr_extra_arch_macro) Declare as static.
13992         * config/avr/avr-protos.h (avr_cpu_cpp_builtins): Dclare.
13993
13994 2009-07-11  Jan Hubicka  <jh@suse.cz>
13995
13996         PR middle-end/48388
13997         * except.c (can_be_reached_by_runtime): Test for NULL aka bitmap.
13998
13999 2009-07-11  Jakub Jelinek  <jakub@redhat.com>
14000
14001         PR debug/40713
14002         * dwarf2out.c (dw_fde_struct): Add in_std_section and
14003         cold_in_std_section bits.
14004         (dwarf2out_begin_prologue): Initialize them.
14005         (dwarf2out_finish): Don't emit FDE range into .debug_ranges
14006         if already covered by text_section or cold_text_section range.
14007
14008         PR rtl-optimization/40667
14009         * defaults.h (MINIMUM_ALIGNMENT): Define if not defined.
14010         * doc/tm.texi (MINIMUM_ALIGNMENT): Document it.
14011         * config/i386/i386.h (MINIMUM_ALIGNMENT): Define.
14012         * config/i386/i386.c (ix86_minimum_alignment): New function.
14013         * config/i386/i386-protos.h (ix86_minimum_alignment): New prototype.
14014         * cfgexpand.c (expand_one_var): Use MINIMIM_ALIGNMENT.
14015         * emit-rtl.c (gen_reg_rtx): Likewise.
14016         * function.c (assign_parms): Likewise.  If nominal_type needs
14017         bigger alignment than FUNCTION_ARG_BOUNDARY, use its alignment
14018         rather than passed_type's alignment.
14019
14020         PR target/40668
14021         * function.c (assign_parm_setup_stack): Adjust
14022         MEM_OFFSET (data->stack_parm) if promoted_mode is different
14023         from nominal_mode on big endian.
14024
14025 2009-07-11  Paolo Bonzini  <bonzini@gnu.org>
14026
14027         * expmed.c (emit_store_flag_1): Fix choice of zero vs. sign extension.
14028
14029 2009-07-10  DJ Delorie  <dj@redhat.com>
14030
14031         * config/mep/mep.c (mep_can_inline_p): Correct logic, and simplify.
14032
14033 2009-07-10  Mark Mitchell  <mark@codesourcery.com>
14034
14035         * config/arm/thumb2.md (thumb2_cbz): Correct computation of length
14036         attribute.
14037         (thumb2_cbnz): Likewise.
14038
14039 2009-07-10  David Daney  <ddaney@caviumnetworks.com>
14040
14041         PR target/39079
14042         * config.gcc (supported_defaults): Add synci.
14043         (with_synci): Add validation.
14044         (all_defaults): Add synci.
14045         * config/mips/mips.md (clear_cache): Use TARGET_SYNCI instead of
14046         ISA_HAS_SYNCI.
14047         (synci): Same.
14048         * config/mips/mips.opt (msynci): New option.
14049         * config/mips/mips.c (mips_override_options): Warn on use of
14050         -msynci for targets that do now support it.
14051         * gcc/config/mips/mips.h (OPTION_DEFAULT_SPECS): Add a default for
14052         msynci.
14053         * gcc/doc/invoke.texi (-msynci): Document the new option.
14054         * doc/install.texi (--with-synci): Document the new option.
14055
14056 2009-07-10  Richard Guenther  <rguenther@suse.de>
14057
14058         PR tree-optimization/40496
14059         * tree-ssa-loop-manip.c (tree_transform_and_unroll_loop): Create
14060         the PHI result with a compatible type.
14061
14062 2009-07-10  Manuel López-Ibáñez  <manu@gcc.gnu.org>
14063
14064         PR 25509
14065         PR 40614
14066         * c.opt (Wunused-result): New.
14067         * doc/invoke.texi: Document it.
14068         * c-common.c (c_warn_unused_result): Use it.
14069
14070 2009-07-09  DJ Delorie  <dj@redhat.com>
14071
14072         * targhooks.c (default_target_can_inline_p): Rename from
14073         default_target_option_can_inline_p.
14074         * targhooks.h (default_target_can_inline_p): Likewise.
14075         * target-def.h (TARGET_CAN_INLINE_P): Rename from
14076         TARGET_OPTION_CAN_INLINE_P.
14077         * config/i386/i386.c (TARGET_CAN_INLINE_P): Likewise.
14078         * config/mep/mep.c (TARGET_CAN_INLINE_P): Likewise.
14079         (mep_target_can_inline_p): Rename from
14080         mep_target_option_can_inline_p.
14081
14082         PR target/40626
14083         * config/mep/mep.h (FUNCTION_ARG_REGNO_P): Add coprocessor
14084         registers used to pass vectors.
14085
14086         * config/mep/mep.c (mep_option_can_inline_p): Remove error call.
14087
14088 2009-07-09  Tom Tromey  <tromey@redhat.com>
14089
14090         * unwind-dw2-fde-darwin.c: Include dwarf2.h.
14091         * config/mmix/mmix.c: Include dwarf2.h.
14092         * config/rs6000/darwin-fallback.c: Include dwarf2.h.
14093         * config/xtensa/unwind-dw2-xtensa.c: Include dwarf2.h.
14094         * config/sh/sh.c: Include dwarf2.h.
14095         * config/i386/i386.c: Include dwarf2.h.
14096         * Makefile.in (DWARF2_H): Remove 'elf'.
14097         * except.c: Include dwarf2.h.
14098         * unwind-dw2.c: Include dwarf2.h.
14099         * dwarf2out.c: Include dwarf2.h.
14100         * unwind-dw2-fde-glibc.c: Include dwarf2.h.
14101         * unwind-dw2-fde.c: Include dwarf2.h.
14102         * dwarf2asm.c: Include dwarf2.h.
14103
14104 2009-07-09  Maxim Kuvyrkov  <maxim@codesourcery.com>
14105
14106         * haifa-sched.c (insn_finishes_cycle_p): New static function.
14107         (max_issue): Use it.
14108         * sched-int.h (struct sched_info: insn_finishes_block_p): New
14109         scheduler hook.
14110         * sched-rgn.c (rgn_insn_finishes_block_p): Implement it.
14111         (region_sched_info): Update.
14112         * sched-ebb.c (ebb_sched_info): Update.
14113         * modulo-sched.c (sms_sched_info): Update.
14114         * sel-sched-ir.c (sched_sel_haifa_sched_info): Update.
14115
14116 2009-07-09  Maxim Kuvyrkov  <maxim@codesourcery.com>
14117
14118         * varasm.c (build_constant_desc): Don't share RTL in pool entries.
14119
14120 2009-07-09  Basile Starynkevitch  <basile@starynkevitch.net>
14121
14122         * plugin.c (try_init_one_plugin): passes RTLD_GLOBAL to dlopen.
14123
14124 2009-07-09  Jakub Jelinek  <jakub@redhat.com>
14125
14126         PR middle-end/40692
14127         * fold-const.c (fold_cond_expr_with_comparison): Don't replace
14128         arg1 with arg01 if arg1 is already INTEGER_CST.
14129
14130 2009-07-08  Adam Nemet  <anemet@caviumnetworks.com>
14131
14132         * simplify-rtx.c (simplify_binary_operation_1) <AND>:
14133         Transform (and (truncate)) into (truncate (and)).
14134
14135 2009-07-08  Adam Nemet  <anemet@caviumnetworks.com>
14136
14137         * combine.c (make_extraction): Check TRULY_NOOP_TRUNCATION before
14138         creating LHS paradoxical subregs.  Fix surrounding returns to
14139         use NULL_RTX rather than 0.
14140
14141 2009-07-08  DJ Delorie  <dj@redhat.com>
14142
14143         * config/mep/mep.c (mep_option_can_inline_p): New.
14144         (TARGET_OPTION_CAN_INLINE_P): Define.
14145
14146 2009-07-08  Mark Wielaard  <mjw@redhat.com>
14147
14148         PR debug/40659
14149         * dwarf2out.c (add_data_member_location_attribute): When we have
14150         only a constant offset don't emit a new location description using
14151         DW_OP_plus_uconst, but just add the constant with add_AT_int, when
14152         dwarf_version > 2.
14153
14154 2009-07-08  Richard Henderson  <rth@redhat.com>
14155
14156         PR target/38900
14157         * config/i386/i386.h (CONDITIONAL_REGISTER_USAGE): Move to i386.c.
14158         (enum reg_class): Add CLOBBERED_REGS.
14159         (REG_CLASS_NAMES, REG_CLASS_CONTENTS): Likewise.
14160         * config/i386/i386.c (ix86_conditional_register_usage): Moved
14161         from CONDITIONAL_REGISTER_USAGE; build CLOBBERED_REGS for 64-bit.
14162         (ix86_function_ok_for_sibcall): Tidy.  Disallow MS->SYSV sibcalls.
14163         (ix86_expand_call): Use sibcall_insn_operand when needed.  Don't
14164         force 64-bit sibcalls into R11.
14165         * config/i386/constraints.md (U): New constraint.
14166         * config/i386/i386.md (sibcall_1, sibcall_value_1): Use it.
14167         (sibcall_1_rex64, sibcall_value_1_rex64): Likewise.
14168         (sibcall_1_rex64_v, sibcall_value_1_rex64_v): Remove.
14169
14170 2009-07-08  Shujing Zhao  <pearly.zhao@oracle.com>
14171
14172         * basic-block.h (dump_regset, debug_regset): Remove duplicate
14173         prototypes.
14174         * c-objc-common.h (c_initialize_diagnostics): Ditto.
14175         * ebitmap.h (dump_ebitmap): Ditto.
14176         * optabs.h (optab_libfunc): Ditto.
14177         * tree.h (tree_expr_nonzero_warnv_p): Ditto.
14178         * tree-flow.h (vect_can_force_dr_alignment_p,
14179         get_vectype_for_scalar_type): Ditto.
14180         (vectorize_loops): Move prototype to ...
14181         * tree-vectorizer.h: ... here. Also, adjust comment.
14182         (vect_set_verbosity_level): Remove duplicate prototype.
14183         * tree-ssa-loop.c: Include tree-vectorizer.h.
14184         * Makefile.in (tree-ssa-loop.o): Depend on tree-vectorizer.h.
14185
14186 2009-07-08  Nick Clifton  <nickc@redhat.com>
14187
14188         * config/i386/unix.h (ASM_COMMENT_START): Add a space after the
14189         forward slash.
14190
14191 2009-07-08  DJ Delorie  <dj@redhat.com>
14192
14193         * config/mep/mep-ivc2.cpu (cpmovtocsar0_C3, cpmovtocsar1_C3,
14194         cpmovtocc_C3, cpmovtocsar0_P0S_P1, cpmovtocsar1_P0S_P1,
14195         cpmovtocc_P0S_P1): Mark volatile.  Note which registers are
14196         written to.
14197         * config/mep/intrinsics.md: Regenerated.
14198         * config/mep/mep.c (mep_interrupt_saved_reg): Save IVC2 control
14199         registers when asm() or calls are detected.
14200
14201 2009-07-08  Manuel López-Ibáñez  <manu@gcc.gnu.org>
14202
14203         PR c++/31246
14204         * gimplify.c (gimplify_expr): Propagate no_warning flag when
14205         gimplifying.
14206         * gimple (gimple_build_call_from_tree): Likewise.
14207         * tree-cfg.c (remove_useless_stmts_warn_notreached): Check
14208         no_warning flag before warning.
14209
14210 2009-07-07  Manuel López-Ibáñez  <manu@gcc.gnu.org>
14211
14212         * tree.c (set_expr_locus): Remove.
14213         * tree.h (EXPR_LOCUS,SET_EXPR_LOCUS,set_expr_locus): Remove.
14214         * c-typeck.c (c_finish_stmt_expr):  Replace EXPR_LOCUS by
14215         EXPR_LOCATION.
14216         * gimplify.c (internal_get_tmp_var): Likewise.
14217         (gimplify_call_expr): Likewise.
14218         (gimplify_one_sizepos): Likewise.
14219
14220 2009-07-07  Eric Botcazou  <ebotcazou@adacore.com>
14221
14222         PR debug/40666
14223         * dbxout.c (dbxout_symbol) <PARM_DECL>: Deal with parameters pointing
14224         to variables for debugging purposes.
14225
14226 2009-06-23  Mark Loeser  <mark@halcy0n.com>
14227
14228         PR build/40010
14229         * Makefile.in (gcc.pod): Depend on gcc-vers.texi.
14230
14231 2009-07-07  Manuel López-Ibáñez  <manu@gcc.gnu.org>
14232
14233         * pretty-print.c (pp_base_format): Remove %J.
14234         * c-format.c (gcc_diag_char_table, gcc_tdiag_char_table,
14235         gcc_cxxdiag_char_table): Likewise.
14236         (init_dynamic_diag_info): Likewise.
14237
14238 2009-07-07  Manuel López-Ibáñez  <manu@gcc.gnu.org>
14239
14240         * pretty-print.c (pp_base_format): Remove %H.
14241         * c-format.c (gcc_diag_char_table, gcc_tdiag_char_table,
14242         gcc_cxxdiag_char_table): Likewise.
14243         (init_dynamic_diag_info): Likewise.
14244         * config/mep/mep.c (mep_select_section): Likewise.
14245
14246 2009-07-07  Duncan Sands  <baldrick@free.fr>
14247
14248         * final.c (pass_clean_state): Give the pass a name.
14249         * passes.c (pass_rest_of_compilation): Likewise.
14250         * tree-optimize.c (pass_all_optimizations): Likewise.
14251
14252 2009-07-07  H.J. Lu  <hongjiu.lu@intel.com>
14253
14254         * config/ia64/ia64.c (ia64_handle_model_attribute): Remove
14255         an extra 'decl' for error_at.
14256
14257 2009-07-07  Jakub Jelinek  <jakub@redhat.com>
14258
14259         PR middle-end/40669
14260         * tree-tailcall.c (adjust_return_value_with_ops,
14261         create_tailcall_accumulator): Set DECL_GIMPLE_REG_P on the temporary
14262         if it has complex or vector type.
14263
14264 2009-07-07  Olivier Hainque  <hainque@adacore.com>
14265
14266         * config/alpha/t-osf4 (SHLIB_LINK): Do not hide the dummy weak
14267         pthread symbols.
14268
14269 2009-07-07  Basile Starynkevitch  <basile@starynkevitch.net>
14270
14271         * Makefile.in: added more lists of includes to PLUGIN_HEADERS.
14272
14273 2009-07-07  Manuel López-Ibáñez  <manu@gcc.gnu.org>
14274
14275         * cgraphunit.c: Replace %J by an explicit location.  Update all calls.
14276         * c-decl.c: Likewise.
14277         * function.c: Likewise.
14278         * varasm.c: Likewise.
14279         * tree-ssa.c: Likewise.
14280         * c-common.c: Likewise.
14281         * tree-cfg.c: Likewise.
14282         * config/spu/spu.c: Likewise.
14283         * config/ia64/ia64.c: Likewise.
14284         * config/v850/v850.c: Likewise.
14285
14286 2009-07-06  DJ Delorie  <dj@redhat.com>
14287
14288         * config/mep/mep-core.cpu (fsft, ssarb): Mark as VOLATILE.
14289         * config/mep/mep-ivc2.cpu (many): Add VOLATILE to more insns that make
14290         unspecified accesses to control registers.
14291         * config/mep/intrinsics.md: Regenerate.
14292         * config/mep/intrinsics.h: Regenerate.
14293         * config/mep/mep-intrin.h: Regenerate.
14294
14295 2009-07-07  Manuel López-Ibáñez  <manu@gcc.gnu.org>
14296
14297         * c-lex.c: Replace %H by an explicit location. Update all calls.
14298         * c-common.c: Likewise.
14299         * c-decl.c: Likewise.
14300         * c-typeck.c: Likewise.
14301         * fold-const.c: Likewise.
14302         * gimplify.c: Likewise.
14303         * stmt.c: Likewise.
14304         * tree-cfg.c: Likewise.
14305         * tree-ssa-loop-niter.c: Likewise.
14306         * tree-vrp.c: Likewise.
14307         * value-prof.c: Likewise.
14308
14309 2009-07-06  Diego Novillo  <dnovillo@google.com>
14310
14311         * tree-dfa.c (dump_variable): Write DECL_INITIAL for VAR
14312         if it has one.  Handle cases where VAR does not have an
14313         annotation or cfun is NULL.
14314
14315 2009-07-06  Diego Novillo  <dnovillo@google.com>
14316
14317         * tree.c: Include debug.h.
14318         (initialize_tree_contains_struct): New.
14319         (init_ttree): Call it.
14320         (tree_node_structure_for_code): Factor out of ...
14321         (tree_node_structure): ... here.
14322         * treestruct.def (TS_PHI_NODE): Remove.
14323         (TS_GIMPLE_STATEMENT): Remove.
14324
14325 2009-07-06  Diego Novillo  <dnovillo@google.com>
14326
14327         * tree-pretty-print.c (dump_generic_node): Protect against NULL op0.
14328         (debug_tree_chain): Handle cycles.
14329
14330 2009-07-06  Nick Clifton  <nickc@redhat.com>
14331             DJ Delorie  <dj@redhat.com>
14332
14333         * config.sh/lib1funcs.h (FMOVD_WORKS): Only define if
14334         __FMOVD_ENABLED__ is defined.
14335         * config/sh/sh.h
14336         (TARGET_FMOVD): Provide a default definition.
14337         (MASK_FMOVD): Likewise.
14338         (TARGET_CPU_CPP_BUILTINS): Define
14339         __FMOVD_ENABLED__ if TARGET_FMOVD is true.
14340         * config/sh/sh.md (movdf_i4): For alternative 0 use either one or
14341         two fmov instructions depending upon whether TARGET_FMOVD is enabled.
14342         (split for DF load from memory into register): Also handle
14343         MEMs which consist of REG+DISP addressing.
14344         (split for DF store from register to memory): Likewise.
14345         (movsf_ie): Always use single fp_mode.
14346         * config/sh/sh.c (sh_override_options): Do not automatically
14347         enable TARGET_MOVD for the SH2A when supporting doubles - leave
14348         that to the -mfmovd command line switch.
14349         (broken_move): Do not restrict fldi test to only the SH4 and SH4A.
14350         (fldi_ok): Always allow.
14351         * config/sh/sh.opt (mfmovd): Remove this switch.
14352         * doc/invoke.texi (-mfmovd): Remove documentation of this switch.
14353
14354 2009-07-06  J"orn Rennecke  <joern.rennecke@arc.com>
14355             Kaz Kojima  <kkojima@gcc.gnu.org>
14356
14357         PR rtl-optimization/30807
14358         * postreload.c (reload_combine): For every new use of REG_SUM,
14359         record the use of BASE.
14360
14361 2009-07-06  Jan Hubicka  <jh@suse.cz>
14362
14363         * params.def: Revert my accidental commit at 2009-06-30.
14364
14365 2009-07-04  Ian Lance Taylor  <iant@google.com>
14366
14367         PR target/40636
14368         * config/i386/msformat-c.c (mingw_format_attributes): Declare as
14369         EXPORTED_CONST.
14370         (mingw_format_attribute_overrides): Likewise.
14371
14372 2009-07-04  Jakub Jelinek  <jakub@redhat.com>
14373
14374         PR debug/40596
14375         * dwarf2out.c (based_loc_descr): For crtl->stack_realign_tried
14376         don't check cfa.reg.  Instead of cfa.indirect use
14377         fde && fde->drap_reg != INVALID_REGNUM test.
14378
14379 2009-07-04  Eric Botcazou  <ebotcazou@adacore.com>
14380
14381         * postreload.c (reload_combine): Replace CONST_REG with INDEX_REG.
14382
14383 2009-07-03  Vladimir Makarov  <vmakarov@redhat.com>
14384
14385         PR target/40587
14386         * ira.c (build_insn_chain): Use DF_LR_OUT instead of df_get_live_out.
14387
14388 2009-07-03  Richard Guenther  <rguenther@suse.de>
14389
14390         PR tree-optimization/40640
14391         * tree-switch-conversion.c (build_arrays): Perform arithmetic
14392         in original type.
14393
14394 2009-07-03  Jan Hubicka  <jh@suse.cz>
14395
14396         * ipa-inline.c (cgraph_decide_inlining_incrementally): When optimizing
14397         for size, reduce amount of inlining.
14398
14399 2009-07-03  Richard Guenther  <rguenther@suse.de>
14400
14401         PR middle-end/34163
14402         * tree-chrec.c (chrec_convert_1): Fold (T2)(t +- x) to (T2)t +- (T2)x
14403         if t +- x is known to not overflow and the conversion widens the
14404         operation.
14405         * Makefile.in (tree-chrec.o): Add $(FLAGS_H) dependency.
14406
14407 2009-07-03  Jan Hubicka  <jh@suse.cz>
14408
14409         * ipa-pure-const.c (analyze): Update loop optimizer init.
14410         * tree-ssa-loop-iv-canon.c (empty_loop_p, remove_empty_loop,
14411         try_remove_empty_loop, remove_empty_loops): Remove.
14412         * tree-ssa-loop.c (tree_ssa_empty_loop, pass_empty_loop): Remove.
14413         * tree-ssa-dce.c (find_obviously_necessary_stmts): Use finiteness info
14414         to mark regular loops as neccesary.
14415         (degenerate_phi_p): New function.
14416         (propagate_necessity, remove_dead_phis): Use it.
14417         (forward_edge_to_pdom): Likewise.
14418         (eliminate_unnecessary_stmts): Take care to remove uses of results of
14419         virtual PHI nodes that became unreachable.
14420         (perform_tree_ssa_dce): Initialize/deinitialize loop optimizer.
14421         * tree-flow.h (remove_empty_loops): Remove.
14422         * passes.c (init_optimization_passes): Remove.
14423
14424 2009-07-03  Uros Bizjak  <ubizjak@gmail.com>
14425
14426         * config/i386/i386.md (fix_trunc<mode>_fisttp_i387_1): Use
14427         can_create_pseudo_p.
14428         (*fix_trunc<mode>_i387_1): Ditto.
14429         (*floathi<mode>2_1): Ditto.
14430         (*float<SSEMODEI24:mode><X87MODEF:mode>2_1): Ditto.
14431         (*fistdi2_1): Ditto.
14432         (*fist<mode>2_1): Ditto.
14433         (frndintxf2_floor): Ditto.
14434         (*fist<mode>2_floor_1): Ditto.
14435         (frndintxf2_ceil): Ditto.
14436         (*fist<mode>2_ceil_1): Ditto.
14437         (frndintxf2_trunc): Ditto.
14438         (frndintxf2_mask_pm): Ditto.
14439         (fxam<mode>2_i387_with_temp): Ditto.
14440         * config/i386/sse.md (mulv16qi3): Ditto.
14441         (*sse2_mulv4si3): Ditto.
14442         (mulv2di3): Ditto.
14443         (sse4_2_pcmpestr): Ditto.
14444         (sse4_2_pcmpistr): Ditto.
14445
14446 2009-07-03  Jan Hubicka  <jh@suse.cz>
14447
14448         * tree-ssa-dce.c (bb_contains_live_stmts): New bitmap.
14449         (mark_stmt_necessary): Set it.
14450         (mark_operand_necessary): Set it.
14451         (mark_control_dependent_edges_necessary): Set it.
14452         (mark_virtual_phi_result_for_renaming): New function.
14453         (get_live_post_dom): New function.
14454         (forward_edge_to_pdom): New function.
14455         (remove_dead_stmt): Fix handling of control dependences.
14456         (tree_dce_init): Init new bitmap.
14457         (tree_dce_done): Free it.
14458
14459 2009-07-02  Richard Guenther  <rguenther@suse.de>
14460
14461         PR bootstrap/40617
14462         * tree-ssa-structalias.c (new_var_info): Initialize
14463         is_restrict_var.
14464
14465 2009-07-02  Jan Hubicka  <jh@suse.cz>
14466
14467         * ipa-pure-const.c (check_op): Use PTA info to see if indirect_ref is
14468         local.
14469
14470 2009-07-02  Paolo Bonzini  <bonzini@gnu.org>
14471
14472         * expmed.c (emit_cstore, emit_store_flag_1): Accept target_mode
14473         instead of recomputing it.  Adjust calls.
14474         (emit_store_flag): Adjust recursive calls.
14475
14476 2009-07-02  Richard Guenther  <rguenther@suse.de>
14477
14478         * tree-ssa-live.c (remove_unused_locals): Do not remove
14479         heap variables.
14480         * tree-ssa-structalias.c (handle_lhs_call): Delay setting
14481         of DECL_EXTERNAL for HEAP variables.
14482         (compute_points_to_sets): Set DECL_EXTERNAL for escaped
14483         HEAP variables.  Do not adjust RESTRICT vars.
14484         (find_what_var_points_to): Nobody cares if something
14485         points to READONLY.
14486
14487 2009-07-02  Ben Elliston  <bje@au.ibm.com>
14488
14489         * unwind-dw2-fde-glibc.c (_Unwind_IteratePhdrCallback): Move
14490         pc_low and pc_high declarations to the top of the function.
14491
14492 2009-07-01  DJ Delorie  <dj@redhat.com>
14493
14494         * config/mep/mep.c (mep_handle_option): Leave IVC2 control
14495         registers as fixed.
14496         (mep_interrupt_saved_reg): Save appropriate IVC2 control registers.
14497         * config/mep/mep-ivc2.cpu: Add VOLATILE to insns that make
14498         unspecified accesses to control registers.
14499         * config/mep/intrinsics.md: Regenerate.
14500         * config/mep/intrinsics.h: Regenerate.
14501         * config/mep/mep-intrin.h: Regenerate.
14502
14503 2009-07-01  Anthony Green  <green@moxielogic.com>
14504
14505         * config/moxie/moxie.c (moxie_expand_prologue): Use dec
14506         instruction when possible.
14507         (moxie_expand_prologue): Ditto.  Also, save an instruction and
14508         some complexity by popping off of $r12 instead of $sp.
14509         * config/moxie/moxie.md (movsi_pop): Don't assume $sp.  Take two
14510         operands.
14511
14512 2009-07-01  Richard Henderson  <rth@redhat.com>
14513
14514         PR bootstrap/40347
14515         * function.c (reposition_prologue_and_epilogue_notes): If epilogue
14516         contained no insns, reposition note before last insn.
14517
14518 2009-07-01  Richard Henderson  <rth@redhat.com>
14519
14520         PR debug/40431
14521         * dwarf2out.c (def_cfa_1): Revert 2009-06-11 change for
14522         DW_CFA_def_cfa_offset and DW_CFA_def_cfa.
14523
14524 2009-07-01  Michael Meissner  <meissner@linux.vnet.ibm.com>
14525
14526         PR bootstrap/40558
14527         * config/rs6000/rs6000.c (print_operand): Undo change that breaks
14528         darwin9 for printing reg addresses with %y.
14529
14530 2009-07-01  Adam Nemet  <anemet@caviumnetworks.com>
14531
14532         * combine.c (force_to_mode): Handle TRUNCATE.  Factor out
14533         truncation from operands in binary operations.
14534
14535 2009-07-01  Adam Nemet  <anemet@caviumnetworks.com>
14536
14537         Revert:
14538         2009-01-11  Adam Nemet  <anemet@caviumnetworks.com>
14539         * expmed.c (store_bit_field_1): Properly truncate the paradoxical
14540         subreg of op0 to the original op0.
14541
14542         * expmed.c (store_bit_field_1): Use a temporary as the destination
14543         instead of a paradoxical subreg when we need to truncate the result.
14544
14545 2009-07-01  DJ Delorie  <dj@redhat.com>
14546
14547         * config/mep/mep-ivc2.cpu (cmov, cmovc, cmovh): Add intrinsic
14548         names to VLIW variants.
14549         (ivc2rm, ivc2crn): Make data type consistent with non-VLIW variants.
14550         * config/mep/intrinsics.md: Regenerate.
14551         * config/mep/intrinsics.h: Regenerate.
14552         * config/mep/mep-intrin.h: Regenerate.
14553
14554 2009-07-01  Jakub Jelinek  <jakub@redhat.com>
14555
14556         PR debug/40462
14557         * jump.c (returnjump_p): Revert last patch.
14558         * dwarf2out.c (dwarf2out_begin_epilogue): Handle SEQUENCEs.
14559
14560 2009-07-01  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
14561
14562         PR target/40575
14563         * pa.md (casesi32p): Use jump table label to determine the offset
14564         of the jump table.
14565         (casesi64p): Likewise.
14566
14567         * pa.c (forward_branch_p): Return bool type.  Use instruction
14568         addresses when available.  Assert that INSN has a jump label.
14569         (pa_adjust_insn_length): Don't call forward_branch_p if INSN doesn't
14570         have a jump label.
14571
14572 2009-07-01  Richard Guenther  <rguenther@suse.de>
14573
14574         PR tree-optimization/19831
14575         * tree-ssa-dce.c (propagate_necessity): Calls to functions
14576         that only act as barriers do not make any previous stores necessary.
14577         * tree-ssa-structalias.c (handle_lhs_call): Delay making
14578         HEAP variables global, do not add a constraint from nonlocal.
14579         (find_func_aliases): Handle escapes through return statements.
14580         (compute_points_to_sets): Make escaped HEAP variables global.
14581
14582 2009-07-01  Paolo Bonzini  <bonzini@gnu.org>
14583
14584         PR bootstrap/40597
14585         * expmed.c (emit_store_flag): Perform a conversion if necessary,
14586         after reducing a DImode cstore to SImode.
14587
14588 2009-07-01  Paolo Bonzini  <bonzini@gnu.org>
14589
14590         * expr.c (expand_expr_real_1): Reinstate fallthrough to
14591         TRUTH_ANDIF_EXPR if do_store_flag returns NULL.
14592
14593 2009-07-01  Maciej W. Rozycki  <macro@linux-mips.org>
14594
14595         * config/vax/vax.h (TARGET_BSD_DIVMOD): New macro.  Set to 1.
14596         * config/vax/linux.h (TARGET_BSD_DIVMOD): New macro.  Redefine the
14597         to 0.
14598         * config/vax/vax.c (vax_init_libfuncs): Only redefine udiv_optab
14599         and umod_optab if TARGET_BSD_DIVMOD.
14600         * config/vax/lib1funcs.asm: New file.
14601         * config/vax/t-linux: New file.
14602         * config.gcc (vax-*-linux*): Set tmake_file to vax/t-linux.
14603
14604 2009-06-30  Jakub Jelinek  <jakub@redhat.com>
14605
14606         PR c++/40566
14607         * convert.c (convert_to_integer) <case COND_EXPR>: Don't convert
14608         to type arguments that have void type.
14609
14610         PR debug/40573
14611         * dwarf2out.c (gen_formal_parameter_die): Call
14612         equate_decl_number_to_die if node is different from origin.
14613
14614 2009-06-30  Anthony Green  <green@moxielogic.com>
14615
14616         Clean up moxie port for --enable-build-with-cxx.
14617         * config/moxie/moxie.c (moxie_function_value): First two
14618         parameters are const_tree, not tree.
14619         * config/moxie/moxie.h (enum reg_class): Rename CC_REG to CC_REGS.
14620         (REG_CLASS_NAMES): Ditto.
14621         (REGNO_REG_CLASS): Ditto.
14622         * config/moxie/moxie-protos.h (moxie_override_options): Declare.
14623         (moxie_function_value): Fix constyness of arguments.
14624
14625 2009-06-30  Eric Botcazou  <ebotcazou@adacore.com>
14626
14627         * cgraphunit.c (cgraph_finalize_compilation_unit): Call
14628         finalize_size_functions before further processing.
14629         * stor-layout.c: Include cgraph.h, tree-inline.h and tree-dump.h.
14630         (variable_size): Call self_referential_size on size expressions
14631         that contain a PLACEHOLDER_EXPR.
14632         (size_functions): New static variable.
14633         (copy_self_referential_tree_r): New static function.
14634         (self_referential_size): Likewise.
14635         (finalize_size_functions): New global function.
14636         * tree.c: Include tree-inline.h.
14637         (push_without_duplicates): New static function.
14638         (find_placeholder_in_expr): New global function.
14639         (substitute_in_expr) <tcc_declaration>: Return the replacement object
14640         on equality.
14641         <tcc_expression>: Likewise.
14642         <tcc_vl_exp>: If the replacement object is a constant, try to inline
14643         the call in the expression.
14644         * tree.h (finalize_size_functions): Declare.
14645         (find_placeholder_in_expr): Likewise.
14646         (FIND_PLACEHOLDER_IN_EXPR): New macro.
14647         (substitute_placeholder_in_expr): Update comment.
14648         * tree-inline.c (remap_decl): Do not unshare trees if do_not_unshare
14649         is true.
14650         (copy_tree_body_r): Likewise.
14651         (copy_tree_body): New static function.
14652         (maybe_inline_call_in_expr): New global function.
14653         * tree-inline.h (struct copy_body_data): Add do_not_unshare field.
14654         (maybe_inline_call_in_expr): Declare.
14655         * Makefile.in (tree.o): Depend on TREE_INLINE_H.
14656         (stor-layout.o): Depend on CGRAPH_H, TREE_INLINE_H, TREE_DUMP_H and
14657         GIMPLE_H.
14658
14659 2009-06-30  Richard Guenther  <rguenther@suse.de>
14660
14661         * tree-ssa-dce.c (mark_all_reaching_defs_necessary_1): Always
14662         continue walking.
14663         (propagate_necessity): Do not mark reaching defs of stores
14664         as necessary.
14665
14666 2009-06-30  Jan Hubicka  <jh@suse.cz>
14667
14668         * cfgloopanal.c (check_irred): Move into ...
14669         (mark_irreducible_loops): ... here; return true if ireducible
14670         loops was found.
14671         * ipa-pure-const.c: Include cfgloop.h and tree-scalar-evolution.h
14672         (analyze_function): Try to prove loop finiteness.
14673         * cfgloop.h (mark_irreducible_loops): Update prototype.
14674         * Makefile.in (ipa-pure-const.o): Add dependency on SCEV and CFGLOOP.
14675
14676 2009-06-30  Basile Starynkevitch  <basile@starynkevitch.net>
14677
14678         * Makefile.in (PLUGIN_HEADERS): added ggc, tree-dump, pretty-print.
14679
14680 2009-06-30  Ira Rosen  <irar@il.ibm.com>
14681
14682         PR tree-optimization/40542
14683         * tree-vect-stmts.c (vect_analyze_stmt): Don't vectorize volatile
14684         types.
14685
14686 2009-06-30  Martin Jambor  <mjambor@suse.cz>
14687
14688         PR tree-optimization/40582
14689         * tree-sra.c (build_ref_for_offset_1): Use types_compatible_p rather
14690         than useless_type_conversion_p.
14691         (generate_subtree_copies): Increment sra_stats.subtree_copies at a
14692         proper place.
14693
14694 2009-06-30  Martin Jambor  <mjambor@suse.cz>
14695
14696         PR middle-end/40554
14697         * tree-sra.c (sra_modify_expr): Add access->offset to start_offset.
14698
14699 2009-06-30  Richard Guenther  <rguenther@suse.de>
14700
14701         * tree-ssa-alias.c (walk_aliased_vdefs_1): Change interface to
14702         use ao_ref references.
14703         (walk_aliased_vdefs): Likewise.
14704         * tree-ssa-alias.h (walk_aliased_vdefs): Adjust prototype.
14705         * tree-ssa-dce.c (struct ref_data): Remove.
14706         (mark_aliased_reaching_defs_necessary_1): Use the ao_ref argument.
14707         (mark_aliased_reaching_defs_necessary): Adjust.
14708         (mark_all_reaching_defs_necessary_1): Likewise.
14709
14710 2009-06-30  Paolo Bonzini  <bonzini@gnu.org>
14711
14712         PR boostrap/40597
14713         * expmed.c (emit_cstore): New name of emit_store_flag_1.
14714         (emit_store_flag_1): Extract from emit_store_flag, adjust
14715         calls to (what now is) emit_cstore.
14716         (emit_store_flag): Call emit_store_flag_1 and also use it
14717         for what used to be recursive calls.
14718
14719 2009-06-30  Wei Guozhi  <carrot@google.com>
14720
14721         PR/40416
14722         * tree-ssa-sink.c (statement_sink_location): Stop sinking expression
14723         if the target bb post dominates from bb.
14724         * config/i386/i386.c (memory_address_length): Check existence of base
14725         register before using it.
14726
14727 2009-06-30  Nick Clifton  <nickc@redhat.com>
14728             DJ Delorie  <dj@redhat.com>
14729
14730         * config.sh/lib1funcs.h (FMOVD_WORKS): Only define if
14731         __FMOVD_ENABLED__ is defined.
14732         * config/sh/sh.h
14733         (TARGET_FMOVD): Provide a default definition.
14734         (MASK_FMOVD): Likewise.
14735         (TARGET_CPU_CPP_BUILTINS): Define
14736         __FMOVD_ENABLED__ if TARGET_FMOVD is true.
14737         * config/sh/sh.md (movdf_i4): For alternative 0 use either one or
14738         two fmov instructions depending upon whether TARGET_FMOVD is
14739         enabled.
14740         (split for DF load from memory into register): Also handle
14741         MEMs which consist of REG+DISP addressing.
14742         (split for DF store from register to memory): Likewise.
14743         * config/sh/sh.opt (mfmovd): Remove this switch.
14744         * doc/invoke.texi (-mfmovd): Remove documentation of this switch.
14745         * config/sh/sh.c (sh_override_options): Do not automatically
14746         enable TARGET_MOVD for the SH2A when supporting doubles - leave
14747         that to the -mfmovd command line switch.
14748
14749         * config/sh/sh.c (broken_move): Do not restrict fldi test to only
14750         the SH4 and SH4A.
14751         (fldi_ok): Always allow.
14752         * config/sh/sh.md (movsf_ie): Always use single fp_mode.
14753
14754 2009-06-29  DJ Delorie  <dj@redhat.com>
14755
14756         * doc/install.texi (mep-x-elf): Correct chip's full name.
14757
14758 2009-06-29  H.J. Lu  <hongjiu.lu@intel.com>
14759
14760         * doc/extend.texi: Fix typo.
14761
14762 2009-06-29  Tom Tromey  <tromey@redhat.com>
14763
14764         * dwarf2.h: Remove.
14765         * Makefile.in (DWARF2_H): New variable.
14766         (except.o): Use it.
14767         (dwarf2out.o): Likewise.
14768         (dwarf2asm.o): Likewise.
14769         * config/i386/t-i386: Use DWARF2_H.
14770         * except.c: Include elf/dwarf2.h.
14771         * unwind-dw2.c: Include elf/dwarf2.h.
14772         * dwarf2out.c: Include elf/dwarf2.h.
14773         (dw_loc_descr_struct) <dw_loc_opc>: Now a bitfield.
14774         <dtprel>: New field.
14775         (dwarf_stack_op_name): Don't handle INTERNAL_DW_OP_tls_addr.
14776         (size_of_loc_descr): Likewise.
14777         (output_loc_operands_raw): Likewise.
14778         (output_loc_operands): Handle new dtprel field.
14779         (loc_checksum): Update.
14780         (loc_descriptor_from_tree_1) <VAR_DDECL>: Set dtprel field.
14781         * unwind-dw2-fde-glibc.c: Include elf/dwarf2.h.
14782         * unwind-dw2-fde.c: Include elf/dwarf2.h.
14783         * dwarf2asm.c: Include elf/dwarf2.h.
14784         * unwind-dw2-fde-darwin.c: Include elf/dwarf2.h.
14785         * config/mmix/mmix.c: Include elf/dwarf2.h.
14786         * config/rs6000/darwin-fallback.c: Include elf/dwarf2.h.
14787         * config/xtensa/unwind-dw2-xtensa.c: Include elf/dwarf2.h.
14788         * config/sh/sh.c: Include elf/dwarf2.h.
14789         * config/i386/i386.c: Include elf/dwarf2.h.
14790
14791 2009-06-29  DJ Delorie  <dj@redhat.com>
14792
14793         * config/mep/mep.h (CPP_SPEC): Remove __cop macro.
14794
14795         * doc/extend.texi: Add MeP attributes and pragmas.
14796         * doc/invoke.text: Add MeP Options.
14797         * doc/contrib.texi: Add MeP contribution.
14798         * doc/md.texi: Add MeP constraints.
14799         * doc/install.texi: Add MeP target.
14800
14801 2009-06-30  Anatoly Sokolov  <aesok@post.ru>
14802
14803         * target.h (struct gcc_target): Add frame_pointer_required field.
14804         * target-def.h (TARGET_FRAME_POINTER_REQUIRED): New.
14805         (TARGET_INITIALIZER): Use TARGET_FRAME_POINTER_REQUIRED.
14806         * ira.c (setup_eliminable_regset): Use frame_pointer_required target
14807         hook.
14808         * reload1.c (update_eliminables): (Ditto.).
14809         * gcc/system.h (FRAME_POINTER_REQUIRED): Poison.
14810         * doc/tm.texi (FRAME_POINTER_REQUIRED): Revise documentation.
14811         (INITIAL_FRAME_POINTER_OFFSET): (Ditto.).
14812
14813         * config/arc/arc.h (FRAME_POINTER_REQUIRED): Remove macro.
14814
14815         * config/arm/arm.h (FRAME_POINTER_REQUIRED): Remove macro.
14816         * config/arm/arm.c (TARGET_FRAME_POINTER_REQUIRED): Define.
14817         (arm_frame_pointer_required): New function.
14818
14819         * config/avr/avr.h (FRAME_POINTER_REQUIRED): Remove macro.
14820         * config/avr/avr.c (TARGET_FRAME_POINTER_REQUIRED): Define macro.
14821         (avr_frame_pointer_required_p): Declare as static.
14822         * config/avr/avr-protos.h (avr_frame_pointer_required_p): Remove.
14823
14824         * config/bfin/bfin.h (FRAME_POINTER_REQUIRED): Remove macro.
14825         * config/bfin/bfin.c (TARGET_FRAME_POINTER_REQUIRED): Define.
14826         (bfin_frame_pointer_required): Make as static, change return type
14827         to bool.
14828         * config/bfin/bfin-protos.h (bfin_frame_pointer_required): Remove.
14829
14830         * config/cris/cris.h (FRAME_POINTER_REQUIRED): Remove macro.
14831         * config/cris/cris.c (TARGET_FRAME_POINTER_REQUIRED): Define macro.
14832         (cris_frame_pointer_required): New function.
14833
14834         * config/crx/crx.h (FRAME_POINTER_REQUIRED): Remove macro.
14835
14836         * config/fr30/fr30.h (FRAME_POINTER_REQUIRED): Remove macro.
14837         * config/fr30/fr30.c (TARGET_FRAME_POINTER_REQUIRED): Define macro.
14838         (fr30_frame_pointer_required): New function.
14839
14840         * config/frv/frv.h (FRAME_POINTER_REQUIRED): Remove macro.
14841         * config/frv/frv.c (TARGET_FRAME_POINTER_REQUIRED): Define.
14842         (frv_frame_pointer_required): Make as static, change return type
14843         to bool.
14844         * config/bfin/bfin-protos.h (frv_frame_pointer_required): Remove.
14845
14846         * config/i386/i386.h (FRAME_POINTER_REQUIRED): Remove macro.
14847         * config/i386/i386.c (TARGET_FRAME_POINTER_REQUIRED): Define macro.
14848         (ix86_frame_pointer_required): Make as static, change return type to
14849         bool.
14850         * config/i386/i386-protos.h (ix86_frame_pointer_required): Remove.
14851
14852         * config/m32c/m32c.h (FRAME_POINTER_REQUIRED): Remove macro.
14853         * config/m32c/m32c.c (TARGET_FRAME_POINTER_REQUIRED): Define macro.
14854
14855         * config/m32r/m32r.h (FRAME_POINTER_REQUIRED): Remove macro.
14856
14857         * config/mcore/mcore.h (CAN_ELIMINATE): Remove macro.
14858
14859         * config/mep/mep.h (FRAME_POINTER_REQUIRED): Remove macro.
14860
14861         * config/mips/mips.h (FRAME_POINTER_REQUIRED): Remove macro.
14862         * config/mips/mips.c (TARGET_FRAME_POINTER_REQUIRED): Define macro.
14863         (mips_frame_pointer_required): Make as static.
14864         * config/mips/mips-protos.h (mips_frame_pointer_required): Remove.
14865
14866         * config/mmix/mmix.h (FRAME_POINTER_REQUIRED): Remove macro.
14867         * config/mmix/mmix.c (TARGET_FRAME_POINTER_REQUIRED): Define macro.
14868         (mmix_frame_pointer_required): Mew function.
14869
14870         * config/moxie/moxie.h (FRAME_POINTER_REQUIRED): Remove macro.
14871         * config/moxie/moxie.c (TARGET_FRAME_POINTER_REQUIRED): Define macro.
14872
14873         * config/pa/pa.h (FRAME_POINTER_REQUIRED): Remove macro.
14874
14875         * config/score/score.h (FRAME_POINTER_REQUIRED): Remove macro.
14876
14877         * config/sh/sh.h (CAN_ELIMINATE): Remove macro.
14878
14879         * config/sparc/sparc.h (FRAME_POINTER_REQUIRED): Remove macro.
14880         (CAN_ELIMINATE): Redefine.
14881         * config/sparc/sparc.c (TARGET_FRAME_POINTER_REQUIRED): Define macro.
14882         (sparc_frame_pointer_required): New function.
14883         (sparc_can_eliminate): New function.
14884         * config/sparc/sparc-protos.h (sparc_can_eliminate): Declare.
14885
14886         * config/vax/vax.h (FRAME_POINTER_REQUIRED): Remove macro.
14887         * config/vax/vax.c (TARGET_FRAME_POINTER_REQUIRED): Define.
14888
14889         * config/xtensa/xtensa.h (FRAME_POINTER_REQUIRED): Remove macro.
14890         * config/xtensa/xtensa.c (TARGET_FRAME_POINTER_REQUIRED): Define.
14891         (xtensa_frame_pointer_required): Make as static, change return type
14892         to bool.
14893         * config/xtensa/xtensa-protos.h (xtensa_frame_pointer_required):
14894         Remove.
14895
14896 2009-06-29  Olatunji Ruwase  <tjruwase@google.com>
14897
14898         * doc/plugins.texi: Document PLUGIN_START_UNIT.
14899         * toplev.c (compile_file): Call PLUGIN_START_UNIT.
14900         * gcc-plugin.h (PLUGIN_START_UNIT): Added new event.
14901         * plugin.c (plugin_event_name): Added PLUGIN_START_UNIT.
14902         (register_callback): Handle PLUGIN_START_UNIT.
14903         (invoke_plugin_callbacks): Handle PLUGIN_START_UNIT.
14904
14905 2009-06-29  Eric Botcazou  <ebotcazou@adacore.com>
14906
14907         * tree.c (process_call_operands): Propagate TREE_READONLY from the
14908         operands.
14909         (PROCESS_ARG): Do not clear TREE_READONLY if CONSTANT_CLASS_P.
14910         (build3_stat): Propagate TREE_READONLY for COND_EXPR.
14911
14912 2009-06-29  Daniel Jacobowitz  <dan@codesourcery.com>
14913
14914         * config/arm/arm.h (REGISTER_MOVE_COST): Increase VFP register
14915         move cost.
14916
14917 2009-06-29  Uros Bizjak  <ubizjak@gmail.com>
14918
14919         * doc/extend.texi (Additional Floating Types): __float128 is also
14920         supported on i386 targets.
14921
14922 2009-06-29  Richard Guenther  <rguenther@suse.de>
14923
14924         PR middle-end/14187
14925         * tree-ssa-alias.h (struct pt_solution): Add vars_contains_restrict
14926         flag.
14927         (pt_solutions_same_restrict_base): Declare.
14928         * tree-ssa-structalias.c (struct variable_info): Add is_restrict_var
14929         flag.
14930         (new_var_info): Initialize is_global_var properly for SSA_NAMEs.
14931         (make_constraint_from, make_copy_constraint): Move earlier.
14932         (make_constraint_from_heapvar): New function.
14933         (make_constraint_from_restrict): Likewise.
14934         (handle_lhs_call): Use it.
14935         (find_func_aliases): Use it to track conversions to restrict
14936         qualified pointers.
14937         (struct fieldoff): Add only_restrict_pointers flag.
14938         (push_fields_onto_fieldstack): Initialize it.
14939         (create_variable_info_for): Track global restrict qualified pointers.
14940         (intra_create_variable_infos): Use make_constraint_from_heapvar.
14941         Track restrict qualified pointer arguments.
14942         (set_uids_in_ptset): Use varinfo is_global_var flag.
14943         (find_what_var_points_to): Set the vars_contains_restrict flag.
14944         Always create the points-to solution for sets including restrict tags.
14945         (pt_solutions_same_restrict_base): New function.
14946         * tree-ssa-alias.c (ptr_derefs_may_alias_p): For two restrict
14947         qualified pointers use pt_solutions_same_restrict_base as
14948         additional source for disambiguation.
14949
14950 2009-06-29  Richard Guenther  <rguenther@suse.de>
14951
14952         PR middle-end/38212
14953         * alias.c (find_base_decl): Remove.
14954         (get_deref_alias_set_1): Remove restrict handling.
14955         * c-common.c (c_apply_type_quals_to_decl): Do not set
14956         DECL_POINTER_ALIAS_SET.
14957         * gimplify.c (find_single_pointer_decl_1): Remove.
14958         (find_single_pointer_decl): Likewise.
14959         (internal_get_tmp_var): Remove restrict handling.
14960         (gimple_regimplify_operands): Likewise.
14961         * omp-low.c (expand_omp_atomic_pipeline): Do not set
14962         DECL_POINTER_ALIAS_SET. Use ref-all pointers.
14963         * print-tree.c (print_node): Do not print DECL_POINTER_ALIAS_SET.
14964         * tree.c (restrict_base_for_decl): Remove.
14965         (init_ttree): Do not allocate it.
14966         (make_node_stat): Do not set DECL_POINTER_ALIAS_SET.  Set
14967         LABEL_DECL_UID for label decls.
14968         (copy_node_stat): Do not copy restrict information.
14969         (decl_restrict_base_lookup): Remove.
14970         (decl_restrict_base_insert): Likewise.
14971         (print_restrict_base_statistics): Likewise.
14972         (dump_tree_statistics): Do not call print_restrict_base_statistics.
14973         * tree.h (DECL_POINTER_ALIAS_SET): Remove.
14974         (DECL_POINTER_ALIAS_SET_KNOWN_P): Likewise.
14975         (struct tree_decl_common): Rename pointer_alias_set to label_decl_uid.
14976         (LABEL_DECL_UID): Adjust.
14977         (DECL_BASED_ON_RESTRICT_P): Remove.
14978         (DECL_GET_RESTRICT_BASE): Likewise.
14979         (SET_DECL_RESTRICT_BASE): Likewise.
14980         (struct tree_decl_with_vis): Remove based_on_restrict_p flag.
14981
14982         * config/i386/i386.c (ix86_gimplify_va_arg): Use ref-all pointers
14983         instead of DECL_POINTER_ALIAS_SET.
14984         * config/rs6000/rs6000.c (rs6000_gimplify_va_arg): Likewise.
14985         * config/s390/s390.c (s390_gimplify_va_arg): Likewise.
14986         * config/spu/spu.c (spu_gimplify_va_arg_expr): Likewise.
14987
14988 2009-06-29  Richard Guenther  <rguenther@suse.de>
14989
14990         PR tree-optimization/40579
14991         * tree-vrp.c (vrp_evaluate_conditional): Bail out early if
14992         the IL to simplify has constants that overflowed.
14993
14994 2009-06-28  Uros Bizjak  <ubizjak@gmail.com>
14995
14996         PR tree-optimization/40550
14997         * tree-vect-generic.c (expand_vector_operations_1): Compute in
14998         vector_compute_type only when the size of vector_compute_type is
14999         less than the size of type.
15000
15001 2009-06-28  Eric Botcazou  <ebotcazou@adacore.com>
15002
15003         * fold-const.c (contains_label_1): Fix comments.
15004         (contains_label_p): Do not walk trees multiple time.
15005
15006 2009-06-28  Paolo Bonzini  <bonzini@gnu.org>
15007
15008         * config/i386/i386.h (enum ix86_fpcmp_strategy): New.
15009         * config/i386/i386.md (cbranchxf4, cstorexf4, cbranch<MODEF>4,
15010         cstore<MODEF>4, mov<X87MODEF>cc): Change predicate to
15011         ix86_fp_comparison_operator.
15012         (*fp_jcc_1_mixed, *fp_jcc_1_sse, *fp_jcc_1_387, *fp_jcc_2_mixed,
15013         *fp_jcc_2_sse, *fp_jcc_2_387): Delete
15014         (*fp_jcc_3_387, *fp_jcc_4_387, *fp_jcc_5_387, *fp_jcc_6_387,
15015         *fp_jcc_7_387, *fp_jcc_8<MODEF>_387): Eliminate call to
15016         !ix86_use_fcomi_compare, change ix86_fp_jump_nontrivial_p call
15017         to !TARGET_CMOVE, change predicate to ix86_fp_comparison_operator.
15018         (related splits): Change predicate to ix86_fp_comparison_operator.
15019         * config/i386/predicates.md: Use ix86_trivial_fp_comparison_operator
15020         instead of ix86_fp_comparison_codes.
15021         (ix86_trivial_fp_comparison_operator,
15022         ix86_fp_comparison_operator): New.
15023         * config/i386/i386-protos.h (ix86_fp_comparison_strategy): New.
15024         (ix86_expand_compare): Eliminate last two parameters.
15025         (ix86_fp_jump_nontrivial_p): Kill.
15026         * config/i386/i386.c (put_condition_code): Eliminate call to
15027         ix86_fp_comparison_codes and subsequent assertion.
15028         (ix86_fp_comparison_codes): Eliminate.
15029         (ix86_fp_swap_condition): New.
15030         (ix86_fp_comparison_arithmetics_cost, ix86_fp_comparison_fcomi_cost,
15031         ix86_fp_comparison_sahf_cost, ix86_use_fcomi_compare): Consolidate
15032         into ix86_fp_comparison_cost and ix86_fp_comparison_strategy.
15033         (ix86_prepare_fp_compare_args): Use ix86_fp_comparison_strategy
15034         and ix86_fp_swap_condition.
15035         (ix86_expand_fp_compare): Eliminate code for second jump/bypass jump.
15036         Use ix86_fp_comparison_strategy.
15037         (ix86_expand_compare): Likewise.  Eliminate last two arguments.
15038         (ix86_fp_jump_nontrivial_p): Eliminate.
15039         (ix86_expand_branch): Treat SFmode/DFmode/XFmode as simple.  Adjust
15040         call to ix86_expand_compare.
15041         (ix86_split_fp_branch, ix86_expand_setcc,
15042         ix86_expand_carry_flag_compare, ix86_expand_int_movcc,
15043         ix86_expand_fp_movcc): Eliminate code for second jump/bypass jump.
15044
15045 2009-06-28  Paolo Bonzini  <bonzini@gnu.org>
15046
15047         * config/arm/arm.c (arm_final_prescan_ins): Eliminate code
15048         related to jump_clobbers.
15049         * config/arm/arm.md (conds): Remove jump_clob case.
15050         (addsi3_cbranch, addsi3_cbranch_scratch, subsi3_cbranch, two
15051         splits): Change comparison_operator to arm_comparison_operator.
15052         (*arm_buneq, *arm_bltgt, *arm_buneq_reversed, *arm_bltgt_reversed):
15053         Eliminate.
15054
15055 2009-06-28  Paolo Bonzini  <bonzini@gnu.org>
15056
15057         * dojump.c (do_compare_rtx_and_jump): Try swapping the
15058         condition for floating point modes.
15059         * expmed.c (emit_store_flag_1): Move here a bigger part
15060         of emit_store_flag.
15061         (emit_store_flag): Try swapping the condition for floating point
15062         modes.
15063         * optabs.c (emit_cmp_and_jump_insns): Cope with constant op0 better.
15064
15065 2009-06-28  Paolo Bonzini  <bonzini@gnu.org>
15066
15067         * expr.c (expand_expr_real_1): Just use do_store_flag.
15068         (do_store_flag): Drop support for TRUTH_NOT_EXPR.  Use
15069         emit_store_flag_force.
15070         * expmed.c (emit_store_flag_force): Copy here trick
15071         previously in expand_expr_real_1.  Try reversing the comparison.
15072         (emit_store_flag_1): Work if target is NULL.
15073         (emit_store_flag): Work if target is NULL, using the result mode
15074         from the comparison.  Use split_comparison, restructure final part
15075         to simplify conditionals.
15076
15077 2009-06-28  Paolo Bonzini  <bonzini@gnu.org>
15078
15079         * builtins.c (expand_errno_check): Use do_compare_rtx_and_jump.
15080         * dojump.c (do_jump): Change handling of floating-point
15081         ops to use just do_compare_and_jump.
15082         (split_comparison): New.
15083         (do_compare_rtx_and_jump): Add here logic coming previously
15084         in do_jump, using split_comparison.
15085
15086 2009-06-27  H.J. Lu  <hongjiu.lu@intel.com>
15087
15088         PR target/40489
15089         * config/ia64/ia64.c (ia64_reorg): Check NULL insn.
15090
15091 2009-06-27  Paolo Bonzini  <bonzini@gnu.org>
15092
15093         * tree-ssa-alias.c: Fix unintentional commit.
15094
15095 2009-06-27  Paolo Bonzini  <bonzini@gnu.org>
15096
15097         * passes.c (execute_one_pass): Fix unintentional commit.
15098
15099 2009-06-27  Paolo Bonzini  <bonzini@gnu.org>
15100
15101         * df-problems.c (df_set_seen, df_unset_seen): Delete.
15102         (df_rd_local_compute, df_md_local_compute): Inline them.
15103
15104         (df_md_scratch): New.
15105         (df_md_alloc, df_md_free): Allocate/free it.
15106         (df_md_local_compute): Only include live registers in init.
15107         (df_md_transfer_function): Prune the in-set computed by
15108         the confluence function, and the gen-set too.
15109
15110 2009-06-27  Paolo Bonzini  <bonzini@gnu.org>
15111
15112         PR rtl-optimization/26854
15113         * timevar.def: Remove TV_DF_RU, add TV_DF_MD.
15114         * df-problems.c (df_rd_add_problem): Fix comment.
15115         (df_md_set_bb_info, df_md_free_bb_info, df_md_alloc,
15116         df_md_simulate_artificial_defs_at_top,
15117         df_md_simulate_one_insn, df_md_bb_local_compute_process_def,
15118         df_md_bb_local_compute, df_md_local_compute, df_md_reset,
15119         df_md_transfer_function, df_md_init, df_md_confluence_0,
15120         df_md_confluence_n, df_md_free, df_md_top_dump, df_md_bottom_dump,
15121         problem_MD, df_md_add_problem): New.
15122         * df.h (DF_MD, DF_MD_BB_INFO, struct df_md_bb_info, df_md,
15123         df_md_get_bb_info): New.
15124         (DF_LAST_PROBLEM_PLUS1): Adjust.
15125
15126         * Makefile.in (fwprop.o): Include domwalk.h.
15127         * fwprop.c: Include domwalk.h.
15128         (reg_defs, reg_defs_stack): New.
15129         (bitmap_only_bit_between): Remove.
15130         (process_defs): New.
15131         (process_uses): Use reg_defs and local_md instead of
15132         bitmap_only_bit_between and local_rd.
15133         (single_def_use_enter_block): New, from build_single_def_use_links.
15134         (single_def_use_leave_block): New.
15135         (build_single_def_use_links): Remove code moved to
15136         single_def_use_enter_block, invoke domwalk.
15137         (use_killed_between): Adjust comment.
15138
15139 2009-06-27  Paolo Bonzini  <bonzini@gnu.org>
15140
15141         * bitmap.h (bitmap_ior_and_into): New.
15142         * bitmap.c (bitmap_ior_and_into): New.
15143
15144 2009-06-27  Paolo Bonzini  <bonzini@gnu.org>
15145
15146         * domwalk.h (struct dom_walk_data): Remove all callbacks except
15147         before_dom_children_before_stmts and after_dom_children_after_stmts.
15148         Rename the two remaining callbacks to just before_dom_children and
15149         after_dom_children. Remove other GIMPLE statement walking bits.
15150         * domwalk.c (walk_dominator_tree): Remove now unsupported features.
15151         * graphite.c: Do not include domwalk.h.
15152         * tree-into-ssa.c (interesting_blocks): New global.
15153         (struct mark_def_sites_global_data): Remove it and names_to_rename.
15154         (mark_def_sites, rewrite_stmt, rewrite_add_phi_arguments,
15155         rewrite_update_stmt, rewrite_update_phi_arguments): Simplify
15156         now that they're not domwalk callbacks.
15157         (rewrite_initialize_block): Rename to...
15158         (rewrite_enter_block): ... this, place after called functions.  Test
15159         interesting_blocks, call rewrite_stmt and rewrite_add_phi_arguments.
15160         (rewrite_finalize_block): Rename to...
15161         (rewrite_leave_block): ... this, place after called functions.
15162         (rewrite_update_init_block): Rename to...
15163         (rewrite_update_enter_block): ... this, place after called functions.
15164         Test interesting_blocks, call rewrite_update_stmt and
15165         rewrite_update_phi_arguments.
15166         (rewrite_update_fini_block): Rename to...
15167         (rewrite_leave_block): ... this, place after called functions.
15168         (rewrite_blocks): Remove last argument, simplify initialization of
15169         walk_data.
15170         (mark_def_sites_initialize_block): Rename to...
15171         (mark_def_sites_block): ... this, call mark_def_sites.
15172         (mark_def_sites_blocks): Remove argument, simplify initialization of
15173         walk_data.
15174         (rewrite_into_ssa): Adjust for interesting_blocks_being a global.
15175         (update_ssa): Likewise.
15176         * tree-ssa-dom.c (optimize_stmt): Simplify now that it's not a domwalk
15177         callback.
15178         (tree_ssa_dominator_optimize): Simplify initialization of walk_data.
15179         (dom_opt_initialize_block): Rename to...
15180         (dom_opt_enter_block): ... this, place after called functions.  Walk
15181         statements here, inline propagate_to_outgoing_edges.
15182         (dom_opt_finalize_block): Rename to...
15183         (dom_opt_leave_block): ... this, place after called functions.
15184         * tree-ssa-dse.c (dse_optimize_stmt): Simplify now that it's not a
15185         domwalk callback.
15186         (dse_enter_block, dse_record_phi): New.
15187         (dse_record_phis): Delete.
15188         (dse_finalize_block): Rename to...
15189         (dse_leave_block): ... this.
15190         (tree_ssa_dse): Simplify initialization of walk_data.
15191         * tree-ssa-loop-im.c (determine_invariantness, move_computations):
15192         Adjust initialization of walk_data.
15193         * tree-ssa-loop-unswitch.c: Do not include domwalk.h.
15194         * tree-ssa-loop-phiopt.c (get_non_trapping):
15195         Adjust initialization of walk_data.
15196         * tree-ssa-loop-threadedge.c: Do not include domwalk.h.
15197         * tree-ssa-uncprop.c (uncprop_into_successor_phis): Simplify now that
15198         it's not a domwalk callback.
15199         (uncprop_initialize_block): Rename to...
15200         (dse_enter_block): ... this, call uncprop_into_successor_phis.
15201         (dse_finalize_block): Rename to...
15202         (dse_leave_block): ... this.
15203         (tree_ssa_uncprop): Simplify initialization of walk_data.
15204         * Makefile.in: Adjust dependencies.
15205
15206 2009-06-27  Richard Earnshaw  <rearnsha@arm.com>
15207
15208         * arm.md (casesi): Fix test for Thumb1.
15209         (thumb1_casesi_internal_pic): Likewise.
15210         (thumb1_casesi_dispatch): Likewise.
15211
15212 2009-06-26  Daniel Gutson  <dgutson@codesourcery.com>
15213
15214         * config/arm/arm-cores.def: Added core cortex-m0.
15215         * config/arm/arm-tune.md: Regenerated.
15216         * doc/invoke.texi: Added entry for cpu ARM Cortex-M0.
15217
15218 2009-06-26  DJ Delorie  <dj@redhat.com>
15219
15220         * config/mep/mep.opt (mfar): Remove -mfar as it doesn't do anything.
15221
15222         * config/mep/mep.c (mep_bundle_insns): Account for the fact that
15223         the scheduler doesn't tag jump insns.
15224
15225 2009-06-26  H.J. Lu  <hongjiu.lu@intel.com>
15226
15227         * c-decl.c (merge_decls): Re-indent.
15228
15229 2009-06-26  Janis Johnson  <janis187@us.ibm.com>
15230
15231         PR c/39902
15232         * tree.c (real_zerop, real_onep, real_twop, real_minus_onep):
15233         Special-case decimal float constants.
15234
15235 2009-06-26  Richard Henderson  <rth@redhat.com>
15236
15237         * function.h (struct function): Add cannot_be_copied_reason,
15238         and cannot_be_copied_set.
15239         * tree-inline.c (has_label_address_in_static_1): Rename from
15240         inline_forbidden_p_2; don't set inline_forbidden_reason here.
15241         (cannot_copy_type_1): Rename from inline_forbidden_p_op; likewise
15242         don't set inline_forbidden_reason.
15243         (copy_forbidden): New function, split out of inline_forbidden_p.
15244         (inline_forbidden_p_stmt): Don't check for nonlocal labels here.
15245         (inline_forbidden_p): Use copy_forbidden.
15246         (tree_versionable_function_p): Likewise.
15247         (inlinable_function_p): Merge into tree_inlinable_function_p.
15248         (tree_function_versioning): Remap cfun->nonlocal_goto_save_area.
15249         * ipa-cp.c (ipcp_versionable_function_p): New function.
15250         (ipcp_cloning_candidate_p): Use it.
15251         (ipcp_node_modifiable_p): Likewise.
15252
15253 2009-06-26  Olatunji Ruwase  <tjruwase@google.com>
15254
15255         * builtins.c (expand_builtin_alloca): Handle builtin alloca
15256         that is marked not to be inlined. Remove flag_mudflap use.
15257         * tree-mudflap.c: Rename mf_xform_derefs to mf_xfrom_statements.
15258         (mf_xform_statements): Mark builtin alloca calls as un-inlineable.
15259
15260 2009-06-26  Steve Ellcey  <sje@cup.hp.com>
15261
15262         PR bootstrap/40338
15263         * config/pa/t-pa-hpux10 (TARGET_LIBGCC2_CFLAGS): Add -frandom-seed.
15264         * config/pa/t-pa-hpux11 (TARGET_LIBGCC2_CFLAGS): Ditto.
15265
15266 2009-06-26  Kai Tietz  <kai.tietz@onevision.com>
15267
15268         * config/i386/mingw-tls.c (__mingwthr_key_dtor): Remove for none
15269         shared libgcc.
15270         (__mingwthr_remove_key_dtor): Likewise.
15271
15272 2009-06-26  Richard Guenther  <rguenther@suse.de>
15273
15274         * tree-ssa-structalias.c (do_ds_constraint): Simplify escape handling.
15275
15276 2009-06-26  Steven Bosscher  <steven@gcc.gnu.org>
15277
15278         PR middle-end/40525
15279         * ifcvt.c (dead_or_predicable): If predicating MERGE_BB fails,
15280         try the non-cond_exec path also.
15281
15282 2009-06-25  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
15283
15284         PR target/40468
15285         * pa.c (branch_to_delay_slot_p, branch_needs_nop_p): New functions.
15286         (output_cbranch): Use new functions.
15287         (output_lbranch, output_bb, output_bvb, output_dbra, output_movb):
15288         Likewise.
15289
15290 2009-06-25  Michael Meissner  <meissner@linux.vnet.ibm.com>
15291             Pat Haugen  <pthaugen@us.ibm.com>
15292             Revital Eres <ERES@il.ibm.com>
15293
15294         * config/rs6000/rs6000.c (print_operand): Correct lossage message
15295         for %c error.  Add %x support to print VSX registers as a unified
15296         register set, instead of separate float and altivec registers.
15297         Switch to use VECTOR_MEM_ALTIVEC_P instead of TARGET_ALTIVEC for
15298         %y case, and add support for VSX pre-modify addresses.
15299         (output_toc): Add assert for CONST containing an integer constant
15300         in the PLUS case.
15301         (rs6000_adjust_cost): Add POWER7 support.
15302         (insn_must_be_first_in_group): Ditto.
15303         (insn_must_be_last_in_group): Ditto.
15304         (rs6000_emit_popcount): Ditto.
15305         (rs6000_vector_mode_supported_p): Ditto.
15306
15307         * config/rs6000/rs6000-protos.h (rs6000_secondary_reload_class):
15308         Change some of the functions called by macros to being called
15309         through a pointer, so debug functions can be inserted if
15310         -mdebug=addr or -mdebug=cost.
15311         (rs6000_preferred_reload_class_ptr): Ditto.
15312         (rs6000_secondary_reload_class_ptr): Ditto.
15313         (rs6000_secondary_memory_needed_ptr): Ditto.
15314         (rs6000_cannot_change_mode_class_ptr): Ditto.
15315         (rs6000_secondary_reload_inner): Ditto.
15316         (rs6000_legitimize_reload_address): Ditto.
15317         (rs6000_legitimize_reload_address_ptr): Ditto.
15318         (rs6000_mode_dependent_address): Ditto.
15319         (rs6000_mode_dependent_address_ptr): Ditto.
15320
15321         * config/rs6000/rs6000.c (reg_offset_addressing_ok_p): New
15322         function to return true if the mode allows reg + integer
15323         addresses.
15324         (virtual_stack_registers_memory_p): New function to return true if
15325         the address refers to a virtual stack register.
15326         (rs6000_legitimate_offset_address_p): Move code to say whether a
15327         mode supports reg+int addressing to reg_offset_addressing_ok_p and
15328         call it.
15329         (rs6000_legitimate_address_p): Add checks for modes that only can
15330         do reg+reg addressing.  Start adding VSX support.
15331         (rs6000_legitimize_reload_address): Ditto.
15332         (rs6000_legitimize_address): Ditto.
15333         (rs6000_debug_legitimate_address_p): New debug functions for
15334         -mdebug=addr and -mdebug=cost.
15335         (rs6000_debug_rtx_costs): Ditto.
15336         (rs6000_debug_address_costs): Ditto.
15337         (rs6000_debug_adjust_cost): Ditto.
15338         (rs6000_debug_legitimize_address): Ditto.
15339         (rs6000_legitimize_reload_address_ptr): Point to call normal
15340         function or debug function.  Make functions called via pointer
15341         static.
15342         (rs6000_mode_dependent_address_ptr): Ditto.
15343         (rs6000_secondary_reload_class_ptr): Ditto.
15344         (rs6000_hard_regno_mode_ok): Add preliminary VSX support.
15345         (rs6000_emit_move): Add -mdebug=addr support.  Change an abort
15346         into a friendlier error.
15347         (rs6000_init_builtins): Add initial VSX support.
15348         (rs6000_adjust_cost): Fix some spacing issues.
15349
15350         * config/rs6000/rs6000.h (enum reg_class): Add VSX_REGS.
15351         (REG_CLASS_NAMES): Ditto.
15352         (REG_CLASS_CONTENTS): Ditto.
15353         (PREFERRED_RELOAD_CLASS): Move from a macro to calling through a
15354         pointer, to add -mdebug=addr support.
15355         (CANNOT_CHANGE_MODE_CLASS): Ditto.
15356         (SECONDARY_RELOAD_CLASS): Call through a pointer to add
15357         -mdebug=addr support.
15358         (LEGITIMIZE_RELOAD_ADDRESS): Ditto.
15359         (GO_IF_MODE_DEPENDENT_ADDRESS): Ditto.
15360         (enum rs6000_builtins): Add RS6000_BUILTIN_BSWAP_HI.
15361
15362         * config/rs6000/rs6000.md (bswaphi*): Add support for swapping
15363         16-bit values.
15364         (bswapsi*): Set attribute types for load/store.  Add combiner
15365         patterns to eliminate zero extend on 64-bit.
15366         (bswapdi*): Add support for swapping 64-bit values.  Use ldbrx and
15367         stdbrx if the hardware supports those instructions.
15368
15369 2009-06-25  Ian Lance Taylor  <iant@google.com>
15370
15371         * doc/invoke.texi (Option Summary): Mention -static-libstdc++.
15372         (Link Options): Document -static-libstdc++.
15373
15374 2009-06-25  Andrew Pinski  <andrew_pinski@playstation.sony.com>
15375
15376         PR target/38731
15377         * config/rs6000/rs6000.c (LOCAL_ALIGNMENT): Redefine to just use
15378         DATA_ALIGNMENT instead.
15379
15380 2009-06-25  Richard Guenther  <rguenther@suse.de>
15381
15382         * tree-ssa-alias.c (ref_maybe_used_by_call_p_1): Disambiguate
15383         indirect references against the callused/escaped solutions.
15384         (call_may_clobber_ref_p_1): Likewise.
15385
15386 2009-06-25  Martin Jambor  <mjambor@suse.cz>
15387
15388         PR tree-optimization/40493
15389         * tree-sra.c (sra_modify_expr): Correct BIT_FIELD_REF argument numbers.
15390         (enum unscalarized_data_handling): New type.
15391         (handle_unscalarized_data_in_subtree): Return what has been done.
15392         (load_assign_lhs_subreplacements): Handle left flushes differently.
15393         (sra_modify_assign): Use unscalarized_data_handling, simplified
15394         condition determining whether to remove the statement.
15395
15396 2009-06-25  Basile Starynkevitch  <basile@starynkevitch.net>
15397
15398         * doc/plugins.texi (Building GCC plugins): Correct typo in Makefile
15399         excerpt - @ should be doubled for texinfo.
15400
15401 2009-06-24  Ian Lance Taylor  <iant@google.com>
15402
15403         * config/arc/arc.c: Include "df.h".
15404         (arc_attribute_table): Make static.  Move higher in file.
15405         (arc_address_cost): Call SMALL_INT on INTVAL, not rtx.
15406         (output_shift): Initialize n later to avoid warning.
15407         * config/arm/arm.c (arm_attribute_table): Make static.  Move
15408         higher in file.
15409         * config/avr/avr.c (avr_attribute_table): Make static.  Move
15410         higher in file.
15411         (reg_class_tab): Change array type from int to enum reg_class.
15412         (avr_jump_mode): Change GET_MODE to GET_CODE when checking for
15413         LABEL_REF.
15414         (out_tsthi, ashlhi3_out): Don't use AS2 with "or" or "and".
15415         (lshrhi3_out): Likewise.
15416         (class_likely_spilled_p): Change return type to bool.
15417         (avr_rtx_costs): Use local code variable with enum type.
15418         * config/avr/avr.md (movmemhi): Use add_reg_note.
15419         (andhi3, andsi3): Don't use AS2 with "and".
15420         (iorhi3, iorsi3): Don't use AS2 with "or".
15421         * config/avr/avr-protos.h (class_likely_spilled_p): Update declaration.
15422         * config/crx/crx.c: Include "df.h".
15423         (crx_attribute_table): Make static.
15424         * config/m32r/m32r.c: Include "df.h".
15425         (m32r_attribute_table): Make static.  Move higher in file.
15426         (pop): Use add_reg_note.
15427         (block_move_call): Change 0 to LCT_NORMAL in function call.
15428         * config/m32r/m32r.md (movsi_insn): Remove unused local value.
15429         * config/m32r/m32r.h (INITIALIZE_TRAMPOLINE): Likewise.
15430         * config/m32r/m32r-protos.h (m32r_compute_function_type): Always
15431         declare, not just when TREE_CODE is defined.
15432         * config/m68hc11/m68hc11.c: Include "expr.h".
15433         (m68hc11_attribute_table): Make static.  Move higher in file.
15434         (m68hc11_small_indexed_indirect_p): Change 0 to VOIDmode in
15435         function call.
15436         (m68hc11_register_indirect_p): Likewise.
15437         (m68hc11_function_arg_padding): Change return type to enum
15438         direction.
15439         (emit_move_after_reload): Use add_reg_note.
15440         (m68hc11_emit_logical): Change code parameter to enum rtx_code.
15441         (m68hc11_split_logical): Likewise.
15442         (m68hc11_rtx_costs): Add local code_and outer_code variables with
15443         enum type.
15444         * config/m68hc11/predicates.md (reg_or_some_mem_operand): Change 0
15445         to VOIDmode in function call.
15446         * config/m68hc11/m68hc11-protos.h: Don't check TREE_CODE to see if
15447         tree is defined.
15448         (m68hc11_split_logical): Update declaration.
15449         (m68hc11_function_arg_padding): Update declaration.
15450         * config/mcore/mcore.c (regno_reg_class): Change form array of int
15451         to array of enum reg_class.
15452         (mcore_attribute_table): Make static.  Move higher in file.
15453         (mcore_rtx_costs): Add cast to enum type.
15454         * config/mcore/mcore.h (regno_reg_class): Update declaration.
15455         (GO_IF_LEGITIMATE_INDEX): Add cast to avoid warning.
15456         * config/sh/sh.c (sh_attribute_table): Make static.  Move higher
15457         in file.
15458         * config/sh/predicates.md (trapping_target_operand): Rename and to
15459         and_expr.
15460         * config/sparc/sparc.c (sparc_attribute_table): Make static.  Move
15461         higher in file.
15462         * config/spu/spu.c (spu_attribute_table): Make static.  Move
15463         higher in file.
15464         * config/v850/v850.c (v850_attribute_table): Make static.  Move
15465         higher in file.
15466         (v850_rtx_costs): Use local code with enum type.
15467         (expand_epilogue): Add cast.
15468         * config/v850/v850-c.c (ghs_pragma_section): Initialize repeat.
15469
15470 2009-06-23  Takashi YOSHII  <yoshii.takashi@renesas.com>
15471
15472         PR target/40515
15473         * doc/invoke.texi (SH Options): Document -m2a, -m2a-single,
15474         -m2a-single-only and -m2a-nofpu.
15475         * config/sh/sh.opt: Document m2a generates FPU code.
15476
15477 2009-06-24  Anatoly Sokolov  <aesok@post.ru>
15478
15479         * defaults.h (CAN_ELIMINATE): Provide default.
15480         * doc/tm.texi (CAN_ELIMINATE): Revise documentation.
15481         * config/alpha/alpha.h (CAN_ELIMINATE): Delete.
15482         * config/m32c/m32c.h (CAN_ELIMINATE): Delete.
15483         * config/spu/spu.h (CAN_ELIMINATE): Delete.
15484         * config/xtensa/xtensa.h (CAN_ELIMINATE): Delete.
15485         * config/moxie/moxie.h (CAN_ELIMINATE): Delete.
15486         * config/cris/cris.h (CAN_ELIMINATE): Delete.
15487         * config/mn10300/mn10300.h (CAN_ELIMINATE): Delete.
15488         * config/pa/pa64-linux.h (CAN_ELIMINATE): Delete.
15489         * config/mmix/mmix.h (CAN_ELIMINATE): Delete.
15490
15491 2009-06-24  DJ Delorie  <dj@redhat.com>
15492
15493         * mep-ext-cop.cpu: Fix copyright notice.
15494         * mep-default: Fix copyright notice.
15495         * mep-core: Fix copyright notice.
15496         * mep: Fix copyright notice.
15497         * mep-ivc2: Fix copyright notice.
15498         * mep-c5: Fix copyright notice.
15499
15500 2009-06-24  Denis Chertykov  <chertykov@gmail.com>
15501
15502         * doc/contrib.texi (Contributors):
15503
15504 2009-06-24  Andreas Krebbel  <krebbel1@de.ibm.com>
15505
15506         PR middle-end/40501
15507         * tree-ssa-math-opts.c (execute_optimize_bswap): Convert the bswap
15508         src and dst operands if necessary.
15509
15510 2009-06-23  DJ Delorie  <dj@redhat.com>
15511
15512         Add MeP port.
15513         * config.gcc: Add mep support.
15514         * recog.c: Resurrect validate_replace_rtx_subexp().
15515         * recog.h: Likewise.
15516         * config/mep/: Add new port:
15517         * config/mep/constraints.md: New file.
15518         * config/mep/default.h: New file.
15519         * config/mep/intrinsics.h: New file.
15520         * config/mep/intrinsics.md: New file.
15521         * config/mep/ivc2-template.h: New file.
15522         * config/mep/mep-c5.cpu: New file.
15523         * config/mep/mep-core.cpu: New file.
15524         * config/mep/mep-default.cpu: New file.
15525         * config/mep/mep-ext-cop.cpu: New file.
15526         * config/mep/mep-intrin.h: New file.
15527         * config/mep/mep-ivc2.cpu: New file.
15528         * config/mep/mep-lib1.asm: New file.
15529         * config/mep/mep-lib2.c: New file.
15530         * config/mep/mep-pragma.c: New file.
15531         * config/mep/mep-protos.h: New file.
15532         * config/mep/mep-tramp.c: New file.
15533         * config/mep/mep.c: New file.
15534         * config/mep/mep.cpu: New file.
15535         * config/mep/mep.h: New file.
15536         * config/mep/mep.md: New file.
15537         * config/mep/mep.opt: New file.
15538         * config/mep/predicates.md: New file.
15539         * config/mep/t-mep: New file.
15540
15541 2009-06-23  Ian Lance Taylor  <iant@google.com>
15542
15543         * configure.ac: Invoke AC_PROG_CXX.  Separate C specific warnings
15544         from loose_warn into c_loose_warn and from strict_warn into
15545         c_strict_warn.  Set and substitute warn_cxxflags.  Check for
15546         --enable-build-with-cxx.  Set and substitute
15547         ENABLE_BUILD_WITH_CXX.  Set and substitute HOST_LIBS.
15548         * Makefile.in (CXXFLAGS): New variable.
15549         (C_LOOSE_WARN, C_STRICT_WARN): New variables.
15550         (GCC_WARN_CFLAGS): Add $(C_LOOSE_WARN).  Add $(C_STRICT_WARN) if
15551         the default is the same as $(STRICT_WARN).
15552         (GCC_WARN_CXXFLAGS, WARN_CXXFLAGS): New variables.
15553         (CXX): New variable.
15554         (COMPILER): New value if ENABLE_BUILD_WITH_CXX.
15555         (COMPILER_FLAGS, LINKER, LINKER_FLAGS): Likewise.
15556         (ALL_COMPILERFLAGS, ALL_LINKERFLAGS): Likewise.
15557         (HOST_LIBS): New variable.
15558         (GCC_CFLAGS): Add $(C_LOOSE_WARN).
15559         (ALL_CXXFLAGS): New variable.
15560         (LIBS, BACKENDLIBS): Add $(HOST_LIBS).
15561         * doc/install.texi (Configuration): Document
15562         --enable-build-with-cxx, --with-stage1-ldflags,
15563         --with-stage1-libs, --with-boot-ldflags, --with-boot-libs.
15564         * configure: Rebuild.
15565
15566 2009-06-24  Ramana Radhakrishnan  <ramana.radhakrishnan@arm.com>
15567
15568         * config/arm/arm.c (arm_override_options): Fix braces and formatting
15569         from previous commit.
15570
15571 2009-06-23  Ian Lance Taylor  <iant@google.com>
15572
15573         * Makefile.in ($(out_object_file)): Depend upon $(DF_H).
15574
15575 2009-06-23  Ian Lance Taylor  <iant@google.com>
15576
15577         * reload.c (alternative_allows_const_pool_ref): Mark mem parameter
15578         with ATTRIBUTE_UNUSED.
15579
15580 2009-06-23  Michael Meissner  <meissner@linux.vnet.ibm.com>
15581             Pat Haugen  <pthaugen@us.ibm.com>
15582             Revital Eres  <eres@il.ibm.com>
15583
15584         * config.in (HAVE_AS_POPCNTD): Add default definition.
15585         (HAVE_AS_LWSYNC): Ditto.
15586
15587         * configure.ac (gcc_cv_as_powerpc_mfpgpr): Provide real binutils
15588         release number.
15589         (gcc_cv_as_powerpc_cmpb): Ditto.
15590         (gcc_cv_as_powerpc_dfp): Ditto.
15591         (gcc_cv_as_powerpc_vsx): Ditto.
15592         (gcc_cv_as_powerpc_popcntd): Add feature test for assembler
15593         supporting the popcntd/lwsync instructions.
15594         (gcc_cv_as_powerpc_lwsync): Ditto.
15595         * configure: Regenerate.
15596
15597         * config/rs6000/aix53.h (ASM_CPU_SPEC): Add support for
15598         -mcpu=native and -mcpu=power7.
15599         * config/rs6000/aix61.h (ASM_CPU_SPEC): Ditto.
15600
15601         * config/rs6000/linux64.opt (-mprofile-kernel): Move switch to be
15602         a variable instead of a mask to reduce the number of mask bits.
15603         * config/rs6000/sysv4.opt (-mbit-align): Ditto.
15604         (-mbit-word): Ditto.
15605         (-mregnames): Ditto.
15606         * config/rs6000/rs6000.opt (-mupdate): Ditto.
15607         (-mfused-madd): Ditto.
15608
15609         * config/rs6000/rs6000.opt (-mpopcntd): New switch for non-VSX ISA
15610         2.06 instructions.
15611         (-mvsx): New switch for VSX instructions.
15612         (-misel): Move from a variable to a mask to allow it to be set by
15613         -mcpu=.
15614
15615         * config/rs6000/rs6000-protos.h (rs6000_hard_regno_nregs): Change
15616         function declaration to an array declaration.
15617         (rs6000_hard_regno_nregs): New external array declaration.
15618
15619         * config/rs6000/t-rs6000 (MD_INCLUDES): Define, add all of the .md
15620         files included by rs6000.md.
15621
15622         * config/rs6000/linux64.h (SUBSUBTARGET_OVERRIDE_OPTIONS): Use
15623         SET_PROFILE_KERNEL macro to reset the -mprofile-kernel switch.
15624
15625         * config/rs6000/rs6000.c (rs6000_isel): Delete, -misel moved to be
15626         a target mask.
15627         (rs6000_debug_reg): New -mdebug= variables.
15628         (rs6000_debug_addr): Ditto.
15629         (rs6000_debug_cost): Ditto.
15630         (rs6000_pmode): New variable to hold Pmode.
15631         (rs6000_pointer_size): New variable to hold POINTER_SIZE.
15632         (rs6000_class_max_nregs): New array to hold CLASS_MAX_NREGS
15633         calculated at compiler start.
15634         (rs6000_hard_regno_nregs): Change function to an array which holds
15635         HARD_REGNO_NREGS calculated at compiler start.
15636         (rs6000_explicit_options): Delete isel field.
15637         (rs6000_vector_unit): New array to hold which vector unit
15638         supports arithmetic options for a given type.
15639         (rs6000_vector_mem): New array to hold which vector unit supports
15640         memory reference operations for a given type.
15641         (rs6000_vector_align): New array to given the alignment of each
15642         vector type.
15643         (power7_cost): New basic costs for power7.
15644         (SET_PROFILE_KERNEL): New macro for resetting -mprofile-kernel.
15645         (rs6000_hard_regno_nregs_internal): New function, moved from
15646         HARD_REGNO_NREGS, to calculate the number of registers each hard
15647         register takes for each type.
15648         (rs6000_debug_reg_print): New function for -mdebug=reg support.
15649         (rs6000_debug_vector_unit): New array, map rs6000_vector to string.
15650         (+rs6000_init_hard_regno_mode_ok): New function, move calculation
15651         of HARD_REGNO_NREGS, CLASS_MAX_NREGS, REGNO_REG_CLASS, and vector
15652         unit information here so it is calculated once at compiler startup
15653         time.
15654         (rs6000_override_options): Make -misel a target mask.  Add more
15655         power7 target masks.  Setup Pmode and POINTER_SIZE.  Add initial
15656         VSX support.  Add support for -mdebug=reg, -mdebug=addr, and
15657         -mdebug=cost.
15658         (POWERPC_MASKS): Add MASK_POPCNTD, MASK_VSX, and MASK_ISEL.
15659         (rs6000_handle_option): Move -misel from variable to target mask.
15660         (rs6000_builtin_mask_for_load): Add VSX support.
15661         (rs6000_conditional_register_usage): Ditto.
15662         (USE_ALTIVEC_FOR_ARG_P): Ditto.
15663         (function_arg_boundary): Ditto.
15664         (rs6000_expand_builtin): Ditto.
15665         (def_builtin): Make abort message a little friendlier.
15666         (rs6000_emit_int_cmove): Add support for 64-bit isel.
15667
15668         * config/rs6000/rs6000.h (ASM_CPU_POWER7_SPEC): Depend on the
15669         assembler support the popcntd instruction instead of a vsx
15670         instruction to enable power7 support.
15671         (ASM_CPU_SPEC): Add support for -mcpu=native and -mcpu=power7.
15672         (EXTRA_SPECS): Add ASM_CPU_NATIVE_SPEC to allow passing the right
15673         option to the assembler if -mcpu=native.
15674         (ASM_CPU_NATIVE_SPEC): Ditto.
15675         (TARGET_POPCNTD): If assembler doesn't support popcntd, turn off
15676         ISA 2.06 features.
15677         (TARGET_LWSYNC_INSTRUCTION): Define whether it is safe to issue
15678         the lwsync instruction.
15679         (enum processor_type): Add PROCESSOR_POWER7.
15680         (rs6000_debug_reg): New -mdebug= options.
15681         (rs6000_debug_addr): Ditto.
15682         (rs6000_debug_cost): Ditto.
15683         (rs6000_isel): Delete.
15684         (enum rs6000_vector): New enum to say what vector unit we have.
15685         (VECTOR_UNIT_*): New macros to say which vector unit has
15686         arithmetic operations for a given type.
15687         (VECTOR_MEM_*): New macros to say which vector unit has memory
15688         operations for a given type.
15689         (TARGET_LDBRX): Whether the machine supports the ldbrx
15690         instruction.
15691         (TARGET_ISEL): Delete, -misel moved to be a mask.
15692         (TARGET_ISEL64): New macro for 64-bit isel support.
15693         (UNITS_PER_VSX_WORD): New macro.
15694         (POINTER_SIZE): Move to be an external variable, rather than
15695         calculating whether we are generating 32 ot 64-bit code.
15696         (Pmode): Ditto.
15697         (STACK_BOUNDARY): Add VSX support.
15698         (LOCAL_ALIGNMENT): Ditto.
15699         (SLOW_UNALIGNED_ACCESS): Ditto.
15700         (VSX_REGNO_P): New macro for VSX support.
15701         (VFLOAT_REGNO_P): Ditto.
15702         (VINT_REGNO_P): Ditto.
15703         (VLOGICAL_REGNO_P): Ditto.
15704         (VSX_VECTOR_MODE): Ditto.
15705         (VSX_SCALAR_MODE): Ditto.
15706         (VSX_MODE): Ditto.
15707         (VSX_MOVE_MODE): Ditto.
15708         (VSX_REG_CLASS_P): Ditto.
15709         (HARD_REGNO_NREGS): Instead of calling a function, use an array
15710         lookup.
15711         (UNITS_PER_SIMD_WORD): Add VSX support.
15712         (MODES_TIEABLE_P): Ditto.
15713         (STARTING_FRAME_OFFSET): Ditto.
15714         (STACK_DYNAMIC_OFFSET): Ditto.
15715         (EPILOGUE_USES): Ditto.
15716         (REGNO_REG_CLASS): Move to array lookup.
15717         (CLASS_MAX_NREGS): Ditto.
15718         (rs6000_vector_reg_class): Add declaration.
15719         (ADDITIONAL_REGISTER_NAMES): Add VSX names for the registers that
15720         overlap with the floating point and Altivec registers.
15721
15722         * config/rs6000/e500.h (CHECK_E500_OPTIONS): Disallow -mvsx.
15723
15724         * config/rs6000/driver-rs6000.c (asm_names): New static array to
15725         give the appropriate asm switches if -mcpu=native.
15726         (host_detect_local_cpu): Add support for "asm".
15727         (host_detect_local_cpu): Follow GNU code guidelines for name.
15728
15729         * config/rs6000/sysv4.h (SUBTARGET_OVERRIDE_OPTIONS): Move
15730         -mbit-word to a variable instead of being a target mask.
15731
15732         * config/rs6000/sync.md (lwsync): If the assembler supports it,
15733         emit the lwsync instruction instead of emitting the instruction as
15734         an integer constant.
15735
15736         * config/rs6000/spe.md (spe_fixuns_truncdfsi2): Rename from
15737         fixuns_trundfsi2, move expander into rs6000.md.
15738
15739         * config/rs6000/rs6000.md (cpu): Add power7.
15740         (sel, *ptrsize): New mode attributes for 32/64-bit isel.
15741         (logical predicate patterns): Change the single instruction
15742         primitives that set CR0 to be fast_compare instead of compare.
15743         (norsi*): Ditto.
15744         (popcntwsi2): Add support for ISA 2.06 popcount instructions.
15745         (popcntddi2): Ditto.
15746         (popcount<mode>): Ditto.
15747         (floating multiply/add insns): Name the floating point
15748         multiply/add insns.
15749         (isel_signed_<mode>): Add support for -misel on 64-bit systems.
15750         (isel_unsigned_<mode>): Ditto.
15751         (fixuns_trundfsi2): Move expander here from spe.md.
15752         (smindi3): Define if we have -misel on 64-bit systems.
15753         (smaxdi3): Ditto.
15754         (umindi3): Ditto.
15755         (umaxdi3): Ditto.
15756
15757 2009-06-23  Anatoly Sokolov  <aesok@post.ru>
15758
15759         * config.gcc (avr-*-rtems*, avr-*-*): Set extra_gcc_objs and
15760         extra_objs.
15761         * config/avr/avr.c (avr_current_device): New variable.
15762         (avr_arch_types, avr_mcu_types): Move to avr-deveces.c.
15763         (avr_arch, mcu_type_s): Move to avr.h.
15764         * config/avr/avr.h (base_arch_s). Add reserved2, arch_name and
15765         default_data_section_start fields.
15766         (avr_arch): Moved from avr.c.
15767         (mcu_type_s): Moved from avr.c. Add short_sp, data_section_start and
15768         library_name fields.
15769         (avr_current_device, avr_mcu_types, avr_arch_types,
15770         avr_device_to_arch, avr_device_to_data_start,
15771         avr_device_to_startfiles, avr_device_to_devicelib): Declare.
15772         (EXTRA_SPEC_FUNCTIONS): Define.
15773         (LINK_SPEC): Remove device name to '-m ...' and '-Tdata ...' linker
15774         options mapping. Use device_to_arch and device_to_data_start insted.
15775         (STARTFILE_SPEC): Use device_to_startfile instead of crt_binutils.
15776         (CRT_BINUTILS_SPECS, EXTRA_SPECS): Remove.
15777         * config/avr/t-avr (driver-avr.o, avr-devices.o): New rules.
15778         * config/avr/driver-avr.c: New file.
15779         * config/avr/avr-devices.c: New file.
15780
15781 2009-06-23  Jakub Jelinek  <jakub@redhat.com>
15782
15783         * var-tracking.c (unshare_variable): Force initialized to
15784         be VAR_INIT_STATUS_INITIALIZED unless flag_var_tracking_uninit.
15785         (set_variable_part): Likewise.
15786         (struct variable_union_info): Remove pos_src field.
15787         (vui_vec, vui_allocated): New variables.
15788         (variable_union): Pass VAR_INIT_STATUS_UNKNOWN to unshare_variable
15789         unconditionally.  Avoid XCVECNEW/free for every sorting, for dst_l
15790         == 1 use a simpler sorting algorithm.  Compute pos field right
15791         away, don't fill in pos_src.  For dst_l == 2 avoid qsort.
15792         Avoid quadratic comparison if !flag_var_tracking_uninit.
15793         (variable_canonicalize): Pass VAR_INIT_STATUS_UNKNOWN to
15794         unshare_variable unconditionally.
15795         (dataflow_set_different_2): Removed.
15796         (dataflow_set_different): Don't traverse second hash table.
15797         (compute_bb_dataflow): Pass VAR_INIT_STATUS_UNINITIALIZED
15798         unconditionally to var_reg_set or var_mem_set.
15799         (emit_notes_in_bb): Likewise.
15800         (delete_variable_part): Pass VAR_INIT_STATUS_UNKNOWN to
15801         unshare_variable.
15802         (emit_note_insn_var_location): Don't set initialized to
15803         VAR_INIT_STATUS_INITIALIZED early.
15804         (vt_finalize): Free vui_vec if needed, clear vui_vec and
15805         vui_allocated.
15806         * rtl.c (rtx_equal_p): Don't implement on top of rtx_equal_p_cb.
15807
15808         * tree-object-size.c (addr_object_size): Instead of checking
15809         for non-NULL TREE_CHAIN of the FIELD_DECL check that there
15810         are no FIELD_DECLs following it.
15811
15812 2009-06-23  Andreas Krebbel  <krebbel1@de.ibm.com>
15813
15814         * tree-ssa-math-opts.c (find_bswap): Increase the search depth in
15815         order to match bswaps with signed source operands.
15816
15817 2009-06-23  Rainer Orth  <ro@TechFak.Uni-Bielefeld.DE>
15818
15819         * sdbout.c (sdbout_one_type): Fix braces in switch.
15820
15821 2009-06-23  Richard Guenther  <rguenther@suse.de>
15822
15823         * tree-ssa-structalias.c (struct variable_info): Add is_global_var
15824         member.
15825         (var_anything, anything_tree, var_nothing, nothing_tree, var_readonly,
15826         readonly_tree, var_escaped, escaped_tree, var_nonlocal, nonlocal_tree,
15827         var_callused, callused_tree, var_storedanything, storedanything_tree,
15828         var_integer, integer_tree): Remove global variables.
15829         (new_var_info): Do not pass new id, append the new var to the
15830         global variable vector.
15831         (do_ds_constraint): Use is_global_var member of the variable-info.
15832         (new_scalar_tmp_constraint_exp): Adjust.
15833         (create_function_info_for): Likewise.
15834         (create_variable_info_for): Likewise.
15835         (find_what_var_points_to): Remove dead code.
15836         (init_base_vars): Simplify.
15837         (compute_points_to_sets): Adjust.
15838
15839 2009-06-22  Adam Nemet  <anemet@caviumnetworks.com>
15840
15841         * combine.c (try_combine): Dump information about the insns we're
15842         combining.
15843
15844 2009-06-22  Adam Nemet  <anemet@caviumnetworks.com>
15845
15846         * combine.c (combine_simplify_rtx): Remove TRULY_NOOP_TRUNCATION
15847         check when calling force_to_mode on TRUNCATE's operand.
15848
15849 2009-06-22  Ian Lance Taylor  <iant@google.com>
15850
15851         * config/rs6000/rs6000.opt: Move msched-epilog before msched-prolog.
15852
15853 2009-06-22  Steven Bosscher  <steven@gcc.gnu.org>
15854
15855         * config/arm/arm.md (prologue_use): Set length of fake insn to 0.
15856
15857 2009-06-22  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
15858
15859         * doc/invoke.texi (Link Options): -nodefaultlibs and -nostdlib
15860         override library linkage flags such as -static-libgcc or
15861         -shared-libgcc.
15862
15863 2009-06-22  Maxim Kuvyrkov  <maxim@codesourcery.com>
15864
15865         * config/m68k/m68k-devices.def: Add line for MCF5221x.
15866
15867 2009-06-22  Ian Lance Taylor  <iant@google.com>
15868
15869         * config/linux.opt: Put mglibc ahead of muclibc.
15870
15871         * c-decl.c (diagnose_mismatched_decls): Add -Wc++-compat warning
15872         for duplicate decls.
15873
15874 2009-06-22  Matthias Klose  <doko@ubuntu.com>
15875
15876         * Makefile.in (install-plugin): Remove extra `/' after $(DESTDIR).
15877
15878 2009-06-22  Steven Bosscher  <steven@gcc.gnu.org>
15879
15880         PR objc/28050
15881         * c-parser.c (c_parser_objc_message_args): Return error_mark_node
15882         instead of NULL if a parser error occurs.
15883
15884 2009-06-22  Rainer Orth  <ro@TechFak.Uni-Bielefeld.DE>
15885
15886         * dwarf2out.c (dwarf2_debug_hooks): Initialize
15887         non-DWARF2_DEBUGGING_INFO version.
15888
15889 2009-06-22  Kai Tietz  <kai.tietz@onevision.com>
15890
15891         * config.gcc (i[34567]86-*-mingw*, x86_64-*-mingw*): Add
15892         i386/t-fprules-softfp and soft-fp/t-softfp to tmake_file.
15893
15894         * config/i386/mingw32.h (LIBGCC2_HAS_TF_MODE): Define.
15895         (LIBGCC2_TF_CEXT): Define.
15896         (TF_SIZE): Define.
15897
15898 2009-06-22  Ramana Radhakrishnan  <ramana.radhakrishnan@arm.com>
15899
15900         PR target/40463
15901         * config/arm/linux-eabi.h (CLEAR_INSN_CACHE): Fix definition.
15902
15903 2009-06-22  Ramana Radhakrishnan  <ramana.radhakrishnan@arm.com>
15904
15905         * config/arm/arm.c (arm_override_options): Disable
15906         -mcaller-super-interworking and -mcallee-super-interworking.
15907         * doc/invoke.texi (ARM Options): Document this.
15908
15909 2009-06-22  Nathan Sidwell  <nathan@codesourcery.com>
15910
15911         * config/arm/arm.c (arm_print_operand): Deal with HIGH.
15912         * config/arm/constraints.md (j): New constraint for movw operands.
15913         (N): Remove thumb2 meaning.
15914         * config/arm/arm.md (*arm_movw): Delete.
15915         (*arm_movsi_insn): Use j constraint for movw instead of N constraint.
15916         * config/arm/vfp.md (*arm_movsi_vfp, *thumb2_movsi_vfp): Likewise.
15917         * config/arm/thumb2.md (*thumb2_movsi_insn): Likewise.
15918
15919 2009-06-22  Martin Jambor  <mjambor@suse.cz>
15920
15921         PR tree-optimization/40492
15922         * tree-sra.c (sra_modify_assign): Pass zero offsets to
15923         build_ref_for_offset.
15924
15925 2009-06-22  Shujing Zhao  <pearly.zhao@oracle.com>
15926
15927         * alias.c: Use REG_P, MEM_P, CONST_INT_P, LABEL_P, CALL_P, NOTE_P and
15928         JUMP_TABLE_DATA_P predicates where applicable.
15929         * auto-inc-dec.c: Ditto.
15930         * builtins.c: Ditto.
15931         * caller-save.c: Ditto.
15932         * calls.c: Ditto.
15933         * cfgcleanup.c: Ditto.
15934         * cfglayout.c: Ditto.
15935         * cfgrtl.c: Ditto.
15936         * combine.c: Ditto.
15937         * combine-stack-adj.c: Ditto.
15938         * cse.c: Ditto.
15939         * cselib.c: Ditto.
15940         * dbxout.c: Ditto.
15941         * df-scan.c: Ditto.
15942         * dse.c: Ditto.
15943         * dwarf2asm.c: Ditto.
15944         * dwarf2out.c: Ditto.
15945         * emit-rtl.c: Ditto.
15946         * except.c: Ditto.
15947         * explow.c: Ditto.
15948         * expmed.c: Ditto.
15949         * expr.c: Ditto.
15950         * final.c: Ditto.
15951         * function.c: Ditto.
15952         * fwprop.c: Ditto.
15953         * gcse.c: Ditto.
15954         * genpreds.c: Ditto.
15955         * genrecog.c: Ditto.
15956         * ifcvt.c: Ditto.
15957         * ira-costs.c: Ditto.
15958         * ira-lives.c: Ditto.
15959         * jump.c: Ditto.
15960         * loop-iv.c: Ditto.
15961         * lower-subreg.c: Ditto.
15962         * modulo-sched.c: Ditto.
15963         * optabs.c: Ditto.
15964         * postreload.c: Ditto.
15965         * print-rtl.c: Ditto.
15966         * recog.c: Ditto.
15967         * reginfo.c: Ditto.
15968         * regmove.c: Ditto.
15969         * reload1.c: Ditto.
15970         * reload.c: Ditto.
15971         * reorg.c: Ditto.
15972         * rtlanal.c: Ditto.
15973         * rtl.c: Ditto.
15974         * sched-vis.c: Ditto.
15975         * sdbout.c: Ditto.
15976         * sel-sched-ir.c: Ditto.
15977         * simplify-rtx.c: Ditto.
15978         * targhooks.c: Ditto.
15979         * var-tracking.c: Ditto.
15980         * vmsdbgout.c: Ditto.
15981
15982 2009-06-22  Matthias Klose  <doko@ubuntu.com>
15983
15984         * Makefile.in (install-plugin): Always use DESTDIR.
15985
15986 2009-06-22  Olivier Hainque  <hainque@adacore.com>
15987
15988         * config/pa/pa.c (output_call): Don't optimize post call jumps
15989         into return address adjustments if the call may throw.
15990
15991 2009-06-21  Richard Earnshaw  <rearnsha@arm.com>
15992
15993         * arm.c (thumb1_output_casesi): New function.
15994         * arm.h (CASE_VECTOR_PC_RELATIVE): Thumb-1 code is also relative if
15995         optimizing for size or PIC.
15996         (CASE_VECTOR_SHORTEN_MODE): Handle thumb-1.
15997         * arm.md (UNSPEC_THUMB1_CASESI): New constant.
15998         (casesi): Handle Thumb-1 when optimizing for size or PIC.
15999         (thumb1_casesi_internal_pic): New expand rule.
16000         (thumb1_casesi_dispatch): New pattern.
16001         * aout.h (ASM_OUTPUT_ADDR_DIFF_ELT): Use shortened vectors for
16002         thumb-1 mode.
16003         * coff.h (JUMP_TABLES_IN_TEXT_SECTION): Thumb-1 jump tables are now
16004         in the text seciton when PIC or optimizing for size.
16005         * elf.h (JUMP_TABLES_IN_TEXT_SECTION): Likewise.
16006         * lib1funcs.asm ([__ARM_EABI__]): Add an attribute describing stack
16007         preservation properties of code.
16008         (__gnu_thumb1_case_sqi, __gnu_thumb1_case_uqi): New functions.
16009         (__gnu_thumb1_case_shi, __gnu_thumb1_case_uhi): New functions.
16010         (__gnu_thumb1_case_si): New function.
16011         * t-arm (LIB1ASMSRC): Define here.
16012         (LIB1ASMFUNCS): Add some common functions.
16013         * t-arm-elf (LIB1ASMSRC): Delete.
16014         (LIB1ASMFUNCS): Append to existing set.
16015         * t-pe (LIB1ASMSRC, LIB1ASMFUNCS): Likewise.
16016         * t-strongarm-elf (LIB1ASMSRC, LIB1ASMFUNCS): Likewise.
16017         * t-symbian (LIB1ASMFUNCS): Likewise.
16018         * t-vxworks (LIB1ASMSRC, LIB1ASMFUNCS): Likewise.
16019         * t-wince-pe (LIB1ASMSRC, LIB1ASMFUNCS): Likewise.
16020
16021 2009-06-21  Richard Guenther  <rguenther@suse.de>
16022
16023         PR tree-optimization/38729
16024         * tree-ssa-loop-niter.c (find_loop_niter_by_eval): Restrict
16025         to loops with a single exit if -fno-expensive-optimizations.
16026
16027 2009-06-21  Jakub Jelinek  <jakub@redhat.com>
16028
16029         * var-tracking.c (struct shared_hash_def, shared_hash): New types.
16030         (dataflow_set): Change vars type from htab_t to shared_hash.
16031         (shared_hash_pool, empty_shared_hash): New variables.
16032         (vars_clear): Removed.
16033         (shared_hash_shared, shared_hash_htab, shared_hash_copy,
16034         shared_hash_find_slot_unshare, shared_hash_find_slot,
16035         shared_hash_find_slot_noinsert, shared_hash_find): New
16036         static inlines.
16037         (shared_hash_unshare, shared_hash_destroy): New functions.
16038         (unshare_variable): Unshare set->vars if shared, use
16039         shared_hash_htab.
16040         (vars_copy): Use htab_traverse_noresize instead of htab_traverse.
16041         (get_init_value, find_src_set_src, dump_dataflow_set,
16042         clobber_variable_part, emit_notes_for_differences): Use
16043         shared_hash_htab.
16044         (dataflow_set_init): Remove second argument, set vars to
16045         empty_shared_hash instead of creating a new htab.
16046         (dataflow_set_clear): Call shared_hash_destroy and set vars
16047         to empty_shared_hash instead of calling vars_clear.
16048         (dataflow_set_copy): Don't call vars_copy, instead just share
16049         the src htab with dst.
16050         (variable_union): Use shared_hash_*, use initially NO_INSERT
16051         lookup if set->vars is shared.  Don't keep slot cleared before
16052         calling unshare_variable.  Unshare set->vars if needed.
16053         Even ->refcount == 1 vars must be unshared if set->vars is shared
16054         and var needs to be modified.
16055         (variable_canonicalize): New function.
16056         (dataflow_set_union): If dst->vars is empty, just share src->vars
16057         with dst->vars and traverse with variable_canonicalize to canonicalize
16058         and unshare what is needed.
16059         (dataflow_set_different): If old_set and new_set use the same shared
16060         htab, they aren't different.  If number of htab elements is different,
16061         htabs are different.  Use shared_hash_*.
16062         (dataflow_set_destroy): Call shared_hash_destroy instead of
16063         htab_delete.
16064         (compute_bb_dataflow, emit_notes_in_bb, vt_emit_notes): Don't pass
16065         second argument to dataflow_set_init.
16066         (vt_initialize): Likewise.  Initialize shared_hash_pool and
16067         empty_shared_hash, move bb in/out initialization afterwards.
16068         Use variable_htab_free instead of NULL as changed_variables del hook.
16069         (variable_was_changed): Change type of second argument to pointer to
16070         dataflow_set.  When inserting var into changed_variables, bump
16071         refcount.  Unshare set->vars if set is shared htab and slot needs to
16072         be cleared.
16073         (set_variable_part): Use shared_hash_*, use initially NO_INSERT
16074         lookup if set->vars is shared.  Unshare set->vars if needed.
16075         Even ->refcount == 1 vars must be unshared if set->vars is shared
16076         and var needs to be modified.  Adjust variable_was_changed caller.
16077         (delete_variable_part): Use shared_hash_*.  Even ->refcount == 1
16078         vars must be unshared if set->vars is shared and var needs to be
16079         modified.  Adjust variable_was_changed caller.
16080         (emit_note_insn_var_location): Don't pool_free var.
16081         (emit_notes_for_differences_1): Initialize empty_var->refcount to 0
16082         instead of 1.
16083         (vt_finalize): Call htab_delete on empty_shared_hash->htab and
16084         free_alloc_pool on shared_hash_pool.
16085
16086 2009-06-20  Anthony Green  <green@moxielogic.com>
16087
16088         * config/moxie/sfp-machine.h (__gcc_CMPtype, CMPtype): Define.
16089         * config/moxie/moxie.h (LOAD_EXTEND_OP): Define.
16090
16091 2009-06-20  Richard Guenther  <rguenther@suse.de>
16092
16093         * tree-ssa-structalias.c (find_func_aliases): For memset use
16094         a constraint from NULL if we memset to zero.
16095         * tree-ssa-alias.c (ref_maybe_used_by_call_p_1): Add builtins
16096         we explicitly handle that do not read from memory.
16097         (call_may_clobber_ref_p_1): Properly handle builtins that may
16098         set errno.
16099
16100 2009-06-20  Richard Guenther  <rguenther@suse.de>
16101
16102         PR tree-optimization/40495
16103         * tree-ssa-structalias.c (get_constraint_exp_for_temp): Remove.
16104         (new_scalar_tmp_constraint_exp): New function.
16105         (process_constraint): Do not create temporary decls.
16106         (process_all_all_constraints): Likewise.
16107         (handle_const_call): Likewise.
16108         (create_function_info_for): Do not set decl.
16109
16110 2009-06-19  Ian Lance Taylor  <iant@google.com>
16111
16112         * config/rs6000/rs6000.c (rs6000_explicit_options): Make static.
16113         (rs6000_attribute_table): Make static; move before use.
16114
16115 2009-06-19  Eric Botcazou  <ebotcazou@adacore.com>
16116
16117         * tree.c (substitute_in_expr) <COMPONENT_REF>: Tweak and reformat.
16118         <tcc_vl_exp>: Call process_call_operands on the new CALL_EXPR.
16119         Propagate the TREE_READONLY flag without overwriting it.
16120         (substitute_placeholder_in_expr) <tcc_vl_exp>: Likewise.
16121         Propagate the TREE_READONLY flag onto the result.
16122         (process_call_operands): Move around.  Use correct constant value.
16123
16124 2009-06-19  Ramana Radhakrishnan  <ramana.radhakrishnan@arm.com>
16125
16126         PR target/40482
16127         * config/arm/arm.c (thumb_shiftable_const): Truncate val to 32 bits.
16128         * config/arm/arm.md: Likewise.
16129
16130 2009-06-19  Ian Lance Taylor  <iant@google.com>
16131
16132         * tree-cfg.c (gimple_redirect_edge_and_branch): Change ERROR_MARK
16133         to GIMPLE_ERROR_MARK.
16134
16135         * c-typeck.c (build_conditional_expr): Add op1_original_type and
16136         op2_original_type parameters.  Warn about using different enum types.
16137         * c-parser.c (c_parser_conditional_expression): Pass original
16138         types to build_conditional_expr.
16139         * c-tree.h (build_conditional_expr): Update declaration.
16140
16141 2009-06-19  Ian Lance Taylor  <iant@google.com>
16142
16143         * config/i386/i386.c (ix86_function_specific_save): Test that
16144         fields match values, rather than testing the values are in a
16145         certain range.
16146
16147 2009-06-19  Richard Guenther  <rguenther@suse.de>
16148
16149         * tree-ssa-alias.c (ptr_deref_may_alias_decl_p): Handle
16150         ADDR_EXPR pointers.
16151         (ptr_derefs_may_alias_p): Likewise.
16152         (ptr_deref_may_alias_ref_p_1): New function.
16153         (ptr_deref_may_alias_ref_p): Likewise.
16154         (ref_maybe_used_by_call_p_1): Handle builtins that are not
16155         covered by looking at the ESCAPED solution.
16156         (call_may_clobber_ref_p_1): Likewise.
16157         * tree-ssa-structalias.c (get_constraint_for_ptr_offset):
16158         Handle NULL_TREE offset.  Do not produce redundant constraints.
16159         (process_all_all_constraints): New helper function.
16160         (do_structure_copy): Use it.
16161         (handle_lhs_call): Likewise.
16162         (find_func_aliases): Handle some builtins with pointer arguments
16163         and/or return values explicitly.
16164
16165 2009-06-19  Ian Lance Taylor  <iant@google.com>
16166
16167         * varasm.c (const_rtx_hash_1): Remove const qualifier from shift.
16168
16169 2009-06-19  Ian Lance Taylor  <iant@google.com>
16170
16171         * rtl.h (SUBREG_PROMOTED_UNSIGNED_P): Add cast to int.
16172
16173 2009-06-19  Ian Lance Taylor  <iant@google.com>
16174
16175         * ggc-page.c (ggc_pch_write_object): Initialize emptyBytes.
16176         * sdbout.c (sdb_debug_hooks): Initialize non-SDB_DEBUGGING_INFO
16177         version.
16178
16179         * c-decl.c (finish_decl): If -Wc++-compat, warn about
16180         uninitialized const.
16181
16182 2009-06-19  Ian Lance Taylor  <iant@google.com>
16183
16184         * dse.c (struct store_info): Rename bitmap field to bmap.  Change
16185         all uses.
16186
16187         * c-decl.c (in_struct, struct_types): Remove.
16188         (struct c_binding): Add in_struct field.
16189         (c_binding_ptr): Define type, along with VEC.
16190         (struct c_struct_parse_info): Define.
16191         (struct_parse_info): New static variable.
16192         (bind): Initialize in_struct field.
16193         (start_struct): Remove enclosing_in_struct and
16194         enclosing_struct_types parameters.  Add
16195         enclosing_struct_parse_info parameter.  Change all callers.  Set
16196         struct_parse_info rather than in_struct and struct_types.
16197         (grokfield): If -Wc++-compat and there is a symbol binding for the
16198         field name, set the in_struct flag and push it on the
16199         struct_parse_info->fields vector.
16200         (warn_cxx_compat_finish_struct): New static function.
16201         (finish_struct): Remove enclosing_in_struct and
16202         enclosing_struct_types parameters.  Add
16203         enclosing_struct_parse_info parameter.  Change all callers.  Don't
16204         set C_TYPE_DEFINED_IN_STRUCT here.  Call
16205         warn_cxx_compat_finish_struct.  Free struct_parse_info and set to
16206         parameter.  Only push on struct_types if warn_cxx_compat.
16207         (finish_enum): Only push on struct_types if warn_cxx_compat.
16208         (declspecs_add_type): Add loc parameter.  Change all callers.
16209         Change all error calls to error_at.  Pass loc, not input_location,
16210         to pedwarn calls.  Warn if -Wc++-compat and a typedef name is
16211         defined in a struct.  If -Wc++-compat and parsing a struct, record
16212         that a typedef name was used.
16213         * c-parser.c (c_parser_declspecs): Get location to pass to
16214         declspecs_add_type.
16215         (c_parser_struct_or_union_specifier): Update calls to start_struct
16216         and finish_struct.
16217         * c-tree.h (struct c_struct_parse_info): Declare.
16218         (finish_struct, start_struct): Update declarations.
16219         (declspecs_add_type): Update declaration.
16220
16221 2009-06-19  Ian Lance Taylor  <iant@google.com>
16222
16223         * c-decl.c (grokdeclarator): If -Wc++-compat, warn about a global
16224         variable with an anonymous type.
16225
16226 2009-06-19  Uros Bizjak  <ubizjak@gmail.com>
16227
16228         * see.c: Remove for real.
16229
16230 2009-06-19  Uros Bizjak  <ubizjak@gmail.com>
16231
16232         * optabs.h (enum optab_index): Add new OTI_significand.
16233         (significand_optab): Define corresponding macro.
16234         * optabs.c (init_optabs): Initialize significand_optab.
16235         * genopinit.c (optabs): Implement significand_optab using
16236         significand?f2 patterns.
16237         * builtins.c (expand_builtin_mathfn): Handle
16238         BUILT_IN_SIGNIFICAND{,F,L}.
16239         (expand_builtin): Expand BUILT_IN_SIGNIFICAND{,F,L} using
16240         expand_builtin_mathfn if flag_unsafe_math_optimizations is set.
16241
16242         * config/i386/i386.md (significandxf2, significand<mode>2): New
16243         expanders to implement significandf, significand and significandl
16244         built-ins as inline x87 intrinsics.
16245
16246 2009-06-18  Anatoly Sokolov  <aesok@post.ru>
16247
16248         * config/avr/avr.c (avr_override_options): Remove setting value of
16249         PARAM_INLINE_CALL_COST.
16250
16251 2009-06-18  Richard Henderson  <rth@redhat.com>
16252
16253         PR 40488
16254         * tree-pass.h (TDF_ASMNAME): New.
16255         * tree-dump.c (dump_options): Add asmname.
16256         * doc/invoke.texi: Document it.
16257
16258         * tree-pretty-print.c (maybe_dump_asm_name): Merge into...
16259         (dump_decl_name): ...here.
16260         (dump_function_name): New flags arg; mind TDF_ASMNAME.
16261         (dump_generic_node): Update dump_function_name calls.
16262         (print_call_name): New flags arg; update all dump calls.
16263         * diagnostic.h (print_call_name): Update.
16264         * gimple-pretty-print.c (dump_gimple_call): Update.
16265
16266 2009-06-18  H.J. Lu  <hongjiu.lu@intel.com>
16267
16268         PR target/40470
16269         * config/i386/i386.h (CLASS_LIKELY_SPILLED_P): Add SSE_FIRST_REG.
16270
16271 2009-06-18  Diego Novillo  <dnovillo@google.com>
16272
16273         * doc/plugins.texi: Document plugin_is_GPL_compatible.
16274         * plugin.c (str_license): Declare.
16275         (try_init_one_plugin): Assert that the symbol
16276         'plugin_is_GPL_compatible' exists.
16277
16278 2009-06-18  Sergei Dyshel  <sergeid@il.ibm.com>
16279
16280         * see.c: Remove.
16281         * Makefile.in (OBJS-common): Remove see.o.
16282         (see.o): Remove.
16283         * common.opt (fsee): Mark as preserved for backward compatibility.
16284         * opts.c (common_handle_option): Add OPT_fsee to the backward
16285         compatibility section.
16286         * passes.c (init_optimization_passes, pass_see): Remove pass.
16287         * timevar.def (TV_SEE): Remove.
16288         * tree-pass.h (pass_see): Remove declaration.
16289         * doc/invoke.texi (-fsee): Remove documentation.
16290
16291 2009-06-18  Martin Jambor  <mjambor@suse.cz>
16292
16293         * tree-sra.c: Include statistics.h
16294         (sra_stats): New variable.
16295         (sra_initialize): Clear sra_stats.
16296         (create_access_replacement): Increment sra_stats.replacements.
16297         (get_access_replacement): Do not return twice.
16298         (analyze_all_variable_accesses): Increment statistics counter by the
16299         number of scalarized aggregates.
16300         (generate_subtree_copies): Increment sra_stats.subtree_copies.
16301         (sra_modify_expr): Increment sra_stats.exprs.
16302         (load_assign_lhs_subreplacements): Increment sra_stats.subreplacements.
16303         (sra_modify_assign): Increment sra_stats.exprs,
16304         sra_stats.separate_lhs_rhs_handling and sra_stats.deleted.
16305         (perform_intra_sra): Update statistics counters.
16306         * Makefile.in (tree-sra.o): Add statistics.h to dependencies.
16307
16308 2009-06-18  Sandra Loosemore  <sandra@codesourcery.com>
16309
16310         * config/arm/arm.c (TARGET_SCALAR_MODE_SUPPORTED_P): Redefine.
16311         (arm_scalar_mode_supported_p): New function.
16312
16313 2009-06-18  Paul Brook  <paul@codesourcery.com>
16314             Sandra Loosemore  <sandra@codesourcery.com>
16315
16316         * config/arm/sfp-machine.h (_FP_NANFRAC_H, _FP_NANSIGN_H): Define.
16317         (__extendhfsf2, __truncsfhf2): Define.
16318         * config/arm/fp16.c: New file.
16319         * config/arm/t-bpabi (LIB2FUNCS_STATIC_EXTRA): Add fp16.c.
16320         * config/arm/t-symbian (LIB2FUNCS_STATIC_EXTRA):  Add fp16.c.
16321
16322 2009-06-18  Sandra Loosemore  <sandra@codesourcery.com>
16323
16324         * doc/extend.texi (Half-Precision): New section.
16325         * doc/invoke.texi (Option Summary): List -mfp16-format.
16326         (ARM Options): List neon-fp16 as -mfpu value.  Document -mfp16-format.
16327         * config/arm/arm.opt (mfp16-format=): New.
16328         * config/arm/arm.c: Include intl.h.
16329         (TARGET_INVALID_PARAMETER_TYPE): Redefine.
16330         (TARGET_INVALID_RETURN_TYPE): Redefine.
16331         (TARGET_PROMOTED_TYPE): Redefine.
16332         (TARGET_CONVERT_TO_TYPE): Redefine.
16333         (arm_fp16_format): Define.
16334         (all_fpus): Add entry for neon-fp16.
16335         (fp_model_for_fpu): Likewise.
16336         (struct fp16_format): Declare.
16337         (all_fp16_formats): Define.
16338         (arm_init_libfuncs): Add entries for HFmode conversions and arithmetic
16339         functions.
16340         (arm_override_options): Set arm_fp16_format. Call sorry for fp16
16341         and no ldrh.
16342         (arm_legitimate_index_p): Treat HFmode like HImode.
16343         (thumb1_legitimate_address_p): Make it recognize HFmode constants.
16344         (coproc_secondary_reload_class): Special-case HFmode.
16345         (arm_print_operand): Add 'z' specifier for vld1.16/vst1.16.
16346         (arm_hard_regno_mode_ok): Allow HFmode values in VFP registers.
16347         (arm_init_fp16_builtins): New.
16348         (arm_init_builtins): Call it.
16349         (arm_invalid_parameter_type): New.
16350         (arm_invalid_return_type): New.
16351         (arm_promoted_type): New.
16352         (arm_convert_to_type).
16353         (arm_file_start): Deal with neon-fp16 as fpu_name.  Emit tag for fp16
16354         format.
16355         (arm_emit_fp16_const): New function.
16356         (arm_mangle_type): Mangle __fp16 as "Dh".
16357         * config/arm/arm.h (TARGET_VFPD32): Make it know about
16358         FPUTYPE_NEON_FP16.
16359         (TARGET_NEON_FP16): New.
16360         (TARGET_NEON): Make it know about FPUTYPE_NEON_FP16.
16361         (enum fputype): Add FPUTYPE_NEON_FP16.
16362         (enum arm_fp16_format_type): Declare.
16363         (arm_fp16_format): Declare.
16364         (LARGEST_EXPONENT_IS_NORMAL): Define.
16365         * config/arm/arm-protos.h (arm_emit_fp16_const): Declare.
16366         * config/arm/arm-modes.def (HFmode): Define.
16367         * config/arm/vfp.md (*movhf_vfp): New.
16368         (extendhfsf2): New.
16369         (truncsfhf2): New.
16370         * config/arm/arm.md (fpu): Add neon_fp16.
16371         (floatsihf2, floatdihf2): New.
16372         (fix_trunchfsi2, fix_trunchfdi2): New.
16373         (truncdfhf2): New.
16374         (extendhfdf2): New.
16375         (movhf): New.
16376         (*arm32_movhf): New.
16377         (*thumb1_movhf): New.
16378         (consttable_2): Add check for HFmode constants.
16379         (consttable_4): Handle HFmode constants.
16380
16381 2009-06-18  Uros Bizjak  <ubizjak@gmail.com>
16382
16383         * convert.c (convert_to_integer): Convert (int)logb() into ilogb().
16384
16385 2009-06-17  Olivier Hainque  <hainque@adacore.com>
16386
16387         * collect2.c (main): Use CONST_CAST2 to perform char ** to
16388         const char ** conversion in AIX specific section.
16389
16390 2009-06-17  H.J. Lu  <hongjiu.lu@intel.com>
16391
16392         * config/i386/i386.c (ix86_special_builtin_type): Remove
16393         UINT64_FTYPE_PINT.  Add UINT64_FTYPE_PUNSIGNED.
16394         (bdesc_special_args): Updated.
16395         (ix86_init_mmx_sse_builtins): Likewise.
16396         (ix86_expand_special_args_builtin): Likewise.
16397
16398 2009-06-17  Richard Henderson  <rth@redhat.com>
16399
16400         * tree-pretty-print.c (maybe_dump_asm_name): New.
16401         (dump_decl_name): Use it.
16402         (PRINT_FUNCTION_NAME): Merge into...
16403         (dump_function_name): ... here.  Use maybe_dump_asm_name.
16404
16405 2009-06-17  Cary Coutant  <ccoutant@google.com>
16406
16407         * dbxout.c (dbxout_source_line): Add is_stmt parameter.
16408         Change caller.
16409         * debug.c (struct gcc_debug_hooks): Change placeholder for
16410         source_line hook.
16411         (debug_nothing_int_charstar_int): Replaced by...
16412         (debug_nothing_int_charstar_int_bool): ...this.
16413         * debug.h (struct gcc_debug_hooks): Add is_stmt parameter to
16414         source_line prototype.
16415         (debug_nothing_int_charstar_int): Replaced by...
16416         (debug_nothing_int_charstar_int_bool): ...this.
16417         * defaults.h (SUPPORTS_DISCRIMINATOR): New constant.
16418         * dwarf2out.c (dwarf2out_source_line): Add is_stmt parameter.
16419         Output is_stmt operand when necessary.
16420         * final.c (final_scan_insn): Pass is_stmt to source_line debug hook.
16421         (notice_source_line): Add is_stmt parameter.
16422         * sdbout.c (sdbout_source_line): Add is_stmt parameter.
16423         * vmsdbgout.c (vmsdbgout_source_line): Add is_stmt parameter.
16424         Change callers.
16425         * xcoffout.c (xcoffout_source_line): Add is_stmt parameter.
16426         * xcoffout.h (xcoffout_source_line): Add is_stmt parameter.
16427
16428 2009-06-17  Ian Lance Taylor  <iant@google.com>
16429
16430         * expr.c (struct move_by_pieces_d): Rename from move_by_pieces.
16431         Change all uses.
16432         (struct store_by_pieces_d): Rename from store_by_pieces.  Change
16433         call uses.
16434
16435 2009-06-17  Adam Nemet  <anemet@caviumnetworks.com>
16436
16437         * tree.h (STRIP_NOPS, STRIP_SIGN_NOPS,
16438         STRIP_USELESS_TYPE_CONVERSION): Use tree_strip_nop_conversions,
16439         tree_strip_sign_nop_conversions and
16440         tree_ssa_strip_useless_type_conversions rather than stripping
16441         the operations here.
16442         (tree_strip_nop_conversions, tree_strip_sign_nop_conversions):
16443         Declare them.
16444         * gimple.h (tree_ssa_strip_useless_type_conversions): Declare it.
16445         * tree-ssa.c (tree_ssa_strip_useless_type_conversions): New function.
16446         * tree.c (tree_nop_conversion, tree_sign_nop_conversion,
16447         tree_strip_nop_conversions, tree_strip_sign_nop_conversions): New
16448         functions.
16449
16450 2009-06-17  Michael Eager  <eager@eagercon.com>
16451
16452         * config/rs6000/constraints.md (register_constraint "d"): New.
16453         * config/rs6000/dfp.md (movsd_store, extendsddd2, extendsdtd2,
16454         truncddsd2, *negdd2_fpr, *absdd2_fpr, *nabsdd2_fpr,
16455         *movdd_hardfloat32, *movdd_hardfloat64_mfpgpr, *movdd_hardfloat64,
16456         *negtd2_fp, *abstd2_fpr, *nabstd2_fpr, *movtd_internal, extendddtd2,
16457         trunctddd2, adddd3, addtd3, subdd3, subtd3, muldd3, multd3, divdd3,
16458         divtd3, *cmpdd_internal1, *cmptd_internal1, floatditd2, ftruncdd2,
16459         fixdddi2, ftrunctd2, fixtddi2): replace 'f' constraint with 'd'
16460         * config/rs6000/ppu_intrinsics.h (__mffs, __mtfsf, __mtfsfi, __fabs,
16461         __fnabs, __fmadd, __fmsub, __fnmadd, __fnmsub, __fsel, __frsqrte,
16462         __fsqrt, __fmul, __fmuls, __frsp, __fcfid, __fctid, __fctidz, __fctiw,
16463         __fctiwz): Same.
16464         * config/rs6000/rs6000.md (*extendsfdf2_fpr, *truncdfsf2_fpr,
16465         *fseldfsf4, *negdf2_fpr, *absdf2_fpr, *nabsdf2_fpr, *adddf3_fpr,
16466         *subdf3_fpr, *muldf3_fpr, *divdf3_fpr, recipdf3, fred, sqrtdf2,
16467         *fseldfdf4, *fselsfdf4, *floatsidf2_internal, *floatunssidf2_internal,
16468         *fix_truncdfsi2_internal, fix_truncdfsi2_internal_gfxopt,
16469         fix_truncdfsi2_mfpgpr, fctiwz, btruncdf2, ceildf2, floordf2, rounddf2,
16470         stfiwx, floatdidf2, fix_truncdfdi2, floatdisf2_internal1,
16471         *movdf_hardfloat32, *movdf_hardfloat64_mfpgpr, *movdf_hardfloat64,
16472         *movtf_internal, *extenddftf2_internal, trunctfdf2_internal1,
16473         trunctfdf2_internal2, trunctfsf2_fprs, fix_trunc_helper,
16474         *fix_trunctfsi2_internal, negtf2_internal, *movdi_internal32,
16475         *movdi_mfpgpr, *movdi_internal64, *movdf_update1, *movdf_update2,
16476         *cmpdf_internal1, *cmptf_internal1, *cmptf_internal2): Same.
16477         * doc/md.texi: Describe PowerPC 'd' constraint, update 'f' constraint.
16478
16479 2009-06-16  Ian Lance Taylor  <iant@google.com>
16480
16481         * profile.c (total_num_never_executed): Don't define.
16482         (compute_branch_probabilities): Don't count or print
16483         num_never_executed.
16484         (init_branch_prob): Don't set total_num_never_executed.
16485         (end_branch_prob): Don't print total_num_never_executed.
16486
16487 2009-06-17  David Daney  <ddaney@caviumnetworks.com>
16488
16489         * jump.c (cleanup_barriers): Handle case of no insns before a barrier.
16490
16491 2009-06-17  David Edelsohn  <edelsohn@gnu.org>
16492
16493         * config/rs6000/dfp.md (nabsdd2_fpr): Correct mode.
16494         (nabstd2_fpr): Same.
16495
16496 2009-06-17  Steve Ellcey  <sje@cup.hp.com>
16497
16498         * expr.c (expand_assignment): Change complex type check.
16499
16500 2009-06-17  Basile Starynkevitch  <basile@starynkevitch.net>
16501
16502         * doc/plugins.texi (Building GCC plugins): Added new section.
16503
16504 2009-06-17  Ian Lance Taylor  <iant@google.com>
16505
16506         * c-pch.c (get_ident): Don't set size of templ array.
16507         (pch_init): Don't set size of partial_pch array.
16508
16509         * c-typeck.c (digest_init): If -Wc++-compat, warn about using a
16510         string constant to intialize an array whose size is the length of
16511         the string.
16512
16513 2009-06-17  Richard Guenther  <rguenther@suse.de>
16514
16515         PR tree-optimization/40389
16516         * tree-ssa-structalias.c (handle_rhs_call): Restrict NRV case
16517         to addressable types.
16518         * gimple.c (walk_stmt_load_store_addr_ops): Likewise.
16519
16520 2009-06-17  Richard Guenther  <rguenther@suse.de>
16521
16522         PR middle-end/40460
16523         * tree-chrec.h (build_polynomial_chrec): If we cannot determine
16524         if there is no evolution of left in the loop bail out.
16525         * tree-chrec.c (chrec_fold_multiply_poly_poly): CSE one
16526         chrec_fold_multiply.
16527
16528 2009-06-16  J"orn Rennecke  <joern.rennecke@arc.com>
16529             Janis Johnson  <janis187@us.ibm.com>
16530
16531         PR target/39254
16532         * config/rs6000/rs6000.c (rs6000_emit_move): Don't emit a USE
16533         for the symbol ref of a constant that is the source of a move
16534         - nor for any other not-obvious-label-ref constants.
16535
16536 2009-06-16  Olatunji Ruwase  <tjruwase@google.com>
16537
16538         * plugin.c (position_pass): Skip newly inserted pass during list
16539         traversal to avoid repeated insertion.
16540
16541 2009-06-16  Ian Lance Taylor  <iant@google.com>
16542
16543         * vec.h (VEC_stack_alloc): Define different version if
16544         GATHER_STATISTICS is defined, to accept and ignore MEM_STAT.
16545         (DEF_VEC_ALLOC_FUNC_P_STACK): Remove MEM_STAT_DECL.
16546         (DEF_VEC_ALLOC_FUNC_O_STACK): Likewise.
16547         (DEF_VEC_ALLOC_FUNC_I_STACK): Likewise.
16548
16549 2009-06-16  H.J. Lu  <hongjiu.lu@intel.com>
16550
16551         * config.gcc (extra_headers): Add ia32intrin.h for x86.
16552
16553         * config/i386/i386.c (ix86_builtins): Add IX86_BUILTIN_BSRSI,
16554         IX86_BUILTIN_BSRDI.  IX86_BUILTIN_RDPMC, IX86_BUILTIN_RDTSC.
16555         IX86_BUILTIN_RDTSCP.  IX86_BUILTIN_ROLQI, IX86_BUILTIN_ROLHI,
16556         IX86_BUILTIN_RORQI and IX86_BUILTIN_RORHI.
16557         (ix86_special_builtin_type): Add UINT64_FTYPE_VOID,
16558         UINT64_FTYPE_PINT, INT_FTYPE_INT, UINT64_FTYPE_INT,
16559         INT64_FTYPE_INT64, UINT16_FTYPE_UINT16_INT and UINT8_FTYPE_UINT8_INT.
16560         (bdesc_special_args): Add __builtin_ia32_rdtsc and
16561         __builtin_ia32_rdtscp.
16562         (bdesc_args): Add __builtin_ia32_bsrsi, __builtin_ia32_bsrdi,
16563         __builtin_ia32_rolqi, __builtin_ia32_rolhi, __builtin_ia32_rorqi
16564         and __builtin_ia32_rorhi.
16565         (ix86_init_mmx_sse_builtins): Handle UINT64_FTYPE_VOID,
16566         UINT64_FTYPE_PINT, INT_FTYPE_INT, UINT64_FTYPE_INT,
16567         INT64_FTYPE_INT64, UINT16_FTYPE_UINT16_INT and UINT8_FTYPE_UINT8_INT.
16568         (ix86_expand_args_builtin): Likewise.
16569         (ix86_expand_special_args_builtin): Likewise.
16570
16571         * config/i386/i386.md (UNSPECV_RDTSCP): New.
16572         (UNSPECV_RDTSC): Likewise.
16573         (UNSPECV_RDPMC): Likewise.
16574         (*bsr): Renamed to ...
16575         (bsr): This
16576         (*bsr_rex64): Renamed to ...
16577         (bsr_rex64): This.
16578         (rdpmc): New.
16579         (*rdpmc): Likewise.
16580         (*rdpmc_rex64): Likewise.
16581         (rdtsc): Likewise.
16582         (*rdtsc): Likewise.
16583         (*rdtsc_rex64): Likewise.
16584         (rdtscp): Likewise.
16585         (*rdtscp): Likewise.
16586         (*rdtscp_rex64): Likewise.
16587
16588         * config/i386/ia32intrin.h: New.
16589
16590         * config/i386/x86intrin.h: Include <ia32intrin.h>.
16591
16592 2009-06-16  Ian Lance Taylor  <iant@google.com>
16593
16594         * ira-build.c (copy_info_to_removed_store_destinations):
16595         Initialize parent_a.
16596
16597 2009-06-16  Ian Lance Taylor  <iant@google.com>
16598
16599         * c-decl.c (grokdeclarator): Change size_varies to bool.
16600
16601 2009-06-16  Ian Lance Taylor  <iant@google.com>
16602
16603         * sel-sched.c: Make forward declarations of move_op_hooks and
16604         fur_hooks explicitly extern.
16605
16606 2009-06-16  Ian Lance Taylor  <iant@google.com>
16607
16608         * df-problems.c (df_byte_lr_alloc): Don't set problem_data to itself.
16609         * vec.c (vec_gc_o_reserve_1): Don't set alloc to itself.
16610
16611 2009-06-16  Ian Lance Taylor  <iant@google.com>
16612
16613         * resource.c (mark_referenced_resources): Change
16614         include_delayed_effects parameter to bool.  Change all callers.
16615         (mark_end_of_function_resources): Likewise.
16616         * reorg.c (insn_references_resource_p): Likewise.
16617         (insn_sets_resource_p): Likewise.
16618         * resource.h (mark_referenced_resources): Update declaration.
16619         (mark_end_of_function_resources): Update declaration.
16620
16621 2009-06-16  David Edelsohn  <edelsohn@gnu.org>
16622
16623         * config/rs6000/aix.h (LIBSTDCXX_STATIC): Remove -lstdc++.
16624
16625 2009-06-16  David Edelsohn  <edelsohn@gnu.org>
16626
16627         * doc/install.texi (*-*-aix): Update explanation of XLC bootstrap.
16628         GCC can bootstrap on AIX with GNU Binutils 2.20.
16629
16630 2009-06-16  Ian Lance Taylor  <iant@google.com>
16631
16632         * Makefile.in (tree-vect-stmts.o): Depend upon $(TOPLEV_H).
16633
16634 2009-06-16  Ian Lance Taylor  <iant@google.com>
16635
16636         * toplev.h (floor_log2): If GCC_VERSION >= 3004, declare as static
16637         inline, not extern inline.
16638         (exact_log2): Likewise.
16639         * toplev.c (floor_log2): Only define if GCC_VERSION < 3004. Don't
16640         test CLZ_HWI.
16641         (exact_log2): Likewise, but don't test CTZ_HWI.
16642
16643 2009-06-16  Ian Lance Taylor  <iant@google.com>
16644
16645         * bitmap.c (bitmap_clear): Don't declare as inline.
16646         * gimple.c (gimplify_assign): Likewise.
16647         * tree-ssa-sccvn.c (vn_nary_op_compute_hash): Likewise.
16648         * haifa-sched.c (insn_cost): Don't declare with HAIFA_INLINE.
16649         (sched_scan_info): Remove duplicate definition.
16650
16651 2009-06-16  Ian Lance Taylor  <iant@google.com>
16652
16653         * c-common.c (skip_evaluation): Don't define.
16654         (c_inhibit_evaluation_warnings): Define global variable.
16655         (overflow_warning): Check c_inhibit_evaluation_warnings rather
16656         than skip_evaluation.
16657         (convert_and_check, warn_for_div_by_zero): Likewise.
16658         * c-common.h (skip_evaluation): Don't declare.
16659         (c_inhibit_evaluation_warnings): Declare.
16660         * c-parser.c (c_parser_typeof_specifier): Set
16661         c_inhibit_evaluation_warnings rather than skip_evaluation.
16662         (c_parser_conditional_expression): Likewise.
16663         (c_parser_binary_expression): Likewise.
16664         (c_parser_sizeof_expression): Likewise.
16665         (c_parser_alignof_expression): Likewise.
16666         * c-typeck.c (build_indirect_ref): Check
16667         c_inhibit_evaluation_warnings rather than skip_evaluation.
16668         (build_conditional_expr, build_binary_op): Likewise.
16669
16670 2009-06-16  Richard Guenther  <rguenther@suse.de>
16671
16672         * tree-ssa-alias.c (is_escape_site): Remove.
16673         * tree-ssa-alias.h (enum escape_type): Remove.
16674         (is_escape_site): Likewise.
16675         * tree-ssa-structalias.c (find_func_aliases): Handle escapes
16676         via casts and asms without deferring to is_escape_site.
16677
16678 2009-06-16  Jakub Jelinek  <jakub@redhat.com>
16679
16680         PR middle-end/40446
16681         * expr.c (expand_expr_real_1) <case VIEW_CONVERT_EXPR>: Don't
16682         use gen_lowpart if op0 has complex mode.
16683
16684 2009-06-16  Richard Guenther  <rguenther@suse.de>
16685
16686         * tree-ssa-structalias.c (do_ds_constraint): Stores in global
16687         variables add them to ESCAPED.
16688         (find_func_aliases): Do not make all indirectly stored values escaped.
16689
16690 2009-06-16  Rafael Avila de Espindola  <espindola@google.com>
16691
16692         * config/i386/winnt.c (i386_pe_encode_section_info): Update call to
16693         make_decl_one_only.
16694
16695 2009-06-16  Martin Jambor  <mjambor@suse.cz>
16696
16697         PR tree-optimization/40432
16698         * tree-sra.c (sra_modify_assign): When creating VIEW_CONVERT_EXPR,
16699         check whether we need to force gimple register operand.
16700
16701 2009-06-16  Martin Jambor  <mjambor@suse.cz>
16702
16703         PR tree-optimization/40413
16704         * tree-sra.c (load_assign_lhs_subreplacements): Pass offset to
16705         build_ref_for_offset.
16706         (propagate_subacesses_accross_link): Fix a typo in a comment.
16707
16708 2009-06-16  Ira Rosen  <irar@il.ibm.com>
16709
16710         * tree-parloops.c (loop_parallel_p): Call vect_is_simple_reduction
16711         with additional parameter.
16712         * tree-vectorizer.h (enum vect_def_type): Add new value
16713         vect_nested_cycle.
16714         (enum vect_relevant): Add comments.
16715         (vect_is_simple_reduction): Add new argument.
16716         * tree-vect-loop.c (vect_analyze_scalar_cycles_1): Add comments.
16717         Detect nested cycles.
16718         (vect_is_simple_reduction): Update documentation, add an argument to
16719         distinguish inner-loop reduction from nested cycle, detect nested
16720         cycles, fix printings and indentation, don't swap operands in case
16721         of nested cycle.
16722         (get_initial_def_for_reduction): Handle subtraction.
16723         (vect_create_epilog_for_reduction): Add new argument to specify
16724         reduction variable.
16725         (vect_finalize_reduction): Handle subtraction, fix comments.
16726         (vectorizable_reduction): Handle nested cycles. In case of nested
16727         cycle keep track of the reduction variable position. Call
16728         vect_is_simple_reduction with additional parameter. Use original
16729         statement code in reduction epilogue for nested cycle. Call
16730         vect_create_epilog_for_reduction with additional parameter.
16731         * tree-vect-patterns.c (vect_recog_dot_prod_pattern): Assert
16732         inner-loop vectorization.
16733         (vect_recog_widen_sum_pattern): Likewise.
16734         * tree-vect-stmts.c (process_use): Distinguish between nested cycles
16735         and reductions.
16736         (vect_mark_stmts_to_be_vectorized): Likewise.
16737         (vect_get_vec_def_for_operand): Handle nested cycles.
16738
16739 2009-06-16  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
16740
16741         * doc/invoke.texi (Debugging Options): Fix option index entries
16742         for -fdump-statistics, -frandom-seed add entries for
16743         -fdump-tree-original, -fdump-tree-optimized, -frandom-seed.
16744         (FRV Options): Fix entries for -mTLS, -mtls.
16745         (HPPA Options): Fix entries for -mgnu-ld, -mhp-ld.
16746         (i386 and x86-64 Options): Fix entry for -mno-red-zone.
16747         (M68hc1x Options): Fix @itemx for -mnominmax.
16748         (MCore Options): Fix entry for -mno-lsim.
16749         (MMIX Options): Fix entry for -mabi=mmixware.
16750         (PDP-11 Options): Fix entry for -mbcopy-builtin.
16751
16752 2009-06-16  Basile Starynkevitch  <basile@starynkevitch.net>
16753
16754         * doc/plugins.texi (Interacting with the GCC Garbage Collector):
16755         Mention the plugin mode of gengtype.
16756         * doc/gty.texi (Source Files Containing Type Information): Likewise.
16757         * gengtype.c: Updated copyright.
16758         (plugin_files, nb_plugin_files) Added new static variables.
16759         (measure_input_list) Care about plugin_files.
16760         (write_rtx_next): Added early return in plugin mode.
16761         (create_file): Updated copyright year in generated file. Added
16762         asserts.
16763         (oprintf): Added early return if NULL outf.
16764         (get_output_file_with_visibility): Care of plugin_files.
16765         (get_output_file_name): May return null.
16766         (write_local): Added early return.
16767         (put_mangled_filename): Ditto.
16768         (finish_root_table): Added check for base_files.
16769         (write_roots): Care about null when plugins.
16770         (main): Added plugin mode.
16771
16772 2009-06-15  Ian Lance Taylor  <iant@google.com>
16773
16774         * df-problems.c (df_simulate_one_insn_forwards): Fix braces in switch.
16775         * gcov.c (read_count_file): Add braces around variables declared
16776         before label.
16777
16778         * c.opt (Wjump-misses-init): New warning.
16779         * c-opts.c (c_common_handle_option): Set warn_jump_misses_init for
16780         -Wall and -Wc++-compat if not already set.
16781         (c_common_post_options): Clear warn_jump_misses_init if it was not
16782         set.
16783         * c-decl.c (struct c_binding): Change type field to a union with
16784         new label field.  Make it the first field in the struct.  Update
16785         references to type to use u.type instead.
16786         (struct c_spot_bindings): Define.
16787         (struct c_goto_bindings): Define.
16788         (c_goto_bindings_p): Define, along with VECs.
16789         (struct c_label_vars): Define.
16790         (struct c_scope): Add has_label_bindings field.
16791         (bind_label, set_spot_bindings): New static functions.
16792         (decl_jump_unsafe, update_spot_bindings): New static functions.
16793         (update_label_decls): New static function.
16794         (pop_scope): Call update_label_decls.  Don't call c_end_vm_scope.
16795         Update binding u.label field to shadowed field.
16796         (c_binding_start_stmt_expr): New function.
16797         (c_binding_end_stmt_expr): New function.
16798         (pushdecl): Don't call c_begin_vm_scope.
16799         (make_label): Add defining and p_label_vars parameters.  Change
16800         all callers.
16801         (lookup_label): Correct test for whether a label has not yet been
16802         defined.  Call bind_label rather than bind.
16803         (warn_about_goto): New static function.
16804         (lookup_label_for_goto): New function.
16805         (declare_label): Call bind_label rather than bind.
16806         (check_earlier_gotos): New static function.
16807         (define_label): Don't give errors about jumping into statement
16808         expressions or scopes of variably modified types.  Call
16809         set_spot_bindings and check_earlier_gotos.  Call bind_label
16810         instead of bind.  Don't set label_context_stack_se or
16811         label_context_stack_vm.
16812         (c_get_switch_bindings): New function.
16813         (c_release_switch_bindings): New function.
16814         (c_check_switch_jump_warnings): New function.
16815         (start_function): Don't set label_context_stack_se or
16816         label_context_stack_vm.
16817         (finish_function): Likewise.
16818         * c-typeck.c (label_context_stack_se): Don't define.
16819         (label_context_stack_vm): Don't define.
16820         (c_finish_goto_label): Call lookup_label_for_goto rather than
16821         lookup_label.  Don't give errors about jumping into a statement
16822         expression or the scope of a variably modified type.  Don't set
16823         label_context_stack_se or label_context_stack_vm.
16824         (struct c_switch): Remove blocked_stmt_expr and blocked_vm
16825         fields.  Add bindings field.
16826         (c_start_case): Don't set deleted fields.  Set bindings field.
16827         (do_case): Rework order of tests.  Don't check blocked_stmt_expr
16828         or blocked_vm.  Call c_check_switch_jump_warnings.
16829         (c_finish_case): Don't test blocked_stmt_expr field.  Call
16830         c_release_switch_bindings.
16831         (c_begin_stmt_expr): Don't increment blocked_stmt_expr in
16832         c_switch_stack.  Don't walk label_context_stack_se labels.  Don't
16833         set label_context_stack_se.  Call c_bindings_start_stmt_expr.
16834         (c_finish_stmt_expr): Don't decrement blocked_stmt_expr in
16835         c_switch_stack.  Don't walk label_context_stack_se labels.  Don't
16836         set label_context_stack_se.  Call c_bindings_end_stmt_expr.
16837         (c_begin_vm_scope, c_end_vm_scope): Don't define.
16838         * c-tree.h (C_DECL_UNJUMPABLE_STMT_EXPR): Don't define.
16839         (C_DECL_UNDEFINABLE_STMT_EXPR): Don't define.
16840         (C_DECL_UNJUMPABLE_VM): Don't define.
16841         (C_DECL_UNDEFINABLE_VM): Don't define.
16842         (struct c_label_list): Don't define.
16843         (struct c_label_context_se): Don't define.
16844         (struct c_label_context_vm): Don't define.
16845         (struct c_spot_bindings): Declare.
16846         (c_bindings_start_stmt_expr): Declare.
16847         (c_bindings_end_stmt_expr): Declare.
16848         (lookup_label_for_goto): Declare.
16849         (c_get_switch_bindings, c_release_switch_bindings): Declare.
16850         (c_check_switch_jump_warnings): Declare.
16851         (label_context_stack_se, label_context_stack_vm): Don't declare.
16852         (c_finish_goto_label): Update declaration.
16853         (c_begin_vm_scope, c_end_vm_scope): Don't declare.
16854         * doc/invoke.texi (Option Summary): Mention -Wjump-misses-init.
16855         (Warning Options): Document -Wjump-misses-init.
16856
16857 2009-06-15  Jakub Jelinek  <jakub@redhat.com>
16858
16859         * tree-object-size.c (addr_object_size): Fix a pasto in the last
16860         change.
16861
16862 2009-06-15  Rafael Avila de Espindola  <espindola@google.com>
16863
16864         * cgraph.c (cgraph_make_node_local): Use DECL_COMDAT_GROUP.
16865
16866 2009-06-15  Aldy Hernandez  <aldyh@redhat.com>
16867
16868         * except.c (init_eh): Use BUILTINS_LOCATION when calling build_decl.
16869
16870 2009-06-15  Aldy Hernandez  <aldyh@redhat.com>
16871
16872         * tree-eh.c (lower_try_finally_switch): Initialize tf_loc.
16873
16874 2009-06-15  Rafael Avila de Espindola  <espindola@google.com>
16875
16876         * cgraphunit.c (cgraph_function_versioning,save_inline_function_body):
16877         Use DECL_COMDAT_GROUP instead of DECL_ONE_ONLY.
16878         * cgraph.c (cgraph_create_virtual_clone): Use DECL_COMDAT_GROUP.
16879         * config/i386/i386.c (ix86_file_end): Compute DECL_COMDAT_GROUP.
16880         * dwarf2asm.c (dw2_force_const_mem): Update call to
16881         make_decl_one_only.
16882         * langhooks-def.h (lhd_comdat_group, LANG_HOOKS_COMDAT_GROUP): Remove.
16883         (LANG_HOOKS_DECLS): Remove LANG_HOOKS_COMDAT_GROUP.
16884         * langhooks.c (lhd_comdat_group): Remove.
16885         * langhooks.h (lang_hooks_for_decls): Remove comdat_group.
16886         * tree.h (DECL_COMDAT_GROUP): New.
16887         (DECL_ONE_ONLY): Use DECL_COMDAT_GROUP.
16888         (tree_decl_with_vis): Add comdat_group. Remove one_only.
16889         (make_decl_one_only): Change signature.
16890         * varasm.c (get_emutls_init_templ_addr, emutls_decl): Update call to
16891         make_decl_one_only.
16892         (make_decl_one_only): Change signature.
16893         (default_elf_asm_named_section): Use DECL_COMDAT_GROUP.
16894
16895 2009-06-15  Richard Guenther  <rguenther@suse.de>
16896
16897         PR middle-end/40439
16898         * tree.c (widest_int_cst_value): Fix bootstrap on 32bit HWI hosts.
16899
16900 2009-06-14  Andreas Krebbel  <Andreas.Krebbel@de.ibm.com>
16901
16902         * tree-ssa-math-opts.c: Remove extra divide.
16903
16904 2009-06-14  Andreas Krebbel  <Andreas.Krebbel@de.ibm.com>
16905
16906         * config/s390/s390.md ("bswap<mode>2"): Only available on z900.
16907
16908 2009-06-14  Andreas Krebbel  <Andreas.Krebbel@de.ibm.com>
16909
16910         * passes.c: Add bswap pass.
16911         * tree-pass.h: Add pass_optimize_bswap declaration.
16912         * tree-ssa-math-opts.c: Include diagnostics.h for print_gimple_stmt.
16913         Include rtl.h, expr.h and optabs.h for optab_handler check.
16914         (struct symbolic_number, pass_optimize_bswap): New definition.
16915         (do_shift_rotate, verify_symbolic_number_p): New functions.
16916         (find_bswap_1, find_bswap, execute_optimize_bswap): New functions.
16917         (gate_optimize_bswap): New function.
16918         * tree.c (widest_int_cst_value): New function.
16919         * tree.h (widest_int_cst_value): Prototype added.
16920
16921 2009-06-14  Steven Bosscher  <steven@gcc.gnu.org>
16922
16923         * cfgcleanup.c (old_insns_match_p): Remove code to substitute
16924         REG_EQUAL/REG_EQUIV notes.
16925
16926 2009-06-14  Richard Guenther  <rguenther@suse.de>
16927
16928         PR middle-end/40389
16929         * gimple.c (walk_stmt_load_store_addr_ops): The LHS of a call
16930         has its address taken if NRV was applied and it is addressable.
16931         * tree-ssa-structalias.c (get_constraint_for_address_of): New
16932         function split out from ...
16933         (get_constraint_for_1): ... here.
16934         (handle_rhs_call): Use it to mark the return slot escaped if
16935         it is addressable and NRV was applied.
16936
16937 2009-06-13  Aldy Hernandez  <aldyh@redhat.com>
16938
16939         * config/rs6000/rs6000-protos.h (altivec_resolve_overloaded_builtin):
16940         Change first argument type to location_t.
16941         * config/rs6000/rs6000-c.c (altivec_resolve_overloaded_builtin): Same.
16942         Do not set input_location.
16943         Use loc instead of input_location throughout.
16944
16945 2009-06-13  Richard Guenther  <rguenther@suse.de>
16946
16947         PR tree-optimization/40421
16948         * tree-predcom.c (should_unroll_loop_p): Remove.
16949         (tree_predictive_commoning_loop): Use can_unroll_loop_p.
16950
16951 2009-06-13  Michael Meissner  <meissner@linux.vnet.ibm.com>
16952
16953         * config/rs6000/rs6000-c.c (altivec_resolve_overloaded_builtin):
16954         Add location argument.
16955
16956 2009-06-13  Aldy Hernandez  <aldyh@redhat.com>
16957
16958         * config/alpha/alpha.c (alpha_build_builtin_va_list): Pass location to
16959         build_decl.
16960         * config/s390/s390.c (s390_build_builtin_va_list): Same.
16961         (s390_gimplify_va_arg): Pass location to create_artificial_label.
16962         * config/spu/spu-protos.h: Add location to
16963         spu_resolve_overloaded_builtin.
16964         * config/spu/spu.c (spu_build_builtin_va_list): Pass location to
16965         spu_build_builtin_va_list.
16966         * config/spu/spu-c.c (spu_resolve_overloaded_builtin): Add location
16967         argument.  Pass location to build_function_call_vec.
16968         * config/sh/sh.c (sh_build_builtin_va_list): Pass location to
16969         build_decl.
16970         (emit_fpu_switch): Same.
16971         (sh_gimplify_va_arg_expr): Pass location to create_artificial_label.
16972         * config/xtensa/xtensa.c (xtensa_build_builtin_va_list): Pass location
16973         to build_decl and create_artificial_label.
16974         (xtensa_gimplify_va_arg_expr): Same.
16975         * config/stormy16/stormy16.c (xstormy16_build_builtin_va_list): Same.
16976         (xstormy16_gimplify_va_arg_expr): Same.
16977         * config/iq2000/iq2000.c (iq2000_expand_prologue): Same.
16978         * config/arm/arm.c (arm_build_builtin_va_list): Same.
16979         * config/mips/mips.c (mips_build_builtin_va_list): Same.
16980         (mips16_build_function_stub): Same.
16981         (mips16_build_call_stub): Same.
16982
16983 2009-06-13  Richard Earnshaw  <rearnsha@arm.com>
16984
16985         PR target/40327
16986         * arm/constraints.md (Pa, Pb): New constraints.
16987         * arm/arm.md (thumb1_addsi3): Support more complex additions.  Add a
16988         split pattern to deal with them.
16989
16990 2009-06-13  Joerg Sonnenberger  <joerg@britannica.bec.de>
16991
16992         * doc/invoke.texi: Add missing option -Wp,OPTION in list,
16993         fix index entry for -Xpreprocessor.
16994
16995 2009-06-12  Aldy Hernandez  <aldyh@redhat.com>
16996
16997         * config/rs6000/rs6000-c.c (altivec_resolve_overloaded_builtin):
16998         Add location argument to build_decl call.
16999         * config/rs6000/rs6000.c (rs6000_build_builtin_va_list): Same.
17000         (rs6000_init_builtins): Same.
17001         (spe_init_builtins): Same.
17002         (rs6000_gimplify_va_arg): Add location argument to
17003         create_artificial_label call.
17004
17005 2009-06-12  Steven Bosscher  <steven@gcc.gnu.org>
17006
17007         * timevar.def (TV_COMBINE_STACK_ADJUST): New timevar.
17008         * combine-stack-adj.c (pass_stack_adjustments): Use it.
17009         * Makefile.in: Fix GGC dependency for gcse.o.
17010
17011 2009-06-12  Aldy Hernandez  <aldyh@redhat.com>
17012
17013         * tree-pretty-print.c (dump_generic_node): Dump column numbers.
17014         * gimple-pretty-print.c (dump_gimple_stmt): Same.
17015         * gimplify.c (gimplify_modify_expr): Set location for GIMPLE_ASSIGNs
17016         created.
17017         * c-parser.c (c_parser_binary_expression): Use current column while
17018         building binary operations.
17019         * common.opt (fshow-column): Enable by default.
17020         * tree-vrp.c (check_array_ref): Use warning_at.
17021         (check_array_bounds): Use location from call back if expr has no
17022         location.
17023         * tree.h: Add location argument to maybe_fold_*.
17024         * tree-ssa-ccp.c (ccp_fold): Pass location to maybe_fold_*.
17025         (maybe_fold_offset_to_array_ref): Add location argument and use it.
17026         (maybe_fold_offset_to_component_ref): Same.
17027         (maybe_fold_offset_to_reference): Same.
17028         (maybe_fold_offset_to_address): Same.
17029         (maybe_fold_stmt_indirect): Same.
17030         (maybe_fold_stmt_addition): Same.
17031         (fold_stmt_r): Pass location to maybe_fold_*.
17032         (fold_gimple_assign): Same.
17033         * c-tree.h: Add location argument to finish_decl,
17034         default_function_array_conversion, store_init_value.
17035         * c-decl.c (define_label): Use error_at.
17036         (c_make_fname_decl): Pass location to finish_decl.
17037         (finish_decl): New location argument.
17038         (build_compound_literal): Pass location to store_init_value.
17039         (grokdeclarator): Pass location to finish_decl.
17040         (grokfield): Same.
17041         * c-typeck.c (array_to_pointer_conversion): New location argument.
17042         (function_to_pointer_conversion): Same.
17043         (default_function_array_conversion): Same.
17044         (parser_build_unary_op): Pass location to overflow_warning.
17045         (parser_build_binary_op): Same.  Use warning_at.
17046         (build_unary_op): Pass location to array_to_pointer_conversion.
17047         (build_c_cast): Pass location to digest_init.
17048         (build_modify_expr): New location argument.
17049         (convert_for_assignment): Same.
17050         (store_init_value): Same.
17051         (digest_init): Same.
17052         (output_init_element): Pass location to digest_init and
17053         array_to_pointer_conversion.
17054         (c_finish_return): Pass location to convert_for_assignment.
17055         * gimplify.c (gimplify_conversion): Pass location to
17056         maybe_fold_offset_to_address.
17057         * tree-ssa-forwprop.c (forward_propagate_addr_expr_1): Pass location
17058         to maybe_fold_stmt_addition.
17059         * c-omp.c (c_finish_omp_atomic): Pass new location to
17060         build_modify_expr.
17061         (c_finish_omp_for): Same.
17062         * c-common.c (overflow_warning): New argument.
17063         * c-common.h: New argument to build_modify_expr, overflow_warning.
17064         * c-parser.c (c_parser_declaration_or_fndef): Pass location to
17065         finish_decl.
17066         (c_parser_initializer): Pass location to
17067         default_function_array_conversion.
17068         (c_parser_initelt): Same.
17069         (c_parser_initval): Same.
17070         (c_parser_asm_operands): Same.
17071         (c_parser_expr_no_commas): Same.  Pass location to build_modify_expr.
17072         (c_parser_conditional_expression): Same.
17073         (c_parser_binary_expression): Add location info to stack.  Use it.
17074         (c_parser_unary_expression): Pass location to
17075         default_function_array_conversion, parser_build_unary_op,
17076         build_indirect_ref, c_parser_postfix_expression_after_primary.
17077         (c_parser_postfix_expression_after_primary): New location argument.
17078         Use it.
17079         (c_parser_expression_conv): Pass location to
17080         default_function_array_conversion.
17081         (c_parser_expr_list): Same.
17082         (c_parser_omp_atomic): Same.
17083         (c_parser_omp_for_loop): Same.
17084         * c-tree.h (struct c_declarator): Add comment to id_loc.
17085         (build_array_declarator): New argument.
17086         * c-decl.c (build_array_declarator): Add location argument.
17087         (grokdeclarator): Set id_loc for cdk_array.
17088         * c-parser.c (c_parser_direct_declarator_inner): Pass location to
17089         build_array_declarator.
17090         * tree.c (build_omp_clause): Add location argument.
17091         * tree.h (OMP_CLAUSE_HAS_LOCATION): New macro.
17092         (OMP_CLAUSE_LOCATION): New macro.
17093         (struct tree_omp_clause): Add location field.
17094         (build_omp_clause): Add argument.
17095         * cp/pt.c (tsubst_omp_for_iterator): Pass location to
17096         build_omp_clause.
17097         * cp/parser.c (cp_parser_omp_var_list_no_open): Same.
17098         (cp_parser_omp_clause_collapse): Same.
17099         (cp_parser_omp_clause_default): Same.
17100         (cp_parser_omp_clause_if): Same.
17101         (cp_parser_omp_clause_nowait): Same.
17102         (cp_parser_omp_clause_num_threads): Same.
17103         (cp_parser_omp_clause_ordered): Same.
17104         (cp_parser_omp_clause_schedule): Same.
17105         (cp_parser_omp_clause_untied): Same.
17106         (cp_parser_omp_for_loop): Same.
17107         (cp_parser_omp_parallel): Pass location to c_split_parallel_clauses.
17108         * c-tree.h (c_start_case): Add location argument.
17109         (c_process_expr_stmt): Same.
17110         (c_finish_goto_*): Same.
17111         * tree-parloops.c (initialize_reductions): Pass location to
17112         build_omp_clause.
17113         (create_parallel_loop): Same.
17114         * fortran/trans-openmp.c (gfc_trans_omp_variable_list): Same.
17115         (gfc_trans_omp_reduction_list): Same.
17116         (gfc_trans_omp_clauses): Same.
17117         (gfc_trans_omp_do): Same.
17118         * c-typeck.c (c_finish_goto_label): Same.
17119         (c_finish_goto_ptr): New location argument.
17120         (c_start_case): Same.
17121         (emit_side_effect_warnings): Same.
17122         (c_process_expr_stmt): Same.
17123         (c_finish_stmt_expr): Same.
17124         (c_finish_omp_clauses): Use error_at instead of error.
17125         * gimplify.c (gimplify_adjust_omp_clauses_1): Pass location to
17126         build_omp_clause.
17127         * c-omp.c (c_split_parallel_clauses): New location argument.
17128         * tree-nested.c (convert_nonlocal_reference_stmt): Pass location
17129         to build_omp_clause.
17130         (convert_local_reference_stmt): Same.
17131         (convert_gimple_call): Same.
17132         * c-common.h (c_split_parallel_clauses): New argument.
17133         * c-parser.c (c_parser_statement_after_labels): Pass location to
17134         c_finish_goto_label.
17135         (c_parser_switch_statement): Pass location to c_start_case.
17136         (c_parser_for_statement): Pass location to c_finish_expr_stmt,
17137         and c_process_expr_stmt.
17138         (c_parser_omp_variable_list): Add location argument.
17139         (c_parser_omp_clause_collapse): Pass location to build_omp_clause.
17140         (c_parser_omp_clause_default): Same.
17141         (c_parser_omp_clause_if): Same.
17142         (c_parser_omp_clause_num_threads): Same.
17143         (-c_parser_omp_clause_ordered): Same.
17144         (c_parser_omp_clause_reduction): Pass location to
17145         c_parser_omp_variable_list.
17146         (c_parser_omp_clause_schedule): Pass location to build_omp_clause.
17147         (c_parser_omp_clause_untied): Same.
17148         (c_parser_omp_for_loop): Pass location to c_process_expr_stmt.
17149         (c_parser_omp_parallel): Pass location to c_split_parallel_clauses.
17150
17151         * c-tree.h (check_for_loop_decls, undeclared_variable,
17152         build_component_ref, build_array_ref, build_external_ref,
17153         c_expr_sizeof_expr, c_expr_sizeof_type, parser_build_unary_op,
17154         build_conditional_expr, build_compound_expr, c_cast_expr,
17155         build_c_cast, build_asm_expr, c_end_compound_stmt, c_finish_stmt_expr,
17156         c_finish_return, c_finish_omp_parallel, c_finish_omp_task): New
17157         argument.
17158         * c-semantics.c (build_stmt): Same.
17159         (build_case_label): Same.
17160         * c-decl.c (c_finish_incomplete_decl): Pass location on down.
17161         (undeclared_variable): New argument.
17162         (make_label): Same.
17163         (lookup_label): Pass location on down.
17164         (define_label): Same.
17165         (finish_decl): Same.
17166         (build_compound_literal): Same.
17167         (finish_struct): Same.
17168         (finish_function): Do not set location here.
17169         (check_for_loop_decls): New argument.
17170         * tree.c (save_expr): Set location.
17171         (build_empty_stmt): New argument.
17172         * tree.h (build_empty_stmt): New argument to build_empty_stmt.
17173         (CAN_HAVE_LOCATION_P): Make sure we have a non empty node.
17174         * builtins.c (gimplify_va_arg_expr): Use locations.
17175         (expand_builtin_sync_operation): Same.
17176         * c-typeck.c (build_component_ref): New argument.
17177         (build_array_ref): Same.
17178         (build_external_ref): Same.
17179         (c_expr_sizeof_expr): Same.
17180         (c_expr_sizeof_type): Same.
17181         (parser_build_unary_op): Same.
17182         (build_conditional_expr): Same.
17183         (build_compound_expr): Pass location on down.
17184         (build_compound_expr): New argument.
17185         (build_c_cast): Same.
17186         (c_cast_expr): Same.
17187         (build_asm_expr): Same.
17188         (c_finish_return): Same.
17189         (c_process_expr_stmt): Pass location on down.
17190         (c_finish_stmt_expr): New argument.
17191         (push_clenaup): Same.
17192         (c_finish_omp_parallel): Same.
17193         (c_finish_omp_task): Same.
17194         * gimplify.c (gimplify_call_expr): Pass location on down.
17195         * c-omp.c (c_finish_omp_master): New argument.
17196         (c_finish_omp_critical): Same.
17197         (c_finish_omp_ordered): Same.
17198         (c_finish_omp_barrier): Same.
17199         (-c_finish_omp_taskwait): Same.
17200         (c_finish_omp_atomic): Same.
17201         (c_finish_omp_flush): Same.
17202         * tree-inline.c (copy_tree_body_r): Pass location on down.
17203         (inline_forbidden_p): Remove use of input_location.
17204         * c-gimplify.c (c_build_bind_expr): New argument.
17205         * c-common.c (c_common_truthvalue_conversion): Pass location on down.
17206         (c_sizeof_or_alignof_type): New argument.
17207         (c_alignof_expr): Same.
17208         (build_va_arg): Same.
17209         (c_add_case_label): Same.
17210         * c-common.h (c_sizeof_or_alignof_type, c_alignof_expr,
17211         c_sizeof, c_alignof, build_va_arg, build_stmt, build_case_label,
17212         c_build_bind_expr, objc_build_selector_expr, objc_build_throw_stmt,
17213         c_finish_omp_master, c_finish_omp_critical, c_finish_omp_ordered,
17214         c_finish_omp_barrier, c_finish_omp_atomic, c_finish_omp_flush,
17215         c_finish_omp_taskwait, c_finish_omp_for, c_split_parallel_clauses):
17216         New argument.
17217         * stub-objc.c (objc_build_selector_expr): Same.
17218         (objc_build_throw_stmt): Same.
17219         * c-parser.c (c_parser_declaration_or_fndef): Pass location on down.
17220         (c_parser_initelt): Same.
17221         (c_parser_compound_statement): Same.
17222         (c_parser_compound_statement_nostart): Same.
17223         (c_parser_label): Same.
17224         (c_parser_statement_after_labels): Same.
17225         (c_parser_if_body): Same.
17226         (c_parser_else_body): Same.
17227         (c_parser_if_statement): Same.
17228         (c_parser_switch_statement): Same.
17229         (c_parser_while_statement): Same.
17230         (c_parser_do_statement): Same.
17231         (c_parser_for_statement): Same.
17232         (c_parser_asm_statement): Same.
17233         (c_parser_conditional_expression): Same.
17234         (c_parser_binary_expression): Same.
17235         (c_parser_cast_expression): Same.
17236         (c_parser_unary_expression): Same.
17237         (c_parser_sizeof_expression): Same.
17238         (c_parser_alignof_expression): Same.
17239         (c_parser_postfix_expression): Same.
17240         (c_parser_expression): Same.
17241         (c_parser_objc_receiver): Same.
17242         (c_parser_omp_variable_list): Same.
17243         (c_parser_omp_structured_block): Same.
17244         (c_parser_omp_atomic): New argument.
17245         (c_parser_omp_barrier): Same.
17246         (c_parser_omp_critical): Same.
17247         (c_parser_omp_flush): Pass location on down.
17248         (c_parser_omp_for_loop): New argument.
17249         (c_parser_omp_for): Same.
17250         (c_parser_omp_master): Same.
17251         (c_parser_omp_ordered): Same.
17252         (c_parser_omp_sections_scope): Same.
17253         (c_parser_omp_sections): Same.
17254         (c_parser_omp_parallel): Same.
17255         (c_parser_omp_single): Same.
17256         (c_parser_omp_task): Same.
17257         (c_parser_omp_taskwait): Pass location on down.
17258         (c_parser_omp_construct): Same.
17259         (c_parser_omp_threadprivate): Same.
17260         * dwarf2asm.c, targhooks.c, optabs.c, tree.c, tree.h, target.h,
17261         builtins.c, omp-low.c, cgraphunit.c, tree-call-cdce.c,
17262         tree-ssa-alias.c, gimple-low.c, c-tree.h, expr.c, tree-parloops.c,
17263         c-decl.c, tree-eh.c, langhooks.c, function.c, stor-layout.c,
17264         c-typeck.c, gimplify.c, c-pragma.c, expmed.c, except.c, coverage.c,
17265         emit-rtl.c, cfgexpand.c, tree-mudflap.c, varasm.c, tree-nested.c,
17266         rtl.h, tree-inline.c, tree-profile.c, c-common.c, c-common.h,
17267         tree-switch-conversion.c, tree-cfg.c, ipa-struct-reorg.c, c-parser.c,
17268         config/i386/i386.c, stmt.c:
17269         Add location argument to the following function definitions and/or
17270         function calls: build_decl, objcp_start_struct, objcp_finish_struct,
17271         start_struct, finish_struct, PUSH_FIELD, create_artificial_label,
17272         cp_make_fname_decl, pushtag, implicitly_declare, c_make_fname_decl,
17273         build_compound_literal, parser_xref_tag, resolve_overloaded_builtin,
17274         do_case, c_finish_bc_stmt, build_compound_literal,
17275         build_function_call.
17276         * c-decl.c (build_compound_literal): Add location argument.
17277         Make all diagnostic calls use location.
17278         (start_struct): Same.
17279         (finish_struct): Same.
17280         (start_enum): Same.
17281         (build_enumerator): Same.
17282         (start_function): Same.
17283         (grokdeclarator): Make all diagnostic calls use location.
17284         (store_parm_decls_oldstyle): Same.
17285         * c-typeck.c (build_function_call): Add location argument.
17286         Make all diagnostic calls use location.
17287         (do_case): Same.
17288         (c_finish_bc_stmt): Same.
17289         * tree-nested.c (get_trampoline_type): Add argument.
17290         Pass location to build_decl.
17291         (lookup_tramp_for_decl): Pass location to get_trampoline_type.
17292         * rtl.h (RTL_LOCATION): New.
17293         * c-common.c (c_add_case_label): Add location argument.
17294         Make all diagnostic calls use location.
17295         * c-common.h: Add location argument to make_fname_decl, do_case,
17296         c_add_case_label, build_function_call, resolve_overloaded_builtin.
17297         * c-parser.c (c_parser_enum_specifier): Rename ident_loc to enum_loc.
17298         Set it appropriately for every case.  Pass enum_loc to start_enum
17299         call.  Pass value_loc first to build_enumerator.  Pass enum_loc to
17300         parser_xref_tag.
17301         (c_parser_struct_or_union_specifier): Save location.  Use it for
17302         start_struct, finish_struct, and parser_xref_tag.
17303
17304 2009-06-12  Ian Lance Taylor  <iant@google.com>
17305
17306         * fold-const.c (fold_unary): Rename local variable and to and_expr.
17307
17308         * c-opts.c (c_common_handle_option): For -Wc++-compat set
17309         cpp_opts->warn_cxx_operator_names.
17310
17311 2009-06-12  Andrew Pinski  <andrew_pinski@playstation.sony.com>
17312
17313         PR tree-opt/38865
17314         * tree-ssa-sccvn.c (visit_reference_op_load): If vn_reference_lookup
17315         is returns NULL and OP is a VCE, look through the VCE.
17316
17317 2009-06-12  Ian Lance Taylor  <iant@google.com>
17318
17319         PR bootstrap/40430
17320         * collect2.c (main): Use CONST_CAST2 in code inside #if
17321         LINK_ELIMINATE_DUPLICATE_LDIRECTORIES.
17322
17323 2009-06-12  Joey Ye  <joey.ye@intel.com>
17324
17325         PR middle-end/39146
17326         * cfgexpand.c (get_decl_align_unit): Update
17327         max_used_stack_slot_alignment with align instead of
17328         stack_alignment_needed.
17329
17330         * function.c (assign_stack_local_1): Update
17331         max_used_stack_slot_alignment with alignment_in_bits instead
17332         of stack_alignment_needed.
17333         (locate_and_pad_parm): Don't update max_used_stack_slot_alignment
17334         here.
17335
17336 2009-06-12  Jakub Jelinek  <jakub@redhat.com>
17337
17338         * dwarf2out.c (last_var_location_insn): New variable.
17339         (dwarf2out_end_epilogue): Clear last_var_location_insn.
17340         (dwarf2out_var_location): Don't record anything after last real
17341         insn.  Only change labels if there were any real instructions
17342         in between last note and this one, or if changed sections.
17343
17344 2009-06-11  Richard Henderson  <rth@redhat.com>
17345
17346         * alpha.c (alpha_expand_prologue): Add a REF_CFA_REGISTER
17347         note when storing the frame pointer in a register.
17348         (FRP): Don't redefine to nothing for epilogue.
17349         (alpha_expand_epilogue): Mark register and sp restores.
17350         (unicosmk_gen_dsib): Don't mark weird frame pointer adjust.
17351
17352         * config/alpha/alpha.c (alpha_emit_setcc): Fix test for
17353         when gen_lowpart is needed.
17354
17355 2009-06-11  Richard Henderson  <rth@redhat.com>
17356
17357         * dwarf2out.c (def_cfa_1): Likewise for DW_CFA_cfa_offset.
17358
17359         * dwarf2out.c (need_data_align_sf_opcode): New.
17360         (div_data_align): Move earlier.
17361         (def_cfa_1, reg_save): Use it.
17362
17363 2009-06-11  H.J. Lu  <hongjiu.lu@intel.com>
17364
17365         * config/i386/i386.c (OPTION_MASK_ISA_CRC32_SET): New.
17366         (OPTION_MASK_ISA_CRC32_UNSET): Likewise.
17367         (ix86_handle_option): Handle OPT_mcrc32.
17368         (ix86_target_string): Add -mcrc32.
17369         (bdesc_args): Enable crc32 builtins with OPTION_MASK_ISA_CRC32.
17370
17371         * config/i386/i386.h (TARGET_CRC32): New.
17372
17373         * config/i386/i386.md (sse4_2_crc32<mode>): Also check TARGET_CRC32.
17374         (sse4_2_crc32di): Likewise.
17375
17376         * config/i386/i386.opt (mcrc32): New.
17377
17378         * doc/invoke.texi: Document -mcrc32.
17379
17380 2009-06-11  Richard Henderson  <rth@redhat.com>
17381
17382         * common.opt (gdwarf-): Accept a version number.
17383         * doc/invoke.texi (gdwarf-): Update docs.
17384         * opth-gen.awk: Special case -gdwarf+ to OPT_gdwarfplus.
17385         * opts.c (common_handle_option) [OPT_gdwarf_]: Verify dwarf
17386         version level, and record it.
17387
17388         * dwarf2.h (DW_CIE_VERSION): Remove.
17389         * dwarf2out.c (DWARF_VERSION): Remove.
17390         (add_fde_cfi): Skip DW_CFA_set_loc addition for dwarf3.
17391         (output_call_frame_info): Use CIE version 3 for dwarf3,
17392         or if the return register column is out of range for version 1.
17393         (dwarf_stack_op_name): Add all dwarf3 values.
17394         (DEBUG_PUBTYPES_SECTION): New.
17395         (size_of_die) [dw_val_class_die_ref]: Handle DW_FORM_ref_addr
17396         encoding change for dwarf3.
17397         (output_die) [dw_val_class_die_ref]: Likewise.
17398         (output_compilation_unit_header): Emit correct version for dwarf3.
17399         (output_line_info): Likewise.
17400         (output_pubnames): Update for DWARF_VERSION removal.
17401         (output_aranges): Likewise.
17402         (gen_subprogram_die): Emit DW_OP_call_frame_cfa if emitting dwarf3.
17403         (dwarf2out_init): Don't ifdef DEBUG_PUBTYPES_SECTION.
17404         (dwarf2out_finish): Likewise.
17405
17406 2009-06-11  David Daney  <ddaney@caviumnetworks.com>
17407
17408         * system.h (gcc_assert, gcc_unreachable): Revert accidental commit
17409         in r148403.
17410
17411 2009-06-11  David Daney  <ddaney@caviumnetworks.com>
17412
17413         PR c/39252
17414         * doc/extend.texi ( __builtin_unreachable): Document new builtin.
17415         * builtins.c (expand_builtin_unreachable): New function.
17416         (expand_builtin): Handle BUILT_IN_UNREACHABLE case.
17417         * builtins.def (BUILT_IN_UNREACHABLE): Add new builtin.
17418         * cfgcleanup.c (try_optimize_cfg): Delete empty blocks with no
17419         successors.
17420         * cfgrtl.c (rtl_verify_flow_info): Handle empty blocks when
17421         searching for missing barriers.
17422
17423 2009-06-11  Francois-Xavier Coudert  <fxcoudert@gcc.gnu.org>
17424
17425         * config/darwin.h (LINK_COMMAND_SPEC): Adjust spec to link libcov
17426         when -fprofile-generate* was passed.
17427         * config/darwin9.h (LINK_COMMAND_SPEC): Likewise.
17428
17429 2009-06-11  Anthony Green  <green@moxielogic.com>
17430
17431         * config/moxie/moxie.md: Define length attribute for all instructions.
17432         (rCC): Define.
17433         (*b<cond:code>): Support limited branch ranges for new PC-relative
17434         branch instructions.
17435         * config/moxie/moxie.h (HAS_LONG_UNCOND_BRANCH): Define.
17436
17437 2009-06-11  Jakub Jelinek  <jakub@redhat.com>
17438
17439         * config/i386/i386.c (min_insn_size): Use get_attr_length
17440         for normal insns other than TYPE_MULTI, TYPE_OTHER and TYPE_FCMP.
17441         For __asm return 0.
17442
17443         * config/i386/i386.c (ix86_pad_returns): Use emit_jump_insn_before
17444         instead of emit_insn_before.
17445
17446 2009-06-10  Ian Lance Taylor  <iant@google.com>
17447
17448         PR bootstrap/40408
17449         * graphite.c (add_conditions_to_domain): Change SWITCH_EXPR to
17450         GIMPLE_SWITCH.
17451
17452 2009-06-10  Revital Eres  <eres@il.ibm.com>
17453
17454         * passes.c (init_optimization_passes): Reschedule
17455         predictive-commoning pass before complete unroll pass.
17456
17457 2009-06-10  Martin Jambor  <mjambor@suse.cz>
17458
17459         * cgraph.c (cgraph_node_can_be_local_p): New function.
17460         (cgraph_make_node_local): New function.
17461         * cgraph.h (cgraph_node_can_be_local_p): Declare.
17462         (cgraph_make_node_local): Declare.
17463
17464 2009-06-10  Nathan Froyd  <froydnj@codesourcery.com>
17465
17466         * tree.h (tree_base): Add packed_flag and user_align fields.
17467         Decrease size of spare field.
17468         (TYPE_USER_ALIGN): Use user_align from tree_base.
17469         (DECL_USER_ALIGN): Likewise.
17470         (TYPE_PACKED): Use packed_flag from tree_base.
17471         (DECL_PACKED): Likewise.
17472         (tree_type): Delete packed_flag and user_align fields.  Widen
17473         precision field.  Widen mode field and shuffle fields to align
17474         mode on an 8-bit boundary.
17475         (tree_decl_common): Delete decl_flag_1 and user_align fields.
17476         Renumber decl_flag_* fields.  Fix comments.  Widen
17477         decl_common_unused field.
17478         (DECL_HAS_VALUE_EXPR_P): Adjust for renumbering of decl_flag_* fields.
17479         (DECL_EXTERNAL): Likewise.
17480         (DECL_BIT_FIELD): Likewise.
17481         (DECL_NONADDRESSABLE_P): Likewise.
17482         (TYPE_DECL_SUPRESS_DEBUG): Likewise.
17483         * config/arm/arm-modes.def (XImode): Make it an INT_MODE.
17484
17485 2009-06-10  Ian Lance Taylor  <iant@google.com>
17486
17487         * vec.h (DEF_VEC_ALLOC_I): Use DEF_VEC_NONALLOC_FUNCS_I.
17488         (DEF_VEC_ALLOC_P): Use DEF_VEC_NONALLOC_FUNCS_P.
17489         (DEF_VEC_ALLOC_O): Use DEF_VEC_NONALLOC_FUNCS_O.
17490         (DEF_VEC_ALLOC_FUNC_P): Only define VEC_OP (T,A,alloc).
17491         (DEF_VEC_NONALLOC_FUNCS_P): New macro, broken out of old
17492         DEF_VEC_ALLOC_FUNC_P.
17493         (DEF_VEC_ALLOC_FUNC_O): Only define VEC_OP (T,A,alloc).
17494         (DEF_VEC_NONALLOC_FUNCS_O): New macro, broken out of old
17495         DEF_VEC_ALLOC_FUNC_O.
17496         (DEF_VEC_ALLOC_FUNC_I): Only define VEC_OP (T,A,alloc).
17497         (DEF_VEC_NONALLOC_FUNCS_I): New macro, broken out of old
17498         DEF_VEC_ALLOC_FUNC_I.
17499         (vec_stack_p_reserve, vec_stack_p_reserve_exact): Declare.
17500         (vec_stack_p_reserve_exact_1): Declare.
17501         (vec_stack_o_reserve, vec_stack_o_reserve_exact): Declare.
17502         (vec_stack_free): Declare.
17503         (VEC_stack_alloc): Define.
17504         (DEF_VEC_ALLOC_P_STACK, DEF_VEC_ALLOC_FUNC_P_STACK): Define.
17505         (DEF_VEC_ALLOC_O_STACK, DEF_VEC_ALLOC_FUNC_O_STACK): Define.
17506         (DEF_VEC_ALLOC_I_STACK, DEF_VEC_ALLOC_FUNC_I_STACK): Define.
17507         * vec.c (void_p): New type.  Call DEF_VEC_P and DEF_VEC_ALLOC_P
17508         for void_p.
17509         (stack_vecs): New static variable.
17510         (vec_stack_p_reserve_exact_1): New function.
17511         (vec_stack_o_reserve_1): New static function.
17512         (vec_stack_p_reserve, vec_stack_p_reserve_exact): New functions.
17513         (vec_stack_o_reserve, vec_stack_o_reserve_exact): New functions.
17514         (vec_stack_free): New function.
17515         * df-scan.c (df_ref): Use DEF_VEC_P and DEF_VEC_ALLOC_P_STACK.
17516         (VEC_df_ref_stack_alloc): Define.
17517         (df_mw_hardreg_ptr): New type.  Use DEF_VEC_P and
17518         DEF_VEC_ALLOC_P_STACK.
17519         (VEC_df_mw_hardreg_ptr_stack_alloc): Define.
17520         (struct df_collection_rec): Change _vec fields to VEC.  Remove
17521         _use fields.
17522         (df_free_collection_rec): Adjust for new fields.
17523         (df_insn_rescan): Use new df_collection_rec fields.
17524         (df_notes_rescan, df_canonize_collection_rec): Likewise.
17525         (df_ref_create_structure, df_ref_record): Likewise.
17526         (df_get_conditional_uses, df_get_call_refs): Likewise.
17527         (df_insn_refs_collect, df_bb_refs_collect): Likewise.
17528         (df_bb_refs_record, df_record_entry_block_defs): Likewise.
17529         (df_record_exit_block_uses, df_bb_verify): Likewise.
17530         (df_swap_refs): Change ref_vec parameter to VEC.  Change all callers.
17531         (df_sort_and_compress_refs): Change ref_vec parameter to VEC.
17532         Remove count parameter.  Change return type to void.  Change all
17533         callers.
17534         (df_sort_and_compress_mws): Change mw_vec parameter to VEC.
17535         Remove count parameter.  Change return type to void.  Change all
17536         callers.
17537         (df_install_refs): Change old_vec parameter to VEC.  Remove count
17538         parameter.  Change all callers.
17539         (df_install_mws): Change old_vec parameter to VEC.  Remove count
17540         parameter.  Change all callers.
17541         (df_refs_verify): Change new_rec parameter to VEC.  Change call
17542         callers.
17543         (df_mws_verify): Likewise.
17544
17545 2009-06-10  Alexandre Oliva  <aoliva@redhat.com>
17546
17547         * gcc.c (compare_files): Cast munmap argumento to caddr_t.
17548
17549 2009-06-10  H.J. Lu  <hongjiu.lu@intel.com>
17550
17551         * doc/extend.texi: Add description for __builtin_ia32_crc32di.
17552
17553 2009-06-10  Anthony Green  <green@moxielogic.com>
17554
17555         * config/moxie/crti.asm: New file.
17556         * config/moxie/crtn.asm: New file.
17557         * config/moxie/moxie.c: New file.
17558         * config/moxie/moxie.h: New file.
17559         * config/moxie/sfp-machine.h: New file.
17560         * config/moxie/moxie-protos.h: New file.
17561         * config/moxie/t-moxie: Created.
17562         * config/moxie/t-moxie-softfp: Created.
17563         * config/moxie/moxie.md: Created.
17564         * config/moxie/constraints.md: Created.
17565         * config.gcc: Add moxie support.
17566         * doc/md.texi (Machine Constraints): Add moxie constraints.
17567         * doc/contrib.texi (Contributors): Mention moxie port.
17568         * doc/install.texi (Specific): Mention the moxie port.
17569
17570 2009-06-09  Ian Lance Taylor  <iant@google.com>
17571
17572         * system.h (HAVE_DESIGNATED_INITIALIZERS): Don't define if
17573         compiling with C++.
17574         * optabs.c (optab_table): Only use designated initializers if
17575         HAVE_DESIGNATED_INITIALIZERS is defined.
17576         (convert_optab_table): Likewise.
17577         (init_optabs): Always call init_insn_codes if
17578         HAVE_DESIGNATED_INITIALIZERS is not defined.
17579
17580 2009-06-09  Ian Lance Taylor  <iant@google.com>
17581
17582         * targhooks.c (default_builtin_vectorized_function): Change fn
17583         parameter to unsigned int.
17584         (default_builtin_vectorized_conversion): Change code parameter to
17585         unsigned int.
17586         (default_builtin_reciprocal): Change fn parameter to unsigned int.
17587         * targhooks.h: Update declarations.
17588         * config/rs6000/rs6000.c (rs6000_builtin_conversion): Change code
17589         parameter to unsigned int.
17590
17591         * c-typeck.c (comptypes_check_enum_int): New static function.
17592         (comptypes_internal): Add enum_and_int_p parameter.  Change all
17593         callers.
17594         (comp_target_types): Add location parameter.  Change all callers.
17595         (tagged_types_tu_compatible_p): Add enum_and_int_p parameter.
17596         Change all callers.
17597         (function_types_compatible_p, type_lists_compatible_p): Likewise.
17598         (build_conditional_expr): Add colon_loc parameter.  Change all
17599         callers.
17600         (convert_for_assignment): Add location parameter.  Change all callers.
17601         * c-parser.c (c_parser_conditional_expression): Pass location of
17602         colon to build_conditional_expr.
17603         * c-tree.h (build_conditional_expr): Update declaration.
17604
17605 2009-06-09  Sebastian Pop  <sebastian.pop@amd.com>
17606
17607         * graphite.c: Revert previous patch.
17608
17609 2009-06-09  Sebastian Pop  <sebastian.pop@amd.com>
17610
17611         PR bootstrap/40103
17612         * graphite.c: Remove pragma GCC diagnostic warning "-Wc++-compat".
17613
17614 2009-06-09  Ghassan Shobaki  <ghassan.shobaki@amd.com>
17615
17616         * tree-ssa-loop-prefetch.c
17617         (loop_prefetch_arrays): Fixed a portability problem in printf format
17618         string.
17619
17620 2009-06-09  Martin Jambor  <mjambor@suse.cz>
17621
17622         PR tree-optimization/40351
17623         * tree-sra.c (propagate_subacesses_accross_link): Check that a
17624         refrence to a potential artifical subaccess can be constructed.
17625
17626 2009-06-08  Kaz Kojima  <kkojima@gcc.gnu.org>
17627
17628         * config/sh/sh-protos.h (sh_optimization_options): Declare.
17629         (sh_override_options): Likewise.
17630         * config/sh/sh.c: Include params.h.
17631         (sh_optimization_options): New.
17632         (sh_override_options): Likewise.
17633         * config/sh/sh.c (OPTIMIZATION_OPTIONS): Use sh_optimization_options.
17634         (OVERRIDE_OPTIONS): Use sh_override_options.
17635
17636 2009-06-08  Jakub Jelinek  <jakub@redhat.com>
17637
17638         * dwarf2out.c (emit_cfa_remember): New variable.
17639         (add_fde_cfi): If emit_cfa_remember, recurse to add
17640         DW_CFA_remember_state first.
17641         (dwarf2out_begin_epilogue): Don't add_fde_cfi DW_CFA_remember_state,
17642         instead just set emit_cfa_remember.
17643
17644 2009-06-08  Jan Hubicka  <jh@suse.cz>
17645
17646         PR debug/40126
17647         * dwarf2out.c (dwarf2out_abstract_function): Free decl_loc_table.
17648
17649 2009-06-08  Jan Hubicka  <jh@suse.cz>
17650
17651         PR middle-end/39834
17652         * cgraphunit.c (save_inline_function_body): Do not copy transform
17653         hooks for saved inline bodies.
17654         * ipa-passes.c (do_per_function): Do not add the hoks multiple times
17655         for given function.
17656
17657 2009-06-08  Adam Nemet  <anemet@caviumnetworks.com>
17658
17659         * jump.c (returnjump_p): Handle delayed branches.  Add missing
17660         function comment.
17661
17662 2009-06-08  Jan Hubicka  <jh@suse.cz>
17663
17664         PR middle-end/40102
17665         * cgraph.c (cgraph_create_edge_including_clones): Also asume that the
17666         original node might've been modified.
17667         * tree-inline.c (copy_bb): Do not assume that all clones are the same.
17668
17669 2009-06-08  Jakub Jelinek  <jakub@redhat.com>
17670
17671         * tree-object-size.c (addr_object_size): Add OSI argument.
17672         Handle also INDIRECT_REF with SSA_NAME inside of it as base address.
17673         (compute_builtin_object_size, expr_object_size): Adjust callers.
17674         (plus_stmt_object_size): Call addr_object_size instead of
17675         compute_builtin_object_size.
17676
17677 2009-06-08  Ghassan Shobaki  <ghassan.shobaki@amd.com>
17678             Dwarakanath Rajagopal  <dwarak.rajagopal@amd.com>
17679
17680         * tree-ssa-loop-prefetch.c
17681         (gather_memory_references): Introduced a counter for the number of
17682         memory references.
17683         (anything_to_prefetch_p): Introduced a counter for the number of
17684         prefetches.
17685         (is_loop_prefetching_profitable): New function with a cost model
17686         for prefetching.
17687         (loop_prefetch_arrays): Use the new cost model to determine if
17688         prefetching is profitable.
17689         * params.def (MIN_INSN_TO_PREFETCH_RATIO,
17690         PREFETCH_MIN_INSN_TO_MEM_RATIO): New parameters.
17691         * params.h (MIN_INSN_TO_PREFETCH_RATIO,
17692         PREFETCH_MIN_INSN_TO_MEM_RATIO): New parameters.
17693         * doc/invoke.texi (MIN_INSN_TO_PREFETCT_RATIO,
17694         PREFETCH_MIN_INSN_TO_MEM_RATIO): New parameters.
17695
17696 2009-06-08  Michael Matz  <matz@suse.de>
17697
17698         PR debug/40012
17699         * cfgexpand.c (set_rtl): Store place also in DECL_RTL, if all
17700         partitions use the same.
17701         (expand_one_var): Deal with DECL_RTL sometimes begin set also
17702         for basevars of SSA_NAMEs.
17703         (expand_used_vars): Reset TREE_USED for basevars of SSA_NAMEs,
17704         to not expand them twice.
17705         (gimple_expand_cfg): Clear DECL_RTL for those decls that have
17706         multiple places.
17707
17708 2009-06-08  Alexandre Oliva  <aoliva@redhat.com>
17709
17710         * common.opt (fcompare-debug=, fcompare-debug-second): New.
17711         (fdump-final-insns=, gtoggle): New.
17712         * doc/invoke.texi: Document them.
17713         * final.c (rest_of_clean_state): Dump final insn stream.
17714         * gcc.c (invoke_as): Hook in -fcompare-debug.
17715         (static_spec_functions): Add compare-debug-dump-opt,
17716         compare-debug-self-opt and compare-debug-auxbase-opt.
17717         (compare_debug, compare_debug_second, compare_debug_opt): New.
17718         (switches_debug_check, n_switches_debug_check): New.
17719         (debug_auxbase_opt, debug_check_temp_file): New.
17720         (process_command): Handle -fno-compare-debug, -fcompare-debug and
17721         -fcompare-debug=*.
17722         (do_self_spec): Handle arguments after switches.
17723         (do_spec_1): Add .gk extension to temp file basenames for compare.
17724         (check_live_switch): Take SWITCH_IGNORE into account, and earlier.
17725         (cc1_options): Use it instead of normal auxbase computation for
17726         the second compare-debug compilation.
17727         (compare_files): New.
17728         (main): Set up and implement compare debug mode.
17729         (compare_debug_dump_opt_spec_function): New.
17730         (compare_debug_self_opt_spec_function): New.
17731         (compare_debug_auxbase_opt_spec_function): New.
17732         * toplev.c (process_options): Handle flag_gtoggle,
17733         flag_dump_final_insns.
17734         * coverage.c (coverage_begin_output): Don't overwrite .gcno file
17735         during -fcompare-debug-second compilation.
17736
17737 2009-06-07  Ian Lance Taylor  <iant@google.com>
17738
17739         * dwarf2.h (enum dwarf_location_atom): Add INTERNAL_DW_OP_tls_addr.
17740         * dwarf2out.c (INTERNAL_DW_OP_tls_addr): Don't #define.
17741
17742         * c-common.c (c_do_switch_warnings): Don't exit early for -Wswitch
17743         with no default node.  Change warning with %H to warning_at.
17744         Don't clear warn_switch around case checking.
17745         * doc/invoke.texi (Warning Options): Clarify distinction between
17746         -Wswitch and -Wswitch-enum.
17747
17748 2009-06-07  Bernhard Reutner-Fischer  <aldot@gcc.gnu.org>
17749
17750         * tree-pass.h (TODO_update_ssa_any): Document internal use only.
17751
17752 2009-06-07  Bernhard Reutner-Fischer  <aldot@gcc.gnu.org>
17753
17754         * gbl-ctors.h: Add header guard.
17755
17756 2009-06-07  Bernhard Reutner-Fischer  <aldot@gcc.gnu.org>
17757
17758         * tree-flow.h (make_value_handle, set_value_handle, sort_vuses,
17759         sort_vuses_heap, vn_lookup_or_add, vn_lookup_or_add_with_stmt,
17760         vn_lookup_or_add_with_vuses, vn_add, vn_add_with_vuses,
17761         vn_lookup_with_stmt, vn_lookup, vn_lookup_with_vuses): Remove
17762         prototypes for removed functions.
17763         (expressions_equal_p): Move to ...
17764         * tree-ssa-sccvn.h: ... here and ...
17765         * matrix-reorg.c: ... adjust includes.
17766
17767 2009-06-07  Bernhard Reutner-Fischer  <aldot@gcc.gnu.org>
17768
17769         * ipa-struct-reorg.c (do_reorg_1): Fix whitespace in dump output.
17770
17771 2009-06-07  Bernhard Reutner-Fischer  <aldot@gcc.gnu.org>
17772
17773         * c-decl.c (finish_decl): Use bool for variable was_incomplete.
17774         (finish_function): Remove erroneous whitespace.
17775
17776 2009-06-07  Bernhard Reutner-Fischer  <aldot@gcc.gnu.org>
17777
17778         * tree-cfg.c (gimple_merge_blocks): Commentary typo fix.
17779         (verify_stmts): Print statement who's gimple_bb is set to a wrong BB
17780
17781 2009-06-07  Bernhard Reutner-Fischer  <aldot@gcc.gnu.org>
17782
17783         * errors.c (internal_error): Commentary typo fix.
17784         * gimple-iterator.c (gsi_insert_seq_on_edge): Ditto.
17785         * tree-ssa-pre.c: Ditto.
17786
17787 2009-06-07  Bernhard Reutner-Fischer  <aldot@gcc.gnu.org>
17788
17789         * basic-block.h (ENTRY_BLOCK, EXIT_BLOCK): Document that neither of
17790         them is supposed to hold actual statements.
17791
17792 2009-06-06  Ian Lance Taylor  <iant@google.com>
17793
17794         * doc/extend.texi (Attribute Syntax): Document that C++ labels on
17795         empty statements can now have attributes.
17796
17797 2009-06-05  Shujing Zhao  <pearly.zhao@oracle.com>
17798
17799         * config/mips/mips.c: Use REG_P and CONST_INT_P where applicable.
17800         * config/mips/mips.md: Ditto.
17801
17802 2009-06-05  Nathan Froyd  <froydnj@codesourcery.com>
17803
17804         * config/rs6000/eabi.asm (__eabi_convert): Don't define if
17805         _RELOCATABLE.
17806         (__eabi_uconvert): Likewise.
17807
17808 2009-06-05  Nathan Froyd  <froydnj@codesourcery.com>
17809
17810         * config/rs6000/ppc-asm.h: Protect auto-host.h inclusion and
17811         CFI_* definitions with IN_GCC.
17812
17813 2009-06-05  David Edelsohn  <edelsohn@gnu.org>
17814
17815         * xcoffout.h (xcoffout_source_line): Update prototype.
17816
17817 2009-06-05  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
17818
17819         * builtins.c (do_mpc_ckconv, do_mpc_arg1): Use
17820         mpc_realref/mpc_imagref instead of MPC_RE/MPC_IM.
17821
17822 2009-06-05  Jakub Jelinek  <jakub@redhat.com>
17823
17824         PR middle-end/40340
17825         * tree-ssa-live.c (remove_unused_scope_block_p): Don't prune
17826         inlined_function_outer_scope_p blocks for artificial inlines
17827         even at -g0/-g1.
17828         * tree.c (tree_nonartificial_location): Rewrite using
17829         block_nonartificial_location.
17830
17831 2009-06-05  Revital Eres  <eres@il.ibm.com>
17832             Leehod Baruch  <leehod@il.ibm.com>
17833
17834         * expr.c (expand_assignment): Expand MISALIGNED_INDIRECT_REF.
17835         (expand_expr_real_1): Remove comment.
17836         * tree-vect-data-refs.c (vect_enhance_data_refs_alignment):
17837         Vectorize misaligned access when the target supports it.
17838         (vect_supportable_dr_alignment): Check for unaligned access support.
17839         * tree-vect-stmts.c (vectorizable_store): Generate misaligned store
17840         and remove asset.
17841
17842 2009-06-05  Julian Brown  <julian@codesourcery.com>
17843
17844         * config/arm/ieee754-df.S (cmpdf2): Avoid writing below SP.
17845         * config/arm/ieee754-sf.S (cmpsf2): Likewise.
17846
17847 2009-06-05  Richard Guenther  <rguenther@suse.de>
17848
17849         PR bootstrap/40350
17850         * dwarf2out.c (dwarf2out_begin_function): Mark discriminator
17851         as possibly unused.
17852
17853 2009-06-05  Jakub Jelinek  <jakub@redhat.com>
17854
17855         * config/s390/s390.c (global_not_special_regno_p): New static inline.
17856         (save_gprs): Don't tell unwinder when a global register is saved.
17857         (s390_emit_epilogue): Emit needed epilogue unwind info.
17858
17859 2009-06-05  Alexandre Oliva  <aoliva@redhat.com>
17860
17861         * dwarf2out.c (deferred_asm_name): New.
17862         (add_name_and_src_coords_attributes): Defer creation of
17863         DW_AT_MIPS_linkage_name attribute if DECL_ASSEMBLER_NAME was not
17864         computed yet.
17865         (move_linkage_attr): New.
17866         (dwarf2out_finish): Revisit deferrals and emit attributes at the
17867         right place.
17868
17869 2009-06-05  Alexandre Oliva  <aoliva@redhat.com>
17870
17871         * tree-nested.c (finalize_nesting_tree_1): Declare the
17872         frame_decl in the binding tree.
17873
17874 2009-06-04  Cary Coutant  <ccoutant@google.com>
17875
17876         * basic-block.h (struct basic_block_def): Add discriminator field.
17877         * dbxout.c (dbxout_source_line): Add new parameter.  Change all
17878         callers.
17879         * debug.c (do_nothing_debug_hooks): Add additional entry.
17880         (debug_nothing_int_charstar_int): New function.
17881         * debug.h (struct gcc_debug_hooks): Add parameter to source_line hook.
17882         (debug_nothing_int_charstar_int): New declaration.
17883         * dwarf2out.c (dwarf2out_source_line): Add new parameter.  Write
17884         discriminator value in .loc directive.
17885         * final.c (last_discriminator): New variable.
17886         (discriminator): New variable.
17887         (final_start_function): Initialize above variables, pass current
17888         discriminator to debug hook.
17889         (notice_source_line): Check for discriminator change.
17890         * gimple-pretty-print.c (dump_bb_header): Print discriminator value.
17891         * sdbout.c (sdbout_source_line): New parameter.
17892         * tree-cfg.c (struct locus_discrim_map): New structure type.
17893         (discriminator_per_locus): New hash table.
17894         (build_gimple_cfg): Allocate and free discriminator hash table.
17895         (make_edges): Call assign_discriminator.
17896         (locus_map_hash): New function.
17897         (locus_map_eq): New function.
17898         (next_discriminator_for_locus): New function.
17899         (same_line_p): New function.
17900         (assign_discriminator): New function.
17901         (make_cond_expr_edges): Call assign_discriminator.
17902         (make_gimple_switch_edges): Likewise.
17903         (first_non_label_stmt): New function.
17904         * vmsdbgout.c (vmsdbgout_source_line): Add new parameter.  Change
17905         all callers.
17906         * xcoffout.c (xcoffout_source_line): Add new parameter.
17907
17908         * configure.ac (gcc_cv_as_discriminator): New configury check for
17909         gas support for discriminator.
17910         * configure: Regenerate.
17911         * config.in: Regenerate.
17912
17913 2009-06-04  Ramana Radhakrishnan  <ramana.radhakrishnan@arm.com>
17914
17915         * config/arm/arm.c (thumb2_legitimate_index_p): Initialize
17916         val after checking for integers.
17917
17918 2009-06-04  Uros Bizjak  <ubizjak@gmail.com>
17919
17920         * config/i386/i386.h (X86_64_MS_REGPARM_MAX): Rename from
17921         X64_REGPARM_MAX.
17922         (REGPARM_MAX): Use X86_64_MS_REGPARM_MAX.
17923         (X86_64_MS_SSE_REGPARM_MAX): Rename from X64_SSE_REGPARM_MAX.
17924         (SSE_REGPARM_MAX): Use X86_64_MS_SSE_REGPARM_MAX.
17925         * config/i386/i386.c: Use X86_64_MS_REGPARM_MAX instead of
17926         X64_REGPARM_MAX.  Use X86_64_MS_SSE_REGPARM_MAX instead of
17927         X64_SSE_REGPARM_MAX.
17928         * config/i386/i386.md: Use X86_64_MS_SSE_REGPARM_MAX instead of
17929         X64_SSE_REGPARM_MAX.
17930
17931 2009-06-04  Alexandre Oliva  <aoliva@redhat.com>
17932
17933         * gcc.c (report_times_to_file): New.
17934         (execute): Implement it.
17935         (process_command): Support -time=.
17936         * doc/invoke.texi: Document it.
17937
17938 2009-06-04  Alexandre Oliva  <aoliva@redhat.com>
17939
17940         * tree-ssa-live.c (remove_unused_scope_block_p): Keep variables
17941         that have value exprs.
17942
17943 2009-06-04  Alexandre Oliva  <aoliva@redhat.com>
17944
17945         * dwarf2asm.c (dw2_force_const_mem): Defer creation of
17946         declarations for constants until...
17947         (dw2_output_indirect_constant_1): ... this point.
17948
17949 2009-06-04  Richard Earnshaw  <rearnsha@arm.com>
17950
17951         PR target/10242
17952         * arm.md (arm_addsi3): Don't try to split an add with an
17953         eliminable register until after reload has completed.
17954
17955 2009-06-03  Ian Lance Taylor  <iant@google.com>
17956
17957         * dummy-checksum.c (executable_checksum): Use EXPORTED_CONST.
17958         * genattrtab.c (write_length_unit_log): Likewise.
17959         * genchecksum.c (dosum): Likewise.
17960         * gengtype.c (write_rtx_next): Likewise.
17961         (finish_root_table, write_roots): Likewise.
17962         * gimple.c (gimple_ops_offset_): Likewise.
17963         * tree-nomudflap.c (gt_ggc_r_gt_tree_mudflap_h): Likewise.
17964         * config/arc/arc.c (arc_attribute_table): Likewise.
17965         * config/arm/arm.c (arm_attribute_table): Likewise.
17966         * config/avr/avr.c (avr_attribute_table): Likewise.
17967         * config/crx/crx.c (crx_attribute_table): Likewise.
17968         * config/m32r/m32r.c (m32r_attribute_table): Likewise.
17969         * config/m68hc11/m68hc11.c (m68hc11_attribute_table): Likewise.
17970         * config/mcore/mcore.c (mcore_attribute_table): Likewise.
17971         * config/rs6000/rs6000.c (rs6000_attribute_table): Likewise.
17972         * config/sh/sh.c (sh_attribute_table): Likewise.
17973         * config/sparc/sparc.c (sparc_attribute_table): Likewise.
17974         * config/spu/spu.c (spu_attribute_table): Likewise.
17975         * config/v850/v850.c (v850_attribute_table): Likewise.
17976
17977         * config/alpha/alpha.c (vms_attribute_table): Make static.
17978         * config/bfin/bfin.c (bfin_attribute_table): Likewise.
17979         * config/h8300/h8300.c (h8300_attribute_table): Likewise.
17980         * config/mips/mips.c (mips_attribute_table): Likewise.
17981
17982         * Makefile.in (dummy-checksum.o): Depend upon $(CONFIG_H) and
17983         $(SYSTEM_H).
17984         (cc1-checksum.o): Likewise.
17985
17986 2009-06-03  Steve Ellcey  <sje@cup.hp.com>
17987
17988         * config/ia64/vect.md (*movv2sf_internal): Handle big endian case.
17989
17990 2009-06-03  Jakub Jelinek  <jakub@redhat.com>
17991
17992         * config/rs6000/rs6000.c (rs6000_emit_stack_reset): Return generated
17993         insn if it is changing sp.  Use gen_add3_insn instead of
17994         conditionally gen_addsi3 and gen_adddi3.
17995         (offset_below_red_zone_p): New static inline function.
17996         (rs6000_emit_epilogue): Emit needed epilogue unwind info.
17997         Use gen_add3_insn instead of conditionally gen_addsi3 and gen_adddi3.
17998         * config/rs6000/ppc-asm.h: Include auto-host.h.
17999         (CFI_STARTPROC, CFI_ENDPROC, CFI_DEF_CFA_REGISTER, CFI_OFFSET,
18000         CFI_RESTORE): Define.
18001         * config/rs6000/crtresxgpr.asm: Add unwind info.
18002         * config/rs6000/crtresxfpr.asm: Likewise.
18003         * config/rs6000/crtresgpr.asm: Likewise.
18004         * config/rs6000/crtresfpr.asm: Likewise.
18005         * config/rs6000/crtsavgpr.asm: Likewise.
18006         * config/rs6000/crtsavfpr.asm: Likewise.
18007
18008         * dwarf2out.c (output_cfi_directive): Pass 1 instead of 0 to second
18009         argument of DWARF2_FRAME_REG_OUT macros.
18010
18011 2009-06-03  Julian Brown  <julian@codesourcery.com>
18012
18013         * config/arm/arm.c (arm_hard_regno_mode_ok): Permit values of four
18014         words or less (including TImode) in core registers.
18015
18016 2009-06-03  Richard Guenther  <rguenther@suse.de>
18017
18018         PR middle-end/40328
18019         * fold-const.c (fold_convert): Fold the build COMPLEX_EXPR.
18020
18021 2009-06-03  Andrey Belevantsev  <abel@ispras.ru>
18022
18023         * statistics.c (statistics_counter_event): Do not record event
18024         in pass dump if its number == -1.
18025         (curr_statistics_hash): Add assert that we never get passes
18026         with static number == -1.
18027
18028 2009-06-03  Richard Guenther  <rguenther@suse.de>
18029             Andrey Belevantsev  <abel@ispras.ru>
18030
18031         * cfgexpand.c (discover_nonconstant_array_refs_r): Make only
18032         non-BLKmode arrays addressable.
18033
18034 2009-06-03  Maxim Kuvyrkov  <maxim@codesourcery.com>
18035
18036         * config/m68k/linux.h (HAVE_GAS_BALIGN_AND_P2ALIGN): Move to ...
18037         * config/m68k/m68k.h: ... here.
18038
18039 2009-06-03  Martin Jambor  <mjambor@suse.cz>
18040
18041         PR tree-optimization/40323
18042         * ipa-prop.c (get_ssa_def_if_simple_copy): Break if not single
18043         assignment.
18044
18045 2009-06-03  Richard Guenther  <rguenther@suse.de>
18046
18047         * tree-ssa-sccvn.c (copy_reference_ops_from_ref): Use DECL_SIZE
18048         consistently.
18049
18050 2009-06-03  Shujing Zhao  <pearly.zhao@oracle.com>
18051
18052         * config/sh/predicates.md: Use REG_P, MEM_P, CONST_INT_P, LABEL_P,
18053         JUMP_P, CALL_P, NONJUMP_INSN_P, NOTE_P, BARRIER_P and
18054         JUMP_TABLE_DATA_P where applicable.
18055         * config/sh/sh.c: Ditto.
18056         * config/sh/sh.h: Ditto.
18057         * config/sh/sh.md: Ditto.
18058         * config/sh/symbian.c: Ditto.
18059
18060 2009-06-03  Uros Bizjak  <ubizjak@gmail.com>
18061
18062         * config/i386/driver-i386.c (describe_cache): Optimize
18063         concatenation of strings.  Use snprintf instead of sprintf.
18064         (host_detect_local_cpu): Ditto.  Ignore -march and -mtune for native
18065         target when not compiling with GCC.
18066
18067 2009-06-02  Kaz Kojima  <kkojima@gcc.gnu.org>
18068
18069         * config/sh/sh.c: Revert last change.
18070         (sh_expand_epilogue): Emit a blockage insn before the frame
18071         pointer adjustment unconditionally.
18072
18073 2009-06-02  Richard Sandiford  <r.sandiford@uk.ibm.com>
18074
18075         * config/pa/pa-hpux.h (LINK_SPEC): Remove "%<fwhole-program".
18076         * config/pa/pa-hpux10.h (LINK_SPEC): Likewise.
18077         * config/pa/pa-hpux11.h (LINK_SPEC): Likewise.
18078         * gcc.c (set_collect_gcc_options): Don't add -fwhole-program
18079         to COLLECT_GCC_OPTIONS.
18080
18081 2009-06-02  Richard Sandiford  <r.sandiford@uk.ibm.com>
18082
18083         * collect2.c (target_system_root): New variable.
18084         (main): Handle --sysroot=.
18085         (ignore_library): Strip the sysroot from the library path.
18086
18087 2009-06-02  Richard Sandiford  <r.sandiford@uk.ibm.com>
18088
18089         * Makefile.in (COLLECT2_OBJS): Add collect2-aix.o.
18090         (collect2.o): Depend on collect2-aix.h.
18091         (collect2-aix.o): New rule.
18092         * collect2-aix.h: New file.
18093         * collect2-aix.c: Likewise.
18094         * collect2.c: Include collect2-aix.h.  Don't undefine
18095         OBJECT_FORMAT_COFF if CROSS_AIX_SUPPORT is defined.
18096         Guard native includes with #ifndef CROSS_DIRECTORY_STRUCTURE.
18097         Use TARGET_AIX_VERSION instead of _AIX51.
18098         * config/rs6000/aix43.h (TARGET_AIX_VERSION): Define.
18099         * config/rs6000/aix51.h (TARGET_AIX_VERSION): Likewise.
18100         * config/rs6000/aix52.h (TARGET_AIX_VERSION): Likewise.
18101         * config/rs6000/aix53.h (TARGET_AIX_VERSION): Likewise.
18102         * config/rs6000/aix61.h (TARGET_AIX_VERSION): Likewise.
18103
18104 2009-06-02  Richard Sandiford  <r.sandiford@uk.ibm.com>
18105
18106         * collect2.c (ignore_library): Avoid premature post-increment
18107         and null deference.
18108
18109 2009-06-02  Richard Sandiford  <r.sandiford@uk.ibm.com>
18110
18111         * Makefile.in (libgcc.mvars): Add TARGET_SYSTEM_ROOT.
18112         * config/rs6000/aix.h (LINK_SYSCALLS_SPEC): Add %R to the
18113         !CROSS_DIRECTORY_STRUCTURE alternative and use it for
18114         CROSS_DIRECTORY_STRUCTURE too.
18115         (LINK_LIBG_SPEC): Likewise.
18116         (LIB_SPEC): Add %R to sysroot paths.
18117         * config/rs6000/aix43.h (CPP_SPEC): Add %R to sysroot paths.
18118         (CPLUSPLUS_CPP_SPEC, LIB_SPEC): Likewise.
18119         * config/rs6000/aix51.h: As for aix43.h.
18120         * config/rs6000/aix52.h: Likewise.
18121         * config/rs6000/aix53.h: Likewise.
18122         * config/rs6000/aix61.h: Likewise.
18123         * config/rs6000/t-aix52 (SHLIB_LINK): Add $(TARGET_SYSTEM_ROOT)
18124         to the beginning of sysroot paths.
18125
18126 2009-06-02  Alexandre Oliva  <aoliva@redhat.com>
18127
18128         * print_rtl (print_rtx): Don't print modes in EXPR_LISTs and
18129         INSN_LISTs that are out of the REG_NOTE range.
18130
18131 2009-06-02  Alexandre Oliva  <aoliva@redhat.com>
18132
18133         * loop-unroll.c (struct iv_to_split): Add pointer to next.
18134         (struct var_to_expand): Likewise.
18135         (struct opt_info): Add head and tail for linked lists of the above.
18136         (analyze_insn_to_expand_var): Initialize next.
18137         (analyze_iv_to_split_insn): Likewise.
18138         (analyze_insns_in_loop): Create linked lists.
18139         (allocate_basic_variable): Simplify for use without hash table.
18140         (insert_var_expansion_initialization): Likewise, make it type-safer.
18141         (combine_var_copies_in_loop_exit): Likewise.
18142         (apply_opt_in_copies): Walk lists rather than hash tables.
18143         (release_var_copies): Simplified and inlined by hand into...
18144         (free_opt_info): ... this function.
18145
18146 2009-06-02  Richard Guenther  <rguenther@suse.de>
18147
18148         * tree-ssa-sccvn.c (copy_reference_ops_from_ref): Use DECL_SIZE
18149         for field decls.
18150
18151 2009-06-02  Alexandre Oliva  <aoliva@redhat.com>
18152
18153         * cfgexpand.c (gimple_expand_cfg): Discard the source location
18154         only for builtins that are not overridden.
18155
18156 2009-06-02  Alexandre Oliva  <aoliva@redhat.com>
18157
18158         * gengtype.c (adjust_field_rtx_def): Add NOTE_INSN_DELETED_LABEL's
18159         label string.
18160
18161 2009-06-02  Alexandre Oliva  <aoliva@redhat.com>
18162
18163         * df-core.c (df_ref_debug): Honor -fdump-noaddr.
18164
18165 2009-06-02  Alexandre Oliva  <aoliva@redhat.com>
18166
18167         * combine.c (move_deaths): Compare LUIDs within the same BB only.
18168
18169 2009-06-02  Alexandre Oliva  <aoliva@redhat.com>
18170
18171         * common.opt (fdump-unnumbered-links): New.
18172         * doc/invoke.texi (-fdump-unnumbered-links): Document it.
18173         * print-rtl.c (flag_dump_unnumbered_links): New.
18174         (print_rtx): Test it.
18175
18176 2009-06-02  Richard Earnshaw  <rearnsha@arm.com>
18177
18178         * arm.c (arm_get_frame_offsets): Prefer using r3 for padding a
18179         push/pop multiple to 8-byte alignment.
18180
18181 2009-06-01  Jakub Jelinek  <jakub@redhat.com>
18182
18183         * config/i386/i386.c (queued_cfa_restores): New static variable.
18184         (ix86_add_cfa_restore_note, ix86_add_queued_cfa_restore_notes): New
18185         functions.
18186         (pro_epilogue_adjust_stack): Call ix86_add_queued_cfa_restore_notes.
18187         (ix86_emit_restore_reg_using_pop): Add RED_OFFSET argument.
18188         Set RTX_FRAME_RELATED_P immediately after adding a REG_CFA_* note.
18189         Call ix86_add_cfa_restore_note instead of adding REG_CFA_OFFSET
18190         note unconditionally.
18191         (ix86_emit_restore_regs_using_mov): Likewise.
18192         (ix86_emit_restore_sse_regs_using_mov): Likewise.
18193         (ix86_emit_restore_regs_using_pop): Add RED_OFFSET argument, pass
18194         it through to ix86_emit_restore_reg_using_pop.
18195         (ix86_emit_leave): Add RED_OFFSET argument.  Call
18196         ix86_add_queued_cfa_restore_notes.  Call ix86_add_cfa_restore_note
18197         instead of adding REG_CFA_OFFSET note unconditionally.
18198         (ix86_expand_epilogue): Compute RED_OFFSET, pass it down to
18199         the above functions.  Call ix86_add_queued_cfa_restore_notes when
18200         needed.
18201
18202         * dwarf2out.c (dwarf2out_cfi_label): Add FORCE argument, if true,
18203         force output of the label even for dwarf2out_do_cfi_asm.
18204         (add_fde_cfi): If -g2 and above and cfi might change CFA,
18205         force creation of CFI label and chain DW_CFA_set_loc jumping to it
18206         for convert_cfa_to_fb_loc_list.  Adjust other dwarf2out_cfi_label
18207         caller.
18208         (dwarf2out_stack_adjust, dwarf2out_frame_debug,
18209         dwarf2out_begin_epilogue, dwarf2out_frame_debug_restore_state): Adjust
18210         dwarf2out_cfi_label callers.
18211         * tree.h (dwarf2out_cfi_label): Adjust prototype.
18212         * config/arm/arm.c (thumb_pushpop, thumb1_output_function_prologue):
18213         Adjust dwarf2out_cfi_label callers.
18214         * config/vax/vax.c (vax_output_function_prologue): Likewise.
18215
18216         * config/i386/i386.h (struct machine_cfa_state,
18217         struct machine_function): Guard with ifndef USED_FOR_TARGET
18218         instead of not IN_LIBGCC2 and not in IN_TARGET_LIBS.
18219
18220         PR other/40024
18221         * emutls.c (__emutls_get_address): Change arr->size to mean number
18222         of allocated arr->data entries instead of # of slots + 1.
18223
18224         PR middle-end/40316
18225         * recog.c (peep2_reinit_state): New function.
18226         (peephole2_init_state): Use it at the end of a basic block and also
18227         when seeing a RTX_FRAME_RELATED_P insn.
18228
18229 2009-06-01  Steve Ellcey  <sje@cup.hp.com>
18230
18231         * ia64.md (floatdirf2, fix_truncrfdi, floatunsdirf,
18232         fixuns_truncrfdi2): New.
18233         (fix_truncxfdi2_alts, fixuns_truncxfdi2_alts,
18234         *nmaddsf4_alts, *nmadddf4_alts, *nmadddf4_truncsf_alts,
18235         *mulxf3_alts, *mulxf3_truncsf_alts, *mulxf3_truncdf_alts,
18236         *maddxf4_alts, *maddxf4_alts_truncsf, *maddxf4_alts_truncdf,
18237         *nmaddxf4_alts, *nmaddxf4_truncsf_alts, *nmaddxf4_truncdf_alts,
18238         *recip_approx): Remove.
18239         (divsi3 modsi3, udivsi3, umodsi3, divsi3_internal, divdi3,
18240         moddi3, udivdi3, umoddi3, divdi3_internal_lat, divdi3_internal_thr,
18241         divsf3, sqrtsf2, divdf3, sqrtdf2, divxf3, sqrtxf2): Modify and
18242         move to div.md.
18243         * div.md (fix_truncrfdi2_alts, fixuns_truncrfdi2_alt,
18244         setf_exp_rf): New.
18245
18246 2009-06-01  Ian Lance Taylor  <iant@google.com>
18247
18248         * attribs.c (register_attribute): Use CONST_CAST.
18249         * collect2.c (main): Use CONST_CAST2.
18250         (scan_prog_file): Likewise.
18251         * gcc.c (process_command, main): Likewise.
18252         * toplev.c (toplev_main): Likewise.
18253
18254         * c-typeck.c (handle_warn_cast_qual): New static function,
18255         partially broken out of build_c_cast.
18256         (build_c_cast): Call handle_warn_cast_qual.
18257         * doc/invoke.texi (Warning Options): Document new effect of
18258         -Wcast-qual.
18259
18260 2009-06-01  Aldy Hernandez  <aldyh@redhat.com>
18261
18262         * diagnostic.c (diagnostic_build_prefix): Always print columns.
18263         (diagnostic_report_current_module): Print columns.
18264         * common.opt (flag_show_column): Enable by default.
18265
18266 2009-06-01  Luis Machado  <luisgpm@br.ibm.com>
18267
18268         * alias.c (find_base_term): Check for NULL term before returning.
18269
18270 2009-06-01  Maxim Kuvyrkov  <maxim@codesourcery.com>
18271
18272         Revert due to PR40320:
18273         2009-06-01  Maxim Kuvyrkov  <maxim@codesourcery.com>
18274         * calls.c (emit_library_call_value_1): Don't force_operand for move
18275         and push insns.
18276
18277 2009-06-01  Olivier Hainque  <hainque@adacore.com>
18278             Eric Botcazou  <ebotcazou@adacore.com>
18279
18280         * tree.h (CONSTRUCTOR_BITFIELD_P): True if NODE, a FIELD_DECL, is
18281         to be processed as a bitfield for constructor output purposes.
18282         * output.h (initializer_constant_valid_for_bitfield_p): Declare
18283         new function.
18284         * varasm.c (oc_local_state): New type, output_constructor
18285         local state to support communication with helpers.
18286         (oc_outer_state): New type, output_constructor outer state of
18287         relevance in recursive calls.
18288         (output_constructor_array_range): New output_constructor helper,
18289         extracted code for an array range element.
18290         (output_constructor_regular_field): New output_constructor helper,
18291         extracted code for an element that is not a bitfield.
18292         (output_constructor_bitfield): New output_constructor helper,
18293         extracted code for a bitfield element.  Accept an OUTER state
18294         argument for recursive processing.  Recurse on record or array
18295         CONSTRUCTOR values, possibly past noop conversions.
18296         (initializer_constant_valid_for_bitfield_p): New predicate.  Whether
18297         VALUE is a valid constant-valued expression for use in a static
18298         bit-field initializer.
18299         (output_constructor): Rework to use helpers.  Accept and honor an
18300         OUTER state argument for recursive calls.  Return total size.  Be
18301         prepared for nested constructors initializing bitfields.
18302         (output_constant): Feed OUTER in calls to output_constructor.
18303
18304 2009-06-01  Maxim Kuvyrkov  <maxim@codesourcery.com>
18305
18306         * calls.c (emit_library_call_value_1): Don't force_operand for move
18307         and push insns.
18308
18309 2009-06-01  Nick Clifton  <nickc@redhat.com>
18310
18311         * doc/invoke.texi (IA-64 Options): Fix typo.
18312
18313 2009-06-01  Ira Rosen  <irar@il.ibm.com>
18314
18315         PR tree-optimization/39129
18316         * tree-vect-loop-manip.c (conservative_cost_threshold): Change the
18317         printed message.
18318         (vect_do_peeling_for_loop_bound): Use
18319         LOOP_REQUIRES_VERSIONING_FOR_ALIGNMENT and
18320         LOOP_REQUIRES_VERSIONING_FOR_ALIAS macros.
18321         (vect_loop_versioning): Likewise.
18322         (vect_create_cond_for_alias_checks): Fix indentation.
18323         * tree-vectorizer.h (struct _loop_vec_info): Fix indentation of the
18324         macros.
18325         (LOOP_REQUIRES_VERSIONING_FOR_ALIGNMENT): Define.
18326         (LOOP_REQUIRES_VERSIONING_FOR_ALIAS): Likewise.
18327         * tree-vect-loop.c (vect_analyze_loop_form): Change "too many BBs" to
18328         "control flow in loop".
18329         (vect_estimate_min_profitable_iters): Use
18330         LOOP_REQUIRES_VERSIONING_FOR_ALIGNMENT and
18331         LOOP_REQUIRES_VERSIONING_FOR_ALIAS macros.
18332         * tree-vect-data-refs.c (vect_enhance_data_refs_alignment): Likewise.
18333         (vect_create_data_ref_ptr): Don't mention array dimension in printing.
18334         * tree-vect-stmts.c (vectorizable_store): Replace the check that the
18335         statement belongs to a group of strided accesses with the exact code
18336         check.
18337         (vectorizable_load): Likewise.
18338         * tree-vect-slp.c (vect_analyze_slp_instance): Spell out "basic block".
18339         (vect_slp_analyze_bb, vect_slp_transform_bb): Likewise.
18340
18341 2009-06-01  Gerald Pfeifer  <gerald@pfeifer.com>
18342
18343         * config/freebsd-stdint.h: New file.
18344         * config.gcc (*-*-freebsd): Set use_gcc_stdint=wrap.
18345         Add freebsd-stdint.h to tm_file.
18346
18347 2009-06-01  Richard Earnshaw  <rearnsha@arm.com>
18348
18349         * arm/thumb2.md (thumb2_zero_extendhidi2): New insn and split.
18350         (thumb2_extendhidi2): Likewise.
18351
18352 2009-05-31  Ian Lance Taylor  <iant@google.com>
18353
18354         * regstat.c (regstat_n_sets_and_refs): Remove duplicate definition.
18355
18356 2009-05-31  Ian Lance Taylor  <iant@google.com>
18357
18358         * Makefile.in (except.o): Depend upon gt-except.h, not gt-$(EXCEPT_H).
18359         (ipa-cp.o): Depend upon $(FIBHEAP_H) and $(PARAMS_H).
18360         (ipa-reference.o): Depend upon gt-ipa-reference.h.
18361
18362 2009-05-31  Jason Merrill  <jason@redhat.com>
18363
18364         * tree-pretty-print.c (print_call_name): Take the callee, not the
18365         call itself.  Make non-static.  Use dump_function_name for functions.
18366         (dump_generic_node): Adjust.
18367         * diagnostic.h: Declare print_call_name.
18368         * gimple-pretty-print.c (dump_gimple_call): Use it.
18369
18370 2009-05-31  Kaz Kojima  <kkojima@gcc.gnu.org>
18371
18372         * config/sh/sh.md (ashldi3_std): New define_expand.
18373         (ashldi3): Use it.
18374
18375 2009-05-31  Kaz Kojima  <kkojima@gcc.gnu.org>
18376
18377         PR target/40313
18378         * config/sh/sh.c: Include debug.h.
18379         (sh_expand_epilogue): Emit a blockage insn before the frame
18380         pointer adjustment also when dwarf2out_do_frame returns true.
18381
18382 2009-05-31  Richard Earnshaw  <rearnsha@arm.com>
18383
18384         * arm/thumb2.md (thumb2_extendsidi2): Add a split sub-pattern.
18385         (thumb2_extendqidi2): New pattern.
18386
18387 2009-05-31  Ira Rosen  <irar@il.ibm.com>
18388
18389         * tree-vect-loop-manip.c (slpeel_update_phi_nodes_for_guard1): Don't
18390         mark phis for renaming.
18391         * tree-vectorizer.c (vect_memsyms_to_rename): Remove.
18392         (vectorize_loops): Don't allocate and free vect_memsyms_to_rename.
18393         Call mark_sym_for_renaming.
18394         * tree-vectorizer.h (vect_memsyms_to_rename): Remove.
18395         * tree-vect-loop.c (vect_transform_loop): Remove
18396         vect_memsyms_to_rename initialization and a call to
18397         mark_set_for_renaming.
18398
18399 2009-05-31  Jakub Jelinek  <jakub@redhat.com>
18400
18401         PR middle-end/40304
18402         * config/i386/i386.c (pro_epilogue_adjust_stack): Mark insns
18403         frame related even if !set_cfa && style < 0.
18404
18405 2009-05-30  Kai Tietz  <kai.tietz@onevision.com>
18406
18407         * config/i386/mingw-tls.c: New file.
18408         * config/i386/t-gthr-win32 (LIB2FUNCS_EXTRA): Add mingw-tls.c file.
18409         * gthr-win32.h (MINGW32_SUPPORTS_MT_EH): Define it for targets
18410         defining _WIN32 but not __CYGWIN__.
18411
18412 2009-05-29  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
18413
18414         * configure.ac: Add MPC support.
18415
18416         * config.in, configure: Regenerate.
18417
18418 2009-05-29  Richard Henderson  <rth@redhat.com>
18419
18420         * cfgcleanup.c (try_crossjump_to_edge): Only skip past
18421         NOTE_INSN_BASIC_BLOCK.
18422         * cfglayout.c (duplicate_insn_chain): Copy epilogue insn marks.
18423         Duplicate NOTE_INSN_EPILOGUE_BEG notes.
18424         * cfgrtl.c (can_delete_note_p): Allow NOTE_INSN_EPILOGUE_BEG
18425         to be deleted.
18426         * dwarf2out.c (struct cfa_loc): Change indirect field to bitfield,
18427         add in_use field.
18428         (add_cfi): Disable check redefining cfa away from drap.
18429         (lookup_cfa_1): Add remember argument; handle remember/restore.
18430         (lookup_cfa): Pass remember argument.
18431         (cfa_remember): New.
18432         (compute_barrier_args_size_1): Remove sibcall check.
18433         (dwarf2out_frame_debug_def_cfa): New.
18434         (dwarf2out_frame_debug_adjust_cfa): New.
18435         (dwarf2out_frame_debug_cfa_offset): New.
18436         (dwarf2out_frame_debug_cfa_register): New.
18437         (dwarf2out_frame_debug_cfa_restore): New.
18438         (dwarf2out_frame_debug): Handle REG_CFA_* notes.
18439         (dwarf2out_begin_epilogue): New.
18440         (dwarf2out_frame_debug_restore_state): New.
18441         (dw_cfi_oprnd1_desc): Handle DW_CFA_remember_state,
18442         DW_CFA_restore_state.
18443         (output_cfi_directive): Likewise.
18444         (convert_cfa_to_fb_loc_list): Likewise.
18445         (dw_cfi_oprnd1_desc): Handle DW_CFA_restore.
18446         * dwarf2out.h: Update.
18447         * emit-rtl.c (try_split): Don't split RTX_FRAME_RELATED_P.
18448         (copy_insn_1): Early out for null.
18449         * final.c (final_scan_insn): Call dwarf2out_begin_epilogue
18450         and dwarf2out_frame_debug_restore_state.
18451         * function.c (prologue, epilogue, sibcall_epilogue): Remove.
18452         (prologue_insn_hash, epilogue_insn_hash): New.
18453         (free_after_compilation): Adjust freeing accordingly.
18454         (record_insns): Create hash table if needed; push insns into
18455         hash instead of array.
18456         (maybe_copy_epilogue_insn): New.
18457         (contains): Search hash table instead of array.
18458         (sibcall_epilogue_contains): Remove.
18459         (thread_prologue_and_epilogue_insns): Split eh_return insns
18460         and mark them as epilogues.
18461         (reposition_prologue_and_epilogue_notes): Rewrite epilogue
18462         scanning in terms of basic blocks.
18463         * insn-notes.def (CFA_RESTORE_STATE): New.
18464         * jump.c (returnjump_p_1): Accept EH_RETURN.
18465         (eh_returnjump_p_1, eh_returnjump_p): New.
18466         * reg-notes.def (CFA_DEF_CFA, CFA_ADJUST_CFA, CFA_OFFSET,
18467         CFA_REGISTER, CFA_RESTORE): New.
18468         * rtl.def (EH_RETURN): New.
18469         * rtl.h (eh_returnjump_p, maybe_copy_epilogue_insn): Declare.
18470
18471         * config/bfin/bfin.md (UNSPEC_VOLATILE_EH_RETURN): Remove.
18472         (eh_return_internal): Use eh_return rtx; split w/ epilogue.
18473
18474         * config/i386/i386.c (gen_push): Update cfa state.
18475         (pro_epilogue_adjust_stack): Add set_cfa argument.  When true,
18476         add a CFA_ADJUST_CFA note.
18477         (ix86_dwarf_handle_frame_unspec): Remove.
18478         (ix86_expand_prologue): Update cfa state.
18479         (ix86_emit_restore_reg_using_pop): New.
18480         (ix86_emit_restore_regs_using_pop): New.
18481         (ix86_emit_leave): New.
18482         (ix86_emit_restore_regs_using_mov): Add CFA_RESTORE notes.
18483         (ix86_expand_epilogue): Add notes for unwinding the epilogue.
18484         * config/i386/i386.h (struct machine_cfa_state): New.
18485         (ix86_cfa_state): New.
18486         * config/i386/i386.md (UNSPEC_EH_RETURN): Remove.
18487         (eh_return_internal): Merge from eh_return_<mode>,
18488         use eh_return rtx, split w/ epilogue.
18489
18490 2009-05-29  Ian Lance Taylor  <iant@google.com>
18491
18492         * builtins.c (validate_gimple_arglist): Don't use va_arg with
18493         enum type.
18494         * calls.c (emit_library_call_value_1): Likewise.
18495
18496         * c-typeck.c (c_build_va_arg): New function.
18497         * c-tree.h (c_build_va_arg): Declare.
18498         * c-parser.c (c_parser_postfix_expression): Call c_build_va_arg
18499         instead of build_va_arg.
18500
18501 2009-05-29  Eric Botcazou  <ebotcazou@adacore.com>
18502
18503         * tree-ssa-loop-ivopts.c (strip_offset_1) <MULT_EXPR>: New case.
18504         (force_expr_to_var_cost) <NEGATE_EXPR>: Likewise.
18505         (ptr_difference_cost): Use affine combinations to compute it.
18506         (difference_cost): Likewise.
18507         (get_computation_cost_at): Compute more accurate cost for addresses
18508         if the ratio is a multiplier allowed in addresses.
18509         For non-addresses, consider that an additional offset or symbol is
18510         added only once.
18511
18512 2009-05-29  Jakub Jelinek  <jakub@redhat.com>
18513
18514         * config/i386/i386.c (ix86_decompose_address): Avoid useless
18515         0 displacement.  Add 0 displacement if base is %[er]bp or %r13.
18516
18517         * config/i386/i386.md (prefix_data16, prefix_rep): Set to 0 for
18518         TYPE_SSE{MULADD,4ARG,IADD1,CVT1} by default.
18519         (prefix_rex): For UNIT_MMX don't imply the prefix by default
18520         if MODE_DI.
18521         (prefix_extra): Default to 2 for TYPE_SSE{MULADD,4ARG} and
18522         to 1 for TYPE_SSE{IADD1,CVT1}.
18523         (prefix_vex_imm8): Removed.
18524         (length_vex): Only pass 1 as second argument to
18525         ix86_attr_length_vex_default if prefix_extra is 0.
18526         (modrm): For TYPE_INCDEC only set to 0 if not TARGET_64BIT.
18527         (length): For prefix vex computation use length_immediate
18528         attribute instead of prefix_vex_imm8.
18529         (cmpqi_ext_3_insn, cmpqi_ext_3_insn_rex64,
18530         addqi_ext_1, addqi_ext_1_rex64, *testqi_ext_0, andqi_ext_0,
18531         *andqi_ext_0_cc, *iorqi_ext_0, *xorqi_ext_0, *xorqi_cc_ext_1,
18532         *xorqi_cc_ext_1_rex64): Override modrm attribute to 1.
18533         (extendsidi2_rex64, extendhidi2, extendqidi2, extendhisi2,
18534         *extendhisi2_zext, extendqihi2, extendqisi2, *extendqisi2_zext): Emit
18535         a space in between the operands.
18536         (*anddi_1_rex64, *andsi_1): Likewise.  Override prefix_rex to 1
18537         if one operand is 0xff and the other one si, di, bp or sp.
18538         (*andhi_1): Override prefix_rex to 1 if one operand is 0xff and the
18539         other one si, di, bp or sp.
18540         (*btsq, *btrq, *btcq, *btdi_rex64, *btsi): Add mode attribute.
18541         (*ffssi_1, *ffsdi_1, ctzsi2, ctzdi2): Add
18542         type and mode attributes.
18543         (*bsr, *bsr_rex64, *bsrhi): Add type attribute.
18544         (*cmpfp_i_mixed, *cmpfp_iu_mixed): For TYPE_SSECOMI, clear
18545         prefix_rep attribute and set prefix_data16 attribute iff MODE_DF.
18546         (*cmpfp_i_sse, *cmpfp_iu_sse): Clear prefix_rep attribute and set
18547         prefix_data16 attribute iff MODE_DF.
18548         (*movsi_1): For TYPE_SSEMOV MODE_SI set prefix_data16 attribute.
18549         (fix_trunc<mode>di_sse): Set prefix_rex attribute.
18550         (*adddi_4_rex64, *addsi_4): Use const128_operand instead of
18551         constm128_operand in length_immediate computation.
18552         (*addhi_4): Likewise.  Fix mode attribute to MODE_HI.
18553         (anddi_1_rex64): Use movzbl/movzwl instead of movzbq/movzwq.
18554         (*avx_ashlti3, sse2_ashlti3, *avx_lshrti3, sse2_lshrti3): Set
18555         length_immediate attribute to 1.
18556         (x86_fnstsw_1, x86_fnstcw_1, x86_fldcw_1): Fix length attribute.
18557         (*movdi_1_rex64): Override prefix_rex or prefix_data16 attributes
18558         for certain alternatives.
18559         (*movdf_nointeger, *movdf_integer_rex64, *movdf_integer): Override
18560         prefix_data16 attribute if MODE_V1DF.
18561         (*avx_setcc<mode>, *sse_setcc<mode>, *sse5_setcc<mode>): Set
18562         length_immediate to 1.
18563         (set_got_rex64, set_rip_rex64): Remove length attribute, set
18564         length_address to 4, set mode attribute to MODE_DI.
18565         (set_got_offset_rex64): Likewise.  Set length_immediate to 0.
18566         (fxam<mode>2_i387): Set length attribute to 4.
18567         (*prefetch_sse, *prefetch_sse_rex, *prefetch_3dnow,
18568         *prefetch_3dnow_rex): Override length_address attribute.
18569         (sse4_2_crc32<mode>): Override prefix_data16 and prefix_rex
18570         attributes.
18571         * config/i386/predicates.md (ext_QIreg_nomode_operand): New predicate.
18572         (constm128_operand): Removed.
18573         * config/i386/i386.c (memory_address_length): For
18574         disp && !index && !base in 64-bit mode account for SIB byte if
18575         print_operand_address can't optimize disp32 into disp32(%rip)
18576         and UNSPEC doesn't imply (%rip) addressing.  Add 1 to length
18577         for fs: or gs: segment.
18578         (ix86_attr_length_immediate_default): When checking if shortform
18579         is possible, truncate immediate to the length of the non-shortened
18580         immediate.
18581         (ix86_attr_length_address_default): Ignore MEM_P operands
18582         with X constraint.
18583         (ix86_attr_length_vex_default): Only check for DImode on
18584         GENERAL_REG_P operands.
18585         * config/i386/sse.md (<sse>_comi, <sse>_ucomi): Clear
18586         prefix_rep attribute, set prefix_data16 attribute iff MODE_DF.
18587         (sse_cvttps2pi): Clear prefix_rep attribute.
18588         (sse2_cvttps2dq, *sse2_cvtpd2dq, sse2_cvtps2pd): Clear prefix_data16
18589         attribute.
18590         (*sse2_cvttpd2dq): Don't clear prefix_rep attribute.
18591         (*avx_ashr<mode>3, ashr<mode>3, *avx_lshr<mode>3, lshr<mode>3,
18592         *avx_ashl<mode>3, ashl<mode>3): Set length_immediate attribute to 1
18593         iff operand 2 is const_int_operand.
18594         (*vec_dupv4si, avx_shufpd256_1, *avx_shufpd_<mode>,
18595         sse2_shufpd_<mode>): Set length_immediate attribute to 1.
18596         (sse2_pshufd_1): Likewise.  Set prefix attribute to maybe_vex
18597         instead of vex.
18598         (sse2_pshuflw_1, sse2_pshufhw_1): Set length_immediate to 1 and clear
18599         prefix_data16.
18600         (sse2_unpckhpd, sse2_unpcklpd, sse2_storehpd, *vec_concatv2df): Set
18601         prefix_data16 attribute for movlpd and movhpd instructions.
18602         (sse2_loadhpd, sse2_loadlpd, sse2_movsd): Likewise.  Override
18603         length_immediate for shufpd instruction.
18604         (sse2_movntsi, sse3_lddqu): Clear prefix_data16 attribute.
18605         (avx_cmpp<avxmodesuffixf2c><mode>3,
18606         avx_cmps<ssemodesuffixf2c><mode>3, *avx_maskcmp<mode>3,
18607         <sse>_maskcmp<mode>3, <sse>_vmmaskcmp<mode>3,
18608         avx_shufps256_1, *avx_shufps_<mode>, sse_shufps_<mode>,
18609         *vec_dupv4sf_avx, *vec_dupv4sf): Set length_immediate attribute to 1.
18610         (*avx_cvtsi2ssq, *avx_cvtsi2sdq): Set length_vex attribute to 4.
18611         (sse_cvtsi2ssq, sse2_cvtsi2sdq): Set prefix_rex attribute to 1.
18612         (sse2_cvtpi2pd, sse_loadlps, sse2_storelpd): Override
18613         prefix_data16 attribute for the first alternative to 1.
18614         (*avx_loadlps): Override length_immediate for the first alternative.
18615         (*vec_concatv2sf_avx): Override length_immediate and prefix_extra
18616         attributes for second alternative.
18617         (*vec_concatv2sf_sse4_1): Override length_immediate and
18618         prefix_data16 attributes for second alternative.
18619         (*vec_setv4sf_avx, *avx_insertps, vec_extract_lo_<mode>,
18620         vec_extract_hi_<mode>, vec_extract_lo_v16hi,
18621         vec_extract_hi_v16hi, vec_extract_lo_v32qi,
18622         vec_extract_hi_v32qi): Set prefix_extra and length_immediate to 1.
18623         (*vec_setv4sf_sse4_1, sse4_1_insertps, *sse4_1_extractps): Set
18624         prefix_data16 and length_immediate to 1.
18625         (*avx_mulv2siv2di3, *avx_mulv4si3, sse4_2_gtv2di3): Set prefix_extra
18626         to 1.
18627         (*avx_<code><mode>3, *avx_eq<mode>3, *avx_gt<mode>3): Set
18628         prefix_extra attribute for variants that don't have 0f prefix alone.
18629         (*avx_pinsr<ssevecsize>): Likewise.  Set length_immediate to 1.
18630         (*sse4_1_pinsrb, *sse2_pinsrw, *sse4_1_pinsrd, *sse4_1_pextrb,
18631         *sse4_1_pextrb_memory, *sse2_pextrw, *sse4_1_pextrw_memory,
18632         *sse4_1_pextrd): Set length_immediate to 1.
18633         (*sse4_1_pinsrd): Likewise.  Set prefix_extra to 1.
18634         (*sse4_1_pinsrq, *sse4_1_pextrq): Set prefix_rex and length_immediate
18635         to 1.
18636         (*vec_extractv2di_1_rex64_avx, *vec_extractv2di_1_rex64,
18637         *vec_extractv2di_1_avx, *vec_extractv2di_1_sse2): Override
18638         length_immediate to 1 for second alternative.
18639         (*vec_concatv2si_avx, *vec_concatv2di_rex64_avx): Override
18640         prefix_extra and length_immediate attributes for the first
18641         alternative.
18642         (vec_concatv2si_sse4_1): Override length_immediate to 1 for the
18643         first alternative.
18644         (*vec_concatv2di_rex64_sse4_1): Likewise.  Override prefix_rex
18645         to 1 for the first and third alternative.
18646         (*vec_concatv2di_rex64_sse): Override prefix_rex to 1 for the second
18647         alternative.
18648         (*sse2_maskmovdqu, *sse2_maskmovdqu_rex64): Override length_vex
18649         attribute.
18650         (*sse_sfence, sse2_mfence, sse2_lfence): Override length_address
18651         attribute to 0.
18652         (*avx_phaddwv8hi3, *avx_phadddv4si3, *avx_phaddswv8hi3,
18653         *avx_phsubwv8hi3, *avx_phsubdv4si3, *avx_phsubswv8hi,
18654         *avx_pmaddubsw128, *avx_pmulhrswv8hi3, *avx_pshufbv16qi3,
18655         *avx_psign<mode>3): Set prefix_extra attribute to 1.
18656         (ssse3_phaddwv4hi3, ssse3_phadddv2si3, ssse3_phaddswv4hi3,
18657         ssse3_phsubwv4hi3, ssse3_phsubdv2si3, ssse3_phsubswv4hi3,
18658         ssse3_pmaddubsw, *ssse3_pmulhrswv4hi, ssse3_pshufbv8qi3,
18659         ssse3_psign<mode>3): Override prefix_rex attribute.
18660         (*avx_palignrti): Override prefix_extra and length_immediate to 1.
18661         (ssse3_palignrti): Override length_immediate to 1.
18662         (ssse3_palignrdi): Override length_immediate to 1, override
18663         prefix_rex attribute.
18664         (abs<mode>2): Override prefix_rep to 0, override prefix_rex attribute.
18665         (sse4a_extrqi): Override length_immediate to 2.
18666         (sse4a_insertqi): Likewise.  Override prefix_data16 to 0.
18667         (sse4a_insertq): Override prefix_data16 to 0.
18668         (avx_blendp<avxmodesuffixf2c><avxmodesuffix>,
18669         avx_blendvp<avxmodesuffixf2c><avxmodesuffix>,
18670         avx_dpp<avxmodesuffixf2c><avxmodesuffix>, *avx_mpsadbw,
18671         *avx_pblendvb, *avx_pblendw, avx_roundp<avxmodesuffixf2c>256,
18672         avx_rounds<avxmodesuffixf2c>256): Override prefix_extra
18673         and length_immediate to 1.
18674         (sse4_1_blendp<ssemodesuffixf2c>, sse4_1_dpp<ssemodesuffixf2c>,
18675         sse4_2_pcmpestr, sse4_2_pcmpestri, sse4_2_pcmpestrm,
18676         sse4_2_pcmpestr_cconly, sse4_2_pcmpistr, sse4_2_pcmpistri,
18677         sse4_2_pcmpistrm, sse4_2_pcmpistr_cconly): Override prefix_data16
18678         and length_immediate to 1.
18679         (sse4_1_blendvp<ssemodesuffixf2c>): Override prefix_data16 to 1.
18680         (sse4_1_mpsadbw, sse4_1_pblendw): Override length_immediate to 1.
18681         (*avx_packusdw, avx_vtestp<avxmodesuffixf2c><avxmodesuffix>,
18682         avx_ptest256): Override prefix_extra to 1.
18683         (sse4_1_roundp<ssemodesuffixf2c>, sse4_1_rounds<ssemodesuffixf2c>):
18684         Override prefix_data16 and length_immediate to 1.
18685         (sse5_pperm_zero_v16qi_v8hi, sse5_pperm_sign_v16qi_v8hi,
18686         sse5_pperm_zero_v8hi_v4si, sse5_pperm_sign_v8hi_v4si,
18687         sse5_pperm_zero_v4si_v2di, sse5_pperm_sign_v4si_v2di,
18688         sse5_vrotl<mode>3, sse5_ashl<mode>3, sse5_lshl<mode>3): Override
18689         prefix_data16 to 0 and prefix_extra to 2.
18690         (sse5_rotl<mode>3, sse5_rotr<mode>3): Override length_immediate to 1.
18691         (sse5_frcz<mode>2, sse5_vmfrcz<mode>2): Don't override prefix_extra
18692         attribute.
18693         (*sse5_vmmaskcmp<mode>3, sse5_com_tf<mode>3,
18694         sse5_maskcmp<mode>3, sse5_maskcmp<mode>3, sse5_maskcmp_uns<mode>3):
18695         Override prefix_data16 and prefix_rep to 0, length_immediate to 1
18696         and prefix_extra to 2.
18697         (sse5_maskcmp_uns2<mode>3, sse5_pcom_tf<mode>3): Override
18698         prefix_data16 to 0, length_immediate to 1 and prefix_extra to 2.
18699         (*avx_aesenc, *avx_aesenclast, *avx_aesdec, *avx_aesdeclast,
18700         avx_vpermilvar<mode>3,
18701         avx_vbroadcasts<avxmodesuffixf2c><avxmodesuffix>,
18702         avx_vbroadcastss256, avx_vbroadcastf128_p<avxmodesuffixf2c>256,
18703         avx_maskloadp<avxmodesuffixf2c><avxmodesuffix>,
18704         avx_maskstorep<avxmodesuffixf2c><avxmodesuffix>):
18705         Override prefix_extra to 1.
18706         (aeskeygenassist, pclmulqdq): Override length_immediate to 1.
18707         (*vpclmulqdq, avx_vpermil<mode>, avx_vperm2f128<mode>3,
18708         vec_set_lo_<mode>, vec_set_hi_<mode>, vec_set_lo_v16hi,
18709         vec_set_hi_v16hi, vec_set_lo_v32qi, vec_set_hi_v32qi): Override
18710         prefix_extra and length_immediate to 1.
18711         (*avx_vzeroall, avx_vzeroupper, avx_vzeroupper_rex64): Override
18712         modrm to 0.
18713         (*vec_concat<mode>_avx): Override prefix_extra and length_immediate
18714         to 1 for the first alternative.
18715         * config/i386/mmx.md (*mov<mode>_internal_rex64): Override
18716         prefix_rep, prefix_data16 and/or prefix_rex attributes in certain
18717         cases.
18718         (*mov<mode>_internal_avx, *movv2sf_internal_rex64,
18719         *movv2sf_internal_avx, *movv2sf_internal): Override
18720         prefix_rep attribute for certain alternatives.
18721         (*mov<mode>_internal): Override prefix_rep or prefix_data16
18722         attributes for certain alternatives.
18723         (*movv2sf_internal_rex64_avx): Override prefix_rep and length_vex
18724         attributes for certain alternatives.
18725         (*mmx_addv2sf3, *mmx_subv2sf3, *mmx_mulv2sf3,
18726         *mmx_<code>v2sf3_finite, *mmx_<code>v2sf3, mmx_rcpv2sf2,
18727         mmx_rcpit1v2sf3, mmx_rcpit2v2sf3, mmx_rsqrtv2sf2, mmx_rsqit1v2sf3,
18728         mmx_haddv2sf3, mmx_hsubv2sf3, mmx_addsubv2sf3,
18729         *mmx_eqv2sf3, mmx_gtv2sf3, mmx_gev2sf3, mmx_pf2id, mmx_pf2iw,
18730         mmx_pi2fw, mmx_floatv2si2, mmx_pswapdv2sf2, *mmx_pmulhrwv4hi3,
18731         mmx_pswapdv2si2): Set prefix_extra attribute to 1.
18732         (mmx_ashr<mode>3, mmx_lshr<mode>3, mmx_ashl<mode>3): Set
18733         length_immediate to 1 if operand 2 is const_int_operand.
18734         (*mmx_pinsrw, mmx_pextrw, mmx_pshufw_1, *vec_dupv4hi,
18735         *vec_extractv2si_1): Set length_immediate attribute to 1.
18736         (*mmx_uavgv8qi3): Override prefix_extra attribute to 1 if
18737         using old 3DNOW insn rather than SSE/3DNOW_A.
18738         (mmx_emms, mmx_femms): Clear modrm attribute.
18739
18740 2009-05-29  Martin Jambor  <mjambor@suse.cz>
18741
18742         * tree-sra.c:  New implementation of SRA.
18743
18744         * params.def (PARAM_SRA_MAX_STRUCTURE_SIZE): Removed.
18745         (PARAM_SRA_MAX_STRUCTURE_COUNT): Removed.
18746         (PARAM_SRA_FIELD_STRUCTURE_RATIO): Removed.
18747         * params.h (SRA_MAX_STRUCTURE_SIZE): Removed.
18748         (SRA_MAX_STRUCTURE_COUNT): Removed.
18749         (SRA_FIELD_STRUCTURE_RATIO): Removed.
18750         * doc/invoke.texi (sra-max-structure-size): Removed.
18751         (sra-field-structure-ratio): Removed.
18752
18753 2009-05-29  Jakub Jelinek  <jakub@redhat.com>
18754
18755         PR middle-end/40291
18756         * builtins.c (expand_builtin_memcmp): Convert len to sizetype
18757         before expansion.
18758
18759 2009-05-29  Andrey Belevantsev  <abel@ispras.ru>
18760
18761         PR rtl-optimization/40101
18762         * sel-sched-ir.c (get_seqno_by_preds): Allow returning negative
18763         seqno.  Adjust comment.
18764         * sel-sched.c (find_seqno_for_bookkeeping): Assert that when
18765         inserting bookkeeping before a jump, the jump is not scheduled.
18766         When no positive seqno found, provide a value.  Add comment.
18767
18768 2009-05-29  Richard Guenther  <rguenther@suse.de>
18769
18770         * tree-ssa-alias.c (nonaliasing_component_refs_p): Remove
18771         short-cutting on the first component.
18772
18773 2009-05-29  Jakub Jelinek  <jakub@redhat.com>
18774
18775         PR middle-end/39958
18776         * omp-low.c (scan_omp_1_op): Call remap_type on TREE_TYPE
18777         for trees other than decls/types.
18778
18779 2009-05-29  Richard Guenther  <rguenther@suse.de>
18780
18781         * tree-ssa-operands.c (get_expr_operands): Do not handle
18782         INDIRECT_REFs in the handled-component case.  Remove
18783         unused get_ref_base_and_extent case.
18784         * tree-dfa.c (get_ref_base_and_extent): Avoid calling
18785         tree_low_cst and host_integerp where possible.
18786         * tree-ssa-structalias.c (equiv_class_label_eq): Check hash
18787         codes for equivalence.
18788         * dce.c (find_call_stack_args): Avoid redundant bitmap queries.
18789
18790 2009-05-29  David Billinghurst <billingd@gcc.gnu.org>
18791
18792         * config.gcc: Add i386/t-fprules-softfp and soft-fp/t-softfp
18793         to tmake_file for i[34567]86-*-cygwin*.
18794
18795 2009-05-29  Jakub Jelinek  <jakub@redhat.com>
18796
18797         PR target/40017
18798         * config/rs6000/rs6000-c.c (_Bool_keyword): New variable.
18799         (altivec_categorize_keyword, init_vector_keywords,
18800         rs6000_cpu_cpp_builtins): Define _Bool as conditional macro
18801         similar to bool.
18802
18803 2009-05-29  Kai Tietz  <kai.tietz@onevision.com>
18804
18805         * tree.c (handle_dll_attribute): Check if node is
18806         of kind FUNCTION_DECL for DECL_DECLARED_INLINE_P check.
18807
18808 2009-05-29  Richard Earnshaw  <rearnsha@arm.com>
18809
18810         * config/arm/thumb2.md (thumb2_zero_extendsidi2): Add a split
18811         component.
18812         (thumb2_zero_extendqidi2): Likewise.
18813
18814 2009-05-28  Kaz Kojima  <kkojima@gcc.gnu.org>
18815
18816         * config/sh/sh.c (sh_expand_t_scc): Use gen_xorsi3_movrt
18817         instead of gen_movrt.
18818         * config/sh/sh.md (movrt): Remove.
18819
18820 2009-05-28  Steve Ellcey  <sje@cup.hp.com>
18821
18822         * doc/invoke.texi (IA-64 Options):
18823         Add -msdata, -mfused-madd, -mno-inline-float-divide,
18824         -mno-inline-int-divide, -mno-inline-sqrt, -msched-spec-ldc,
18825         -msched-spec-control-ldc, -msched-prefer-non-data-spec-insns,
18826         -msched-prefer-non-control-spec-insns,
18827         -msched-stop-bits-after-every-cycle,
18828         -msched-count-spec-in-critical-path,
18829         -msel-sched-dont-check-control-spec, -msched-fp-mem-deps-zero-cost
18830         -msched-max-memory-insns-hard-limit, -msched-max-memory-insns.
18831         Remove -mt, -pthread, -msched-ldc, -mno-sched-control-ldc,
18832         and -msched-spec-verbose.
18833
18834 2009-05-28  Joseph Myers  <joseph@codesourcery.com>
18835
18836         * config/arm/lib1funcs.asm (__clear_cache): Define if L_clear_cache.
18837         * config/arm/linux-eabi.h (CLEAR_INSN_CACHE): Define to give an
18838         error if used.
18839         * config/arm/t-linux-eabi (LIB1ASMFUNCS): Add _clear_cache.
18840
18841 2009-05-28  Richard Guenther  <rguenther@suse.de>
18842
18843         * tree-ssa-alias.c (ao_ref_init): New function.
18844         (ao_ref_base): Likewise.
18845         (ao_ref_base_alias_set): Likewise.
18846         (ao_ref_alias_set): Likewise.
18847         (refs_may_alias_p_1): Change signature.
18848         (refs_may_alias_p): Adjust.
18849         (refs_anti_dependent_p): Likewise.
18850         (refs_output_dependent_p): Likewise.
18851         (call_may_clobber_ref_p_1): Change signature.
18852         (call_may_clobber_ref_p): Adjust.
18853         (stmt_may_clobber_ref_p_1): New function split out from ...
18854         (stmt_may_clobber_ref_p): ... here.
18855         (maybe_skip_until): Adjust signature.
18856         (get_continuation_for_phi): Likewise.
18857         (walk_non_aliased_vuses): Likewise.
18858         * tree-ssa-alias.h (struct ao_ref_s): New structure type.
18859         (ao_ref_init): Declare.
18860         (ao_ref_base): Likewise.
18861         (ao_ref_alias_set): Likewise.
18862         (stmt_may_clobber_ref_p_1): Likewise.
18863         (walk_non_aliased_vuses): Adjust.
18864         * tree-ssa-sccvn.c (ao_ref_init_from_vn_reference): New function.
18865         (get_ref_from_reference_ops): remove.
18866         (vn_reference_lookup_2): Adjust signature.
18867         (vn_reference_lookup_3): Do not re-build trees.  Handle unions.
18868         (vn_reference_lookup_pieces): Adjust signature, do not re-build trees.
18869         (vn_reference_lookup): Adjust.
18870         (vn_reference_insert): Likewise.
18871         (vn_reference_insert_pieces): Adjust signature.
18872         (visit_reference_op_call): Adjust.
18873         * tree-ssa-pre.c (get_expr_type): Simplify.
18874         (phi_translate_1): Adjust.
18875         (compute_avail): Likewise.
18876         (translate_vuse_through_block): Do not re-build trees.
18877         (value_dies_in_block_x): Likewise.
18878         * tree-ssa-sccvn.h (struct vn_reference_s): Add type and alias-set
18879         fields.
18880         (vn_reference_lookup_pieces): Adjust declaration.
18881         (vn_reference_insert_pieces): Likewise.
18882
18883 2009-05-28  Benjamin Kosnik  <bkoz@redhat.com>
18884
18885         * tree-ssa-copy.c (replace_exp_1): Move op for warning-free use
18886         with checking disabled.
18887
18888 2009-05-28  Dave Korn  <dave.korn.cygwin@gmail.com>
18889
18890         PR target/37216
18891
18892         * configure.ac (HAVE_GAS_ALIGNED_COMM):  Add autoconf test and
18893         macro definition for support of three-operand format aligned
18894         .comm directive in assembler on cygwin/pe/mingw target OS.
18895         * configure:  Regenerate.
18896         * config.h:  Regenerate.
18897
18898         * config/i386/winnt.c (i386_pe_asm_output_aligned_decl_common):  Use
18899         aligned form of .comm directive if -mpe-aligned-commons is in effect.
18900         * config/i386/cygming.opt (-mpe-aligned-commons):  Add new option.
18901
18902         * doc/invoke.texi (-mpe-aligned-commons):  Document new target option.
18903         * doc/tm.texi (ASM_OUTPUT_COMMON):  Document zero size commons.
18904
18905 2009-05-28  Ira Rosen  <irar@il.ibm.com>
18906
18907         PR tree-optimization/40254
18908         * tree-data-ref.c (dr_analyze_innermost): Take POFFSET into account
18909         in analysis of basic blocks.
18910
18911 2009-05-28  Adam Nemet  <anemet@caviumnetworks.com>
18912
18913         PR middle-end/33699
18914         * target.h (struct gcc_target): Fix indentation.  Add const_anchor.
18915         * target-def.h (TARGET_CONST_ANCHOR): New macro.
18916         (TARGET_INITIALIZER): Use it.
18917         * cse.c (CHEAPER): Move it up to the other macros.
18918         (insert): Rename this ...
18919         (insert_with_costs): ... to this.  Add cost parameters.  Update
18920         function comment.
18921         (insert): New function.  Call insert_with_costs.
18922         (compute_const_anchors, insert_const_anchor, insert_const_anchors,
18923         find_reg_offset_for_const, try_const_anchors): New functions.
18924         (cse_insn): Call try_const_anchors.  Adjust cost of src_related
18925         when using a const-anchor.  Call insert_const_anchors.
18926         * config/mips/mips.c (mips_set_mips16_mode): Set targetm.const_anchor.
18927         * doc/tm.texi (Misc): Document TARGET_CONST_ANCHOR.
18928
18929 2009-05-28  Alexandre Oliva  <aoliva@redhat.com>
18930
18931         * tree-inline.c (remap_decls): Enable nonlocalized variables
18932         when not optimizing.
18933
18934 2009-05-28  Alexandre Oliva  <aoliva@redhat.com>
18935
18936         * tree-ssa-live.c (remove_unused_locals): Skip when not optimizing.
18937         Simplify other tests involving optimize.
18938
18939 2009-05-27  Tom Tromey  <tromey@redhat.com>
18940
18941         * unwind-dw2.c (_Unwind_DebugHook): New function.
18942         (uw_install_context): Call _Unwind_DebugHook.
18943
18944 2009-05-27  Tom Tromey  <tromey@redhat.com>
18945
18946         * system.h (CONST_CAST2): Use C++ const_cast when compiled as C++
18947
18948 2009-05-27  Ian Lance Taylor  <iant@google.com>
18949
18950         * Makefile.in (LINKER, LINKER_FLAGS): Define.
18951         (LINKER_FOR_BUILD, BUILD_LINKERFLAGS): Define.
18952         (ALL_LINKERFLAGS): Define.
18953         (xgcc$(exeext)): Change $(COMPILER) to $(LINKER).
18954         (cpp$(exeext), cc1-dummy$(exeext), cc1$(exeext)): Likewise.
18955         (collect2$(exeext), mips-tfile, mips-tdump): Likewise.
18956         (gcov$(exeext), gcov-dump$(exeext)): Likewise.
18957         (build/gen%$(build_exeext)): Change $(COMPILER_FOR_BUILD) to
18958         $(LINKER_FOR_BUILD).
18959         (build/gcov-iov$(build_exeext)): Likewise.
18960
18961 2009-05-27  Julian Brown  <julian@codesourcery.com>
18962
18963         * gcse.c (target.h): Include.
18964         (can_assign_to_reg_without_clobbers_p): Check that the target allows
18965         copy of argument to a pseudo register.
18966
18967 2009-05-27  Diego Novillo  <dnovillo@google.com>
18968
18969         * tree-ssa-live.c (dump_scope_block): Document arguments.
18970         (dump_scope_blocks): Document.
18971         (debug_scope_blocks): New.
18972         * tree-flow.h (debug_scope_blocks): Declare.
18973
18974 2009-05-21  Denis Chertykov  <denisc@overta.ru>
18975
18976         * doc/contrib.texi (Contributors): Add myself to the list.
18977
18978 2009-05-27  Olivier Hainque  <hainque@adacore.com>
18979
18980         * expr.c (target_align): New function.  Alignment the TARGET of an
18981         assignment may be assume to have.
18982         (highest_pow2_factor_for_target): Use it instead of relying on
18983         immediate tree attributes of TARGET, not necessarily honored when
18984         intermediate bitfields are involved.
18985
18986 2009-05-27  H.J. Lu  <hongjiu.lu@intel.com>
18987
18988         PR target/40266
18989         * config/i386/driver-i386.c (host_detect_local_cpu): Support
18990         AVX, SSE4, AES, PCLMUL and POPCNT.
18991
18992 2009-05-27  Diego Novillo  <dnovillo@google.com>
18993
18994         * tree-pretty-print.c (dump_location): New.
18995         (dump_generic_node): Call it.
18996         Factor code to handle BLOCK nodes ...
18997         (dump_block_node): ... here.
18998
18999 2009-05-27  Rafael Avila de Espindola  <espindola@google.com>
19000
19001         * Makefile.in (GCC_PLUGIN_H): New. Replace all uses of gcc-plugin.h
19002         with it.
19003         * doc/plugins.texi: Document that gcc-plugin.h must be the first to be
19004         included.
19005         * gcc-plugin.h: Include config.h and system.h.
19006         (IN_GCC): Define if not defined.
19007
19008 2009-05-27  Hans-Peter Nilsson  <hp@axis.com>
19009
19010         PR middle-end/40249
19011         * Makefile.in (CRTSTUFF_CFLAGS): Replace -fno-inline-functions
19012         with -fno-inline.
19013
19014 2009-05-27  Shujing Zhao  <pearly.zhao@oracle.com>
19015
19016         * config/m32r/m32r.c: Use REG_P, MEM_P and CONST_INT_P where
19017         applicable.
19018         * config/m32r/m32r.h: Ditto.
19019         * config/m32r/m32r.md: Ditto.
19020         * config/m32r/predicates.md: Ditto.
19021
19022 2009-05-27  Alexandre Oliva  <aoliva@redhat.com>
19023
19024         * cgraph.c (dump_cgraph_node): Honor -fdump-noaddr.
19025
19026 2009-05-26  Basile Starynkevitch  <basile@starynkevitch.net>
19027
19028         * doc/plugins.texi
19029         (Loading plugins): typo.
19030         (Plugin callbacks): Documented PLUGIN_INFO, PLUGIN_GGC_START,
19031         PLUGIN_GGC_MARKING, PLUGIN_GGC_END, PLUGIN_REGISTER_GGC_ROOTS.
19032         (Interacting with the GCC Garbage Collector): Added new section.
19033         (Giving information about a plugin): Added new section for
19034         PLUGIN_INFO.
19035         * ggc.h (ggc_register_root_tab): Added declaration.
19036         * gcc-plugin.h (PLUGIN_GGC_START, PLUGIN_GGC_MARKING)
19037         (PLUGIN_GGC_END, PLUGIN_REGISTER_GGC_ROOTS): Added new events.
19038         (register_callback): Improved comment in declaration.
19039         * ggc-common.c (const_ggc_root_tab_t) Added new typedef for vectors.
19040         (extra_root_vec) Added static variable for dynamic roots registration.
19041         (ggc_register_root_tab) Added new routine.
19042         (ggc_mark_roots) Added iteration inside extra_root_vec, and invoke
19043         PLUGIN_GGC_MARKING event.
19044         * ggc-zone.c: Include plugin.h.
19045         (ggc_collect): Invoke PLUGIN_GGC_START & PLUGIN_GGC_END events.
19046         * ggc-page.c: Include plugin.h.
19047         (ggc_collect): Invoke PLUGIN_GGC_START & PLUGIN_GGC_END events.
19048         * plugin.c (plugin_event_name): added names of PLUGIN_GGC_START,
19049         PLUGIN_GGC_MARKING, PLUGIN_GGC_END, PLUGIN_REGISTER_GGC_ROOTS
19050         (register_callback): check lack of callbacks for
19051         pseudo-events. Added handling of PLUGIN_REGISTER_GGC_ROOTS,
19052         PLUGIN_GGC_START, PLUGIN_GGC_MARKING, PLUGIN_GGC_END.
19053         (invoke_plugin_callbacks): Handle PLUGIN_GGC_START,
19054         PLUGIN_GGC_MARKING, PLUGIN_GGC_END, PLUGIN_REGISTER_GGC_ROOTS.
19055         * Makefile.in (ggc-common.o, ggc-zone.o, ggc-page.o): Added
19056         dependency on plugin.h.
19057         (plugin.o): Added dependency on ggc.h...
19058
19059 2009-05-26  Richard Guenther  <rguenther@suse.de>
19060
19061         PR middle-end/40248
19062         Revert
19063         * expr.c (expand_expr_real_1): Avoid calling do_store_flag
19064         with mismatched comparison modes.
19065
19066         * expr.c (expand_expr_real_1): Expand the operand of a
19067         VIEW_CONVERT_EXPR in its natural mode.
19068
19069 2009-05-26  Ian Lance Taylor  <iant@google.com>
19070
19071         * Makefile.in (COMPILER, COMPILER_FLAGS): Define.
19072         (COMPILER_FOR_BUILD, BUILD_COMPILERFLAGS): Define.
19073         (ALL_COMPILERFLAGS): Define.
19074         (.c.o, xgcc$(exeext), cpp$(exeext)): Use $(COMPILER).
19075         (cc1-dummy$(exeext), cc1$(exeext)): Likewise.
19076         (collect2$(exeext), collect2.o): Likewise.
19077         (c-opts.o, c-cppbuiltin.o, c-pch.o, gcc.o, gccspec.o): Likewise.
19078         (gcc-options.o, version.o, prefix.o, toplev.o): Likewise.
19079         ($(out_object_file), mips-tfile, mips-tdump): Likewise.
19080         (libbackend.o, intl.o, cppdefault.o): Likewise.
19081         (gcov$(exeext), gcov-dump$(exeext)): Likewise.
19082         (build/%.o): Use $(COMPILER_FOR_BUILD).
19083         (build/gen%$(build_exeext)): Likewise.
19084         (build/gcov-iov$(build_exeext)): LIkewise.
19085         * config/t-darwin (darwin.o): Use $(COMPILER).
19086         (darwin-c.o, darwin-f.o, darwin-driver.o): Likewise.
19087         * config/t-sol2 (sol2-c.o): Likewise.
19088         (sol2.o): Likewise.
19089         * config/t-vxworks (vxworks.o): Likewise.
19090         * config/x-darwin (host-darwin.o): Likewise.
19091         * config/x-hpux (host-hpux.o): Likewise.
19092         * config/x-linux (host-linux.o): Likewise.
19093         * config/x-solaris (host-solaris.o): Likewise.
19094         * config/alpha/x-alpha (driver-alpha.o): Likewise.
19095         * config/arm/t-arm (arm-c.o): Likewise.
19096         * config/arm/t-pe (pe.o): Likewise.
19097         * config/arm/t-wince-pe (pe.o): Likewise.
19098         * config/i386/t-cygming (winnt.o): Likewise.
19099         (winnt-cxx.o, winnt-stubs.o, msformat-c.o): Likewise.
19100         * config/i386/t-cygwin (cygwin1.o): Likewise.
19101         (cygwin2.o): Likewise.
19102         * config/i386/t-i386 (i386-c.o): Likewise.
19103         * config/i386/t-interix (winnt.o): Likewise.
19104         * config/i386/t-netware (netware.o): Likewise.
19105         * config/i386/t-nwld (nwld.o): Likewise.
19106         * config/i386/x-darwin (host-i386-darwin.o): Likewise.
19107         * config/i386/x-i386 (driver-i386.o): Likewise.
19108         * config/i386/x-cygwin (host-cygwin.o): Likewise.
19109         * config/i386/x-mingw32 (host-mingw32.o): Likewise.
19110         * config/ia64/t-ia64 (ia64-c.o): Likewise.
19111         * config/m32c/t-m32c (m32c-pragma.o): Likewise.
19112         * config/mips/x-native (driver-native.o): Likewise.
19113         * config/rs6000/t-rs6000 (rs6000-c.o): Likewise.
19114         * config/rs6000/x-darwin (host-ppc-darwin.o): Likewise.
19115         * config/rs6000/x-darwin64 (host-ppc64-darwin.o): Likewise.
19116         * config/rs6000/x-rs6000 (driver-rs6000.o): Likewise.
19117         * config/score/t-score-elf (score7.o): Likewise.
19118         (score3.o): Likewise.
19119         * config/sh/t-sh (sh-c.o): Likewise.
19120         * config/sh/t-symbian (sh-c.o): Likewise.
19121         (symbian.o): Likewise.
19122         * config/spu/t-spu-elf (spu-c.o): Likewise.
19123         * config/v850/t-v850 (v850-c.o): Likewise.
19124         * config/v850/t-v850e (v850-c.o): Likewise.
19125
19126 2009-05-26  Richard Guenther  <rguenther@suse.de>
19127
19128         PR tree-optimization/40122
19129         * tree-ssa-ccp.c (ccp_fold): Fold vector CONSTRUCTORs to
19130         VECTOR_CSTs if possible.
19131         (fold_gimple_assign): Likewise.
19132
19133 2009-05-26  Richard Guenther  <rguenther@suse.de>
19134
19135         PR middle-end/40252
19136         * fold-const.c (fold_binary): Use the correct types for building
19137         rotates.
19138
19139 2009-05-26  Richard Guenther  <rguenther@suse.de>
19140
19141         * tree-vect-data-refs.c (vect_create_data_ref_ptr): Remove
19142         redundant calls to merge_alias_info.
19143         (bump_vector_ptr): Likewise.
19144         * tree-ssa-copy.c (merge_alias_info): Remove.
19145         (replace_exp_1): Remove call to merge_alias_info.
19146         (propagate_tree_value): Likewise.
19147         (fini_copy_prop): Propagate points-to info.
19148         * tree-flow.h (merge_alias_info): Remove.
19149
19150 2009-05-07  Hariharan Sandanagobalane <hariharan@picochip.com>
19151
19152         * config/picochip/picochip.C (PARAM_INLINE_CALL_COST): Remove.
19153
19154 2009-05-25  Jan Hubicka  <jh@suse.cz>
19155
19156         * cgraph.c (dump_cgraph_node): Dump size/time/benefit.
19157         * cgraph.h (struct inline_summary): New filed self_wize,
19158         size_inlining_benefit, self_time and time_inlining_benefit.
19159         (struct cgraph_global_info): Replace insns by time ans size fields.
19160         * ipa-cp (ipcp_cloning_candidate_p): Base estimate on size
19161         (ipcp_estimate_growth, ipcp_insert_stage): Likewise.
19162         (ipcp_update_callgraph): Do not touch function bodies.
19163         * ipa-inline.c: Include except.h
19164         (MAX_TIME): New constant.
19165         (overall_insns): Remove.
19166         (leaf_node_p): New.
19167         (overall_size, max_benefit): New static variables.
19168         (cgraph_estimate_time_after_inlining): New function.
19169         (cgraph_estimate_size_after_inlining): Rewrite using benefits.
19170         (cgraph_clone_inlined_nodes): Update size.
19171         (cgraph_mark_inline_edge): Update size.
19172         (cgraph_estimate_growth): Use size info.
19173         (cgraph_check_inline_limits): Check size.
19174         (cgraph_default_inline_p): Likewise.
19175         (cgraph_edge_badness): Compute badness based on benefit and size cost.
19176         (cgraph_decide_recursive_inlining): Check size.
19177         (cgraph_decide_inlining_of_small_function): Update size; dump sizes
19178         and times.
19179         (cgraph_decide_inlining): Likewise.
19180         (cgraph_decide_inlining_incrementally): Likewise; honor
19181         PARAM_EARLY_INLINING_INSNS.
19182         (likely_eliminated_by_inlining_p): New predicate.
19183         (estimate_function_body_sizes): New function.
19184         (compute_inline_parameters): Use it.
19185         * except.c (must_not_throw_labels): New function.
19186         * except.h (must_not_throw_labels): Declare.
19187         * tree-inline.c (init_inline_once): Kill inlining_weigths
19188         * tree-ssa-structalias.c: Avoid uninitialized warning.
19189         * params.def (PARAM_MAX_INLINE_INSNS_SINGLE): Reduce to 300.
19190         (PARAM_MAX_INLINE_INSNS_AUTO): Reduce to 60.
19191         (PARAM_INLINE_CALL_COST): Remove.
19192         (PARAM_EARLY_INLINING_INSNS): New.
19193
19194 2009-05-25  Richard Guenther  <rguenther@suse.de>
19195
19196         PR tree-optimization/36327
19197         * tree-ssa-alias.c (walk_non_aliased_vuses): Add second walker
19198         callback for reference translation or lookup at the point of may-defs.
19199         * tree-ssa-alias.h (walk_non_aliased_vuses): Adjust prototype.
19200         * tree-ssa-sccvn.c (get_ref_from_reference_ops): Bail out
19201         for union COMPONENT_REFs.
19202         (vn_reference_lookup_3): New callback.  Lookup from memset
19203         and CONSTRUCTOR assignment, translate through struct copies.
19204         (vn_reference_lookup_pieces): Make sure to not free the
19205         passed operands array.  Adjust walk_non_aliased_vuses call.
19206         (vn_reference_lookup): Adjust walk_non_aliased_vuses call,
19207         make sure we do not leak memory.
19208
19209 2009-05-25  Richard Guenther  <rguenther@suse.de>
19210
19211         * tree-ssa-alias.h (dump_points_to_solution): Declare.
19212         * tree-inline.c (expand_call_inline): Reset the escaped and
19213         callused solutions.
19214         * tree-ssa-structalias.c (pass_build_ealias): New.
19215         * tree-pass.h (pass_build_ealias): Declare.
19216         * passes.c (init_optimization_passes): Add PTA during
19217         early optimizations.
19218         * tree-ssa-alias.c (dump_alias_info): Dump the ESCAPED
19219         and CALLUSED solutions.
19220         (dump_points_to_solution): New function, split out from ...
19221         (dump_points_to_info_for): ... here.
19222         * tree-parloops.c (parallelize_loops): Reset the escaped and
19223         callused solutions.
19224
19225 2009-05-25  Rainer Orth  <ro@TechFak.Uni-Bielefeld.DE>
19226
19227         PR bootstrap/40027
19228         * config/i386/i386.c (USE_HIDDEN_LINKONCE): Only define if missing.
19229         * config/i386/sol2.h [!TARGET_GNU_LD] (USE_HIDDEN_LINKONCE): Define.
19230
19231 2009-05-25  Ira Rosen  <irar@il.ibm.com>
19232
19233         PR tree-optimization/40238
19234         * tree-vect-stmts.c (vect_init_vector): Insert initialization
19235         statements after basic block's labels.
19236         * tree-vect-slp.c (vect_slp_transform_bb): Call destroy_bb_vec_info()
19237         to free the allocated memory.
19238
19239 2009-05-24  Kaz Kojima  <kkojima@gcc.gnu.org>
19240
19241         * gcc/config/sh/sh.c (sh_set_return_address): Mark store of
19242         return address with a USE.
19243
19244 2009-05-24  Richard Guenther  <rguenther@suse.de>
19245
19246         PR middle-end/40233
19247         * tree.c (make_vector_type): Build the TYPE_DEBUG_REPRESENTATION_TYPEs
19248         array type from the main variant of the inner type.
19249
19250 2009-05-24  Jan-Benedict Glaw  <jbglaw@lug-owl.de>
19251
19252         * config/vax/vax-protos.h (legitimate_constant_address_p): Change
19253         definition to bool (from int) to un-break build.
19254         (legitimate_constant_p, vax_mode_dependent_address_p): Likewise.
19255
19256 2009-05-24  Paolo Bonzini  <bonzini@gnu.org>
19257
19258         * tree-ssa-operands.h (push_stmt_changes, pop_stmt_changes,
19259         discard_stmt_changes): Delete.
19260         * tree-ssa-operands.c (scb_stack): Delete.
19261         (init_ssa_operands): Do not initialize it.
19262         (fini_ssa_operands): Do not free it.
19263         (push_stmt_changes, pop_stmt_changes, discard_stmt_changes): Delete.
19264
19265         * tree-cfg.c (replace_uses_by): Replace pop_stmt_changes with
19266         update_stmt, remove the others.  Fix comments.
19267         * tree-dfa.c (optimize_stack_restore): Likewise.
19268         * tree-ssa-forwprop.c (forward_propagate_addr_expr): Likewise.
19269         * tree-ssa-loop-ivopts.c (rewrite_use): Likewise.
19270         * tree-ssa-dce.c (eliminate_unnecessary_stmts): Likewise.
19271         * tree-ssa-ccp.c (optimize_stack_restore, execute_fold_all_builtins):
19272         Likewise.
19273         * tree-ssa-propagate.c (substitute_and_fold): Likewise.
19274         * tree-ssa-dom.c (propagate_rhs_into_lhs): Likewise.
19275         (dom_opt_finalize_block): Likewise, adjusting access to
19276         stmts_to_rescan.
19277         (optimize_stmt): Likewise, adjusting access to stmts_to_rescan.
19278         (stmts_to_rescan): Change item type to gimple.
19279         (tree_ssa_dominator_optimize): Change type of stmts_to_rescan.
19280
19281 2009-05-24  Ira Rosen  <irar@il.ibm.com>
19282
19283         * doc/passes.texi (Tree-SSA passes): Document SLP pass.
19284         * tree-pass.h (pass_slp_vectorize): New pass.
19285         * params.h (SLP_MAX_INSNS_IN_BB): Define.
19286         * timevar.def (TV_TREE_SLP_VECTORIZATION): Define.
19287         * tree-vectorizer.c (timevar.h): Include.
19288         (user_vect_verbosity_level): Declare.
19289         (vect_location): Fix comment.
19290         (vect_set_verbosity_level): Update user_vect_verbosity_level
19291         instead of vect_verbosity_level.
19292         (vect_set_dump_settings): Add an argument. Ignore user defined
19293         verbosity if dump flags require higher level of verbosity. Print to
19294         stderr only for loop vectorization.
19295         (vectorize_loops): Update call to vect_set_dump_settings.
19296         (execute_vect_slp): New function.
19297         (gate_vect_slp): Likewise.
19298         (struct gimple_opt_pass pass_slp_vectorize): New.
19299         * tree-vectorizer.h (struct _bb_vec_info): Define along macros to
19300         access its members.
19301         (vec_info_for_bb): New function.
19302         (struct _stmt_vec_info): Add bb_vinfo and a macro for its access.
19303         (VECTORIZATION_ENABLED): New macro.
19304         (SLP_ENABLED, SLP_DISABLED): Likewise.
19305         (vect_is_simple_use): Add bb_vec_info argument.
19306         (new_stmt_vec_info, vect_analyze_data_ref_dependences,
19307         vect_analyze_data_refs_alignment, vect_verify_datarefs_alignment,
19308         vect_analyze_data_ref_accesses, vect_analyze_data_refs,
19309         vect_schedule_slp, vect_analyze_slp): Likewise.
19310         (vect_analyze_stmt): Add slp_tree argument.
19311         (find_bb_location): Declare.
19312         (vect_slp_analyze_bb, vect_slp_transform_bb): Likewise.
19313         * tree-vect-loop.c (new_loop_vec_info): Adjust function calls.
19314         (vect_analyze_loop_operations, vect_analyze_loop,
19315         get_initial_def_for_induction, vect_create_epilog_for_reduction,
19316         vect_finalize_reduction, vectorizable_reduction,
19317         vectorizable_live_operation, vect_transform_loop): Likewise.
19318         * tree-data-ref.c (dr_analyze_innermost): Update comment,
19319         skip evolution analysis if analyzing a basic block.
19320         (dr_analyze_indices): Likewise.
19321         (initialize_data_dependence_relation): Skip the test whether the
19322         object is invariant for basic blocks.
19323         (compute_all_dependences): Skip dependence analysis for data
19324         references in basic blocks.
19325         (find_data_references_in_stmt): Don't fail in case of invariant
19326         access in basic block.
19327         (find_data_references_in_bb): New function.
19328         (find_data_references_in_loop): Move code to
19329         find_data_references_in_bb and add a call to it.
19330         (compute_data_dependences_for_bb): New function.
19331         * tree-data-ref.h (compute_data_dependences_for_bb): Declare.
19332         * tree-vect-data-refs.c (vect_check_interleaving): Adjust to the case
19333         that STEP is 0.
19334         (vect_analyze_data_ref_dependence): Check for interleaving in case of
19335         unknown dependence in basic block and fail in case of dependence in
19336         basic block.
19337         (vect_analyze_data_ref_dependences): Add bb_vinfo argument, get data
19338         dependence instances from either loop or basic block vectorization
19339         info.
19340         (vect_compute_data_ref_alignment): Check if it is loop vectorization
19341         before calling nested_in_vect_loop_p.
19342         (vect_compute_data_refs_alignment): Add bb_vinfo argument, get data
19343         dependence instances from either loop or basic block vectorization
19344         info.
19345         (vect_verify_datarefs_alignment): Likewise.
19346         (vect_enhance_data_refs_alignment): Adjust function calls.
19347         (vect_analyze_data_refs_alignment): Likewise.
19348         (vect_analyze_group_access): Fix printing. Skip different checks if
19349         DR_STEP is 0. Keep strided stores either in loop or basic block
19350         vectorization data structure. Fix indentation.
19351         (vect_analyze_data_ref_access): Fix comments, allow zero step in
19352         basic blocks.
19353         (vect_analyze_data_ref_accesses): Add bb_vinfo argument, get data
19354         dependence instances from either loop or basic block vectorization
19355         info.
19356         (vect_analyze_data_refs): Update comment. Call
19357         compute_data_dependences_for_bb to analyze basic blocks.
19358         (vect_create_addr_base_for_vector_ref): Check for outer loop only in
19359         case of loop vectorization. In case of basic block vectorization use
19360         data-ref itself as a base.
19361         (vect_create_data_ref_ptr): In case of basic block vectorization:
19362         don't advance the pointer, add new statements before the current
19363         statement.  Adjust function calls.
19364         (vect_supportable_dr_alignment): Support only aligned accesses in
19365         basic block vectorization.
19366         * common.opt (ftree-slp-vectorize): New flag.
19367         * tree-vect-patterns.c (widened_name_p): Adjust function calls.
19368         (vect_pattern_recog_1): Likewise.
19369         * tree-vect-stmts.c (process_use): Likewise.
19370         (vect_init_vector): Add new statements in the beginning of the basic
19371         block in case of basic block SLP.
19372         (vect_get_vec_def_for_operand): Adjust function calls.
19373         (vect_finish_stmt_generation): Likewise.
19374         (vectorizable_call): Add assert that it is loop vectorization, adjust
19375         function calls.
19376         (vectorizable_conversion, vectorizable_assignment): Likewise.
19377         (vectorizable_operation): In case of basic block SLP, take
19378         vectorization factor from statement's type and skip the relevance
19379         check. Adjust function calls.
19380         (vectorizable_type_demotion): Add assert that it is loop
19381         vectorization, adjust function calls.
19382         (vectorizable_type_promotion): Likewise.
19383         (vectorizable_store): Check for outer loop only in case of loop
19384         vectorization. Adjust function calls. For basic blocks, skip the
19385         relevance check and don't advance pointers.
19386         (vectorizable_load): Likewise.
19387         (vectorizable_condition): Add assert that it is loop vectorization,
19388         adjust function calls.
19389         (vect_analyze_stmt): Add argument. In case of basic block SLP, check
19390         that it is not reduction, get vector type, call only supported
19391         functions, skip loop specific parts.
19392         (vect_transform_stmt): Check for outer loop only in case of loop
19393         vectorization.
19394         (new_stmt_vec_info): Add new argument and initialize bb_vinfo.
19395         (vect_is_simple_use): Fix comment, add new argument, fix conditions
19396         for external definition.
19397         * passes.c (pass_slp_vectorize): New pass.
19398         * tree-vect-slp.c (find_bb_location): New function.
19399         (vect_get_and_check_slp_defs): Add argument, adjust function calls,
19400         check for patterns only in loops.
19401         (vect_build_slp_tree): Add argument, adjust function calls, fail in
19402         case of multiple types in basic block SLP.
19403         (vect_mark_slp_stmts_relevant): New function.
19404         (vect_supported_load_permutation_p): Fix comment.
19405         (vect_analyze_slp_instance): Add argument. In case of basic block
19406         SLP, take vectorization factor from statement's type, check that
19407         unrolling factor is 1. Adjust function call. Save SLP instance in
19408         either loop or basic block vectorization structure. Return FALSE,
19409         if SLP failed.
19410         (vect_analyze_slp): Add argument. Get strided stores groups from
19411         either loop or basic block vectorization structure. Return FALSE
19412         if basic block SLP failed.
19413         (new_bb_vec_info): New function.
19414         (destroy_bb_vec_info, vect_slp_analyze_node_operations,
19415         vect_slp_analyze_operations, vect_slp_analyze_bb): Likewise.
19416         (vect_schedule_slp): Add argument. Get SLP instances from either
19417         loop or basic block vectorization structure. Set vectorization factor
19418         to be 1 for basic block SLP.
19419         (vect_slp_transform_bb): New function.
19420         * params.def (PARAM_SLP_MAX_INSNS_IN_BB): Define.
19421
19422 2009-05-23  Mark Mitchell  <mark@codesourcery.com>
19423
19424         * final.c (shorten_branches): Do not align labels for jump tables.
19425         (final_scan_insn): Use JUMP_TABLE_DATA_P.
19426
19427 2009-05-23  Eric Botcazou  <ebotcazou@adacore.com>
19428
19429         * doc/passes.texi: Standardize spelling of RTL, Tree and Tree SSA.
19430         Remove outdated reference to flow.c and fix nits.
19431         * doc/gccint.texi: Tweak RTL description.
19432         * doc/rtl.texi: Likewise.
19433
19434 2009-05-23  Denis Chertykov  <chertykov@gmail.com>
19435
19436         * config/avr/avr.c: Change my email address.
19437         * config/avr/avr.h: Likewise.
19438         * config/avr/avr.md: Likewise.
19439         * config/avr/avr-protos.h: Likewise.
19440         * config/avr/libgcc.S: Likewise.
19441
19442 2009-05-22  Trevor Smigiel <Trevor_Smigiel@playstation.sony.com>
19443
19444         * config/spu/spu-protos.h (aligned_mem_p, spu_valid_mov): Remove.
19445         (spu_split_load, spu_split_store): Change return type to int.
19446         (spu_split_convert): Declare.
19447         * config/spu/predicates.md (spu_mem_operand): Remove.
19448         (spu_mov_operand): Update.
19449         (spu_dest_operand, shiftrt_operator, extend_operator): Define.
19450         * config/spu/spu.c (regno_aligned_for_load): Remove.
19451         (reg_aligned_for_addr, spu_expand_load): Define.
19452         (spu_expand_extv): Reimplement and handle MEM.
19453         (spu_expand_insv): Handle MEM.
19454         (spu_sched_reorder): Handle insn's with length 0.
19455         (spu_legitimate_address_p): Reimplement.
19456         (store_with_one_insn_p): Return TRUE for any mode with size
19457         larger than 16 bytes.
19458         (address_needs_split): Define.
19459         (spu_expand_mov): Call spu_split_load and spu_split_store for MEM
19460         operands.
19461         (spu_convert_move): Define.
19462         (spu_split_load): Use spu_expand_load and change all MEM's to TImode.
19463         (spu_split_store): Change all MEM's to TImode.
19464         (spu_init_expanders): Preallocate registers that correspond to
19465         LAST_VIRTUAL_REG+1 and LAST_VIRTUAL_REG+2 and set them with
19466         mark_reg_pointer.
19467         (spu_split_convert): Define.
19468         * config/spu/spu.md (QHSI, QHSDI): New mode iterators.
19469         (_move<mode>, _movdi, _movti): Update predicate and condition.
19470         (load, store): Change to define_split.
19471         (extendqiti2, extendhiti2, extendsiti2, extendditi2): Simplify to
19472         extend<mode>ti2.
19473         (zero_extendqiti2, zero_extendhiti2, <v>lshr<mode>3_imm): Define.
19474         (lshr<mode>3, lshr<mode>3_imm, lshr<mode>3_re): Simplify to one
19475         define_insn_and_split of lshr<mode>3.
19476         (shrqbybi_<mode>, shrqby_<mode>): Simplify to define_expand.
19477         (<v>ashr<mode>3_imm): Define.
19478         (extv, extzv, insv): Allow MEM operands.
19479         (trunc_shr_ti<mode>, trunc_shr_tidi, shl_ext_<mode>ti,
19480         shl_ext_diti, sext_trunc_lshr_tiqisi, zext_trunc_lshr_tiqisi,
19481         sext_trunc_lshr_tihisi, zext_trunc_lshr_tihisi): Define for combine.
19482         (_spu_convert2): Change to define_insn_and_split and remove the
19483         corresponding define_peephole2.
19484         (stack_protect_set, stack_protect_test, stack_protect_test_si):
19485         Change predicates to memory_operand.
19486
19487 2009-05-22  Mark Mitchell  <mark@codesourcery.com>
19488
19489         * config/arm/thumb2.md: Add 16-bit multiply instructions.
19490
19491 2009-05-21  Michael Meissner  <meissner@linux.vnet.ibm.com>
19492
19493         PR tree-optimization/40219
19494         * tree.c (iterative_hash_expr): Make sure the builtin function is
19495         a normal builtin function and not a front end or back end builtin
19496         before indexing into the built_in_decls array.
19497
19498 2009-05-22  Richard Guenther  <rguenther@suse.de>
19499
19500         PR middle-end/38964
19501         * alias.c (write_dependence_p): Do not use TBAA for answering
19502         anti-dependence or output-dependence.
19503         * tree-ssa-structalias.c (set_uids_in_ptset): Remove TBAA pruning code.
19504         (emit_pointer_definition): Remove.
19505         (emit_alias_warning): Likewise.
19506         (find_what_var_points_to): Remove TBAA pruning code.
19507         (find_what_p_points_to): Likewise.  Do not warn about strict-aliasing
19508         violations.
19509         (compute_points_to_sets): Remove code computing the set of
19510         dereferenced pointers.
19511         * tree-data-ref.c (dr_may_alias_p): Properly use the split
19512         oracle for querying anti and output dependencies.
19513         * tree-ssa-alias.c (refs_may_alias_p_1): Add argument specifying
19514         if TBAA may be applied.
19515         (refs_anti_dependent_p): New function.
19516         (refs_output_dependent_p): Likewise.
19517         * tree-ssa-alias.h (refs_anti_dependent_p): Declare.
19518         (refs_output_dependent_p): Likewise.
19519         * doc/tree-ssa.texi (Memory model): New section.
19520         * doc/c-tree.texi (CHANGE_DYNAMIC_TYPE_EXPR): Remove.
19521         * doc/gimple.texi (GIMPLE_CHANGE_DYNAMIC_TYPE): Remove.
19522         * cfgexpand.c (expand_gimple_basic_block): Do not handle
19523         GIMPLE_CHANGE_DYNAMIC_TYPE or CHANGE_DYNAMIC_TYPE_EXPR.
19524         * expr.c (expand_expr_real_1): Likewise.
19525         * gimple-low.c (lower_stmt): Likewise.
19526         * gimple-pretty-print.c (dump_gimple_stmt): Likewise.
19527         (dump_gimple_cdt): Remove.
19528         * gimple.c (gss_for_code): Do not handle GIMPLE_CHANGE_DYNAMIC_TYPE.
19529         (gimple_size): Likewise.
19530         (walk_gimple_op): Likewise.
19531         (is_gimple_stmt): Likewise.
19532         (walk_stmt_load_store_addr_ops): Likewise.
19533         (gimple_build_cdt): Remove.
19534         * gimple.def (GIMPLE_CHANGE_DYNAMIC_TYPE): Remove.
19535         * gimple.h (gimple_cdt_new_type): Remove.
19536         (gimple_cdt_new_type_ptr): Likewise.
19537         (gimple_cdt_set_new_type): Likewise.
19538         (gimple_cdt_location): Likewise.
19539         (gimple_cdt_location_ptr): Likewise.
19540         (gimple_cdt_set_location): Likewise.
19541         * gimplify.c (gimplify_expr): Do not handle CHANGE_DYNAMIC_TYPE_EXPR.
19542         * tree-cfg.c (remove_useless_stmts_1): Do not handle
19543         GIMPLE_CHANGE_DYNAMIC_TYPE.
19544         (verify_types_in_gimple_stmt): Likewise.
19545         * tree-inline.c (estimate_num_insns): Likewise.
19546         (expand_call_inline): Do not copy DECL_NO_TBAA_P.
19547         (copy_decl_to_var): Likewise.
19548         (copy_result_decl_to_var): Likewise.
19549         * tree-pretty-print.c (dump_generic_node): Do not handle
19550         CHANGE_DYNAMIC_TYPE_EXPR.
19551         * tree-ssa-dce.c (mark_stmt_if_obviously_necessary): Likewise.
19552         * tree-ssa-operands.c (get_expr_operands): Likewise.
19553         * tree-ssa-structalias.c (struct variable_info): Remove
19554         no_tbaa_pruning member.
19555         (new_var_info): Do not set it based on DECL_NO_TBAA_P.
19556         (unify_nodes): Do not copy it.
19557         (find_func_aliases): Do not handle GIMPLE_CHANGE_DYNAMIC_TYPE.
19558         (dump_solution_for_var): Do not dump no_tbaa_pruning state.
19559         (set_uids_in_ptset): Do not check it.
19560         (find_what_var_points_to): Likewise.
19561         (compute_tbaa_pruning): Remove.
19562         (compute_points_to_sets): Do not call it.
19563         * tree.c (walk_tree_1): Do not handle CHANGE_DYNAMIC_TYPE_EXPR.
19564         * tree.def (CHANGE_DYNAMIC_TYPE_EXPR): Remove.
19565         * tree.h (CHANGE_DYNAMIC_TYPE_NEW_TYPE): Remove.
19566         (CHANGE_DYNAMIC_TYPE_LOCATION): Likewise.
19567         (DECL_NO_TBAA_P): Likewise.
19568         (struct tree_decl_common): Move no_tbaa_flag to unused flags section.
19569         * omp-low.c (copy_var_decl): Do not copy DECL_NO_TBAA_P.
19570         (expand_omp_atomic_pipeline): Do not set it.
19571         * print-tree.c (print_node): Do not dump it.
19572         * tree-ssa-copyrename.c (copy_rename_partition_coalesce): Remove
19573         redundant check.
19574
19575 2009-05-22 Vladimir Makarov <vmakarov@redhat.com>
19576
19577         PR target/39856
19578         * reg-stack.c (subst_stack_regs_pat): Remove gcc_assert for note
19579         for clobber.
19580
19581 2009-05-22  Mark Mitchell  <mark@codesourcery.com>
19582
19583         * tree.c (handle_dll_attribute): Mark dllexport'd inlines as
19584         non-external.
19585
19586 2009-05-22  Ben Elliston  <bje@au.ibm.com>
19587
19588         * Makefile.in (bversion.h, s-bversion): New targets.
19589         (TOPLEV_H): Add bversion.h.
19590         * toplev.h: Include "bversion.h".
19591         (ATTRIBUTE_GCC_DIAG): When building with checking disabled, use
19592         the __format__ attribute only if compiling with the same version
19593         of GCC as the sources (the "build version").
19594
19595 2009-05-22  Ben Elliston  <bje@au.ibm.com>
19596
19597         * c-format.c (handle_format_attribute): Fix comment typo.
19598
19599 2009-05-21  Steve Ellcey  <sje@cup.hp.com>
19600
19601         PR target/37846
19602         * config/ia64/ia64.opt (mfused-madd): New.
19603         * config/ia64/ia64.h (TARGET_DEFAULT): Set MASK_FUSED_MADD.
19604         * config/ia64/hpux.h (TARGET_DEFAULT): Ditto.
19605         * config/ia64/ia64.md (maddsf4, msubsf4, nmaddsf4,
19606         madddf4, madddf4_trunc, msubdf4, msubdf4_trunc, nmadddf4,
19607         nmadddf4_truncsf, maddxf4, maddxf4_truncsf, maddxf4_truncdf,
19608         msubxf4, msubxf4_truncsf msubxf4_truncdf, nmaddxf4,
19609         nmaddxf4_truncsf, nmaddxf4_truncdf): Check TARGET_FUSED_MADD.
19610         * config/ia64/vect.md (addv2sf3, subv2sf3): Force fpma/fpms
19611         instruction if !TARGET_FUSED_MADD.
19612         (fpma, fpms): Remove colon from name.
19613
19614 2009-05-22  Richard Guenther  <rguenther@suse.de>
19615
19616         * tree-ssa-sccvn.c (copy_reference_ops_from_ref): Record
19617         TMR_ORIGINAL.  Always either record TMR_SYMBOL or TMR_BASE.
19618         * tree-ssa-pre.c (create_component_ref_by_pieces_1): Handle
19619         TARGET_MEM_REF.
19620         (create_expression_by_pieces): Only convert if necessary.
19621         * gimplify.c (gimplify_expr): Handle TARGET_MEM_REF.
19622         * tree-ssa-loop-im.c (gen_lsm_tmp_name): Handle INTEGER_CST.
19623
19624 2009-05-21  Adam Nemet  <anemet@caviumnetworks.com>
19625
19626         * config/mips/mips.md (*extzv_trunc<mode>_exts): Turn into a
19627         regular pattern from a template and rename it ...
19628         (*extzv_truncsi_exts): ... to this.
19629
19630 2009-05-21  Richard Guenther  <rguenther@suse.de>
19631
19632         * cgraph.h (struct cgraph_node): Remove inline_decl member.
19633         * ipa-inline.c (cgraph_mark_inline_edge): Do not check it.
19634         (cgraph_default_inline_p): Likewise.
19635         (cgraph_decide_inlining_incrementally): Likewise.
19636
19637 2009-05-21  H.J. Lu  <hongjiu.lu@intel.com>
19638             Uros Bizjak  <ubizjak@gmail.com>
19639
19640         * config/i386/cpuid.h (bit_MOVBE): New.
19641
19642         * config/i386/driver-i386.c (host_detect_local_cpu): Check movbe.
19643
19644         * config/i386/i386.c (OPTION_MASK_ISA_MOVBE_SET): New.
19645         (OPTION_MASK_ISA_MOVBE_UNSET): Likewise.
19646         (ix86_handle_option): Handle OPT_mmovbe.
19647         (ix86_target_string): Add -mmovbe.
19648         (pta_flags): Add PTA_MOVBE.
19649         (processor_alias_table): Add PTA_MOVBE to "atom".
19650         (override_options): Handle PTA_MOVBE.
19651
19652         * config/i386/i386.h (TARGET_MOVBE): New.
19653
19654         * config/i386/i386.md (bswapsi2): Check TARGET_MOVBE.
19655         (*bswapsi_movbe): New.
19656         (*bswapdi_movbe): Likewise.
19657         (bswapdi2): Renamed to ...
19658         (*bswapdi_1): This.
19659         (bswapdi2): New expander.
19660
19661         * config/i386/i386.opt (mmovbe): New.
19662
19663         * doc/invoke.texi: Document -mmovbe.
19664
19665 2009-05-21  Taras Glek  <tglek@mozilla.com>
19666
19667         * plugin.c (try_init_one_plugin): Updated to new plugin_init API.
19668         * gcc-plugin.h (plugin_init): Updated signature.
19669         * gcc-plugin.h (plugin_name_args): Moved to this header.
19670         * doc/plugins.texi (plugin_init): Updated documention to reflect
19671         API change.
19672         * doc/plugins.texi (plugin_name_args): Added to documention.
19673
19674 2009-05-21  Mark Mitchell  <mark@codesourcery.com>
19675
19676         * config/arm/neon.md (*mul<mode>3add<mode>_neon): New pattern.
19677         (*mul<mode>3neg<mode>add<mode>_neon): Likewise.
19678
19679 2009-05-21  Shujing Zhao  <pearly.zhao@oracle.com>
19680
19681         * config/i386/i386.c: Use REG_P, MEM_P, CONST_INT_P, LABEL_P and
19682         JUMP_TABLE_DATA_P predicates where applicable.
19683         * config/i386/predicates.md: Ditto.
19684         * config/i386/sse.md: Ditto.
19685
19686 2009-05-21  Jakub Jelinek  <jakub@redhat.com>
19687
19688         * config/i386/i386.md (adddi_4_rex64, addsi_4, addhi_4): For
19689         operand2 -128 override length_immediate attribute to 1.
19690         * config/i386/predicates.md (constm128_operand): New predicate.
19691
19692         * config/i386/i386.c (memory_address_length): Handle %r12
19693         the same as %rsp and %r13 the same as %rbp.  For %rsp and %rbp
19694         also check REGNO.
19695         (ix86_attr_length_address_default): For MODE_SI lea in 64-bit
19696         mode look through optional ZERO_EXTEND and SUBREG.
19697         * config/i386/i386.md (R12_REG): New define_constant.
19698         (prefix_data16): For sse unit set also for MODE_TI insns.
19699         (prefix_rex): For -m32 always return 0.  For TYPE_IMOVX
19700         insns set if operand 1 is ext_QIreg_operand.
19701         (modrm): For TYPE_IMOV clear only if not MODE_DI.  For
19702         TYPE_{ALU{,1},ICMP,TEST} insn clear if there is non-shortened
19703         immediate.
19704         (*movdi_extzv_1, zero_extendhidi2, zero_extendqidi2): Change
19705         mode from MODE_DI to MODE_SI.
19706         (movdi_1_rex64): Override modrm and length_immediate attributes
19707         only for movabs (TYPE_IMOV, alternative 2).
19708         (zero_extendsidi2_rex64): Clear prefix_0f attribute if TYPE_IMOVX.
19709         (*float<SSEMODEI24:mode><MODEF:mode>2_mixed_interunit,
19710         *float<SSEMODEI24:mode><MODEF:mode>2_mixed_nointerunit,
19711         *float<SSEMODEI24:mode><MODEF:mode>2_sse_interunit,
19712         *float<SSEMODEI24:mode><MODEF:mode>2_sse_nointerunit): Set
19713         prefix_rex attribute if DImode.
19714         (*adddi_1_rex64, *adddi_2_rex64, *adddi_3_rex64, *adddi_5_rex64,
19715         *addsi_1, *addsi_1_zext, *addsi_2, *addsi_2_zext, *addsi_3,
19716         *addsi_3_zext, *addsi_5, *addhi_1_lea, *addhi_1, *addhi_2, *addhi_3,
19717         *addhi_5, *addqi_1_lea, *addqi_1): Override length_immediate
19718         attribute to 1 if TYPE_ALU and operand 2 is const128_operand.
19719         (pro_epilogue_adjust_stack_1, pro_epilogue_adjust_stack_rex64):
19720         Likewise.  For TYPE_IMOV clear length_immediate attribute.
19721         (*ashldi3_1_rex64, *ashldi3_cmp_rex64, *ashldi3_cconly_rex64,
19722         *ashlsi3_1, *ashlsi3_1_zext, *ashlsi3_cmp, **ashlsi3_cconly,
19723         *ashlsi3_cmp_zext, *ashlhi3_1_lea, *ashlhi3_1, *ashlhi3_cmp,
19724         *ashlhi3_cconly, *ashlqi3_1_lea, *ashlqi3_1, *ashlqi3_cmp,
19725         *ashlqi3_cconly): Override length_immediate attribute to 0 if TYPE_ALU
19726         or one operand TYPE_ISHIFT.
19727         (*ashrdi3_1_one_bit_rex64, *ashrdi3_one_bit_cmp_rex64,
19728         *ashrdi3_one_bit_cconly_rex64, *ashrsi3_1_one_bit,
19729         *ashrsi3_1_one_bit_zext, *ashrsi3_one_bit_cmp,
19730         *ashrsi3_one_bit_cconly, *ashrsi3_one_bit_cmp_zext,
19731         *ashrhi3_1_one_bit, *ashrhi3_one_bit_cmp, *ashrhi3_one_bit_cconly,
19732         *ashrqi3_1_one_bit, *ashrqi3_1_one_bit_slp, *ashrqi3_one_bit_cmp,
19733         *ashrqi3_one_bit_cconly, *lshrdi3_1_one_bit_rex64,
19734         *lshrdi3_cmp_one_bit_rex64, *lshrdi3_cconly_one_bit_rex64,
19735         *lshrsi3_1_one_bit, *lshrsi3_1_one_bit_zext, *lshrsi3_one_bit_cmp,
19736         *lshrsi3_one_bit_cconly, *lshrsi3_cmp_one_bit_zext,
19737         *lshrhi3_1_one_bit, *lshrhi3_one_bit_cmp, *lshrhi3_one_bit_cconly,
19738         *lshrqi3_1_one_bit, *lshrqi3_1_one_bit_slp, *lshrqi2_one_bit_cmp,
19739         *lshrqi2_one_bit_cconly, *rotlsi3_1_one_bit_rex64, *rotlsi3_1_one_bit,
19740         *rotlsi3_1_one_bit_zext, *rotlhi3_1_one_bit, *rotlqi3_1_one_bit_slp,
19741         *rotlqi3_1_one_bit, *rotrdi3_1_one_bit_rex64, *rotrsi3_1_one_bit,
19742         *rotrsi3_1_one_bit_zext, *rotrhi3_one_bit, *rotrqi3_1_one_bit,
19743         *rotrqi3_1_one_bit_slp): Override length_immediate attribute to 0,
19744         set mode attribute, don't override length attribute.
19745         (*btsq, *btrq, *btcq, *btdi_rex64, *btsi): Set prefix_0f attribute
19746         to 1.
19747         (return_internal_long): Set length attribute to 2 instead of 1.
19748         (*strmovqi_rex_1, *strsetqi_rex_1, *rep_stosqi_rex64,
19749         *cmpstrnqi_nz_rex_1, *cmpstrnqi_rex_1, *strlenqi_rex_1): Clear
19750         prefix_rex attribute.
19751         * config/i386/predicates.md (ext_QIreg_operand, const128_operand):
19752         New predicates.
19753         (memory_displacement_only_operand): Always return 0 for TARGET_64BIT.
19754
19755 2009-05-21  Ramana Radhakrishnan  <ramana.radhakrishnan@arm.com>
19756
19757         * config/arm/thumb2.md (orsi_notsi_si): Fix typo in pattern.
19758
19759 2009-05-20  Ian Lance Taylor  <iant@google.com>
19760
19761         * tree.c (build_tree_list_vec_stat): New function.
19762         (ctor_to_vec): New function.
19763         (build_nt_call_vec): New function.
19764         (build_call_array): Change args to be a const pointer.
19765         (build_call_vec): New function.
19766         * tree.h (build_nt_call_vec): Declare.
19767         (build_tree_list_vec_stat): Declare.
19768         (build_tree_list_vec): Define.
19769         (build_call_array): Update declaration.
19770         (build_call_vec): Declare.
19771         (ctor_to_vec): Declare.
19772         * c-common.c (tree_vector_cache): New static variable.
19773         (make_tree_vector): New function.
19774         (release_tree_vector): New function.
19775         (make_tree_vector_single): New function.
19776         (make_tree_vector_copy): New function.
19777         * c-common.h (tree_vector_cache, make_tree_vector): Declare.
19778         (make_tree_vector_single, make_tree_vector_copy): Declare.
19779         * c-parser.c (cached_expr_list_1, cached_expr_list_2): Remove.
19780         (c_parser_expr_list): Don't manage cache here, instead call
19781         make_tree_vector.
19782         (c_parser_release_expr_list): Remove static function.
19783         (c_parser_vec_to_tree_list): Remove static function.
19784         (c_parser_attributes): Call build_tree_list_vec instead of
19785         c_parser_vec_to_tree_list.  Call release_tree_vector instead of
19786         c_parser_release_expr_list.
19787         (c_parser_postfix_expression_after_primary): Likewise.
19788         (c_parser_objc_keywordexpr): Likewise.
19789
19790 2009-05-20  Sandra Loosemore  <sandra@codesourcery.com>
19791
19792         * doc/tm.texi (Misc): Document TARGET_INVALID_PARAMETER_TYPE,
19793         TARGET_INVALID_RETURN_TYPE, TARGET_PROMOTED_TYPE, and
19794         TARGET_CONVERT_TO_TYPE.
19795         * hooks.c (hook_tree_const_tree_null): Define.
19796         * hooks.h (hook_tree_const_tree_null): Declare.
19797         * target.h (struct gcc_target):  Add invalid_parameter_type,
19798         invalid_return_type, promoted_type, and convert_to_type fields.
19799         * target-def.h (TARGET_INVALID_PARAMETER_TYPE): Define.
19800         (TARGET_INVALID_RETURN_TYPE): Define.
19801         (TARGET_PROMOTED_TYPE): Define.
19802         (TARGET_CONVERT_TO_TYPE): Define.
19803         (TARGET_INITIALIZER): Update for new fields.
19804         * c-decl.c (grokdeclarator): Check targetm.invalid_return_type.
19805         (grokparms): Check targetm.invalid_parameter_type.
19806         * c-typeck.c (default_conversion): Check targetm.promoted_type.
19807         * c-convert.c (convert): Check targetm.convert_to_type.
19808
19809 2009-05-20  Adam Nemet  <anemet@caviumnetworks.com>
19810
19811         * config/mips/mips.md (*extenddi_truncate<mode>,
19812         *extendsi_truncate<mode>): Emit exts if supported.  Add attribute
19813         defintions.
19814         (*extendhi_truncateqi): New define_insn_and_sptit.
19815
19816 2009-05-20  Jakub Jelinek  <jakub@redhat.com>
19817
19818         PR middle-end/40204
19819         * fold-const.c (fold_binary) <case BIT_AND_EXPR>: Avoid infinite
19820         recursion if build_int_cst_type returns the same INTEGER_CST as arg1.
19821
19822 2009-05-20  Eric Botcazou  <ebotcazou@adacore.com>
19823
19824         * fold-const.c (build_fold_addr_expr_with_type): Take the address of
19825         the operand of VIEW_CONVERT_EXPR.
19826
19827 2009-05-20  H.J. Lu  <hongjiu.lu@intel.com>
19828
19829         * config/i386/driver-i386.c (host_detect_local_cpu): Check
19830         extended family and model for Intel processors.  Support Intel Atom.
19831
19832 2009-05-20  Olivier Hainque  <hainque@adacore.com>
19833
19834         * gstab.h (stab_code_type): Define, to be used instead of the
19835         __stab_debug_code enum, made anonymous.  Add 2009 to the copyright
19836         notice.
19837         * dbxout.c (STAB_CODE_TYPE): Remove #define and replace use
19838         occurrences by stab_code_type.
19839         * mips-tfile.c (STAB_CODE_TYPE): Remove #define, unused.
19840
19841 2009-05-20  Martin Jambor  <mjambor@suse.cz>
19842
19843         * tree-flow.h (insert_edge_copies_seq): Undeclare.
19844         (sra_insert_before): Likewise.
19845         (sra_insert_after): Likewise.
19846         (sra_init_cache): Likewise.
19847         (sra_type_can_be_decomposed_p): Likewise.
19848         * tree-mudflap.c (insert_edge_copies_seq): Copied here from tree-sra.c
19849         * tree-sra.c (sra_type_can_be_decomposed_p): Made static.
19850         (sra_insert_before): Likewise.
19851         (sra_insert_after): Likewise.
19852         (sra_init_cache): Likewise.
19853         (insert_edge_copies_seq): Made static and moved upwards.
19854
19855         * tree-complex.c (extract_component): Added VIEW_CONVERT_EXPR switch
19856         case.
19857
19858         * tree-flow-inline.h (contains_view_convert_expr_p): New function.
19859
19860         * ipa-prop.c (get_ssa_def_if_simple_copy): New function.
19861         (determine_cst_member_ptr): Call get_ssa_def_if_simple_copy to skip
19862         simple copies.
19863
19864 2009-05-20  Richard Guenther  <rguenther@suse.de>
19865
19866         * expr.c (expand_expr_real_1): Avoid calling do_store_flag
19867         with mismatched comparison modes.
19868
19869 2009-05-20  Ramana Radhakrishnan  <ramana.radhakrishnan@arm.com>
19870
19871         * config/arm/arm.md (*arm_iorsi3): Refactored for only ARM.
19872         (peephole ior (reg, int) -> mov, ior): Refactored for only ARM.
19873         * config/arm/thumb2.md (*thumb_andsi_not_shiftsi_si): Allow bic
19874         with shifts for Thumb2.
19875         (orsi_notsi): New for orn.
19876         (*thumb_orsi_notshiftsi_si): Allow orn with shifts.
19877         (*thumb2_iorsi3): Rewrite support for iorsi for Thumb2.
19878         * config/arm/arm.c (const_ok_for_op): Split case for IOR for Thumb2.
19879         (arm_gen_constant): Set can_invert for IOR and Thumb2, Add comments.
19880         Don't invert remainder for IOR.
19881
19882 2009-05-19  Zdenek Dvorak  <ook@ucw.cz>
19883
19884         PR tree-optimization/40087
19885         * tree-ssa-loop-niter.c (number_of_iterations_ne_max,
19886         number_of_iterations_ne): Rename never_infinite argument.
19887         (number_of_iterations_lt_to_ne, number_of_iterations_lt,
19888         number_of_iterations_le): Handle pointer-type ivs when
19889         exit_must_be_taken is false.
19890         (number_of_iterations_cond):  Do not always assume that
19891         exit_must_be_taken if the control variable is a pointer.
19892
19893 2009-05-19  Andrew Pinski  <andrew_pinski@playstation.sony.com>
19894
19895         * c-typeck.c (build_binary_op): Allow % on integal vectors.
19896         * doc/extend.texi (Vector Extension): Document that % is allowed too.
19897
19898 2009-05-19  H.J. Lu  <hongjiu.lu@intel.com>
19899
19900         * config/i386/i386.c (ix86_avoid_jump_mispredicts): Check
19901         ASM_OUTPUT_MAX_SKIP_PAD instead of ASM_OUTPUT_MAX_SKIP_ALIGN.
19902
19903 2009-05-19  Manuel López-Ibáñez  <manu@gcc.gnu.org>
19904
19905         PR c/40172
19906         * c.opt (Wlogical-op): Disabled by default.
19907         * c-opt (c_common_post_options): Do not enable Wlogical-op with
19908         Wextra.
19909         * doc/invoke.texi (Wlogical-op): Likewise.
19910
19911 2009-05-19  Eric Botcazou  <ebotcazou@adacore.com>
19912
19913         * tree-scalar-evolution.c (follow_ssa_edge_expr) <NOP_EXPR>: Turn
19914         into CASE_CONVERT.
19915         <PLUS_EXPR>: Strip useless type conversions instead of type nops.
19916         Propagate the type of the first operand.
19917         <ASSERT_EXPR>: Simplify.
19918         (follow_ssa_edge_in_rhs): Use gimple_expr_type to get the type.
19919         Rewrite using the RHS code as discriminant.
19920         <NOP_EXPR>: Turn into CASE_CONVERT.
19921         <PLUS_EXPR>: Propagate the type of the first operand.
19922
19923 2009-05-19  Steve Ellcey  <sje@cup.hp.com>
19924
19925         * config/ia64/ia64-protos.h (ia64_dconst_0_5): New.
19926         (ia64_dconst_0_375): New.
19927         * config/ia64/ia64.c (ia64_override_options): Remove
19928         -minline-sqrt-min-latency warning.
19929         (ia64_dconst_0_5_rtx, ia64_dconst_0_5): New.
19930         (ia64_dconst_0_375_rtx, ia64_dconst_0_375): New
19931         * config/ia64/ia64.md (*sqrt_approx): Remove.
19932         (sqrtsf2): Remove #if 0.
19933         (sqrtsf2_internal_thr): Rewrite and move to div.md.
19934         (sqrtdf): Remove assert.
19935         (sqrtdf2_internal_thr): Rewrite and move to div.md.
19936         (sqrtxf2): Remove #if 0.
19937         (sqrtxf2_internal_thr): Rewrite and move to div.md.
19938         * div.md (sqrt_approx_rf): New.
19939         (sqrtsf2_internal_thr): New implementation.
19940         (sqrtsf2_internal_lat): New.
19941         (sqrtdf2_internal_thr: New implementation.
19942         (sqrtxf2_internal): New implementation.
19943
19944 2009-05-19  Francois-Xavier Coudert  <fxcoudert@gmail.com>
19945             Hans-Peter Nilsson  <hp@axis.com>
19946
19947         * defaults.h (UINT_FAST64_TYPE, INTPTR_TYPE, UINTPTR_TYPE)
19948         (WCHAR_TYPE, MODIFIED_WCHAR_TYPE, PTRDIFF_TYPE, WINT_TYPE)
19949         (INTMAX_TYPE, UINTMAX_TYPE, SIG_ATOMIC_TYPE, INT8_TYPE, INT16_TYPE)
19950         (INT32_TYPE, INT64_TYPE, UINT8_TYPE, UINT16_TYPE, UINT32_TYPE)
19951         (UINT64_TYPE, INT_LEAST8_TYPE, INT_LEAST16_TYPE, INT_LEAST32_TYPE)
19952         (INT_LEAST64_TYPE, UINT_LEAST8_TYPE, UINT_LEAST16_TYPE)
19953         (UINT_LEAST32_TYPE, UINT_LEAST64_TYPE, INT_FAST8_TYPE)
19954         (INT_FAST16_TYPE, INT_FAST32_TYPE, INT_FAST64_TYPE)
19955         (UINT_FAST8_TYPE, UINT_FAST16_TYPE, UINT_FAST32_TYPE)
19956         (SIZE_TYPE, PID_TYPE, CHAR16_TYPE, CHAR32_TYPE): Move defaults here...
19957         * c-common.c: ...from here.
19958
19959 2009-05-19  Manuel López-Ibáñez  <manu@gcc.gnu.org>
19960
19961         * c-common.c (warn_logical_operator): Remove unnecessary conditionals.
19962
19963 2009-05-19  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
19964
19965         * builtins.c (do_mpc_arg1): Separate MPFR/MPC C rounding types.
19966
19967 2009-05-19  Ben Elliston  <bje@au.ibm.com>
19968
19969         * unwind-dw2-fde.c (fde_unencoded_compare): Replace type punning
19970         assignments with memcpy calls.
19971         (add_fdes): Likewise.
19972         (binary_search_unencoded_fdes): Likewise.
19973         (linear_search_fdes): Eliminate type puns.
19974
19975 2009-05-19  Richard Guenther  <rguenther@suse.de>
19976
19977         * tree-ssa-forwprop.c (forward_propagate_addr_expr_1): Do
19978         not falsely claim to have propagated into all uses.
19979
19980 2009-05-19  Ben Elliston  <bje@au.ibm.com>
19981
19982         * doc/invoke.texi (C Dialect Options): Update OpenMP specification
19983         version to v3.0.
19984
19985 2009-05-18  Kaz Kojima  <kkojima@gcc.gnu.org>
19986
19987         * config/sh/sh-protos.h (sh_legitimate_address_p): Remove.
19988         * config/sh/sh.c (sh_legitimate_address_p): Make static.
19989         (TARGET_LEGITIMATE_ADDRESS_P): New.
19990         * config/sh/sh.h (GO_IF_LEGITIMATE_ADDRESS): Delete.
19991         * config/sh/sh.md: Clean up references to GO_IF_LEGITIMATE_ADDRESS.
19992
19993 2009-05-18  Dodji Seketeli  <dodji@redhat.com>
19994
19995         PR debug/40109
19996         * dwarf2out.c (gen_type_die_with_usage): Generate the DIE as a
19997         child of the containing namespace's DIE.
19998
19999 2009-05-18  Adam Nemet  <anemet@caviumnetworks.com>
20000
20001         * config/mips/mips.md (*zero_extend<GPR:mode>_trunc<SHORT:mode>,
20002         *zero_extendhi_truncqi):  Move after the zero_extend patterns.
20003         (*extenddi_truncate<mode>, *extendsi_truncate<mode>): Move after the
20004         extend patterns.
20005
20006 2009-05-18  H.J. Lu  <hongjiu.lu@intel.com>
20007
20008         PR target/39942
20009         * config/i386/i386.c (ix86_avoid_jump_misspredicts): Replace
20010         gen_align with gen_pad.
20011         (ix86_reorg): Check ASM_OUTPUT_MAX_SKIP_PAD instead of
20012         #ifdef ASM_OUTPUT_MAX_SKIP_ALIGN.
20013
20014         * config/i386/i386.h (ASM_OUTPUT_MAX_SKIP_PAD): New.
20015         * config/i386/x86-64.h (ASM_OUTPUT_MAX_SKIP_PAD): Likewise.
20016
20017         * config/i386/i386.md (align): Renamed to ...
20018         (pad): This.  Replace ASM_OUTPUT_MAX_SKIP_ALIGN with
20019         ASM_OUTPUT_MAX_SKIP_PAD.
20020
20021 2009-05-18  Andreas Schwab  <schwab@linux-m68k.org>
20022
20023         * config.gcc: Fix variable syntax.
20024
20025         PR target/39531
20026         * config/m68k/m68k.c (output_andsi3): Mask off sign bit copies
20027         before calling exact_log2.
20028         (output_iorsi3): Likewise.
20029         (output_xorsi3): Likewise.
20030
20031 2009-05-18  Kaz Kojima  <kkojima@gcc.gnu.org>
20032
20033         * config/sh/sh.c (expand_cbranchdi4): Use a scratch register
20034         for the none zero constant operand except for EQ and NE
20035         comprisons even when the first operand is R0.
20036
20037 2009-05-18  Andreas Krebbel  <krebbel1@de.ibm.com>
20038
20039         * config/s390/2064.md: Remove trailing whitespaces.
20040         * config/s390/2084.md: Likewise.
20041         * config/s390/constraints.md: Likewise.
20042         * config/s390/fixdfdi.h: Likewise.
20043         * config/s390/libgcc-glibc.ver: Likewise.
20044         * config/s390/s390-modes.def: Likewise.
20045         * config/s390/s390-protos.h: Likewise.
20046         * config/s390/s390.c: Likewise.
20047         * config/s390/s390.h: Likewise.
20048         * config/s390/s390.md: Likewise.
20049         * config/s390/tpf-unwind.h: Likewise.
20050
20051 2009-05-18  Maxim Kuvyrkov  <maxim@codesourcery.com>
20052
20053         * config/m68k/m68k.c (m68k_legitimize_address): Fix typo in signature.
20054
20055 2009-05-18  Maxim Kuvyrkov  <maxim@codesourcery.com>
20056
20057         M68K TLS support.
20058         * configure.ac (m68k-*-*): Check if binutils support TLS.
20059         * configure: Regenerate.
20060         * config/m68k/predicates.md (symbolic_operand): Extend comment.
20061         * config/m68k/constraints.md (Cu): New constraint.
20062         * config/m68k/m68k.md (UNSPEC_GOTOFF): Remove.
20063         (UNSPEC_RELOC16, UNSPEC_RELOC32): New constants.
20064         (movsi): Handle TLS symbols.
20065         (addsi3_5200): Handle XTLS symbols, indent.
20066         * config/m68k/m68k-protos.h (m68k_legitimize_tls_address): Declare.
20067         (m68k_tls_reference_p): Declare.
20068         (m68k_legitimize_address): Declare.
20069         (m68k_unwrap_symbol): Declare.
20070         * config/m68k/m68k.opt (mxtls): New option.
20071         * config/m68k/m68k.c (ggc.h): Include.
20072         (m68k_output_dwarf_dtprel): Implement hook.
20073         (TARGET_HAVE_TLS, TARGET_ASM_OUTPUT_DWARF_DTPREL): Define.
20074         (m68k_expand_prologue): Load GOT pointer when function needs it.
20075         (m68k_illegitimate_symbolic_constant_p): Handle TLS symbols.
20076         (m68k_legitimate_constant_address_p): Same.
20077         (m68k_decompose_address): Handle TLS references.
20078         (m68k_get_gp): New static function.
20079         (enum m68k_reloc): New contants.
20080         (TLS_RELOC_P): New macro.
20081         (m68k_wrap_symbol): New static function.
20082         (m68k_unwrap_symbol): New function.
20083         (m68k_final_prescan_insn_1): New static function.
20084         (m68k_final_prescan_insn): New function.
20085         (m68k_move_to_reg, m68k_wrap_symbol_into_got_ref): New static
20086         functions.
20087         (legitimize_pic_address): Handle TLS references..
20088         (m68k_tls_get_addr, m68k_get_tls_get_addr)
20089         (m68k_libcall_value_in_a0_p)
20090         (m68k_call_tls_get_addr, m68k_read_tp, m68k_get_m68k_read_tp)
20091         (m68k_call_m68k_read_tp): Helper variables and functions for ...
20092         (m68k_legitimize_tls_address): Handle TLS references.
20093         (m68k_tls_symbol_p, m68k_tls_reference_p_1, m68k_tls_reference_p):
20094         New functions.
20095         (m68k_legitimize_address): Handle TLS symbols.
20096         (m68k_get_reloc_decoration): New static function.
20097         (m68k_output_addr_const_extra): Handle UNSPEC_RELOC16 and
20098         UNSPEC_RELOC32.
20099         (m68k_output_dwarf_dtprel): Implement hook.
20100         (print_operand_address): Handle UNSPEC_RELOC16 adn UNSPEC_RELOC32.
20101         (m68k_libcall_value): Return result in A0 instead of D0 when asked by
20102         m68k_call_* routines.
20103         (sched_attr_op_type): Handle TLS symbols.
20104         (gt-m68k.h): Include.
20105         * config/m68k/m68k.h (FINAL_PRESCAN_INSN): Define.
20106         (LEGITIMATE_PIC_OPERAND_P): Support TLS.
20107
20108 2009-05-18  Martin Jambor  <mjambor@suse.cz>
20109
20110         * ipa-prop.c (ipa_check_stmt_modifications): Removed.
20111         (visit_store_addr_for_mod_analysis): New function.
20112         (ipa_detect_param_modifications): Use walk_stmt_load_store_addr_ops.
20113         (determine_cst_member_ptr): Use gimple_assign_single_p.
20114         (ipa_get_stmt_member_ptr_load_param): Use gimple_assign_single_p.
20115         (ipa_analyze_call_uses): Use !gimple_assign_rhs2 rather than number of
20116         operands.  Don't check number of operands of a NOP_EXPR.
20117
20118 2009-05-18  Eric Fisher  <joefoxreal@gmail.com>
20119
20120         * doc/tree-ssa.texi (SSA Operands): Fix a mistake.
20121
20122 2009-05-17  Manuel López-Ibáñez  <manu@gcc.gnu.org>
20123
20124         PR c/40172
20125         * c-common.c (warn_logical_operator): Don't warn if one of
20126         expression isn't always true or false.
20127
20128 2009-05-17  Kai Tietz  <kai.tietz@onevision.com>
20129
20130         * config/i386/biarch32.h: New file.
20131         * config.gcc: Add for target i386-w64-* the biarch32.h to tm_file.
20132
20133 2009-05-17  Adam Nemet  <anemet@caviumnetworks.com>
20134
20135         * config/mips/mips.md (*zero_extend<mode>_trunchi,
20136         *zero_extend<mode>_truncqi): Merge these into ...
20137         (*zero_extend<GPR:mode>_trunc<SHORT:mode>): ... this new pattern.
20138         Name the pattern following this as *zero_extendhi_truncqi.
20139
20140 2009-05-16  Brad Lucier  <lucier@math.purdue.edu>
20141
20142         PR middle-end/39301
20143         * hwint.h: Add macro HOST_WIDEST_INT_PRINT.
20144         * bitmap.c (bitmap_descriptor): Make fields HOST_WIDEST_INT.
20145         (output_info): Make field HOST_WIDEST_INT.
20146         (print_statistics): Use HOST_WIDEST_INT_PRINT.
20147         (dump_bitmat_statistics): Same.
20148
20149 2009-05-16  Francois-Xavier Coudert  <fxcoudert@gmail.com>
20150
20151         * config.gcc (use_gcc_stdint):  Set to wrap.
20152         * config/darwin.h (SIG_ATOMIC_TYPE, INT8_TYPE, INT16_TYPE,
20153         INT32_TYPE, INT64_TYPE, UINT8_TYPE, UINT16_TYPE, UINT32_TYPE,
20154         UINT64_TYPE, INT_LEAST8_TYPE, INT_LEAST16_TYPE, INT_LEAST32_TYPE,
20155         INT_LEAST64_TYPE, UINT_LEAST8_TYPE, UINT_LEAST16_TYPE,
20156         UINT_LEAST32_TYPE, UINT_LEAST64_TYPE, INT_FAST8_TYPE,
20157         INT_FAST16_TYPE, INT_FAST32_TYPE, INT_FAST64_TYPE,
20158         UINT_FAST8_TYPE, UINT_FAST16_TYPE, UINT_FAST32_TYPE,
20159         UINT_FAST64_TYPE, INTPTR_TYPE, UINTPTR_TYPE): Define.
20160
20161 2009-05-16  Joseph Myers  <joseph@codesourcery.com>
20162
20163         * config.gcc (mips*-*-*): Support arch_32, arch_64, tune_32 and
20164         tune_64.
20165         * config/mips/mips.h (MIPS_ABI_DEFAULT, MULTILIB_ABI_DEFAULT):
20166         Move definitions earlier.
20167         (OPT_ARCH64, OPT_ARCH32): Define.
20168         (OPTION_DEFAULT_SPECS): Add entries for arch_32, arch_64, tune_32
20169         and tune_64.
20170
20171 2009-05-16  Richard Earnshaw  <rearnsha@arm.com>
20172
20173         PR target/40153
20174         * arm.md (cstoresi_nltu_thumb1): Use a neg of ltu as the pattern name
20175         implies.
20176
20177 2009-05-16  Richard Earnshaw  <rearnsha@arm.com>
20178
20179         * arm.md (movdi2): Copy non-reg values to DImode registers.
20180
20181 2009-05-16  Jakub Jelinek  <jakub@redhat.com>
20182
20183         PR target/39942
20184         * final.c (label_to_max_skip): New function.
20185         (label_to_alignment): Only use LABEL_TO_ALIGNMENT if
20186         CODE_LABEL_NUMBER <= max_labelno.
20187         * output.h (label_to_max_skip): New prototype.
20188         * config/i386/i386.c (ix86_avoid_jump_misspredicts): Renamed to...
20189         (ix86_avoid_jump_mispredicts): ... this.  Don't define if
20190         ASM_OUTPUT_MAX_SKIP_ALIGN isn't defined.  Update comment.
20191         Handle CODE_LABELs with >= 16 byte alignment or with
20192         max_skip == (1 << align) - 1.
20193         (ix86_reorg): Don't call ix86_avoid_jump_mispredicts if
20194         ASM_OUTPUT_MAX_SKIP_ALIGN isn't defined.
20195
20196         PR target/39942
20197         * config/i386/x86-64.h (ASM_OUTPUT_MAX_SKIP_ALIGN): Don't emit second
20198         .p2align 3 if MAX_SKIP is smaller than 7.
20199         * config/i386/linux.h (ASM_OUTPUT_MAX_SKIP_ALIGN): Likewise.
20200
20201 2009-05-15  Ian Lance Taylor  <iant@google.com>
20202
20203         * alias.c (struct alias_set_entry_d): Rename from struct
20204         alias_set_entry.  Change all uses.
20205         * except.c (struct call_site_record_d): Rename from struct
20206         call_site_record.  Change all uses.
20207         * except.h (struct eh_region_d): Rename from struct eh_region.
20208         Change all uses.
20209         * gcse.c (struct hash_table_d): Rename from struct hash_table.
20210         Change all uses.
20211         * graphite.c (struct ivtype_map_elt_d): Rename fromstruct
20212         ivtype_map_elt.  Change all uses.
20213         (struct rename_map_elt_d): Rename fromstruct rename_map_elt.
20214         Change all uses.
20215         (struct ifsese_d): Rename fromstruct ifsese.  Change all uses.
20216         * graphite.h (struct name_tree_d): Rename from struct name_tree.
20217         Change all uses.
20218         (struct sese_d): Rename from struct sese.  Change all uses.
20219         * omega.h (struct eqn_d): Rename from struct eqn.  Change all uses.
20220         (struct omega_pb_d): Rename from struct omega_pb.  Change all uses.
20221         * optabs.h (struct optab_d): Rename from struct optab.  Change all
20222         uses.
20223         (struct convert_optab_d): Rename from struct convert_optab.
20224         Change all uses.
20225         * tree-pass.h (struct ipa_opt_pass_d): Rename fromstruct
20226         ipa_opt_pass.  Change all uses.
20227         * tree-predcom.c (struct dref_d): Rename from struct dref.  Change
20228         all uses.
20229
20230         * c-decl.c (pushtag): If -Wc++-compat, warn if the tag is already
20231         defined as a typedef.
20232         (grokdeclarator): If -Wc++-compat, warn if a typedef is already
20233         defined as a tag.
20234
20235 2009-05-15  Manuel López-Ibáñez  <manu@gcc.gnu.org>
20236
20237         PR 16302
20238         * fold-const.c (make_range,build_range_check,merge_ranges): Move
20239         declaration to...
20240         (merge_ranges): Returns bool.
20241         * tree.h (make_range): .. to here.
20242         (build_range_check): Likewise.
20243         (merge_ranges): Likewise. Renamed from merge_ranges.
20244         * c-typeck.c (parser_build_binary_op): Update calls to
20245         warn_logical_operator.
20246         * c-common.c (warn_logical_operator): Add new warning.
20247         * c-common.h (warn_logical_operator): Update declaration.
20248
20249 2009-05-15  Manuel López-Ibáñez  <manu@gcc.gnu.org>
20250
20251         * ira-conflicts.c (add_insn_allocno_copies): Fix wrong conditional.
20252
20253 2009-05-15  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
20254
20255         * doc/install.texi: Document MPC requirements, flags etc.
20256
20257         * builtins.c (do_mpc_arg1, fold_builtin_ccos): New.
20258         (fold_builtin_cexp): Ensure we get a complex REAL_TYPE.
20259         Evaluate constant arguments.
20260         (fold_builtin_carg): Ensure we get a complex REAL_TYPE.
20261         (fold_builtin_1): Likewise, also evaluate constant arguments.
20262         Remove superfluous break.
20263         (do_mpc_ckconv): New.
20264         * real.h: Include mpc.h.
20265         * toplev.c (print_version): Output MPC version info if available.
20266
20267 2009-05-15  Sandra Loosemore  <sandra@codesourcery.com>
20268
20269         * fold-const.c (fold_convert_const_real_from_real): Check for overflow.
20270
20271 2009-05-15  H.J. Lu  <hongjiu.lu@intel.com>
20272
20273         * config/i386/i386.c (ix86_reorg): Call optimize_function_for_speed_p
20274         only once.
20275
20276 2009-05-15  Jan Hubicka  <jh@suse.cz>
20277
20278         * doc/invoke.texi (max-early-inliner-iterations): New flag.
20279         * ipa-inline.c (enum inlining_mode): New INLINE_SIZE_NORECURSIVE.
20280         (try_inline): Fix return value.
20281         (cgraph_decide_inlining_incrementally): Honor new value.
20282         (cgraph_early_inlining): Handle indirect inlining.
20283         * params.def (PARAM_EARLY_INLINER_MAX_ITERATIONS): New.
20284
20285 2009-05-15  Jan Hubicka  <jh@suse.cz>
20286
20287         * cgraph.h (struct cgraph_node): Add finalized_by_frotnend flag.
20288         * cgraphunit.c (cgraph_finalize_function): Set it.
20289         (cgraph_expand_function): Use it.
20290
20291 2009-05-15  Sandra Loosemore  <sandra@codesourcery.com>
20292
20293         * real.c (encode_ieee_half): Define.
20294         (decode_ieee_half): Define.
20295         (ieee_half_format): Define.
20296         (arm_half_format): Define.
20297         * real.h (ieee_half_format): Declare.
20298         (arm_half_format): Declare.
20299
20300 2009-05-15  Sandra Loosemore  <sandra@codesourcery.com>
20301
20302         * optabs.c (prepare_float_lib_cmp):  Test that the comparison,
20303         swapped, and reversed optabs exist before trying to use them.
20304
20305 2009-05-15  Paul Brook  <paul@codesourcery.com>
20306             Sandra Loosemore  <sandra@codesourcery.com>
20307
20308         * config/arm/arm.c (neon_vector_mem_operand): Handle element/structure
20309         loads.  Allow PRE_DEC.
20310         (output_move_neon): Handle PRE_DEC.
20311         (arm_print_operand): Add 'A' for neon structure loads.
20312         * config/arm/arm-protos.h (neon_vector_mem_operand): Update prototype.
20313         * config/arm/neon.md (neon_mov): Update comment.
20314         * config/arm/constraints.md (Un, Us): Update neon_vector_mem_operand
20315         calls.
20316         (Um): New constraint.
20317
20318 2009-05-15  Jan Hubicka  <jh@suse.cz>
20319
20320         Revert the following patch until testsuite fallout is fixed:
20321         * cgraph.c (dump_cgraph_node): Dump size/time/benefit.
20322         * cgraph.h (struct inline_summary): New filed self_wize,
20323         size_inlining_benefit, self_time and time_inlining_benefit.
20324         (struct cgraph_global_info): Replace insns by time ans size fields.
20325         * ipa-cp (ipcp_cloning_candidate_p): Base estimate on size
20326         (ipcp_estimate_growth, ipcp_insert_stage): Likewise.
20327         (ipcp_update_callgraph): Do not touch function bodies.
20328         * ipa-inline.c: Include except.h
20329         (MAX_TIME): New constant.
20330         (overall_insns): Remove
20331         (overall_size, max_benefit): New static variables.
20332         (cgraph_estimate_time_after_inlining): New function.
20333         (cgraph_estimate_size_after_inlining): Rewrite using benefits.
20334         (cgraph_clone_inlined_nodes): Update size.
20335         (cgraph_mark_inline_edge): Update size.
20336         (cgraph_estimate_growth): Use size info.
20337         (cgraph_check_inline_limits): Check size.
20338         (cgraph_default_inline_p): Likewise.
20339         (cgraph_edge_badness): Compute badness based on benefit and size cost.
20340         (cgraph_decide_recursive_inlining): Check size.
20341         (cgraph_decide_inlining_of_small_function): Update size; dump sizes
20342         and times.
20343         (cgraph_decide_inlining): Likewise.
20344         (cgraph_decide_inlining_incrementally): Likewise; honor
20345         PARAM_EARLY_INLINING_INSNS.
20346         (likely_eliminated_by_inlining_p): New predicate.
20347         (estimate_function_body_sizes): New function.
20348         (compute_inline_parameters): Use it.
20349         * except.c (must_not_throw_labels): New function.
20350         * except.h (must_not_throw_labels): Declare.
20351         * tree-inline.c (init_inline_once): Kill inlining_weigths
20352         * tree-ssa-structalias.c: Avoid uninitialized warning.
20353         * params.def (PARAM_MAX_INLINE_INSNS_SINGLE): Reduce to 300.
20354         (PARAM_MAX_INLINE_INSNS_AUTO): Reduce to 60.
20355         (PARAM_INLINE_CALL_COST): Remove.
20356         (PARAM_EARLY_INLINING_INSNS): New.
20357
20358 2009-05-15  Richard Guenther  <rguenther@suse.de>
20359
20360         * tree-ssa-pre.c (eliminate): Use TODO_update_ssa_only_virtuals,
20361         not TODO_update_ssa.
20362
20363 2009-05-15  Richard Guenther  <rguenther@suse.de>
20364
20365         PR tree-optimization/39999
20366         * gimple.h (gimple_expr_type): Use the expression type looking
20367         through useless conversions.
20368         * tree-ssa-sccvn.c (vn_nary_op_lookup_stmt): Use gimple_expr_type.
20369         (vn_nary_op_insert_stmt): Likewise.
20370         (simplify_binary_expression): Likewise.
20371
20372 2009-05-15  Richard Guenther  <rguenther@suse.de>
20373
20374         * common.opt (-ftree-forwprop, -ftree-phiprop, -ftree-pta):
20375         New options, enabled by default.
20376         * doc/invoke.texi (-ftree-forwprop, -ftree-phiprop, -ftree-pta):
20377         Document.
20378         * tree-ssa-forwprop.c (gate_forwprop): Use flag_tree_forwprop.
20379         * tree-ssa-phiprop.c (gate_phiprop): Use flag_tree_phiprop.
20380         * tree-ssa-structalias.c (gate_tree_pta): New function.
20381         (pass_build_alias): Use it.
20382
20383 2009-05-15  Joseph Myers  <joseph@codesourcery.com>
20384
20385         * tree-ssa-forwprop.c (forward_propagate_addr_expr_1): Also
20386         recurse on an invariant address if a conversion from a pointer
20387         type to a wider integer type is involved.
20388
20389 2009-05-15  Jan Hubicka  <jh@suse.cz>
20390
20391         * cgraph.c (dump_cgraph_node): Dump size/time/benefit.
20392         * cgraph.h (struct inline_summary): New filed self_wize,
20393         size_inlining_benefit, self_time and time_inlining_benefit.
20394         (struct cgraph_global_info): Replace insns by time ans size fields.
20395         * ipa-cp (ipcp_cloning_candidate_p): Base estimate on size
20396         (ipcp_estimate_growth, ipcp_insert_stage): Likewise.
20397         (ipcp_update_callgraph): Do not touch function bodies.
20398         * ipa-inline.c: Include except.h
20399         (MAX_TIME): New constant.
20400         (overall_insns): Remove
20401         (overall_size, max_benefit): New static variables.
20402         (cgraph_estimate_time_after_inlining): New function.
20403         (cgraph_estimate_size_after_inlining): Rewrite using benefits.
20404         (cgraph_clone_inlined_nodes): Update size.
20405         (cgraph_mark_inline_edge): Update size.
20406         (cgraph_estimate_growth): Use size info.
20407         (cgraph_check_inline_limits): Check size.
20408         (cgraph_default_inline_p): Likewise.
20409         (cgraph_edge_badness): Compute badness based on benefit and size cost.
20410         (cgraph_decide_recursive_inlining): Check size.
20411         (cgraph_decide_inlining_of_small_function): Update size; dump sizes
20412         and times.
20413         (cgraph_decide_inlining): Likewise.
20414         (cgraph_decide_inlining_incrementally): Likewise; honor
20415         PARAM_EARLY_INLINING_INSNS.
20416         (likely_eliminated_by_inlining_p): New predicate.
20417         (estimate_function_body_sizes): New function.
20418         (compute_inline_parameters): Use it.
20419         * except.c (must_not_throw_labels): New function.
20420         * except.h (must_not_throw_labels): Declare.
20421         * tree-inline.c (init_inline_once): Kill inlining_weigths
20422         * tree-ssa-structalias.c: Avoid uninitialized warning.
20423         * params.def (PARAM_MAX_INLINE_INSNS_SINGLE): Reduce to 300.
20424         (PARAM_MAX_INLINE_INSNS_AUTO): Reduce to 60.
20425         (PARAM_INLINE_CALL_COST): Remove.
20426         (PARAM_EARLY_INLINING_INSNS): New.
20427         doc/invoke.texi (max-inline-insns-auto, early-inlining-insns): Update.
20428         (inline-call-cost): Remove.
20429         (early-inlining-insns): New.
20430
20431 2009-05-15  Eric Botcazou  <ebotcazou@adacore.com>
20432
20433         * dbxout.c (dbxout_range_type): Add LOW and HIGH parameters.  Use them
20434         for bounds.
20435         (print_int_cst_bounds_in_octal_p): Likewise.
20436         (dbxout_type): Adjust calls to above functions.  Be prepared to deal
20437         with subtypes.
20438         * dwarf2out.c (base_type_die): Likewise.
20439         (is_subrange_type): Delete.
20440         (subrange_type_die): Add LOW and HIGH parameters.  Use them for bounds.
20441         (modified_type_die): Call subrange_type_for_debug_p on subtypes.
20442         * fold-const.c (fold_truth_not_expr) <CONVERT_EXPR>: Do not strip it
20443         if the destination type is boolean.
20444         (build_range_check): Do not special-case subtypes.
20445         (fold_sign_changed_comparison): Likewise.
20446         (fold_unary): Likewise.
20447         * langhooks-def.h (LANG_HOOKS_GET_SUBRANGE_BOUNDS): Define.
20448         (LANG_HOOKS_FOR_TYPES_INITIALIZER): Add LANG_HOOKS_GET_SUBRANGE_BOUNDS.
20449         * langhooks.h (lang_hooks_for_types): Add get_subrange_bounds.
20450         * tree.c (subrange_type_for_debug_p): New predicate based on the
20451         former is_subrange_type.
20452         * tree.h (subrange_type_for_debug_p): Declare.
20453         * tree-chrec.c (avoid_arithmetics_in_type_p): Delete.
20454         (convert_affine_scev): Remove call to above function.
20455         (chrec_convert_aggressive): Likewise.
20456         * tree-ssa.c (useless_type_conversion_p_1): Do not specifically return
20457         false for conversions involving subtypes.
20458         * tree-vrp.c (vrp_val_max): Do not special-case subtypes.
20459         (vrp_val_min): Likewise.
20460         (needs_overflow_infinity): Likewise.
20461         (extract_range_from_unary_expr): Likewise.
20462
20463 2009-05-15  Paolo Bonzini  <bonzini@gnu.org>
20464
20465         * config/frv/frv.h: Clean up references to GO_IF_LEGITIMATE_ADDRESS.
20466         * config/frv/frv.c: Likewise.
20467         * config/s390/s390.c: Likewise.
20468         * config/sparc/sparc.h: Likewise.
20469         * config/i386/i386.h: Likewise.
20470         * config/i386/i386.c: Likewise.
20471         * config/crx/crx.c: Likewise.
20472         * config/m68hc11/m68hc11.h: Likewise.
20473         * config/iq2000/iq2000.c: Likewise.
20474         * config/mn10300/mn10300.h: Likewise.
20475         * config/mn10300/mn10300.c: Likewise.
20476         * config/m68k/m68k.c: Likewise.
20477         * config/rs6000/rs6000.c: Likewise.
20478         * config/rs6000/xcoff.h: Likewise.
20479         * config/rs6000/linux64.h: Likewise.
20480         * config/rs6000/sysv4.h: Likewise.
20481         * config/score/score3.c: Likewise.
20482         * config/score/score7.c: Likewise.
20483         * config/score/score.c: Likewise.
20484         * config/arm/arm.md: Likewise.
20485         * config/mips/mips.c: Likewise.
20486         * config/mips/mips.md: Likewise.
20487         * config/bfin/bfin.h: Likewise.
20488         * config/pa/pa.c: Likewise.
20489         * config/pa/constraints.md: Likewise.
20490
20491         * config/pdp11/pdp11-protos.h (legitimate_address_p): Delete.
20492         * config/pdp11/pdp11.c (legitimate_address_p): Delete.
20493         * config/pdp11/pdp11.h: Use memory_address_p instead.
20494
20495 2009-05-14  Ian Lance Taylor  <iant@google.com>
20496
20497         * passes.c (finish_optimization_passes): Change i to int.
20498         * plugin.c (plugins_active_p): Change event to int.
20499         (dump_active_plugins): Likewise.
20500         * reginfo.c (invalid_mode_change_p): Change to to unsigned int.
20501         Add cast.
20502         * tree.c (tree_range_check_failed): Change c to unsigned int.
20503         (omp_clause_range_check_failed): Likewise.
20504         (build_common_builtin_nodes): Change mode to int.  Add cast.
20505         * config/ia64/ia64.c (is_emitted): Change r to unsigned int.
20506         (ia64_hard_regno_rename_ok, ia64_eh_uses): Likewise.
20507
20508         * c-typeck.c (build_unary_op): If -Wc++-compat, warn about using
20509         ++ or -- with a variable of enum type.
20510
20511 2009-05-14  Steven Bosscher  <steven@gcc.gnu.org>
20512
20513         PR driver/40144
20514         * opts.c (common_handle_option): Add OPT_fcse_skip_blocks as a no-op.
20515
20516 2009-05-14  Steven Bosscher  <steven@gcc.gnu.org>
20517
20518         * store-motion.c: Do not include params.h
20519         * Makefile.in: Fix dependencies for various files.
20520
20521 2009-05-14  Steven Bosscher  <steven@gcc.gnu.org>
20522
20523         * auto-inc-dec.c: Fix pass description, remove apparent
20524         accidental duplication.
20525
20526 2009-05-14  H.J. Lu  <hongjiu.lu@intel.com>
20527
20528         PR middle-end/40147
20529         * ipa-utils.h (memory_identifier_string): Moved to ...
20530         * tree.h (memory_identifier_string): Here.  Add GTY(()).
20531
20532 2009-05-14  Paolo Bonzini  <bonzini@gnu.org>
20533
20534         * doc/tm.texi (TARGET_LEGITIMATE_ADDRESS_P): Refer mainly to this
20535         in the former documentation of...
20536         (GO_IF_LEGITIMATE_ADDRESS): ... this.
20537         * ira-conflicts.c (get_dup_num): Use address_operand.
20538         * targhooks.c (default_legitimate_address_p): New.
20539         * targhooks.h (default_legitimate_address_p): New.
20540         * reload.c (strict_memory_address_p) [!GO_IF_LEGITIMATE_ADDRESS]:
20541         Call hook.
20542         * recog.c (memory_address_p) [!GO_IF_LEGITIMATE_ADDRESS]: Call hook.
20543         * target.h (struct target): Add legitimate_address_p.
20544         * target-def.h (TARGET_LEGITIMATE_ADDRESS_P): New.
20545         (TARGET_INITIALIZER): Include it.
20546
20547         * config/alpha/alpha.h (GO_IF_LEGITIMATE_ADDRESS): Delete.
20548         * config/alpha/alpha-protos.h (alpha_legitimate_address_p): Remove.
20549         * config/alpha/alpha.c (alpha_legitimate_address_p): Make static.
20550         (TARGET_LEGITIMATE_ADDRESS_P): New.
20551
20552         * config/frv/frv.h (GO_IF_LEGITIMATE_ADDRESS): Delete.
20553         (REG_OK_STRICT_P): Delete.
20554         * config/frv/frv-protos.h (frv_legitimate_address_p): Rename to...
20555         (frv_legitimate_address_p_1): ... this.
20556         * config/frv/frv.c (frv_legitimate_address_p): Forward to...
20557         (frv_legitimate_address_p_1): ... the renamed old
20558         frv_legitimate_address_p.
20559         * config/frv/predicates.md: Adjust calls to frv_legitimate_address_p.
20560         (TARGET_LEGITIMATE_ADDRESS_P): New.
20561
20562         * config/s390/s390.h (GO_IF_LEGITIMATE_ADDRESS): Delete.
20563         * config/s390/s390-protos.h (legitimate_address_p): Remove.
20564         * config/s390/s390.c (legitimate_address_p): Rename to...
20565         (s390_legitimate_address_p): ... this, make static.
20566         (legitimize_address): Adjust call.
20567         (TARGET_LEGITIMATE_ADDRESS_P): New.
20568         * config/s390/constraints.md ("e"): Call strict_memory_address_p.
20569
20570         * config/m32c/m32c.h (GO_IF_LEGITIMATE_ADDRESS): Delete.
20571         * config/m32c/m32c-protos.h (m32c_legitimate_address_p): Remove.
20572         * config/m32c/m32c.c (m32c_legitimate_address_p): Make static.
20573         (TARGET_LEGITIMATE_ADDRESS_P): New.
20574
20575         * config/spu/spu.h (GO_IF_LEGITIMATE_ADDRESS): Delete.
20576         * config/spu/spu-protos.h (spu_legitimate_address): Remove.
20577         * config/spu/spu.c (spu_legitimate_address): Rename to...
20578         (spu_legitimate_address_p): ... this, make static.
20579         (TARGET_LEGITIMATE_ADDRESS_P): New.
20580
20581         * config/sparc/sparc.h (GO_IF_LEGITIMATE_ADDRESS): Delete.
20582         * config/sparc/sparc-protos.h (legitimate_address_p): Remove.
20583         * config/sparc/sparc.c (legitimate_address_p): Rename to...
20584         (sparc_legitimate_address_p): ... this, make static and return bool.
20585         (legitimize_address): Adjust call.
20586         (TARGET_LEGITIMATE_ADDRESS_P): New.
20587
20588         * config/i386/i386.h (GO_IF_LEGITIMATE_ADDRESS): Delete.
20589         * config/i386/i386-protos.h (legitimate_address_p): Remove.
20590         * config/i386/i386.c (legitimate_address_p): Rename to...
20591         (ix86_legitimate_address_p): ... this, make static.
20592         (constant_address_p): Move after it, adjust call.
20593         (TARGET_LEGITIMATE_ADDRESS_P): New.
20594
20595         * config/avr/avr.h (GO_IF_LEGITIMATE_ADDRESS): Delete.
20596         * config/avr/avr-protos.h (legitimate_address_p): Remove.
20597         * config/avr/avr.c (legitimate_address_p): Rename to...
20598         (avr_legitimate_address_p): ... this, make static.
20599         (legitimize_address): Adjust call.
20600         (TARGET_LEGITIMATE_ADDRESS_P): New.
20601
20602         * config/crx/crx.h (GO_IF_LEGITIMATE_ADDRESS): Delete.
20603         * config/crx/crx-protos.h (crx_legitimate_address_p): Remove.
20604         * config/crx/crx.c (crx_legitimate_address_p): Make static.
20605         (TARGET_LEGITIMATE_ADDRESS_P): New.
20606
20607         * config/xtensa/xtensa.h (GO_IF_LEGITIMATE_ADDRESS): Delete.
20608         * config/xtensa/xtensa-protos.h (xtensa_legitimate_address_p): Remove.
20609         * config/xtensa/xtensa.c (xtensa_legitimate_address_p): Make static.
20610         (TARGET_LEGITIMATE_ADDRESS_P): New.
20611
20612         * config/stormy16/stormy16.h (GO_IF_LEGITIMATE_ADDRESS): Delete.
20613         * config/stormy16/stormy16-protos.h (xstormy16_legitimate_address_p):
20614         Remove.
20615         * config/stormy16/stormy16.c (xstormy16_legitimate_address_p):
20616         Make static.
20617         (TARGET_LEGITIMATE_ADDRESS_P): New.
20618
20619         * config/m68hc11/m68hc11.h (GO_IF_LEGITIMATE_ADDRESS): Delete.
20620         * config/m68hc11/m68hc11-protos.h (m68hc11_go_if_legitimate_address):
20621         Remove.
20622         * config/m68hc11/m68hc11.c (m68hc11_go_if_legitimate_address):
20623         Rename to...
20624         (m68hc11_legitimate_address_p): ... this, make static.
20625         (go_if_legitimate_address_internal): Rename to...
20626         (m68hc11_legitimate_address_p_1): ... this.
20627         (legitimize_address): Adjust call.
20628         (TARGET_LEGITIMATE_ADDRESS_P): New.
20629
20630         * config/iq2000/iq2000.h (GO_IF_LEGITIMATE_ADDRESS): Delete.
20631         * config/iq2000/iq2000-protos.h (iq2000_legitimate_address_p): Remove.
20632         * config/iq2000/iq2000.c (iq2000_legitimate_address_p): Make static.
20633         (TARGET_LEGITIMATE_ADDRESS_P): New.
20634
20635         * config/mn10300/mn10300.h (GO_IF_LEGITIMATE_ADDRESS): Delete.
20636         * config/mn10300/mn10300-protos.h (legitimate_address_p): Remove.
20637         * config/mn10300/mn10300.c (legitimate_address_p): Rename to...
20638         (mn10300_legitimate_address_p): ... this, make static.
20639         (TARGET_LEGITIMATE_ADDRESS_P): New.
20640
20641         * config/m68k/m68k.h (GO_IF_LEGITIMATE_ADDRESS): Delete.
20642         * config/m68k/m68k-protos.h (m68k_legitimate_address_p): Remove.
20643         * config/m68k/m68k.c (m68k_legitimate_address_p): Make static.
20644         (TARGET_LEGITIMATE_ADDRESS_P): New.
20645
20646         * config/rs6000/rs6000.h (GO_IF_LEGITIMATE_ADDRESS): Delete.
20647         (REG_OK_STRICT_FLAG, REG_OK_FOR_BASE_P, REG_OK_FOR_INDEX_P): Delete.
20648         (INT_REG_OK_FOR_BASE_P, INT_REG_OK_FOR_INDEX_P): Move above.
20649         * config/rs6000/rs6000.h (GO_IF_LEGITIMATE_ADDRESS): Delete.
20650         * config/rs6000/rs6000-protos.h (rs6000_legitimate_address): Remove.
20651         * config/rs6000/rs6000.c (rs6000_legitimate_address): Rename to...
20652         (rs6000_legitimate_address_p): ... this, make static.
20653         (TARGET_LEGITIMATE_ADDRESS_P): New.
20654         (REG_MODE_OK_FOR_BASE_P): Delete.
20655         (rs6000_legitimize_reload_address): Use INT_REG_OK_FOR_BASE_P.
20656
20657         * config/picochip/picochip.h (GO_IF_LEGITIMATE_ADDRESS): Delete.
20658         * config/picochip/picochip-protos.h (picochip_legitimate_address_p):
20659         Delete.
20660         * config/picochip/picochip.c (picochip_legitimate_address_p): Make
20661         static, adjust types.
20662         (TARGET_LEGITIMATE_ADDRESS_P): New.
20663
20664         * config/score/score.h (GO_IF_LEGITIMATE_ADDRESS): Delete.
20665         * config/score/score.c (score_address_p): Rename to...
20666         (score_legitimate_address_p): ... this.
20667         (TARGET_LEGITIMATE_ADDRESS_P): New.
20668         * config/score/score3.c (score3_address_p): Rename to...
20669         (score3_legitimate_address_p): ... this.
20670         * config/score/score7.c (score7_address_p): Rename to...
20671         (score7_legitimate_address_p): ... this.
20672
20673         * config/arm/arm.h (ARM_GO_IF_LEGITIMATE_ADDRESS,
20674         THUMB2_GO_IF_LEGITIMATE_ADDRESS, THUMB1_GO_IF_LEGITIMATE_ADDRESS,
20675         GO_IF_LEGITIMATE_ADDRESS): Delete.
20676         * config/arm/arm-protos.h (thumb1_legitimate_address_p,
20677         thumb2_legitimate_address_p): Delete.
20678         (arm_legitimate_address_p): Rename to...
20679         (arm_legitimate_address_outer_p): ... this.
20680         * config/arm/constraints.md ("Uq"): Adjust call.
20681         * config/arm/predicates.md (arm_extendqisi_mem_op): Likewise.
20682         * config/arm/arm.c (arm_legitimate_address_p): New, rename old one
20683         to...
20684         (arm_legitimate_address_outer_p): ... this.
20685         (thumb1_legitimate_address_p, thumb2_legitimate_address_p): Make
20686         static.
20687         (TARGET_LEGITIMATE_ADDRESS_P): New.
20688
20689         * config/mips/mips.h (GO_IF_LEGITIMATE_ADDRESS): Delete.
20690         * config/mips/mips-protos.h (mips_legitimate_address_p): Remove.
20691         * config/mips/mips.c (mips_legitimate_address_p): ... Make static.
20692         (TARGET_LEGITIMATE_ADDRESS_P): New.
20693
20694         * config/vax/vax.h (GO_IF_LEGITIMATE_ADDRESS): Delete.
20695         * config/vax/vax-protos.h (legitimate_address_p): Remove.
20696         * config/vax/vax.c (legitimate_address_p): Rename to...
20697         (vax_legitimate_address_p): ... this, make static.
20698         (TARGET_LEGITIMATE_ADDRESS_P): New.
20699
20700         * config/h8300/h8300.h (GO_IF_LEGITIMATE_ADDRESS): Delete.
20701         * config/h8300/h8300-protos.h (h8300_legitimate_address_p): Remove.
20702         * config/h8300/h8300.c (h8300_legitimate_address_p): ... Make static.
20703         (TARGET_LEGITIMATE_ADDRESS_P): New.
20704
20705         * config/mmix/mmix.h (GO_IF_LEGITIMATE_ADDRESS): Delete.
20706         * config/mmix/mmix-protos.h (mmix_legitimize_address): Remove.
20707         * config/mmix/mmix.c (mmix_legitimate_address): Rename to...
20708         (mmix_legitimate_address_p): ... this, make static.
20709         (TARGET_LEGITIMATE_ADDRESS_P): New.
20710
20711         * config/bfin/bfin.h (GO_IF_LEGITIMATE_ADDRESS): Delete.
20712         * config/bfin/bfin-protos.h (bfin_legitimate_address_p): Remove.
20713         * config/bfin/bfin.c (bfin_legitimate_address_p): ... Make static.
20714         (TARGET_LEGITIMATE_ADDRESS_P): New.
20715
20716 2009-05-14  Paolo Bonzini  <bonzini@gnu.org>
20717
20718         * config/arm/arm.h (PROMOTE_FUNCTION_MODE): Remove handling
20719         of MODE_COMPLEX_INT.
20720
20721 2009-05-14  Rainer Orth  <ro@TechFak.Uni-Bielefeld.DE>
20722
20723         * config/alpha/alpha.c (alpha_initialize_trampoline): Change 0 to
20724         LCT_NORMAL in function call.
20725         * mips-tdump.c (print_file_desc): Add cast to enum type.
20726         * mips-tfile.c (add_ext_symbol): Add casts to enum types.
20727         (mark_stabs): Add casts to enum types.
20728         (parse_stabs_common): Add casts to enum types.
20729
20730 2009-05-13  Adam Nemet  <anemet@caviumnetworks.com>
20731
20732         * config/mips/mips.c (mips_print_operand) <REG, MEM, default>:
20733         Check for invalid values of LETTER.
20734
20735 2009-05-13  Taras Glek  <tglek@mozilla.com>
20736
20737         * attribs.c (register_attribute): moved out attribute registration
20738         into register_attribute.
20739         * doc/plugins.texi: Documented register_attribute and
20740         PLUGIN_ATTRIBUTES.
20741         * gcc-plugin.h: Added forward decl for register_attribute.
20742         * gcc-plugin.h (plugins_event): Added PLUGIN_ATTRIBUTES.
20743         * plugin.c (register_callback, invoke_plugin_callbacks): Added
20744         PLUGIN_ATTRIBUTES boilerplate.
20745
20746 2009-05-14  Dave Korn  <dave.korn.cygwin@gmail.com>
20747
20748         * config/i386/msformat-c.c (ms_printf_length_specs):  Use enumeration
20749         values even in sentinel and empty entries.
20750         (ms_printf_flag_specs):  Likewise.
20751         (ms_scanf_flag_specs):  Likewise.
20752         (ms_strftime_flag_specs):  Likewise.
20753         (ms_print_char_table):  Likewise.
20754         (ms_scan_char_table):  Likewise.
20755         (ms_time_char_table):  Likewise.
20756
20757 2009-05-13  Doug Kwan  <dougkwan@google.com>
20758
20759         * tree-ssa-sccvn.c (compare_ops): Stabilize qsort.
20760
20761 2009-05-13  Adam Nemet  <anemet@caviumnetworks.com>
20762
20763         * config/mips/mips.md (store): Add attributes for QI and HI.
20764         Update comment.
20765         (truncdisi2, truncdihi2, truncdiqi2): Merge these into ...
20766         (truncdi<mode>2): ... this new pattern.
20767
20768 2009-05-13  Brad Hards  <bradh@kde.org>
20769
20770         * Makefile.in (TEXI_GCCINT_FILES): Add plugins.texi.
20771
20772 2009-05-14  Jakub Jelinek  <jakub@redhat.com>
20773             Ben Elliston <bje@au.ibm.com>
20774
20775         PR middle-end/40035
20776         * dse.c (check_mem_read_rtx): Guard against width == -1.
20777
20778 2009-05-13  Michael Matz  <matz@suse.de>
20779
20780         PR middle-end/39976
20781         * tree-outof-ssa.c (maybe_renumber_stmts_bb): New function.
20782         (trivially_conflicts_p): New function.
20783         (insert_backedge_copies): Use it.
20784
20785 2009-05-13  Janis Johnson  <janis187@us.ibm.com>
20786
20787         * c-pragma.c (enum pragma_switch_t): Prefix constants with PRAGMA_.
20788         (handle_stdc_pragma): Use new enum constant names.
20789         (handle_pragma_float_const_decimal64): Ditto.
20790
20791 2009-05-13  Ian Lance Taylor  <iant@google.com>
20792
20793         * Makefile.in (build/gencheck.o): Depend upon all-tree.def, not
20794         tree.def.
20795
20796 2009-05-13  Nathan Sidwell  <nathan@codesourcery.com>
20797
20798         * config/m68k/t-uclinux (M68K_MLIB_CPU): Check for FL_UCLINUX.
20799         * config/m68k/m68k-devices.def: Add FL_UCLINUX to 68020 and 54455
20800         multilibs.
20801         * config/m68k/m68k.h (FL_UCLINUX): Define.
20802
20803 2009-05-13  Jan Hubicka  <jh@suse.cz>
20804
20805         * options.c (gfc_post_options): -fwhole-program imply -fwhole-file.
20806
20807 2009-05-12  Kaz Kojima  <kkojima@gcc.gnu.org>
20808
20809         * config/sh/sh.h (OVERRIDE_OPTIONS): Clear flag_schedule_insns
20810         unless -fschedule-insns is specified.
20811
20812 2009-05-12  Kaz Kojima  <kkojima@gcc.gnu.org>
20813
20814         PR target/39561
20815         * config/sh/sh.h (OPTIMIZATION_OPTIONS): Don't set
20816         TARGET_EXPAND_CBRANCHDI4.
20817         * config/sh/sh.md (cbranchdi4): Don't check TARGET_EXPAND_CBRANCHDI4.
20818         * config/sh/sh.opt (mexpand-cbranchdi): Remove.
20819         (cmpeqdi): Fix comment.
20820
20821 2009-05-12  Kaz Kojima  <kkojima@gcc.gnu.org>
20822
20823         * config/sh/sh-protos.h (sh_legitimate_index_p): Declare.
20824         (sh_legitimate_address_p): Likewise.
20825         * config/sh/sh.c (sh_legitimate_index_p): New.
20826         (sh_legitimate_address_p): Likewise.
20827         * config/sh/sh.h (REG_OK_FOR_BASE_P): Add STRICT parameter.
20828         (REG_OK_FOR_INDEX_P, SUBREG_OK_FOR_INDEX_P): Likewise.
20829         (MODE_DISP_OK_4, MODE_DISP_OK_8): Remove.
20830         (MAYBE_BASE_REGISTER_RTX_P): New macro.
20831         (MAYBE_INDEX_REGISTER_RTX_P): Likewise.
20832         (BASE_REGISTER_RTX_P): Use MAYBE_BASE_REGISTER_RTX_P.
20833         (INDEX_REGISTER_RTX_P): Use MAYBE_INDEX_REGISTER_RTX_P.
20834         (GO_IF_LEGITIMATE_INDEX): Use sh_legitimate_index_p.
20835         (GO_IF_LEGITIMATE_ADDRESS): Use sh_legitimate_address_p.
20836
20837 2009-05-12  Jan Hubicka  <jh@suse.cz>
20838
20839         * tree-inline.c (estimate_operator_cost): Add operands;
20840         when division happens by constant, it is cheap.
20841         (estimate_num_insns): Loads and stores are not having cost of 0;
20842         EH magic stuff is cheap; when computing runtime cost of switch,
20843         use log2 base of amount of its cases; builtin_expect has cost of 0;
20844         compute cost for moving return value of call.
20845         (init_inline_once): Initialize time_based flags.
20846         * tree-inline.h (eni_weights_d): Add time_based flag.
20847
20848 2009-05-12  Paolo Bonzini  <bonzini@gnu.org>
20849
20850         * df-core.c: Update head documentation.
20851
20852 2009-05-12  Michael Meissner  <meissner@linux.vnet.ibm.com>
20853
20854         PR bootstrap/40118
20855         * rs6000.c (rs6000_generate_compare): Use op1b instead of
20856         shadowing exisiting variable op1.
20857
20858 2009-05-12  Uros Bizjak  <ubizjak@gmail.com>
20859
20860         PR target/37179
20861         * config/i386/driver-i386.c (processor_signatures): New enum.
20862         (SIG_GEODE): Move from vendor_signatures to processor_signatures.
20863         (host_detect_local_cpu): For SIG_AMD vendor, check for SIG_GEODE
20864         processor signature to detect geode processor.
20865
20866 2009-05-12  Paolo Bonzini  <bonzini@gnu.org>
20867
20868         Revert:
20869
20870         2009-05-12  Paolo Bonzini  <bonzini@gnu.org>
20871
20872         * optabs.c (prepare_cmp_insn): Temporarily disable test that
20873         causes spurious differences between trunk and cond-optab branch.
20874
20875 2009-05-12  Paolo Bonzini  <bonzini@gnu.org>
20876
20877         * dojump.c (compare_from_rtx): Delete.
20878         * expmed.c (emit_store_flag): Only try cstore_optab.  Canonicalize
20879         any MODE_CC mode to the cstorecc4 pattern.  Use prepare_operand, fail
20880         if the comparison does not satisfy the predicate; test predicates for
20881         operands 2 and 3 of a cstore pattern.  Don't try cstore optab
20882         further if one existing pattern fails.
20883         * expr.h (compare_from_rtx): Delete.
20884         (prepare_operand): Declare it.
20885         * optabs.c: Change "lib call" to "libcall" throughout.
20886         (bcc_gen_fctn, setcc_gen_code, trap_rtx,
20887         HAVE_conditional_trap, emit_cmp_insn): Delete.
20888         (can_compare_p): Delete cmp_optab case.
20889         (prepare_float_lib_cmp): Return an rtx and a machine mode.
20890         Accept other parameters by value.
20891         (prepare_operand): Make non-static.
20892         (prepare_cmp_insn): Return an rtx and a machine mode.  Accept
20893         other parameters by value.  Try to widen operands here based on
20894         an optab_methods argument and looking at cbranch_optab.
20895         (emit_cmp_and_jump_insn_1): Accept test and mode, remove widening
20896         loop.  Use cbranch_optab directly.
20897         (emit_cmp_and_jump_insns): Fix comment.  Adjust call to
20898         prepare_cmp_insn and emit_cmp_and_jump_insn_1, remove obsolete
20899         assertion.
20900         (emit_conditional_move, emit_conditional_add): Inline what's needed
20901         of compare_from_rtx, using new prepare_cmp_insn for the rest.
20902         (init_optabs): Init cmp_optab with UNKNOWN, cbranch_optab
20903         with COMPARE.  Move cmov_optab and cstore_optab above
20904         with cbranch_optab, move cmp_optab down with ucmp_optab,
20905         remove tst_otpab.  Do not initialize trap_rtx.
20906         (gen_cond_trap): Do it here.  Use ctrap_optab.  Test predicate
20907         for trap code.  Do not check HAVE_conditional_trap.  Use
20908         prepare_cmp_insn.  Accept no predicate for operand 3.
20909         * optabs.h (OTI_cmp): Mark as used only for libcalls.
20910         (OTI_ctrap, ctrap_optab): New.
20911         (tst_optab): Delete.
20912         (bcc_gen_fctn, setcc_gen_code, emit_cmp_insn): Delete.
20913         * ifcvt.c (find_if_header): Replace HAVE_conditional_trap
20914         with lookup of ctrap_optab.
20915         * genopinit.c (cmp_optab, tst_optab, bcc_gen_fctn, setcc_gen_code):
20916         Delete.
20917         (ctrap_optab): New.
20918
20919         * combine.c (combine_simplify_rtx, simplify_set): Do not
20920         special case comparing against zero for cc0 machines.
20921         * simplify-rtx.c (simplify_binary_operation_1): Never remove
20922         COMPARE on cc0 machines.
20923         (simplify_relational_operation): Return a new expression when
20924         a COMPARE could be removed.
20925         * final.c (final_scan_insn): Compare cc_status values
20926         against LHS of a (compare FOO (const_int 0)) cc0 source.
20927         Also check if cc_status.value is the full compare.
20928
20929         * doc/md.texi (bCC, sCC, tstMM, cmpMM): Delete.
20930         (cstoreMM4): Document.
20931         (conditional_trap): Document ctrapMM4 instead.
20932         (sync_compare_and_swapMM): Refer to cbranchcc4.
20933         (Dependent Patterns): Eliminate obsolete information referring to
20934         the old jump optimization phase.
20935         (Canonicalization): Include cbranchcc4 case, omit canonicalization
20936         of compares with 0 on cc0 machines.
20937         (Jump Patterns): Refer to MODE_CC jump patterns preferably,
20938         avoiding references to cc0.  Remove text about storing operands
20939         in cmpMM.
20940         * doc/tm.texi (Condition Codes): Include blurb on different
20941         condition code representations, separate into subsections for
20942         CC0, MODE_CC and conditional execution.
20943
20944         * config/alpha/alpha-protos.h (alpha_emit_conditional_branch,
20945         alpha_emit_setcc): Accept operands and a machine mode.
20946         * config/alpha/alpha.c (alpha_emit_conditional_branch):
20947         Get code/op0/op1 from operands, use machine mode argument
20948         instead of alpha_compare.fp_p.  Emit the branch here.
20949         (alpha_emit_setcc): Likewise, and return boolean.
20950         (alpha_emit_conditional_move): Likewise.  Assert that
20951         cmp_op_mode == cmp_mode, and simplify accordingly.
20952         * config/alpha/alpha.h (struct alpha_compare, alpha_compare): Delete.
20953         * config/alpha/alpha.md (cmpdf, cmptf, cmpdi, bCC, sCC): Delete.
20954         (cbranchdf4, cbranchtf4, cbranchdi4, cstoredf4, cstoretf4,cstoredi4):
20955         Delete.
20956         (stack probe test): Use cbranchdi4.
20957         * config/alpha/predicates.md (alpha_cbranch_operator): New.
20958
20959         * config/arc/arc.c (gen_compare_reg): Do not emit cmp.
20960         * config/arc/arc.h (movsicc, movsfcc): Use it.
20961         (movdicc, *movdicc_insn, movdfcc, *movdfcc_insn): Remove.
20962         (cbranchsi4, cstoresi4): New.
20963         (cmpsi, bCC and sCC expanders): Remove.
20964
20965         * config/arm/arm.c (arm_compare_op0, arm_compare_op1): Delete.
20966         * config/arm/arm.h (arm_compare_op0, arm_compare_op1): Delete.
20967         * config/arm/predicates.md (arm_comparison_operator): Only include
20968         floating-point operators if there is a hardware floating-point unit.
20969         * config/arm/arm.md (cbranchsi4, cstoresi4): Enable for TARGET_32BIT,
20970         deferring to cbranch_cc and cstore_cc respectively.
20971         (cbranchsf4, cbranchdf4, cbranchdi4, cstoresf4, cstoredf4, cstoredi4,
20972         cbranch_cc, cstore_cc): New.
20973         (movsicc, movsfcc, movdfcc): Do not use arm_compare_op0 and
20974         arm_compare_op1.
20975         (bCC, sCC, cmpsi, cmpsf, cmpdf, cmpdi): Delete.
20976
20977         * config/avr/avr-protos.h (out_tstsi, out_tsthi): Adjust prototype.
20978         * config/avr/avr.c (out_tstsi, out_tsthi): Get the tested operand
20979         as an argument.
20980         (adjust_insn_length): Adjust calls.
20981         (avr_reorg): Handle (compare (foo) (const_int 0)).
20982         * config/avr/avr.md (tstqi, tsthi, tstsi): Remove.
20983         (*negated_tstqi, *negated_tsthi, *negated_tstsi): Unmacroize.
20984         (*reversed_tsthi, *reversed_tstsi): Add a scratch for simplicity.
20985         (cmpqi, cmphi, cmpsi): Prepend asterisk, fuse tst[qhs]i here.
20986         (bCC): Remove.
20987         (cbranchqi4, cbranchhi4, cbranchsi4): New.
20988         (tst -> sbrc/sbrs peephole2, cpse peephole): Wrap RHS with COMPARE.
20989
20990         * config/bfin/bfin.md (cmpbi, cmpsi, bCC, sCC): Delete.
20991         (cbranchsi4, cstorebi4, cstoresi4): New.
20992         (movbisi): This insn is duplicate, split it to zero_extend.
20993         * config/bfin/bfin.c (bfin_compare_op0, bfin_compare_op1): Delete
20994         (bfin_gen_compare): Do not use them.  Emit VOIDmode SET, not BImode.
20995         (bfin_optimize_loop): Use cbranch expander.
20996         * config/bfin/bfin.h (bfin_compare_op0, bfin_compare_op1): Delete.
20997         * config/bfin/predicates.md (bfin_cbranch_operator): Rename to...
20998         (bfin_bimode_comparison_operator): ... this.
20999         (bfin_direct_comparison_operator): New.
21000
21001         * config/cris/cris.c (cris_normal_notice_update_cc): Look
21002         inside (compare FOO (const_int 0)).
21003         (cris_rtx_costs): Handle ZERO_EXTRACT.
21004         * config/cris/cris.md (tstdi, tst<mode>, cmpdi): Delete.
21005         (*tstdi_non_v32): Fold in *cmpdi_non_v32.
21006         (*tstdi_v32): Delete.
21007         (*cmpdi_non_v32): Add M alternative for operand 1.
21008         (cmpsi, cmp<mode>): Make private.
21009         (*tstsi, *tst<mode>_cmp, *tst<mode>_non_cmp, *btst): Wrap LHS
21010         with COMPARE.
21011         (cbranch<mode>4, cbranchdi4, cstore<mode>4): New.
21012
21013         * config/crx/crx.md (cstore<mode>4, cbranchcc4): New.
21014         (cmp<mode>, bCOND_internal, b<code>, s<code>): Delete.
21015         (cbranch<mode>4, sCOND_internal): Use ordered_comparison_operator.
21016         (cc_reg_operand): New.
21017         (any_cond): Delete.
21018         * config/crx/crx.c (crx_compare_op0, crx_compare_op1,
21019         crx_expand_compare, crx_expand_branch, crx_expand_scond): Delete.
21020         * config/crx/crx.h (crx_compare_op0, crx_compare_op1): Delete.
21021         * config/crx/crx-protos.h (crx_expand_compare, crx_expand_branch,
21022         crx_expand_scond): Delete.
21023
21024         * config/fr30/fr30.md (cmp<mode>, bCC): Delete.
21025         (cbranchsi4): New.
21026         * config/fr30/fr30.c (fr30_compare_op0, fr30_compare_op1): Delete
21027         * config/fr30/fr30.h (fr30_compare_op0, fr30_compare_op1): Delete.
21028
21029         * config/frv/frv.md (cbranchsi4, cbranchsf4, cbranchdf4,
21030         cstoresi4, cstoresf4, cstoredf4): New.
21031         (cmpdi, cmpsi, cmpsf, cmpdf, bCC, sCC): Remove.
21032         * config/frv/frv-protos.h (frv_emit_cbranch, frv_emit_scc):
21033         Receive the entire operands array.
21034         * config/frv/frv.h (frv_compare_op0, frv_compare_op1): Delete.
21035         * config/frv/frv.c (frv_compare_op0, frv_compare_op1): Delete.
21036         * config/frv/frv-protos.h (frv_emit_cbranch, frv_emit_scc):
21037         Get test/op0/op1 from the operands array.
21038         (frv_emit_cond_move): Get test/op0/op1 from the test_rtx.
21039
21040         * config/h8300/h8300-protos.h (h8300_expand_branch): Accept operands.
21041         (h8300_expand_store): New.
21042         * config/h8300/h8300.c (h8300_rtx_costs): Handle (compare FOO
21043         (const_int 0)).
21044         (h8300_expand_branch): Emit compare here.  Adjust for new arguments.
21045         (h8300_expand_store): New.
21046         * config/h8300/h8300.md (btst combine patterns): Wrap with COMPARE
21047         or do not try to produce (set (cc0) REG).
21048         (peepholes): Wrap arguments with COMPARE.  Add a peephole to
21049         change a compare into a move to a scratch register.  Disable some
21050         peepholes when comparing with zero.
21051         (tstsi, tsthi, tstsi, cmpqi): Make private.
21052         (cmphi): Delete.
21053         (bCC, sCC): Delete.
21054         (cbranchqi4, cbranchhi4, cbranchsi4, cstoreqi4, cstorehi4,
21055         cstoresi4): New.
21056
21057         * config/i386/i386.c (ix86_expand_int_movcc, ix86_expand_int_addcc,
21058         ix86_expand_fp_movcc): Set ix86_compare_op0 and ix86_compare_op1.
21059         (ix86_emit_i387_log1p): Use gen_cbranchxf4.
21060         (ix86_emit_i387_log1p): Use cbranchxf2.
21061         (ix86_expand_setcc): Return void.
21062         * config/i386/i386-protos.h (ix86_expand_setcc): Return void.
21063         * config/i386/i386.md (cmpti, cmpdi, cmpsi, cmphi, cmpqi, cmpxf,
21064         cmp<MODEF>, cmpcc): Remove.
21065         (cbranchti4, cbranchdi4, cbranchsi4, cbranchhi4, cbranchqi4,
21066         cbranchxf4, cbranch<MODEF>4, cbranchcc4, cstoredi4, cstoresi4,
21067         cstorehi4, cstoreqi4, cstorexf4, cstore<MODEF>4, cstorecc): New.
21068         (sCC and bCC expanders): Remove.
21069         (stack_protect_test): Use cbranchcc4.
21070
21071         * config/ia64/ia64-protos.h (ia64_compare_op0, ia64_compare_op1):
21072         Delete.
21073         (ia64_expand_compare): Accept three rtx by reference and return void.
21074         * config/ia64/ia64.c (ia64_compare_op0, ia64_compare_op1): Delete.
21075         (ia64_expand_compare): Replace op0/op1 with *op0/*op1.  Get code
21076         from *expr.  Update *expr with the BImode comparison to do.
21077         * config/ia64/ia64.md (cmpbi, cmpsi, cmpdi, cmpsf, cmpdf, cmpxf,
21078         cmptf, bCC, sCC, conditional_trap): Delete.
21079         (cbranchbi4, cbranchsi4, cbranchdi4, cbranchsf4, cbranchdf4,
21080         cbranchxf4, cbranchtf4, cstorebi4, cstoresi4, cstoredi4, cstoresf4,
21081         cstoredf4, cstorexf4, cstoretf4, ctrapbi4, ctrapsi4, ctrapdi4,
21082         ctrapsf4, ctrapdf4, ctrapxf4, ctraptf4): New.
21083         * config/ia64/predicates.md (ia64_cbranch_operator): New.
21084
21085         * config/iq2000/iq2000-protos.h (gen_conditional_branch): Change
21086         type of last argument.
21087         * config/iq2000/iq2000.c (branch_cmp, branch_type): Remove.
21088         (gen_conditional_branch): Get code/cmp0/cmp1 from operands,
21089         use machine mode argument instead of branch_type.  Remove dead
21090         code for floating-point comparisons.
21091         * config/iq2000/iq2000.h (branch_cmp, branch_type): Remove.
21092         * config/iq2000/iq2000.md (cmpsi, cmpdi, cmpsf, cmpdf, tstsi, bCC):
21093         Remove.
21094         (cbranchsi4, cstoresi4): New.
21095         * config/iq2000/predicates.md (reg_or_const_operand): New.
21096
21097         * config/m32c/m32c.md (cbranch splitter): Use match_op_dup.
21098         * config/m32c/m32c.md (any_cond, gl_cond): Delete.
21099         (b<code>_op): Rewrite to...
21100         (bcc_op): ... this, using match_operator.
21101         (s<code>_op): Rewrite to...
21102         (scc_op): ... this, using match_operator.
21103         (s<code>_24_op): Rewrite to...
21104         (scc_op_24): ... this, using match_operator.
21105         (s<code>_<mode>): Rewrite to...
21106         (cstore<mode>4): ... this, using match_operator.
21107         (s<code>_<mode>_24): Rewrite to...
21108         (cstore<mode>4_24): ... this, using match_operator.
21109         * config/m32c/m32c-protos.h (m32c_cmp_flg_0, m32c_pend_compare,
21110         m32c_unpend_compare, m32c_expand_scc): Delete.
21111         * config/m32c/m32c.c (compare_op0, compare_op1, m32c_cmp_flg_0,
21112         m32c_pend_compare, m32c_unpend_compare, m32c_expand_scc): Delete.
21113         (m32c_expand_movcc): Change NE to EQ if necessary.
21114         (m32c_init_libfuncs): Modify cstore optab instead of setcc_gen_code.
21115
21116         * config/m32r/m32r-protos.h (gen_cond_store): New.
21117         * config/m32r/m32r.c (m32r_compare_op0, m32r_compare_op1): Delete.
21118         (gen_cond_store): New, from sCC patterns.
21119         (m32r_expand_block_move): Use cbranchsi4.
21120         * config/m32r/m32r.h (m32r_compare_op0, m32r_compare_op1): Delete.
21121         * config/m32r/m32r.md (cmpsi, bCC, sCC): Delete.
21122         (cbranchsi4, cstoresi4): New.
21123
21124         * config/m68hc11/m68hc11.c (m68hc11_compare_op0, m68hc11_compare_op1):
21125         Delete.
21126         (m68hc11_rtx_costs_1, m68hc11_rtx_costs): Handle ZERO_EXTRACT.
21127         (m68hc11_notice_update_cc): Look into a compare with 0.
21128         * config/m68hc11/m68hc11.h (m68hc11_compare_op0, m68hc11_compare_op1):
21129         Delete.
21130         * config/m68hc11/m68hc11.md (tstsi, tsthi, tstqi, cmpsi,
21131         cmphi, cmpqi, bCC): Delete.
21132         (cbranchsi4, cbranchhi4, cbranchqi4): New.
21133         (tstqi_1, tstqi_z_used, tstqi_1, bitcmpqi, bitcmpqi_z_used,
21134         bitcmpqi_12, bitcmphi, various splits and peephole2s): Wrap cc0<-reg
21135         sets with COMPARE.
21136
21137         * config/m68k/predicates.md (m68k_cstore_comparison_operator,
21138         const0_operand, const1_operand, m68k_subword_comparison_operand): New.
21139         * config/m68k/constraints.md (H): New.
21140         * config/m68k/m68k.md (tstdi): Remove define_expand, use name for
21141         the define_insn below.
21142         (tstsi, tsthi, tst<FP:mode>, cmphi, cmpqi, cmp<FP:mode>): Delete.
21143         (*tstsi_internal_68020_cf, *tstsi_internal, *tsthi_internal,
21144         *tstqi_internal, tst<mode>_6881, tst<mode>_cf, many unnamed
21145         patterns): Wrap RHS with COMPARE.
21146         (tst<FP>_68881, tst<FP>_cf): Use const0_operand.
21147         (*cmpdi_internal): Name this pattern.
21148         (cmpdi): Change to define_insn.
21149         (cbranchdi4, cstoredi4, cbranchsi4, cstoresi4, cbranchhi4, cstorehi4,
21150         cbranchqi4, cstoreqi4, cbranch<FP:mode>4, cstore<FP:mode>4): New.
21151         (scc0_di, scc0_di_5200, scc_di): Use the ordered_comparison_operator
21152         predicate.
21153         (seq, sne, sgt, sgtu, slt, sltu, sge, sgeu, sle, sleu, sordered,
21154         sunordered, suneq, sunge, sungt, sunle, sunlt, sltgt): Delete
21155         (conditional_trap): Change to...
21156         (ctrapdi4, ctrapsi4, ctraphi4, ctrapqi4): ... these.
21157         (*conditional_trap): Use the ordered_comparison_operator and
21158         const1_operand predicates.
21159         * config/m68k/m68k.c (m68k_last_compare_had_fp_operands): Delete.
21160         (m68k_expand_prologue): Use ctrapsi4 instead of cmpsi+conditional_trap.
21161         (m68k_rtx_costs): Look for ZERO_EXTRACT in a COMPARE.
21162         * config/m68k/m68k.h (m68k_last_compare_had_fp_operands): Delete.
21163
21164         * config/mcore/mcore-protos.h (arch_compare_op0, arch_compare_op1,
21165         mcore_modify_comparison, mcore_gen_compare_reg): Remove.
21166         (mcore_gen_compare): New.
21167         * config/mcore/mcore.c (arch_compare_op0, arch_compare_op1): Delete.
21168         (mcore_modify_comparison, mcore_gen_compare_reg): Fold into...
21169         (mcore_gen_compare): ... this.
21170         * config/mcore/mcore.md (cmpsi, bCC, sCC): Remove.
21171         (cbranchsi4, cstoresi4): New, using mcore_gen_compare.
21172         (stack probe pattern): Use cbranchsi4.
21173
21174         * config/mips/predicates.md (mips_cstore_operator): New.
21175         * config/mips/mips-ps-3d.md (movv2sfcc): Do not use cmp_operands.
21176         * config/mips/mips.md (any_cond): Delete.
21177         (conditional_trap): Rename to ctrap<GPR:mode>4.  Adjust predicates,
21178         always succeed.
21179         (fixuns_truncdfsi2, fixuns_truncdfdi2, fixuns_truncsfsi2,
21180         fixuns_truncsfdi2): Use cbranch patterns.
21181         (cmp<GPR:mode>, cmp<SCALARF:mode>): Delete.
21182         (b<code>): Change to cbranch<GPR:mode>4 and cbranch<SCALARF:mode>4.
21183         Adjust call to mips_expand_conditional_branch.
21184         (seq, sne, slt<u>, sle<u>, sgt<u>, sge<u>): Change to
21185         cstore<GPR:mode>4.
21186         * config/mips/mips-protos.h (mips_expand_conditional_branch,
21187         mips_expand_scc, mips_expand_conditional_trap): Adjust prototypes.
21188         * config/mips/mips.c (cmp_operands): Delete.
21189         (mips_emit_compare): Get comparison operands from *op0/*op1.
21190         (mips_expand_scc): Get code/op0/op1/target from operands.  Assert
21191         that it succeeds.  Use op0/op1 instead of cmp_operands.
21192         (mips_expand_conditional_branch, mips_expand_conditional_move,
21193         mips_expand_conditional_trap): Likewise.
21194         (mips_block_move_loop): Use cbranch patterns.
21195         * config/mips/mips.h (cmp_operands): Delete.
21196
21197         * config/mmix/mmix.c (mmix_valid_comparison): Delete.
21198         (mmix_gen_compare_reg): Just return a register in the right CC mode.
21199         * config/mmix/mmix.h (mmix_compare_op0, mmix_compare_op1): New.
21200         * config/mmix/mmix.md (cmpdi, cmpdf): Remove.
21201         (*cmpcc_folded): Rename to...
21202         (*cmpdi_folded): this.
21203         (*cmpcc): Rename to...
21204         (*cmps): ... this.
21205         (movdfcc, movdicc): Adjust for new semantics of mmix_gen_compare_reg.
21206         (bCC): Remove.
21207         (cbranchdi4): New.
21208         (cbranchdf4): New.  Handle invalid comparisons here.
21209         * config/mmix/predicates.md (float_comparison_operator): New.
21210
21211         * config/mn10300/mn10300.c (mn10300_rtx_costs): Consider 0 and
21212         zero_extract to be cheap in (compare (zero_extract) (const_int 0).
21213         * config/mn10300/mn10300.md (tst): Delete.
21214         (*tst_extqisi_am33, *tst_extqisi, *tst_exthisi_am33, *tst_exthisi):
21215         Name these patterns and wrap RHS in a compare.
21216         (*cmpsi): Make this pattern private.  Include tst.
21217         (*cmpsf): Make this pattern private.
21218         (and and zero_extract cc0 set): Wrap RHS in a COMPARE.
21219         (compare with zero peepholes): Likewise.
21220         (bCC): Remove.
21221         (cbranchsi4, cbranchsf4): New.
21222         (casesi): Use cbranchsi4.
21223
21224         * config/pa/pa.c (hppa_compare_op0, hppa_compare_op1,
21225         hppa_branch_type): Delete.
21226         (return_addr_rtx): Use cbranchsi4.
21227         (emit_bcond_fp): Accept all operands.  Replace CODE with NE.
21228         Emit CCFPmode comparison here.
21229         (gen_cmp_fp): Delete, now part of emit_bcond_fp.
21230         * config/pa/pa.h (enum cmp_type, hppa_compare_op0, hppa_compare_op1,
21231         hppa_branch_type): Delete.
21232         * config/pa/pa.md (cmpdi, cmpsi, cmpsf, cmpdf, sCC, bCC): Delete.
21233         (movsicc, movdicc): Remove references to hppa_compare_op0,
21234         hppa_compare_op1 and compare_from_rtx.
21235         (cbranchdi4, cbranchsi4, cbranchsf4, cbranchdf4, cstoresi4): New.
21236         (casesi): Use cbranchsi4.
21237
21238         * config/pdp11/pdp11-protos.h (output_jump): Change prototype.
21239         * config/pdp11/pdp11.c (output_jump): Embed opcodes here.
21240         * config/pdp11/pdp11.md (register_or_const0_operand): New.
21241         (cmpdf, cmphi, cmpqi): Make private.  Add tst alternatives.
21242         (cmpsi, tstsi, tstdf, tsthi, tstqi): Delete.
21243         (bCC): Delete.
21244         (cbranchdf4, cbranchhi4, cbranchqi4): New.
21245         (*branch, *branch_inverted): New.
21246
21247         * config/picochip/picochip.md (cbranchhi4): Use
21248         ordered_comparison_operator.
21249         (cmphi, bCC): Remove.
21250
21251         * config/rs6000/predicates.md (rs6000_cbranch_operator): New.
21252         (trap_comparison_operator): Delete.
21253         * config/rs6000/rs6000-protos.h (rs6000_emit_sCOND,
21254         rs6000_emit_cbranch): Accept mode and operands.
21255         * config/rs6000/rs6000.c (rs6000_compare_op0, rs6000_compare_op1,
21256         rs6000_compare_fp_p): Delete.
21257         (rs6000_generate_compare): Accept mode and comparison.  Extract code
21258         and op0/op1 from there.  Replace references to rs6000_compare_op0
21259         and rs6000_compare_op1.
21260         (rs6000_emit_sCOND): Adjust call to rs6000_generate_compare and
21261         extract result from passed operands.
21262         (rs6000_emit_cbranch): Adjust call to rs6000_generate_compare and
21263         extract loc from passed operands.
21264         (rs6000_emit_cmove): Likewise.
21265         * config/rs6000/rs6000.h (rs6000_compare_op0, rs6000_compare_op1,
21266         rs6000_compare_fp_p): Delete.
21267         * config/rs6000/rs6000.md (cmp<GPR>, cmp<FP>, bCC, sCC): Delete.
21268         (cbranch<GPR>4, cbranch<FP>4): New.
21269         (cstore<mode>4): New.  Consolidate here all choices about when to use
21270         portable or specialized sCC sequences.
21271         (stack_protect_test): Use cbranchsi4.
21272         (conditional_trap): Replace with ctrap<GPR>4.
21273         (conditional trap insn): Replace trap_comparison_operator with
21274         ordered_comparison_operator.
21275
21276         * config/s390/s390.c (s390_compare_op0, s390_compare_op1): Delete.
21277         (s390_emit_prologue): Use ctrap.
21278         * config/s390/s390.h (s390_compare_op0, s390_compare_op1): Delete.
21279         * config/s390/predicates.md (s390_eqne_operator, s390_scond_operator):
21280         New predicates replacing...
21281         * config/s390/s390.md (COMPARE, SCOND): ... these iterators.
21282         (cmp<GPR>, cmp<FP>, cmpcc): Delete.
21283         (trunc patterns): Use emit_cmp_and_jump_insns instead of cmp/branch.
21284         (add<mode>cc): Do not use s390_compare_op0/op1.
21285         (s<code>): Change to...
21286         (cstore<mode>4): ... this. Do not use s390_compare_op0/op1.
21287         (seq): Change to...
21288         (cstorecc4): ... this.  Handle EQ or NE equally.
21289         (*sne): Un-privatize for use in cstorecc4.
21290         (b<code>): Change to...
21291         (cbranch<GPR>4, cbranch<FP>4, cbranchcc4): ... these.
21292         (conditional_trap): Replace with...
21293         (ctrap<GPR>4, ctrap<FP>4): ... these.
21294         (stack_protect): Use cbranchcc4.
21295
21296         * config/score/score-conv.h (cmp_op0, cmp_op1): Delete.
21297         * config/score/score-protos.h (score_gen_cmp): Delete.
21298         * config/score/score.c (cmp_op0, cmp_op1, score_gen_cmp): Delete.
21299         (score_block_move-loop): Use cbranchsi4.
21300         * config/score/score.md (cbranchsi4): New.
21301         (cmpsi, bCC): Delete.
21302         * config/score/score3.c (cmp_op0, cmp_op1, score3_gen_cmp): Delete.
21303         (score3_movsicc): Use ops[1] operands instead of cmp_op0/cmp_op1.
21304         * config/score/score7.c (cmp_op0, cmp_op1, score7_gen_cmp): Delete.
21305         (score7_movsicc): Use ops[1] operands instead of cmp_op0/cmp_op1.
21306         * config/score/score3.h (score3_gen_cmp): Delete.
21307         * config/score/score7.h (score7_gen_cmp): Delete.
21308
21309         * config/sh/sh-protos.h (prepare_scc_operands): Rename to...
21310         (sh_emit_scc_to_t): ... this.  Return void.
21311         (from_compare): Rename to...
21312         (sh_emit_compare_and_branch): ... this.
21313         (sh_emit_compare_and_set): New.
21314         (sh_expand_t_scc): Accept operands.
21315         * config/sh/predicates.md (sh_float_comparison_operator): New.
21316         * config/sh/sh.c (sh_compare_op0, sh_compare_op1): Delete.
21317         (prepare_scc_operands): Rename to...
21318         (sh_emit_scc_to_t): ... this.  Return void.  Get op0/op1 from
21319         arguments.
21320         (sh_emit_cheap_store_flag): New.
21321         (sh_emit_set_t_insn): New.
21322         (from_compare): Rename to...
21323         (sh_emit_compare_and_branch): ... this.  Accept mode.  Rewrite
21324         handling of TARGET_SH2E floating point to avoid recursive call.
21325         Generate branch here.
21326         (sh_emit_compare_and_set): New.
21327         (sh_expand_t_scc): Get op0/op1 from arguments.
21328         (sh_emit_cheap_store_flag): New.
21329         * config/sh/sh.md (cbranchdi4, cbranchsi4): Include -mno-cbranchdi
21330         cases.
21331         (cbranchdi4_i): Use an "I08" constraint instead of an "i" constraint.
21332         (cmpsi, cmpdi, cmpsf, cmpdf): Delete.
21333         (movsicc, movdicc): Do nothing when it recreated operands from
21334         sh_compare_*. Use sh_emit_cheap_store_flag.  Adjust call to
21335         prepare_scc_operands (now sh_emit_scc_to_t).
21336         (udivdi3): Use cstoresi4.
21337         (beq_media, bne_media, bge_media, bgtu_media, bgeu_media, beq,
21338         bne, bgt, blt, ble, bge, bgtu, bltu, bgeu, bleu, bunordered): Delete.
21339         (cbranchint4_media, cbranchfp4_media): New.
21340         (casesi): Use cbranchdi4.
21341         (seq, slt, sle, sgt, sge, sgtu, sltu, sgeu, sne, sleu, sunordered):
21342         Delete.
21343         (cstore4_media, cstoresi4, cstoredi4, cstoresf4, cstoredf4): New.
21344         (movnegt): Remove second operand.
21345         (cbranchsf4, cbranchdf4): New.
21346         (stack_protect): Use cbranchdi4/cbranchsi4.
21347
21348         * config/sparc/sparc.c (sparc_compare_op0, sparc_compare_op1): Delete.
21349         (gen_compare_reg): Accept comparison, extract part of it to...
21350         (gen_compare_reg_1): ... this.
21351         (gen_compare_operator): Delete.
21352         (gen_v9_scc): Accept separate destination, comparison code and arms.
21353         Do not use sparc_compare_op0/sparc_compare_op1.
21354         (emit_scc_insn, emit_conditional_branch_insn): New.
21355         (emit_v9_brxx): Make static.  Remove useless assertion.
21356         (sparc_emit_float_lib_cmp): Return RTL instead of calling
21357         emit_cmp_insn.
21358         (sparc_expand_compare_and_swap_12): Use gen_compare_reg_1+cbranchcc4.
21359         * config/sparc/sparc-protos.h (gen_compare_reg,
21360         sparc_emit_float_lib_cmp): Adjust prototype.
21361         (emit_scc_insn, emit_conditional_branch_insn): New.
21362         (gen_v9_scc, emit_v9_brxx_insn, gen_compare_operator): Delete.
21363         * config/sparc/sparc.h (sparc_compare_op0, sparc_compare_op1): Delete.
21364         * config/sparc/sparc.md (P, I, F, V32, V32I, V64, V64I): Move all
21365         iterators to the top.
21366         (cmpsi, cmpdi, cmpsf, cmpdf, cmptf, seqsi_special_extend,
21367         snesi_special_extend, sCC, bCC, seqdi_special_trunc,
21368         snedi_special_trunc): Delete.
21369         (seqdi_special, snedi_special): Use expansion of seqdi_special_trunc
21370         and snedi_special_trunc.
21371         (cstoresi4, cstoredi4, cstore<F:mode>4, cbranchcc4, cbranchsi4,
21372         cbranchdi4, cbranch<F:mode>4): New.
21373         (mov<I:mode>cc, mov<F:mode>cc): Handle sparc_emit_float_lib_cmp
21374         here.  Use gen_compare_reg instead of gen_compare_operator.
21375         (conditional_trap): Replace with...
21376         (ctrapsi4, ctrapdi4): ... this.
21377         (stack_protect_test): Use cbranchcc4.
21378
21379         * config/spu/spu-protos.h (spu_emit_branch_or_set): Change second
21380         argument to rtx.
21381         * config/spu/spu.c (spu_compare_op0, spu_compare_op1): Remove.
21382         (spu_emit_branch_or_set): Get code/op0/op1 from second argument.
21383         Change spu_compare_op0/op1 to op0/op1 throughout.  Get target
21384         from operands[0] or operands[3] depending on is_set.
21385         * config/spu/spu.h (spu_compare_op0, spu_compare_op1): Remove.
21386         * config/spu/spu.md (cmp<mode:VQHSI>, cmp<mode:DTI>, cmp<mode:VSF>,
21387         cmpdf, bCC), sCC: Remove.
21388         (cbranch<mode:VQHSI>4, cbranch<mode:DTI>, cbranch<mode:VSF>4,
21389         cbranchdf4, cstore<mode:VQHSI>4, cstore<mode:DTI>, cstore<mode:VSF>4,
21390         cstoredf4): New.
21391         (mov<mode>cc): Accept ordered_comparison_operator, adjust call to
21392         spu_emit_branch_or_set.
21393
21394         * config/stormy16/stormy16-protos.h (xstormy16_emit_cbranch):
21395         Add two arguments.
21396         * config/stormy16/stormy16.h (xstormy16_compare_op0,
21397         xstormy16_compare_op1): Delete.
21398         * config/stormy16/stormy16.c (xstormy16_compare_op0,
21399         xstormy16_compare_op1): Delete.
21400         (xstormy16_emit_cbranch): Get op0/op1 from the new arguments.
21401         Adjust calls.
21402         * config/stormy16/stormy16.md (cbranchsi4, cbranchhi4): New.
21403         (cmphi, cmpsi, bCC): Remove.
21404
21405         * config/v850/v850.md (tstsi, cmpsi): Fold into...
21406         (*cmpsi): ... this one.
21407         (cbranchsi4, cstoresi4): New.
21408         (bCC expanders): Delete.
21409         (sCC insns): Fold into...
21410         (*setcc): ... this one.
21411         (casesi): Do not use gen_cmpsi and gen_bgtu.
21412         (various splits): Wrap "naked" RHS of a cc0 set with COMPARE.
21413         (movsicc): Simplify.
21414         * config/v850/v850.c (v850_rtx_costs): Handle ZERO_EXTRACT in COMPARE.
21415
21416         * config/vax/vax-protos.h (cond_name): New.
21417         (vax_output_conditional_branch): Remove.
21418         * config/vax/vax.c (cond_name): New.
21419         (vax_output_conditional_branch): Remove.
21420         * config/vax/vax.h (PRINT_OPERAND): Dispatch %c to cond_name.
21421         * config/vax/vax.md (tst<VAXint>, tst<VAXfp>): Remove.
21422         (cmp<VAXint>, cmp<VAXfp>): Privatize.  Add constraints for tst.
21423         (bit<VAXint>): Wrap source with (compare).
21424         (b<code> and following unnamed pattern): Rename to *branch and
21425         *branch_reversed.  Change macroization to match_operator.
21426         (cbranch<VAXint>4, cbranch<VAXfp>4): New.
21427
21428         * config/xtensa/predicates.md (xtensa_cstoresi_operator): New.
21429         * config/xtensa/xtensa-protos.h (xtensa_expand_conditional_branch):
21430         Change last argument to machine_mode.
21431         (xtensa_expand_scc): Add machine_mode argument.
21432         * config/xtensa/xtensa.c (branch_cmp, branch_type): Remove.
21433         (gen_conditional_move, xtensa_expand_conditional_branch,
21434         xtensa_expand_scc, xtensa_expand_conditional_move): Use mode
21435         instead of branch_type, fetch cmp0/cmp1/test_code from operands[].
21436         Adjust operand numbers.
21437         * config/xtensa/xtensa.h (enum cmp_type, branch_cmp, branch_type):
21438         Delete.
21439         * config/xtensa/xtensa.md (any_cond, any_scc): Delete.
21440         (cmpsi, cmpsf, b<code>, s<code>): Delete.
21441         (cbranchsi4, cbranchsf4, cstoresi4, cstoresf4): New.
21442
21443 2009-05-12  Paolo Bonzini  <bonzini@gnu.org>
21444
21445         * optabs.c (prepare_cmp_insn): Temporarily disable test that
21446         causes spurious differences between trunk and cond-optab branch.
21447
21448 2009-05-12  Alexandre Oliva  <aoliva@redhat.com>
21449
21450         PR target/37137
21451         * doc/install.texi (STAGE1_TFLAGS, BUILD_CONFIG): Document.
21452
21453 2009-05-12  Alexandre Oliva  <aoliva@redhat.com>
21454
21455         * tree.c (iterative_hash_pointer): Delete.
21456         (iterative_hash_expr): Short-circuit handling of NULL pointer.
21457         Hash UIDs and versions of SSA names.  Don't special-case built-in
21458         function declarations.
21459
21460 2009-05-11  Ian Lance Taylor  <iant@google.com>
21461
21462         PR bootstrap/40103
21463         * graphite.c: Force -Wc++-compat to only be a warning before
21464         #including "cloog/cloog.h".
21465
21466 2009-05-11  Martin Jambor  <mjambor@suse.cz>
21467
21468         * ipa-cp.c (ipcp_cloning_candidate_p): Add missing return false.
21469
21470 2009-05-11  Jan Hubicka  <jh@suse.cz>
21471
21472         * tree-ssa-loop-ivcanon.c: Include target.h
21473         (struct loop_size): new structure.
21474         (constant_after_peeling): New predicate.
21475         (tree_estimate_loop_size): New function.
21476         (estimated_unrolled_size): Rewrite for new estimates.
21477         (try_unroll_loop_completely): Use new estimates.
21478         * Makefile.in (tree-ssa-loop-ivcanon.o): Add dependenc on target.h
21479
21480 2009-05-11  Andrew Pinski  <andrew_pinski@playstation.sony.com>
21481
21482         * config/spu/spu-c.c (spu_categorize_keyword): Update for recent
21483         libcpp interface change.
21484         (spu_macro_to_expand): Likewise.
21485
21486 2009-05-11  Paolo Bonzini  <bonzini@gnu.org>
21487
21488         PR tree-optimization/40026
21489         * gimplify.c (gimplify_init_constructor): Change initial conditional
21490         to assertion.  Rewrite TREE_OPERAND (*expr_p, 1) after
21491         optimize_compound_literals_in_ctor.
21492
21493 2009-05-11  Nathan Sidwell  <nathan@codesourcery.com>
21494
21495         * config/m68k/m68k-devices.def (52274, 52277, 5301x, 5225x, 51xx):
21496         New devices.
21497         * doc/invoke.texi (M680x0 Options): Document new coldfire cpus.
21498
21499 2009-05-11  H.J. Lu  <hongjiu.lu@intel.com>
21500
21501         * tree-vect-data-refs.c (vect_analyze_group_access): Use
21502         HOST_WIDE_INT for gap.
21503
21504 2009-05-11  Ira Rosen  <irar@il.ibm.com>
21505
21506         PR tree-optimization/40074
21507         * tree-vect-data-refs.c (vect_analyze_group_access): Take gaps into
21508         account in group size and step comparison.
21509
21510 2009-05-11  Richard Guenther  <rguenther@suse.de>
21511
21512         * passes.c (init_optimization_passes): Strip now incorrect comment.
21513         (execute_function_todo): Do not set PROP_alias.
21514         * tree-pass.h (PROP_alias): Remove.
21515         * tree-ssa-structalias.c (pass_build_alias): Do not provide PROP_alias.
21516         * tree-if-conv.c (pass_if_conversion): Do not require PROP_alias.
21517         * tree-nrv.c (pass_return_slot): Likewise.
21518         * tree-object-size.c (pass_object_sizes): Likewise.
21519         * tree-ssa-dom.c (pass_dominator): Likewise.
21520         (pass_phi_only_cprop): Likewise.
21521         * tree-ssa-dse.c (pass_dse): Likewise.
21522         * tree-ssa-phiopt.c (pass_phiopt): Likewise.
21523         (pass_cselim): Likewise.
21524         * tree-ssa-pre.c (pass_pre): Likewise.
21525         (pass_fre): Likewise.
21526         * tree-ssa-reassoc.c (pass_reassoc): Likewise.
21527         * tree-ssa-sink.c (pass_sink_code): Likewise.
21528         * tree-stdarg.c (pass_stdarg): Likewise.
21529         * tree-tailcall.c (pass_tail_calls): Likewise.
21530         * tree-vrp.c (pass_vrp): Likewise.
21531
21532 2009-05-10  Ian Lance Taylor  <iant@google.com>
21533
21534         * basic-block.h (enum profile_status): Break out of struct
21535         control_flow_graph.
21536         * cgraph.h (struct inline_summary): Break out of struct
21537         cgraph_local_info.
21538         * cgraphunit.c (enum cgraph_order_sort_kind): New enum, broken out
21539         of struct cgraph_order_sort.
21540         * combine.c (enum undo_kind): New enum, broken out of struct undo.
21541         * cse.c (struct branch_path): Break out of struct
21542         cse_basic_block_data.
21543         * except.h (enum eh_region_type): Break out of struct eh_region.
21544         * gcc.c (enum add_del): Break out of struct modify_target.
21545         * genrecog.c (enum decision_type): Break out of struct decision_test.
21546         * ggc-page.c (struct ggc_pch_ondisk): Break out of struct
21547         ggc_pch_data.
21548         * matrix-reorg.c (struct free_info): Break out of struct matrix_info.
21549         * regmove.c (enum match_use): New enum, broken out of struct match.
21550         * sched-int.h (enum post_call_group): New enum, broken out of
21551         struct deps.
21552         (struct deps_reg): Break out of struct deps.
21553         * target.h (struct asm_int_op): Break out of struct gcc_target.
21554         * tree-eh.c (struct goto_queue_node): Break out of struct
21555         leh_tf_state.
21556         * tree-inline.h (enum copy_body_cge_which): Break out of
21557         copy_body_data.
21558         * tree-pass.h (enum opt_pass_type): Break out of struct opt_pass.
21559
21560         * c-decl.c (in_struct, struct_types): New static variables.
21561         (pushtag): Add loc parameter.  Change all callers.
21562         (lookup_tag): Add ploc parameter.  Change all callers.
21563         (check_compound_literal_type): New function.
21564         (parser_xref_tag): Add loc parameter.  Change all callers.  If
21565         -Wc++-compat, warn about struct/union/enum types defined within a
21566         struct or union.
21567         (start_struct): Add enclosing_in_struct, enclosing_struct_types,
21568         and loc parameters.  Change all callers.  Change error calls to
21569         error_at, using loc.  For a redefinition, if the location of the
21570         original definition is known, report it.  Set in_struct and
21571         struct_types.  If -Wc++-compat warn if in sizeof, typeof, or alignof.
21572         (finish_struct): Add new parameters enclosing_in_struct and
21573         enclosing_struct_types.  Change all callers.  Set
21574         C_TYPE_DEFINED_IN_STRUCT for all struct/union/enum types defined
21575         in the struct.  If in a struct, add this struct to struct_types.
21576         (start_enum): Add loc parameter.  Change all callers.  Use
21577         error_at for errors, using loc.  For a redefinition, if the
21578         location of the original definition is known, report it.  If in a
21579         struct, add this enum type to struct_types.  If -Wc++-compat warn
21580         if in sizeof, typeof, or alignof.
21581         * c-parser.c (disable_extension_diagnostics): Disable -Wc++-compat.
21582         (enable_extension_diagnostics): Reenable -Wc++-compat if appropriate.
21583         (c_parser_enum_specifier): Get enum location for start_enum.
21584         (c_parser_struct_or_union_specifier): Get struct location for
21585         start_struct.  Save in_struct and struct_types status between
21586         start_struct and finish_struct.
21587         (c_parser_cast_expression): Get location of cast.
21588         (c_parser_alignof_expression): Get location of type.
21589         (c_parser_postfix_expression): Likewise.
21590         (c_parser_postfix_expression_after_paren_type): Add type_loc
21591         parameter.  Change all callers.  Call check_compound_literal_type.
21592         Use type_loc for error about variable size type.
21593         * c-typeck.c (build_external_ref): If -Wc++-compat, warn about a use
21594         of an enum constant from an enum type defined in a struct or union.
21595         (c_cast_expr): Add loc parameter.  Change all callers.  If
21596         -Wc++-compat, warn about defining a type in a cast.
21597         * c-tree.h (C_TYPE_DEFINED_IN_STRUCT): Define.
21598         (start_enum, start_struct, finish_struct): Update declarations.
21599         (parser_xref_tag, c_cast_expr): Update declarations.
21600         (check_compound_literal_type): Declare.
21601
21602 2009-05-11  Ben Elliston  <bje@au.ibm.com>
21603
21604         * config/rs6000/rs6000-c.c (altivec_categorize_keyword): Update
21605         for recent libcpp interface change.
21606         (rs6000_macro_to_expand): Likewise.
21607
21608 2009-05-10  Michael Matz  <matz@suse.de>
21609
21610         PR target/40031
21611         * config/arm/arm.c (require_pic_register): Emit on entry edge,
21612         not at entry of function.
21613
21614 2009-05-10  Richard Guenther  <rguenther@suse.de>
21615
21616         PR tree-optimization/40081
21617         Revert
21618         * tree-sra.c (instantiate_element): Instantiate scalar replacements
21619         using the main variant of the element type.  Do not fiddle with
21620         TREE_THIS_VOLATILE or TREE_SIDE_EFFECTS.
21621
21622         * tree-sra.c (sra_type_can_be_decomposed_p): Do not decompose
21623         structs with volatile fields.
21624
21625 2009-05-10  Jan Hubicka  <jh@suse.cz>
21626
21627         * tree-inline.c (delete_unreachable_blocks_update_callgraph): Declare.
21628         (estimate_move_cost): Assert that it does not get called for
21629         VOID_TYPE_P.
21630         (estimate_num_insns): Skip VOID types in argument handling.
21631         (optimize_inline_calls): Delete unreachable blocks and verify that
21632         callgraph is valid.
21633
21634 2009-05-10  Jan Hubicka  <jh@suse.cz>
21635
21636         * cgraphbuild.c (record_reference): Use cgraph_mark_address_taken_node.
21637         * cgraph.c (cgraph_mark_address_taken_node): New function.
21638         (dump_cgraph_node): Dump new flag.
21639         * cgraph.h (struct cgraph_node): Add address_taken.
21640         (cgraph_mark_address_taken_node): New function.
21641         * ipa.c (cgraph_postorder): Prioritize functions with address taken
21642         since new direct calls can be born.
21643
21644 2009-05-10  Joseph Myers  <joseph@codesourcery.com>
21645
21646         * c-lex.c (c_lex_with_flags): Expect cpp_hashnode in
21647         tok->val.node.node.
21648
21649 2009-05-10  Jan Hubicka  <jh@suse.cz>
21650
21651         PR middle-end/40084
21652         * cgraph.c (cgraph_update_edges_for_call_stmt_node): Take old_call
21653         argument; rewrite.
21654         (cgraph_update_edges_for_call_stmt): Take old_decl argument.
21655         * cgraph.h (cgraph_update_edges_for_call_stmt): Update prototype.
21656         * tree-inline.c (copy_bb): Set frequency correctly.
21657         (fold_marked_statements): Update call to
21658         cgraph_update_edges_for_call_stmt.
21659
21660 2009-05-10  Joseph Myers  <joseph@codesourcery.com>
21661
21662         * config/arc/arc.c (arc_handle_interrupt_attribute): Use %qE for
21663         identifiers in diagnostics.
21664         * config/arm/arm.c (arm_handle_fndecl_attribute,
21665         arm_handle_isr_attribute): Likewise.
21666         * config/avr/avr.c (avr_handle_progmem_attribute,
21667         avr_handle_fndecl_attribute, avr_handle_fntype_attribute): Likewise.
21668         * config/bfin/bfin.c (handle_int_attribute,
21669         bfin_handle_longcall_attribute, bfin_handle_l1_text_attribute,
21670         bfin_handle_l1_data_attribute, bfin_handle_longcall_attribute,
21671         bfin_handle_l1_text_attribute, bfin_handle_l1_data_attribute):
21672         Likewise.
21673         * config/darwin.c (darwin_handle_kext_attribute,
21674         darwin_handle_weak_import_attribute): Likewise.
21675         * config/h8300/h8300.c (h8300_handle_fndecl_attribute,
21676         h8300_handle_eightbit_data_attribute,
21677         h8300_handle_tiny_data_attribute): Likewise.
21678         * config/i386/i386.c (ix86_handle_cconv_attribute,
21679         ix86_handle_abi_attribute, ix86_handle_struct_attribute): Likewise.
21680         * config/i386/winnt.c (ix86_handle_shared_attribute,
21681         ix86_handle_selectany_attribute): Likewise.
21682         * config/ia64/ia64.c (ia64_handle_model_attribute): Likewise.
21683         * config/m32c/m32c.c (function_vector_handler): Likewise.
21684         * config/m68hc11/m68hc11.c (m68hc11_handle_page0_attribute,
21685         m68hc11_handle_fntype_attribute): Likewise.
21686         * config/m68k/m68k.c (m68k_handle_fndecl_attribute): Likewise.
21687         * config/mcore/mcore.c (mcore_handle_naked_attribute): Likewise.
21688         * config/mips/mips.c (mips_insert_attributes,
21689         mips_merge_decl_attributes, mips_expand_builtin): Likewise.
21690         * config/rs6000/rs6000.c (rs6000_handle_longcall_attribute,
21691         rs6000_handle_struct_attribute): Likewise.
21692         * config/sh/sh.c (sh_insert_attributes,
21693         sh_handle_resbank_handler_attribute,
21694         sh_handle_interrupt_handler_attribute,
21695         sh2a_handle_function_vector_handler_attribute,
21696         sh_handle_sp_switch_attribute, sh_handle_trap_exit_attribute):
21697         Likewise.
21698         * config/sh/symbian.c (sh_symbian_mark_dllimport): Likewise.
21699         * config/spu/spu.c (spu_handle_fndecl_attribute,
21700         spu_handle_vector_attribute): Likewise.
21701         * config/stormy16/stormy16.c
21702         (xstormy16_handle_interrupt_attribute): Likewise.
21703         * config/v850/v850-c.c (ghs_pragma_section): Likewise.
21704         * config/v850/v850.c (v850_handle_interrupt_attribute): Likewise.
21705
21706 2009-05-10  Joseph Myers  <joseph@codesourcery.com>
21707
21708         * pretty-print.h (struct pretty_print_info): Add translate_identifiers.
21709         (pp_translate_identifiers): New.
21710         (pp_identifier): Only conditionally translate identifier to locale
21711         character set.
21712         * pretty-print.c (pp_construct): Set pp_translate_identifiers.
21713         (pp_base_tree_identifier): Only conditionally translate identifier
21714         to locale character set.
21715         * c-pretty-print.c (M_): Define.
21716         (pp_c_type_specifier, pp_c_primary_expression): Mark English
21717         fragments for conditional translation with M_.
21718         * tree-pretty-print.c (maybe_init_pretty_print): Disable
21719         identifier translation.
21720
21721 2009-05-10  Richard Guenther  <rguenther@suse.de>
21722
21723         PR tree-optimization/40081
21724         * tree-sra.c (instantiate_element): Instantiate scalar replacements
21725         using the main variant of the element type.  Do not fiddle with
21726         TREE_THIS_VOLATILE or TREE_SIDE_EFFECTS.
21727
21728 2009-05-09  Jan Hubicka  <jh@suse.cz>
21729
21730         PR middle-end/40080
21731         * cgraphunit.c (cgraph_materialize_all_clones): Do not redirect
21732         indirect calls; verify cgraph afterwards.
21733
21734 2009-05-09  Jan Hubicka  <jh@suse.cz>
21735
21736         PR bootstrap/40082
21737         * ipa.c (update_inlined_to_pointer): New function.
21738         (cgraph_remove_unreachable_nodes): Use it.
21739
21740 2009-05-09  Jan Hubicka  <jh@suse.cz>
21741
21742         * tree-eh.c (struct leh_state): Remove prev_try.
21743         (lower_try_finally, lower_catch, lower_eh_filter, lower_cleanup): Do
21744         not track prev_try.
21745         * except.c (gen_eh_region_cleanup, duplicate_eh_regions,
21746         copy_eh_region_1, copy_eh_region, redirect_eh_edge_to_label,
21747         remove_eh_handler_and_replace, foreach_reachable_handler,
21748         verify_eh_region, verify_eh_tree): Remove tracking of prev_try pointer.
21749         * except.h (struct eh_region): Remove eh_region_u_cleanup.
21750         (gen_eh_region_cleanup): Update prototype.
21751
21752 2009-05-09  Jan Hubicka  <jh@suse.cz>
21753
21754         PR middle-end/40043
21755         * except.c (copy_eh_region): Always set prev_try.
21756         (redirect_eh_edge_to_label): Find outer try.
21757         (foreach_reachable_handler): When looking for prev try
21758         handle case where previous try is not going to be taken.
21759
21760 2009-05-07  Michael Meissner  <meissner@linux.vnet.ibm.com>
21761
21762         PR tree-optimization/40049
21763         * tree-vect-stmts.c (vectorizable_operation): If the machine has
21764         only vector/vector shifts, convert the type of the constant to the
21765         appropriate type to avoid building incorrect trees, which
21766         eventually have problems with garbage collection.
21767
21768 2009-05-08  Joseph Myers  <joseph@codesourcery.com>
21769
21770         * fold-const.c (fold_binary): Do not fold multiplication by 1 or
21771         -1 for complex floating-point types if honoring signed zeros.
21772
21773 2009-05-08  Jan Hubicka  <jh@suse.cz>
21774
21775         * cgraphbuild.c (compute_call_stmt_bb_frequency): Accept function
21776         argument; handle correctly when profile is absent.
21777         (build_cgraph_edges): Update.
21778         (rebuild_cgraph_edges): Update.
21779         * cgraph.c: Do not include varray.h.
21780         (cgraph_set_call_stmt_including_clones): New function.
21781         (cgraph_create_edge_including_clones): Likewise
21782         (cgraph_update_edges_for_call_stmt_node): New static cfunction.
21783         (cgraph_update_edges_for_call_stmt): Handle clones.
21784         (cgraph_remove_node): Handle clone tree.
21785         (cgraph_remove_node_and_inline_clones): New function.
21786         (dump_cgraph_node): Dump clone tree.
21787         (cgraph_clone_node): Handle clone tree.
21788         (clone_function_name): Bring here from tree-inline.c.
21789         (cgraph_create_virtual_clone): New function.
21790         * cgraph.h (ipa_replace_map): Move here from ipa.h.
21791         (cgraph_clone_info): New function.
21792         (strut cgraph_node): Add clone_info and new clone tree pointers.
21793         (cgraph_remove_node_and_inline_clones,
21794         cgraph_set_call_stmt_including_clones,
21795         cgraph_create_edge_including_clones,
21796         cgraph_create_virtual_clone): Declare.
21797         (cgraph_function_versioning): Use VEC argument.
21798         (compute_call_stmt_bb_frequency): Update prototype.
21799         (cgraph_materialize_all_clones): New function.
21800         * ipa-cp.c (ipcp_update_cloned_node): Remove.
21801         (ipcp_create_replace_map): Update to VECtors.
21802         (ipcp_update_callgraph): Use virtual clones.
21803         (ipcp_update_bb_counts, ipcp_update_edges_counts): Remove.
21804         (ipcp_update_profiling): Do not update local profiling.
21805         (ipcp_insert_stage): Use VECtors and virtual clones.
21806         * cgraphunit.c (verify_cgraph_node): Verify clone tree.
21807         (clone_of_p): New function.
21808         (cgraph_preserve_function_body_p): Use clone tree.
21809         (cgraph_optimize): Materialize clones.
21810         (cgraph_function_versioning): Update for VECtors.
21811         (save_inline_function_body): Use clone tree.
21812         (cgraph_materialize_clone): New function.
21813         (cgraph_materialize_all_clones): Likewise.
21814         * ipa-inline.c (cgraph_default_inline_p): Use analyzed flags.
21815         * ipa.c: Include gimple.h.
21816         (cgraph_remove_unreachable_nodes): Use clone tree.
21817         * ipa-prop.c (ipa_note_param_call): Update call to
21818         compute_call_stmt_bb_frequencycall.
21819         * ipa-prop.h (ipa_replace_map): Move to cgraph.h.
21820         * tree-inline.c: Do not include varray.h or gt-tree-inline.h.
21821         (copy_bb): Handle updating of clone tree; add new edge when new call
21822         appears.
21823         (expand_call_inline): Be strict about every call having edge.
21824         (clone_fn_id_num, clone_function_name): Move to cgraph.c.
21825         (delete_unreachable_blocks_update_callgraph): New function.
21826         (tree_function_versioning): Use VECtors; always remove unreachable
21827         blocks and fold conditionals.
21828         * tree-inline.h: Do not include varray.h.
21829         (tree_function_versioning): Remove.
21830         * Makefile.in (GTFILES): Remove tree-inline.c
21831         * passes.c (do_per_function): Do only functions having body.
21832         * ipa-struct-reorg.c (do_reorg_1, collect_data_accesses): Handle clone
21833         tree.
21834
21835 2009-05-08  H.J. Lu  <hongjiu.lu@intel.com>
21836             Andrew Morrow  <acm@google.com>
21837
21838         PR c/36892
21839         * c-common.c (c_common_attribute_table): Permit deprecated
21840         attribute to take an optional argument.
21841         (handle_deprecated_attribute): If the optional argument to
21842         __attribute__((deprecated)) is not a string ignore the attribute
21843         and emit a warning.
21844
21845         * c-decl.c (grokdeclarator): Updated warn_deprecated_use call.
21846         * c-typeck.c (build_component_ref): Likewise.
21847         (build_external_ref): Likewise.
21848
21849         * toplev.c (warn_deprecated_use): Add an attribute argument.
21850         Emit the message associated with __attribute__((deprecated)).
21851
21852         * toplev.h (warn_deprecated_use): Updated.
21853
21854         * doc/extend.texi: Document new optional parameter to
21855         __attribute__((deprecated))
21856
21857 2009-05-08  Michael Eager <eager@eagercon.com>
21858
21859         * config/rs6000/rs6000.md (*movdf_softfloat32): replace
21860         !TARGET_DOUBLE_FLOAT with TARGET_SINGLE_FLOAT.
21861
21862 2009-05-08  Richard Guenther  <rguenther@suse.de>
21863
21864         PR tree-optimization/40062
21865         * tree-scalar-evolution.c (follow_ssa_edge_in_condition_phi):
21866         Avoid exponential behavior.
21867
21868 2009-05-08  Paolo Bonzini  <bonzini@gnu.org>
21869
21870         PR rtl-optimization/33928
21871         PR 26854
21872         * fwprop.c (use_def_ref, get_def_for_use, bitmap_only_bit_bitween,
21873         process_uses, build_single_def_use_links): New.
21874         (update_df): Update use_def_ref.
21875         (forward_propagate_into): Use get_def_for_use instead of use-def
21876         chains.
21877         (fwprop_init): Call build_single_def_use_links and let it initialize
21878         dataflow.
21879         (fwprop_done): Free use_def_ref.
21880         (fwprop_addr): Eliminate duplicate call to df_set_flags.
21881         * df-problems.c (df_rd_simulate_artificial_defs_at_top,
21882         df_rd_simulate_one_insn): New.
21883         (df_rd_bb_local_compute_process_def): Update head comment.
21884         (df_chain_create_bb): Use the new RD simulation functions.
21885         * df.h (df_rd_simulate_artificial_defs_at_top,
21886         df_rd_simulate_one_insn): New.
21887         * opts.c (decode_options): Enable fwprop at -O1.
21888         * doc/invoke.texi (-fforward-propagate): Document this.
21889
21890 2009-05-08  Joseph Myers  <joseph@codesourcery.com>
21891
21892         PR c/24581
21893         * c-typeck.c (build_binary_op): Handle arithmetic between one real
21894         and one complex operand specially.
21895         * tree-complex.c (some_nonzerop): Do not identify a real value as
21896         zero if flag_signed_zeros.
21897
21898 2009-05-08  Paolo Bonzini  <bonzini@gnu.org>
21899
21900         PR rtl-optimization/33928
21901         * loop-invariant.c (record_use): Fix && vs. || mishap.
21902
21903 2009-05-08  Paolo Bonzini  <bonzini@gnu.org>
21904
21905         PR rtl-optimization/33928
21906         * loop-invariant.c (struct use): Add addr_use_p.
21907         (struct def): Add n_addr_uses.
21908         (struct invariant): Add cheap_address.
21909         (create_new_invariant): Set cheap_address.
21910         (record_use): Accept df_ref.  Set addr_use_p and update n_addr_uses.
21911         (record_uses): Pass df_ref to record_use.
21912         (get_inv_cost): Do not add inv->cost to comp_cost for cheap addresses
21913         used only as such.
21914
21915 2009-05-08  Kaz Kojima  <kkojima@gcc.gnu.org>
21916
21917         * config/sh/sh.c: Do not include c-pragma.h.
21918
21919 2009-05-07  Andrew Pinski  <andrew_pinski@playstation.sony.com>
21920
21921         * config/spu/spu.c: Remove include of c-common.h.
21922
21923 2009-05-07  Janis Johnson  <janis187@us.ibm.com>
21924
21925         PR c/39037
21926         * c-common.h (mark_valid_location_for_stdc_pragma,
21927         valid_location_for_stdc_pragma_p, set_float_const_decimal64,
21928         clear_float_const_decimal64, float_const_decimal64_p): New.
21929         * c.opt (Wunsuffixed-float-constants): New.
21930         * c-lex.c (interpret_float): Use pragma FLOAT_CONST_DECIMAL64 for
21931         unsuffixed float constant, handle new warning.
21932         * c-cppbuiltin.c (c_cpp_builtins): Use cast for double constants.
21933         * c-decl.c (c_scope): New flag float_const_decimal64.
21934         (set_float_const_decimal64, clear_float_const_decimal64,
21935         float_const_decimal64_p): New.
21936         (push_scope): Set new flag.
21937         * c-parser.c (c_parser_translation_unit): Mark when it's valid
21938         to use STDC pragmas.
21939         (c_parser_external_declaration): Ditto.
21940         (c_parser_compound_statement_nostart): Ditto.
21941         * c-pragma.c (valid_location_for_stdc_pragma,
21942         mark_valid_location_for_stdc_pragma,
21943         valid_location_for_stdc_pragma_p, handle_stdc_pragma,
21944         handle_pragma_float_const_decimal64): New.
21945         (init_pragma): Register new pragma FLOAT_CONST_DECIMAL64.
21946         * cp/semantics.c (valid_location_for_stdc_pragma_p,
21947         set_float_const_decimal64, clear_float_const_decimal64,
21948         float_const_decimal64_p): New dummy functions.
21949         * doc/extend.texi (Decimal Float): Remove statement that the
21950         pragma, and suffix for double constants, are not supported.
21951         * doc/invoke.texi (Warning Options): List new option.
21952         (-Wunsuffixed-float-constants): New.
21953
21954 2009-05-08  Steven Bosscher  <steven@gcc.gnu.org>
21955
21956         * config/i386/i386.c: Do not include c-common.h.
21957
21958 2009-05-07  Mark Heffernan  <meheff@google.com>
21959
21960         * doc/invoke.texi (Debugging Options): Document change of debugging
21961         dump location.
21962         * opts.c (decode_options): Make dump_base_name relative to
21963         aux_base_name directory.
21964
21965 2009-05-07  Hariharan Sandanagobalane <hariharan@picochip.com>
21966
21967         * config/picochip/picochip.h (NO_DOLLAR_IN_LABEL): Added.
21968         * config/picochip/libgccExtras/divmod15.asm : Removed redefiniton.
21969
21970 2009-05-07  Rafael Avila de Espindola  <espindola@google.com>
21971
21972         * Makefile.in (install-plugin): Simplify a bit.
21973
21974 2009-05-07  Paolo Bonzini  <bonzini@gnu.org>
21975
21976         * Makefile.in (OBJS-common): Add regcprop.o.
21977         (regcprop.o): New.
21978         * timevar.def (TV_CPROP_REGISTERS): New.
21979         * regrename.c (regrename_optimize): Return 0.
21980         (rest_of_handle_regrename): Delete.
21981         (pass_rename_registers): Point to regrename_optimize.
21982         (struct value_data_entry, struct value_data,
21983         kill_value_one_regno, kill_value_regno, kill_value,
21984         set_value_regno, init_value_data, kill_clobbered_value,
21985         kill_set_value, kill_autoinc_value, copy_value,
21986         mode_change_ok, maybe_mode_change, find_oldest_value_reg,
21987         replace_oldest_value_reg, replace_oldest_value_addr,
21988         replace_oldest_value_mem, copyprop_hardreg_forward_1,
21989         debug_value_data, validate_value_data): Move...
21990         * regcprop.c: ... here.
21991         (rest_of_handle_cprop): Delete.
21992         (pass_cprop_hardreg): Point to copyprop_hardreg_forward.
21993
21994 2009-05-07  Jakub Jelinek  <jakub@redhat.com>
21995
21996         PR middle-end/40057
21997         * dojump.c (prefer_and_bit_test): Use immed_double_const instead of
21998         GEN_INT for 1 << bitnum.
21999         (do_jump) <case BIT_AND_EXPR>: Use build_int_cst_wide_type instead of
22000         build_int_cst_type.
22001
22002 2009-05-07  Uros Bizjak  <ubizjak@gmail.com>
22003
22004         * doc/md.texi (Standard Pattern Names For Generation) [sync_nand]:
22005         Remove wrong description of "nand" operation.
22006
22007 2009-05-06  Richard Guenther  <rguenther@suse.de>
22008             Adam Nemet  <anemet@caviumnetworks.com>
22009
22010         * gimple.def (GIMPLE_ASSIGN): Fix incorrect information in the
22011         comment.  Add that if LHS is not a gimple register, then RHS1 has
22012         to be a single object (GIMPLE_SINGLE_RHS).
22013
22014 2009-05-06  Adam Nemet  <anemet@caviumnetworks.com>
22015
22016         * expr.c (get_def_for_expr): Move it up in the file.
22017         (store_field): When expanding a bit-field store, look at the
22018         defining gimple stmt for the masking conversion.
22019
22020 2009-05-06  Janis Johnson  <janis187@us.ibm.com>
22021
22022         PR middle-end/39986
22023         * dfp.c (encode_decimal32, decode_decimal32, encode_decimal64,
22024         decode_decimal64, encode_decimal128, decode_decimal128): Avoid
22025         32-bit memcpy into long.
22026
22027 2009-05-06  Jakub Jelinek  <jakub@redhat.com>
22028
22029         * dwarf2out.c (new_reg_loc_descr): Don't ever create DW_OP_regX.
22030         (one_reg_loc_descriptor): Create DW_OP_regX here instead of calling
22031         new_reg_loc_descr.
22032         (loc_by_reference): If loc is DW_OP_regX, change it into DW_OP_bregX 0
22033         instead of appending DW_OP_deref*.
22034
22035 2009-05-06  Michael Matz  <matz@suse.de>
22036
22037         PR middle-end/40021
22038         * cfgexpand.c (maybe_cleanup_end_of_block): New static function.
22039         (expand_gimple_cond): Use it to cleanup CFG and superfluous jumps.
22040
22041 2009-05-06  Rafael Avila de Espindola  <espindola@google.com>
22042
22043         * Makefile.in (install-plugin): Fix srcdir handling.
22044
22045 2009-05-06  Andrey Belevantsev  <abel@ispras.ru>
22046
22047         * tree-ssa.c (execute_update_address_taken): Handle TARGET_MEM_REF
22048         when processing for not_regs_needed bitmap.
22049         * gimple.c (walk_stmt_load_store_addr_ops): When visiting address,
22050         handle TARGET_MEM_REF in lhs.  Check TMR_BASE for NULL while
22051         handling it for rhs.
22052
22053 2009-05-06  H.J. Lu  <hongjiu.lu@intel.com>
22054
22055         * config/i386/i386.md (unnamed inc/dec peephole): Use
22056         optimize_insn_for_size_p instead of optimize_size.
22057         * config/i386/predicates.md (incdec_operand): Likewise.
22058         (aligned_operand): Likewise.
22059         * config/i386/sse.md (divv8sf3): Likewise.
22060         (sqrtv8sf2): Likewise.
22061
22062 2009-05-06  H.J. Lu  <hongjiu.lu@intel.com>
22063
22064         * config/i386/i386.c (ix86_build_signbit_mask): Make it static.
22065
22066         * config/i386/i386-protos.h (ix86_build_signbit_mask): Removed.
22067
22068 2009-05-06  H.J. Lu  <hongjiu.lu@intel.com>
22069
22070         * config/i386/i386.md (*avx_<code><mode>3_finite): Replace
22071         ssemodesuffixf2c with avxmodesuffixf2c.
22072
22073 2009-05-06  Joseph Myers  <joseph@codesourcery.com>
22074
22075         PR c/40032
22076         * c-decl.c (grokdeclarator): Handle incomplete type of unnamed field.
22077
22078 2009-05-05  Jakub Jelinek  <jakub@redhat.com>
22079
22080         * tree.h: Remove DECL_BY_REFERENCE from private_flag comment.
22081         (struct tree_base): Adjust spacing for 8 bit boundaries.
22082         (struct tree_decl_common): Add decl_by_reference_flag bit.
22083         (DECL_BY_REFERENCE): Adjust.
22084         * print-tree.c (print_node): For VAR_DECL, PARM_DECL or RESULT_DECL,
22085         print DECL_BY_REFERENCE bit.
22086         * dbxout.c (DECL_ACCESSIBILITY_CHAR): Revert last change.
22087         * dwarf2out.c (loc_by_reference, gen_decl_die): Check
22088         DECL_BY_REFERENCE for all VAR_DECLs, not just non-static ones.
22089         (gen_variable_die): Likewise.  Check TREE_PRIVATE/TREE_PROTECTED
22090         unconditionally.
22091
22092         PR middle-end/39666
22093         * gimplify.c (gimplify_switch_expr): If case labels cover the whole
22094         range of the type, but default label is missing, add it with one
22095         of the existing labels instead of adding a new label for it.
22096
22097 2009-05-05  Joseph Myers  <joseph@codesourcery.com>
22098
22099         * dwarf.h: Remove.
22100
22101 2009-05-05  Rafael Avila de Espindola  <espindola@google.com>
22102
22103         * Makefile.in (enable_plugin, plugin_includedir): New.
22104         (install): Depend on install-plugin.
22105         (PLUGIN_HEADERS): New.
22106         (install-plugin): New.
22107         * config.gcc: Add vxworks-dummy.h to tm_file for x86 and x86-64.
22108
22109 2009-05-05  Richard Guenther  <rguenther@suse.de>
22110
22111         PR tree-optimization/40022
22112         * tree-ssa-phiprop.c (struct phiprop_d): Exchange vop_stmt for
22113         the only vuse.
22114         (phivn_valid_p): Fix tuplification error, simplify.
22115         (phiprop_insert_phi): Add dumps.
22116         (propagate_with_phi): Simplify.
22117
22118 2009-05-05  Richard Guenther  <rguenther@suse.de>
22119
22120         PR middle-end/40023
22121         * builtins.c (gimplify_va_arg_expr): Properly build the address.
22122
22123 2009-05-05  Shujing Zhao  <pearly.zhao@oracle.com>
22124
22125         * tree.h (strip_float_extensions): Remove duplicate declaration.
22126         (build_low_bits_mask, debug_fold_checksum, expand_function_end,
22127         expand_function_start, stack_protect_prologue, stack_protect_epilogue,
22128         block_ultimate_origin): Rearrange the declarations line to match the
22129         comment that indicates the .c file which the functions are defined.
22130         (dwarf2out_*, set_decl_rtl): Add comment.
22131         (get_base_address): Adjust comment.
22132         (change_decl_assembler_name, maybe_fold_*, build_addr): Rearrange the
22133         declarations line and add comment.
22134         (is_builtin_name): Add blank after function name, for clarity.
22135
22136 2009-05-04  Joseph Myers  <joseph@codesourcery.com>
22137
22138         * attribs.c (decl_attributes): Use %qE for identifiers in
22139         diagnostics.
22140         * cgraphunit.c (verify_cgraph_node): Translate function names to
22141         locale character set in diagnostics.
22142         * coverage.c (get_coverage_counts): Use %qE for identifiers in
22143         diagnostics.
22144         * doc/invoke.texi (-finstrument-functions-exclude-function-list):
22145         Document that functions are named in UTF-8.
22146         * expr.c (expand_expr_real_1): Translate function names to locale
22147         character set in diagnostics.
22148         * gimplify.c (omp_notice_variable, omp_is_private,
22149         gimplify_scan_omp_clauses): Use %qE for identifiers in
22150         diagnostics.
22151         * langhooks.c (lhd_print_error_function): Translate function names
22152         to locale character set.
22153         * langhooks.h (decl_printable_name): Document that return value is
22154         in internal character set.
22155         * stmt.c: Include pretty-print.h
22156         (tree_conflicts_with_clobbers_p): Use %qE for identifiers in
22157         diagnostics.
22158         (resolve_operand_name_1): Translate named operand name to locale
22159         character set.
22160         * stor-layout.c (finalize_record_size): Use %qE for identifiers in
22161         diagnostics.
22162         * toplev.c (announce_function): Translate function names to locale
22163         character set.
22164         (warn_deprecated_use): Use %qE for identifiers in diagnostics.
22165         (default_tree_printer): Use pp_identifier or translate identifiers
22166         to locale character set.  Mark "<anonymous>" for translation.
22167         * tree-mudflap.c (mx_register_decls, mudflap_finish_file): Use %qE
22168         for identifiers in diagnostics.
22169         * tree.c (handle_dll_attribute): Use %qE for identifiers in
22170         diagnostics.
22171         * varasm.c (output_constructor): Use %qE for identifiers in
22172         diagnostics.
22173
22174 2009-05-04  Rafael Avila de Espindola  <espindola@google.com>
22175
22176         * configure.ac: use ` ` instead of $()
22177         * configure: Regenerate.
22178
22179 2009-05-05  Ben Elliston  <bje@au.ibm.com>
22180
22181         * config/pa/linux-atomic.c: Eliminate conditional include of
22182         errno.h on non-LP64 systems to simplify build requirements.
22183
22184 2009-05-04  Joseph Myers  <joseph@codesourcery.com>
22185
22186         * c-common.c (handle_mode_attribute): Use %qE for identifiers in
22187         diagnostics.
22188         * c-decl.c (check_bitfield_type_and_width): Make orig_name a tree
22189         and pass value to identifier_to_locale.
22190         (warn_variable_length_array): Make name a tree.
22191         (grokdeclarator): Separate diagnostic texts for named and unnamed
22192         declarators.  Use %qE for named declarators.
22193         * c-parser.c (c_lex_one_token): Use %qE for identifiers in
22194         diagnostics.
22195         * c-pragma.c (pop_alignment, handle_pragma_pack): Use %qE for
22196         identifiers in diagnostics.
22197         * c-typeck.c (push_member_name, start_init): Pass identifiers to
22198         identifier_to_locale.  Mark "anonymous" strings for translation.
22199
22200 2009-05-04  Michael Eager <eager@eagercon.com>
22201
22202         * config/rs6000/rs6000.c (rs6000_legitimate_address): Allow
22203         address for DImode/DFmode only if double-precision FP regs.
22204
22205 2009-05-04  Michael Eager <eager@eagercon.com>
22206
22207         * config/rs6000/rs6000.c (rs6000_libcall_value): Add
22208         TARGET_SINGLE_FLOAT check.
22209
22210 2009-05-04  Michael Eager <eager@eagercon.com>
22211
22212         * config/rs6000/xilinx.h: Add CPP_SPEC for -mxilinx-fpu options.
22213
22214 2009-05-04  Michael Eager <eager@eagercon.com>
22215
22216         * gcc/config.gcc (powerpc-xilinx-eabi*): Add tm t-xilinx
22217         * config/rs6000/t-xilinx: New
22218
22219 2009-05-04  Paolo Bonzini  <bonzini@gnu.org>
22220
22221         * doc/tm.texi (LEGITIMIZE_ADDRESS): Revise documentation.
22222         * gcc/defaults.h (LEGITIMIZE_ADDRESS): Delete.
22223         * gcc/explow.c (memory_address): Use target hook.
22224         * gcc/targhooks.c (default_legitimize_address): New.
22225         * gcc/targhooks.h (default_legitimize_address): New.
22226         * gcc/target.h (legitimize_address): New.
22227         * gcc/target-def.h (TARGET_LEGITIMIZE_ADDRESS): New.
22228         (TARGET_INITIALIZER): Include it.
22229         * gcc/system.h (LEGITIMIZE_ADDRESS): Poison.
22230
22231         * config/bfin/bfin-protos.h (legitimize_address): Remove.
22232         * config/bfin/bfin.c (legitimize_address): Remove.
22233         * config/bfin/bfin.h (LEGITIMIZE_ADDRESS): Remove.
22234         * config/m68hc11/m68hc11-protos.h (m68hc11_legitimize_address):
22235         Remove.
22236         * config/m68hc11/m68hc11.c (m68hc11_legitimize_address): Remove.
22237         * config/m68hc11/m68hc11.h (LEGITIMIZE_ADDRESS): Remove.
22238
22239         * gcc/config/arm/arm.h (LEGITIMIZE_ADDRESS, ARM_LEGITIMIZE_ADDRESS,
22240         THUMB_LEGITIMIZE_ADDRESS, THUMB2_LEGITIMIZE_ADDRESS): Delete.
22241         * gcc/config/s390/s390.h (LEGITIMIZE_ADDRESS): Delete.
22242         * gcc/config/m32c/m32c.h (LEGITIMIZE_ADDRESS): Delete.
22243         * gcc/config/sparc/sparc.h (LEGITIMIZE_ADDRESS): Delete.
22244         * gcc/config/m32r/m32r.h (LEGITIMIZE_ADDRESS): Delete.
22245         * gcc/config/i386/i386.h (LEGITIMIZE_ADDRESS): Delete.
22246         * gcc/config/sh/sh.h (LEGITIMIZE_ADDRESS): Delete.
22247         * gcc/config/avr/avr.h (LEGITIMIZE_ADDRESS): Delete.
22248         * gcc/config/m68hc11/m68hc11.h (LEGITIMIZE_ADDRESS): Delete.
22249         * gcc/config/iq2000/iq2000.h (LEGITIMIZE_ADDRESS): Delete.
22250         * gcc/config/mn10300/mn10300.h (LEGITIMIZE_ADDRESS): Delete.
22251         * gcc/config/m68k/m68k.h (LEGITIMIZE_ADDRESS): Delete.
22252         * gcc/config/score/score.h (LEGITIMIZE_ADDRESS): Delete.
22253         * gcc/config/pa/pa.h (LEGITIMIZE_ADDRESS): Delete.
22254         * gcc/config/mips/mips.h (LEGITIMIZE_ADDRESS): Delete.
22255         * gcc/config/alpha/alpha.h (LEGITIMIZE_ADDRESS): Delete.
22256         * gcc/config/frv/frv.h (LEGITIMIZE_ADDRESS): Delete.
22257         * gcc/config/spu/spu.h (LEGITIMIZE_ADDRESS): Delete.
22258         * gcc/config/xtensa/xtensa.h (LEGITIMIZE_ADDRESS): Delete.
22259         * gcc/config/cris/cris.h (LEGITIMIZE_ADDRESS): Delete.
22260         * gcc/config/rs6000/rs6000.h (LEGITIMIZE_ADDRESS): Delete.
22261         * gcc/config/picochip/picochip.h (LEGITIMIZE_ADDRESS): Delete.
22262
22263         * gcc/config/s390/s390-protos.h (legitimize_address): Delete.
22264         * gcc/config/m32c/m32c-protos.h (m32c_legitimize_address): Delete.
22265         * gcc/config/sparc/sparc-protos.h (legitimize_address): Delete.
22266         * gcc/config/i386/i386-protos.h (legitimize_address): Delete.
22267         * gcc/config/avr/avr-protos.h (legitimize_address): Delete.
22268         * gcc/config/mn10300/mn10300-protos.h (legitimize_address): Delete.
22269         * gcc/config/score/score-protos.h (score_legitimize_address): Delete.
22270         * gcc/config/arm/arm-protos.h (arm_legitimize_address,
22271         (thumb_legitimize_address): Delete.
22272         * gcc/config/pa/pa-protos.h (hppa_legitimize_address): Delete.
22273         * gcc/config/mips/mips-protos.h (mips_legitimize_address): Delete.
22274         * gcc/config/alpha/alpha-protos.h (alpha_legitimize_address): Delete.
22275         * gcc/config/frv/frv-protos.h (frv_legitimize_address): Delete.
22276         * gcc/config/spu/spu-protos.h (spu_legitimize_address): Delete.
22277         * gcc/config/xtensa/xtensa-protos.h (xtensa_legitimize_address):
22278         Delete.
22279         * gcc/config/rs6000/rs6000-protos.h (rs6000_legitimize_address):
22280         Delete.
22281
22282         * config/arm/arm.c (arm_legitimize_address): Maybe call Thumb version.
22283         * config/m32c/m32c.c (m32c_legitimize_address): Standardize.
22284         * config/m32r/m32r.c (m32r_legitimize_address): New.
22285         * config/m68k/m68k.c (m68k_legitimize_address): New.
22286         * config/score/score.c (score_legitimize_address): Standardize.
22287         * config/score/score3.c (score3_legitimize_address): Standardize.
22288         * config/score/score3.h (score3_legitimize_address): Adjust.
22289         * config/score/score7.c (score7_legitimize_address): Standardize.
22290         * config/score/score7.h (score7_legitimize_address): Adjust.
22291         * config/sh/sh.c (sh_legitimize_address): New.
22292         * config/iq2000/iq2000.c (iq2000_legitimize_address): New.
22293
22294         * gcc/config/s390/s390.c (legitimize_address): Rename to...
22295         (s390_legitimize_address): ... this.
22296         * gcc/config/sparc/sparc.c (legitimize_address): Rename to...
22297         (sparc_legitimize_address): ... this.
22298         * gcc/config/i386/i386.c (legitimize_address): Rename to...
22299         (ix86_legitimize_address): ... this.
22300         * gcc/config/avr/avr.c (legitimize_address): Rename to...
22301         (avr_legitimize_address): ... this.
22302         * gcc/config/mn10300/mn10300.c (legitimize_address): Rename to...
22303         (mn10300_legitimize_address): ... this.
22304         * config/alpha/alpha.c (alpha_legitimize_address): Wrap...
22305         (alpha_legitimize_address_1): ... the old alpha_legitimize_address.
22306         (alpha_expand_mov): Adjust call.
22307
22308         * config/frv/frv.c (frv_legitimize_address): Return x on failure.
22309         * config/spu/spu.c (spu_legitimize_address): Likewise.
22310         * config/xtensa/xtensa.c (xtensa_legitimize_address): Likewise.
22311         * config/rs6000/rs6000.c (rs6000_legitimize_address): Likewise.
22312
22313 2009-05-04  Joseph Myers  <joseph@codesourcery.com>
22314
22315         * intl.c (locale_encoding, locale_utf8): New.
22316         (gcc_init_libintl): Initialize locale_encoding and locale_utf8.
22317         * intl.h (locale_encoding, locale_utf8): Declare.
22318         * pretty-print.c: Include ggc.h.  Include iconv.h if HAVE_ICONV.
22319         (pp_base_tree_identifier, decode_utf8_char, identifier_to_locale):
22320         New.
22321         * pretty-print.h (pp_identifier): Call identifier_to_locale on ID
22322         argument.
22323         (pp_tree_identifier): Define to call pp_base_tree_identifier.
22324         (pp_base_tree_identifier): Declare as function.
22325         (identifier_to_locale): Declare.
22326         * Makefile.in (pretty-print.o): Update dependencies.
22327         * varasm.c (finish_aliases_1): Use %qE for identifiers in diagnostics.
22328
22329 2009-05-04  Richard Guenther  <rguenther@suse.de>
22330
22331         PR middle-end/40015
22332         * builtins.c (fold_builtin_memory_op): Do not decay to element
22333         type if the size matches the whole array.
22334
22335 2009-05-04  Kazu Hirata  <kazu@codesourcery.com>
22336
22337         * expmed.c (synth_mult): When trying out a shift, pass the result
22338         of a signed shift.
22339
22340 2009-05-04  Kazu Hirata  <kazu@codesourcery.com>
22341
22342         * expmed.c (shiftsub_cost): Rename to shiftsub0_cost.
22343         (shiftsub1_cost): New.
22344         (init_expmed): Compute shiftsub1_cost.
22345         (synth_mult): Optimize multiplications by constants of the form
22346         -(2^^m-1) for some constant positive integer m.
22347
22348 2009-05-03  Richard Guenther  <rguenther@suse.de>
22349
22350         PR c/39983
22351         * c-typeck.c (array_to_pointer_conversion): Do not built
22352         ADDR_EXPRs of arrays of pointer-to-element type.
22353         * c-gimplify.c (c_gimplify_expr): Revert change fixing
22354         up wrong ADDR_EXPRs after-the-fact.
22355         * c-common.c (strict_aliasing_warning): Strip pointer
22356         conversions for obtaining the original type.
22357         * builtins.c (fold_builtin_memset): Handle array types.
22358         (fold_builtin_memory_op): Handle folded POINTER_PLUS_EXPRs
22359         and array types
22360
22361 2009-05-03  Richard Guenther  <rguenther@suse.de>
22362
22363         PR middle-end/23329
22364         * tree-ssa.c (useless_type_conversion_p_1): Use get_deref_alias_set.
22365         Do not lose casts from array types with unknown extent to array
22366         types with known extent.
22367         * tree-ssa-copy.c (may_propagate_copy): Remove hack checking for
22368         alias set compatibility.
22369
22370 2009-05-03  Manuel López-Ibáñez  <manu@gcc.gnu.org>
22371
22372         * flags.h (extra_warnings): Delete.
22373         * toplev.c (process_options): Handle Wuninitialized here.
22374         * opts.c (extra_warnings): Delete.
22375         (set_Wextra): Delete.
22376         (common_handle_option): -Wextra can be handled automatically.
22377         * c-opts.c (c_common_handle_option): Delete obsolete code.
22378         (c_common_post_options): Simplify comment.
22379         * common.opt (W): Add Var.
22380         (Wextra): Add Var.
22381         (Wuninitialized): Initialize to -1.
22382
22383 2009-05-03  Adam Nemet  <anemet@caviumnetworks.com>
22384             Richard Guenther  <rguenther@suse.de>
22385
22386         * expr.c (get_def_for_expr): New function.
22387         (expand_expr_real_1) <PLUS_EXPR, MINUS_EXPR>: Adjust to work with
22388         SSA rather than trees.
22389         <MULT_EXPR>: Likewise.  Use subexp0 and subexp1 instead of
22390         TREE_OPERAND (exp, 0) and TREE_OPERAND (exp, 1).
22391
22392 2009-05-03  Joseph Myers  <joseph@codesourcery.com>
22393
22394         * c-common.c (reswords): Add _Imaginary.
22395         * c-common.c (enum rid): Add RID_IMAGINARY.
22396
22397 2009-05-03  Paolo Bonzini  <bonzini@gnu.org>
22398
22399         * tree.h (TYPE_VECTOR_OPAQUE): Fix documentation.
22400         Patch by Richard Guenther.
22401
22402 2009-05-03  Anatoly Sokolov  <aesok@post.ru>
22403
22404         * defaults.h (FRAME_POINTER_REQUIRED): Provide default.
22405         * doc/tm.texi (FRAME_POINTER_REQUIRED): Revise documentation.
22406         * config/alpha/alpha.h (FRAME_POINTER_REQUIRED): Delete.
22407         * config/s390/s390.h (FRAME_POINTER_REQUIRED): Delete.
22408         * config/spu/spu.h (FRAME_POINTER_REQUIRED): Delete.
22409         * config/sh/sh.h (FRAME_POINTER_REQUIRED): Delete.
22410         * config/pdp11/pdp11.h (FRAME_POINTER_REQUIRED): Delete.
22411         * config/stormy16/stormy16.h (FRAME_POINTER_REQUIRED): Delete.
22412         * config/m68hc11/m68hc11.h (FRAME_POINTER_REQUIRED): Delete.
22413         * config/iq2000/iq2000.h (FRAME_POINTER_REQUIRED): Delete.
22414         * config/mn10300/mn10300.h (FRAME_POINTER_REQUIRED): Delete.
22415         * config/ia64/ia64.h (FRAME_POINTER_REQUIRED): Delete.
22416         * config/m68k/m68k.h (FRAME_POINTER_REQUIRED): Delete.
22417         * config/rs6000/rs6000.h (FRAME_POINTER_REQUIRED): Delete.
22418         * config/picochip/picochip.h (FRAME_POINTER_REQUIRED): Delete.
22419         * config/mcore/mcore.h (FRAME_POINTER_REQUIRED): Delete.
22420         * config/h8300/h8300.h (FRAME_POINTER_REQUIRED): Delete.
22421         * config/v850/v850.h (FRAME_POINTER_REQUIRED): Delete.
22422
22423 2009-05-02  Richard Guenther  <rguenther@suse.de>
22424
22425         PR tree-optimization/39940
22426         * tree-ssa-pre.c (eliminate): Make sure we may propagate before
22427         doing so.
22428
22429 2009-05-02  Richard Guenther  <rguenther@suse.de>
22430
22431         PR middle-end/40001
22432         * tree-ssa.c (execute_update_addresses_taken): Properly check
22433         if we can mark a variable DECL_GIMPLE_REG_P.
22434         * gimple.c (is_gimple_reg): Re-order check for DECL_GIMPLE_REG_P
22435         back to the end of the function.
22436         (is_gimple_reg_type): Remove complex type special casing.
22437         * gimplify.c (gimplify_bind_expr): Do not set DECL_GIMPLE_REG_P
22438         if not optimizing.
22439
22440 2009-05-02  Ben Elliston  <bje@au.ibm.com>
22441
22442         * doc/collect2.texi (Collect2): Document search path behaviour
22443         when configured with --with-ld.
22444
22445 2009-05-02  Jan Hubicka  <jh@suse.cz>
22446
22447         * tree-ssa-coalesce.c (coalesce_cost): Do not take ciritical
22448         parameter; update callers.
22449         (coalesce_cost_edge): EH edges are costier because they needs
22450         splitting even if not critical and even more costier when there are
22451         multiple EH predecestors.
22452
22453 2009-05-02  Jan Hubicka  <jh@suse.cz>
22454
22455         * except.c (remove_eh_handler_and_replace): Handle updating after
22456         removing TRY blocks.
22457
22458 2009-05-02  Eric Botcazou  <ebotcazou@adacore.com>
22459
22460         * store-motion.c (compute_store_table): Add ENABLE_CHECKING guard.
22461
22462 2009-05-02  Steven Bosscher  <steven@gcc.gnu.org>
22463
22464         * varasm.c: Do not include c-pragma.h.
22465         * attribs.c: Do not incude c-common.h.
22466
22467 2009-05-01  Michael Matz  <matz@suse.de>
22468
22469         * calls.c (initialize_argument_information): Handle SSA names like
22470         decls with a non MEM_P DECL_RTL.
22471
22472 2009-05-01  Steven Bosscher  <steven@gcc.gnu.org>
22473
22474         * ipa-reference.c: Do not include c-common.h, include splay-tree.h.
22475         * ipa-utils.c: Likewise.
22476         * ipa-type-escape.c: Likewise.
22477         * cgraphunit.c Do not include c-common.h.
22478         * ipa-pure-const.c: Likewise.
22479         * tree-if-conv.c: Likewise.
22480         * matrix-reorg.c: Do not include c-common.h and c-tree.h.
22481         * ipa-struct-reorg.c: Likewise.
22482         * tree-nomudflap.c: Likewise.
22483         * tree-ssa-structalias.c: Likewise.
22484
22485 2009-05-01  Steven Bosscher  <steven@gcc.gnu.org>
22486
22487         * store-motion.c: Many cleanups to make this pass a first-class
22488         citizen instead of an appendix to gcse load motion.  Add TODO list
22489         to make this pass faster/cleaner/better.
22490
22491         (struct ls_expr): Post gcse.c-split cleanups.
22492         Rename to st_expr.  Rename "loads" field to "antic_stores".  Rename
22493         "stores" field to "avail_stores".
22494         (pre_ldst_mems): Rename to store_motion_mems.
22495         (pre_ldst_table): Rename to store_motion_mems_table.
22496         (pre_ldst_expr_hash): Rename to pre_st_expr_hash, update users.
22497         (pre_ldst_expr_eq): Rename to pre_st_expr_eq, update users.
22498         (ldst_entry): Rename to st_expr_entry, update users.
22499         (free_ldst_entry): Rename to free_st_expr_entry, update users.
22500         (free_ldst_mems): Rename to free_store_motion_mems, update users.
22501         (enumerate_ldsts): Rename to enumerate_store_motion_mems,
22502         update caller.
22503         (first_ls_expr): Rename to first_st_expr, update users.
22504         (next_ls_expr): Rename to next_st_expr, update users.
22505         (print_ldst_list): Rename to print_store_motion_mems.  Print names of
22506         fields properly for store motion instead of names inherited from load
22507         motion in gcse.c.
22508         (ANTIC_STORE_LIST, AVAIL_STORE_LIST): Remove.
22509         (LAST_AVAIL_CHECK_FAILURE): Explain what this is.  Undefine when we
22510         are done with it.
22511
22512         (ae_kill): Rename to st_kill, update users.
22513         (ae_gen): Rename to st_avloc, update users.
22514         (transp): Rename to st_transp, update users.
22515         (pre_insert_map): Rename to st_insert_map, update users.
22516         (pre_delete_map): Rename to st_delete_map, update users.
22517         (insert_store, build_store_vectors, free_store_memory,
22518         one_store_motion_pass): Update for abovementioned changes.
22519
22520         (gcse_subst_count, gcse_create_count): Remove.
22521         (one_store_motion_pass): New statistics counters "n_stores_deleted"
22522         and "n_stores_created", local variables.
22523
22524         (extract_mentioned_regs, extract_mentioned_regs_1): Rewrite to
22525         use for_each_rtx.
22526
22527         (regvec, compute_store_table_current_insn): Remove.
22528         (reg_set_info, reg_clear_last_set): Remove.
22529         (compute_store_table): Use DF caches instead of local dataflow
22530         solvers.
22531
22532 2009-05-01  Joseph Myers  <joseph@codesourcery.com>
22533
22534         * c-objc-common.c (c_tree_printer): Print identifiers with
22535         pp_identifier, not pp_string.  Mark "({anonymous})" for
22536         translation.
22537         * c-pretty-print.c (pp_c_ws_string): New.
22538         (pp_c_cv_qualifier, pp_c_type_specifier,
22539         pp_c_specifier_qualifier_list, pp_c_parameter_type_list,
22540         pp_c_storage_class_specifier, pp_c_function_specifier,
22541         pp_c_attributes, pp_c_bool_constant, pp_c_constant,
22542         pp_c_primary_expression, pp_c_postfix_expression,
22543         pp_c_unary_expression, pp_c_shift_expression,
22544         pp_c_relational_expression, pp_c_equality_expression,
22545         pp_c_logical_and_expression, pp_c_logical_or_expression): Mostly
22546         use pp_string and pp_c_ws_string in place of pp_identifier and
22547         pp_c_identifier for non-identifiers.  Mark English strings for
22548         translation.
22549         * c-pretty-print.h (pp_c_ws_string): Declare.
22550
22551 2009-04-30  Paul Pluzhnikov  <ppluzhnikov@google.com>
22552             Roland McGrath <roland@redhat.com>
22553
22554         * configure.ac (HAVE_LD_BUILDID): New check for ld --build-id support.
22555         (ENABLE_LD_BUILDID): New configuration option.
22556         * gcc.c [HAVE_LD_BUILDID and ENABLE_LD_BUILDID]
22557         (LINK_BUILDID_SPEC): New macro.
22558         (init_spec): If defined, prepend it between LINK_EH_SPEC and
22559         link_spec.
22560         * doc/install.texi: Document --enable-linker-build-id option.
22561         * configure: Rebuild.
22562         * config.in: Rebuild.
22563
22564 2009-04-30  Adam Nemet  <anemet@caviumnetworks.com>
22565
22566         * config/mips/mips.h (FRAME_GROWS_DOWNWARD,
22567         MIPS_GP_SAVE_AREA_SIZE): Define new macros.
22568         (STARTING_FRAME_OFFSET): Return 0 if FRAME_GROWS_DOWNWARD.  Use
22569         MIPS_GP_SAVE_AREA_SIZE.
22570         * config/mips/mips.c (struct mips_frame_info): Update comment
22571         before arg_pointer_offset and hard_frame_pointer_offset.
22572         (mips_compute_frame_info): Update diagram before function: to
22573         correctly use stack_pointer_rtx for fp_sp_offset and gp_sp_offset, to
22574         indicate the position of frame_pointer_rtx with -fstack-protector and
22575         to show args_size.  Don't allocate cprestore area for leaf functions
22576         if FRAME_GROWS_DOWNWARD.  Use MIPS_GP_SAVE_AREA_SIZE to set
22577         cprestore_size.
22578         (mips_initial_elimination_offset): Update for FRAME_GROWS_DOWNWARD.
22579
22580 2009-04-30  Michael Matz  <matz@suse.de>
22581
22582         PR tree-optimization/39955
22583         * config/rs6000/rs6000.c (rs6000_check_sdmode): Also check SSA_NAMEs.
22584
22585 2009-04-30  Dave Korn  <dave.korn.cygwin@gmail.com>
22586
22587         * ira.c (setup_cover_and_important_classes):  Use safe macro
22588         REG_CLASS_FOR_CONSTRAINT instead of calling regclass_for_constraint
22589         directly.
22590         * genpreds.c (write_tm_preds_h):  Output suitable definition of
22591         REG_CLASS_FOR_CONSTRAINT.
22592
22593 2009-04-30  Rafael Avila de Espindola  <espindola@google.com>
22594
22595         * alloc-pool.c (alloc_pool_descriptor): Use an insert_opion value
22596         instead of an int.
22597         * bitmap.c (bitmap_descriptor): Likewise.
22598         * ggc-common.c (loc_descriptor): Likewise.
22599         * varray.c (varray_descriptor): Likewise.
22600         * vec.c (vec_descriptor): Likewise.
22601
22602 2009-04-30  Eric Botcazou  <ebotcazou@adacore.com>
22603
22604         * Makefile.in (dce.o): Add $(EXCEPT_H).
22605         * dce.c: Include except.h and delete redundant vector definitions.
22606         (deletable_insn_p): Return false for non-call insns that can throw
22607         if DF is running.
22608
22609 2009-04-30  Steven Bosscher  <steven@gcc.gnu.org>
22610
22611         * gcse.c (ae_gen): Remove.
22612         (can_assign_to_reg_p): Rename to can_assign_to_reg_without_clobbers_p
22613         and make non-static function to make it available in store-motion.c.
22614         Update call sites with search-and-replace.
22615         (enumerate_ldsts, reg_set_info, reg_clear_last_set, store_ops_ok,
22616         extract_mentioned_regs, extract_mentioned_regs_helper,
22617         find_moveable_store, compute_store_table, load_kills_store, find_loads,
22618         store_killed_in_insn, store_killed_after, store_killed_before,
22619         build_store_vectors, insert_insn_start_basic_block, insert-store,
22620         remove_reachable_equiv_notes, replace_store_insn, delete_store,
22621         free_store_memory, one_store_motion_pass, gate_rtl_store_motion,
22622         execute_rtl_store_motion, pass_rtl_store_motion): Move to...
22623         * store-motion.c: ...new file.  Also copy data structures from gcse.c
22624         and clean up to remove parts not used by store motion.
22625         * rtl.h (can_assign_to_reg_without_clobbers_p): Add prototype.
22626         * Makefile.in (store-motion.o): New rule. Add to OBJS-common.
22627
22628 2009-04-30  Ramana Radhakrishnan  <ramana.radhakrishnan@arm.com>
22629
22630         PR target/38571
22631         * config/arm/arm.h (FUNCTION_BOUNDARY): Set to 16 for thumb
22632         when optimizing for size.
22633
22634 2009-04-30  Hans-Peter Nilsson  <hp@axis.com>
22635
22636         * gcse.c (gcse_constant_p): Fix typo in last change.
22637
22638 2009-04-30  Rafael Avila de Espindola  <espindola@google.com>
22639
22640         * plugin.c: Include plugin-version.h only if ENABLE_PLUGIN is defined.
22641
22642 2009-04-30  Andreas Krebbel  <krebbel1@de.ibm.com>
22643
22644         * gcse.c (gcse_constant_p): Make sure the constant is sharable.
22645
22646 2009-04-29  James E. Wilson  <wilson@codesourcery.com>
22647
22648         * config/mips/mips.c (mips_add_offset): Use gen_int_mode for
22649         CONST_HIGH_PART result.
22650
22651 2009-04-29  Anatoly Sokolov  <aesok@post.ru>
22652
22653         * config/avr/avr.c (initial_elimination_offset): Rename to
22654         avr_initial_elimination_offset.
22655         (frame_pointer_required_p): Rename to avr_frame_pointer_required_p,
22656         change return type to bool.
22657         (avr_can_eliminate): New function.
22658         * config/avr/avr.h (CAN_ELIMINATE): Use avr_can_eliminate.
22659         (FRAME_POINTER_REQUIRED): Use avr_frame_pointer_required_p.
22660         (INITIAL_ELIMINATION_OFFSET): Use avr_initial_elimination_offset.
22661         * config/avr/avr-protos.h (initial_elimination_offset): Rename to
22662         avr_initial_elimination_offset.
22663         (frame_pointer_required_p): Rename to avr_frame_pointer_required_p.
22664         (avr_initial_elimination_offset): Define.
22665
22666 2009-04-29  Eric Botcazou  <ebotcazou@adacore.com>
22667             Steven Bosscher  <steven@gcc.gnu.org>
22668
22669         PR rtl-optimization/39938
22670         * Makefile.in (cfgrtl.o): Add $(INSN_ATTR_H).
22671         * cfgrtl.c: Include insn-attr.h.
22672         (rest_of_pass_free_cfg): New function.
22673         (pass_free_cfg): Use rest_of_pass_free_cfg as execute function.
22674         * resource.c (init_resource_info): Remove call to df_analyze.
22675
22676 2009-04-29  Richard Guenther  <rguenther@suse.de>
22677
22678         PR target/39943
22679         * config/i386/i386.c (ix86_vectorize_builtin_conversion): Only
22680         allow conversion to signed integers.
22681
22682 2009-04-29  Richard Guenther  <rguenther@suse.de>
22683
22684         * tree-cfg.c (verify_gimple_assign_binary): Allow vector
22685         shifts of floating point vectors if the shift amount is
22686         a constant multiple of the element size.
22687
22688 2009-04-29  Andreas Krebbel  <krebbel1@de.ibm.com>
22689             Michael Matz  <matz@suse.de>
22690
22691         PR middle-end/39927
22692         PR bootstrap/39929
22693         * tree-outof-ssa.c (emit_partition_copy): New function.
22694         (insert_partition_copy_on_edge, insert_rtx_to_part_on_edge,
22695         insert_part_to_rtx_on_edge): Perform the partition base var
22696         copy using emit_partition_copy.
22697         (insert_value_copy_on_edge): Convert constants to the right mode.
22698         (insert_rtx_to_part_on_edge): Add UNSIGNEDSRCP parameter.
22699         (elim_create): Pass the sign of the src to insert_rtx_to_part_on_edge.
22700
22701 2009-04-29  Bernd Schmidt  <bernd.schmidt@analog.com>
22702
22703         * config/bfin/bfin.c (bfin_optimize_loop): If we need a scratch reg,
22704         scan backwards to try to find a constant to initialize it.
22705
22706         * config/bfin/bfin.c (bfin_optimize_loop): When looking for the last
22707         insn before the loop_end instruction, don't look past labels.
22708
22709 2009-04-29  Richard Guenther  <rguenther@suse.de>
22710
22711         PR middle-end/39937
22712         * tree-ssa-forwprop.c (forward_propagate_addr_expr_1): Do not
22713         loose type conversions.
22714         (forward_propagate_addr_expr): Fix tuplification bug.  Remove
22715         stmts only if there are no uses of its definition.
22716
22717 2009-04-29  Bernd Schmidt  <bernd.schmidt@analog.com>
22718
22719         * config/bfin/bfin.h (splitting_loops): Declare.
22720         * config/bfin/bfin-protos.h (WA_05000257, WA_05000283, WA_05000315):
22721         Reorder bit definitions to be ascending.
22722         (WA_LOAD_LCREGS, ENABLE_WA_LOAD_LCREGS): New macros.
22723         * config/bfin/bfin.c (splitting_loops): New variable.
22724         (bfin_cpus): Add WA_LOAD_LCREGS as needed.
22725         (struct loop_info): Remove members INIT and LOOP_INIT.
22726         (bfin_optimize_loop): Don't set them.  Reorder the code that generates
22727         the LSETUP sequence.  Allow LC to be loaded from any register, but
22728         also add a case to push/pop a PREG scratch if ENABLE_WA_LOAD_LCREGS.
22729         (bfin_reorg_loops): When done, split all BB_ENDs with splitting_loops
22730         set to 1.
22731         * config/bfin/bfin.md (loop_end splitter): Use splitting_loops instead
22732         of reload_completed.
22733
22734         From Jie Zhang:
22735         * config/bfin/bfin.md (movsi_insn): Refine constraints.
22736
22737 2009-04-29  Rafael Avila de Espindola  <espindola@google.com>
22738
22739         * Makefile.in (PLUGIN_VERSION_H): New.
22740         (OBJS-common): Remove plugin-version.o.
22741         (plugin.o): Depend on (PLUGIN_VERSION_H).
22742         (plugin-version.o): Remove.
22743         * configure: Regenerate
22744         * configure.ac: Create plugin-version.h.
22745         * gcc-plugin.h (plugin_gcc_version): Remove.
22746         (plugin_default_version_check): Change signature.
22747         * plugin-version.c: Remove.
22748         * plugin.c: Include plugin-version.h.
22749         (str_plugin_gcc_version_name): Remove.
22750         (try_init_one_plugin): Pass gcc version to plugin_init.
22751         (plugin_default_version_check): Both gcc and plugin versions are now
22752         arguments.
22753
22754 2009-04-29  Bernd Schmidt  <bernd.schmidt@analog.com>
22755
22756         * config/bfin/bfin.c (bfin_optimize_loop): Unify handling of
22757         problematic last insns.  Test for TYPE_CALL rather than CALL_P.
22758         Remove special case testing for last insn of inner loops. Don't fail
22759         if the loop ends with a jump, emit an extra nop instead.
22760
22761         * config/bfin/bfin.c (bfin_register_move_cost): Test for subsets of
22762         DREGS rather than comparing directly.  Remove code that tries to
22763         account for latencies.
22764
22765 2009-04-29  Richard Guenther  <rguenther@suse.de>
22766
22767         PR tree-optimization/39941
22768         * tree-ssa-pre.c (eliminate): Schedule update-ssa after
22769         eliminating an indirect call.
22770
22771 2009-04-29  Richard Guenther  <rguenther@suse.de>
22772
22773         * tree-cfg.c (verify_types_in_gimple_reference): Add require_lvalue
22774         parameter.  Allow invariants as base if !require_lvalue.
22775         (verify_gimple_assign_single): Adjust.
22776
22777 2009-04-29  Bernd Schmidt  <bernd.schmidt@analog.com>
22778
22779         * config/bfin/bfin.md (sp_or_sm, spm_string, spm_name): New macro.
22780         (ss<spm_name>hi3, ss<spm_name>hi3_parts, ss<spm_name>hi3_low_parts,
22781         ss<spm_name_hi3_high_parts): New patterns, replacing ssaddhi3,
22782         ssubhi3, ssaddhi3_parts and sssubhi3_parts.
22783         (flag_mulhi3_parts): Produce a HImode output rather than trying to set
22784         a VEC_SELECT.
22785         * config/bfin/bfin.c (bfin_expand_builtin,
22786         case BFIN_BUILTIN_CPLX_SQU): Adjust accordingly.
22787
22788 2009-04-28  Richard Guenther  <rguenther@suse.de>
22789
22790         * tree-vect-loop.c (get_initial_def_for_induction): Use
22791         correct types for pointer increment.
22792
22793 2009-04-29  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
22794
22795         * toplev.c (print_version): Update GMP version string calculation.
22796
22797 2009-04-28  Eric Botcazou  <ebotcazou@adacore.com>
22798
22799         PR rtl-optimization/39938
22800         * resource.c (init_resource_info): Add call to df_analyze.
22801
22802 2009-04-28  Uros Bizjak  <ubizjak@gmail.com>
22803
22804         * config/alpha/alpha.md (usegp): Cast the result of
22805         alpha_find_lo_sum_using_gp to enum attr_usegp.
22806         * config/alpha/alpha.c (override_options): Remove end-of-structure
22807         marker element from cpu_table.  Use array size of cpu_table to handle
22808         -mcpu and -mtune options.
22809         (tls_symbolic_operand_type): Change 0 to TLS_MODEL_NONE.
22810
22811 2009-04-28  Joseph Myers  <joseph@codesourcery.com>
22812
22813         * config.gcc (powerpc*-*-* | rs6000-*-*): Add
22814         rs6000/option-defaults.h to tm_file.  Support cpu_32, cpu_64,
22815         tune_32 and tune_64.
22816         * doc/install.texi (--with-cpu-32, --with-cpu-64): Document
22817         support on PowerPC.
22818         * config/rs6000/rs6000.h (OPTION_DEFAULT_SPECS): Move to ...
22819         * config/rs6000/option-defaults.h: ... here.  New file.
22820         (OPT_64, OPT_32): Define.
22821         (MASK_64BIT): Define to 0 if not already defined.
22822         (OPT_ARCH64, OPT_ARCH32): Define.
22823         (OPTION_DEFAULT_SPECS): Add entries for cpu_32, cpu_64, tune_32
22824         and tune_64.
22825
22826 2009-04-28  Ramana Radhakrishnan  <ramana.radhakrishnan@arm.com>
22827
22828         * config/arm/arm.c (arm_override_options): Emit error on using
22829         fpa with AAPCS.
22830
22831 2009-04-28  Uros Bizjak  <ubizjak@gmail.com>
22832
22833         PR rtl-optimization/39914
22834         * ira-conflicts.c (ira_build_conflicts): Prohibit call used
22835         registers for allocnos created from user-defined variables only
22836         when not optimizing.
22837
22838 2009-04-28  Richard Guenther  <rguenther@suse.de>
22839
22840         PR middle-end/39937
22841         * fold-const.c (fold_binary): Use distribute_real_division only
22842         on float types.
22843
22844 2009-04-28  Steve Ellcey  <sje@cup.hp.com>
22845
22846         * config.gcc (hppa*64*-*-hpux11*): Set use_gcc_stdint and
22847         add hpux-stdint.h to tm_file.
22848         (hppa[12]*-*-hpux11*): Ditto.
22849         (ia64*-*-hpux*): Ditto.
22850         * config/hpux-stdint.h: New.
22851         * config/ia64/hpux.h (TARGET_OS_CPP_BUILTINS): Set
22852         __STDC_EXT__ for all compiles.
22853         * config/pa/pa-hpux.h: Ditto.
22854         * config/pa/pa-hpux10.h: Ditto.
22855         * config/pa/pa-hpux11.h: Ditto.
22856
22857 2009-04-28  Catherine Moore  <clm@codesourcery.com>
22858
22859         * debug.h (set_name): Add comment.
22860
22861 2009-04-28  Andrew Pinski  <pinskia@gmail.com>
22862
22863         PR target/39929
22864         * config/darwin.c (machopic_gen_offset): Check
22865         currently_expanding_to_rtl if current_ir_type returns IR_GIMPLE.
22866         * config/arm/arm.c (require_pic_register): Likewise.
22867
22868 2009-04-28  Paolo Bonzini  <bonzini@gnu.org>
22869
22870         * config/m32c/m32c.c (TARGET_PROMOTE_FUNCTION_RETURN,
22871         m32c_promote_function_return, TARGET_PROMOTE_PROTOTYPES,
22872         m32c_promote_prototypes): Delete.
22873
22874 2009-04-28  Michael Matz  <matz@suse.de>
22875
22876         PR middle-end/39922
22877         * tree-outof-ssa.c (insert_value_copy_on_edge): Don't convert
22878         constants.
22879
22880 2009-04-28  Richard Guenther  <rguenther@suse.de>
22881
22882         * tree-vect-stmts.c (vect_get_vec_def_for_operand): Fix type error.
22883
22884 2009-04-28  Ramana Radhakrishnan  <ramana.radhakrishnan@arm.com>
22885
22886         * config/arm/arm-cores.def: Add support for arm1156t2f-s.
22887         * doc/invoke.texi (ARM Options): Document support for arm1156t2f-s.
22888         * config/arm/arm-tune.md: Regenerate.
22889
22890 2009-04-28  Alexander Monakov  <amonakov@ispras.ru>
22891
22892         * sel-sched-ir.c (maybe_tidy_empty_bb): Do not attempt to delete a
22893         block if there are complex incoming edges.
22894         (sel_merge_blocks): Remove useless assert.
22895         (sel_redirect_edge_and_branch): Check that edge was redirected.
22896         * sel-sched-ir.h (_eligible_successor_edge_p): Remove assert.
22897         (sel_find_rgns): Delete declaration.
22898         * sel-sched.c (purge_empty_blocks): Attempt to remove first block of
22899         the region when it is not a preheader.
22900
22901 2009-04-28  Uros Bizjak  <ubizjak@gmail.com>
22902
22903         PR c/39323
22904         * config/alpha/elf.h (MAX_OFILE_ALIGNMENT): Sync with elfos.h
22905
22906 2009-04-28  Richard Guenther  <rguenther@suse.de>
22907
22908         * tree.h (SSA_NAME_VALUE): Remove.
22909         (struct tree_ssa_name): Remove value_handle member.
22910         * tree-vrp.c (execute_vrp): Initialize/free the value-handle
22911         array for jump threading.
22912         * tree-ssa-propagate.c (ssa_prop_init): Do not initialize
22913         SSA_NAME_VALUEs.
22914         * print-tree.c (print_node): Do not dump SSA_NAME_VALUEs.
22915         * tree-flow.h (threadedge_initialize_values): Declare.
22916         (threadedge_finalize_values): Likewise.
22917         * tree-ssa-threadedge.c (ssa_name_values): New global variable.
22918         (SSA_NAME_VALUE): Define.
22919         (threadedge_initialize_values): New function.
22920         (threadedge_finalize_values): Likewise.
22921         * tree-ssa-dom.c (ssa_name_values): New global variable.
22922         (SSA_NAME_VALUE): Define.
22923         (tree_ssa_dominator_optimize): Initialize/free the value-handle array.
22924
22925 2009-04-28  Ira Rosen  <irar@il.ibm.com>
22926
22927         * tree-vect-loop-manip.c (vect_create_cond_for_alias_checks):
22928         Use REPORT_VECTORIZED_LOCATIONS instead
22929         REPORT_VECTORIZED_LOOPS.
22930         * tree-vectorizer.c (vect_verbosity_level): Make static.
22931         (vect_loop_location): Rename to vect_location.
22932         (vect_set_verbosity_level): Update comment.
22933         (vect_set_dump_settings): Use REPORT_VECTORIZED_LOCATIONS
22934         and vect_location.
22935         (vectorize_loops): Fix comment. Use REPORT_VECTORIZED_LOCATIONS
22936         and vect_location. Use REPORT_UNVECTORIZED_LOCATIONS
22937         instead REPORT_UNVECTORIZED_LOOPS.
22938         * tree-vectorizer.h (enum vect_def_type): Rename vect_invariant_def
22939         and vect_loop_def to vect_external_def and vect_internal_def.
22940         (enum verbosity_levels): Rename REPORT_VECTORIZED_LOOPS
22941         and REPORT_UNVECTORIZED_LOOPS to REPORT_VECTORIZED_LOCATIONS and
22942         REPORT_UNVECTORIZED_LOCATIONS.
22943         (enum vect_relevant): Update comment. Rename vect_unused_in_loop
22944         and vect_used_in_loop and to vect_unused_in_scope and
22945         vect_used_in_scope.
22946         (STMT_VINFO_RELEVANT_P): Use vect_unused_in_scope.
22947         (vect_verbosity_level): Remove declaration.
22948         (vect_analyze_operations): Likewise.
22949         (vect_analyze_stmt): Declare.
22950         * tree-vect-loop.c (vect_determine_vectorization_factor): Use
22951         REPORT_UNVECTORIZED_LOCATIONS.
22952         (vect_get_loop_niters): Fix indentation.
22953         (vect_analyze_loop_form): Use REPORT_UNVECTORIZED_LOCATIONS.
22954         (vect_analyze_loop_operations): New function.
22955         (vect_analyze_loop): Call vect_analyze_loop_operations instead of
22956         vect_analyze_operations.
22957         (vect_is_simple_reduction): Use new names.
22958         (vectorizable_live_operation, vect_transform_loop): Likewise.
22959         * tree-vect-data-refs.c (vect_check_interleaving): Add a return value
22960         to specify whether the data references can be a part of interleaving
22961         chain.
22962         (vect_analyze_data_ref_dependence): Use new names.
22963         (vect_analyze_data_refs_alignment, vect_analyze_data_refs): Likewise.
22964         (vect_create_addr_base_for_vector_ref): Remove redundant code.
22965         * tree-vect-patterns.c (widened_name_p): Use new names.
22966         (vect_recog_dot_prod_pattern): Likewise.
22967         * tree-vect-stmts.c (vect_stmt_relevant_p): Use new names.
22968         (process_use, vect_mark_stmts_to_be_vectorized,
22969         vect_model_simple_cost, vect_model_store_cost,
22970         vect_get_vec_def_for_operand, vect_get_vec_def_for_stmt_copy,
22971         vectorizable_call, vectorizable_conversion, vectorizable_assignment,
22972         vectorizable_operation, vectorizable_type_demotion,
22973         vectorizable_type_promotion, vectorizable_store, vectorizable_load,
22974         vectorizable_condition): Likewise.
22975         (vect_analyze_operations): Split into vect_analyze_loop_operations
22976         and ...
22977         (vect_analyze_stmt): ... new function.
22978         (new_stmt_vec_info): Use new names.
22979         (vect_is_simple_use): Use new names and fix comment.
22980         * tree-vect-slp.c (vect_get_and_check_slp_defs): Use new names.
22981         (vect_build_slp_tree, vect_analyze_slp, vect_schedule_slp): Likewise.
22982
22983 2009-04-28  Uros Bizjak  <ubizjak@gmail.com>
22984
22985         PR target/39911
22986         * config/i386/i386.c (print_operand) ['Z']: Handle floating point
22987         and integer modes for x87 operands.  Do not ICE for unsupported size,
22988         generate error instead.  Generate error for unsupported operand types.
22989         ['z']: Do not handle HImode memory operands specially.  Warning
22990         for floating-point operands.  Fallthru to 'Z' for unsupported operand
22991         types.  Do not ICE for unsupported size, generate error instead.
22992         (output_387_binary_op): Use %Z to output operands.
22993         (output_fp_compare): Ditto.
22994         (output_387_reg_move): Ditto.
22995
22996 2009-04-28  Ben Elliston  <bje@au.ibm.com>
22997
22998         PR c++/35652
22999         Revert:
23000
23001         2009-03-27  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
23002
23003         * builtins.c (c_strlen): Do not warn here.
23004         * c-typeck.c (build_binary_op): Adjust calls to pointer_int_sum.
23005         * c-common.c (pointer_int_sum): Take an explicit location.
23006         Warn about offsets out of bounds.
23007         * c-common.h (pointer_int_sum): Adjust declaration.
23008
23009 2009-04-27  Ian Lance Taylor  <iant@google.com>
23010
23011         * collect2.c (is_ctor_dtor): Change type of ret field in struct
23012         names to symkind.
23013         * dce.c (run_fast_df_dce): Change type of old_flags to int.
23014         * df-core.c (df_set_flags): Change return type to int.  Change
23015         type of old_flags to int.
23016         (df_clear_flags): Likewise.
23017         * df-scan.c (df_def_record_1): Change 0 to VOIDmode.
23018         (df_get_conditional_uses): Likewise.
23019         * df.h (df_set_flags, df_clear_flags): Update declarations.
23020         * dwarf2out.c (struct indirect_string_node): Change type of form
23021         field to enum dwarf_form.
23022         (AT_string_form): Change return type to enum dwarf_form.
23023         * fixed-value.c (fixed_compare): Add cast to enum type.
23024         * fwprop.c (update_df): Change 0 to VOIDmode.
23025         * gensupport.c: Change 0 to UNKNOWN.
23026         * gimple.h (gimple_cond_code): Add cast to enum type.
23027         * haifa-sched.c (reemit_notes): Add cast to enum type.
23028         * hooks.c (hook_int_void_no_regs): Remove function.
23029         * hooks.h (hook_int_void_no_regs): Remove declaration.
23030         * optabs.c (expand_widen_pattern_expr): Change 0 to VOIDmode.
23031         * predict.c (combine_predictions_for_insn): Add casts to enum type.
23032         * real.c (real_arithmetic): Add cast to enum type.
23033         (real_compare): Likewise.
23034         * target.h (struct gcc_target): Change return type of
23035         branch_target_register_class to enum reg_class.
23036         * target-def.h (TARGET_BRANCH_TARGET_REGISTER_CLASS): Define as
23037         default_branch_target_register_class.
23038         * targhooks.c (default_branch_target_register_class): New function.
23039         * targhooks.h (default_branch_target_register_class): Declare.
23040         * tree-data-ref.c (print_direction_vector): Add cast to enum type.
23041         * tree-vect-data-refs.c (vect_supportable_dr_alignment): Remove
23042         cast to int.
23043         * tree-vect-loop.c (vect_create_epilog_for_reduction): Change 0 to
23044         ERROR_MARK.
23045         * tree-vect-slp.c (vect_build_slp_tree): Change 0 to
23046         vect_uninitialized_def.  Change 0 to ERROR_MARK.
23047         * tree-vect-stmts.c (supportable_widening_operation): Don't
23048         initialize icode1 and icode2.
23049         * tree-vectorizer.h (enum vect_def_type): Add vect_uninitialized_def.
23050         * config/sol2-c.c (cmn_err_length_specs): Change 0 to FMT_LEN_none
23051         and to STD_C89.
23052         (cmn_err_flag_specs): Change 0 to STD_C89.
23053         (cmn_err_char_table): Likewise.
23054         * config/arm/arm.c (get_arm_condition_code): Change type of code
23055         to enum arm_cond_code.
23056         (IWMMXT_BUILTIN): Change 0 to UNKNOWN.
23057         (IWMMXT_BUILTIN2): Likewise.
23058         (neon_builtin_type_bits): Don't define typedef.
23059         (neon_builtin_datum): Change type of bits field to int.
23060         (arm_expand_neon_args): Add cast to enum type.
23061         * config/ia64/ia64.c (tls_symbolic_operand_type): Change 0 to
23062         TLS_MODEL_NONE.
23063         * config/i386/i386.c (bdesc_multi_arg): Change 0 to UNKNOWN.  Add
23064         casts to enum type.
23065         * config/mips/mips.c (LOONGSON_BUILTIN_ALIAS): Change 0 to
23066         MIPS_FP_COND_f.
23067         * config/mips/mips.md (jal_macro): Return enum constant.
23068         (single_insn): Likewise.
23069         * config/rs6000/rs6000.c (bdesc_altivec_preds): Change 0 to
23070         CODE_FOR_nothing.
23071         * config/rs6000/rs6000-c.c (altivec_overloaded_builtins): Add
23072         casts to enum type.
23073         * config/s390/s390.c (s390_tune_flags): Change type to int.
23074         (s390_arch_flags): Likewise.
23075         (s390_handle_arch_option): Change flags field of struct pta to int.
23076         * config/s390/s390.h (s390_tune_flags): Update declaration.
23077         (s390_arch_flags): Likewise.
23078         * config/sh/sh.c (prepare_move_operands): Compare
23079         tls_symbolic_operand result with enum constant.
23080         (sh_reorg): Change PUT_MODE to PUT_REG_NOTE_KIND.
23081         (sh_expand_prologue): Add cast to enum type.
23082         (sh_expand_epilogue): Likewise.
23083         (tls_symbolic_operand): Change return type to enum tls_model.
23084         (fpscr_set_from_mem): Add cast to enum type.
23085         (legitimize_pic_address): Compare tls_symbolic_operand result with
23086         enum constant.
23087         (sh_target_reg_class): Change return type to enum reg_class.
23088         * config/sh/sh.h (OVERRIDE_OPTIONS): Change CPU_xxx to
23089         PROCESSOR_xxx.
23090         * config/sh/sh-protos.h (tls_symbolic_operand): Update declaration.
23091         * config/sparc/sparc.c (sparc_override_options): Add cast to enum type.
23092         * config/sparc/sparc.md (empty_delay_slot): Return enum constant.
23093         (pic, calls_alloca, calls_eh_return, leaf_function): Likewise.
23094         (delayed_branch, tls_call_delay): Likewise.
23095         (eligible_for_sibcall_delay): Likewise.
23096         (eligible_for_return_delay): Likewise.
23097         * config/spu/spu.c (expand_builtin_args): Add cast to enum type.
23098         (spu_expand_builtin_1): Likewise.
23099
23100         * c-typeck.c (convert_for_assignment): Issue -Wc++-compat warnings
23101         for all types of conversions.
23102         (output_init_element): Issue -Wc++-compat warning if needed when
23103         initializing a bitfield with enum type.
23104         * c-parser.c (c_parser_expression): Set original_type to
23105         original_type of right hand operand of comma operator.
23106
23107 2009-04-27  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
23108
23109         * doc/c-tree.texi (Types, Functions, Expression trees): Fix
23110         grammar nits.
23111         * doc/cfg.texi (Maintaining the CFG, Liveness information): Likewise.
23112         * doc/cpp.texi (Standard Predefined Macros)
23113         (Implementation-defined behavior): Likewise.
23114         * doc/extend.texi (Function Attributes, Type Attributes): Likewise.
23115         * doc/gimple.texi (GIMPLE Exception Handling)
23116         (@code{GIMPLE_ASSIGN}): Likewise.
23117         * doc/install.texi (Prerequisites, Configuration, Specific): Likewise.
23118         * doc/invoke.texi (Warning Options, Optimize Options)
23119         (AVR Options, Darwin Options): Likewise.
23120         (Optimize Options): Reformulate -fwhole-program description.
23121         * doc/loop.texi (Lambda): Likewise.
23122         * doc/md.texi (Output Template, Define Constraints)
23123         (Standard Names, Insn Splitting): Likewise.
23124         * doc/options.texi (Option properties): Likewise.
23125         * doc/passes.texi (Tree-SSA passes): Likewise.
23126         * doc/rtl.texi (Side Effects, Assembler, Insns): Likewise.
23127         * doc/tm.texi (Register Classes, Old Constraints, Scalar Return)
23128         (File Names and DBX): Likewise.
23129         * doc/trouble.texi (Incompatibilities): Likewise.
23130
23131 2009-04-27  Trevor Smigiel  <trevor_smigiel@playstation.sony.com>
23132
23133         * spu.c (spu_machine_dependent_reorg): Make sure branch label on hint
23134         instruction is correct.
23135
23136 2009-04-27  Trevor Smigiel  <trevor_smigiel@playstation.sony.com>
23137
23138         Allow non-constant arguments to conversion intrinsics.
23139         * spu-protos.h (exp2_immediate_p, spu_gen_exp2): Declare.
23140         * predicates.md (spu_inv_exp2_operand, spu_exp2_operand): New.
23141         * spu.c (print_operand): Handle 'v' and 'w'.
23142         (exp2_immediate_p, spu_gen_exp2): Define.
23143         * spu-builtins.def (spu_convts, spu_convtu, spu_convtf_0,
23144         spu_convtf_1): Update parameter descriptions.
23145         * spu-builtins.md (spu_csflt, spu_cuflt, spu_cflts, spu_cfltu): Update.
23146         * constraints.md ('v', 'w'): New.
23147         * spu.md (UNSPEC_CSFLT, UNSPEC_CFLTS, UNSPEC_CUFLT, UNSPEC_CFLTU):
23148         Remove.
23149         (i2f, I2F): New define_mode_attr.
23150         (floatsisf2, floatv4siv4sf2, fix_truncsfsi2, fix_truncv4sfv4si2,
23151         floatunssisf2, floatunsv4siv4sf2, fixuns_truncsfsi2,
23152         fixuns_truncv4sfv4si2):  Update to use mode attribute.
23153         (float<mode><i2f>2_mul, float<mode><i2f>2_div,
23154         fix_trunc<mode><f2i>2_mul, floatuns<mode><i2f>2_mul,
23155         floatuns<mode><i2f>2_div, fixuns_trunc<mode><f2i>2_mul): New
23156         patterns for combine.
23157
23158 2009-04-27  Steven Bosscher  <steven@gcc.gnu.org>
23159
23160         * dbgcnt.def (cprop1, cprop2, gcse, jump_bypass): Remove
23161         (cprop, hoist, pre, store_motion): New debug counters.
23162         * tree-pass.h (pass_tracer): Move to list of gimple passes, it
23163         is not an RTL pass anymore.
23164         (pass_profiling): Remove extern decl for pass removed in 2005.
23165         (pass_gcse, pass_jump_bypass): Remove.
23166         * final.c (rest_of_clean_state): Set flag_rerun_cse_after_global_opts
23167         to 0 for clean state.
23168         * toplev.h (flag_rerun_cse_after_global_opts): Add extern declaration.
23169         * cse.c (gate_handle_cse_after_global_opts,
23170         rest_of_handle_cse_after_global_opts): New functions.
23171         (pass_cse_after_global_opts): New pass, does local CSE.
23172         * timevar.def (TV_GCSE, TV_CPROP1, TV_CPROP2, TV_BYPASS): Remove.
23173         (TV_CPROP): New timevar.
23174         * gcse.c (flag_rerun_cse_after_global_opts): New global variable.
23175         (run_jump_opt_after_gcse, max_gcse_regno): Remove global vars.
23176         (gcse_main, recompute_all_luids): Remove.
23177         (compute_hash_table_work): Call max_reg_num instead of reading
23178         max_gcse_regno.
23179         (cprop_jump): Don't set run_jump_opt_after_gcse.
23180         (constprop_register): Always allow to alter jumps.
23181         (cprop_insn): Likewise.
23182         (do_local_cprop): Likewise.
23183         (local_cprop_pass): Likewise.  Return non-zero if something changed.
23184         (cprop): Remove function, fold interesting bits into one_cprop_pass.
23185         (find_implicit_sets): Add note about missed optimization opportunity.
23186         (one_cprop_pass): Rewrite to be "the" CPROP pass, called from the
23187         pass_rtl_cprop execute function.
23188         Don't bother tracking the pass number, each pass gets its own dumpfile
23189         now anyway.
23190         Always allow to alter jumpsand bypass jumps.
23191         (bypass_block): Don't ignore regno >= max_gcse_regno, find_bypass_set
23192         will just find no suitable set.
23193         (pre_edge_insert): Fix dumping, this function is for PRE only.
23194         (one_pre_gcse_pass): Rewrite to be "the" PRE pass, called from the
23195         pass_rtl_pre execute function.
23196         (hoist_code): Return non-zero if something changed.  Keep track of
23197         substitutions and insertions for statistics gathering similar to PRE.
23198         (one_code_hoisting_pass): Rewrite to be "the" code hoisting pass,
23199         called from the pass_rtl_hoist execute function.  Show pass statistics.
23200         (compute_store_table): Use max_reg_num directly instead of using the
23201         formerly global max_gcse_regno.
23202         (build_store_vectors): Likewise.
23203         (replace_store_insn): Fix dumping.
23204         (store_motion): Rename to ...
23205         (one_store_motion_pass): ... this.  Rewrite to be "the" STORE_MOTION
23206         pass, called from the pass_rtl_store_motion execute function.  Keep
23207         track of substitutions and insertions for statistics gathering similar
23208         to PRE.
23209         (bypass_jumps): Remove, fold interesting bits into ...
23210         (one_cprop_pass): ... this.  Rewrite to be "the" CPROP pass, called
23211         from the pass_rtl_cprop execute function.
23212         (gate_handle_jump_bypass, rest_of_handle_jump_bypass,
23213         pass_jump_bypass): Remove.
23214         (gate_handle_gcse, rest_of_handle_gcse): Remove.
23215         (gate_rtl_cprop, execute_rtl_cprop, pass_rtl_cprop): New.
23216         (gate_rtl_pre, execute_rtl_pre, pass_rtl_pre): New.
23217         (gate_rtl_hoist, execute_rtl_hoist, pass_rtl_hoist): New.
23218         (gate_rtl_store_motion, execute_rtl_store_motion,
23219         pass_rtl_store_motion): New.
23220         * common.opt: Remove flag_cse_skip_blocks, adjust documentation to
23221         make it clear that -fcse-skip-blocks is a no-op for backward compat.
23222         * passes.c (init_optimization_passes): Remove pass_gcse and
23223         pass_jump_bypass.  Schedule cprop, pre, hoist, cprop, store_motion,
23224         and cse_after_global_opts in place of pass_gcse.  Schedule cprop
23225         instead of pass_jump_bypass.
23226
23227 2009-04-27  Richard Guenther  <rguenther@suse.de>
23228
23229         PR middle-end/39928
23230         * gimplify.c (gimplify_expr): If we are required to create
23231         a temporary make sure it ends up as register.
23232
23233 2009-04-27  H.J. Lu  <hongjiu.lu@intel.com>
23234
23235         PR target/39903
23236         * config/i386/i386.c (construct_container): Don't call
23237         gen_reg_or_parallel with BLKmode on X86_64_SSE_CLASS,
23238         X86_64_SSESF_CLASS and X86_64_SSEDF_CLASS.
23239
23240 2009-04-27  Michael Matz  <matz@suse.de>
23241
23242         * ssaexpand.h (struct ssaexpand): Member 'values' is a bitmap.
23243         (get_gimple_for_ssa_name): Adjust, lookup using SSA_NAME_DEF_STMT.
23244         * tree-ssa-live.h (find_replaceable_exprs): Return a bitmap.
23245         (dump_replaceable_exprs): Take a bitmap.
23246         * cfgexpand.c (gimple_cond_pred_to_tree): Handle bitmap instead of
23247         array.
23248         (expand_gimple_basic_block): Likewise.
23249         * tree-ssa-ter.c (struct temp_expr_table_d): Make
23250         replaceable_expressions member a bitmap.
23251         (free_temp_expr_table): Pass back and deal with bitmap, not gimple*.
23252         (mark_replaceable): Likewise.
23253         (find_replaceable_in_bb, dump_replaceable_exprs): Likewise.
23254         * tree-outof-ssa.c (remove_ssa_form): 'values' is a bitmap.
23255
23256 2009-04-27  Richard Guenther  <rguenther@suse.de>
23257
23258         * tree-cfg.c (remove_useless_stmts): Verify stmts afterwards.
23259         (verify_stmts): Dispatch to gimple/type verification code.
23260         * tree-inline.c (remap_gimple_op_r): Work around C++ FE
23261         issue with call argument types.
23262
23263 2009-04-27  Michael Matz  <matz@suse.de>
23264
23265         * tree-into-ssa.c (regs_to_rename, mem_syms_to_rename): Remove.
23266         (init_update_ssa, delete_update_ssa, update_ssa): Remove references
23267         to above.
23268
23269 2009-04-27  Richard Sandiford  <rdsandiford@googlemail.com>
23270             Eric Botcazou  <ebotcazou@adacore.com>
23271
23272         * resource.c (find_basic_block): Use BLOCK_FOR_INSN to look up
23273         a label's basic block.
23274         (mark_target_live_regs): Tidy and rework obsolete comments.
23275         Change back DF problem to LIVE.  If a label starts a basic block,
23276         assume that all registers that used to be live then still are.
23277         (init_resource_info): If a label starts a basic block, set its
23278         BLOCK_FOR_INSN accordingly.
23279         (fini_resource_info): Undo the setting of BLOCK_FOR_INSN.
23280
23281 2009-04-27  Richard Guenther  <rguenther@suse.de>
23282
23283         * tree-flow-inline.h (function_ann): Remove.
23284         (get_function_ann): Likewise.
23285         * tree-dfa.c (create_function_ann): Remove.
23286         * tree-flow.h (struct static_var_ann_d): Remove.
23287         (struct function_ann_d): Likewise.
23288         (union tree_ann_d): Remove fdecl member.
23289         (function_ann_t): Remove.
23290         (function_ann, get_function_ann, create_function_ann): Remove
23291         declarations.
23292
23293 2009-04-27  Uros Bizjak  <ubizjak@gmail.com>
23294
23295         * config/alpha/alpha.c (code_for_builtin): Declare as enum insn_code.
23296
23297 2009-04-27  Jan Hubicka  <jh@suse.cz>
23298
23299         * ipa-pure-const.c (struct funct_state_d): New fields
23300         state_previously_known, looping_previously_known; remove
23301         state_set_in_source.
23302         (analyze_function): Use new fields.
23303         (propagate): Avoid assumption that state_set_in_source imply
23304         nonlooping.
23305
23306         * tree-ssa-loop-niter.c (finite_loop_p): New function.
23307         * tree-ssa-loop-ivcanon.c (empty_loop_p): Use it.
23308         * cfgloop.h (finite_loop_p): Declare.
23309
23310 2009-04-26  Michael Matz  <matz@suse.de>
23311
23312         * tree-flow.h (tree_ann_common_d): Remove aux and value_handle members.
23313
23314 2009-04-26  Michael Matz  <matz@suse.de>
23315
23316         * tree-pass.h (pass_del_ssa, pass_mark_used_blocks,
23317         pass_free_cfg_annotations, pass_free_datastructures): Remove decls.
23318         * gimple-low.c (mark_blocks_with_used_vars, mark_used_blocks,
23319         pass_mark_used_blocks): Remove.
23320         * tree-optimize.c (pass_free_datastructures,
23321         execute_free_cfg_annotations, pass_free_cfg_annotations): Remove.
23322         * passes.c (init_optimization_passes): Don't call
23323         pass_mark_used_blocks, remove dead code.
23324
23325 2009-04-26  H.J. Lu  <hongjiu.lu@intel.com>
23326
23327         * tree-outof-ssa.c (rewrite_trees): Add ATTRIBUTE_UNUSED.
23328         * tree-ssa-live.h (register_ssa_partition): Likewise.
23329
23330 2009-04-26  Michael Matz  <matz@suse.de>
23331
23332         Expand from SSA.
23333         * builtins.c (fold_builtin_next_arg): Handle SSA names.
23334         * tree-ssa-copyrename.c (rename_ssa_copies): Use ssa_name() directly.
23335         * tree-ssa-coalesce.c (create_outofssa_var_map): Mark only useful
23336         SSA names.
23337         (compare_pairs): Swap cost comparison.
23338         (coalesce_ssa_name): Don't use change_partition_var.
23339         * tree-nrv.c (struct nrv_data): Add modified member.
23340         (finalize_nrv_r): Set it.
23341         (tree_nrv): Use it to update statements.
23342         (pass_nrv): Require PROP_ssa.
23343         * tree-mudflap.c (mf_decl_cache_locals,
23344         mf_build_check_statement_for): Use make_rename_temp.
23345         (pass_mudflap_2): Require PROP_ssa, run ssa update at finish.
23346         * alias.c (find_base_decl): Handle SSA names.
23347         * emit-rtl (set_reg_attrs_for_parm): Make non-static.
23348         (component_ref_for_mem_expr): Don't leak SSA names into RTL.
23349         * rtl.h (set_reg_attrs_for_parm): Declare.
23350         * tree-optimize.c (pass_cleanup_cfg_post_optimizing): Rename
23351         to "optimized", remove unused locals at finish.
23352         (execute_free_datastructures): Make global, call
23353         delete_tree_cfg_annotations.
23354         (execute_free_cfg_annotations): Don't call
23355         delete_tree_cfg_annotations.
23356
23357         * ssaexpand.h: New file.
23358         * expr.c (toplevel): Include ssaexpand.h.
23359         (expand_assignment): Handle SSA names the same as register variables.
23360         (expand_expr_real_1): Expand SSA names.
23361         * cfgexpand.c (toplevel): Include ssaexpand.h.
23362         (SA): New global variable.
23363         (gimple_cond_pred_to_tree): Fold TERed comparisons into predicates.
23364         (SSAVAR): New macro.
23365         (set_rtl): New helper function.
23366         (add_stack_var): Deal with SSA names, use set_rtl.
23367         (expand_one_stack_var_at): Likewise.
23368         (expand_one_stack_var): Deal with SSA names.
23369         (stack_var_size_cmp): Use code (SSA_NAME / DECL) as tie breaker
23370         before unique numbers.
23371         (expand_stack_vars): Use set_rtl.
23372         (expand_one_var): Accept SSA names, add asserts for them, feed them
23373         to above subroutines.
23374         (expand_used_vars): Expand all partitions (without default defs),
23375         then only the local decls (ignoring those expanded already).
23376         (expand_gimple_cond): Remove edges when jumpif() expands an
23377         unconditional jump.
23378         (expand_gimple_basic_block): Don't clear EDGE_EXECUTABLE here,
23379         or remove abnormal edges.  Ignore insns setting the LHS of a TERed
23380         SSA name.
23381         (gimple_expand_cfg): Call into rewrite_out_of_ssa, initialize
23382         members of SA; deal with PARM_DECL partitions here; expand
23383         all PHI nodes, free tree datastructures and SA.  Commit instructions
23384         on edges, clear EDGE_EXECUTABLE and remove abnormal edges here.
23385         (pass_expand): Require and destroy PROP_ssa, verify SSA form, flow
23386         info and statements at start, collect garbage at finish.
23387         * tree-ssa-live.h (struct _var_map): Remove partition_to_var member.
23388         (VAR_ANN_PARTITION) Remove.
23389         (change_partition_var): Don't declare.
23390         (partition_to_var): Always return SSA names.
23391         (var_to_partition): Only accept SSA names.
23392         (register_ssa_partition): Only check argument.
23393         * tree-ssa-live.c (init_var_map): Don't allocate partition_to_var
23394         member.
23395         (delete_var_map): Don't free it.
23396         (var_union): Only accept SSA names, simplify.
23397         (partition_view_init): Mark only useful SSA names as used.
23398         (partition_view_fini): Only deal with SSA names.
23399         (change_partition_var): Remove.
23400         (dump_var_map): Use ssa_name instead of partition_to_var member.
23401         * tree-ssa.c (delete_tree_ssa): Don't remove PHI nodes on RTL
23402         basic blocks.
23403         * tree-outof-ssa.c (toplevel): Include ssaexpand.h and expr.h.
23404         (struct _elim_graph): New member const_dests; nodes member vector of
23405         ints.
23406         (set_location_for_edge): New static helper.
23407         (create_temp): Remove.
23408         (insert_partition_copy_on_edge, insert_part_to_rtx_on_edge,
23409         insert_value_copy_on_edge, insert_rtx_to_part_on_edge): New functions.
23410         (new_elim_graph): Allocate const_dests member.
23411         (clean_elim_graph): Truncate const_dests member.
23412         (delete_elim_graph): Free const_dests member.
23413         (elim_graph_size): Adapt to new type of nodes member.
23414         (elim_graph_add_node): Likewise.
23415         (eliminate_name): Likewise.
23416         (eliminate_build): Don't take basic block argument, deal only with
23417         partition numbers, not variables.
23418         (get_temp_reg): New static helper.
23419         (elim_create): Use it, deal with RTL temporaries instead of trees.
23420         (eliminate_phi): Adjust all calls to new signature.
23421         (assign_vars, replace_use_variable, replace_def_variable): Remove.
23422         (rewrite_trees): Only do checking.
23423         (edge_leader, stmt_list, leader_has_match, leader_match): Remove.
23424         (same_stmt_list_p, identical_copies_p, identical_stmt_lists_p,
23425         init_analyze_edges_for_bb, fini_analyze_edges_for_bb,
23426         contains_tree_r, MAX_STMTS_IN_LATCH,
23427         process_single_block_loop_latch, analyze_edges_for_bb,
23428         perform_edge_inserts): Remove.
23429         (expand_phi_nodes): New global function.
23430         (remove_ssa_form): Take ssaexpand parameter.  Don't call removed
23431         functions, initialize new parameter, remember partitions having a
23432         default def.
23433         (finish_out_of_ssa): New global function.
23434         (rewrite_out_of_ssa): Make global.  Adjust call to remove_ssa_form,
23435         don't reset in_ssa_p here, don't disable TER when mudflap.
23436         (pass_del_ssa): Remove.
23437         * tree-flow.h (struct var_ann_d): Remove out_of_ssa_tag and
23438         partition members.
23439         (execute_free_datastructures): Declare.
23440         * Makefile.in (SSAEXPAND_H): New variable.
23441         (tree-outof-ssa.o, expr.o, cfgexpand.o): Depend on SSAEXPAND_H.
23442         * basic-block.h (commit_one_edge_insertion): Declare.
23443         * passes.c (init_optimization_passes): Move pass_nrv and
23444         pass_mudflap2 before pass_cleanup_cfg_post_optimizing, remove
23445         pass_del_ssa, pass_free_datastructures, pass_free_cfg_annotations.
23446         * cfgrtl.c (commit_one_edge_insertion): Make global, don't declare.
23447         (redirect_branch_edge): Deal with super block when expanding, split
23448         out jump patching itself into ...
23449         (patch_jump_insn): ... here, new static helper.
23450
23451 2009-04-26  Michael Matz  <matz@suse.de>
23452
23453         * tree-ssa-copyrename.c (rename_ssa_copies): Don't iterate
23454         beyond num_ssa_names.
23455         * tree-ssa-ter.c (free_temp_expr_table): Likewise.
23456         * tree-ssa-coalesce.c (create_outofssa_var_map): Likewise.
23457
23458 2009-04-26  Jakub Jelinek  <jakub@redhat.com>
23459
23460         PR inline-asm/39543
23461         * fwprop.c (forward_propagate_asm): New function.
23462         (forward_propagate_and_simplify): Propagate also into __asm, if it
23463         doesn't increase the number of referenced registers.
23464
23465         PR c/39889
23466         * stmt.c (warn_if_unused_value): Look through NON_LVALUE_EXPR.
23467
23468 2009-04-26  Jakub Jelinek  <jakub@redhat.com>
23469
23470         * tree-nested.c (get_nonlocal_vla_type): If not optimizing, call
23471         note_nonlocal_vla_type for nonlocal VLAs.
23472         (note_nonlocal_vla_type, note_nonlocal_block_vlas,
23473         contains_remapped_vars, remap_vla_decls): New functions.
23474         (convert_nonlocal_reference_stmt): If not optimizing, call
23475         note_nonlocal_block_vlas on GIMPLE_BIND block vars.
23476         (nesting_copy_decl): Return {VAR,PARM,RESULT}_DECL unmodified
23477         if it wasn't found in var_map.
23478         (finalize_nesting_tree_1): Call remap_vla_decls.  If outermost
23479         GIMPLE_BIND doesn't have gimple_bind_block, chain debug_var_chain
23480         to BLOCK_VARS (DECL_INITIAL (root->context)) instead of calling
23481         declare_vars.
23482         * gimplify.c (nonlocal_vlas): New variable.
23483         (gimplify_var_or_parm_decl): Add debug VAR_DECLs for non-local
23484         referenced VLAs.
23485         (gimplify_body): Create and destroy nonlocal_vlas.
23486
23487         * dwarf2out.c (loc_descr_plus_const): New function.
23488         (build_cfa_aligned_loc, tls_mem_loc_descriptor,
23489         mem_loc_descriptor, loc_descriptor_from_tree_1,
23490         descr_info_loc, gen_variable_die): Use it.
23491
23492         * tree.h (DECL_BY_REFERENCE): Note that it is also valid for
23493         !TREE_STATIC VAR_DECLs.
23494         * dwarf2out.c (loc_by_reference, gen_decl_die): Handle
23495         DECL_BY_REFERENCE on !TREE_STATIC VAR_DECLs.
23496         (gen_variable_die): Likewise.  Don't look at TREE_PRIVATE if
23497         DECL_BY_REFERENCE is valid.
23498         * dbxout.c (DECL_ACCESSIBILITY_CHAR): Don't look at TREE_PRIVATE
23499         for PARM_DECLs, RESULT_DECLs or !TREE_STATIC VAR_DECLs.
23500         * tree-nested.c (get_nonlocal_debug_decl, get_local_debug_decl):
23501         Copy DECL_BY_REFERENCE.
23502         (struct nesting_copy_body_data): New type.
23503         (nesting_copy_decl): New function.
23504         (finalize_nesting_tree_1): Remap types of debug_var_chain variables,
23505         if they have variable length.
23506
23507 2009-04-26  Michael Matz  <matz@suse.de>
23508
23509         * tree-sra.c (sra_build_assignment): Don't use into_ssa mode,
23510         mark new temporaries for renaming.
23511
23512 2009-04-26  Joseph Myers  <joseph@codesourcery.com>
23513
23514         PR c/39581
23515         * c-decl.c (global_bindings_p): Return negative value.
23516         (c_variable_size): New.  Based on variable_size from
23517         stor-layout.c.
23518         (grokdeclarator): Call c_variable_size not variable_size.
23519
23520 2009-04-26  Uros Bizjak  <ubizjak@gmail.com>
23521
23522         * config/i386/i386.c (print_operand) ['z']: Fix typo.
23523
23524 2009-04-26  Kai Tietz  <kai.tietz@onevision.com>
23525
23526         * config/i386/mingw-w64.h (STANDARD_INCLUDE_DIR):
23527         Redefine it to just use mingw/include.
23528         (ASM_SPEC): Rules for -m32 and -m64.
23529         (LINK_SPEC): Use Likewise.
23530         (SPEC_32): New define.
23531         (SPEC_64): Likewise.
23532         (SUB_LINK_SPEC): Likewise.
23533         (MULTILIB_DEFAULTS): New define.
23534         * config/i386/t-mingw-w64 (MULTILIB_OPTIONS):
23535         Add multilib options.
23536         (MULTILIB_DIRNAMES): Likewise.
23537         (MULTILIB_OSDIRNAMES): Likewise.
23538         (LIBGCC): Likewise.
23539         (INSTALL_LIBGCC): Likewise.
23540
23541 2009-04-26  Joseph Myers  <joseph@codesourcery.com>
23542
23543         PR c/39556
23544         * c-tree.h (enum c_inline_static_type): New.
23545         (record_inline_static): Declare.
23546         * c-decl.c (struct c_inline_static, c_inline_statics,
23547         record_inline_static, check_inline_statics): New.
23548         (pop_file_scope): Call check_inline_statics.
23549         (start_decl): Call record_inline_static instead of pedwarning
23550         directly for static in inline function.
23551         * c-typeck.c (build_external_ref): Call record_inline_static
23552         instead of pedwarning directly for static referenced in inline
23553         function.
23554
23555 2009-04-26  Steven Bosscher  <steven@gcc.gnu.org>
23556
23557         * df-scan.c (df_insn_rescan): Salvage insn's LUID if the insn is
23558         not new but only being rescanned.
23559         * gcse.c (uid_cuid, max_uid, INSN_CUID, max_cuid, struct reg_set,
23560         reg_set_table, REG_SET_TABLE_SLOP, reg_set_in_block,
23561         alloc_reg_set_mem, free_reg_set_mem, record_one_set,
23562         record_set_info, compute_set, grealloc): Remove.
23563         (recompute_all_luids): New function.
23564         (gcse_main): Don't compute sets, and don't do related memory
23565         allocations/free-ing.  If something changed before the end of the
23566         pass, update LUIDs using recompute_all_luids.
23567         (alloc_gcse_mem): Don't compute LUIDs.  Don't allocate reg_set memory.
23568         (free_gcse_mem): Don't free it either.
23569         (oprs_unchanged_p, load_killed_in_block, record_last_reg_set_info):
23570         Use the df insn LUIDs.
23571         (load_killed_in_block): Likewise.
23572         (compute_hash_table_work): Don't compute reg_set_in_block.
23573         (compute_transp): Use DF_REG_DEF_CHAINs.
23574         (local_cprop_pass): Don't use compute_sets and related functions.
23575         (one_cprop_pass, pre_gcse, one_pre_gcse_pass, one_code_hoisting_pass):
23576         Use get_max_uid() instead of max_cuid.
23577         (insert_insn_end_basic_block, pre_insert_copy_insn,
23578         update_ld_motion_stores): Don't try to
23579         keep reg_set tables up to date.
23580         (pre_insert_copies): Use df insn LUIDs.
23581         (sbitmap pre_redundant_insns): Replace with uses of INSN_DELETED_P.
23582         (reg_set_info): Don't use extra bitmap argument.
23583         (compute_store_table): Don't compute reg_set_in_block.  Use DF scan
23584         information to compute regs_set_in_block.
23585         (free_store_memory, store_motion): Don't nullify reg_set_in_block.
23586         (bypass_jumps): Don't use compute_sets and friends.
23587
23588 2009-04-26  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
23589
23590         PR testsuite/39710
23591         * opts.c (undocumented_msg): Do not leave blank even with
23592         ENABLE_CHECKING.
23593
23594 2009-04-25  Joseph Myers  <joseph@codesourcery.com>
23595
23596         * c-decl.c (build_enumerator): Allow values folding to integer
23597         constants but not integer constant expressions with a pedwarn if
23598         pedantic.
23599
23600 2009-04-25  Joseph Myers  <joseph@codesourcery.com>
23601
23602         PR c/39582
23603         * c-typeck.c (c_expr_sizeof_type): Create a C_MAYBE_CONST_EXPR
23604         with non-null C_MAYBE_CONST_EXPR_PRE if size of a variable-length
23605         type is an integer constant.
23606
23607 2009-04-25  Uros Bizjak  <ubizjak@gmail.com>
23608
23609         PR target/39897
23610         * config/i386/i386.c (print_operand) ['z']: Revert handling of
23611         HImode operands.
23612
23613 2009-04-25  Joseph Myers  <joseph@codesourcery.com>
23614
23615         PR c/39564
23616         * c-decl.c (grokdeclarator): Diagnose declarations of functions
23617         with variably modified return type and no storage class
23618         specifiers, except for the case of nested functions.  Distinguish
23619         extern declarations of functions with variably modified return
23620         types from those of objects with variably modified types.
23621
23622 2009-04-25  Jan Hubicka  <jh@suse.cz>
23623
23624         * tree.c (list_equal_p): New function.
23625         * tree.h (list_equal_p): Declare.
23626         * coretypes.h (edge_def, edge, const_edge, basic_block_def
23627         basic_block_def, basic_block, const_basic_block): New.
23628         * tree-eh.c (make_eh_edge): EH edges are not abnormal.
23629         (redirect_eh_edge): New function.
23630         (make_eh_edge_update_phi): EH edges are not abnormal.
23631         * except.c: Include tree-flow.h.
23632         (list_match): New function.
23633         (eh_region_replaceable_by_p): New function.
23634         (replace_region): New function.
23635         (hash_type_list): New function.
23636         (hash_eh_region): New function.
23637         (eh_regions_equal_p): New function.
23638         (merge_peers): New function.
23639         (remove_unreachable_regions): Verify EH tree when checking;
23640         merge peers.
23641         (copy_eh_region_1): New function.
23642         (copy_eh_region): New function.
23643         (push_reachable_handler): New function.
23644         (build_post_landing_pads, dw2_build_landing_pads): Be ready for
23645         regions without label but with live RESX.
23646         * except.h (redirect_eh_edge_to_label): New.
23647         * tree-flow.h (redirect_eh_edge): New.
23648         * coretypes.h (edge_def, edge, const_edge, basic_block_def
23649         basic_block_def, basic_block, const_basic_block): Remove.
23650         * Makefile.in (except.o): Add dependency on tree-flow.h
23651         * tree-cfg.c (gimple_redirect_edge_and_branch): Handle EH edges.
23652         * basic-block.h (edge, const_edge, basic_block, const_basic_block):
23653         Remove.
23654
23655 2009-04-25  Eric Botcazou  <ebotcazou@adacore.com>
23656
23657         PR bootstrap/39645
23658         * config/sparc/sparc.c (sparc_gimplify_va_arg): Set TREE_ADDRESSABLE
23659         on the destination of memcpy.
23660
23661 2009-04-25  Paolo Bonzini  <bonzini@gnu.org>
23662
23663         * doc/tm.texi (REGNO_OK_FOR_BASE_P, REGNO_MODE_OK_FOR_BASE_P,
23664         REGNO_MODE_OK_FOR_REG_BASE_P, REGNO_MODE_CODE_OK_FOR_BASE_P,
23665         REGNO_OK_FOR_INDEX_P): Mention strict/nonstrict difference.
23666
23667 2009-04-25  Jan Hubicka  <jh@suse.cz>
23668
23669         * tree-eh.c (tree_remove_unreachable_handlers): Handle shared labels.
23670         (tree_empty_eh_handler_p): Allow non-EH predecestors; allow region
23671         to be reached by different label than left.
23672         (update_eh_edges): Update comment; remove edge_to_remove if possible
23673         and return true if suceeded.
23674         (cleanup_empty_eh): Accept sharing map; handle shared regions.
23675         (cleanup_eh): Compute sharing map.
23676         * except.c (remove_eh_handler_and_replace): Add argument if we should
23677         update regions.
23678         (remove_unreachable_regions): Update for label sharing.
23679         (label_to_region_map): Likewise.
23680         (get_next_region_sharing_label): New function.
23681         (remove_eh_handler_and_replace): Add update_catch_try parameter; update
23682         prev_try pointers.
23683         (remove_eh_handler): Update.
23684         (remove_eh_region_and_replace_by_outer_of): New function.
23685         * except.h (struct eh_region): Add next_region_sharing_label.
23686         (remove_eh_region_and_replace_by_outer_of,
23687         get_next_region_sharing_label): Declare.
23688         * tree-cfgcleanup.c (tree_forwarder_block_p): Simplify.
23689
23690 2009-04-25  Jan Hubicka  <jh@suse.cz>
23691
23692         * tree-cfg.c (split_critical_edges): Split also edges where we can't
23693         insert code even if they are not critical.
23694
23695 2009-04-25  Jan Hubicka  <jh@suse.cz>
23696
23697         * tree-cfg.c (gimple_can_merge_blocks_p): EH edges are unmergable.
23698         (gimple_can_remove_branch_p): EH edges won't remove branch by
23699         redirection.
23700         * tree-inline.c (update_ssa_across_abnormal_edges): Do handle
23701         updating of non-abnormal EH edges.
23702         * tree-cfg.c (gimple_can_merge_blocks_p): EH edges are unmergable.
23703         (gimple_can_remove_branch_p): EH edges are unremovable by redirection.
23704         (split_critical_edges): Split also edges where emitting code on them
23705         will lead to splitting later.
23706
23707 2009-04-25  Uros Bizjak  <ubizjak@gmail.com>
23708             H.J. Lu  <hongjiu.lu@intel.com>
23709
23710         PR target/39590
23711         * configure.ac (HAVE_AS_IX86_FILDQ): On x86 targets check whether
23712         the configured assembler supports fildq and fistpq mnemonics.
23713         (HAVE_AS_IX86_FILDS): Rename from HAVE_GAS_FILDS_FISTS.
23714         * configure: Regenerated.
23715         * config.in: Ditto.
23716
23717         * config/i386/i386.c (print_operand): Handle 'Z'.
23718         ['z']: Remove handling of special fild/fist suffixes.
23719         (output_fix_trunc): Use '%Z' to output suffix of fist{,p,tp} insn.
23720         * config/i386/i386.md (*floathi<mode>2_i387): Use '%Z' to output
23721         suffix of fild insn.
23722         (*floatsi<mode>2_vector_mixed): Ditto.
23723         (*float<SSEMODEI24:mode><MODEF:mode>2_mixed_interunit): Ditto.
23724         (*float<SSEMODEI24:mode><MODEF:mode>2_mixed_nointerunit): Ditto.
23725         (*float<SSEMODEI24:mode><X87MODEF:mode>2_i387_with_temp): Ditto.
23726         (*float<SSEMODEI24:mode><X87MODEF:mode>2_i387): Ditto.
23727         * config/i386/gas.h (GAS_MNEMONICS): Remove.
23728
23729 2009-04-25  Ben Elliston  <bje@au.ibm.com>
23730
23731         * genrecog.c (validate_pattern): Do not warn for VOIDmode CALLs as
23732         the source of a set operation.
23733
23734 2009-04-25  Anatoly Sokolov  <aesok@post.ru>
23735
23736         * target.h (struct gcc_target): Add case_values_threshold field.
23737         * target-def.h (TARGET_CASE_VALUES_THRESHOLD): New.
23738         (TARGET_INITIALIZER): Use TARGET_CASE_VALUES_THRESHOLD.
23739         * targhooks.c (default_case_values_threshold): New function.
23740         * targhooks.h (default_case_values_threshold): Declare function.
23741         * stmt.c (expand_case): Use case_values_threshold target hook.
23742         * expr.h (case_values_threshold): Remove declartation.
23743         * expr.c (case_values_threshold): Remove function.
23744         * doc/tm.texi (CASE_VALUES_THRESHOLD): Revise documentation.
23745
23746         * config/avr/avr.h (CASE_VALUES_THRESHOLD): Remove macro.
23747         * config/avr/avr.c (TARGET_CASE_VALUES_THRESHOLD): Define macro.
23748         (avr_case_values_threshold): Declare as static.
23749         * config/avr/avr-protos.h (avr_case_values_threshold): Remove.
23750
23751         * config/avr/mn10300.h (CASE_VALUES_THRESHOLD): Remove macro.
23752         * config/avr/mn10300.c (TARGET_CASE_VALUES_THRESHOLD): Define macro.
23753         (mn10300_case_values_threshold): New function.
23754
23755 2009-04-24  H.J. Lu  <hongjiu.lu@intel.com>
23756
23757         * ira.c (setup_cover_and_important_classes): Add enum cast.
23758
23759 2009-04-24  Vladimir Makarov  <vmakarov@redhat.com>
23760
23761         * genpreds.c (write_enum_constraint_num): Output definition of
23762         CONSTRAINT_NUM_DEFINED_P macro.
23763         * ira.c (setup_cover_and_important_classes): Use
23764         CONSTRAINT_NUM_DEFINED_P instead of CONSTRAINT__LIMIT in #ifdef.
23765
23766 2009-04-24  DJ Delorie  <dj@redhat.com>
23767
23768         * config/sh/sh.h (LIBGCC2_DOUBLE_TYPE_SIZE): Test
23769         __SH2A_SINGLE_ONLY__ also.
23770
23771 2009-04-24  Steve Ellcey  <sje@cup.hp.com>
23772
23773         * config/ia64/ia64.md (movfs_internal): Allow flt constants.
23774         (movdf_internal): Ditto.
23775         * config/ia64/ia64.c (ia64_legitimate_constant_p): Allow
23776         SFmode and DFmode constants.
23777         (ia64_print_operand): Add 'G' format for printing
23778         floating point constants.
23779
23780 2009-04-24  Richard Guenther  <rguenther@suse.de>
23781
23782         * tree-vrp.c (extract_range_from_binary_expr): Handle overflow
23783         from unsigned additions.
23784
23785 2009-04-24  Joseph Myers  <joseph@codesourcery.com>
23786
23787         * c-typeck.c (set_init_index): Allow array designators that are
23788         not integer constant expressions with a pedwarn if pedantic.
23789
23790 2009-04-24  Bernd Schmidt  <bernd.schmidt@analog.com>
23791
23792         * simplify-rtx.c (simplify_binary_operation_1, case AND): Result is
23793         zero if no overlap in nonzero bits between the operands.
23794
23795 2009-04-24  Ian Lance Taylor  <iant@google.com>
23796
23797         * combine.c (record_value_for_reg): Change 0 to VOIDmode, twice.
23798         (record_dead_and_set_regs): Likewise.
23799         * df.h (struct df_mw_hardreg): Change flags field to int.
23800         (struct df_base_ref): Likewise.
23801         (struct df): Change changeable_flags field to int.
23802         * df-scan.c (df_defs_record): Change clobber_flags to int.
23803         * dwarf2.h (enum dwarf_tag): Make lo_user and hi_user values enum
23804         constants rather than #define macros.
23805         (enum dwarf_attribute, enum dwarf_location_atom): Likewise.
23806         (enum dwarf_type, enum dwarf_endianity_encoding): Likewise.
23807         (enum dwarf_calling_convention): Likewise.
23808         (enum dwarf_line_number_x_ops): Likewise.
23809         (enum dwarf_call_frame_info): Likewise.
23810         (enum dwarf_source_language): Likewise.
23811         * dwarf2out.c (int_loc_descriptor): Add cast to enum type.
23812         (add_calling_convention_attribute): Likewise.
23813         * fold-const.c (fold_undefer_overflow_warnings): Add cast to enum type.
23814         (combine_comparisons): Change compcode to int.  Add cast to enum type.
23815         * genrecog.c (maybe_both_true_2): Change c to int.
23816         (write_switch): Likewise.  Add cast to enum type.
23817         * gimplify.c (gimplify_omp_for): Handle return values from
23818         gimplify_expr using MIN rather than bitwise or.
23819         (gimplify_expr): Add cast to enum type.
23820         * ipa-prop.c (update_jump_functions_after_inlining): Change
23821         IPA_BOTTOM to IPA_JF_UNKNOWN.
23822         * ira.c (setup_class_subset_and_memory_move_costs): Change mode to int.
23823         Add casts to enum type.
23824         (setup_cover_and_important_classes): Change cl to int.  Add casts
23825         to enum type.
23826         (setup_class_translate): Change cl and mode to int.
23827         (ira_init_once): Change mode to int.
23828         (free_register_move_costs): Likewise.
23829         (setup_prohibited_mode_move_regs): Add casts to enum type.
23830         * langhooks.c (add_builtin_function_common): Rework assertion that
23831         value fits bitfield.
23832         * mcf.c (add_fixup_edge): Change type parameter to edge_type.
23833         * omega.c (omega_do_elimination): Avoid math on enum types.
23834         * optabs.c (expand_vec_shift_expr): Remove casts to int.
23835         * opts.c (set_debug_level): Change 2 to enum constant.  Use new
23836         int local to handle integral_argment value.
23837         * regmove.c (try_auto_increment): Change PUT_MODE to
23838         PUT_REG_NOTE_KIND.
23839         * reload.c (push_secondary_reload): Add casts to enum type.
23840         (secondary_reload_class, find_valid_class): Likewise.
23841         * reload1.c (emit_input_reload_insns): Likewise.
23842         * rtl.h (NOTE_VAR_LOCATION_STATUS): Likewise.
23843         * sel-sched.c (init_hard_regs_data): Change cur_mode to int.
23844         * sel-sched-ir.c (hash_with_unspec_callback): Change 0 to enum
23845         constant.
23846         * tree.c (build_common_builtin_nodes): Add casts to enum type.
23847         * tree-complex.c (complex_lattice_t): Typedef to int rather than
23848         enum type.
23849         (expand_complex_libcall): Add casts to enum type.
23850         * tree-into-ssa.c (get_ssa_name_ann): Change 0 to enum constant.
23851         * tree-vect-loop.c (vect_model_reduction_cost): Compare reduc_code
23852         with ERROR_MARK, not NUM_TREE_CODES.
23853         (vect_create_epilog_for_reduction): Likewise.
23854         (vectorizable_reduction): Don't initialize epiloc_reduc_code.
23855         When not using it, set it to ERROR_MARK rather than NUM_TREE_CODES.
23856         * tree-vect-patterns.c (vect_pattern_recog_1): Change vec_mode to
23857         enum machine_mode.
23858         * tree-vect-stmts.c (new_stmt_vec_info): Change 0 to
23859         vect_unused_in_loop.  Change 0 to loop_vect.
23860         * tree-vectorizer.c (vect_set_verbosity_level): Add casts to enum type.
23861         * var-tracking.c (get_init_value): Change return type to enum
23862         var_init_status.
23863         * vec.h (DEF_VEC_FUNC_P) [iterate]: Cast 0 to type T.
23864         * config/arm/arm.c (fp_model_for_fpu): Change to array to enum
23865         arm_fp_model.
23866         (arm_override_options): Add casts to enum type.
23867         (arm_emit_tls_decoration): Likewise.
23868         * config/i386/i386.c (ix86_function_specific_restore): Add casts
23869         to enum type.
23870         * config/i386/i386-c.c (ix86_pragma_target_parse): Likewise.
23871         * config/ia64/ia64.c (ia64_expand_compare): Change magic to int.
23872         * config/rs6000/rs6000.c (rs6000_override_options): Add casts to
23873         enum type.
23874         * config/s390/s390.c (code_for_builtin_64): Change to array of
23875         enum insn_code.
23876         (code_for_builtin_31): Likewise.
23877         (s390_expand_builtin): Change code_for_builtin to enum insn_code
23878         const *.
23879         * config/sparc/sparc.c (sparc_override_options): Change value
23880         field in struct code_model to enum cmodel.  In initializer change
23881         0 to NULL and add cast to enum type.
23882
23883         * c-typeck.c (build_modify_expr): Add lhs_origtype parameter.
23884         Change all callers.  Issue a -Wc++-compat warning using
23885         lhs_origtype if necessary.
23886         (convert_for_assignment): Issue -Wc++-compat warnings about
23887         invalid conversions to enum type on assignment.
23888         * c-common.h (build_modify_expr): Update declaration.
23889
23890 2009-04-24  Nick Clifton  <nickc@redhat.com>
23891
23892         * config/iq2000/iq2000.c (function_arg): Handle TImode values.
23893         (function_arg_advance): Likewise.
23894         * config/iq2000/iq2000.md (movsi_internal2): Fix the length of the
23895         5th alternative.
23896
23897 2009-04-24  Andreas Krebbel  <krebbel1@de.ibm.com>
23898
23899         * config/s390/constraints.md ('I', 'J'): Fix condition.
23900
23901 2009-04-24  Diego Novillo  <dnovillo@google.com>
23902
23903         * gengtype-parse.c (parse_error): Add newline after message.
23904
23905 2009-04-24  H.J. Lu  <hongjiu.lu@intel.com>
23906
23907         * config/i386/sse.md (avxmodesuffixs): Removed.
23908         (*avx_pinsr<avxmodesuffixs>): Renamed to ...
23909         (*avx_pinsr<ssevecsize>): This.
23910
23911 2009-04-24  Bernd Schmidt  <bernd.schmidt@analog.com>
23912
23913         * loop-iv.c (replace_single_def_regs): Look for REG_EQUAL notes;
23914         follow chains of regs with a single definition, and allow expressions
23915         that are function_invariant_p.
23916         (simple_rhs_p): Allow expressions that are function_invariant_p.
23917
23918 2009-04-24  Paolo Bonzini  <bonzini@gnu.org>
23919
23920         PR middle-end/39867
23921         * fold-const.c (fold_cond_expr_with_comparison): When folding
23922         > and >= to MAX, make sure the MAX uses the same type as the
23923         comparison's operands.
23924
23925 2009-04-24  Nick Clifton  <nickc@redhat.com>
23926
23927         * config/frv/frv.c (frv_frame_access): Do not use reg+reg
23928         addressing for DImode accesses.
23929         (frv_print_operand_address): Handle PLUS case.
23930         * config/frv/frv.h (FIXED_REGISTERS): Mark link register as fixed.
23931
23932 2009-04-24  Jakub Jelinek  <jakub@redhat.com>
23933
23934         PR rtl-optimization/39794
23935         * alias.c (canon_true_dependence): Add x_addr argument.
23936         * rtl.h (canon_true_dependence): Adjust prototype.
23937         * cse.c (check_dependence): Adjust canon_true_dependence callers.
23938         * cselib.c (cselib_invalidate_mem): Likewise.
23939         * gcse.c (compute_transp): Likewise.
23940         * dse.c (scan_reads_nospill): Likewise.
23941         (record_store, check_mem_read_rtx): Likewise.  For non-const-or-frame
23942         addresses pass base->val_rtx as mem_addr, for const-or-frame addresses
23943         canon_base_addr of the group, plus optional offset.
23944         (struct group_info): Rename canon_base_mem to
23945         canon_base_addr.
23946         (get_group_info): Set canon_base_addr to canon_rtx of base, not
23947         canon_rtx of base_mem.
23948
23949 2009-04-23  Paolo Bonzini  <bonzini@gnu.org>
23950
23951         * config/sh/sh.c (sh_expand_prologue, sh_expand_epilogue):
23952         Use memory_address_p instead of GO_IF_LEGITIMATE_ADDRESS.
23953
23954 2009-04-23  Ulrich Weigand  <Ulrich.Weigand@de.ibm.com>
23955
23956         * config/spu/spu-builtins.h: Delete file.
23957
23958         * config/spu/spu.h (enum spu_builtin_type): Move here from
23959         spu-builtins.h.
23960         (struct spu_builtin_description): Likewise.  Add GTY marker.
23961         Do not use enum spu_function_code or enum insn_code.
23962         (spu_builtins): Add extern declaration.
23963
23964         * config/spu/spu.c: Do not include "spu-builtins.h".
23965         (enum spu_function_code, enum spu_builtin_type_index,
23966         V16QI_type_node, V8HI_type_node, V4SI_type_node, V2DI_type_node,
23967         V4SF_type_node, V2DF_type_node, unsigned_V16QI_type_node,
23968         unsigned_V8HI_type_node, unsigned_V4SI_type_node,
23969         unsigned_V2DI_type_node): Move here from spu-builtins.h.
23970         (spu_builtin_types): Make static.  Add GTY marker.
23971         (spu_builtins): Add extern declaration with GTY marker.
23972         Include "gt-spu.h".
23973
23974         * config/spu/spu-c.c: Do not include "spu-builtins.h".
23975         (spu_resolve_overloaded_builtin): Do not use spu_function_code.
23976         Check programmatically whether all parameters are scalar.
23977
23978         * config/spu/t-spu-elf (spu.o, spu-c.o): Update dependencies.
23979
23980 2009-04-23  Eric Botcazou  <ebotcazou@adacore.com>
23981
23982         * gimplify.c (gimplify_modify_expr_rhs) <VAR_DECL>: Do not do a direct
23983         assignment from the constructor either if the target is volatile.
23984
23985 2009-04-23  Daniel Jacobowitz  <dan@codesourcery.com>
23986
23987         * config/arm/arm.md (insv): Do not share operands[0].
23988
23989 2009-04-23  Nathan Sidwell  <nathan@codesourcery.com>
23990
23991         * config/vxlib-tls.c (active_tls_threads): Delete.
23992         (delete_hook_installed): New.
23993         (tls_delete_hook): Don't delete the delete hook.
23994         (tls_destructor): Delete it here.
23995         (__gthread_set_specific): Adjust installing the delete hook.
23996         (tls_delete_hook): Use __gthread_enter_tsd_dtor_context and
23997         __gthread_leave_tsd_dtor_context.
23998
23999 2009-04-23  Rafael Avila de Espindola  <espindola@google.com>
24000
24001         * c-format.c (gcc_tdiag_char_table): Add support for %E.
24002
24003 2009-04-23  Uros Bizjak  <ubizjak@gmail.com>
24004
24005         * config/alpha/alpha.c (alpha_legitimize_reload_address): Add cast to
24006         enum type.
24007         (alpha_rtx_costs): Ditto.
24008         (emit_unlikely_jump): Use add_reg_note.
24009         (emit_frame_store_1): Ditto.
24010         (alpha_expand_prologue): Ditto.
24011         (alpha_expand_builtin): Change 0 to EXPAND_NORMAL in function call.
24012         * config/alpha/alpha.c (Unicos/Mk address splitter): Use add_reg_note.
24013
24014 2009-04-23  Nick Clifton  <nickc@redhat.com>
24015
24016         * config/v850/v850.md (epilogue): Remove suppressed code.
24017         (return): Rename to return_simple and remove test of frame size.
24018         * config/v850/v850.c (expand_epilogue): Rename call to gen_return
24019         to gen_return_simple.
24020
24021 2009-04-22  Jing Yu  <jingyu@google.com>
24022
24023         PR testsuite/39781
24024         * config/arm/arm.h: Define HANDLE_PRAGMA_PACK_PUSH_POP.
24025
24026 2009-04-22  Andrew Pinski  <andrew_pinski@playstation.sony.com>
24027
24028         PR C/31499
24029         * c-typeck.c (process_init_element): Treat VECTOR_TYPE like ARRAY_TYPE
24030         and RECORD_TYPE/UNION_TYPE.  When outputing the actual element and the
24031         value is a VECTOR_CST, the element type is the element type of the
24032         vector.
24033
24034 2009-04-22  DJ Delorie  <dj@redhat.com>
24035
24036         * config/m32c/m32c.h: Update GTY annotations to new syntax.
24037
24038 2009-04-22  Jakub Jelinek  <jakub@redhat.com>
24039
24040         * alias.c (find_base_term): Move around LO_SUM case, so that
24041         CONST falls through into PLUS/MINUS handling.
24042
24043         PR c/39855
24044         * fold-const.c (fold_binary) <case LSHIFT_EXPR>: When optimizing
24045         into 0, use omit_one_operand.
24046
24047 2009-04-23  Ben Elliston  <bje@au.ibm.com>
24048
24049         * config/rs6000/linux-unwind.h (get_regs): Remove type
24050         puns. Change the type of `pc' to an array of unsigned ints and
24051         update all users.  Constify frame24.
24052
24053 2009-04-22  DJ Delorie  <dj@redhat.com>
24054
24055         * config/m32c/m32c.c (m32c_special_page_vector_p): Move
24056         declarations before code.
24057         (current_function_special_page_vector): Likewise.
24058         (m32c_expand_insv): Silence a warning.
24059
24060 2009-04-21  Taras Glek  <tglek@mozilla.com>
24061
24062         * alias.c: Update GTY annotations to new syntax.
24063         * basic-block.h: Likewise.
24064         * bitmap.h: Likewise.
24065         * c-common.h: Likewise.
24066         * c-decl.c: Likewise.
24067         * c-parser.c: Likewise.
24068         * c-pragma.c: Likewise.
24069         * c-tree.h: Likewise.
24070         * cfgloop.h: Likewise.
24071         * cgraph.h: Likewise.
24072         * config/alpha/alpha.c: Likewise.
24073         * config/arm/arm.h: Likewise.
24074         * config/avr/avr.h: Likewise.
24075         * config/bfin/bfin.c: Likewise.
24076         * config/cris/cris.c: Likewise.
24077         * config/darwin.c: Likewise.
24078         * config/frv/frv.c: Likewise.
24079         * config/i386/i386.c: Likewise.
24080         * config/i386/i386.h: Likewise.
24081         * config/i386/winnt.c: Likewise.
24082         * config/ia64/ia64.h: Likewise.
24083         * config/iq2000/iq2000.c: Likewise.
24084         * config/mips/mips.c: Likewise.
24085         * config/mmix/mmix.h: Likewise.
24086         * config/pa/pa.c: Likewise.
24087         * config/pa/pa.h: Likewise.
24088         * config/rs6000/rs6000.c: Likewise.
24089         * config/s390/s390.c: Likewise.
24090         * config/sparc/sparc.c: Likewise.
24091         * config/xtensa/xtensa.c: Likewise.
24092         * cselib.h: Likewise.
24093         * dbxout.c: Likewise.
24094         * dwarf2out.c: Likewise.
24095         * except.c: Likewise.
24096         * except.h: Likewise.
24097         * fixed-value.h: Likewise.
24098         * function.c: Likewise.
24099         * function.h: Likewise.
24100         * gimple.h: Likewise.
24101         * integrate.c: Likewise.
24102         * optabs.c: Likewise.
24103         * output.h: Likewise.
24104         * real.h: Likewise.
24105         * rtl.h: Likewise.
24106         * stringpool.c: Likewise.
24107         * tree-data-ref.c: Likewise.
24108         * tree-flow.h: Likewise.
24109         * tree-scalar-evolution.c: Likewise.
24110         * tree-ssa-address.c: Likewise.
24111         * tree-ssa-alias.h: Likewise.
24112         * tree-ssa-operands.h: Likewise.
24113         * tree.c: Likewise.
24114         * tree.h: Likewise.
24115         * varasm.c: Likewise.
24116         * varray.h: Likewise.
24117         * vec.h: Likewise.
24118         * coretypes.h: Do not define GTY macro if it is already defined.
24119         * doc/gty.texi: Update GTY documentation to new syntax.
24120         * gengtype-lex.l: Enforce attribute-like syntax for GTY
24121         annotations on structs.
24122         * gengtype-parse.c: Likewise.
24123
24124 2009-04-22  Mark Heffernan  <meheff@google.com>
24125
24126         * gcc.c (LINK_COMMAND_SPEC): Link with gcov with -fprofile-generate=.
24127
24128 2009-04-22  Kazu Hirata  <kazu@codesourcery.com>
24129
24130         * config/arm/arm.c (arm_rtx_costs_1): Use power_of_two_operand
24131         where appropriate.
24132
24133 2009-04-22  Kazu Hirata  <kazu@codesourcery.com>
24134
24135         * config/arm/arm.c (arm_size_rtx_costs): Treat a PLUS with a shift
24136         the same as a PLUS without a shift.  Increase the cost of a
24137         CONST_INT in MULT.
24138
24139 2009-04-22  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
24140
24141         * Makefile.in: Update dependencies.
24142         * errors.c (warning): Remove unused parameter 'opt'. Returns 'void'.
24143         * errors.h: Remove bogus comment about compatibility.
24144         (warning): Update declaration.
24145         * genautomata.c: Update all calls to warning.
24146         * gimple.c: Do not include errors.h. Include toplev.h.
24147         * tree-ssa-structalias.c: Do not include errors.h.
24148         * omega.c: Likewise.
24149         * tree-ssa-reassoc.c: Likewise.
24150         * config/spu/spu-c.c: Likewise.
24151         * config/spu/t-spu-elf: Update dependencies.
24152
24153 2009-04-22  Richard Guenther  <rguenther@suse.de>
24154
24155         PR tree-optimization/39824
24156         * tree-ssa-ccp.c (fold_const_aggregate_ref): For INDIRECT_REFs
24157         make sure the types are compatible.
24158
24159 2009-04-22  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
24160
24161         PR c++/14875
24162         * c-common.c (c_parse_error): Take a token_flags parameter.
24163         Use token_type for the token type instead.
24164         Pass token_flags to cpp_type2name.
24165         * c-common.h (c_parse_error): Update declaration.
24166         * c-parser.c (c_parser_error): Pass 0 as token flags.
24167
24168 2009-04-22  Andrey Belevantsev  <abel@ispras.ru>
24169
24170         PR rtl-optimization/39580
24171         * sel-sched-ir.c (insert_in_history_vect): Remove incorrect gcc_assert.
24172
24173 2009-04-22  Ulrich Weigand  <Ulrich.Weigand@de.ibm.com>
24174
24175         * function.c (expand_function_end): Do not emit a jump to the "naked"
24176         return label for fall-through returns.
24177         * except.c (sjlj_emit_function_exit): Always place the call to the
24178         unregister function at the location installed by expand_function_end.
24179
24180 2009-04-22  Richard Guenther  <rguenther@suse.de>
24181
24182         PR tree-optimization/39845
24183         * tree-switch-conversion.c (build_arrays): Add new referenced vars.
24184         (gen_inbound_check): Likewise.
24185
24186 2009-04-22  Nathan Sidwell  <nathan@codesourcery.com>
24187
24188         * gthr-vxworks.h (struct __gthread_once_t): Add alignment and
24189         padding for PPC.
24190         (__GTHREAD_ONCE_INIT): Adjust ppc initializer.
24191         * config/vxlib.c (__gthread_once): Add race guard for PPC.
24192
24193 2009-04-22  Paolo Bonzini  <bonzini@gnu.org>
24194
24195         * config/sh/sh.c (shift_insns_rtx, shiftcosts, gen_shifty_op,
24196         sh_dynamicalize_shift_p, shl_and_scr_length): Truncate
24197         shift counts to avoid out-of-bounds array accesses.
24198
24199 2009-04-22  Paolo Bonzini  <bonzini@gnu.org>
24200
24201         * config/sparc/sparc.h (POINTER_SIZE): Fix comment.
24202         (Pmode): Move above.
24203
24204 2009-04-22  Uros Bizjak  <ubizjak@gmail.com>
24205
24206         * config/alpha/alpha.c: Use REG_P, MEM_P, CONST_INT_P, JUMP_P,
24207         NONJUMP_INSN_P, CALL_P, LABEL_P and NOTE_P predicates instead of
24208         GET_CODE macro.  Use IN_RANGE macro where appropriate.
24209         * config/alpha/alpha.h: Ditto.
24210         * config/alpha/alpha.md: Ditto.
24211         * config/alpha/constraints.md: Ditto.
24212         * config/alpha/predicates.md: Ditto.
24213
24214 2009-04-22  Paolo Bonzini  <bonzini@gnu.org>
24215
24216         * defaults.h (GO_IF_MODE_DEPENDENT_ADDRESS): Provide empty default.
24217         * config/frv/frv.h (GO_IF_MODE_DEPENDENT_ADDRESS): Delete.
24218         * config/s390/s390.h (GO_IF_MODE_DEPENDENT_ADDRESS): Delete.
24219         * config/m32c/m32c.h (GO_IF_MODE_DEPENDENT_ADDRESS): Delete.
24220         * config/spu/spu.h (GO_IF_MODE_DEPENDENT_ADDRESS): Delete.
24221         * config/i386/i386.h (GO_IF_MODE_DEPENDENT_ADDRESS): Delete.
24222         * config/sh/sh.h (GO_IF_MODE_DEPENDENT_ADDRESS): Delete.
24223         * config/pdp11/pdp11.h (GO_IF_MODE_DEPENDENT_ADDRESS): Delete.
24224         * config/avr/avr.h (GO_IF_MODE_DEPENDENT_ADDRESS): Delete.
24225         * config/crx/crx.h (GO_IF_MODE_DEPENDENT_ADDRESS): Delete.
24226         * config/fr30/fr30.h (GO_IF_MODE_DEPENDENT_ADDRESS): Delete.
24227         * config/m68hc11/m68hc11.h (GO_IF_MODE_DEPENDENT_ADDRESS): Delete.
24228         * config/cris/cris.h (GO_IF_MODE_DEPENDENT_ADDRESS): Delete.
24229         * config/iq2000/iq2000.h (GO_IF_MODE_DEPENDENT_ADDRESS): Delete.
24230         * config/mn10300/mn10300.h (GO_IF_MODE_DEPENDENT_ADDRESS): Delete.
24231         * config/ia64/ia64.h (GO_IF_MODE_DEPENDENT_ADDRESS): Delete.
24232         * config/m68k/m68k.h (GO_IF_MODE_DEPENDENT_ADDRESS): Delete.
24233         * config/picochip/picochip.h (GO_IF_MODE_DEPENDENT_ADDRESS): Delete.
24234         * config/arc/arc.h (GO_IF_MODE_DEPENDENT_ADDRESS): Delete.
24235         * config/mcore/mcore.h (GO_IF_MODE_DEPENDENT_ADDRESS): Delete.
24236         * config/score/score.h (GO_IF_MODE_DEPENDENT_ADDRESS): Delete.
24237         * config/arm/arm.h (GO_IF_MODE_DEPENDENT_ADDRESS): Delete.
24238         * config/pa/pa.h (GO_IF_MODE_DEPENDENT_ADDRESS): Delete.
24239         * config/mips/mips.h (GO_IF_MODE_DEPENDENT_ADDRESS): Delete.
24240         * config/v850/v850.h (GO_IF_MODE_DEPENDENT_ADDRESS): Delete.
24241         * config/mmix/mmix.h (GO_IF_MODE_DEPENDENT_ADDRESS): Delete.
24242         * config/bfin/bfin.h (GO_IF_MODE_DEPENDENT_ADDRESS): Delete.
24243
24244 2009-04-22  Laurynas Biveinis  <laurynas.biveinis@gmail.com>
24245
24246         * cfghooks.c (tidy_fallthru_edges): Remove find_basic_blocks
24247         references from comments.
24248         * cfgbuild.c (count_basic_blocks): Delete.
24249         (find_basic_blocks_1): Delete.
24250         (find_basic_blocks): Delete.
24251         * except.c (finish_eh_generation): Make static.  Move comment from
24252         except.h here.  Remove find_basic_blocks references from comments.
24253         * except.h (finish_eh_generation): Delete.
24254         * basic-block.h (find_basic_blocks): Delete.
24255         * config/sh/sh.c (sh_output_mi_thunk): Delete a "#if 0" block.
24256
24257 2009-04-22  Dave Korn  <dave.korn.cygwin@gmail.com>
24258
24259         * sdbout.c (sdbout_symbol):  Pass VOIDmode to eliminate_regs.
24260         (sdbout_parms):  Likewise.
24261
24262 2009-04-21  Kaz Kojima  <kkojima@gcc.gnu.org>
24263
24264         * config/sh/sh.c (prepare_cbranch_operands): Use
24265         LAST_AND_UNUSED_RTX_CODE instead of CODE_FOR_nothing.
24266         (expand_cbranchdi4): Likewise.
24267         (from_compare): Add cast to enum type.
24268         (expand_cbranchsi4): Use add_reg_note.
24269         (output_stack_adjust, push, pop, sh_expand_prologue): Likewise.
24270         (sh_insn_length_adjustment): Use sh_cpu_attr instead of sh_cpu.
24271         (sh_initialize_trampoline): Change 0 to LCT_NORMAL in function call.
24272         (sh_expand_builtin): Change 0 to EXPAND_NORMAL in function call.
24273         * config/sh/sh.md (cbranchsi4): Use LAST_AND_UNUSED_RTX_CODE
24274         instead of CODE_FOR_nothing.
24275         (cbranchdi4): Likewise.  Fix the order of arguments for
24276         gen_rtx_fmt_ee.
24277         (push_fpscr): Use add_reg_note.
24278         (pop_fpscr, movdf_i4+1, reload_outdf__RnFRm+3, reload_outdf__RnFRm+4,
24279         reload_outdf__RnFRm+5, fpu_switch+1, fpu_switch+2): Likewise.
24280
24281 2009-04-21  Joseph Myers  <joseph@codesourcery.com>
24282
24283         * ABOUT-GCC-NLS, ChangeLog, ChangeLog-1997, ChangeLog-1998,
24284         ChangeLog-1999, ChangeLog-2000, ChangeLog-2001, ChangeLog-2002,
24285         ChangeLog-2003, ChangeLog-2004, ChangeLog-2005, ChangeLog-2006,
24286         ChangeLog-2007, ChangeLog-2008, ChangeLog.dataflow, ChangeLog.lib,
24287         ChangeLog.ptr, ChangeLog.tree-ssa, ChangeLog.tuples, FSFChangeLog,
24288         FSFChangeLog.10, FSFChangeLog.11, LANGUAGES, ONEWS, acinclude.m4,
24289         config/alpha/gnu.h, config/alpha/libgcc-alpha-ldbl.ver,
24290         config/alpha/t-osf4, config/alpha/t-vms, config/alpha/va_list.h,
24291         config/alpha/x-vms, config/arc/t-arc,
24292         config/arm/README-interworking, config/arm/arm-c.c,
24293         config/arm/gentune.sh, config/arm/libgcc-bpabi.ver,
24294         config/arm/t-arm, config/arm/t-arm-elf, config/arm/t-arm-softfp,
24295         config/arm/t-bpabi, config/arm/t-linux, config/arm/t-linux-eabi,
24296         config/arm/t-netbsd, config/arm/t-pe, config/arm/t-strongarm-elf,
24297         config/arm/t-symbian, config/arm/t-vxworks, config/arm/t-wince-pe,
24298         config/avr/t-avr, config/bfin/elf.h, config/bfin/libgcc-bfin.ver,
24299         config/bfin/linux.h, config/bfin/t-bfin, config/bfin/t-bfin-elf,
24300         config/bfin/t-bfin-linux, config/bfin/t-bfin-uclinux,
24301         config/bfin/uclinux.h, config/cris/mulsi3.asm, config/cris/t-cris,
24302         config/cris/t-elfmulti, config/crx/t-crx,
24303         config/darwin-ppc-ldouble-patch.def, config/darwin-sections.def,
24304         config/divmod.c, config/fr30/t-fr30, config/frv/libgcc-frv.ver,
24305         config/frv/t-frv, config/frv/t-linux, config/h8300/genmova.sh,
24306         config/h8300/t-h8300, config/i386/athlon.md,
24307         config/i386/darwin-libgcc.10.4.ver,
24308         config/i386/darwin-libgcc.10.5.ver, config/i386/libgcc-glibc.ver,
24309         config/i386/mach.h, config/i386/netbsd.h, config/i386/t-crtpc,
24310         config/i386/t-cygming, config/i386/t-cygwin, config/i386/t-i386,
24311         config/i386/t-linux64, config/i386/t-nwld,
24312         config/i386/t-rtems-i386, config/i386/t-sol2-10,
24313         config/i386/x-mingw32, config/ia64/div.md, config/ia64/elf.h,
24314         config/ia64/ia64.opt, config/ia64/libgcc-glibc.ver,
24315         config/ia64/libgcc-ia64.ver, config/ia64/linux.h,
24316         config/ia64/sysv4.h, config/ia64/t-hpux, config/ia64/t-ia64,
24317         config/iq2000/abi, config/iq2000/lib2extra-funcs.c,
24318         config/iq2000/t-iq2000, config/libgcc-glibc.ver,
24319         config/m32r/libgcc-glibc.ver, config/m32r/t-linux,
24320         config/m32r/t-m32r, config/m68hc11/t-m68hc11,
24321         config/m68k/t-floatlib, config/m68k/t-linux, config/m68k/t-mlibs,
24322         config/m68k/t-uclinux, config/mcore/t-mcore,
24323         config/mcore/t-mcore-pe, config/mips/20kc.md, config/mips/4130.md,
24324         config/mips/5400.md, config/mips/5500.md, config/mips/crti.asm,
24325         config/mips/crtn.asm, config/mips/irix-crti.asm,
24326         config/mips/irix-crtn.asm, config/mips/libgcc-mips16.ver,
24327         config/mips/mips-dsp.md, config/mips/mips-dspr2.md,
24328         config/mips/mips-fixed.md, config/mips/sb1.md,
24329         config/mips/sr71k.md, config/mips/t-elf, config/mips/t-gofast,
24330         config/mips/t-iris6, config/mips/t-isa3264,
24331         config/mips/t-libgcc-mips16, config/mips/t-linux64,
24332         config/mips/t-mips, config/mips/t-r3900, config/mips/t-rtems,
24333         config/mips/t-sb1, config/mips/t-sde, config/mips/t-sdemtk,
24334         config/mips/t-slibgcc-irix, config/mips/t-sr71k, config/mips/t-st,
24335         config/mips/t-vr, config/mips/t-vxworks, config/mmix/t-mmix,
24336         config/mn10300/t-linux, config/mn10300/t-mn10300,
24337         config/pa/pa32-regs.h, config/pa/t-hpux-shlib, config/pa/t-linux,
24338         config/pa/t-linux64, config/pa/t-pa64, config/pdp11/t-pdp11,
24339         config/picochip/libgccExtras/clzsi2.asm,
24340         config/picochip/t-picochip, config/rs6000/darwin-ldouble-format,
24341         config/rs6000/darwin-libgcc.10.4.ver,
24342         config/rs6000/darwin-libgcc.10.5.ver,
24343         config/rs6000/libgcc-ppc-glibc.ver, config/rs6000/ppc-asm.h,
24344         config/rs6000/t-aix43, config/rs6000/t-aix52,
24345         config/rs6000/t-darwin, config/rs6000/t-fprules,
24346         config/rs6000/t-fprules-fpbit, config/rs6000/t-linux64,
24347         config/rs6000/t-lynx, config/rs6000/t-netbsd,
24348         config/rs6000/t-ppccomm, config/rs6000/t-ppcendian,
24349         config/rs6000/t-ppcgas, config/rs6000/t-rs6000,
24350         config/rs6000/t-rtems, config/rs6000/t-spe,
24351         config/rs6000/t-vxworks, config/s390/libgcc-glibc.ver,
24352         config/score/t-score-elf, config/sh/divcost-analysis,
24353         config/sh/libgcc-glibc.ver, config/sh/t-netbsd, config/sh/t-sh,
24354         config/sh/t-sh64, config/sh/t-superh, config/sh/t-symbian,
24355         config/sparc/libgcc-sparc-glibc.ver, config/sparc/sol2-bi.h,
24356         config/sparc/sol2-gas.h, config/sparc/sol2-gld-bi.h,
24357         config/sparc/t-elf, config/sparc/t-linux64, config/sparc/t-sol2,
24358         config/stormy16/stormy-abi, config/stormy16/t-stormy16,
24359         config/t-darwin, config/t-libunwind, config/t-libunwind-elf,
24360         config/t-linux, config/t-lynx, config/t-slibgcc-elf-ver,
24361         config/t-slibgcc-sld, config/t-sol2, config/t-vxworks,
24362         config/udivmod.c, config/udivmodsi4.c, config/v850/t-v850,
24363         config/v850/t-v850e, config/xtensa/t-xtensa, diagnostic.def,
24364         gdbinit.in, glimits.h, gstab.h, gsyms.h, java/ChangeLog,
24365         java/ChangeLog.ptr, java/ChangeLog.tree-ssa, libgcc-std.ver,
24366         limitx.h, version.c, xcoff.h: Add copyright and license notices.
24367         * config/h8300/genmova.sh: Include copyright and license notices
24368         in generated output.
24369         * config/h8300/mova.md: Regenerate.
24370         * doc/install.texi2html: Include word "Copyright" in copyright
24371         notice and use name "Free Software Foundation, Inc.".
24372         * ChangeLog, ChangeLog-2000, ChangeLog-2001, ChangeLog-2002,
24373         ChangeLog-2003, ChangeLog-2004, ChangeLog-2005, ChangeLog-2006,
24374         ChangeLog-2007, ChangeLog-2008: Correct dates.
24375
24376 2009-04-21  Eric Botcazou  <ebotcazou@adacore.com>
24377
24378         * c-common.c (c_common_truthvalue_conversion): Use LOCATION to build
24379         NE_EXPR operations as well.
24380         * c-parser.c (c_parser_condition): Do not set location information on
24381         the condition.
24382         (c_parser_conditional_expression): Likewise.
24383         (c_parser_binary_expression): Set location information on operators.
24384         * c-typeck.c (build_unary_op) <TRUTH_NOT_EXPR>: Reset the location if
24385         TRUTH_NOT_EXPR has been folded.
24386         * fold-const.c (fold_truth_not_expr): Copy location information from
24387         the incoming expression to the outgoing one.
24388         * gimplify.c (shortcut_cond_r): Add locus parameter.  Pass it to
24389         recursive calls on the LHS of the operator but pass that of the
24390         operator to recursive calls on the RHS of the operator.  Set it
24391         on the COND_EXPR.
24392         (shortcut_cond_expr): Set the locus of the operator on the second
24393         COND_EXPR and that of the expression on the first in degenerate cases.
24394         Pass the locus of the expression to calls to shortcut_cond_r.
24395         Set the locus of the 'then' block on the associated jump, if any.
24396         (gimplify_boolean_expr): Add locus parameter.  Set it on the COND_EXPR.
24397         (gimplify_expr) <TRUTH_ANDIF_EXPR>: Pass the locus of the outer
24398         expression to call to gimplify_boolean_expr.
24399
24400 2009-04-21  Kai Tietz  <kai.tietz@onevision.com>
24401
24402         * config.gcc: Add additional configuration for
24403         i686-w64-mingw* and x86_64-w64-mingw* triplet.
24404         * config/i386/mingw-w64.h: New mingw-w64 specific header.
24405         (CPP_SPEC): Redefine for allowing -municode option.
24406         (STARTFILE_SPEC): Likewise.
24407         * config/i386/t-mingw-w64: New.
24408         * config/i386/mingw-w64.opt: New.
24409         (municode): Add new target option.
24410         * doc/invoke.texi (municode): Add documentation for new option.
24411
24412 2009-04-21  Ian Lance Taylor  <iant@google.com>
24413
24414         * config/rs6000/rs6000-c.c (altivec_resolve_overloaded_builtin):
24415         Correct test for number of arguments.
24416         * config/spu/spu-c.c (spu_resolve_overloaded_builtin): Likewise.
24417
24418 2009-04-21  Andreas Schwab  <schwab@linux-m68k.org>
24419
24420         * config/m68k/linux.h (FINALIZE_TRAMPOLINE): Use enum for second
24421         argument of emit_library_call.
24422
24423 2009-04-21  Richard Guenther  <rguenther@suse.de>
24424
24425         PR middle-end/39829
24426         * gimple.c (walk_stmt_load_store_addr_ops): Catch addresses
24427         inside VIEW_CONVERT_EXPRs.
24428
24429 2009-04-21  Martin Jambor  <mjambor@suse.cz>
24430
24431         * tree-switch-conversion.c (build_constructors): Split a long line.
24432         (constructor_contains_same_values_p): New function.
24433         (build_one_array): Create assigns of constants if possible, do not
24434         call mark_sym_for_renaming, call update_stmt.
24435         (build_arrays): Call make_ssa_name (create_tmp_var ()) instead of
24436         make_rename_temp.  Do not call mark_symbols_for_renaming, call
24437         update_stmt.
24438         (gen_def_assigns): Do not call mark_symbols_for_renaming or
24439         find_new_referenced_vars, call update_stmt.
24440         (gen_inbound_check): Use create_tmp_var and create ssa names manually
24441         instead of calling make_rename_temp.  Do not call
24442         find_new_referenced_vars or mark_symbols_for_renaming, call
24443         update_stmt.
24444
24445 2009-04-21  Richard Guenther  <rguenther@suse.de>
24446
24447         PR tree-optimization/39827
24448         * tree-ssa-phiprop.c (propagate_with_phi): Check SSA_NAME is in range.
24449         (tree_ssa_phiprop): Pass the correct array size.
24450
24451 2009-04-21  Uros Bizjak  <ubizjak@gmail.com>
24452
24453         * config/alpha/alpha.md (tune): Add cast to enum attr_tune.
24454
24455 2009-04-21  Manuel López-Ibáñez  <manu@gcc.gnu.org>
24456
24457         PR 16202
24458         * c-typeck.c (lvalue_p): Move declaration ...
24459         * c-common.h (lvalue_p): ... to here.
24460         * c-common.c (candidate_equal_p): New.
24461         (add_tlist): Use it.
24462         (merge_tlist): Use it.
24463         (warn_for_collisions_1): Likewise.
24464         (warning_candidate_p): Accept more candidates.
24465         (verify_tree): A warning candidate can be an expression. Use
24466         candidate_equal_p.
24467
24468 2009-04-21  Ben Elliston  <bje@au.ibm.com>
24469
24470         PR target/5267
24471         * doc/invoke.texi (RS/6000 and PowerPC Options): Add documentation
24472         for -mcall-eabi, -mcall-aixdesc, -mcall-freebsd and -mcall-openbsd
24473         options.  Remove -mcall-solaris documentation.
24474
24475 2009-04-21  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
24476
24477         PR c++/13358
24478         * doc/invoke.texi (-Wlong-long): Update description.
24479         * c-lex (interpret_integer): Only warn if there was no previous
24480         overflow and -Wlong-long is enabled.
24481         * c-decl.c (declspecs_add_type): Drop redundant flags.
24482         * c.opt (Wlong-long): Init to -1.
24483         * c-opts.c (sanitize_cpp_opts): Synchronize cpp's warn_long_long
24484         and front-end warn_long_long. Wlong-long only depends on other
24485         flags if it is uninitialized.
24486         * c-parser.c (disable_extension_diagnostics): warn_long_long is
24487         the same for CPP and FE.
24488         (restore_extension_diagnostics): Likewise.
24489
24490 2009-04-20  Ian Lance Taylor  <iant@google.com>
24491
24492         Fix enum conversions which are invalid in C++:
24493         * auto-inc-dec.c (attempt_change): Change 0 to SET in function call.
24494         * calls.c (store_one_arg): Change 0 to EXPAND_NORMAL in function call.
24495         * cse.c (hash_rtx_cb): Change 0 to VOIDmode in function call.
24496         * dbgcnt.c (dbg_cnt_set_limit_by_name): Add cast to enum type.
24497         * dbxout.c (dbxout_symbol): Change 0 to VOIDmode in function call.
24498         (dbxout_parms): Likewise.
24499         * df-core.c (df_set_flags): Change changeable_flags parameter to int.
24500         (df_clear_flags): Likewise.
24501         * df-problems.c (df_rd_bb_local_compute_process_def): Change
24502         top_flag parameter to int.
24503         (df_chain_create_bb_process_use): Likewise.
24504         (df_chain_add_problem): Change chain_flags parameter to unsigned int.
24505         Remove cast.
24506         * df-scan.c (df_ref_create): Change ref_flags parameter to int.
24507         (df_ref_create_structure, df_def_record_1): Likewise.
24508         (df_defs_record, df_uses_record, df_get_call_refs): Likewise.
24509         (df_notes_rescan): Change 0 to VOIDmode in function call.
24510         (df_get_call_refs, df_insn_refs_collect): Likewise.
24511         (df_bb_regs_collect): Likewise.
24512         (df_entry_block_defs_collect): Likewise.
24513         (df_exit_block_uses_collect): Likewise.
24514         * df.h: Update declarations.
24515         * double-int.c (double_int_divmod): Add cast to enum type.
24516         * dse.c (replace_inc_dec): Reverse parameters to gen_int_mode.
24517         * dwarf2out.c (new_reg_loc_descr): Add casts to enum type.
24518         (based_loc_descr): Likewise.
24519         (loc_descriptor_from_tree_1): Change first_op and second_op to
24520         enum dwarf_location_atom.  Add cast to enum type.
24521         * expmed.c (init_expmed): Change 0 to SET in function call.
24522         * expr.c (init_expr_target): Change 0 to VOIDmode in function call.
24523         (expand_expr_real_1): Change 0 to EXPAND_NORMAL in function call.
24524         (do_store_flag): Likewise.
24525         * fixed-value.h (struct fixed_value): Change mode to enum
24526         machine_mode.
24527         * function.c (assign_parms): Change 0 to VOIDmode in function call.
24528         * genautomata.c (insert_automaton_decl): Change 1 to INSERT in
24529         function call.
24530         (insert_insn_decl, insert_decl, insert_state): Likewise.
24531         (automata_list_finish): Likewise.
24532         * genrecog.c (process_define_predicate): Add cast to enum type.
24533         * gensupport.c (init_predicate_table): Add cast to enum type.
24534         * gimple.c (gimple_build_return): Change 0 to ERROR_MARK in
24535         function call.
24536         (gimple_build_call_1, gimple_build_label): Likewise.
24537         (gimple_build_goto, gimple_build_asm_1): Likewise.
24538         (gimple_build_switch_1, gimple_build_cdt): Likewise.
24539         * gimple.h (GIMPLE_CHECK): Change 0 to ERROR_MARK in function call.
24540         (enum fallback): Rename from enum fallback_t.
24541         (fallback_t): Typedef as int.
24542         * gimple-low.c (lower_builtin_setjmp): Change TSI_SAME_STMT to
24543         GSI_SAME_STMT in function call.
24544         * ira.c (setup_class_subset_and_memory_move_costs): Add casts to
24545         enum type.
24546         (setup_reg_class_relations): Likewise.
24547         (setup_reg_class_nregs): Change cl to int.  Add casts to enum type.
24548         (setup_prohibited_class_mode_regs): Add cast to enum type.
24549         (setup_prohibited_mode_move_regs): Likewise.
24550         * ira-costs.c (record_reg_classes): Change rclass to enum reg_class.
24551         (record_address_regs): Change i to enum reg_class.
24552         * lists.c (alloc_EXPR_LIST): Add cast to enum type.
24553         * machmode.h (GET_MODE_CLASS): Cast value to enum mode_class.
24554         (GET_MODE_WIDER_MODE): Cast value to enum machine_mode.
24555         (GET_MODE_2XWIDER_MODE): Likewise.
24556         (GET_CLASS_NARROWEST_MODE): Likewise.
24557         * omp-low.c (expand_omp_for): Add cast to enum type.
24558         * optabs.c (debug_optab_libfuncs): Add casts to enum type.
24559         * opts.c (enable_warning_as_error): Change kind to diagostic_t.
24560         * postreload.c (reload_cse_simplify_operands): Change rclass local
24561         to enum reg_class.
24562         * predict.c (combine_predictions_for_insn): Change best_predictor
24563         and predictor to enum br_predictor.
24564         (combine_predictions_for_bb): Likewise.
24565         (build_predict_expr): Change assignment to PREDICT_EXPR_OUTCOME to
24566         use SET_PREDICT_EXPR_OUTCOME.
24567         * real.c (real_arithmetic): Change icode to code in function call.
24568         * reginfo.c (init_move_cost): Add casts to enum type.
24569         (init_reg_sets_1, init_fake_stack_mems): Likewise.
24570         * regmove.c (regclass_compatible_p): Change class0 and class1 to
24571         enum reg_class.
24572         * reload.c (find_valid_class): Add casts to enum type.
24573         (push_reload): Change 0 to NO_REGS in function call.
24574         (find_reloads): Change this_alternative to array of enum
24575         reg_class.  Remove some now-unnecessary casts.
24576         (make_memloc): Change 0 to VOIDmode in function call.
24577         * reload1.c (reload): Change 0 to VOIDmode in function call.
24578         (eliminate_regs_1, elimination_effects): Likewise.
24579         (eliminate_regs_in_insn): Likewise.
24580         (emit_input_reload_insns): Add cast to enum type.
24581         (delete_output_reload): Change 0 to VOIDmode in function call.
24582         * reorg.c (insn_sets_resource_p): Convert include_delayed_effects
24583         to enum type in function call.
24584         * tree.h (PREDICT_EXPR_OUTCOME): Add cast to enum type.
24585         (SET_PREDICT_EXPR_OUTCOME): Define.
24586         * tree-dump.c (get_dump_file_info): Change phase parameter to int.
24587         (get_dump_file_name, dump_begin, dump_enabled_p): Likewise.
24588         (dump_initialized_p, dump_flag_name, dump_end): Likewise.
24589         (dump_function): Likewise.
24590         * tree-dump.h: Update declarations.
24591         * tree-pass.h: Update declarations.
24592         * varasm.c (assemble_integer): Change mclass to enum mode_class.
24593         * config/arm/arm.c (thumb_legitimize_reload_address): Add cast to
24594         enum type.
24595         (arm_rtx_costs_1): Correct parenthesization.
24596         (arm_rtx_costs): Add casts to enum type.
24597         (adjacent_mem_locations): Reverse arguments to const_ok_for_op.
24598         (vfp_emit_fstmd): Use add_rg_note.
24599         (emit_multi_reg_push, emit_sfm): Likewise.
24600         (thumb_set_frame_pointer): Likewise.
24601         (arm_expand_prologue): Likewise.
24602         (arm_regno_class): Change return type to enum reg_class.
24603         (thumb1_expand_prologue): Use add_reg_note.
24604         * config/arm/arm-protos.h (arm_regno_class): Update declaration.
24605         * config/arm/arm.h (INITIALIZE_TRAMPOLINE): Change 0 to LCT_NORMAL
24606         in function call.
24607         * config/arm/gentune.sh: Add cast to enum type.
24608         * config/arm/arm-tune.md: Rebuild.
24609         * config/i386/i386.c (ix86_expand_prologue): Use add_reg_note.
24610         (ix86_split_fp_branch, predict_jump): Likewise.
24611         (ix86_expand_multi_arg_builtin): Change sub_code from enum
24612         insn_code to enum rtx_code.
24613         (ix86_builtin_vectorized_function): Add cast to enum type.
24614         * config/i386/i386.md (truncdfsf2): Change slot to enum
24615         ix86_stack_slot.
24616         (truncxf<mode>2, isinf<mode>2): Likewise.
24617         * config/i386/i386-c.c (ix86_pragma_target_parse): Add cast to
24618         enum type.
24619         * config/ia64/ia64.c (ia64_split_tmode_move): Use add_reg_note.
24620         (spill_restore_mem, do_spill, ia64_expand_prologue): Likewise.
24621         (insert_bundle_state): Change 1 to INSERT in function call.
24622         (ia64_add_bundle_selector_before): Likewise.
24623         * config/ia64/ia64.md (cpu attr): Add cast to enum type.
24624         (save_stack_nonlocal): Change 0 to LCT_NORMAL in function call.
24625         (restore_stack_nonlocal): Likewise.
24626         * config/mips/mips.h (MIPS_ICACHE_SYNC): Change 0 to LCT_NORMAL in
24627         function call.
24628         * config/mips/mips.c (mips_binary_cost): Change 0 to SET in
24629         function call.
24630         (mips_rtx_costs): Likewise.
24631         (mips_override_options): Add casts to enum type.
24632         * config/mips/sdemtk.h (MIPS_ICACHE_SYNC): Change 0 to LCT_NORMAL
24633         in function call.
24634         * config/pa/pa.c (legitimize_pic_address): Use add_reg_note.
24635         (store_reg, set_reg_plus_d): Likewise.
24636         (hppa_expand_prologue, hppa_profile_hook): Likewise.
24637         * config/rs6000/rs6000.c (rs6000_init_hard_regno_mode_ok): Add
24638         cast to enum type.
24639         (altivec_expand_vec_set_builtin): Change 0 to EXPAND_NORMAL in
24640         function call.
24641         (emit_unlikely_jump): Use add_reg_note.
24642         (rs6000_emit_allocate_stack): Likewise.
24643         (rs6000_frame_related, rs6000_emit_prologue): Likewise.
24644         (output_toc): Change 1 to INSERT in function call.
24645         (output_profile_hook): Change 0 to LCT_NORMAL in function call.
24646         (rs6000_initialize_trampoline): Likewise.
24647         (rs6000_init_dwarf_reg_sizes_extra): Change 0 to EXPAND_NORMAL in
24648         function call.
24649         * config/s390/s390.c (s390_rtx_costs): Add cast to enum type.
24650         (s390_expand_movmem): Change 0 to OPTAB_DIRECT in function call.
24651         (s390_expand_setmem, s390_expand_cmpmem): Likewise.
24652         (save_gprs): Use add_reg_note.
24653         (s390_emit_prologue): Likewise.
24654         (s390_expand_builtin): Change 0 to EXPAND_NORMAL in function call.
24655         * config/sparc/sparc.c (sparc_expand_prologue): Use add_reg_note.
24656         (sparc_fold_builtin): Add cast to enum type.
24657         * config/spu/spu.c (spu_emit_branch_or_set): Change ior_code to
24658         enum insn_code.
24659         (spu_expand_prologue): Use add_reg_note.
24660         (expand_builtin_args): Change 0 to EXPAND_NORMAL in function call.
24661
24662 2009-04-20  Ian Lance Taylor  <iant@google.com>
24663
24664         * c-parser.c (c_parser_attributes): Change VEC back to tree list.
24665         (c_parser_postfix_expression_after_primary): Get VEC for list of
24666         arguments.  Get original types of arguments.  Call
24667         build_function_call_vec.
24668         (cached_expr_list_1, cached_expr_list_2): New static variables.
24669         (c_parser_expr_list): Change return type to VEC *.  Add
24670         p_orig_types parameter.  Change all callers.
24671         (c_parser_release_expr): New static function.
24672         (c_parser_vec_to_tree_list): New static function.
24673         * c-typeck.c (build_function_call): Rewrite to build a VEC and
24674         call build_function_call_vec.
24675         (build_function_call_vec): New function, based on old
24676         build_function_call.
24677         (convert_arguments): Remove nargs and argarray parameters.  Change
24678         values to a VEC.  Add origtypes parameter.
24679         (build_modify_expr): Add rhs_origtype parameter.  Change all callers.
24680         (convert_for_assignment): Add origtype parameter.  Change all
24681         callers.  If warn_cxx_compat, check for conversion to an enum
24682         type when calling a function.
24683         (store_init_value): Add origtype parameter.  Change all callers.
24684         (digest_init): Likewise.
24685         (struct init_node): Add origtype field.
24686         (add_pending_init): Add origtype parameter.  Change all callers.
24687         (output_init_element): Likewise.
24688         (output_pending_init_elements): Pass origtype from init_node to
24689         output_init_element.
24690         (process_init_element): Pass origtype from c_expr to
24691         output_init_element.
24692         (c_finish_return): Add origtype parameter.  Change all callers.
24693         * c-common.c (sync_resolve_size): Change params to VEC *.  Change
24694         caller.
24695         (sync_resolve_params): Likewise.
24696         (sync_resolve_return): Change params to first_param.  Change caller.
24697         (resolve_overloaded_builtins): Change params to VEC *.  Change
24698         callers.  Save first parameter around call to build_function_call_vec.
24699         * c-decl.c (finish_decl): Add origtype parameter.  Change all
24700         callers.  Call build_function_call_vec rather than
24701         build_function_call for cleanup.
24702         * c-tree.h: Update declarations.
24703         * c-common.h: Update declarations.
24704         * stub-objc.c (objc_rewrite_function_call): Change parameter from
24705         params to first_param.
24706         * target.h (struct gcc_target): Change resolve_overloaded_builtin
24707         params parameter from tree to void *.
24708         * config/rs6000/rs6000-c.c (altivec_resolve_overloaded_builtin):
24709         Change arglist parameter to have type void *, and to be a pointer
24710         to a VEC.
24711         * config/rs6000/rs6000-protos.h
24712         (altivec_resolve_overloaded_builtin): Update declaration.
24713         * config/spu/spu-c.c (spu_resolved_overloaded_builtin): Change
24714         fnargs parameter to have type void *, and to be a pointer to a
24715         VEC.  Call build_function_call_vec instead of
24716         build_function_call.
24717         * config/spu/spu-protos.h (spu_expand_builtin): Update declaration.
24718
24719 2009-04-20  Joey Ye  <joey.ye@intel.com>
24720             Xuepeng Guo  <xuepeng.guo@intel.com>
24721             H.J. Lu  <hongjiu.lu@intel.com>
24722
24723         * config/i386/atom.md: Add bypasses with ix86_dep_by_shift_count.
24724
24725         * config/i386/i386.c (LEA_SEARCH_THRESHOLD): New macro.
24726         (IX86_LEA_PRIORITY): Likewise.
24727         (distance_non_agu_define): New function.
24728         (distance_agu_use): Likewise.
24729         (ix86_lea_for_add_ok): Likewise.
24730         (ix86_dep_by_shift_count): Likewise.
24731
24732         * config/i386/i386.md: Call ix86_lea_for_add_ok to decide we
24733         should split for LEA.
24734
24735         * config/i386/i386-protos.h (ix86_lea_for_add_ok): Declare new
24736         function.
24737         (ix86_dep_by_shift_count): Likewise.
24738
24739 2009-04-20  Richard Guenther  <rguenther@suse.de>
24740
24741         * expr.c (handled_component_p): Move ...
24742         * tree.h (handled_component_p): ... here.
24743         * tree.def: Re-order BIT_FIELD_REF, COMPONENT_REF,
24744         ARRAY_REF, ARRAY_RANGE_REF, VIEW_CONVERT_EXPR, IMAGPART_EXPR
24745         and REALPART_EXPR to be in one group.
24746
24747 2009-04-20  Richard Guenther  <rguenther@suse.de>
24748
24749         * basic-block.h (get_all_dominated_blocks): Declare.
24750         * dominance.c (get_all_dominated_blocks): New function.
24751         * tree-cfg.c (get_all_dominated_blocks): Remove.
24752         (remove_edge_and_dominated_blocks): Adjust.
24753         * tree-ssa-phiprop.c (tree_ssa_phiprop_1): Fold in ...
24754         (tree_ssa_phiprop): ... here.  Use get_all_dominated_blocks
24755         instead of recursing.
24756
24757 2009-04-20  Doug Kwan  <dougkwan@google.com>
24758
24759         * cgraph.h (cgraph_node_ptr): New type for vector functions.
24760         (struct cgraph_node_set_def): New type.
24761         (cgraph_node_set) New type. Also declare vector functions.
24762         (struct cgraph_node_set_element_def): New type.
24763         (cgraph_node_set_element): Ditto.
24764         (cgraph_node_set_iterator): New iterator type.
24765         (cgraph_node_set_new, cgraph_node_set_find, cgraph_node_set_add,
24766         cgraph_node_set_remove, dump_cgraph_node_set,
24767         debug_cgraph_node_set): New prototypes.
24768         (csi_end_p, csi_next, csi_node, csi_start, cgraph_node_in_set_p,
24769         cgraph_node_set_size): New inlines.
24770         * tree-pass.h (struct cgraph_node_set_def): New decl to avoid
24771         including cgraph.h.
24772         (struct ipa_opt_pass): Add struct cgraph_node_set_def
24773         argument to function 'write_summary'.
24774         * ipa.c: Include ggc.h.
24775         (hash_cgraph_node_set_element,
24776         eq_cgraph_node_set_element, cgraph_node_set_new,
24777         cgraph_node_set_add, cgraph_node_set_remove,
24778         cgraph_node_set_find, dump_cgraph_node_set,
24779         debug_cgraph_node_set): New functions.
24780         * Makefile.in (ipa.o): Add dependency on GGC_H.
24781
24782 2009-04-20  Ira Rosen  <irar@il.ibm.com>
24783
24784         PR tree-optimization/39675
24785         * tree-vect-loop.c (vect_transform_loop): Remove currently redundant
24786         check of the return code of vect_schedule_slp. Check that
24787         stmt_vec_info still exists for the statement, before checking its
24788         vectorization type.
24789
24790 2009-04-20  Michael Matz  <matz@suse.de>
24791
24792         * Makefile.in (generated_files): Take out $(simple_generated_c).
24793
24794 2009-04-19  Dave Korn  <dave.korn.cygwin@gmail.com>
24795
24796         * config/i386/cygwin-stdint.h (INTPTR_TYPE):  Remove "long".
24797         (UINTPTR_TYPE):  Likewise.
24798
24799 2009-04-19  Joseph Myers  <joseph@codesourcery.com>
24800
24801         PR c/37481
24802         * c-typeck.c (digest_init): Check for initializing an array with a
24803         string literal.
24804
24805 2009-04-19  Joseph Myers  <joseph@codesourcery.com>
24806
24807         PR c/19771
24808         * c-semantics.c (pop_stmt_list): Propagate
24809         STATEMENT_LIST_HAS_LABEL to parent statement list.
24810
24811 2009-04-19  Adam Nemet  <anemet@caviumnetworks.com>
24812
24813         * config/mips/mips.h (mips_tune_attr): New macro.
24814         * config/mips/mips.md (cpu): Use it.
24815
24816 2009-04-19  Joseph Myers  <joseph@codesourcery.com>
24817
24818         PR c/38243
24819         * c-decl.c (shadow_tag_warned): Diagnose use of restrict when
24820         declaring a tag.
24821
24822 2009-04-19  Diego Novillo  <dnovillo@google.com>
24823
24824         * toplev.c (compile_file): Move call to coverage_finish ...
24825         * cgraphunit.c (ipa_passes): ... here.
24826         Call cgraph_process_new_functions.
24827         * ipa-utils.c (get_base_var): Handle CONSTRUCTOR.
24828         * Makefile.in (cgraphunit.o): Add dependency on COVERAGE_H.
24829
24830 2009-04-19  Jan Hubicka  <jh@suse.cz>
24831
24832         * cgraph.c (cgraph_create_edge, cgraph_set_call_stmt): Set proper
24833         cfun.
24834         (dump_cgraph_node): Dump can throw external flag.
24835         * ipa-pure-const.c (propagate): Fix propagation of nothrow flags.
24836
24837 2009-04-19  Manuel López-Ibáñez  <manu@gcc.gnu.org>
24838
24839         PR c/32061
24840         PR c++/36954
24841         * doc/invoke.texi: Add -Wlogical-op to -Wextra.
24842         * common.opt (Wlogical-op): Move from here...
24843         * c.opt (Wlogical-op): ... to here.
24844         * c-typeck.c (parser_build_binary_op): Update call to
24845         warn_logical_operator.
24846         * c-opts.c (c_common_post_options): Enable warn_logical_op with
24847         extra_warnings.
24848         * c-common.c (warn_logical_op): Update.
24849         * c-common.h (warn_logical_op): Update declaration.
24850
24851 2009-04-19  Eric Botcazou  <ebotcazou@adacore.com>
24852
24853         * tree.c (protected_set_expr_location): Fix formatting.
24854
24855 2009-04-18  Joseph Myers  <joseph@codesourcery.com>
24856
24857         PR c/27676
24858         * c-typeck.c (readonly_warning): new.
24859         (build_unary_op, build_modify_expr): Use readonly_warning for
24860         storing into something readonly but not const-qualified.
24861
24862 2009-04-18  Joseph Myers  <joseph@codesourcery.com>
24863
24864         PR c/22367
24865         * c-typeck.c (build_unary_op): Check for taking address of
24866         expression of type void.
24867
24868 2009-04-18  Joseph Myers  <joseph@codesourcery.com>
24869
24870         PR c/35210
24871         * c-typeck.c (build_function_call): Check for calling a function
24872         with qualified void return types.  Call require_complete_type when
24873         generating a trap.
24874
24875 2009-04-18  Jan Hubicka  <jh@suse.cz>
24876
24877         * cgraph.c (cgraph_make_edge, dump_cgraph_node, cgraph_set_call_stmt):
24878         Set nothrow flag.
24879         * cgraph.h (struct function): Reduce loop_nest to 30 bits; add
24880         can_throw_external flag.
24881         * ipa-reference.c (ipa_utils_reduced_inorder): Update call.
24882         * ipa-pure-const.c (ignore_edge): New function.
24883         (propagate): Compute order for NOTHROW computation; set NOTHROWs
24884         only over can_throw_external edges.
24885         (local_pure_const): Add nothrow flag.
24886         * ipa-utils.c (searchc): Add ignore_edge callback.
24887         (ipa_utils_reduced_inorder): Add ignore_edge callback.
24888         * ipa-utils.h (ipa_utils_reduced_inorder): Update prototype.
24889         (set_nothrow_function_flags): Update cgraph.
24890         * tree-cfg.c (verify_stmt): Relax nothrow checking when in IPA mode.
24891
24892 2009-04-18  Richard Guenther  <rguenther@suse.de>
24893
24894         PR middle-end/39804
24895         * tree-ssa-ccp.c (fold_stmt_1): New function factored from ...
24896         (fold_stmt): ... this and ...
24897         (fold_stmt_inplace): ... this.
24898         (fold_stmt_1): Fold references in calls and asms.
24899         * tree-cfg.c (remove_useless_stmts_cond): Use fold_stmt.
24900
24901 2009-04-18  Kazu Hirata  <kazu@codesourcery.com>
24902
24903         * tree-vrp.c (ssa_name_nonzero_p): Remove.
24904         * tree.h: Remove the prototype for ssa_name_nonzero_p.
24905
24906 2009-04-18  Kazu Hirata  <kazu@codesourcery.com>
24907
24908         * tree.c (function_args_count): Remove.
24909         * tree.h: Remove the prototype for function_args_count.
24910
24911 2009-04-18  Kazu Hirata  <kazu@codesourcery.com>
24912
24913         * tree-iterator.c (expr_only): Remove.
24914         * tree.h: Remove the prototype for expr_only.
24915
24916 2009-04-18  Kazu Hirata  <kazu@codesourcery.com>
24917
24918         * reginfo.c (cannot_change_mode_set_regs): Remove.
24919         * rtl.h: Remove the prototype for cannot_change_mode_set_regs.
24920
24921 2009-04-08  Anatoly Sokolov  <aesok@post.ru>
24922
24923         * config/avr/avr.md (*rotlsi3_8, *rotlsi3_16, *rotlsi3_24 ): Check
24924         whether operands 0 and 1 overlaps.
24925
24926 2009-04-18  Manuel López-Ibáñez  <manu@gcc.gnu.org>
24927
24928         PR middle-end/36902
24929         * tree-vrp.c (check_array_ref): Pass a location_t instead of a
24930         pointer. Use warning_at instead of warning.
24931         (search_for_addr_array): Likewise.
24932         (check_array_bounds): Likewise.
24933         (check_all_array_refs): Check that the incoming edge is not in the
24934         list of edges to be removed.
24935         (check_all_array_refs): Avoid the temporal pointer.
24936         (vrp_visit_cond_stmt): Fix typo.
24937         (simplify_switch_using_ranges): Handle the case where the switch
24938         index is an integer constant.
24939
24940 2009-04-18  Adam Nemet  <anemet@caviumnetworks.com>
24941
24942         * config/mips/mips.c (mips_final_postscan_insn): Make it static.
24943
24944 2009-04-18  Kazu Hirata  <kazu@codesourcery.com>
24945
24946         * doc/extend.texi, doc/invoke.texi: Fix typos.
24947
24948 2009-04-17  Cary Coutant  <ccoutant@google.com>
24949
24950         * tree-flow-inline.h (get_lineno): Fix inverted test.
24951
24952 2009-04-17  Diego Novillo  <dnovillo@google.com>
24953
24954         * tree-ssa-pre.c (create_expression_by_pieces): Remove
24955         assertion for AVAIL_OUT.
24956
24957 2009-04-17  Mike Frysinger  <vapier@gentoo.org>
24958
24959         PR target/38627
24960         * config/sh/lib1funcs.asm [__ELF__ && __linux__]: Add .note.GNU-stack.
24961         * config/sh/linux-atomic.asm: Likewise.
24962
24963 2009-04-17  Diego Novillo  <dnovillo@google.com>
24964
24965         * except.c (debug_eh_tree): New.
24966         (struct eh_region, struct eh_status): Move ...
24967         * except.h: ... here.
24968         (add_type_for_runtime): Declare extern.
24969         (lookup_type_for_runtime): Likewise.
24970         (debug_eh_tree): Declare.
24971         * Makefile.in (GTFILES): List except.h before except.c
24972
24973 2009-04-17  Diego Novillo  <dnovillo@google.com>
24974
24975         * omp-low.c (create_omp_child_function): Set DECL_CONTEXT for DECL.
24976         * cgraphunit.c (cgraph_build_static_cdtor): Likewise.
24977         * tree-dfa.c (find_referenced_vars_in): Factor out of ...
24978         (find_vars_r): ... here.
24979         * tree-flow.h (find_referenced_vars_in): Declare.
24980         * tree-ssa-pre.c (create_expression_by_pieces): Assert
24981         that AVAIL_OUT exists for BLOCK.
24982         * Makefile.in (CGRAPH_H): Add dependency on cif-code.def
24983         (tree-loop-distribution.o): Fix dependency on TREE_VECTORIZER_H.
24984         (tree-parloops.o): Likewise.
24985
24986 2009-04-17  Simon Baldwin  <simonb@google.com>
24987
24988         * toplev.c (default_tree_printer): Add handling for %E format.
24989
24990 2009-04-17  Diego Novillo  <dnovillo@google.com>
24991
24992         * tree-pretty-print.c (dump_generic_node): Add break after
24993         TREE_BINFO handler.  Handle COMPLEX_TYPE, REAL_TYPE and
24994         FIXED_POINT_TYPE.  Handle NULL TREE_TYPEs.  Handle METHOD_TYPE and
24995         FUNCTION_TYPE together.  Call print_struct_decl when printing
24996         structures and TDF_SLIM is not given.
24997         (print_struct_decl): Fix logic for detecting recursion.
24998
24999 2009-04-17  Rafael Avila de Espindola  <espindola@google.com>
25000
25001         PR 31567
25002         * gcc.c (create_at_file): New.
25003         (compile_input_file_p): New.
25004         (do_spec_1): Use @args files for %i. Use create_at_file for %o.
25005         * main.c (main): Update call to toplev_main.
25006         * toplev.c (toplev_main): Change signature. Call expandargv.
25007         * toplev.h (toplev_main): Change signature.
25008
25009 2009-04-17  Eric Botcazou  <ebotcazou@adacore.com>
25010
25011         * dwarf2out.c (field_byte_offset): Use the type size as the field size
25012         if the latter is not constant.
25013
25014 2009-04-17  David Edelsohn  <edelsohn@gnu.org>
25015
25016         * dbxout.c (xcoff_debug_hooks): Add set_name_debug_nothing.
25017
25018 2009-04-17  Eric Botcazou  <ebotcazou@adacore.com>
25019
25020         * dbxout.c (dbxout_block): Reinstate test on TREE_USED.
25021         * tree-ssa-live.c (remove_unused_scope_block_p): Update TREE_USED bit.
25022
25023 2009-04-17  Richard Guenther  <rguenther@suse.de>
25024
25025         * tree-ssa-structalias.c (get_constraint_for_component_ref):
25026         Handle component references view-converting an invariant address.
25027
25028 2009-04-17  Adam Nemet  <anemet@caviumnetworks.com>
25029
25030         * doc/tm.texi (TARGET_DEFAULT_TARGET_FLAGS,
25031         TARGET_MIN_ANCHOR_OFFSET, TARGET_MAX_ANCHOR_OFFSET,
25032         TARGET_HAVE_SRODATA_SECTION, TARGET_HAVE_TLS,
25033         TARGET_UNWIND_TABLES_DEFAULT, TARGET_TERMINATE_DW2_EH_FRAME_INFO):
25034         Use @deftypevr rather than @deftypevar.
25035
25036 2009-04-17  Richard Guenther  <rguenther@suse.de>
25037
25038         * tree-ssa-forwprop.c (get_prop_dest_stmt): Clean up tuplification.
25039         (get_prop_source_stmt): Likewise.
25040         (can_propagate_from): Likewise.
25041
25042 2009-04-17  Andrew Stubbs  <ams@codesourcery.com>
25043
25044         * configure.ac: Add new AC_SUBST for TM_ENDIAN_CONFIG,
25045         TM_MULTILIB_CONFIG and TM_MULTILIB_EXCEPTIONS_CONFIG.
25046         (--with-multilib-list): Add default value.
25047         * configure: Regenerate.
25048         * Makefile.in (TM_ENDIAN_CONFIG): Define.
25049         (TM_MULTILIB_CONFIG, TM_MULTILIB_EXCEPTIONS_CONFIG): Define.
25050         * config.gcc (sh-*-*): Switch to using TM_ENDIAN_CONFIG,
25051         TM_MULTILIB_CONFIG, and TM_MULTILIB_EXCEPTIONS_CONFIG.
25052         Don't add default cpu to multilib list unnecessarily, but do enable
25053         the relevant compiler option..
25054         Add support for --with-multilib-list=<blank> and
25055         --with-multilib-list=!<somelib> to supress unwanted multilibs.
25056         * config/sh/t-sh (DEFAULT_ENDIAN, OTHER_ENDIAN): New variables.
25057         (MULTILIB_ENDIAN, MULTILIB_CPUS): Delete variables.
25058         (MULTILIB_OPTIONS): Redefine using OTHER_ENDIAN and
25059         TM_MULTILIB_CONFIG.
25060         (MULTILIB_EXCEPTIONS): Add TM_MULTILIB_EXCEPTIONS_CONFIG.
25061         (MULTILIB_OSDIRNAMES): New variable.
25062         * config/sh/t-1e: Delete file.
25063         * config/sh/t-mlib-sh1: Delete file.
25064         * config/sh/t-mlib-sh2: Delete file.
25065         * config/sh/t-mlib-sh2a: Delete file.
25066         * config/sh/t-mlib-sh2a-nofpu: Delete file.
25067         * config/sh/t-mlib-sh2a-single: Delete file.
25068         * config/sh/t-mlib-sh2a-single-only: Delete file.
25069         * config/sh/t-mlib-sh2e: Delete file.
25070         * config/sh/t-mlib-sh3e: Delete file.
25071         * config/sh/t-mlib-sh4: Delete file.
25072         * config/sh/t-mlib-sh4-nofpu: Delete file.
25073         * config/sh/t-mlib-sh4-single: Delete file.
25074         * config/sh/t-mlib-sh4-single-only: Delete file.
25075         * config/sh/t-mlib-sh4a: Delete file.
25076         * config/sh/t-mlib-sh4a-nofpu: Delete file.
25077         * config/sh/t-mlib-sh4a-single: Delete file.
25078         * config/sh/t-mlib-sh4a-single-only: Delete file.
25079         * config/sh/t-mlib-sh4al: Delete file.
25080         * config/sh/t-mlib-sh5-32media: Delete file.
25081         * config/sh/t-mlib-sh5-32media-nofpu: Delete file.
25082         * config/sh/t-mlib-sh5-64media: Delete file.
25083         * config/sh/t-mlib-sh5-64media-nofpu: Delete file.
25084         * config/sh/t-mlib-sh5-compact: Delete file.
25085         * config/sh/t-mlib-sh5-compact-nofpu: Delete file.
25086         * config/sh/t-linux: Don't override MULTILIB_EXCEPTIONS.
25087         * doc/install.texi (Options specification): Add
25088         --with-multilib-list and --with-endian.
25089
25090 2009-04-17  Rafael Avila de Espindola  <espindola@google.com>
25091
25092         * Makefile.in (REVISION_s): Always include quotes. Change ifdef to use
25093         REVISION_c.
25094         (OBJS-common): Add plugin-version.o.
25095         (plugin-version.o): New.
25096         * gcc-plugin.h (plugin_gcc_version): New.
25097         (plugin_default_version_check): New.
25098         (plugin_init_func, plugin_init): Add version argument.
25099         * plugin-version.c: New.
25100         * plugin.c (str_plugin_gcc_version_name): New.
25101         (try_init_one_plugin): Read plugin_gcc_version from the plugin and
25102         pass it to the init function.
25103         (plugin_default_version_check): New.
25104
25105 2009-04-17  Richard Guenther  <rguenther@suse.de>
25106
25107         * tree-ssa-alias.c (refs_may_alias_p_1): Do not use TBAA
25108         for decl-vs-decl disambiguation.
25109
25110 2009-04-17  Andreas Krebbel  <krebbel1@de.ibm.com>
25111
25112         * config/s390/s390.h (s390_tune_attr): New macro definition.
25113         * config/s390/s390.md (cpu attribute): Map to s390_tune_attr.
25114
25115 2009-04-17  Richard Guenther  <rguenther@suse.de>
25116
25117         * tree-ssa-ccp.c (struct fold_stmt_r_data): Remove.
25118         (fold_stmt_r): Likewise.
25119         (maybe_fold_reference): New function.
25120         (fold_gimple_assign): Handle cases fold_stmt_r did.
25121         (fold_stmt): Do not use fold_stmt_r.
25122         (fold_stmt_inplace): Likewise.
25123
25124 2009-04-17  Richard Guenther  <rguenther@suse.de>
25125
25126         * tree-ssa-dom.c (gimple_assign_unary_useless_conversion_p): Remove.
25127         (record_equivalences_from_stmt): Remove useless checks and
25128         simplifications.
25129         * tree-ssa-pre.c (eliminate): Avoid converting a constant if
25130         the type is already suitable.
25131
25132 2009-04-17  Paolo Bonzini  <bonzini@gnu.org>
25133
25134         * config/sh/sh.h (FUNCTION_VALUE): Fix call to sh_promote_prototypes.
25135
25136 2009-04-17  Uros Bizjak  <ubizjak@gmail.com>
25137
25138         * config/arm/sfp-machine.h (__gcc_CMPtype): New typedef.
25139         (CMPtype): Define as __gcc_CMPtype.
25140
25141 2009-04-17  Aurelien Jarno  <aurelien@aurel32.net>
25142
25143         * config.gcc: Add soft-fp/t-softfp and i386/t-linux to tmake_file
25144         for i[34567]86-*-kfreebsd*-gnu*, x86_64-*-kfreebsd*-gnu*.
25145
25146 2009-04-17  Richard Guenther  <rguenther@suse.de>
25147
25148         PR tree-optimization/39746
25149         * tree-ssa-alias.c (ref_maybe_used_by_call_p_1): Remove
25150         special-casing for builtins and static variable use/def.
25151         (call_may_clobber_ref_p_1): Likewise.
25152
25153 2009-04-16  Ian Lance Taylor  <iant@google.com>
25154
25155         * df.h: Include "timevar.h".
25156         (struct df_problem): Change tv_id field to timevar_id_t.
25157         * tree-pass.h: Include "timevar.h".
25158         (struct opt_pass): Change tv_id field to timevar_id_t.
25159         * timevar.h (timevar_id_t): Define TV_NONE.
25160         * passes.c (execute_one_ipa_transform_pass): Check for tv_id !=
25161         TV_NONE rather than tv_id != 0.
25162         (execute_one_pass): Likewise.
25163         * Makefile.in (DF_H): Add $(TIMEVAR_H).
25164         (TREE_PASS_H): Define.  Change all instances of tree-pass.h in
25165         dependencies to $(TREE_PASS_H).
25166         * bt-load.c (pass_branch_target_load_optimize1): Set tv_id field
25167         to TV_NONE.
25168         (pass_branch_target_load_optimize2): Likewise.
25169         * cfglayout.c (pass_into_cfg_layout_mode): Likewise.
25170         (pass_outof_cfg_layout_mode): Likewise.
25171         * cgraphbuild.c (pass_remove_cgraph_callee_edges): Likewise.
25172         (pass_rebuild_cgraph_edges): Likewise.
25173         (pass_remove_cgraph_callee_edges): Likewise.
25174         * df-core.c (pass_df_initialize_opt): Likewise.
25175         (pass_df_initialize_no_opt): Likewise.
25176         (pass_df_finish): Likewise.
25177         * emit-rtl.c (pass_unshare_all_rtl): Likewise.
25178         * except.c (pass_set_nothrow_function_flags): Likewise.
25179         (pass_convert_to_eh_region_ranges): Likewise.
25180         * final.c (pass_compute_alignments): Likewise.
25181         * function.c (pass_instantiate_virtual_regs): Likewise.
25182         (pass_init_function): Likewise.
25183         (pass_leaf_regs): Likewise.
25184         (pass_match_asm_constraints): Likewise.
25185         * gimple-low.c (pass_lower_cf): Likewise.
25186         (pass_mark_used_blocks): Likewise.
25187         * init-regs.c (pass_initialize_regs): Likewise.
25188         * integrate.c (pass_initial_value_sets): Likewise.
25189         * ira.c (pass_ira): Likewise.
25190         * jump.c (pass_cleanup_barriers): Likewise.
25191         * omp-low.c (pass_expand_omp): Likewise.
25192         (pass_lower_omp): Likewise.
25193         * matrix-reorg.c (pass_ipa_matrix_reorg): Likewise.
25194         * recog.c (pass_split_all_insns): Likewise.
25195         (pass_split_after_reload): Likewise.
25196         (pass_split_before_regstack): Likewise.
25197         (pass_split_before_sched2): Likewise.
25198         (pass_split_for_shorten_branches): Likewise.
25199         * reginfo.c (pass_reginfo_init): Likewise.
25200         (pass_subregs_of_mode_init): Likewise.
25201         (pass_subregs_of_mode_finish): Likewise.
25202         * passes.c (pass_postreload): Likewise.
25203         * stack-ptr-mod.c (pass_stack_ptr_mod): Likewise.
25204         * tree-cfg.c (pass_remove_useless_stmts): Likewise.
25205         (pass_warn_function_return): Likewise.
25206         (pass_warn_function_noreturn): Likewise.
25207         * tree-complex.c (pass_lower_complex): Likewise.
25208         (pass_lower_complex_O0): Likewise.
25209         * tree-if-conv.c (pass_if_conversion): Likewise.
25210         * tree-into-ssa.c (pass_build_ssa): Likewise.
25211         * tree-mudflap.c (pass_mudflap_1): Likewise.
25212         (pass_mudflap_2): Likewise.
25213         * tree-nomudflap.c (pass_mudflap_1): Likewise.
25214         (pass_mudflap_2): Likewise.
25215         * tree-nrv.c (pass_return_slot): Likewise.
25216         * tree-object-size.c (pass_object_sizes): Likewise.
25217         * tree-optimize.c (pass_all_optimizations): Likewise.
25218         (pass_early_local_passes): Likewise.
25219         (pass_all_early_optimizations): Likewise.
25220         (pass_cleanup_cfg): Likewise.
25221         (pass_cleanup_cfg_post_optimizing): Likewise.
25222         (pass_free_datastructures): Likewise.
25223         (pass_free_cfg_annotations): Likewise.
25224         (pass_fixup_cfg): Likewise.
25225         (pass_init_datastructures): Likewise.
25226         * tree-ssa.c (pass_early_warn_uninitialized): Likewise.
25227         (pass_late_warn_uninitialized): Likewise.
25228         (pass_update_address_taken): Likewise.
25229         * tree-ssa-ccp.c (pass_fold_builtins): Likewise.
25230         * tree-ssa-math-opts.c (pass_cse_reciprocals): Likewise.
25231         (pass_cse_sincos): Likewise.
25232         (pass_convert_to_rsqrt): Likewise.
25233         * tree-ssa-structalias.c (pass_build_alias): Likewise.
25234         * tree-stdarg.c (pass_stdarg): Likewise.
25235         * tree-tailcall.c (pass_tail_recursion): Likewise.
25236         (pass_tail_calls): Likewise.
25237         * tree-vect-generic.c (pass_lower_vector): Likewise.
25238         (pass_lower_vector_ssa): Likewise.
25239         * tree-vectorizer.c (pass_ipa_increase_alignment): Likewise.
25240
25241 2009-04-16  Joseph Myers  <joseph@codesourcery.com>
25242
25243         * config/mips/mips.c (mips_rtx_cost_data): Use SOFT_FP_COSTS in
25244         XLR entry.
25245         * config/mips/mips.h (MIPS_ISA_LEVEL_SPEC, MIPS_ARCH_FLOAT_SPEC):
25246         Handle -march=xlr.
25247         * config/mips/xlr.md (ir_xlr_alu): Also accept insn types move,
25248         logical and signext.
25249
25250 2009-04-16  Kaz Kojima  <kkojima@gcc.gnu.org>
25251
25252         PR target/39767
25253         * config/sh/predicates.md (arith_operand): Check if the operand
25254         of TRUNCATE is a REG.
25255
25256 2009-04-16  Kazu Hirata  <kazu@codesourcery.com>
25257
25258         * cfgrtl.c (delete_insn_chain_and_edges): Remove.
25259         * rtl.h: Remove the prototype for delete_insn_chain_and_edges.
25260
25261 2009-04-16  Kazu Hirata  <kazu@codesourcery.com>
25262
25263         * tree-iterator.c (tsi_split_statement_list_after,
25264         tsi_split_statement_list_before): Remove.
25265         * tree-iterator.h: Remove the prototypes for
25266         tsi_split_statement_list_after and tsi_split_statement_list_before.
25267
25268 2009-04-16  Kazu Hirata  <kazu@codesourcery.com>
25269
25270         * tree-ssa-propagate.c (stmt_makes_single_load): Remove.
25271         * tree-ssa-propagate.h: Remove the prototype for
25272         stmt_makes_single_load.
25273
25274 2009-04-16  Kazu Hirata  <kazu@codesourcery.com>
25275
25276         * emit-rtl.c (set_mem_attrs_from_reg): Remove.
25277         * rtl.h: Remove the prototype for set_mem_attrs_from_reg.
25278
25279 2009-04-16  Kazu Hirata  <kazu@codesourcery.com>
25280
25281         * tree-iterator.c (EXPR_LAST_BODY): Remove.
25282
25283 2009-04-16  Kazu Hirata  <kazu@codesourcery.com>
25284
25285         * except.c (eh_region_outer_p): Remove.
25286         * except.h: Remove the prototype for eh_region_outer_p.
25287
25288 2009-04-16  Kazu Hirata  <kazu@codesourcery.com>
25289
25290         * function.c (current_function_assembler_name): Remove.
25291         * function.h: Remove the prototype for
25292         current_function_assembler_name.
25293
25294 2009-04-16  Ian Lance Taylor  <iant@google.com>
25295
25296         * rtlanal.c (alloc_reg_note): New function, broken out of add_reg_note.
25297         (add_reg_note): Call alloc_reg_note.
25298         * rtl.h (alloc_reg_note): Declare.
25299         * combine.c (try_combine): Use alloc_reg_note.
25300         (recog_for_combine, move_deaths): Likewise.
25301         (distribute_notes): Use alloc_reg_note and add_reg_note.
25302         * haifa-sched.c (sched_create_recovery_edges): Use add_reg_note.
25303         * combine-stack-adj.c (adjust_frame_related_expr): Likewise.
25304         * reload1.c (eliminate_regs_1): Use alloc_reg_note.
25305
25306 2009-04-16  Vladimir Makarov  <vmakarov@redhat.com>
25307
25308         PR rtl-optimization/39762
25309         * ira-int.h (ira_register_move_cost, ira_may_move_in_cost,
25310         ira_may_move_out_cost): Add comments about way of their usage.
25311         (ira_get_register_move_cost, ira_get_may_move_cost): New functions.
25312
25313         * ira-conflicts.c (process_regs_for_copy): Use function
25314         ira_get_register_move_cost instead of global
25315         ira_register_move_cost.
25316
25317         * ira-color.c (update_copy_costs, calculate_allocno_spill_cost,
25318         color_pass, move_spill_restore, update_curr_costs): Ditto.
25319
25320         * ira-lives.c (process_single_reg_class_operands): Ditto.
25321
25322         * ira-emit.c (emit_move_list): Ditto.
25323
25324         * ira-costs.c (copy_cost): Don't call ira_init_register_move_cost.
25325         (record_reg_classes): Ditto.  Use functions
25326         ira_get_register_move_cost and ira_get_may_move_cost instead of
25327         global vars ira_register_move_cost, ira_may_move_out_cost and
25328         ira_may_move_in_cost.
25329         (record_address_regs): Don't call ira_init_register_move_cost.
25330         Use function ira_get_may_move_cost instead of global
25331         ira_may_move_in_cost.
25332         (process_bb_node_for_hard_reg_moves): Use function
25333         ira_get_register_move_cost instead of global ira_register_move_cost.
25334         (ira_costs): Don't call ira_init_register_move_cost.
25335
25336 2009-04-16  Richard Guenther  <rguenther@suse.de>
25337
25338         * tree-cfg.c (verify_gimple_assign_binary):
25339         Allow POINTER_PLUS_EXPR-like PLUS_EXPR for vectors.
25340         * ipa-struct-reorg.c (gen_size): Fold the built expressions.
25341         (create_general_new_stmt): Note that this function is broken.
25342
25343 2009-04-16  Rafael Avila de Espindola  <espindola@google.com>
25344
25345         * common.opt (fhelp): Add Var(help_flag).
25346         * gcc-plugin.h (plugin_info): Add help.
25347         * plugin.c (plugin_name_args): Add help.
25348         (register_plugin_info): Set plugin->help.
25349         (print_help_one_plugin): New.
25350         (print_plugins_help): New.
25351         * plugin.h (print_plugins_help): New.
25352         * toplev.c (toplev_main): Call print_plugins_help if needed.
25353
25354 2009-04-16  Richard Guenther  <rguenther@suse.de>
25355
25356         * gimple.c (gimple_copy): Do not clear addresses_taken bitmap.
25357         (gimple_ior_addresses_taken_1): New function.
25358         (gimple_ior_addresses_taken): Likewise.
25359         * gimple.h (struct gimple_statement_with_ops_base): Remove
25360         addresses_taken member.
25361         (gimple_ior_addresses_taken): Declare.
25362         (gimple_addresses_taken, gimple_addresses_taken_ptr,
25363         gimple_set_addresses_taken): Remove.
25364         * ipa-reference.c (mark_address): New function.
25365         (scan_stmt_for_static_refs): Use it for marking addresses taken.
25366         * tree-ssa-operands.c (add_to_addressable_set): Rename to ...
25367         (mark_address_taken): ... this.  Just set TREE_ADDRESSABLE.
25368         (gimple_add_to_addresses_taken): Remove.
25369         (get_tmr_operands): Call mark_address_taken.
25370         (get_asm_expr_operands): Likewise.
25371         (get_expr_operands): Likewise.
25372         (build_ssa_operands): Do not clear the addresses_taken bitmap.
25373         (free_stmt_operands): Do not free it.
25374         * tree-ssa.c (delete_tree_ssa): Likewise.
25375         (execute_update_addresses_taken): Use gimple_ior_addresses_taken.
25376
25377 2009-04-16  Richard Guenther  <rguenther@suse.de>
25378
25379         * gimple.h (walk_stmt_load_store_addr_ops): Declare.
25380         (walk_stmt_load_store_ops): Likewise.
25381         * gimple.c (get_base_loadstore): New function.
25382         (walk_stmt_load_store_addr_ops): Likewise.
25383         (walk_stmt_load_store_ops): Likewise.
25384         * ipa-pure-const.c (check_op): Simplify.
25385         (check_load, check_store): New functions.
25386         (check_stmt): Use walk_stmt_load_store_ops.
25387         * ipa-reference.c (mark_load): Adjust signature.
25388         (mark_store): Likewise.
25389         (scan_stmt_for_static_refs): Use walk_stmt_load_store_addr_ops.
25390
25391 2009-04-16  Rafael Avila de Espindola  <espindola@google.com>
25392
25393         * gcc-plugin.h (plugin_event): Add PLUGIN_INFO.
25394         (plugin_info): New.
25395         * opts.c (common_handle_option): Don't call print_version.
25396         * plugin.c (plugin_name_args): Add version.
25397         (register_plugin_info): New.
25398         (register_callback): Handle PLUGIN_INFO.
25399         (try_init_one_plugin): New.
25400         (init_one_plugin): Use try_init_one_plugin. Only free plugin_name_args
25401         if failed to init.
25402         (finalize_one_plugin): New.
25403         (finalize_plugins): New.
25404         (print_one_plugin): New.
25405         (print_plugins_versions): New.
25406         * plugin.h (print_plugins_versions): New.
25407         (finalize_plugins): New.
25408         * toplev.c (compile_file): Don't call initialize_plugins.
25409         (print_version): Call print_plugins_versions.
25410         (toplev_main): Call initialize_plugins. Print version if needed.
25411         Call finalize_plugins.
25412
25413 2009-04-16  Rafael Avila de Espindola  <espindola@google.com>
25414
25415         * common.opt (fversion): New.
25416         * gcc.c (print_version): New.
25417         (process_command): Don't print the version. Just set print_version.
25418         (main): Print version. Call subprocesses if print_version and
25419         verbose_flag are set.
25420         * opts.c (common_handle_option): Handle OPT_fversion.
25421
25422 2009-04-16  Richard Guenther  <rguenther@suse.de>
25423             Ira Rosen  <irar@il.ibm.com>
25424
25425         PR tree-optimization/39698
25426         * tree-vect-loop.c (get_initial_def_for_reduction): Use the
25427         type of the reduction variable.  Only generate the def if
25428         it is needed.
25429
25430         * omp-low.c (expand_omp_for_generic): When converting to a pointer
25431         make sure to first convert to an integer of the same precision.
25432         * tree-vect-loop-manip.c (vect_update_ivs_after_vectorizer): Retain
25433         the type of the evolution correctly in computing the new
25434         induction variable base.
25435
25436 2009-04-16  Richard Guenther  <rguenther@suse.de>
25437
25438         PR middle-end/39625
25439         * tree-cfg.c (make_blocks): Split statements with to-be
25440         abnormal SSA names on the lhs.
25441
25442 2009-04-16  Paolo Bonzini  <bonzini@gnu.org>
25443
25444         * c-common.c (vector_targets_convertible_p, vector_types_convertible_p):
25445         Use TYPE_VECTOR_OPAQUE instead of targetm.vector_opaque_p.
25446         * c-typeck.c (really_start_incremental_init): Likewise.
25447         * target-def.h (TARGET_VECTOR_OPAQUE_P): Remove.
25448         (TARGET_INITIALIZER): Remove it.
25449         * target.h (struct target): Remove vector_opaque_p.
25450         * tree.c (build_opaque_vector_type): New.
25451         * tree.h (TYPE_VECTOR_OPAQUE): New.
25452         (build_opaque_vector_type): Declare.
25453         * doc/tm.texi (TARGET_VECTOR_OPAQUE_P): Remove.
25454         * config/rs6000/rs6000.c (build_opaque_vector_type,
25455         rs6000_is_vector_type, TARGET_VECTOR_OPAQUE_P): Remove.
25456         (rs6000_init_builtins): Use build_opaque_vector_type for
25457         opaque_V4SI_type_node.
25458
25459 2009-04-15  Catherine Moore  <clm@codesourcery.com>
25460
25461         * debug.h (set_name):  Declare.
25462         * dwarf2out.c (dwarf2out_set_name): Declare.
25463         (dwarf2_debug_hooks): Add set_name.
25464         (find_AT_string): New.
25465         (add_AT_string): Call find_AT_string.
25466         (dwarf2out_set_name): New.
25467         * cp/decl.c (grokdeclarator): Call set_name.
25468         * vmsdbgout.c (vmsdbg_debug_hooks): Add set_name_debug_nothing.
25469         * debug.c (do_nothing_debug_hooks):  Likewise.
25470         * dbxout.c (dbx_debug_hooks): Likewise.
25471         * sdbout.c (sdb_debug_hooks): Likewise.
25472
25473 2009-04-15  Michael Eager  <eager@eagercon.com>
25474
25475         * config/rs6000/rs6000.c (rs6000_function_value): Set function return
25476         reg for single-precision FPU.
25477         * config/rs6000/rs6000.md (movsi_internal1): Only for
25478         !TARGET_SINGLE_FPU.
25479         (movsi_internal1_single): New. Add pattern to move SI values to/from
25480         single-precision FP regs.
25481
25482 2009-04-15  Richard Guenther  <rguenther@suse.de>
25483
25484         * omp-low.c (lower_rec_input_clauses): Build correct address
25485         expressions.
25486         (expand_omp_for_generic): Fix multiplication type.
25487         * tree-loop-distribution.c (build_size_arg): Build a size_t argument.
25488         (generate_memset_zero): Fix types.
25489         * tree-profile.c (prepare_instrumented_value): Correctly
25490         widen a pointer.
25491
25492 2009-04-15  Ian Lance Taylor  <iant@google.com>
25493
25494         * c.opt (Wenum-compare): Enable for C and Objc.  Initialize to -1.
25495         * c-opts.c (c_common_handle_option): For C, set warn_enum_compare
25496         for -Wall and for -Wc++-compat.
25497         (c_common_post_options): For C++, set warn_enum_compare if not
25498         already set.
25499         * c-tree.h (struct c_expr): Add field original_type.
25500         (build_external_ref): Update declaration.
25501         * c-parser.c (c_parser_braced_init): Set original_type.
25502         (c_parser_initelt): Likewise.
25503         (c_parser_expr_no_commas): Likewise.
25504         (c_parser_conditional_expression): Likewise.
25505         (c_parser_cast_expression): Likewise.
25506         (c_parser_unary_expression): Likewise.  Pull setting of
25507         original_code to top of function.
25508         (c_parser_sizeof_expression): Set original_type.
25509         (c_parser_alignof_expression): Likewise.
25510         (c_parser_postfix_expression): Likewise.  Pull setting of
25511         original_code to top of function.
25512         (c_parser_postfix_expression_after_paren_type): Set original_type.
25513         (c_parser_postfix_expression_after_primary): Likewise.
25514         (c_parser_expression): Likewise.
25515         * c-typeck.c (build_external_ref): Add type parameter.  Change all
25516         callers.
25517         (c_expr_sizeof_expr): Set original_type field.
25518         (parser_build_unary_op): Likewise.
25519         (parser_build_binary_op): Likewise.  Optionally warn about
25520         comparisons of enums of different types.
25521         (digest_init): Set original_type field.
25522         (really_start_incremental_init): Likewise.
25523         (push_init_level, pop_init_level): Likewise.
25524         * doc/invoke.texi (Warning Options): -Wenum-compare now
25525         supported in C.
25526
25527 2009-04-15  Richard Guenther  <rguenther@suse.de>
25528
25529         * tree-ssa-pre.c (eliminate): When replacing a PHI node carry
25530         out a necessary conversion.
25531         * tree-ssa-sccvn.c (run_scc_vn): Also assign value-ids to
25532         names we didn't value number.
25533         * tree-mudflap.c (mf_build_check_statement_for): Use correct types.
25534
25535 2009-04-15  Richard Guenther  <rguenther@suse.de>
25536
25537         PR tree-optimization/39764
25538         * tree-ssa-ccp.c (get_value): Canonicalize value with
25539         canonicalize_float_value.
25540
25541 2009-04-15  Jan Hubicka  <jh@suse.cz>
25542
25543         * builtins.def (va_start, va_end, va_copy): Fix my previous commit.
25544         Wrong version of patch.
25545
25546 2009-04-15  Jan Hubicka  <jh@suse.cz>
25547
25548         * builtins.def (va_start, va_end, va_copy): Mark nothrow.
25549
25550 2009-04-15  Nathan Sidwell  <nathan@codesourcery.com>
25551
25552         * config/rs6000/rs6000.c (rs6000_init_builtins): Set TYPE_NAME of
25553         our distinct integral and vector types.
25554
25555 2009-04-15  Rafael Avila de Espindola  <espindola@google.com>
25556
25557         * class.c (build_vtbl_ref_1): Remove call to assemble_external.
25558         * init.c (build_vtbl_address): Remove call to assemble_external.
25559
25560 2009-04-14  Daniel Jacobowitz  <dan@codesourcery.com>
25561
25562         * config/rs6000/rs6000.c (rs6000_dwarf_register_span): Fix debug
25563         output for other floating point modes.
25564
25565 2009-04-14  Diego Novillo  <dnovillo@google.com>
25566
25567         * diagnostic.c (diagnostic_report_diagnostic): Do not
25568         warn about loaded plugins for DK_ERROR and DK_WARNING.
25569         * c-decl.c (declspecs_add_type): Move call to
25570         invoke_plugin_callbacks ...
25571         * c-parser.c (c_parser_declspecs): ... here.
25572         * plugin.c (dump_active_plugins): Tidy output.
25573
25574 2009-04-14  Diego Novillo  <dnovillo@google.com>
25575             Le-Chun Wu  <lcwu@google.com>
25576
25577         * configure.ac: Add --enable-plugin support.
25578         Define ENABLE_PLUGIN and PLUGINLIBS when specified.
25579         * Makefile.in (PLUGIN_H): Define.
25580         Export ENABLE_PLUGIN and GMPINC to site.exp.
25581         Add PLUGINLIBS to link command.
25582         Add/modify dependencies for plugin.o and files including plugin.h.
25583         (plugin.o): New.
25584         * config.in: Regenerate.
25585
25586         * opts.c (common_handle_option): Handle OPT_fplugin_ and
25587         OPT_fplugin_arg_.
25588
25589 2009-04-14  Le-Chun Wu  <lcwu@google.com>
25590
25591         * tree-pass.h (register_one_dump_file): Add a prototype for
25592         register_one_dump_file.
25593         * toplev.c (compile_file): Call initialize_plugins.
25594         (do_compile): Call invoke_plugin_callbacks.
25595         (toplev_main): Call invoke_plugin_callbacks.
25596         * common.opt: Add -fplugin= and -fplugin-arg-.
25597         * gcc-plugin.h: New public header file for plugins to include.
25598         * plugin.c: New source file.
25599         * plugin.h: New internal header file.
25600         * passes.c (register_one_dump_file): Make it external.
25601
25602         * c-parser.c (c_parser_declspecs): Call invoke_plugin_callbacks.
25603
25604 2009-04-14  Diego Novillo  <dnovillo@google.com>
25605
25606         * doc/plugins.texi: New.
25607         * doc/gccint.texi: Add reference to Plugins chapter.
25608         * doc/invoke.texi: Document -fplugin and -fplugin-arg
25609         * diagnostic.c (diagnostic_report_diagnostic): Warn about
25610         loaded plugins, if any.
25611         * timevar.def (TV_PLUGIN_INIT): Define.
25612         (TV_PLUGIN_RUN): Define.
25613         * plugin.c: Include timevar.h
25614         (plugins_active_p): New.
25615         (dump_active_plugins): New.
25616         (debug_active_plugins): New.
25617
25618 2009-04-14  Joseph Myers  <joseph@codesourcery.com>
25619
25620         * config/sol2.h (LINK_ARCH32_SPEC_BASE): Use %R with absolute
25621         library paths.
25622         * config/sparc/sol2-bi.h (LINK_ARCH64_SPEC_BASE): Likewise.
25623
25624 2009-04-14  Kazu Hirata  <kazu@codesourcery.com>
25625
25626         * config/arm/arm.c (arm_rtx_costs_1): Treat a minus with a shift
25627         the same as a minus without a shift.
25628
25629 2009-04-14  Nick Clifton  <nickc@redhat.com>
25630
25631         * config/stormy16/stormy16.md (ineqbranch_1): Do not assume that
25632         comparisons with small integers will always produce a short
25633         branch.
25634
25635 2009-04-14  Rafael Avila de Espindola  <espindola@google.com>
25636
25637         Merge:
25638         2008-12-19  Diego Novillo  <dnovillo@google.com>
25639
25640         * cgraph.c (dump_cgraph_node): Show memory address of NODE.
25641
25642 2009-04-14  Richard Guenther  <rguenther@suse.de>
25643
25644         * tree-cfg.c (verify_gimple_assign_unary): Adjust vector code
25645         verification.
25646         (verify_gimple_assign_binary): Likewise.  Handle shifts and
25647         rotates correctly.
25648         (verify_gimple_phi): Print the mismatched argument position.
25649         * tree-vect-loop-manip.c (vect_update_ivs_after_vectorizer):
25650         Fix types.
25651         (vect_update_init_of_dr): Likewise.
25652         * matrix-reorg.c (transform_access_sites): Do what the
25653         comment suggests.
25654         * omp-low.c (expand_omp_atomic_pipeline): Use the correct types.
25655
25656 2009-04-13  Michael Eager  <eager@eagercon.com>
25657
25658         * config/rs6000/rs6000-c.c: generate defines if rs6000_xilinx_fpu:
25659         _XFPU, _XFPU_SP_LITE, _XFPU_SP_FULL, _XFPU_DP_LITE, _XFPU_DP_FULL
25660         * config/rs6000/xilinx.h: New.  Spec for powerpc-xilinx-eabi
25661         * config.gcc (powerpc-xilinx-eabi): add xilinx.h to tm_file,
25662         remove duplicate config
25663
25664 2009-04-13  Dwarakanath Rajagopal  <dwarak.rajagopal@amd.com>
25665
25666         * ipa-inline.c (cgraph_decide_inlining_of_small_function): Dump
25667         file_name:line_number type locator of the call site.
25668
25669 2009-04-13  Vladimir Makarov  <vmakarov@redhat.com>
25670
25671         * genautomata.c: Put blank after comma.
25672         (automaton_decls): New.
25673         (struct unit_usage): Add comments to member next.
25674         (store_alt_unit_usage): Keep the list ordered.
25675         (unit_present_on_list_p, equal_alternatives_p): New.
25676         (check_regexp_units_distribution): Check units distribution
25677         correctness correctly.
25678         (main): Don't write automata if error is found.  Return correct
25679         exit code.
25680
25681         * config/m68k/cf.md (cfv4_ds): Remove.
25682         (cfv4_pOEP1, cfv4_sOEP1, cfv4_pOEP2,cfv4_sOEP2, cfv4_pOEP3,
25683         cfv4_sOEP3): Assign to cfv4_oep instead of cfv4_ds.
25684
25685         * config/rs6000/power4.md (lsuq_power4, iq_power4, fpq_power4,
25686         power4-load-ext, power4-store, power4-store-update,
25687         power4-fpstore, power4-fpstore-update, power4-two, power4-three,
25688         power4-insert, power4-compare, power4-lmul-cmp, power4-imul-cmp,
25689         power4-lmul, , power4-imul, power4-imul3, power4-sdiv,
25690         power4-sqrt, power4-isync): Modify reservation to make correct
25691         unit distribution to automata.
25692
25693         * config/rs6000/power5.md (iq_power5, fpq_power5, power5-store,
25694         power5-store-update, power5-two, power5-three, power5-lmul,
25695         power5-imul, power5-imul3, power5-sdiv, power5-sqrt): Ditto.
25696
25697 2009-04-13  Adam Nemet  <anemet@caviumnetworks.com>
25698
25699         * except.c (pass_set_nothrow_function_flags): Set name and add
25700         TODO_dump_func.
25701         (set_nothrow_function_flags): Mention in the dump file when
25702         changing a function to nothrow.
25703
25704 2009-04-13  Ozkan Sezer  <sezeroz@gmail.com>
25705
25706         PR/39066
25707         * gbl-ctors.h (DO_GLOBAL_CTORS_BODY): Use __SIZE_TYPE__
25708         instead of unsigned long.
25709
25710 2009-04-13  Ramana Radhakrishnan  <ramana.radhakrishnan@arm.com>
25711
25712         * config/arm/arm.c (return_used_this_function): Remove.
25713         (arm_output_function_prologue): Remove use of
25714         return_used_this_function.
25715         (output_return_instruction): Replace use of
25716         return_used_this_function
25717         by cfun->machine->return_used_this_function.
25718         (arm_output_epilogue): Likewise.
25719         (arm_output_function_epilogue): Likewise.
25720         (thumb_unexpanded_epilogue): Likewise.
25721         * config/arm/arm.h (struct machine_function):
25722         New member return_used_this_function.
25723
25724 2009-04-12  Mark Mitchell  <mark@codesourcery.com>
25725
25726         * doc/install.texi: Correct description of default directory for
25727         --with-gxx-include-dir.
25728
25729 2009-04-12  Eric Botcazou  <ebotcazou@adacore.com>
25730
25731         * fold-const.c (build_range_check): Properly deal with enumeral and
25732         boolean base types.
25733
25734 2009-04-12  Steven Bosscher  <steven@gcc.gnu.org>
25735
25736         * doc/invoke.texi (max_gcse_passes): Remove documentation.
25737         * params.def (PARAM_MAX_GCSE_PASSES): Remove.
25738         * params.h (MAX_GCSE_PASSES): Remove.
25739         * gcse.c (gcse_main): Run CPROP1, PRE or HOIST, and CPROP2
25740         in sequence.  Remove ability to run multiple passes.
25741         (bypass_jumps): Report run as third CPROP pass.
25742
25743 2009-04-12  Adam Nemet  <anemet@caviumnetworks.com>
25744
25745         PR middle-end/39651
25746         * except.c (can_throw_external): Look at each insn in a SEQUENCE
25747         when deciding whether the whole SEQUENCE can throw.
25748
25749 2009-04-12  Uros Bizjak  <ubizjak@gmail.com>
25750
25751         PR target/39740
25752         * config/alpha/predicates.md (local_symbolic_operand): Return 1 for
25753         offseted label references.
25754
25755 2009-04-11  Jan Hubicka  <jh@suse.cz>
25756
25757         * tree-ssa-pre.c (eliminate): Fix call of update_stmt.
25758
25759 2009-04-11  Richard Guenther  <rguenther@suse.de>
25760
25761         PR middle-end/39732
25762         * tree-inline.c (declare_return_variable): Mark DECL_BY_REFERENCE
25763         return variables as TREE_ADDRESSABLE.
25764
25765 2009-04-11  Richard Guenther  <rguenther@suse.de>
25766
25767         PR tree-optimization/39713
25768         * tree-ssa-sccvn.c (vn_get_expr_for): Make sure built
25769         reference trees have SSA_NAME operands.
25770
25771 2009-04-11  Richard Guenther  <rguenther@suse.de>
25772
25773         PR c/39712
25774         * c-gimplify.c (c_gimplify_expr): Adjust check for mismatched
25775         address expressions.
25776
25777 2009-04-11  Dave Korn  <dave.korn.cygwin@gmail.com>
25778
25779         * config/i386/cygwin-stdint.h (INT_LEAST32_TYPE):  Update to
25780         match changes in Cygwin 1.7
25781         (UINT_LEAST32_TYPE, INT_FAST16_TYPE, INT_FAST32_TYPE,
25782         UINT_FAST16_TYPE, UINT_FAST32_TYPE):  Likewise.
25783
25784 2009-04-10  Paolo Bonzini  <bonzini@gnu.org>
25785
25786         PR tree-optimization/39701
25787         * doc/invoke.texi (Optimization Options): Document change in
25788         meaning and initialization of -fdelete-null-pointer-checks.
25789
25790 2009-04-10  H.J. Lu  <hongjiu.lu@intel.com>
25791
25792         PR middle-end/39701
25793         * common.opt (-fdelete-null-pointer-checks): Initialize to 1.
25794
25795         * opts.c (decode_options): Don't set flag_delete_null_pointer_checks
25796         here.
25797
25798         * doc/invoke.texi: Update -fdelete-null-pointer-checks.
25799
25800 2009-04-10  Chao-ying Fu  <fu@mips.com>
25801
25802         * doc/tm.texi (Instruction Output): Document
25803         TARGET_ASM_FINAL_POSTSCAN_INSN.
25804         * target.h (final_postscan_insn): New field in asm_out.
25805         * target-def.h (TARGET_ASM_FINAL_POSTSCAN_INSN): New define.
25806         (TARGET_ASM_OUT): Add TARGET_ASM_FINAL_POSTSCAN_INSN.
25807         * final.c (final_scan_insn): Call
25808         targetm.asm_out.final_postscan_insn after outputting
25809         an asm macro and a normal instruction.
25810
25811         * config/mips/mips.h (FINAL_PRESCAN_INSN): New define.
25812         * config/mips/mips-protos.h (mips_final_prescan_insn): Declare.
25813         * config/mips/mips.c (mips_at_reg_p): New for_each_rtx callback.
25814         (mips_final_prescan_insn, mips_final_postscan_insn): New functions.
25815         (TARGET_ASM_FINAL_POSTSCAN_INSN): New define.
25816
25817 2009-04-10  Paolo Bonzini  <bonzini@gnu.org>
25818
25819         PR middle-end/39701
25820         * fold-const.c (tree_single_nonzero_warnv_p): Pass non-static
25821         variables as non-NULL even with -fdelete-null-pointer-checks.
25822
25823 2009-04-10  H.J. Lu  <hongjiu.lu@intel.com>
25824
25825         * config/rs6000/darwin-vecsave.asm: Remove extra "*/".
25826
25827 2009-04-09  H.J. Lu  <hongjiu.lu@intel.com>
25828
25829         PR target/39678
25830         * config/i386/i386.c (classify_argument): Handle SCmode with
25831         (bit_offset % 64) != 0.
25832
25833 2009-04-09  Sandra Loosemore  <sandra@codesourcery.com>
25834
25835         * doc/invoke.texi (Optimize Options): Add cross-reference to
25836         -Q --help=optimizers examples.
25837
25838 2009-04-10  Ben Elliston  <bje@au.ibm.com>
25839
25840         PR target/36800
25841         * config/rs6000/rs6000.c (rs6000_gimplify_va_arg): Do not set
25842         regalign for the reg == fpr and TDmode case.
25843
25844 2009-04-09  David Ayers  <ayers@fsfe.org>
25845
25846         PR objc/29200
25847         * objc/objc-act.c (warn_with_method): Remove helper function.
25848         (check_duplicates): Call warning and inform directly.
25849         (really_start_method): Likewise.
25850
25851 2009-04-09  Paolo Bonzini  <bonzini@gnu.org>
25852
25853         * expmed.c (expand_divmod): Always use a comparison for a division
25854         by a large unsigned integer.
25855
25856         * fold-const.c (tree_single_nonzero_warnv_p): Always treat decls
25857         for things others than variables or functions as nonzero.
25858
25859 2009-04-09  Nick Clifton  <nickc@redhat.com>
25860
25861         * unwind-compat.c: Change copyright header to refer to version
25862         3 of the GNU General Public License with version 3.1 of the
25863         GCC Runtime Library Exception and to point readers at the
25864         COPYING3 and COPYING3.RUNTIME files and the FSF's license web page.
25865         * config/alpha/crtfastmath.c: Likewise.
25866         * config/alpha/linux-unwind.h: Likewise.
25867         * config/alpha/qrnnd.asm: Likewise.
25868         * config/alpha/vms-crt0-64.c: Likewise.
25869         * config/alpha/vms-crt0.c: Likewise.
25870         * config/alpha/vms-dwarf2.asm: Likewise.
25871         * config/alpha/vms-dwarf2eh.asm: Likewise.
25872         * config/alpha/vms-psxcrt0-64.c: Likewise.
25873         * config/alpha/vms-psxcrt0.c: Likewise.
25874         * config/alpha/vms_tramp.asm: Likewise.
25875         * config/arc/initfini.c: Likewise.
25876         * config/arc/lib1funcs.asm: Likewise.
25877         * config/arm/bpabi-v6m.S: Likewise.
25878         * config/arm/bpabi.S: Likewise.
25879         * config/arm/bpabi.c: Likewise.
25880         * config/arm/crti.asm: Likewise.
25881         * config/arm/crtn.asm: Likewise.
25882         * config/arm/ieee754-df.S: Likewise.
25883         * config/arm/ieee754-sf.S: Likewise.
25884         * config/arm/lib1funcs.asm: Likewise.
25885         * config/arm/libunwind.S: Likewise.
25886         * config/arm/linux-atomic.c: Likewise.
25887         * config/arm/mmintrin.h: Likewise.
25888         * config/arm/pr-support.c: Likewise.
25889         * config/arm/unaligned-funcs.c: Likewise.
25890         * config/arm/unwind-arm.c: Likewise.
25891         * config/arm/unwind-arm.h: Likewise.
25892         * config/avr/libgcc.S: Likewise.
25893         * config/bfin/crti.s: Likewise.
25894         * config/bfin/crtlibid.s: Likewise.
25895         * config/bfin/crtn.s: Likewise.
25896         * config/bfin/lib1funcs.asm: Likewise.
25897         * config/bfin/linux-unwind.h: Likewise.
25898         * config/cris/arit.c: Likewise.
25899         * config/cris/cris_abi_symbol.c: Likewise.
25900         * config/darwin-64.c: Likewise.
25901         * config/darwin-crt2.c: Likewise.
25902         * config/darwin-crt3.c: Likewise.
25903         * config/darwin.h: Likewise.
25904         * config/dbxelf.h: Likewise.
25905         * config/dfp-bit.c: Likewise.
25906         * config/dfp-bit.h: Likewise.
25907         * config/elfos.h: Likewise.
25908         * config/fixed-bit.c: Likewise.
25909         * config/fixed-bit.h: Likewise.
25910         * config/fp-bit.c: Likewise.
25911         * config/fp-bit.h: Likewise.
25912         * config/fr30/crti.asm: Likewise.
25913         * config/fr30/crtn.asm: Likewise.
25914         * config/fr30/lib1funcs.asm: Likewise.
25915         * config/freebsd-spec.h: Likewise.
25916         * config/frv/cmovd.c: Likewise.
25917         * config/frv/cmovh.c: Likewise.
25918         * config/frv/cmovw.c: Likewise.
25919         * config/frv/frvbegin.c: Likewise.
25920         * config/frv/frvend.c: Likewise.
25921         * config/frv/lib1funcs.asm: Likewise.
25922         * config/glibc-stdint.h: Likewise.
25923         * config/h8300/clzhi2.c: Likewise.
25924         * config/h8300/crti.asm: Likewise.
25925         * config/h8300/crtn.asm: Likewise.
25926         * config/h8300/ctzhi2.c: Likewise.
25927         * config/h8300/fixunssfsi.c: Likewise.
25928         * config/h8300/lib1funcs.asm: Likewise.
25929         * config/h8300/parityhi2.c: Likewise.
25930         * config/h8300/popcounthi2.c: Likewise.
25931         * config/i386/ammintrin.h: Likewise.
25932         * config/i386/att.h: Likewise.
25933         * config/i386/avxintrin.h: Likewise.
25934         * config/i386/biarch64.h: Likewise.
25935         * config/i386/bmmintrin.h: Likewise.
25936         * config/i386/cpuid.h: Likewise.
25937         * config/i386/cross-stdarg.h: Likewise.
25938         * config/i386/crtfastmath.c: Likewise.
25939         * config/i386/crtprec.c: Likewise.
25940         * config/i386/cygming-crtbegin.c: Likewise.
25941         * config/i386/cygming-crtend.c: Likewise.
25942         * config/i386/cygwin.asm: Likewise.
25943         * config/i386/emmintrin.h: Likewise.
25944         * config/i386/gmm_malloc.h: Likewise.
25945         * config/i386/gthr-win32.c: Likewise.
25946         * config/i386/i386.h: Likewise.
25947         * config/i386/immintrin.h: Likewise.
25948         * config/i386/linux-unwind.h: Likewise.
25949         * config/i386/linux64.h: Likewise.
25950         * config/i386/mm3dnow.h: Likewise.
25951         * config/i386/mmintrin-common.h: Likewise.
25952         * config/i386/mmintrin.h: Likewise.
25953         * config/i386/nmmintrin.h: Likewise.
25954         * config/i386/pmm_malloc.h: Likewise.
25955         * config/i386/pmmintrin.h: Likewise.
25956         * config/i386/smmintrin.h: Likewise.
25957         * config/i386/sol2-c1.asm: Likewise.
25958         * config/i386/sol2-ci.asm: Likewise.
25959         * config/i386/sol2-cn.asm: Likewise.
25960         * config/i386/sol2-gc1.asm: Likewise.
25961         * config/i386/tmmintrin.h: Likewise.
25962         * config/i386/unix.h: Likewise.
25963         * config/i386/w32-unwind.h: Likewise.
25964         * config/i386/wmmintrin.h: Likewise.
25965         * config/i386/x86-64.h: Likewise.
25966         * config/i386/x86intrin.h: Likewise.
25967         * config/i386/xmmintrin.h: Likewise.
25968         * config/ia64/crtbegin.asm: Likewise.
25969         * config/ia64/crtend.asm: Likewise.
25970         * config/ia64/crtfastmath.c: Likewise.
25971         * config/ia64/crti.asm: Likewise.
25972         * config/ia64/crtn.asm: Likewise.
25973         * config/ia64/fde-glibc.c: Likewise.
25974         * config/ia64/lib1funcs.asm: Likewise.
25975         * config/ia64/linux-unwind.h: Likewise.
25976         * config/ia64/quadlib.c: Likewise.
25977         * config/ia64/unwind-ia64.c: Likewise.
25978         * config/linux.h: Likewise.
25979         * config/m32c/m32c-lib1.S: Likewise.
25980         * config/m32c/m32c-lib2-trapv.c: Likewise.
25981         * config/m32c/m32c-lib2.c: Likewise.
25982         * config/m32r/initfini.c: Likewise.
25983         * config/m68hc11/larith.asm: Likewise.
25984         * config/m68hc11/m68hc11-crt0.S: Likewise.
25985         * config/m68k/cf.md: Likewise.
25986         * config/m68k/crti.s: Likewise.
25987         * config/m68k/crtn.s: Likewise.
25988         * config/m68k/lb1sf68.asm: Likewise.
25989         * config/m68k/linux-unwind.h: Likewise.
25990         * config/mcore/crti.asm: Likewise.
25991         * config/mcore/crtn.asm: Likewise.
25992         * config/mcore/lib1.asm: Likewise.
25993         * config/mips/linux-unwind.h: Likewise.
25994         * config/mips/loongson.h: Likewise.
25995         * config/mips/mips16.S: Likewise.
25996         * config/mmix/crti.asm: Likewise.
25997         * config/mmix/crtn.asm: Likewise.
25998         * config/pa/fptr.c: Likewise.
25999         * config/pa/hpux-unwind.h: Likewise.
26000         * config/pa/lib2funcs.asm: Likewise.
26001         * config/pa/linux-atomic.c: Likewise.
26002         * config/pa/linux-unwind.h: Likewise.
26003         * config/pa/milli64.S: Likewise.
26004         * config/pa/quadlib.c: Likewise.
26005         * config/pa/stublib.c: Likewise.
26006         * config/picochip/libgccExtras/adddi3.asm: Likewise.
26007         * config/picochip/libgccExtras/ashlsi3.asm: Likewise.
26008         * config/picochip/libgccExtras/ashlsi3.c: Likewise.
26009         * config/picochip/libgccExtras/ashrsi3.asm: Likewise.
26010         * config/picochip/libgccExtras/ashrsi3.c: Likewise.
26011         * config/picochip/libgccExtras/cmpsi2.asm: Likewise.
26012         * config/picochip/libgccExtras/divmod15.asm: Likewise.
26013         * config/picochip/libgccExtras/divmodhi4.asm: Likewise.
26014         * config/picochip/libgccExtras/divmodsi4.asm: Likewise.
26015         * config/picochip/libgccExtras/longjmp.asm: Likewise.
26016         * config/picochip/libgccExtras/lshrsi3.asm: Likewise.
26017         * config/picochip/libgccExtras/lshrsi3.c: Likewise.
26018         * config/picochip/libgccExtras/parityhi2.asm: Likewise.
26019         * config/picochip/libgccExtras/popcounthi2.asm: Likewise.
26020         * config/picochip/libgccExtras/setjmp.asm: Likewise.
26021         * config/picochip/libgccExtras/subdi3.asm: Likewise.
26022         * config/picochip/libgccExtras/ucmpsi2.asm: Likewise.
26023         * config/picochip/libgccExtras/udivmodhi4.asm: Likewise.
26024         * config/picochip/libgccExtras/udivmodsi4.asm: Likewise.
26025         * config/rs6000/750cl.h: Likewise.
26026         * config/rs6000/altivec.h: Likewise.
26027         * config/rs6000/biarch64.h: Likewise.
26028         * config/rs6000/crtresfpr.asm: Likewise.
26029         * config/rs6000/crtresgpr.asm: Likewise.
26030         * config/rs6000/crtresxfpr.asm: Likewise.
26031         * config/rs6000/crtresxgpr.asm: Likewise.
26032         * config/rs6000/crtsavfpr.asm: Likewise.
26033         * config/rs6000/crtsavgpr.asm: Likewise.
26034         * config/rs6000/darwin-asm.h: Likewise.
26035         * config/rs6000/darwin-fallback.c: Likewise.
26036         * config/rs6000/darwin-fpsave.asm: Likewise.
26037         * config/rs6000/darwin-ldouble.c: Likewise.
26038         * config/rs6000/darwin-tramp.asm: Likewise.
26039         * config/rs6000/darwin-unwind.h: Likewise.
26040         * config/rs6000/darwin-vecsave.asm: Likewise.
26041         * config/rs6000/darwin-world.asm: Likewise.
26042         * config/rs6000/e500crtres32gpr.asm: Likewise.
26043         * config/rs6000/e500crtres64gpr.asm: Likewise.
26044         * config/rs6000/e500crtres64gprctr.asm: Likewise.
26045         * config/rs6000/e500crtrest32gpr.asm: Likewise.
26046         * config/rs6000/e500crtrest64gpr.asm: Likewise.
26047         * config/rs6000/e500crtresx32gpr.asm: Likewise.
26048         * config/rs6000/e500crtresx64gpr.asm: Likewise.
26049         * config/rs6000/e500crtsav32gpr.asm: Likewise.
26050         * config/rs6000/e500crtsav64gpr.asm: Likewise.
26051         * config/rs6000/e500crtsav64gprctr.asm: Likewise.
26052         * config/rs6000/e500crtsavg32gpr.asm: Likewise.
26053         * config/rs6000/e500crtsavg64gpr.asm: Likewise.
26054         * config/rs6000/e500crtsavg64gprctr.asm: Likewise.
26055         * config/rs6000/eabi-ci.asm: Likewise.
26056         * config/rs6000/eabi-cn.asm: Likewise.
26057         * config/rs6000/eabi.asm: Likewise.
26058         * config/rs6000/linux-unwind.h: Likewise.
26059         * config/rs6000/linux64.h: Likewise.
26060         * config/rs6000/paired.h: Likewise.
26061         * config/rs6000/paired.md: Likewise.
26062         * config/rs6000/ppc64-fp.c: Likewise.
26063         * config/rs6000/ppu_intrinsics.h: Likewise.
26064         * config/rs6000/rs6000.h: Likewise.
26065         * config/rs6000/si2vmx.h: Likewise.
26066         * config/rs6000/sol-ci.asm: Likewise.
26067         * config/rs6000/sol-cn.asm: Likewise.
26068         * config/rs6000/spe.h: Likewise.
26069         * config/rs6000/spu2vmx.h: Likewise.
26070         * config/rs6000/sysv4.h: Likewise.
26071         * config/rs6000/tramp.asm: Likewise.
26072         * config/rs6000/vec_types.h: Likewise.
26073         * config/s390/linux-unwind.h: Likewise.
26074         * config/s390/tpf-unwind.h: Likewise.
26075         * config/score/crti.asm: Likewise.
26076         * config/score/crtn.asm: Likewise.
26077         * config/sh/crt1.asm: Likewise.
26078         * config/sh/crti.asm: Likewise.
26079         * config/sh/crtn.asm: Likewise.
26080         * config/sh/divtab-sh4-300.c: Likewise.
26081         * config/sh/divtab-sh4.c: Likewise.
26082         * config/sh/divtab.c: Likewise.
26083         * config/sh/lib1funcs-4-300.asm: Likewise.
26084         * config/sh/lib1funcs-Os-4-200.asm: Likewise.
26085         * config/sh/lib1funcs.asm: Likewise.
26086         * config/sh/lib1funcs.h: Likewise.
26087         * config/sh/linux-atomic.asm: Likewise.
26088         * config/sh/linux-unwind.h: Likewise.
26089         * config/sh/shmedia.h: Likewise.
26090         * config/sh/sshmedia.h: Likewise.
26091         * config/sh/ushmedia.h: Likewise.
26092         * config/sparc/crtfastmath.c: Likewise.
26093         * config/sparc/linux-unwind.h: Likewise.
26094         * config/sparc/sol2-c1.asm: Likewise.
26095         * config/sparc/sol2-ci.asm: Likewise.
26096         * config/sparc/sol2-cn.asm: Likewise.
26097         * config/spu/divmodti4.c: Likewise.
26098         * config/spu/divv2df3.c: Likewise.
26099         * config/spu/float_disf.c: Likewise.
26100         * config/spu/float_unsdidf.c: Likewise.
26101         * config/spu/float_unsdisf.c: Likewise.
26102         * config/spu/float_unssidf.c: Likewise.
26103         * config/spu/mfc_multi_tag_release.c: Likewise.
26104         * config/spu/mfc_multi_tag_reserve.c: Likewise.
26105         * config/spu/mfc_tag_release.c: Likewise.
26106         * config/spu/mfc_tag_reserve.c: Likewise.
26107         * config/spu/mfc_tag_table.c: Likewise.
26108         * config/spu/multi3.c: Likewise.
26109         * config/spu/spu_internals.h: Likewise.
26110         * config/spu/spu_intrinsics.h: Likewise.
26111         * config/spu/spu_mfcio.h: Likewise.
26112         * config/spu/vec_types.h: Likewise.
26113         * config/spu/vmx2spu.h: Likewise.
26114         * config/stormy16/stormy16-lib2.c: Likewise.
26115         * config/svr4.h: Likewise.
26116         * config/sync.c: Likewise.
26117         * config/v850/lib1funcs.asm: Likewise.
26118         * config/vxlib-tls.c: Likewise.
26119         * config/vxlib.c: Likewise.
26120         * config/vxworks-dummy.h: Likewise.
26121         * config/xtensa/crti.asm: Likewise.
26122         * config/xtensa/crtn.asm: Likewise.
26123         * config/xtensa/ieee754-df.S: Likewise.
26124         * config/xtensa/ieee754-sf.S: Likewise.
26125         * config/xtensa/lib1funcs.asm: Likewise.
26126         * config/xtensa/lib2funcs.S: Likewise.
26127         * config/xtensa/linux-unwind.h: Likewise.
26128         * config/xtensa/unwind-dw2-xtensa.c: Likewise.
26129         * config/xtensa/unwind-dw2-xtensa.h: Likewise.
26130         * coretypes.h: Likewise.
26131         * crtstuff.c: Likewise.
26132         * defaults.h: Likewise.
26133         * dwarf2.h: Likewise.
26134         * emutls.c: Likewise.
26135         * gbl-ctors.h: Likewise.
26136         * gcov-io.h: Likewise.
26137         * ginclude/float.h: Likewise.
26138         * ginclude/iso646.h: Likewise.
26139         * ginclude/stdarg.h: Likewise.
26140         * ginclude/stdbool.h: Likewise.
26141         * ginclude/stddef.h: Likewise.
26142         * ginclude/stdfix.h: Likewise.
26143         * ginclude/stdint-gcc.h: Likewise.
26144         * ginclude/tgmath.h: Likewise.
26145         * gthr-aix.h: Likewise.
26146         * gthr-dce.h: Likewise.
26147         * gthr-gnat.c: Likewise.
26148         * gthr-gnat.h: Likewise.
26149         * gthr-lynx.h: Likewise.
26150         * gthr-mipssde.h: Likewise.
26151         * gthr-nks.h: Likewise.
26152         * gthr-posix.c: Likewise.
26153         * gthr-posix.h: Likewise.
26154         * gthr-posix95.h: Likewise.
26155         * gthr-rtems.h: Likewise.
26156         * gthr-single.h: Likewise.
26157         * gthr-solaris.h: Likewise.
26158         * gthr-tpf.h: Likewise.
26159         * gthr-vxworks.h: Likewise.
26160         * gthr-win32.h: Likewise.
26161         * gthr.h: Likewise.
26162         * libgcc2.c: Likewise.
26163         * libgcc2.h: Likewise.
26164         * libgcov.c: Likewise.
26165         * tsystem.h: Likewise.
26166         * typeclass.h: Likewise.
26167         * unwind-c.c: Likewise.
26168         * unwind-compat.h: Likewise.
26169         * unwind-dw2-fde-compat.c: Likewise.
26170         * unwind-dw2-fde-darwin.c: Likewise.
26171         * unwind-dw2-fde-glibc.c: Likewise.
26172         * unwind-dw2-fde.c: Likewise.
26173         * unwind-dw2-fde.h: Likewise.
26174         * unwind-dw2.c: Likewise.
26175         * unwind-dw2.h: Likewise.
26176         * unwind-generic.h: Likewise.
26177         * unwind-pe.h: Likewise.
26178         * unwind-sjlj.c: Likewise.
26179         * unwind.inc: Likewise.
26180         * config/arm/neon-gen.ml: Change generated copyright header to
26181         refer to version 3 of the GNU General Public License with
26182         version 3.1 of the GCC Runtime Library Exception and to point
26183         readers at the COPYING3 and COPYING3.RUNTIME files and the
26184         FSF's license web page.
26185         * config/arm/arm_neon.h: Regenerate.
26186
26187 2009-04-09  Jakub Jelinek  <jakub@redhat.com>
26188
26189         * config/cris/cris.md: Change copyright header to refer to version
26190         3 of the GNU General Public License.
26191         * doc/install.texi2html: Change copyright header to refer to version
26192         3 of the GNU General Public License and to point readers at the
26193         COPYING3 file and the FSF's license web page.
26194         * config/vax/linux.h: Likewise.
26195
26196 2009-04-09  Paolo Bonzini  <bonzini@gnu.org>
26197
26198         * config/i386/i386.md (cmpcc): New.
26199         * config/i386/sync.md (sync_compare_and_swap*): Set FLAGS_REG.
26200         (sync_compare_and_swap_cc*): Delete.
26201
26202         * config/s390/s390.c (s390_compare_emitted): Remove.
26203         (s390_emit_compare): Handle MODE_CC s390_compare_op0 like
26204         s390_compare_emitted used to be handled.  Assert that modes match.
26205         (s390_emit_compare_and_swap): Use s390_emit_compare, do not
26206         refer to sync_compare_and_swap_ccsi.
26207         * config/s390/s390.h (s390_compare_emitted): Remove.
26208         * config/s390/s390.md (seq): Look for MODE_CC s390_compare_op0
26209         instead of s390_compare_emitted.
26210         (stack_protect_test, sync_compare_and_swap_cc): Set s390_compare_op0
26211         instead of s390_compare_emitted.
26212         * config/s390/s390.md (cmpcc): New.
26213         (sync_compare_and_swapqi, sync_compare_and_swaphi): Clobber
26214         CC_REGNUM, do not pretend it's set.
26215         (sync_compare_and_swap_cc*): Delete.
26216         * config/s390/predicates.md (cc_reg_operand): New.
26217
26218         * expr.c (sync_compare_and_swap_cc): Delete.
26219         * optabs.h (sync_compare_and_swap_cc): Delete.
26220         * optabs.c (prepare_cmp_insn): Ignore which specific CCmode
26221         is being used with can_compare_p.
26222         (emit_cmp_and_jump_insn_1): Likewise when looking in the optab.
26223         (find_cc_set): New.
26224         (expand_bool_compare_and_swap): Do not use sync_compare_and_swap_cc,
26225         look for a MODE_CC set instead.  Use emit_store_flag.
26226         (expand_compare_and_swap_loop): Likewise, with some additional
26227         complication to avoid a force_reg when useless.  Use
26228         emit_cmp_and_jump_insns.
26229         * genopinit.c (optabs): Delete sync_compare_and_swap_cc.
26230         * doc/md.texi (sync_compare_and_swap_cc): Merge with
26231         sync_compare_and_swap documentation.
26232
26233 2009-04-09  Jan Hubicka  <jh@suse.cz>
26234
26235         * except.c (find_prev_try): Break out from ....
26236         (duplicate_eh_regions): ... here; properly update prev_try pointers
26237         when duplication part of tree.
26238         (dump_eh_tree): Improve dumping.
26239         (verify_eh_region): New.
26240         (verify_eh_tree): Use it.
26241
26242 2009-04-06  Richard Guenther  <rguenther@suse.de>
26243
26244         * c-gimplify.c (c_gimplify_expr): Fix the invalid GENERIC
26245         &ARRAY addresses by adjusting their types and prepending
26246         a conversion.
26247         * tree-cfg.c (verify_gimple_assign_single): Verify that
26248         addresses are correct.
26249
26250 2009-04-09  Richard Guenther  <rguenther@suse.de>
26251
26252         * tree-ssa-ccp.c (maybe_fold_stmt_addition): Move non-constant
26253         indices into an array reference if possible.
26254         * tree-ssa-forwprop.c (tree_ssa_forward_propagate_single_use_vars):
26255         Fold POINTER_PLUS_EXPR statements with invariant address.
26256
26257 2009-04-09  Alan Modra  <amodra@bigpond.net.au>
26258
26259         PR target/39634
26260         * config.gcc (powerpc64-*-linux*): Always build biarch.
26261
26262 2009-04-09  Joseph Myers  <joseph@codesourcery.com>
26263
26264         PR c/39613
26265         * c-typeck.c (do_case): If case label is not an INTEGER_CST, fold
26266         it and pedwarn if this results in an INTEGER_CST.
26267
26268 2009-04-08  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
26269
26270         * doc/install.texi: Update minimum GMP version.  Remove obsolete
26271         text in MPFR section.
26272
26273 2009-04-08  Jakub Jelinek  <jakub@redhat.com>
26274
26275         * dwarf2out.c (class_scope_p): New static inline.
26276         (class_or_namespace_scope_p): Use it.
26277         (gen_variable_die): Use DW_TAG_member tag for static data member
26278         declarations instead of DW_TAG_variable.
26279
26280         PR middle-end/39573
26281         * omp-low.c (expand_omp_taskreg): Finalize taskreg static local_decls
26282         variables.
26283
26284 2009-04-08  Richard Guenther  <rguenther@suse.de>
26285
26286         * tree-ssa-sccvn.c (valueize_refs): Do not continue to
26287         valueize random data.
26288
26289 2009-04-08  David Edelsohn  <edelsohn@gnu.org>
26290
26291         * config.gcc (aix tm_file):  Add aix-stdint.h.
26292         (aix tm clause use_gcc_stdint):  Set to wrap.
26293         * config/rs6000/aix-stdint.h:  New file.
26294
26295 2009-04-08  Richard Guenther  <rguenther@suse.de>
26296
26297         PR middle-end/36291
26298         * tree-dfa.c (add_referenced_var): Do not recurse into
26299         global initializers.
26300         * tree-ssa-ccp.c (get_symbol_constant_value): Add newly
26301         exposed variables.
26302         (fold_const_aggregate_ref): Likewise.
26303
26304 2009-04-08  Paolo Bonzini  <bonzini@gnu.org>
26305
26306         * recog.c (ordered_comparison_operator): New.
26307         * gensupport.c (std_preds): Add it.
26308         * doc/md.texi (Machine-Independent Predicates): Document it.
26309
26310 2009-04-08  Jan Hubicka  <jh@suse.cz>
26311
26312         * tree-eh.c (cleanup_eh): When not optimizing, do not try EH merging.
26313         * function.h (rtl_eh): Remove exception_handler_label_map.
26314         * except.c (ehl_hash, ehl_eq, add_ehl_entry,
26315         remove_exception_handler_label, for_each_eh_label_1): Remove.
26316         (rtl_remove_unreachable_regions): Remove.
26317         (convert_from_eh_region_ranges): Do not remove unreachable regions.
26318         (find_exception_handler_labels): Don't build the hashtable.
26319         (maybe_remove_eh_handler): Remove.
26320         (for_each_eh_label): Rewrite to walk the tree.
26321         (rest_of_handle_eh): Do not cleanup cfg prior EH construction.
26322         * except.h (maybe_remove_eh_handler): Remove.
26323         * passes.c (init_optimization_passes): Schedule second EH cleanup
26324         before out-of-ssa.
26325         * cfgrtl.c (rtl_delete_block, rtl_merge_blocks,
26326         cfg_layout_merge_blocks): Do not call maybe_remove_eh_handler.
26327
26328 2009-04-08  Paolo Bonzini  <bonzini@gnu.org>
26329
26330         * genoutput.c (validate_optab_operands): New.
26331         (gen_insn, gen_expand): Call it.
26332
26333         * genflags.c (gen_insn): Detect misused iterators.
26334         (main): Pass line_no to gen_insn, exit with status 1 on error.
26335
26336         * genextract.c (line_no): Make global.
26337         (VEC_safe_set_locstr): Change assertion to error message.
26338         (main): Exit with status 1 on error.
26339
26340 2009-04-08  Joseph Myers  <joseph@codesourcery.com>
26341
26342         PR c/39614
26343         PR c/39673
26344         * c-common.h (C_MAYBE_CONST_EXPR_PRE, C_MAYBE_CONST_EXPR_EXPR,
26345         C_MAYBE_CONST_EXPR_INT_OPERANDS, C_MAYBE_CONST_EXPR_NON_CONST,
26346         EXPR_INT_CONST_OPERANDS): Remove duplicate definitions.
26347         * c-convert.c (convert): Do not call fold on results of conversion
26348         functions when the result is a C_MAYBE_CONST_EXPR.
26349         * c-parser.c (c_parser_postfix_expression): Do not fold condition
26350         of __builtin_choose_expr.
26351         * c-typeck.c (remove_c_maybe_const_expr): New.
26352         (build_unary_op, build_conditional_expr, build_compound_expr,
26353         build_binary_op, c_objc_common_truthvalue_conversion): Call
26354         remove_c_maybe_const_expr on any input C_MAYBE_CONST_EXPR with
26355         integer operands.
26356
26357 2009-04-08  Bingfeng Mei  <bmei@broadcom.com>
26358
26359         * fold-const.c (const_binop): Combine two VECTOR_CST under operation
26360         CODE to produce a new one. Add a prototype to use fold_convert_const
26361
26362 2009-04-08  Danny Smith  <dannysmith@users.sourceforge.net>
26363
26364         PR bootstrap/39660
26365         * config/i386/host-mingw32.c (mingw32_gt_pch_use_address): Don't
26366         mix declarations and code.
26367
26368 2009-04-08  Ben Elliston  <bje@au.ibm.com>
26369
26370         * gcc.c: Replace `CC' with `GCC' throughout.
26371
26372 2009-04-07  H.J. Lu  <hongjiu.lu@intel.com>
26373
26374         * doc/invoke.texi: Document Atom support.
26375
26376 2009-04-07  Jason Merrill  <jason@redhat.com>
26377
26378         PR c++/25185
26379         * c-common.h, c-common.c: Add flag_pretty_templates.
26380         * c-opts.c (c_common_handle_option): Set it.
26381         * c.opt: Add -fno-pretty-templates.
26382         * doc/invoke.texi (C++ Dialect Options): Likewise.
26383
26384 2009-04-07  Uros Bizjak  <ubizjak@gmail.com>
26385
26386         * config/ia64/ia64.c (ia64_builtins): Add IA64_BUILTIN_HUGE_VALQ.
26387         (ia64_init_builtins): Handle IA64_BUILTIN_HUGE_VALQ.
26388         (ia64_expand_builtin): Likewise.
26389
26390 2009-04-07  Martin Jambor  <mjambor@suse.cz>
26391
26392         * tree-ssa-alias.c (refs_may_alias_p_1): Check for
26393         is_gimple_min_invariant rather than CONSTANT_CLASS_P so that invariant
26394         ADDR_EXPRS are include too.
26395
26396 2009-04-07  Richard Guenther  <rguenther@suse.de>
26397
26398         * tree-ssa-alias.c (ref_maybe_used_by_call_p_1): Non-aliased
26399         decls are only used if passes as parameters or if they are
26400         local statics and the call is not to a builtin.
26401         (call_may_clobber_ref_p_1): Likewise.
26402
26403 2009-04-07  Paolo Bonzini  <bonzini@gnu.org>
26404
26405         * expr.c (do_store_flag): Remove last argument.  Simplify code
26406         to avoid duplication of tests already done by can_compare_p.
26407         (expand_expr_real_1): Adjust caller.
26408
26409 2009-04-07  Paolo Bonzini  <bonzini@gnu.org>
26410
26411         * optabs.c (can_compare_p): Test the predicate of a
26412         cbranch and cstore pattern.
26413
26414 2009-04-07  Paolo Bonzini  <bonzini@gnu.org>
26415
26416         * expr.c (convert_move): Use emit_store_flag instead of
26417         "emulating" it.
26418
26419 2009-04-07  Paolo Bonzini  <bonzini@gnu.org>
26420
26421         * config/i386/i386.c (ix86_compare_emitted): Remove.
26422         (ix86_expand_compare, ix86_expand_branch): Handle MODE_CC
26423         ix86_compare_op0 like ix86_compare_emitted used to be handled.
26424         * config/i386/i386.h (ix86_compare_emitted): Remove.
26425         * config/i386/i386.md (stack_protect_test): Set ix86_compare_op0
26426         instead of ix86_compare_emitted.
26427         * config/i386/sync.md (sync_compare_and_swap_cc): Likewise.
26428
26429 2009-04-07  Andrew Stubbs  <ams@codesourcery.com>
26430
26431         * config.gcc (sh-*-*): Add sysroot-suffix.h to tm_file.
26432         Add t-sysroot-suffix to tmake_file.
26433         * config/print-sysroot-suffix.sh: New file.
26434         * config/t-sysroot-suffix: New file.
26435
26436 2009-04-07  Ben Elliston  <bje@au.ibm.com>
26437
26438         * libgcc2.c (INFINITY): Use __builtin_huge_val, not __builtin_inf,
26439         as the latter produces a warning when the target does not support
26440         infinity.
26441
26442 2009-04-07  Ben Elliston  <bje@au.ibm.com>
26443
26444         * dfp.c: Replace type punning assignments with memcpy throughout.
26445         * Makefile.in (dfp.o-warn): Remove.
26446
26447 2009-04-07  Alan Modra  <amodra@bigpond.net.au>
26448
26449         PR target/39634
26450         * config.gcc: Merge powerpc-*-linux* and powerpc64-*-linux*.
26451         Include soft-fp/t-softfp after rs6000/t-linux64.
26452
26453 2009-04-06  Eric Botcazou  <ebotcazou@adacore.com>
26454
26455         * stor-layout.c (set_sizetype): Use the full precision of their
26456         machine mode for bitsize types.
26457
26458 2009-04-06  H.J. Lu  <hongjiu.lu@intel.com>
26459
26460         * config/i386/i386.md: Revert 2 accidental checkins.
26461
26462 2009-04-06  Joey Ye  <joey.ye@intel.com>
26463             Xuepeng Guo  <xuepeng.guo@intel.com>
26464             H.J. Lu  <hongjiu.lu@intel.com>
26465
26466         Atom pipeline model, tuning and insn selection.
26467         * config.gcc (atom): Add atom config options and target.
26468
26469         * config/i386/atom.md: New.
26470
26471         * config/i386/i386.c (atom_cost): New cost.
26472         (m_ATOM): New macro flag.
26473         (initial_ix86_tune_features): Set m_ATOM.
26474         (x86_accumulate_outgoing_args): Likewise.
26475         (x86_arch_always_fancy_math_387): Likewise.
26476         (processor_target): Add Atom cost.
26477         (cpu_names): Add Atom cpu name.
26478         (override_options): Set Atom ISA.
26479         (ix86_issue_rate): New case PROCESSOR_ATOM.
26480         (ix86_adjust_cost): Likewise.
26481
26482         * config/i386/i386.h (TARGET_ATOM): New target macro.
26483         (ix86_tune_indices): Add X86_TUNE_OPT_AGU.
26484         (TARGET_OPT_AGU): New target option.
26485         (target_cpu_default): Add TARGET_CPU_DEFAULT_atom.
26486         (processor_type): Add PROCESSOR_ATOM.
26487
26488         * config/i386/i386.md (cpu): Add new value "atom".
26489         (use_carry, movu): New attr.
26490         (atom.md): Include atom.md.
26491         (adddi3_carry_rex64): Set attr "use_carry".
26492         (addqi3_carry): Likewise.
26493         (addhi3_carry): Likewise.
26494         (addsi3_carry): Likewise.
26495         (*addsi3_carry_zext): Likewise.
26496         (subdi3_carry_rex64): Likewise.
26497         (subqi3_carry): Likewise.
26498         (subhi3_carry): Likewise.
26499         (subsi3_carry): Likewise.
26500         (x86_movdicc_0_m1_rex64): Likewise.
26501         (*x86_movdicc_0_m1_se): Likewise.
26502         (x86_movsicc_0_m1): Likewise.
26503         (*x86_movsicc_0_m1_se): Likewise.
26504         (*adddi_1_rex64): Emit add insn as much as possible.
26505         (*addsi_1): Likewise.
26506         (return_internal): Set atom_unit.
26507         (return_internal_long): Likewise.
26508         (return_pop_internal): Likewise.
26509         (*rcpsf2_sse): Set atom_sse_attr attr.
26510         (*qrt<mode>2_sse): Likewise.
26511         (*prefetch_sse): Likewise.
26512
26513         * config/i386/i386-c.c (ix86_target_macros_internal): New case
26514         PROCESSOR_ATOM.
26515         (ix86_target_macros_internal): Likewise.
26516
26517         * config/i386/sse.md (cpu): Set attr "atom_sse_attr".
26518         (*prefetch_sse_rex): Likewise.
26519         (sse_rcpv4sf2): Likewise.
26520         (sse_vmrcpv4sf2): Likewise.
26521         (sse_sqrtv4sf2): Likewise.
26522         (<sse>_vmsqrt<mode>2): Likewise.
26523         (sse_ldmxcsr): Likewise.
26524         (sse_stmxcsr): Likewise.
26525         (*sse_sfence): Likewise.
26526         (sse2_clflush): Likewise.
26527         (*sse2_mfence): Likewise.
26528         (*sse2_lfence): Likewise.
26529         (avx_movup<avxmodesuffixf2c><avxmodesuffix>): Set attr "movu".
26530         (<sse>_movup<ssemodesuffixf2c>): Likewise.
26531         (avx_movdqu<avxmodesuffix>): Likewise.
26532         (avx_lddqu<avxmodesuffix>): Likewise.
26533         (sse2_movntv2di): Change attr "type" to "ssemov".
26534         (sse2_movntsi): Likewise.
26535         (rsqrtv8sf2): Change attr "type" to "sseadd".
26536         (sse3_addsubv2df3): Set attr "atom_unit".
26537         (sse3_h<plusminus_insn>v4sf3): Likewise.
26538         (*sse2_pmaddwd): Likewise.
26539         (*vec_extractv2di_1_rex64): Likewise.
26540         (*vec_extractv2di_1_avx): Likewise.
26541         (sse2_psadbw): Likewise.
26542         (ssse3_phaddwv8hi3): Likewise.
26543         (ssse3_phaddwv4hi3): Likewise.
26544         (ssse3_phadddv4si3): Likewise.
26545         (ssse3_phadddv2si3): Likewise.
26546         (ssse3_phaddswv8hi3): Likewise.
26547         (ssse3_phaddswv4hi3): Likewise.
26548         (ssse3_phsubwv8hi3): Likewise.
26549         (ssse3_phsubwv4hi3): Likewise.
26550         (ssse3_phsubdv4si3): Likewise.
26551         (ssse3_phsubdv2si3): Likewise.
26552         (ssse3_phsubswv8hi3): Likewise.
26553         (ssse3_phsubswv4hi3): Likewise.
26554         (ssse3_pmaddubsw128): Likewise.
26555         (sse3_pmaddubsw: Likewise.
26556         (ssse3_palignrti): Likewise.
26557         (ssse3_palignrdi): Likewise.
26558
26559 2009-04-06  Gerald Pfeifer  <gerald@pfeifer.com>
26560
26561         * doc/install.texi (Specific): Fix two cross-references to MinGW.
26562
26563 2009-04-06  Richard Guenther  <rguenther@suse.de>
26564
26565         PR tree-optimization/28868
26566         * tree-ssa-pre.c (inserted_phi_names): New bitmap to keep track
26567         of which PHI results we inserted.
26568         (insert_into_preds_of_block): Record inserted PHIs.
26569         (eliminate): Eliminate redundant PHI nodes.
26570         (init_pre): Init inserted_phi_names.
26571
26572 2009-04-06  Richard Guenther  <rguenther@suse.de>
26573
26574         PR tree-optimization/39643
26575         * tree-ssa-ccp.c (ccp_fold): Fold REALPART_EXPRs and
26576         IMAGPART_EXPRs of complex constants.
26577         (execute_fold_all_builtins): If we folded a call queue
26578         TODO_update_address_taken.
26579
26580 2009-04-06  Jan Hubicka  <jh@suse.cz>
26581
26582         PR middle-end/39659
26583         * except.c (remove_unreachable_regions): Propagate may_contain_throw
26584         flag.
26585
26586 2009-04-06  Andrew Stubbs  <ams@codesourcery.com>
26587
26588         * config/sh/lib1funcs.asm (ic_invalidate): Move ICBI out of the
26589         delay slot.
26590         (ic_invalidate_array): Likewise.
26591
26592 2009-04-06  Hariharan Sandanagobalane  <hariharan@picochip.com>
26593
26594         * calls.c (emit_library_call_value_1): Fix a problem with parameter
26595         alignment for library calls.
26596
26597 2009-04-06  Danny Smith  <dannysmith@users.sourceforge.net>
26598
26599         * config.gcc (mingw32 tm_file):  Add mingw-stdint.h.
26600         (mingw32 tm clause use_gcc_stdint):  Set to wrap.
26601         * config/i386/mingw-stdint.h:  New file.
26602
26603 2009-04-05  Richard Guenther  <rguenther@suse.de>
26604
26605         PR tree-optimization/39648
26606         * tree-ssa-sccvn.c (vn_reference_fold_indirect): Work around
26607         our &A vs. &A[0] IL deficiencies.
26608
26609 2009-04-04  Jan Hubicka  <jh@suse.cz>
26610
26611         * except.c (sjlj_find_directly_reachable_regions): Be ready for
26612         removed toplevel regions.
26613         (sjlj_mark_call_sites): Likewise.
26614
26615 2009-04-04  Dave Korn  <dave.korn.cygwin@gmail.com>
26616
26617         * config.gcc (cygwin tm_file):  Add cygwin-stdint.h.
26618         (cygwin tm clause use_gcc_stdint):  Set to wrap.
26619         * config/i386/cygwin-stdint.h:  New file.
26620
26621 2009-04-04  Richard Guenther  <rguenther@suse.de>
26622
26623         * Makefile.in (tree-ssa-copy.o): Add $(CFGLOOP_H) dependency.
26624         * tree-ssa-copy.c (init_copy_prop): Do not propagate through
26625         single-argument PHIs if we are in loop-closed SSA form.
26626         * tree-vect-loop-manip.c (slpeel_add_loop_guard): Pass extra guards
26627         for the pre-condition.
26628         (slpeel_tree_peel_loop_to_edge): Likewise.
26629         (vect_build_loop_niters): Take an optional sequence to append stmts.
26630         (vect_generate_tmps_on_preheader): Likewise.
26631         (vect_do_peeling_for_loop_bound): Take extra guards for the
26632         pre-condition.
26633         (vect_do_peeling_for_alignment): Adjust.  Unconditionally apply
26634         the cost model check.
26635         (vect_loop_versioning): Take stmt and stmt list to put pre-condition
26636         guards if we are going to peel.  Do not apply versioning in that case.
26637         * tree-vectorizer.h (vect_loop_versioning): Adjust declaration.
26638         (vect_do_peeling_for_loop_bound): Likewise.
26639         * tree-vect-loop.c (vect_transform_loop): If we are peeling for
26640         loop bound only record extra pre-conditions, do not apply loop
26641         versioning.
26642
26643 2009-04-04  Richard Guenther  <rguenther@suse.de>
26644
26645         * tree-ssa-operands.c (pop_stmt_changes): Remove automatic
26646         renaming code.
26647
26648 2009-04-04  Jan Hubicka  <jh@suse.cz>
26649
26650         * tree-ssa-uncprop.c (associate_equivalences_with_edges): Use
26651         last_basic_block for size of bb->index indexed array.
26652         * bt-load.c (compute_defs_uses_and_gen, compute_kill,
26653         compute_out, link_btr_uses, build_btr_def_use_webs,
26654         build_btr_def_use_webs, migrate_btr_defs): Likewise.
26655
26656 2009-04-04  Jan Hubicka  <jh@suse.cz>
26657
26658         * except.c (remove_eh_handler_and_replace): Break out from ...
26659         (remove_eh_handler): ... here.
26660         (bring_to_root): New function.
26661         (remove_unreachable_regions): Collect MUST_NOT_THROW, unify runtime
26662         handled ones, bring others to root of tree.
26663
26664 2009-04-04  Jan Hubicka  <jh@suse.cz>
26665
26666         * tree-eh.c (tree_empty_eh_handler_p): Pattern match more curefully.
26667         (all_phis_safe_to_merge): New function.
26668         (update_info): New structure.
26669         (make_eh_edge_and_update_phi, update_eh_edges): New functions.
26670         (cleanup_empty_eh): Update SSA if possible.
26671
26672 2009-04-04  Richard Guenther  <rguenther@suse.de>
26673
26674         * tree-ssa.c (verify_ssa): With -O0 we do not need VOPs.
26675         * tree-ssa-operands.c (append_vdef): Do not append VOPs at -O0.
26676         (append_vuse): Likewise.
26677
26678 2009-04-04  Jakub Jelinek  <jakub@redhat.com>
26679
26680         * unwind-dw2.h (_Unwind_FrameState): Add REG_UNDEFINED enum value.
26681         * unwind-dw2.c (execute_cfa_program): Set how to REG_UNDEFINED
26682         instead of REG_UNSAVED for DW_CFA_undefined.
26683         (uw_update_context_1): Handle REG_UNDEFINED the same as REG_UNSAVED.
26684         (uw_update_context): If RA column is REG_UNDEFINED, mark it as
26685         outermost frame.
26686
26687 2009-04-04  Richard Earnshaw  <rearnsha@arm.com>
26688
26689         PR target/39501
26690         * arm.md (movsfcc): Disable if not TARGET_HARD_FLOAT.
26691
26692 2009-04-04  Richard Guenther  <rguenther@suse.de>
26693
26694         PR tree-optimization/8781
26695         PR tree-optimization/37892
26696         * tree-ssa-sccvn.h (vn_reference_fold_indirect): Declare.
26697         * tree-ssa-sccvn.c (vn_reference_fold_indirect): New function.
26698         (valueize_refs): Call it for *& valueizations.
26699         (shared_reference_ops_from_ref): Rename to ...
26700         (valueize_shared_reference_ops_from_ref): ... this and valueize.
26701         (shared_reference_ops_from_call): Rename to ...
26702         (valueize_shared_reference_ops_from_call): ... this and valueize.
26703         (vn_reference_lookup): Update.
26704         (visit_reference_op_call): Likewise.
26705         * tree-ssa-pre.c (phi_translate_1): Fold *&.
26706         (eliminate): Value-replace the call address in call statements.
26707
26708 2009-04-04  Richard Guenther  <rguenther@suse.de>
26709
26710         PR tree-optimization/39636
26711         * tree-ssa-forwprop.c
26712         (forward_propagate_addr_into_variable_array_index): Check for
26713         GIMPLE_ASSIGN before accessing the rhs code.
26714
26715 2009-04-03  Jason Merrill  <jason@redhat.com>
26716
26717         * stor-layout.c (set_sizetype): Set TYPE_CANONICAL.
26718
26719 2009-04-03  Steve Ellcey  <sje@cup.hp.com>
26720
26721         * config/ia64/ia64.md (extendsfdf2, extendsfxf2, extenddfxf2,
26722         truncdfsf2, truncxfsf2, truncxfdf2, floatdixf2, fix_truncsfdi2,
26723         fix_truncdfdi2, fix_truncxfdi2, fix_truncxfdi2_alts, floatunsdisf2,
26724         floatunsdidf2, floatunsdixf2, fixuns_truncsfdi2, fixuns_truncdfdi2,
26725         fixuns_truncxfdi2, fixuns_truncxfdi2_alts, divsi3_internal,
26726         smuldi3_highpart, umuldi3_highpart, ctzdi2, *getf_exp_xf,
26727         divdi3_internal_lat, divdi3_internal_thr, mulditi3, *mulditi3_internal,
26728         umulditi3, *umulditi3_internal, addsf3, mulsf3, abssf2, negsf2,
26729         *nabssf2, sminsf3, smaxsf3, *maddsf4, *msubsf4, *nmulsf3, *nmaddsf4,
26730         *nmaddsf4_alts, divsf3, *sqrt_approx, sqrtsf2, sqrtsf2_internal_thr,
26731         adddf3, *adddf3_trunc, muldf3, *muldf3_trunc, absdf2, negdf2, *nabsdf2,
26732         smindf3, smaxdf3, *madddf4, *madddf4_trunc, *msubdf4, *msubdf4_trunc,
26733         *nmuldf3, *nmuldf3_trunc, *nmadddf4, *nmadddf4_alts, *nmadddf4_truncsf,
26734         *nmadddf4_truncsf_alts, divdf3, sqrtdf2, sqrtdf2_internal_thr, divxf3,
26735         sqrtxf2, sqrtxf2_internal_thr, *recip_approx):
26736         Use fr_reg_or_fp01_operand instead of fr_register_operand
26737
26738         * config/ia64/div.md (extend<mode>rf2, truncrf<mode>2,
26739         recip_approx_rf, divsf3_internal_thr, divsf3_internal_lat,
26740         divdf3_internal_thr, divdf3_internal_lat divxf3_internal): Ditto.
26741
26742 2009-04-03  Vladimir Makarov  <vmakarov@redhat.com>
26743
26744         PR rtl-optimization/39607
26745         PR rtl-optimization/39631
26746
26747         Revert:
26748
26749         2009-03-30  Vladimir Makarov  <vmakarov@redhat.com>
26750         * reload.c (push_reload, find_dummy_reload): Use df_get_live_out
26751         instead of DF_LR_OUT.
26752         * ira-lives.c (process_bb_node_lives): Ditto.
26753         * ira-color.c (ira_loop_edge_freq): Use df_get_live_{out,in}
26754         instead of DF_LR_{OUT,IN}.
26755         * ira-emit.c (generate_edge_moves, add_ranges_and_copies): Ditto.
26756         * ira-build.c (create_bb_allocnos, create_loop_allocnos): Ditto.
26757
26758 2009-04-03  Steven Bosscher  <steven@gcc.gnu.org>
26759
26760         * omp-low.c (pass_expand_omp): Don't claim to provide PROP_gimple_lomp.
26761         (execute_lower_omp): Always run but take the short way out if -fopenmp
26762         is not given.
26763         (gate_lower_omp): Remove, forcing the pass manager to always run the
26764         pass and always set PROP_gimple_lomp.
26765         (pass_lower_omp): Remove gate function.
26766         * matrix-reorg.c (pass_ipa_matrix_reorg): Don't claim to provide
26767         PROP_trees.  Instead, require it.
26768         * ipa-cp.c (pass_ipa_cp): Likewise.
26769         * ipa-inline.c (pass_early_inline): Don't claim to provide PROP_cfg.
26770         (pass_ipa_early_inline, pass_inline_parameters, pass_ipa_inline): Idem.
26771         * tree-profile.c (pass_tree_profile): Don't claim to provide PROP_cfg
26772         and PROP_gimple_leh.
26773
26774 2009-04-03  Richard Guenther  <rguenther@suse.de>
26775
26776         PR middle-end/13146
26777         PR tree-optimization/23940
26778         PR tree-optimization/33237
26779         PR middle-end/33974
26780         PR middle-end/34093
26781         PR tree-optimization/36201
26782         PR tree-optimization/36230
26783         PR tree-optimization/38049
26784         PR tree-optimization/38207
26785         PR tree-optimization/38230
26786         PR tree-optimization/38301
26787         PR tree-optimization/38585
26788         PR middle-end/38895
26789         PR tree-optimization/38985
26790         PR tree-optimization/39299
26791         * tree-ssa-structalias.h: Remove.
26792         * tree-ssa-operands.h (NULL_USE_OPERAND_P): Make of type use_operand_p.
26793         (NULL_DEF_OPERAND_P): Make of type def_operand_p.
26794         (struct vuse_element_d): Remove.
26795         (struct vuse_vec_d): Likewise.
26796         (VUSE_VECT_NUM_ELEM, VUSE_VECT_ELEMENT_NC, VUSE_ELEMENT_PTR_NC,
26797         VUSE_ELEMENT_VAR_NC, VUSE_VECT_ELEMENT, VUSE_ELEMENT_PTR,
26798         SET_VUSE_VECT_ELEMENT, SET_VUSE_ELEMENT_VAR, SET_VUSE_ELEMENT_PTR,
26799         VUSE_ELEMENT_VAR): Likewise.
26800         (struct voptype_d): Likewise.
26801         (NUM_VOP_FREE_BUCKETS): Likewise.
26802         (struct ssa_operands): Remove vop_free_buckets and mpt_table fields.
26803         (struct stmt_operands_d): Remove.
26804         (VUSE_OP_PTR, VUSE_OP, SET_VUSE_OP, VUSE_NUM, VUSE_VECT,
26805         VDEF_RESULT_PTR, VDEF_RESULT, VDEF_OP_PTR, VDEF_OP, SET_VDEF_OP,
26806         VDEF_NUM, VDEF_VECT): Likewise.
26807         (copy_virtual_operands): Remove.
26808         (operand_build_cmp): Likewise.
26809         (create_ssa_artificial_load_stmt): Likewise.
26810         (enum ssa_op_iter_type): Remove ssa_op_iter_vdef.
26811         (struct ssa_operand_iterator_d): Remove vuses, vdefs, mayusesm
26812         vuse_index and mayuse_index members.  Pack and move done and iter_type
26813         members to the front.
26814         (SSA_OP_VMAYUSE): Remove.
26815         (SSA_OP_VIRTUAL_USES): Adjust.
26816         (FOR_EACH_SSA_VDEF_OPERAND): Remove.
26817         (unlink_stmt_vdef): Declare.
26818         (add_to_addressable_set): Remove.
26819         * tree-vrp.c (stmt_interesting_for_vrp): Adjust.
26820         (vrp_visit_stmt): Likewise.
26821         * doc/tree-ssa.texi (Alias analysis): Update.
26822         * doc/invoke.texi (max-aliased-vops): Remove docs.
26823         (avg-aliased-vops): Likewise.
26824         * tree-into-ssa.c (syms_to_rename): Remove.
26825         (need_to_update_vops_p): Likewise.
26826         (need_to_initialize_update_ssa_p): Rename to ...
26827         (update_ssa_initialized_fn): ... this.  Track function we are
26828         initialized for.
26829         (symbol_marked_for_renaming): Simplify.
26830         (add_new_name_mapping): Do not set need_to_update_vops_p.
26831         (dump_currdefs): Use SYMS_TO_RENAME.
26832         (rewrite_update_stmt): Always walk all uses/defs.
26833         (dump_update_ssa): Adjust.
26834         (init_update_ssa): Take function argument.  Track what we are
26835         initialized for.
26836         (delete_update_ssa): Reset SYMS_TO_RENAME and update_ssa_initialized_fn.
26837         (create_new_def_for): Initialize for cfun, assert we are initialized
26838         for cfun.
26839         (mark_sym_for_renaming): Simplify.
26840         (mark_set_for_renaming): Do not initialize update-ssa.
26841         (need_ssa_update_p): Simplify.  Take function argument.
26842         (name_mappings_registered_p): Assert we ask for the correct function.
26843         (name_registered_for_update_p): Likewise.
26844         (ssa_names_to_replace): Likewise.
26845         (release_ssa_name_after_update_ssa): Likewise.
26846         (update_ssa): Likewise.  Use SYMS_TO_RENAME.
26847         (dump_decl_set): Do not print a newline.
26848         (debug_decl_set): Do it here.
26849         (dump_update_ssa): And here.
26850         * tree-ssa-loop-im.c (move_computations): Adjust.
26851         (movement_possibility): Likewise.
26852         (determine_max_movement): Likewise.
26853         (gather_mem_refs_stmt): Likewise.
26854         * tree-dump.c (dequeue_and_dump): Do not handle SYMBOL_MEMORY_TAG
26855         or NAME_MEMORY_TAG.
26856         * tree-complex.c (update_all_vops): Remove.
26857         (expand_complex_move): Adjust.
26858         * tree-ssa-loop-niter.c (chain_of_csts_start): Use NULL_TREE.
26859         Simplify test for memory referencing statement.  Exclude
26860         non-invariant ADDR_EXPRs.
26861         * tree-pretty-print.c (dump_generic_node): Do not handle memory tags.
26862         * tree-loop-distribution.c (generate_memset_zero): Adjust.
26863         (rdg_flag_uses): Likewise.
26864         * tree-tailcall.c (suitable_for_tail_opt_p): Remove memory-tag
26865         related code.
26866         (tree_optimize_tail_calls_1): Also split the
26867         edge from the entry block if we have degenerate PHI nodes in
26868         the first basic block.
26869         * tree.c (init_ttree): Remove memory-tag related code.
26870         (tree_code_size): Likewise.
26871         (tree_node_structure): Likewise.
26872         (build7_stat): Re-write to be build6_stat.
26873         * tree.h (MTAG_P, TREE_MEMORY_TAG_CHECK, TMR_TAG): Remove.
26874         (SSA_VAR_P): Adjust.
26875         (struct tree_memory_tag): Remove.
26876         (struct tree_memory_partition_tag): Likewise.
26877         (union tree_node): Adjust.
26878         (build7): Re-write to be build6.
26879         * tree-pass.h (pass_reset_cc_flags): Remove.
26880         (TODO_update_address_taken): New flag.
26881         (pass_simple_dse): Remove.
26882         * ipa-cp.c (ipcp_update_callgraph): Update SSA form.
26883         * params.h (MAX_ALIASED_VOPS): Remove.
26884         (AVG_ALIASED_VOPS): Likewise.
26885         * omp-low.c (expand_omp_taskreg): Update SSA form.
26886         * tree-ssa-dse.c (dse_optimize_stmt): Properly query if the rhs
26887         aliases the lhs in a copy stmt.
26888         * tree-ssa-dse.c (struct address_walk_data): Remove.
26889         (memory_ssa_name_same): Likewise.
26890         (memory_address_same): Likewise.
26891         (get_kill_of_stmt_lhs): Likewise.
26892         (dse_possible_dead_store_p): Simplify, use the oracle.  Handle
26893         unused stores.  Look through PHI nodes into post-dominated regions.
26894         (dse_optimize_stmt): Simplify.  Properly remove stores.
26895         (tree_ssa_dse): Compute dominators.
26896         (execute_simple_dse): Remove.
26897         (pass_simple_dse): Likewise.
26898         * ipa-reference.c (scan_stmt_for_static_refs): Open-code
26899         gimple_loaded_syms and gimple_stored_syms computation.
26900         * toplev.c (dump_memory_report): Dump alias and pta stats.
26901         * tree-ssa-sccvn.c (vn_reference_compute_hash): Simplify.
26902         (vn_reference_eq): Likewise.
26903         (vuses_to_vec, copy_vuses_from_stmt, vdefs_to_vec,
26904         copy_vdefs_from_stmt, shared_lookup_vops, shared_vuses_from_stmt,
26905         valueize_vuses): Remove.
26906         (get_def_ref_stmt_vuses): Simplify.  Rename to ...
26907         (get_def_ref_stmt_vuse): ... this.
26908         (vn_reference_lookup_2): New function.
26909         (vn_reference_lookup_pieces): Use walk_non_aliased_vuses for
26910         walking equivalent vuses.  Simplify.
26911         (vn_reference_lookup): Likewise.
26912         (vn_reference_insert): Likewise.
26913         (vn_reference_insert_pieces): Likewise.
26914         (visit_reference_op_call): Simplify.
26915         (visit_reference_op_load): Likewise.
26916         (visit_reference_op_store): Likewise.
26917         (init_scc_vn): Remove shared_lookup_vuses initialization.
26918         (free_scc_vn): Remove shared_lookup_vuses freeing.
26919         (sort_vuses, sort_vuses_heap): Remove.
26920         (get_ref_from_reference_ops): Export.
26921         * tree-ssa-sccvn.h (struct vn_reference_s): Replace vuses
26922         vector with single vuse pointer.
26923         (vn_reference_lookup_pieces, vn_reference_lookup,
26924         vn_reference_insert, vn_reference_insert_pieces): Adjust prototypes.
26925         (shared_vuses_from_stmt): Remove.
26926         (get_ref_from_reference_ops): Declare.
26927         * tree-ssa-loop-manip.c (slpeel_can_duplicate_loop_p): Adjust.
26928         * tree-ssa-copyrename.c (copy_rename_partition_coalesce): Remove
26929         memory-tag related code.
26930         * tree-ssa-ccp.c (get_symbol_constant_value): Remove memory-tag code.
26931         (likely_value): Add comment, skip static-chain of call statements.
26932         (surely_varying_stmt_p): Adjust.
26933         (gimplify_and_update_call_from_tree): Likewise.
26934         (execute_fold_all_builtins): Do not rebuild alias info.
26935         (gimplify_and_update_call_from_tree): Properly update VOPs.
26936         * tree-ssa-loop-ivopts.c (get_ref_tag): Remove.
26937         (copy_ref_info): Remove memory-tag related code.
26938         * tree-call-cdce.c (tree_call_cdce): Rename the VOP.
26939         * ipa-pure-const.c (check_decl): Remove memory-tag related code.
26940         (check_stmt): Open-code gimple_loaded_syms and gimple_stored_syms
26941         computation.
26942         * tree-ssa-dom.c (gimple_p): Remove typedef.
26943         (eliminate_redundant_computations): Adjust.
26944         (record_equivalences_from_stmt): Likewise.
26945         (avail_expr_hash): Likewise.
26946         (avail_expr_eq): Likewise.
26947         * tree-ssa-propagate.c (update_call_from_tree): Properly update VOPs.
26948         (stmt_makes_single_load): Likewise.
26949         (stmt_makes_single_store): Likewise.
26950         * tree-ssa-alias.c: Rewrite completely.
26951         (debug_memory_partitions, dump_mem_ref_stats, debug_mem_ref_stats,
26952         debug_mem_sym_stats, dump_mem_sym_stats_for_var,
26953         debug_all_mem_sym_stats, debug_mp_info, update_mem_sym_stats_from_stmt,
26954         delete_mem_ref_stats, create_tag_raw, dump_points_to_info,
26955         dump_may_aliases_for, debug_may_aliases_for, new_type_alias):
26956         Remove public functions.
26957         (pass_reset_cc_flags): Remove.
26958         (pass_build_alias): Move ...
26959         * tree-ssa-structalias.c (pass_build_alias): ... here.
26960         * tree-ssa-alias.c (may_be_aliased): Move ...
26961         * tree-flow-inline.h (may_be_aliased): ... here.
26962         tree-ssa-alias.c (struct count_ptr_d, count_ptr_derefs,
26963         count_uses_and_derefs): Move ...
26964         * gimple.c: ... here.
26965         * gimple.h (count_uses_and_derefs): Declare.
26966         * tree-ssa-alias.c (dump_alias_stats, ptr_deref_may_alias_global_p,
26967         ptr_deref_may_alias_decl_p, ptr_derefs_may_alias_p,
26968         same_type_for_tbaa, nonaliasing_component_refs_p, decl_refs_may_alias_p,
26969         indirect_ref_may_alias_decl_p, indirect_refs_may_alias_p,
26970         ref_maybe_used_by_call_p, ref_maybe_used_by_stmt_p,
26971         call_may_clobber_ref_p, stmt_may_clobber_ref_p, maybe_skip_until,
26972         get_continuation_for_phi, walk_non_aliased_vuses, walk_aliased_vdefs):
26973         New functions.
26974         * tree-dfa.c (refs_may_alias_p): Move ...
26975         * tree-ssa-alias.c (refs_may_alias_p): ... here.  Extend.
26976         * tree-ssa-alias.h: New file.
26977         * tree-ssa-sink.c (is_hidden_global_store): Adjust.
26978         (statement_sink_location): Likewise.
26979         * opts.c (decode_options): Do not adjust max-aliased-vops or
26980         avg-aliased-vops values.
26981         * timevar.def (TV_TREE_MAY_ALIAS): Remove.
26982         (TV_CALL_CLOBBER): Likewise.
26983         (TV_FLOW_SENSITIVE): Likewise.
26984         (TV_FLOW_INSENSITIVE): Likewise.
26985         (TV_MEMORY_PARTITIONING): Likewise.
26986         (TV_ALIAS_STMT_WALK): New timevar.
26987         * tree-ssa-loop-ivcanon.c (empty_loop_p): Adjust.
26988         * tree-ssa-address.c (create_mem_ref_raw): Use build6.
26989         (get_address_description): Remove memory-tag related code.
26990         * tree-ssa-ifcombine.c (bb_no_side_effects_p): Adjust.
26991         * treestruct.def (TS_MEMORY_TAG, TS_MEMORY_PARTITION_TAG): Remove.
26992         * tree-eh.c (cleanup_empty_eh): Do not leave stale SSA_NAMEs
26993         and immediate uses in statements.  Document.
26994         * gimple-pretty-print.c (dump_gimple_mem_ops): Adjust.
26995         (dump_symbols): Remove.
26996         (dump_gimple_mem_ops): Do not dump loaded or stored syms.
26997         * alias.c (get_deref_alias_set): New function split out from ...
26998         (get_alias_set): ... here.
26999         * alias.h (get_deref_alias_set): Declare.
27000         * tree-vect-data-refs.c (vect_create_data_ref_ptr): Remove unused
27001         type parameter.  Remove restrict pointer handling.  Create a
27002         ref-all pointer in case type-based alias sets do not conflict.
27003         (vect_analyze_data_refs): Remove SMT related code.
27004         * tree-vect-stmts.c (vectorizable_store): Re-instantiate TBAA assert.
27005         (vectorizable_load): Likewise.
27006         * tree-data-ref.h (struct dr_alias): Remove symbol_tag field.
27007         (DR_SYMBOL_TAG, DR_VOPS): Remove.
27008         * tree-data-ref.c (dr_may_alias_p): Use the alias-oracle.
27009         Ignore vops and SMTs.
27010         (dr_analyze_alias): Likewise..
27011         (free_data_ref): Likewise.
27012         (create_data_ref): Likewise.
27013         (analyze_all_data_dependences): Likewise.
27014         (get_references_in_stmt): Adjust.
27015         * tree-flow-inline.h (gimple_aliases_computed_p,
27016         gimple_addressable_vars, gimple_call_clobbered_vars,
27017         gimple_call_used_vars, gimple_global_var, may_aliases, memory_partition,
27018         factoring_name_p, mark_call_clobbered, clear_call_clobbered,
27019         compare_ssa_operands_equal, symbol_mem_tag, set_symbol_mem_tag,
27020         gimple_mem_ref_stats): Remove.
27021         (gimple_vop): New function.
27022         (op_iter_next_use): Remove vuses and mayuses cases.
27023         (op_iter_next_def): Remove vdefs case.
27024         (op_iter_next_tree): Remove vuses, mayuses and vdefs cases.
27025         (clear_and_done_ssa_iter): Do not set removed fields.
27026         (op_iter_init): Likewise.  Skip vuse and/or vdef if requested.
27027         Assert we are not iterating over vuses or vdefs if not also
27028         iterating over uses or defs.
27029         (op_iter_init_use): Likewise.
27030         (op_iter_init_def): Likewise.
27031         (op_iter_next_vdef): Remove.
27032         (op_iter_next_mustdef): Likewise.
27033         (op_iter_init_vdef): Likewise.
27034         (compare_ssa_operands_equal): Likewise.
27035         (link_use_stmts_after): Handle vuse operand.
27036         (is_call_used): Use is_call_clobbered.
27037         (is_call_clobbered): Global variables are always call clobbered,
27038         query the call-clobbers bitmap.
27039         (mark_call_clobbered): Ignore global variables.
27040         (clear_call_clobbered): Likewise.
27041         * tree-ssa-coalesce.c (create_outofssa_var_map): Adjust
27042         virtual operands sanity check.
27043         * tree.def (NAME_MEMORY_TAG, SYMBOL_MEMORY_TAG, MEMORY_PARTITION_TAG):
27044         Remove.
27045         (TARGET_MEM_REF): Remove TMR_TAG operand.
27046         * tree-dfa.c (add_referenced_var): Initialize call-clobber state.
27047         Remove call-clobber related code.
27048         (remove_referenced_var): Likewise.  Do not clear mpt or symbol_mem_tag.
27049         (dump_variable): Do not dump SMTs, memory stats, may-aliases or
27050         partitions or escape reason.
27051         (get_single_def_stmt, get_single_def_stmt_from_phi,
27052         get_single_def_stmt_with_phi): Remove.
27053         (dump_referenced_vars): Tidy.
27054         (get_ref_base_and_extent): Allow bare decls.
27055         (collect_dfa_stats): Adjust.
27056         * graphite.c (rename_variables_in_stmt): Adjust.
27057         (graphite_copy_stmts_from_block): Likewise.
27058         (translate_clast): Likewise.
27059         * tree-ssa-pre.c (struct bb_bitmap_sets): Add expr_dies bitmap.
27060         (EXPR_DIES): New.
27061         (translate_vuse_through_block): Use the oracle.
27062         (phi_translate_1): Adjust.
27063         (value_dies_in_block_x): Use the oracle.  Cache the outcome
27064         in EXPR_DIES.
27065         (valid_in_sets): Check if the VUSE for
27066         a REFERENCE is available.
27067         (eliminate): Do not remove stmts during elimination,
27068         instead queue and remove them afterwards.
27069         (do_pre): Do not rebuild alias info.
27070         (pass_pre): Run TODO_rebuild_alias before PRE.
27071         * tree-ssa-live.c (remove_unused_locals): Remove memory-tag code.
27072         * tree-sra.c (sra_walk_function): Use gimple_references_memory_p.
27073         (mark_all_v_defs_stmt): Remove.
27074         (mark_all_v_defs_seq): Adjust.
27075         (sra_replace): Likewise.
27076         (scalarize_use): Likewise.
27077         (scalarize_copy): Likewise.
27078         (scalarize_init): Likewise.
27079         (scalarize_ldst): Likewise.
27080         (todoflags): Remove.
27081         (tree_sra): Do not rebuild alias info.
27082         (tree_sra_early): Adjust.
27083         (pass_sra): Run TODO_update_address_taken before SRA.
27084         * tree-predcom.c (set_alias_info): Remove.
27085         (prepare_initializers_chain): Do not call it.
27086         (mark_virtual_ops_for_renaming): Adjust.
27087         (mark_virtual_ops_for_renaming_list): Remove.
27088         (initialize_root_vars): Adjust.
27089         (initialize_root_vars_lm): Likewise.
27090         (prepare_initializers_chain): Likewise.
27091         * tree-ssa-copy.c (may_propagate_copy): Remove memory-tag related code.
27092         (may_propagate_copy_into_stmt): Likewise.
27093         (merge_alias_info): Do nothing for now.
27094         (propagate_tree_value_into_stmt): Adjust.
27095         (stmt_may_generate_copy): Likewise.
27096         * tree-ssa-forwprop.c (tidy_after_forward_propagate_addr): Do
27097         not mark symbols for renaming.
27098         (forward_propagate_addr_expr): Match up push/pop_stmt_changes
27099         with the same statement, make sure to update the new pointed-to one.
27100         * tree-ssa-dce.c (eliminate_unnecessary_stmts): Do not copy
27101         call statements, do not mark symbols for renaming.
27102         (mark_operand_necessary): Dump something.
27103         (ref_may_be_aliased): New function.
27104         (mark_aliased_reaching_defs_necessary_1): New helper function.
27105         (mark_aliased_reaching_defs_necessary): Likewise.
27106         (mark_all_reaching_defs_necessary_1): Likewise.
27107         (mark_all_reaching_defs_necessary): Likewise.
27108         (propagate_necessity): Do not process virtual PHIs.  For
27109         non-aliased loads mark all reaching definitions as necessary.
27110         For aliased loads and stores mark the immediate dominating
27111         aliased clobbers as necessary.
27112         (visited): New global static.
27113         (perform_tree_ssa_dce): Free visited bitmap after propagating
27114         necessity.
27115         (remove_dead_phis): Perform simple dead virtual PHI removal.
27116         (remove_dead_stmt): Properly unlink virtual operands when
27117         removing stores.
27118         (eliminate_unnecessary_stmts): Schedule PHI removal after
27119         stmt removal.
27120         * tree-ssa-ter.c (is_replaceable_p): Adjust.
27121         (process_replaceable): Likewise.
27122         (find_replaceable_in_bb): Likewise.
27123         * tree-ssa.c (verify_ssa_name): Verify all VOPs are
27124         based on the single gimple vop.
27125         (verify_flow_insensitive_alias_info): Remove.
27126         (verify_flow_sensitive_alias_info): Likewise.
27127         (verify_call_clobbering): Likewise.
27128         (verify_memory_partitions): Likewise.
27129         (verify_alias_info): Likewise.
27130         (verify_ssa): Adjust..
27131         (execute_update_addresses_taken): Export.  Update SSA
27132         manually.  Optimize only when optimizing.  Use a local bitmap.
27133         (pass_update_address_taken): Remove TODO_update_ssa, add
27134         TODO_dump_func.
27135         (pass_update_address_taken): Just use TODO_update_address_taken.
27136         (init_tree_ssa): Do not initialize addressable_vars.
27137         (verify_ssa): Verify new VUSE / VDEF properties.
27138         Verify that all stmts definitions have the stmt as SSA_NAME_DEF_STMT.
27139         Do not call verify_alias_info.
27140         (delete_tree_ssa): Clear the VUSE, VDEF operands.
27141         Do not free the loaded and stored syms bitmaps.  Reset the escaped
27142         and callused solutions.  Do not free addressable_vars.
27143         Remove memory-tag related code.
27144         (warn_uninitialized_var): Aliases are always available.
27145         * tree-ssa-loop-prefetch.c (gather_memory_references): Adjust.
27146         * lambda-code.c (can_put_in_inner_loop): Adjust.
27147         (can_put_after_inner_loop): Likewise.
27148         (perfect_nestify): Likewise.
27149         * tree-vect-stmts.c (vect_stmt_relevant_p): Adjust.
27150         (vect_gen_widened_results_half): Remove CALL_EXPR handling.
27151         (vectorizable_conversion): Do not mark symbols for renaming.
27152         * tree-inline.c (remap_gimple_stmt): Clear VUSE/VDEF.
27153         (expand_call_inline): Unlink the calls virtual operands before
27154         replacing it.
27155         (tree_function_versioning): Do not call update_ssa if we are not
27156         updating clones.  Simplify.
27157         * tree-ssa-phiprop.c (phivn_valid_p): Adjust.
27158         (propagate_with_phi): Likewise..
27159         * tree-outof-ssa.c (create_temp): Remove memory tag and call
27160         clobber code.  Assert we are not aliased or global.
27161         * tree-flow.h: Include tree-ssa-alias.h
27162         (enum escape_type): Remove.
27163         (struct mem_sym_stats_d): Likewise.
27164         (struct mem_ref_stats_d): Likewise.
27165         (struct gimple_df): Add vop member.  Remove global_var,
27166         call_clobbered_vars, call_used_vars, addressable_vars,
27167         aliases_compted_p and mem_ref_stats members.  Add syms_to_rename,
27168         escaped and callused members.
27169         (struct ptr_info_def): Remove all members, add points-to solution
27170         member pt.
27171         (struct var_ann_d): Remove in_vuse_list, in_vdef_list,
27172         call_clobbered, escape_mask, mpt and symbol_mem_tag members.
27173         * Makefile.in (TREE_FLOW_H): Add tree-ssa-alias.h.
27174         (tree-ssa-structalias.o): Remove tree-ssa-structalias.h.
27175         (tree-ssa-alias.o): Likewise.
27176         (toplev.o): Add tree-ssa-alias.h
27177         (GTFILES): Remove tree-ssa-structalias.h, add tree-ssa-alias.h.
27178         * gimple.c (gimple_set_bb): Fix off-by-one error.
27179         (is_gimple_reg): Do not handle memory tags.
27180         (gimple_copy): Also copy virtual operands.
27181         Delay updating the statement.  Do not reset loaded and stored syms.
27182         (gimple_set_stored_syms): Remove.
27183         (gimple_set_loaded_syms): Likewise.
27184         (gimple_call_copy_skip_args): Copy the virtual operands
27185         and mark the new statement modified.
27186         * tree-ssa-structalias.c (may_alias_p): Remove.
27187         (set_uids_in_ptset): Take the alias set to prune with as
27188         parameter.  Fold in the alias test of may_alias_p.
27189         (compute_points_to_sets): Compute whether a ptr is dereferenced
27190         in a local sbitmap.
27191         (process_constraint): Deal with &ANYTHING on the lhs, reject all
27192         other ADDRESSOF constraints on the lhs.
27193         (get_constraint_for_component_ref): Assert that we don't get
27194         ADDRESSOF constraints from the base of the reference.
27195         Properly generate UNKNOWN_OFFSET for DEREF if needed.
27196         (struct variable_info): Remove collapsed_to member.
27197         (get_varinfo_fc): Remove.
27198         (new_var_info): Do not set collapsed_to.
27199         (dump_constraint): Do not follow cycles.
27200         (dump_constraint_graph): Likewise.
27201         (build_pred_graph): Likewise.
27202         (build_succ_graph): Likewise.
27203         (rewrite_constraints): Likewise.
27204         (do_simple_structure_copy): Remove.
27205         (do_rhs_deref_structure_copy): Remove.
27206         (do_lhs_deref_structure_copy): Remove.
27207         (collapse_rest_of_var): Remove.
27208         (do_structure_copy): Re-implement.
27209         (pta_stats): New global variable.
27210         (dump_pta_stats): New function.
27211         (struct constraint_expr): Make offset signed.
27212         (UNKNOWN_OFFSET): Define special value.
27213         (dump_constraint): Dump UNKNOWN_OFFSET as UNKNOWN.
27214         (solution_set_expand): New helper function split out from ...
27215         (do_sd_constraint): ... here.
27216         (solution_set_add): Handle UNKNOWN_OFFSET.  Handle negative offsets.
27217         (do_ds_constraint): Likewise.
27218         (do_sd_constraint): Likewise.  Do not special-case ESCAPED = *ESCAPED
27219         and CALLUSED = *CALLUSED.
27220         (set_union_with_increment): Make inc argument signed.
27221         (type_safe): Remove.
27222         (get_constraint_for_ptr_offset): Handle unknown and negative
27223         constant offsets.
27224         (first_vi_for_offset): Handle offsets before start.  Bail
27225         out early for offsets beyond the variable extent.
27226         (first_or_preceding_vi_for_offset): New function.
27227         (init_base_vars): Add ESCAPED = ESCAPED + UNKNOWN_OFFSET constraint.
27228         Together with ESCAPED = *ESCAPED this properly computes reachability.
27229         (find_what_var_points_to): New function.
27230         (find_what_p_points_to): Implement in terms of find_what_var_points_to.
27231         (pt_solution_reset, pt_solution_empty_p, pt_solution_includes_global,
27232         pt_solution_includes_1, pt_solution_includes, pt_solutions_intersect_1,
27233         pt_solutions_intersect): New functions.
27234         (compute_call_used_vars): Remove.
27235         (compute_may_aliases): New main entry into PTA computation.
27236         * gimple.h (gimple_p): New typedef.
27237         (struct gimple_statement_base): Remove references_memory_p.
27238         (struct gimple_statement_with_memory_ops_base): Remove
27239         vdef_ops, vuse_ops, stores and loads members.  Add vdef and vuse
27240         members.
27241         (gimple_vuse_ops, gimple_set_vuse_ops, gimple_vdef_ops,
27242         gimple_set_vdef_ops, gimple_loaded_syms, gimple_stored_syms,
27243         gimple_set_references_memory): Remove.
27244         (gimple_vuse_op, gimple_vdef_op, gimple_vuse, gimple_vdef,
27245         gimple_vuse_ptr, gimple_vdef_ptri, gimple_set_vuse, gimple_set_vdef):
27246         New functions.
27247         * tree-cfg.c (move_block_to_fn): Fix off-by-one error.
27248         (verify_expr): Allow RESULT_DECL.
27249         (gimple_duplicate_bb): Do not copy virtual operands.
27250         (gimple_duplicate_sese_region): Adjust.
27251         (gimple_duplicate_sese_tail): Likewise.
27252         (mark_virtual_ops_in_region): Remove.
27253         (move_sese_region_to_fn): Do not call it.
27254         * passes.c (init_optimization_passes): Remove pass_reset_cc_flags
27255         and pass_simple_dse.
27256         (execute_function_todo): Handle TODO_update_address_taken,
27257         call execute_update_addresses_taken for TODO_rebuild_alias.
27258         (execute_todo): Adjust.
27259         (execute_one_pass): Init dump files early.
27260         * ipa-struct-reorg.c (finalize_var_creation): Do not mark vars
27261         call-clobbered.
27262         (create_general_new_stmt): Clear vops.
27263         * tree-ssa-reassoc.c (get_rank): Adjust.
27264         * tree-vect-slp.c (vect_create_mask_and_perm): Do not mark
27265         symbols for renaming.
27266         * params.def (PARAM_MAX_ALIASED_VOPS): Remove.
27267         (PARAM_AVG_ALIASED_VOPS): Likewise.
27268         * tree-ssanames.c (init_ssanames): Allocate SYMS_TO_RENAME.
27269         (duplicate_ssa_name_ptr_info): No need to copy the shared bitmaps.
27270         * tree-ssa-operands.c: Simplify for new virtual operand representation.
27271         (operand_build_cmp, copy_virtual_operands,
27272         create_ssa_artificial_load_stmt, add_to_addressable_set,
27273         gimple_add_to_addresses_taken): Remove public functions.
27274         (unlink_stmt_vdef): New function.
27275
27276 2009-04-03  Alan Modra  <amodra@bigpond.net.au>
27277
27278         * config.gcc (powerpc-*-linux*): Merge variants.
27279
27280 2009-04-02  Chao-ying Fu  <fu@mips.com>
27281             James Grosbach  <james.grosbach@microchip.com>
27282
27283         * config/mips/mips.c (mips_frame_info): Add acc_mask, num_acc,
27284         num_cop0_regs, acc_save_offset, cop0_save_offset, acc_sp_offset,
27285         cop0_sp_offset.
27286         (machine_function): Add interrupt_handler_p, use_shadow_register_set_p,
27287         keep_interrupts_masked_p, use_debug_exception_return_p.
27288         (mips_attribute_table): Add interrupt, use_shadow_register_set,
27289         keep_interrupts_masked, use_debug_exception_return.
27290         (mips_interrupt_type_p, mips_use_shadow_register_set_p,
27291         mips_keep_interrupts_masked_p, mips_use_debug_exception_return_p):
27292         New functions.
27293         (mips_function_ok_for_sibcall): Return false for interrupt handlers.
27294         (mips_print_operand): Process COP0 registers to print $0 .. $31
27295         correctly for GAS to process.
27296         (mips_interrupt_extra_call_saved_reg_p): New function.
27297         (mips_cfun_call_saved_reg_p): For interrupt handlers, we need to check
27298         extra registers.
27299         (mips_cfun_might_clobber_call_saved_reg_p): Likewise.
27300         (mips_compute_frame_info): Add supports for interrupt context that
27301         includes doubleword accumulators and COP0 registers.
27302         (mips_for_each_saved_acc): New function.
27303         (mips_for_each_saved_gpr_and_fpr): Change the function name from
27304         mips_for_each_saved_reg.
27305         (mips_save_reg): Save accumulators.
27306         (mips_kernel_reg_p): A new for_each_rtx callback.
27307         (mips_expand_prologue): Support interrupt handlers.
27308         (mips_restore_reg): Restore accumulators.
27309         (mips_expand_epilogue): Support interrupt handlers.
27310         (mips_can_use_return_insn): Return false for interrupt handlers.
27311         (mips_epilogue_uses): New function.
27312         * config/mips/mips.md (UNSPEC_ERET, UNSPEC_DERET, UNSPEC_DI,
27313         UNSPEC_EHB, UNSPEC_RDPGPR, UNSPEC_COP0): New UNSPEC.
27314         (mips_eret, mips_deret, mips_di, mips_ehb, mips_rdpgpr,
27315         cop0_move): New instructions.
27316         * config/mips/mips-protos.h (mips_epilogue_uses): Declare.
27317         * config/mips/mips.h (K0_REG_NUM, K1_REG_NUM, KERNEL_REG_P): New
27318         defines.
27319         (COP0_STATUS_REG_NUM, COP0_CAUSE_REG_NUM, COP0_EPC_REG_NUM):
27320         New defines.
27321         (CAUSE_IPL, SR_IPL, SR_EXL, SR_IE): New defines.
27322         (MIPS_PROLOGUE_TEMP_REGNUM, MIPS_EPILOGUE_TEMP_REGNUM): For
27323         interrupt handlers, we use K0 as the temporary register.
27324         (EPILOGUE_USES): Change to a function call.
27325         * config/mips/sde.h (MIPS_EPILOGUE_TEMP_REGNUM): For interrupt
27326         handlers, we use K0 as the temporary register.
27327
27328         * doc/extend.texi (Function Attributes): Document interrupt,
27329         use_shadow_register_set, keep_interrupts_masked,
27330         use_debug_exception_return for MIPS attributes.
27331
27332 2009-04-03  Alan Modra  <amodra@bigpond.net.au>
27333
27334         * config.gcc (powerpc64-*-gnu*): Add rs6000/default64.h to tm_file.
27335         Remove a number of t-files from tmake_file.
27336         * config/rs6000/sysv4.opt (mprototype): Name variable target_prototype.
27337         * config/rs6000/sysv4.h (TARGET_PROTOTYPE): Define.
27338         * config/rs6000/linux64.h (SUBSUBTARGET_OVERRIDE_OPTIONS): Set
27339         target_prototype, not TARGET_PROTOTYPE.
27340         (LINK_OS_GNU_SPEC): Define.
27341         * config/rs6000/t-linux64 (LIB2FUNCS_EXTRA): Delete tramp.S
27342         and darwin-ldoubdle.c.
27343
27344 2009-04-02  Michael Meissner  <meissner@linux.vnet.ibm.com>
27345
27346         PR driver/39293
27347         * gcc.c (save_temps_flag): Add support for -save-temps=obj.
27348         (cpp_options): Ditto.
27349         (default_compilers): Ditto.
27350         (display_help): Ditto.
27351         (process_command): Ditto.
27352         (do_spec_1): Ditto.
27353         (set_input): Use lbasename instead of duplicate code.
27354         (save_temps_prefix): New static for -save-temps=obj.
27355         (save_temps_length): Ditto.
27356
27357         * doc/invoke.texi (-save-temps=obj): Document new variant to
27358         -save-temps switch.
27359
27360 2009-04-02  Jeff Law  <law@redhat.com>
27361
27362         * reload1.c (fixup_eh_region_notes): Remove write-only "trap_count"
27363         variable.
27364
27365 2009-04-02  H.J. Lu  <hongjiu.lu@intel.com>
27366
27367         * configure.ac: Support -Bstatic/-Bdynamic for linker version > 2.
27368         * configure: Regenerated.
27369
27370 2009-04-02  Rafael Avila de Espindola  <espindola@google.com>
27371
27372         * c-decl.c (merge_decls): Make sure newdecl and olddecl don't
27373         share the argument list.
27374
27375 2009-04-02  Rafael Avila de Espindola  <espindola@google.com>
27376
27377         Merge
27378
27379         2009-02-12  Diego Novillo  <dnovillo@google.com>
27380
27381         * varpool.c (debug_varpool): New.
27382         * cgraph.h (debug_varpool): Declare.
27383
27384 2009-04-02  Jan Hubicka  <jh@suse.cz>
27385
27386         * passes.c (init_optimization_passes): Remove two copies of ehcleanup
27387         pass.
27388
27389 2009-04-02  H.J. Lu  <hongjiu.lu@intel.com>
27390
27391         * config/i386/i386.c (ix86_abi): Move initialization to ...
27392         (override_options): Here.
27393
27394 2009-04-02  Christian Bruel  <christian.bruel@st.com>
27395
27396         * config/sh/sh.c (sh_dwarf_register_span): New function.
27397         (TARGET_DWARF_REGISTER_SPAN): Define.
27398         * config/sh/sh-protos.h (sh_dwarf_register_span): Declare.
27399
27400 2009-04-02  Ira Rosen  <irar@il.ibm.com>
27401
27402         PR tree-optimization/39595
27403         * tree-vect-slp.c (vect_build_slp_tree): Check that the size of
27404         interleaved loads group is not  greater than the SLP group size.
27405
27406 2009-04-02  Rafael Avila de Espindola  <espindola@google.com>
27407
27408         * builtins.c (is_builtin_name): New.
27409         (called_as_built_in): Use is_builtin_name.
27410         * tree.h (is_builtin_name): New.
27411         * varasm.c (incorporeal_function_p): Use is_builtin_name
27412
27413 2009-04-02  Andrew Stubbs  <ams@codesourcery.com>
27414
27415         * config/sh/linux-unwind.h: Disable when inhibit_libc is defined.
27416
27417 2009-04-02  Dodji Seketeli  <dodji@redhat.com>
27418
27419         PR c++/26693
27420         * c-decl.c (clone_underlying_type): Move this ...
27421         * c-common.c (set_underlying_type): ... here.
27422         Also, make sure the function properly sets TYPE_STUB_DECL() on
27423         the newly created typedef variant type.
27424         * c-common.h (is_typedef_decl, set_underlying_type): Declare ...
27425         * c-common.c (is_typedef_decl, set_underlying_type): ... new entry
27426         points.
27427
27428 2009-04-02  Richard Guenther  <rguenther@suse.de>
27429
27430         PR tree-optimization/37221
27431         * tree-flow.h (degenerate_phi_result): Declare.
27432         * tree-ssa-dom.c (degenerate_phi_result): Export.
27433         * tree-scalar-evolution.c (analyze_initial_condition): If
27434         the initial condition is defined by a degenerate PHI node
27435         use the degenerate value.
27436
27437 2009-04-01  Eric Botcazou  <ebotcazou@adacore.com>
27438
27439         PR rtl-optimization/39588
27440         * combine.c (merge_outer_ops): Do not set the constant when this
27441         is not necessary.
27442         (simplify_shift_const_1): Do not modify it either in this case.
27443
27444 2009-04-01  Steven Bosscher  <steven@gcc.gnu.org>
27445
27446         * config/ia64/ia64.c (ia64_handle_option): Inform user that Itanium1
27447         tuning is deprecated if -mtune value is set to an Itanium1 variant.
27448
27449 2009-04-01  Janis Johnson  <janis187@us.ibm.com>
27450
27451         PR c/29027
27452         * c-lex.c (interpret_float): Default (no suffix) is double.
27453
27454 2009-04-1  Xinliang David Li  <davidxl@google.com>
27455
27456         * config/i386/i386.c (legitimate_constant_p): Recognize
27457         all one vector constant.
27458
27459 2009-04-01  Jan-Benedict Glaw  <jbglaw@jbglaw-dev.homezone.telefonica.de>
27460
27461         * config/vax/vax.c: Add #includes to silence warnings.
27462         Change #include order to silence two warnings.
27463
27464 2009-04-01  Jan-Benedict Glaw  <jbglaw@jbglaw-dev.homezone.telefonica.de>
27465
27466         * config/vax/linux.h (TARGET_DEFAULT): Add the MASK_QMATH flag bit.
27467         (ASM_SPEC): Pass -k to the assembler for PIC code.
27468
27469 2009-04-01  Jan-Benedict Glaw  <jbglaw@jbglaw-dev.homezone.telefonica.de>
27470
27471         * config.gcc: Add vax-*-linux* to the switch.
27472         * config/vax/linux.h: New file. (TARGET_VERSION,
27473         TARGET_OS_CPP_BUILTINS, TARGET_DEFAULT, CPP_SPEC, LINK_SPEC): Define.
27474
27475 2009-04-01  Jan-Benedict Glaw  <jbglaw@jbglaw-dev.homezone.telefonica.de>
27476
27477         * config/vax/vax.c (vax_output_int_move, adjacent_operands_p):
27478         Use predicate macros instead of GET_CODE() == foo.
27479         * config/vax/vax.md (movsi_2, movstrictqi, and<mode>3, ashrsi3,
27480         ashlsi3, rotrsi3, <unnamed>): Likewise.
27481
27482 2009-04-01  Jan-Benedict Glaw  <jbglaw@jbglaw-dev.homezone.telefonica.de>
27483
27484         * config/vax/builtins.md (jbbssiqi, jbbssihi, jbbssisi, jbbcciqi,
27485         jbbccihi, jbbccisi): Remova trailing whitespace.
27486         * config/vax/constraints.md: Likewise.
27487         * config/vax/elf.h (ASM_PREFERRED_EH_DATA_FORMAT): Likewise.
27488         * config/vax/openbsd1.h (OBSD_OLD_GAS): Likewise.
27489         * config/vax/predicates.md: Likewise.
27490         * config/vax/vax.c (print_operand_address, vax_output_int_move,
27491         vax_expand_addsub_di_operands, adjacent_operands_p): Likewise.
27492         * config/vax/vax.h: Likewise.
27493         * config/vax/vax.md (nonlocal_goto): Likewise.
27494
27495 2009-04-01  Jan-Benedict Glaw  <jbglaw@jbglaw-dev.homezone.telefonica.de>
27496
27497         * config/vax/vax.c (vax_float_literal, vax_output_int_move)
27498         (indirectable_address_p, adjacent_operands_p): Add spaces around
27499         braces.
27500         * config/vax/vax-protos.h (adjacent_operands_p): Likewise.
27501
27502 2009-04-01  Jan-Benedict Glaw  <jbglaw@jbglaw-dev.homezone.telefonica.de>
27503
27504         * config/vax/vax.c (legitimate_constant_address_p,
27505         legitimate_constant_p, indirectable_address_p, nonindexed_address_p,
27506         index_term_p, reg_plus_index_p, legitimate_address_p,
27507         vax_mode_dependent_address_p): Update comments to match functions
27508         modified by the recent int->bool conversion.
27509
27510 2009-04-01  Jan-Benedict Glaw  <jbglaw@jbglaw-dev.homezone.telefonica.de>
27511
27512         * config/vax/builtins.md: Update copyright message.
27513         * config/vax/constraints.md: Likewise.
27514         * config/vax/netbsd-elf.h: Likewise.
27515         * config/vax/predicates.md: Likewise.
27516         * config/vax/vax-protos.h: Likewise.
27517         * config/vax/vax.c: Likewise.
27518         * config/vax/vax.h: Likewise.
27519         * config/vax/vax.md: Likewise.
27520         * config/vax/vax.opt: Likewise.
27521
27522 2009-04-01  Jan-Benedict Glaw  <jbglaw@jbglaw-dev.homezone.telefonica.de>
27523
27524         * config/vax/builtins.md (ffssi2, ffssi2_internal,
27525         sync_lock_test_and_set<mode>, sync_lock_release<mode>): Fix indention.
27526         * config/vax/constraints.md (B, R): Likewise.
27527         * config/vax/predicates.md (external_memory_operand,
27528         nonimmediate_addsub_di_operand): Likewise.
27529         * config/vax/vax.c (vax_output_int_add): Likewise.
27530         * config/vax/vax.md (movsi, movsi_2, mov<mode>, call_value,
27531         untyped_call): Likewise.
27532
27533 2009-04-01  Matt Thomas  <matt@3am-software.com>
27534
27535         * config/vax/predicates.md: New file.
27536         (symbolic_operand, local_symbolic_operand, external_symbolic_operand,
27537         external_const_operand, nonsymbolic_operand, external_memory_operand,
27538         indirect_memory_operand, indexed_memory_operand,
27539         illegal_blk_memory_operand, illegal_addsub_di_memory_operand,
27540         nonimmediate_addsub_di_operand, general_addsub_di_operand): New
27541         predicate.
27542         * config/vax/constraints.md: New file.
27543         (Z0, U06,  U08, U16, CN6, S08, S16, I, J, K, L, M, N, O, G, Q, B, R, T):
27544         New constraint.
27545         * config/vax/builtins.md: New file.
27546         (ffssi2, ffssi2_internal, sync_lock_test_and_set<mode>, jbbssiqi,
27547         jbbssihi, jbbssisi, sync_lock_release<mode>, jbbcciqi, jbbccihi,
27548         jbbccisi): Define.
27549         * config/vax/vax.opt (mqmath): Add option.
27550         * config/vax/vax.md (isfx): Extend with DI.
27551         (VAXintQH, VAXintQHSD): Define.
27552         (tst<mode>, cmp<mode>, *bit<mode>, movmemhi1, truncsiqi2, truncsihi2,
27553         mulsidi3, add<mode>3, sub<mode>, mul<mode>3, div<mode>3, and<mode>,
27554         and<mode>_const_int, ior<mode>3, xor<mode>3, neg<mode>2,
27555         one_cmpl<mode>2, ashlsi3, lshrsi3, rotlsi3): Update constraints.
27556         (movdi): Update constraints and use vax_output_int_move().
27557         (movsi, movsi_2, pushlclsymreg, pushextsymreg, movlclsymreg,
27558         movextsymreg, adddi3, adcdi3, subdi3, sbcdi3, pushextsym, movextsym,
27559         pushlclsym, movlclsym, movaddr<mode>, pushaddr<mode>,
27560         nonlocal_goto): New.
27561         (mov<mode>): Extend accepted operand types.
27562         (subdi3_old): Rename from subdi3, change update constraints and use
27563         a new implementation.
27564         * config/vax/vax.h (PCC_BITFIELD_TYPE_MATTERS): Add space.
27565         (FRAME_POINTER_CFA_OFFSET, IRA_COVER_CLASSES, CLASS_MAX_NREGS,
27566         MOVE_RATIO, CLEAR_RATIO): Define.
27567         (REG_CLASS_FROM_LETTER, CONST_OK_FOR_LETTER_P,
27568         CONST_DOUBLE_OK_FOR_LETTER_P, EXTRA_CONSTRAINT): Delete.
27569         (PRINT_OPERAND): Redefine using a function instead of inlined code.
27570         * config/vax/vax.c (TARGET_BUILTIN_SETJMP_FRAME_VALUE): Define.
27571         (split_quadword_operands): Make static and really allow variable
27572         splitting.
27573         (print_operand_address): Update for PIC generation.
27574         (print_operand, vax_builtin_setjmp_frame_value, vax_output_int_subtract,
27575         indexable_address_p, fixup_mathdi_operand,
27576         vax_expand_addsub_di_operands, adjacent_operands_p): New.
27577         (vax_float_literal, legitimate_constant_p,
27578         indirectable_constant_address_p, index_term_p,
27579         reg_plus_index_p): Return bool instead of int.
27580         (vax_rtx_costs): Fix cost for CONST_INT, indent and use HOST_WIDE_INT
27581         where needed.
27582         (vax_output_int_move, vax_output_int_add): Extend to allow PIC
27583         generation.
27584         (vax_output_conditional_branch): Indent.
27585         (legitimate_constant_address_p, indirectable_constant_address_p,
27586         indirectable_address_p, nonindexed_address_p, legitimate_address_p,
27587         vax_mode_dependent_address_p): Return bool instead of int, update for
27588         PIC generation.
27589         * config/vax/vax-protos.h (legitimate_constant_address_p,
27590         legitimate_constant_p, legitimate_address_p,
27591         vax_mode_dependent_address_p): Change declaration to bool.
27592         (legitimate_pic_operand_p, adjacent_operands_p, print_operand,
27593         vax_expand_addsub_di_operands, vax_output_int_subtract,
27594         vax_output_movmemsi): Declare.
27595         (split_quadword_operands, vax_float_literal): Delete declaration.
27596         * config/vax/netbsd-elf.h (CC1_SPEC, CC1PLUS_SPEC) Define.
27597         * config/vax/elf.h (NO_EXTERNAL_INDIRECT_ADDRESS,
27598         VAX_CC1_AND_CC1PLUS_SPEC, ASM_PREFERRED_EH_DATA_FORMAT,
27599         ASM_OUTPUT_DWARF_PCREL): Define.
27600         (ASM_SPEC): Change definition to allow PIC generation.
27601
27602 2009-04-01  Steve Ellcey  <sje@cup.hp.com>
27603
27604         * doc/sourcebuild.texi: Update front-end requirements.
27605
27606 2009-04-01  Jakub Jelinek  <jakub@redhat.com>
27607
27608         PR target/39226
27609         * config/rs6000/rs6000.md (andsi3_internal5_nomc,
27610         anddi3_internal2_nomc, anddi3_internal3_nomc): Removed.
27611         (booldi3_internal3): Use boolean_or_operator instead of
27612         boolean_operator.
27613
27614 2009-04-01  Joseph Myers  <joseph@codesourcery.com>
27615
27616         PR c/39605
27617         * c-decl.c (grokdeclarator): Pedwarn for file-scope array
27618         declarator whose size is not an integer constant expression but
27619         folds to an integer constant, then treat it as a constant
27620         subsequently.
27621
27622 2009-04-01  Richard Guenther  <rguenther@suse.de>
27623
27624         * fold-const.c (fold_plusminus_mult_expr): Do not fold
27625         i * 4 + 2 to (i * 2 + 1) * 2.
27626
27627 2009-04-01  Jakub Jelinek  <jakub@redhat.com>
27628
27629         PR c/37772
27630         * c-parser.c (c_parser_asm_statement): Skip until close paren and
27631         return if c_parser_asm_string_literal returned NULL.
27632
27633 2009-04-01  Nick Clifton  <nickc@redhat.com>
27634
27635         * config/m32c/m32c.h (LIBGCC2_UNITS_PER_WORD): Define if not
27636         already defined.
27637         * config/m32c/t-m32c (LIB2FUNCS_EXTRA): Add m32c-lib2-trapv.c.
27638         * config/m32c/m32c-lib2.c: Remove unused typedefs.  Rename the
27639         other typedefs to avoid conflicts with libgcc2.c.  Define labels
27640         to gain 16-bit bit-manipulation functions from libgcc2.c and then
27641         include it.
27642         * config/m32c/m32c-lib2-trapv.c: New file.  Define labels
27643         to gain 16-bit trapping arithmetic functions from libgcc2.c and
27644         then include it.
27645
27646 2009-04-01  Rafael Avila de Espindola  <espindola@google.com>
27647
27648         * varasm.c (default_function_rodata_section): Declare DOT as
27649         const char*.
27650
27651 2009-04-01  Kai Tietz  <kai.tietz@onevision.com>
27652             Andrey Galkin  <agalkin@hypercom.com>
27653
27654         PR/39492
27655         * config/i386/host-mingw32.c (mingw32_gt_pch_use_address):
27656         Make object_name unique for each process.
27657
27658 2009-04-01  Jakub Jelinek  <jakub@redhat.com>
27659
27660         PR other/39591
27661         * omp-low.c (remove_exit_barrier): Don't optimize if there are any
27662         addressable variables in the parallel that could go out of scope while
27663         running queued tasks.
27664
27665 2009-04-01  Anatoly Sokolov  <aesok@post.ru>
27666
27667         * config/avr/avr.h (avr_case_values_threshold): Remove declaration.
27668         (CASE_VALUES_THRESHOLD): Redefine.
27669         * config/avr/avr.c (avr_override_options): Remove initialization of
27670         avr_case_values_threshold variable.
27671         (avr_case_values_threshold): Remove variable. Add new function.
27672         * config/avr/avr-protos.h (avr_case_values_threshold): Declare.
27673         * config/avr/avr.opt (mno-tablejump): Remove option.
27674         * doc/invoke.texi (AVR Options): Remove -mno-tablejump.
27675
27676 2009-04-01  DJ Delorie  <dj@redhat.com>
27677
27678         * varasm.c (default_function_rodata_section): Don't assume
27679         anything about where the first '.' in the section name is.
27680
27681 2009-04-01  Alan Modra  <amodra@bigpond.net.au>
27682
27683         * config/rs6000/rs6000.c (rs6000_emit_stack_reset): Delete redundant
27684         rs6000_emit_stack_tie.
27685
27686 2009-03-31  Ian Lance Taylor  <iant@google.com>
27687
27688         * tree-eh.c (tree_remove_unreachable_handlers): Compare
27689         gimple_code with GIMPLE_RESX, not RESX.
27690
27691 2009-03-31  Joseph Myers  <joseph@codesourcery.com>
27692
27693         * c-common.c (c_get_ident): New.
27694         (c_common_nodes_and_builtins): Call it for type names that may be NULL.
27695
27696 2009-04-01  Ben Elliston  <bje@au.ibm.com>
27697
27698         * config/rs6000/sysv4.opt (msdata): Improve option description.
27699
27700 2009-03-31  Steve Ellcey  <sje@cup.hp.com>
27701
27702         * config/ia64/ia64.md (divsf3_internal_lat): Remove.
27703         (divdf3_internal_lat): Remove.
27704         (divxf3_internal_lat): Remove.
27705         (divxf3_internal_thr): Remove.
27706         (divxf): Use divxf3_internal.
27707         * config/ia64/div.md (divsf3_internal_lat): New.
27708         (divdf3_internal_lat): New.
27709         (divxf3_internal): New.
27710
27711 2009-03-31  Joseph Myers  <joseph@codesourcery.com>
27712
27713         PR c/448
27714         * Makefile.in (USE_GCC_STDINT): Define.
27715         (stmp-int-hdrs): Install stdint.h if applicable.
27716         * c-common.c (CHAR16_TYPE): Define in terms of UINT_LEAST16_TYPE
27717         if known.
27718         (CHAR32_TYPE): Define in terms of UINT_LEAST32_TYPE if known.
27719         (SIG_ATOMIC_TYPE, INT8_TYPE, INT16_TYPE, INT32_TYPE, INT64_TYPE,
27720         UINT8_TYPE, UINT16_TYPE, UINT32_TYPE, UINT64_TYPE,
27721         INT_LEAST8_TYPE, INT_LEAST16_TYPE, INT_LEAST32_TYPE,
27722         INT_LEAST64_TYPE, UINT_LEAST8_TYPE, UINT_LEAST16_TYPE,
27723         UINT_LEAST32_TYPE, UINT_LEAST64_TYPE, INT_FAST8_TYPE,
27724         INT_FAST16_TYPE, INT_FAST32_TYPE, INT_FAST64_TYPE,
27725         UINT_FAST8_TYPE, UINT_FAST16_TYPE, UINT_FAST32_TYPE,
27726         UINT_FAST64_TYPE, INTPTR_TYPE, UINTPTR_TYPE): Define.
27727         (c_common_nodes_and_builtins): Initialize
27728         underlying_wchar_type_node.  Do not initialize
27729         signed_wchar_type_node or unsigned_wchar_type_node.  Initialize
27730         nodes for new types.
27731         (c_stddef_cpp_builtins): Define macros for new types.
27732         * c-common.h (CTI_SIGNED_WCHAR_TYPE, CTI_UNSIGNED_WCHAR_TYPE):
27733         Remove.
27734         (CTI_UNDERLYING_WCHAR_TYPE, CTI_SIG_ATOMIC_TYPE, CTI_INT8_TYPE,
27735         CTI_INT16_TYPE, CTI_INT32_TYPE, CTI_INT64_TYPE, CTI_UINT8_TYPE,
27736         CTI_UINT16_TYPE, CTI_UINT32_TYPE, CTI_UINT64_TYPE,
27737         CTI_INT_LEAST8_TYPE, CTI_INT_LEAST16_TYPE, CTI_INT_LEAST32_TYPE,
27738         CTI_INT_LEAST64_TYPE, CTI_UINT_LEAST8_TYPE, CTI_UINT_LEAST16_TYPE,
27739         CTI_UINT_LEAST32_TYPE, CTI_UINT_LEAST64_TYPE, CTI_INT_FAST8_TYPE,
27740         CTI_INT_FAST16_TYPE, CTI_INT_FAST32_TYPE, CTI_INT_FAST64_TYPE,
27741         CTI_UINT_FAST8_TYPE, CTI_UINT_FAST16_TYPE, CTI_UINT_FAST32_TYPE,
27742         CTI_UINT_FAST64_TYPE, CTI_INTPTR_TYPE, CTI_UINTPTR_TYPE): Define.
27743         (signed_wchar_type_node, unsigned_wchar_type_node): Remove.
27744         (underlying_wchar_type_node, sig_atomic_type_node, int8_type_node,
27745         int16_type_node, int32_type_node, int64_type_node,
27746         uint8_type_node, uint16_type_node, c_uint32_type_node,
27747         c_uint64_type_node, int_least8_type_node, int_least16_type_node,
27748         int_least32_type_node, int_least64_type_node,
27749         uint_least8_type_node, uint_least16_type_node,
27750         uint_least32_type_node, uint_least64_type_node,
27751         int_fast8_type_node, int_fast16_type_node, int_fast32_type_node,
27752         int_fast64_type_node, uint_fast8_type_node, uint_fast16_type_node,
27753         uint_fast32_type_node, uint_fast64_type_node, intptr_type_node,
27754         uintptr_type_node): Define.
27755         * c-cppbuiltin.c (builtin_define_constants,
27756         builtin_define_type_minmax): New.
27757         (builtin_define_stdint_macros): Define more macros.
27758         (c_cpp_builtins): Define more limit macros.
27759         (type_suffix): New.
27760         (builtin_define_type_max): Define in terms of
27761         builtin_define_type_minmax.  Remove is_long parameter.  All
27762         callers changed.
27763         * config.gcc (use_gcc_stdint): Define.
27764         (tm_file): Add glibc-stdint.h for targets using glibc or uClibc.
27765         Add newlib-stdint.h for generic targets.
27766         * config/glibc-stdint.h, config/newlib-stdint.h,
27767         ginclude/stdint-gcc.h, ginclude/stdint-wrap.h: New.
27768         * config/m32c/m32c.h (UINTPTR_TYPE): Define.
27769         * config/score/score.h (UINTPTR_TYPE): Define.
27770         * config/sol2.h (SIG_ATOMIC_TYPE, INT8_TYPE, INT16_TYPE,
27771         INT32_TYPE, INT64_TYPE, UINT8_TYPE, UINT16_TYPE, UINT32_TYPE,
27772         UINT64_TYPE, INT_LEAST8_TYPE, INT_LEAST16_TYPE, INT_LEAST32_TYPE,
27773         INT_LEAST64_TYPE, UINT_LEAST8_TYPE, UINT_LEAST16_TYPE,
27774         UINT_LEAST32_TYPE, UINT_LEAST64_TYPE, INT_FAST8_TYPE,
27775         INT_FAST16_TYPE, INT_FAST32_TYPE, INT_FAST64_TYPE,
27776         UINT_FAST8_TYPE, UINT_FAST16_TYPE, UINT_FAST32_TYPE,
27777         UINT_FAST64_TYPE, INTPTR_TYPE, UINTPTR_TYPE): Define.
27778         * config/spu/spu.h (STDINT_LONG32): Define.
27779         * configure.ac (use_gcc_stdint): Substitute.
27780         * configure: Regenerate.
27781         * doc/cpp.texi (__SIG_ATOMIC_TYPE__, __INT8_TYPE__,
27782         __INT16_TYPE__, __INT32_TYPE__, __INT64_TYPE__, __UINT8_TYPE__,
27783         __UINT16_TYPE__, __UINT32_TYPE__, __UINT64_TYPE__,
27784         __INT_LEAST8_TYPE__, __INT_LEAST16_TYPE__, __INT_LEAST32_TYPE__,
27785         __INT_LEAST64_TYPE__, __UINT_LEAST8_TYPE__, __UINT_LEAST16_TYPE__,
27786         __UINT_LEAST32_TYPE_, __UINT_LEAST64_TYPE__, __INT_FAST8_TYPE__,
27787         __INT_FAST16_TYPE__, __INT_FAST32_TYPE__, __INT_FAST64_TYPE__,
27788         __UINT_FAST8_TYPE__, __UINT_FAST16_TYPE__, __UINT_FAST32_TYPE__,
27789         __UINT_FAST64_TYPE__, __INTPTR_TYPE__, __UINTPTR_TYPE__,
27790         __WINT_MAX__, __SIZE_MAX__, __PTRDIFF_MAX__, __UINTMAX_MAX__,
27791         __SIG_ATOMIC_MAX__, __INT8_MAX__, __INT16_MAX__, __INT32_MAX__,
27792         __INT64_MAX__, __UINT8_MAX__, __UINT16_MAX__, __UINT32_MAX__,
27793         __UINT64_MAX__, __INT_LEAST8_MAX__, __INT_LEAST16_MAX__,
27794         __INT_LEAST32_MAX__, __INT_LEAST64_MAX__, __UINT_LEAST8_MAX__,
27795         __UINT_LEAST16_MAX__, __UINT_LEAST32_MAX__, __UINT_LEAST64_MAX__,
27796         __INT_FAST8_MAX__, __INT_FAST16_MAX__, __INT_FAST32_MAX__,
27797         __INT_FAST64_MAX__, __UINT_FAST8_MAX__, __UINT_FAST16_MAX__,
27798         __UINT_FAST32_MAX__, __UINT_FAST64_MAX__, __INTPTR_MAX__,
27799         __UINTPTR_MAX__, __WCHAR_MIN__, __WINT_MIN__, __SIG_ATOMIC_MIN__,
27800         __INT8_C, __INT16_C, __INT32_C, __INT64_C, __UINT8_C, __UINT16_C,
27801         __UINT32_C, __UINT64_C, __INTMAX_C, __UINTMAX_C): Document.
27802         * doc/tm.texi (SIG_ATOMIC_TYPE, INT8_TYPE, INT16_TYPE, INT32_TYPE,
27803         INT64_TYPE, UINT8_TYPE, UINT16_TYPE, UINT32_TYPE, UINT64_TYPE,
27804         INT_LEAST8_TYPE, INT_LEAST16_TYPE, INT_LEAST32_TYPE,
27805         INT_LEAST64_TYPE, UINT_LEAST8_TYPE, UINT_LEAST16_TYPE,
27806         UINT_LEAST32_TYPE, UINT_LEAST64_TYPE, INT_FAST8_TYPE,
27807         INT_FAST16_TYPE, INT_FAST32_TYPE, INT_FAST64_TYPE,
27808         UINT_FAST8_TYPE, UINT_FAST16_TYPE, UINT_FAST32_TYPE,
27809         UINT_FAST64_TYPE, INTPTR_TYPE, UINTPTR_TYPE): Document.
27810
27811 2009-03-31  Bernd Schmidt  <bernd.schmidt@analog.com>
27812
27813         * loop-iv.c (suitable_set_for_replacement): Renamed from
27814         simplify_using_assignment; changed to return bool and to accept new
27815         args DEST and SRC.  Return true iff we find a source/destination pair
27816         that can be used to make a replacement, and fill SRC and DEST if so.
27817         Remove arg ALTERED.  Don't deal with altered regs here.  All callers
27818         changed.
27819         (simplify_using_initial_values): Deal with altered regs here and track
27820         more precisely the effect they have on the validity of our expression.
27821
27822         * loop-iv.c (simplify_using_condition): A condition of the form
27823         (EQ REG CONST) can be used to simply make a substitution.
27824         (simplify_using_initial_values): Keep track of conditions we have seen
27825         and keep using them to simplify new expressions, while applying the
27826         same substitutions to them as to the expression.
27827
27828         * simplify-rtx.c (simplify_relational_operation_1): Simplify
27829         (LTU (PLUS a C) C) or (LTU (PLUS a C) a) to (GEU a -C); likewise with
27830         GEU/LTU reversed.
27831
27832         * loop-iv.c (determine_max_iter): New arg OLD_NITER.  All callers
27833         changed.  Use this when trying to improve the upper bound.
27834         Generate the comparison by using simplify_gen_relational.
27835
27836         * loop-iv.c (simple_rhs_p): Allow more kinds of expressions.
27837
27838         * loop-iv.c (replace_single_def_regs, replace_in_expr): New static
27839         functions.
27840         (simplify_using_assignment, simplify_using_initial_values): Call
27841         replace_in_expr to make replacements.  Call replace_single_def_regs
27842         once on the initial version of the expression.
27843
27844 2009-03-31  Ramana Radhakrishnan  <ramana.radhakrishnan@arm.com>
27845
27846         PR target/27237
27847         * doc/invoke.texi (ARM Options): Update documentation for -mthumb.
27848
27849 2009-03-31  Richard Guenther  <rguenther@suse.de>
27850
27851         PR middle-end/31029
27852         * fold-const.c (fold_binary): Fold X +- Y CMP X to Y CMP 0 for
27853         equality comparisons.  Fold C - X CMP X if C % 2 == 1.
27854
27855 2009-03-31  Richard Guenther  <rguenther@suse.de>
27856
27857         * tree.h (div_if_zero_remainder): Declare.
27858         * fold-const.c (div_if_zero_remainder): Export.
27859         * tree-ssa-forwprop.c
27860         (forward_propagate_addr_into_variable_array_index): Handle
27861         constant array index addition outside of the variable index.
27862
27863 2009-03-31  Joseph Myers  <joseph@codesourcery.com>
27864
27865         PR target/39592
27866         * config/i386/i386.md (*floatunssi<mode>2_1, two unnamed
27867         define_splits, floatunssi<mode>2): Require x87 conversions from
27868         DImode to be permitted.
27869
27870 2009-03-31  Joseph Myers  <joseph@codesourcery.com>
27871
27872         PR preprocessor/15638
27873         * c-common.c (c_cpp_error): Handle CPP_DL_FATAL.
27874
27875 2009-03-31  Richard Guenther  <rguenther@suse.de>
27876
27877         PR middle-end/23401
27878         PR middle-end/27810
27879         * tree.h (DECL_GIMPLE_FORMAL_TEMP_P): Remove.
27880         (struct tree_decl_with_vis): Remove gimple_formal_temp member.
27881         * tree-eh.c (lower_eh_constructs_2): Move LHS assignment to
27882         a separate statement.
27883         * gimplify.c (pop_gimplify_context): Remove formal temp handling.
27884         (lookup_tmp_var): Likewise.
27885         (is_gimple_formal_tmp_or_call_rhs): Remove.
27886         (is_gimple_reg_or_call_rhs): Rename to ...
27887         (is_gimple_reg_rhs_or_call): ... this.
27888         (is_gimple_mem_or_call_rhs): Rename to ...
27889         (is_gimple_mem_rhs_or_call): ... this.
27890         (internal_get_tmp_var): Use is_gimple_reg_rhs_or_call.  Set
27891         DECL_GIMPLE_REG_P only if is_formal is true.
27892         (gimplify_compound_lval): Use is_gimple_reg.  Remove workaround
27893         for non-proper post-modify expression gimplification.
27894         (gimplify_self_mod_expr): For post-modify expressions gimplify
27895         the lvalue to a minimal lvalue.
27896         (rhs_predicate_for): Remove formal temp case.
27897         (gimplify_modify_expr_rhs): Likewise.
27898         (gimplify_addr_expr): Use is_gimple_reg.
27899         (gimplify_expr): Remove formal temp cases.
27900         (gimple_regimplify_operands): Likewise.
27901         * tree-ssa-pre.c (get_or_alloc_expr_for): Treat EXC_PTR_EXPR
27902         and FILTER_EXPR like constants.
27903         * gimple.c (walk_gimple_op): Fix val_only initialization, use
27904         is_gimple_reg.
27905         (is_gimple_formal_tmp_rhs): Remove.
27906         (is_gimple_reg_rhs): Remove special casing.
27907         (is_gimple_mem_rhs): Fix.
27908         (is_gimple_reg): Move DECL_GIMPLE_REG_P handling earlier.
27909         (is_gimple_formal_tmp_var): Remove.
27910         (is_gimple_formal_tmp_reg): Likewise.
27911         (is_gimple_min_lval): Allow invariant component ref parts.
27912         * gimple.h (is_gimple_formal_tmp_rhs, is_gimple_formal_tmp_var,
27913         is_gimple_formal_tmp_reg): Remove declarations.
27914         * tree-cfg.c (verify_expr): Verify that variables with address
27915         taken do not have DECL_GIMPLE_REG_P set.
27916         * tree-mudflap.c (mf_build_check_statement_for): Use
27917         force_gimple_operand instead of gimplify_expr.
27918
27919 2009-03-31  Ayal Zaks  <zaks@il.ibm.com>
27920
27921         * modulo-sched.c (sms_schedule_by_order): Pass the actual
27922         schedulable rows to compute_split_row.
27923
27924 2009-03-31  Ben Elliston  <bje@au.ibm.com>
27925
27926         PR target/31635
27927         * config/rs6000/rs6000.c (rs6000_handle_option): Handle
27928         OPT_mvrsave.
27929
27930 2009-03-31  Alan Modra  <amodra@bigpond.net.au>
27931
27932         * doc/invoke.texi (RS/6000 and PowerPC Options):Document mtls-markers.
27933         * configure.ac (HAVE_AS_TLS_MARKERS): New gas feature check.
27934         * configure: Regenerate.
27935         * config.in: Regenerate.
27936         * config/rs6000/rs6000.opt (mtls-markers): Add.
27937         * config/rs6000/rs6000.h (TARGET_TLS_MARKERS): Define.
27938         * config/rs6000/rs6000.md (tls_gd_aix, tls_gd_sysv): Add splitter.
27939         (tls_ld_aix, tls_ld_sysv): Likewise.
27940         (tls_gd, tls_gd_call_aix, tls_gd_call_sysv): New insns.
27941         (tls_ld, tls_ld_call_aix, tls_ld_call_sysv): Likewise.
27942
27943 2009-03-31  Alan Modra  <amodra@bigpond.net.au>
27944
27945         * config/spu/spu.c (spu_expand_prologue): Delete redundant code.
27946
27947 2009-03-30  Jan Hubicka  <jh@suse.cz>
27948
27949         * tree-eh.c (make_eh_edges): Set probability 100% to first edge
27950         out of RESX.
27951         (tree_remove_unreachable_handlers): Cleanup EH predecestor
27952         detection and label handling.
27953
27954 2009-03-30  Vladimir Makarov  <vmakarov@redhat.com>
27955
27956         * ira-int.h (ira_allocno): Rename left_conflicts_num to
27957         left_conflicts_size.
27958         (ALLOCNO_LEFT_CONFLICTS_NUM): Rename to
27959         ALLOCNO_LEFT_CONFLICTS_SIZE.
27960
27961         * ira-color.c (allocno_spill_priority, push_allocno_to_stack,
27962         remove_allocno_from_bucket_and_push,
27963         allocno_spill_priority_compare, push_allocnos_to_stack,
27964         setup_allocno_available_regs_num): Use ALLOCNO_LEFT_CONFLICTS_SIZE
27965         instead of ALLOCNO_LEFT_CONFLICTS_NUM.
27966         (setup_allocno_left_conflicts_num): Ditto.  Rename to
27967         setup_allocno_left_conflicts_size.
27968         (put_allocno_into_bucket): Use ALLOCNO_LEFT_CONFLICTS_SIZE
27969         instead of ALLOCNO_LEFT_CONFLICTS_NUM and
27970         setup_allocno_left_conflicts_size instead of
27971         setup_allocno_left_conflicts_num.
27972
27973         * ira-build.c (ira_create_allocno): Use
27974         ALLOCNO_LEFT_CONFLICTS_SIZE instead of
27975         ALLOCNO_LEFT_CONFLICTS_NUM.
27976
27977 2009-03-30  Vladimir Makarov  <vmakarov@redhat.com>
27978
27979         * reload.c (push_reload, find_dummy_reload): Use df_get_live_out
27980         instead of DF_LR_OUT.
27981
27982         * ira-lives.c (process_bb_node_lives): Ditto.
27983
27984         * ira-color.c (ira_loop_edge_freq): Use df_get_live_{out,in}
27985         instead of DF_LR_{OUT,IN}.
27986
27987         * ira-emit.c (generate_edge_moves, add_ranges_and_copies): Ditto.
27988
27989         * ira-build.c (create_bb_allocnos, create_loop_allocnos): Ditto.
27990
27991 2009-03-30  Jan Hubicka  <jh@suse.cz>
27992
27993         * except.c (label_to_region_map): Fix thinko.
27994
27995 2009-03-30  Steve Ellcey  <sje@cup.hp.com>
27996
27997         PR middle-end/38237
27998         * tree.h (tree_find_value): New declaration.
27999         * tree.c (tree_find_value): New function.
28000         * varasm.c (assemble_external): Avoid duplicate entries on lists.
28001
28002 2009-03-30  Jakub Jelinek  <jakub@redhat.com>
28003
28004         PR debug/39563
28005         * c-decl.c (struct c_binding): Add locus field.
28006         (bind): Add locus argument, set locus field from it.
28007         (pop_scope): For b->nested VAR_DECL or FUNCTION_DECL,
28008         add a DECL_EXTERNAL copy of b->decl to current BLOCK_VARS.
28009         (push_file_scope, pushtag, pushdecl, pushdecl_top_level,
28010         implicitly_declare, undeclared_variable, lookup_label,
28011         declare_label, c_make_fname_decl, c_builtin_function,
28012         c_builtin_function_ext_scope, store_parm_decls_newstyle): Adjust
28013         bind callers.
28014
28015 2009-03-30  H.J. Lu  <hongjiu.lu@intel.com>
28016
28017         PR target/38781
28018         * config/i386/i386.c (classify_argument): Check total size of
28019         structure.
28020
28021 2009-03-30  Martin Jambor  <mjambor@suse.cz>
28022
28023         * ipa-prop.h (jump_func_type): Rename IPA_UNKNOWN, IPA_CONST,
28024         IPA_CONST_MEMBER_PTR, and IPA_PASS_THROUGH to IPA_JF_UNKNOWN,
28025         IPA_JF_CONST, IPA_JF_CONST_MEMBER_PTR, and IPA_JF_PASS_THROUGH
28026         respectively.
28027
28028         * tree-dfa.c (get_ref_base_and_extent): Return -1 maxsize if
28029         seen_variable_array_ref while also traversing a union.
28030
28031         * tree-inline.c (optimize_inline_calls): Do not call
28032         cgraph_node_remove_callees.
28033         * cgraphbuild.c (remove_cgraph_callee_edges): New function.
28034         (pass_remove_cgraph_callee_edges): New variable.
28035         * passes.c (init_optimization_passes): Add
28036         pass_remove_cgraph_callee_edges after early inlining and before all
28037         late intraprocedural passes.
28038
28039         * omp-low.c (expand_omp_taskreg): Always set current_function_decl.
28040
28041 2009-03-30  Paolo Bonzini  <bonzini@gnu.org>
28042
28043         * config/sparc/sparc.md (*nand<V64mode>_vis, *nand<V32mode>_vis):
28044         Fix typos in names.
28045
28046 2009-03-30  Paolo Bonzini  <bonzini@gnu.org>
28047
28048         * combine.c (simplify_comparison): Use have_insn_for.
28049         * dojump.c (do_jump): Likewise.
28050
28051 2009-03-30  Paolo Bonzini  <bonzini@gnu.org>
28052
28053         * config/sparc/sparc.c (sparc_compare_emitted): Remove.
28054         (gen_compare_reg, emit_v9_brxx_insn): Handle MODE_CC
28055         sparc_compare_op0 like sparc_compare_emitted used to be handled.
28056         (sparc_expand_compare_and_swap_12): Set sparc_compare_op0
28057         instead of sparc_compare_emitted.
28058         * config/sparc/sparc.h (sparc_compare_emitted): Remove.
28059         * config/sparc/sparc.md (stack_protect_test): Set sparc_compare_op0
28060         instead of sparc_compare_emitted.
28061
28062 2009-03-30  Paolo Bonzini  <bonzini@gnu.org>
28063
28064         * bb-reorder.c (partition_hot_cold_basic_blocks): Do not
28065         enter/exit cfglayout mode.
28066         (pass_partition_block): Require it.
28067         * combine.c (find_single_use, reg_dead_at_p): Use CFG.
28068         (combine_instructions): Track basic blocks instead of labels.
28069         (update_cfg_for_uncondjump): New.
28070         (try_combine): Use it.  Update jumps after rescanning.
28071         (pass_combine): Require PROP_cfglayout.
28072         * passes.c (pass_outof_cfg_layout_mode): Move after regmove.
28073
28074 2009-03-30  Paolo Bonzini  <bonzini@gnu.org>
28075
28076         * cfglayout.c (pass_into_cfg_layout_mode, pass_outof_cfg_layout_mode):
28077         Provide/destroy PROP_cfglayout respectively.
28078         * gcse.c (pass_jump_bypass, pass_gcse): Require it.
28079         * tree-pass.h (PROP_cfglayout): New.
28080
28081 2009-03-30  Paolo Bonzini  <bonzini@gnu.org>
28082
28083         * fold-const.c (const_binop, fold_convert_const_real_from_fixed,
28084         fold_convert_const_fixed_from_fixed,
28085         fold_convert_const_fixed_from_int,
28086         fold_convert_const_fixed_from_real, fold_negate_const): Do not
28087         set TREE_CONSTANT_OVERFLOW.
28088         * tree.def: Remove mention of TREE_CONSTANT_OVERFLOW.
28089         * tree.h (TREE_CONSTANT_OVERFLOW): Delete.
28090
28091 2009-03-30  Ira Rosen  <irar@il.ibm.com>
28092
28093         * tree-vect-loop-manip.c: New file.
28094         * tree-vectorizer.c: Update documentation and included files.
28095         (vect_loop_location): Make extern.
28096         (rename_use_op): Move to tree-vect-loop-manip.c
28097         (rename_variables_in_bb, rename_variables_in_loop,
28098         slpeel_update_phis_for_duplicate_loop,
28099         slpeel_update_phi_nodes_for_guard1,
28100         slpeel_update_phi_nodes_for_guard2, slpeel_make_loop_iterate_ntimes,
28101         slpeel_tree_duplicate_loop_to_edge_cfg, slpeel_add_loop_guard,
28102         slpeel_can_duplicate_loop_p, slpeel_verify_cfg_after_peeling,
28103         set_prologue_iterations, slpeel_tree_peel_loop_to_edge,
28104         find_loop_location): Likewise.
28105         (new_stmt_vec_info): Move to tree-vect-stmts.c.
28106         (init_stmt_vec_info_vec, free_stmt_vec_info_vec, free_stmt_vec_info,
28107         get_vectype_for_scalar_type, vect_is_simple_use,
28108         supportable_widening_operation, supportable_narrowing_operation):
28109         Likewise.
28110         (bb_in_loop_p): Move to tree-vect-loop.c.
28111         (new_loop_vec_info, destroy_loop_vec_info,
28112         reduction_code_for_scalar_code, report_vect_op,
28113         vect_is_simple_reduction, vect_is_simple_iv_evolution): Likewise.
28114         (vect_can_force_dr_alignment_p): Move to tree-vect-data-refs.c.
28115         (vect_supportable_dr_alignment): Likewise.
28116         * tree-vectorizer.h (tree-data-ref.h): Include.
28117         (vect_loop_location): Declare.
28118         Reorganize function declarations according to the new file structure.
28119         * tree-vect-loop.c: New file.
28120         * tree-vect-analyze.c: Remove. Move functions to tree-vect-data-refs.c,
28121         tree-vect-stmts.c, tree-vect-slp.c, tree-vect-loop.c.
28122         * tree-vect-data-refs.c: New file.
28123         * tree-vect-patterns.c (timevar.h): Don't include.
28124         * tree-vect-stmts.c: New file.
28125         * tree-vect-transform.c: Remove. Move functions to tree-vect-stmts.c,
28126         tree-vect-slp.c, tree-vect-loop.c.
28127         * Makefile.in (OBJS-common): Remove tree-vect-analyze.o and
28128         tree-vect-transform.o. Add tree-vect-data-refs.o, tree-vect-stmts.o,
28129         tree-vect-loop.o, tree-vect-loop-manip.o, tree-vect-slp.o.
28130         (tree-vect-analyze.o): Remove.
28131         (tree-vect-transform.o): Likewise.
28132         (tree-vect-data-refs.o): Add rule.
28133         (tree-vect-stmts.o, tree-vect-loop.o, tree-vect-loop-manip.o,
28134         tree-vect-slp.o): Likewise.
28135         (tree-vect-patterns.o): Remove redundant dependencies.
28136         (tree-vectorizer.o): Likewise.
28137         * tree-vect-slp.c: New file.
28138
28139 2009-03-30  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
28140
28141         * optc-gen.awk: Warn if an option flag has multiple different
28142         help strings.
28143
28144 2009-03-30  Sebastian Pop  <sebastian.pop@amd.com>
28145
28146         * doc/invoke.texi (-floop-interchange, -floop-strip-mine,
28147         -floop-block): Document dependences on PPL, CLooG and Graphite.
28148
28149 2009-03-30  Joseph Myers  <joseph@codesourcery.com>
28150
28151         PR rtl-optimization/323
28152         * c-common.c (c_fully_fold, convert_and_check,
28153         c_common_truthvalue_conversion): Handle EXCESS_PRECISION_EXPR.
28154         (c_fully_fold_internal): Disallow EXCESS_PRECISION_EXPR.
28155         * c-common.def (EXCESS_PRECISION_EXPR): New.
28156         * c-cppbuiltin.c (builtin_define_float_constants): Define
28157         constants with enough digits for long double.
28158         * c-lex.c (interpret_float): Interpret constant with excess
28159         precision where appropriate.
28160         * c-opts.c (c_common_post_options): Set
28161         flag_excess_precision_cmdline.  Give an error for
28162         -fexcess-precision=standard for C++ for processors where the
28163         option is significant.
28164         * c-parser.c (c_parser_conditional_expression): Handle excess
28165         precision in condition.
28166         * c-typeck.c (convert_arguments): Handle arguments with excess
28167         precision.
28168         (build_unary_op): Move excess precision outside operation.
28169         (build_conditional_expr): Likewise.
28170         (build_compound_expr): Likewise.
28171         (build_c_cast): Do cast on operand of EXCESS_PRECISION_EXPR.
28172         (build_modify_expr): Handle excess precision in RHS.
28173         (convert_for_assignment): Handle excess precision in converted
28174         value.
28175         (digest_init, output_init_element, process_init_element): Handle
28176         excess precision in initializer.
28177         (c_finish_return): Handle excess precision in return value.
28178         (build_binary_op): Handle excess precision in operands and add
28179         excess precision as needed for operation.
28180         * common.opt (-fexcess-precision=): New option.
28181         * config/i386/i386.h (X87_ENABLE_ARITH, X87_ENABLE_FLOAT): New.
28182         * config/i386/i386.md (float<SSEMODEI24:mode><X87MODEF:mode>2):
28183         For standard excess precision, output explicit conversion to and
28184         truncation from XFmode.
28185         (*float<SSEMODEI24:mode><X87MODEF:mode>2_1,
28186         *float<SSEMODEI24:mode><X87MODEF:mode>2_i387_with_temp,
28187         *float<SSEMODEI24:mode><X87MODEF:mode>2_i387, two unnamed
28188         define_splits, floatdi<X87MODEF:mode>2_i387_with_xmm, two unnamed
28189         define_splits, *floatunssi<mode>2_1, two unnamed define_splits,
28190         floatunssi<mode>2, add<mode>3, sub<mode>3, mul<mode>3, divdf3,
28191         divsf3, *fop_<mode>_comm_i387, *fop_<mode>_1_i387,
28192         *fop_<MODEF:mode>_2_i387, *fop_<MODEF:mode>_3_i387,
28193         *fop_df_4_i387, *fop_df_5_i387, *fop_df_6_i387, two unnamed
28194         define_splits, sqrt<mode>2): Disable where appropriate for
28195         standard excess precision.
28196         * convert.c (convert_to_real): Do not shorten arithmetic to type
28197         for which excess precision would be used.
28198         * defaults.h (TARGET_FLT_EVAL_METHOD_NON_DEFAULT): Define.
28199         * doc/invoke.texi (-fexcess-precision=): Document option.
28200         (-mfpmath=): Correct index entry.
28201         * flags.h (enum excess_precision, flag_excess_precision_cmdline,
28202         flag_excess_precision): New.
28203         * langhooks.c (lhd_post_options): Set
28204         flag_excess_precision_cmdline.
28205         * opts.c (common_handle_option): Handle -fexcess-precision=.
28206         * toplev.c (flag_excess_precision_cmdline, flag_excess_precision,
28207         init_excess_precision): New.
28208         (lang_dependent_init_target): Call init_excess_precision.
28209         * tree.c (excess_precision_type): New.
28210         * tree.h (excess_precision_type): Declare.
28211
28212 2009-03-30  Joseph Myers  <joseph@codesourcery.com>
28213
28214         PR c/35235
28215         * c-typeck.c (build_component_ref): Do not copy qualifiers from
28216         non-lvalue to component.
28217
28218 2009-03-29  Joseph Myers  <joseph@codesourcery.com>
28219
28220         PR preprocessor/34695
28221         * Makefile.in (c-opts.o): Depend on c-tree.h.
28222         * c-common.c: Move down include of diagnostic.h.
28223         (done_lexing, c_cpp_error): New.
28224         * c-common.h (done_lexing): Declare.
28225         * c-decl.c (c_write_global_declarations): Don't check cpp_errors
28226         (parse_in).
28227         * c-opts.c: Include c-tree.h.
28228         (c_common_init_options): Set preprocessor error callback.
28229         (c_common_handle_option): Do not set preprocessor
28230         inhibit_warnings, warnings_are_errors, warn_system_headers,
28231         pedantic_errors or inhibit_warnings flags.
28232         (c_common_post_options): Do not check cpp_errors (parse_in).
28233         (c_common_finish): Do not output dependencies if there were
28234         errors.  Do not check return value of cpp_finish.
28235         * c-ppoutput.c (pp_file_change): Set input_location.
28236         * c-tree.h (c_cpp_error): Declare.
28237         * diagnostic.c (diagnostic_set_info_translated): Also initialize
28238         override_column.
28239         (diagnostic_build_prefix): Check override_column.
28240         * diagnostic.h (diagnostic_info): Add override_column field.
28241         (diagnostic_override_column): Define.
28242
28243 2009-03-28  Paolo Bonzini  <bonzini@gnu.org>
28244
28245         * c-common.c (c_expand_expr, c_staticp): Remove.
28246         * c-common.def (COMPOUND_LITERAL_EXPR): Delete.
28247         * c-common.h (emit_local_var, c_staticp, COMPOUND_LITERAL_EXPR_DECL,
28248         COMPOUND_LITERAL_EXPR_DECL_EXPR): Remove.
28249         * c-gimplify.c (gimplify_compound_literal_expr,
28250         optimize_compound_literals_in_ctor): Remove.
28251         (c_gimplify_expr): Remove COMPOUND_LITERAL_EXPR handling.
28252         * c-objc-common.h (LANG_HOOKS_STATICP): Remove.
28253         * c-semantics.c (emit_local_var): Remove.
28254
28255         * langhooks-def.h (lhd_expand_expr): Remove.
28256         * langhooks.c (lhd_expand_expr): Remove.
28257         * langhooks.h (LANG_HOOKS_DEF): Remove LANG_HOOKS_EXPAND_EXPR.
28258
28259         * expr.c (expand_expr_real_1): Move COMPOUND_LITERAL_EXPR
28260         handling from c-semantics.c; don't call into langhook.
28261         (expand_expr_addr_expr_1): Check that we don't get non-GENERIC trees.
28262         * gimplify.c (gimplify_compound_literal_expr,
28263         optimize_compound_literals_in_ctor): Move from c-gimplify.c.
28264         (gimplify_init_constructor): Call optimize_compound_literals_in_ctor.
28265         (gimplify_modify_expr_rhs, gimplify_expr): Handle COMPOUND_LITERAL_EXPR
28266         as was done in c-gimplify.c.
28267         * tree.c (staticp): Move COMPOUND_LITERAL_EXPR handling from c_staticp.
28268         * tree.h (COMPOUND_LITERAL_EXPR_DECL, COMPOUND_LITERAL_EXPR_DECL_EXPR):
28269         Move from c-common.h.
28270         * tree.def (COMPOUND_LITERAL_EXPR): Move from c-common.def.
28271
28272         * tree.c (staticp): Do not call langhook.
28273         * langhooks.c (lhd_staticp): Delete.
28274         * langhooks-def.h (lhd_staticp): Delete prototype.
28275         (LANG_HOOKS_STATICP): Delete.
28276         (LANG_HOOKS_INITIALIZER): Delete LANG_HOOKS_STATICP.
28277
28278         * doc/c-tree.texi (Expression nodes): Refer to DECL_EXPRs
28279         instead of DECL_STMTs.
28280
28281 2009-03-29  Joseph Myers  <joseph@codesourcery.com>
28282
28283         PR c/456
28284         PR c/5675
28285         PR c/19976
28286         PR c/29116
28287         PR c/31871
28288         PR c/35198
28289         * builtins.c (fold_builtin_sincos): Build COMPOUND_EXPR in
28290         void_type_node.
28291         (fold_call_expr): Return a NOP_EXPR from folding rather than the
28292         contained expression.
28293         * c-common.c (c_fully_fold, c_fully_fold_internal, c_save_expr): New.
28294         (c_common_truthvalue_conversion): Use c_save_expr.  Do not fold
28295         conditional expressions for C.
28296         (decl_constant_value_for_optimization): Move from
28297         decl_constant_value_for_broken_optimization in c-typeck.c.  Check
28298         whether optimizing and that the expression is a VAR_DECL not of
28299         array type instead of doing such checks in the caller.  Do not
28300         check pedantic.  Call gcc_unreachable for C++.
28301         * c-common.def (C_MAYBE_CONST_EXPR): New.
28302         * c-common.h (c_fully_fold, c_save_expr,
28303         decl_constant_value_for_optimization): New prototypes.
28304         (C_MAYBE_CONST_EXPR_PRE, C_MAYBE_CONST_EXPR_EXPR,
28305         C_MAYBE_CONST_EXPR_INT_OPERANDS, C_MAYBE_CONST_EXPR_NON_CONST,
28306         EXPR_INT_CONST_OPERANDS): Define.
28307         * c-convert.c (convert): Strip nops from expression.
28308         * c-decl.c (groktypename): Take extra parameters expr and
28309         expr_const_operands.  Update call to grokdeclarator.
28310         (start_decl): Update call to grokdeclarator.  Add statement for
28311         expressions used in type of decl.
28312         (grokparm): Update call to grokdeclarator.
28313         (push_parm_decl): Update call to grokdeclarator.
28314         (build_compound_literal): Add parameter non_const and build a
28315         C_MAYBE_COSNT_EXPR if applicable.
28316         (grokdeclarator): Take extra parameters expr and
28317         expr_const_operands.  Track expressions used in declaration
28318         specifiers and declarators.  Fold array sizes and track whether
28319         they are constant expressions and whether they are integer
28320         constant expressions.
28321         (parser_xref_tag): Set expr and expr_const_operands fields in
28322         return value.
28323         (grokfield): Update call to grokdeclarator.
28324         (start_function): Update call to grokdeclarator.
28325         (build_null_declspecs): Set expr and expr_const_operands fields in
28326         return value.
28327         (declspecs_add_type): Handle expressions in typeof specifiers.
28328         * c-parser.c (c_parser_declspecs): Set expr and
28329         expr_const_operands fields for declaration specifiers.
28330         (c_parser_enum_specifier): Likewise.
28331         (c_parser_struct_or_union_specifier): Likewise.
28332         (c_parser_typeof_specifier): Likewise.  Update call to
28333         groktypename.  Fold expression as needed.  Return expressions with
28334         type instead of adding statements.
28335         (c_parser_attributes): Update calls to c_parser_expr_list.
28336         (c_parser_statement_after_labels): Fold expression before passing
28337         to objc_build_throw_stmt.
28338         (c_parser_condition): Fold expression.
28339         (c_parser_asm_operands): Fold expression.
28340         (c_parser_conditional_expression): Use c_save_expr.  Update call
28341         to build_conditional_expr.
28342         (c_parser_alignof_expression): Update call to groktypename.
28343         (c_parser_postfix_expression): Preserve C_MAYBE_CONST_EXPR as
28344         original_code.  Fold expression argument of va_arg.  Create
28345         C_MAYBE_CONST_EXPR to preserve side effects of expressions in type
28346         argument to va_arg.  Update calls to groktypename.  Fold array
28347         index for offsetof.  Verify that first argument to
28348         __builtin_choose_expr has integer type.
28349         (c_parser_postfix_expression_after_paren_type): Update calls to
28350         groktypename and build_compound_literal.  Handle expressions with
28351         side effects in type name.
28352         (c_parser_postfix_expression_after_primary): Update call to
28353         c_parser_expr_list.  Set original_code for calls to
28354         __builtin_constant_p.
28355         (c_parser_expr_list): Take extra parameter fold_p.  Fold
28356         expressions if requested.
28357         (c_parser_objc_type_name): Update call to groktypename.
28358         (c_parser_objc_synchronized_statement): Fold expression.
28359         (c_parser_objc_receiver): Fold expression.
28360         (c_parser_objc_keywordexpr): Update call to c_parser_expr_list.
28361         (c_parser_omp_clause_num_threads, c_parser_omp_clause_schedule,
28362         c_parser_omp_atomic, c_parser_omp_for_loop): Fold expressions.
28363         * c-tree.h (CONSTRUCTOR_NON_CONST): Define.
28364         (struct c_typespec): Add elements expr and expr_const_operands.
28365         (struct c_declspecs): Add elements expr and expr_const_operands.
28366         (groktypename, build_conditional_expr, build_compound_literal):
28367         Update prototypes.
28368         (in_late_binary_op): Declare.
28369         * c-typeck.c (note_integer_operands): New function.
28370         (in_late_binary_op): New variable.
28371         (decl_constant_value_for_broken_optimization): Move to c-common.c
28372         and rename to decl_constant_value_for_optimization.
28373         (default_function_array_conversion): Do not strip nops.
28374         (default_conversion): Do not call
28375         decl_constant_value_for_broken_optimization.
28376         (build_array_ref): Do not fold result.
28377         (c_expr_sizeof_expr): Fold operand.  Use C_MAYBE_CONST_EXPR for
28378         result when operand is a VLA.
28379         (c_expr_sizeof_type): Update call to groktypename.  Handle
28380         expressions included in type name.  Use C_MAYBE_CONST_EXPR for
28381         result when operand names a VLA type.
28382         (build_function_call): Update call to build_compound_literal.
28383         Only fold result for calls to __builtin_* functions.  Strip
28384         NOP_EXPR from INTEGER_CST returned from such functions.  Fold
28385         the function designator.
28386         (convert_arguments): Fold arguments.  Update call to
28387         convert_for_assignment.
28388         (build_unary_op): Handle increment and decrement of
28389         C_MAYBE_CONST_EXPR.  Move lvalue checks for increment and
28390         decrement earlier.  Fold operand of increment and decrement.
28391         Handle address of C_MAYBE_CONST_EXPR.  Only fold expression being
28392         built for integer operand.  Wrap returns that are INTEGER_CSTs
28393         without being integer constant expressions or that have integer
28394         constant operands without being INTEGER_CSTs.
28395         (lvalue_p): Handle C_MAYBE_CONST_EXPR.
28396         (build_conditional_expr): Add operand ifexp_bcp.  Track whether
28397         result is an integer constant expression or can be used in
28398         unevaluated parts of one and avoid folding and wrap as
28399         appropriate.  Fold operands before possibly doing -Wsign-compare
28400         warnings.
28401         (build_compound_expr): Wrap result for C99 if operands can be used
28402         in integer constant expressions.
28403         (build_c_cast): Update call to digest_init.  Do not ignore
28404         overflow from casting floating-point constants to integers.  Wrap
28405         results that could be confused with integer constant expressions,
28406         null pointer constants or floating-point constants.
28407         (c_cast_expr): Update call to groktypename.  Handle expressions
28408         included in type name.
28409         (build_modify_expr): Handle modifying a C_MAYBE_CONST_EXPR.  Fold
28410         lhs inside possible SAVE_EXPR.  Fold RHS before assignment.
28411         Update calls to convert_for_assignment.
28412         (convert_for_assignment): Take new parameter
28413         null_pointer_constant.  Do not strip nops or call
28414         decl_constant_value_for_broken_optimization.  Set
28415         in_late_binary_op for conversions to boolean.
28416         (store_init_value): Update call to digest_init.
28417         (digest_init): Take new parameter null_pointer_constant.  Do not
28418         call decl_constant_value_for_broken_optimization.  pedwarn for
28419         initializers not constant expressions.  Update calls to
28420         convert_for_assignment.
28421         (constructor_nonconst): New.
28422         (struct constructor_stack): Add nonconst element.
28423         (really_start_incremental_init, push_init_level, pop_init_level):
28424         Handle constructor_nonconst and nonconst element.
28425         (set_init_index): Call constant_expression_warning for array
28426         designators.
28427         (output_init_element): Fold value.  Set constructor_nonconst as
28428         applicable.  pedwarn for initializers not constant expressions.
28429         Update call to digest_init.  Call constant_expression_warning
28430         where constant initializers are required.
28431         (process_init_element): Use c_save_expr.
28432         (c_finish_goto_ptr): Fold expression.
28433         (c_finish_return): Fold return value.  Update call to
28434         convert_for_assignment.
28435         (c_start_case): Fold switch expression.
28436         (c_process_expr_stmt): Fold expression.
28437         (c_finish_stmt_expr): Create C_MAYBE_CONST_EXPR as needed to
28438         ensure statement expression is not evaluated in constant expression.
28439         (build_binary_op): Track whether results are integer constant
28440         expressions or may occur in such, disable folding and wrap results
28441         as applicable.  Fold operands for -Wsign-compare warnings unless
28442         in_late_binary_op.
28443         (c_objc_common_truthvalue_conversion): Handle results folded to
28444         integer constants that are not integer constant expressions.
28445         * doc/extend.texi: Document when typeof operands are evaluated,
28446         that condition of __builtin_choose_expr is an integer constant
28447         expression, and more about use of __builtin_constant_p in
28448         initializers.
28449
28450 2009-03-29  Richard Guenther  <rguenther@suse.de>
28451
28452         * tree-ssa-forwprop.c (forward_propagate_addr_expr_1): Properly
28453         propagate addresses of array references.
28454
28455 2009-03-29  Steven Bosscher  <steven@gcc.gnu.org>
28456
28457         * regmove.c (perhaps_ends_bb_p): Remove.
28458         (optimize_reg_copy_1): Don't call perhaps_ends_bb_p.  Get basic block
28459         from INSN and check that the main loop stays within that basic block.
28460         (optimize_reg_copy_1, optimize_reg_copy_3, fixup_match_2): Likewise.
28461         (regmove_forward_pass): Split out from regmove_optimize.  Use
28462         FOR_EACH_BB and FOR_BB_INSNS instead of traversing the insns stream.
28463         (regmove_backward_pass): Split out from regmove_optimize.  Use
28464         FOR_EACH_BB_REVERSE and FOR_BB_INSNS_REVERS_SAFE.
28465         (regmove_optimize): Simplify.
28466
28467 2009-03-29  H.J. Lu  <hongjiu.lu@intel.com>
28468
28469         PR target/39545
28470         * config/i386/i386.c (classify_argument): Ignore flexible array
28471         member in struct and warn ABI change.
28472
28473 2009-03-29  H.J. Lu  <hongjiu.lu@intel.com>
28474
28475         * config/i386/i386-protos.h (ix86_agi_dependent): New.
28476
28477         * config/i386/i386.c (ix86_agi_dependent): Rewrite.
28478         (ix86_adjust_cost): Updated.
28479
28480 2009-03-29  Jan Hubicka  <jh@suse.cz>
28481
28482         PR middle-end/28850
28483         * tree-pass.h (pass_cleanup_eh): New function.
28484         (remove_unreachable_regions): Break code handling RTL
28485         to rtl_remove_unreachable_regions; remove ERT_MUST_NOT_THROW
28486         that can not be reached by runtime.
28487         (can_be_reached_by_runtime): New function.
28488         (label_to_region_map): New function.
28489         (num_eh_regions): New function.
28490         (rtl_remove_unreachable_regions): New function.
28491         (convert_from_eh_region_ranges): Call rtl_remove_unreachable_regions.
28492         (remove_eh_region): New function.
28493         * except.h: Include sbitmap and vecprim.
28494         (remove_eh_region, remove_unreachable_regions, label_to_region_map,
28495         num_eh_regions): Declare.
28496         * passes.c (init_optimization_passes): Schedule cleanup_eh.
28497         * Makefile.in (EXCEPT_H): New; replace all uses of except.h by it.
28498         * tree-eh.c (tree_remove_unreachable_handlers): New function.
28499         (tree_empty_eh_handler_p): New function.
28500         (cleanup_empty_eh): New function.
28501         (cleanup_eh): New function.
28502         (pass_cleanup_eh): New function.
28503
28504 2009-03-29  Jan Hubicka  <jh@suse.cz>
28505
28506         * except.c (verify_eh_tree): Fix handling of fun!=cfun; be ready
28507         for removed regions.
28508
28509 2009-03-29  Jan Hubicka  <jh@suse.cz>
28510
28511         * except.c (dump_eh_tree): Dump all datastructures.
28512
28513 2009-03-29  Jan Hubicka  <jh@suse.cz>
28514
28515         * except.c (duplicate_eh_regions_0): Handle AKA bitmap.
28516         (duplicate_eh_regions_1): Likewise.
28517         (duplicate_eh_regions): Likewise; cleanup code gorwing the region
28518         vector; call EH verification.
28519         (foreach_reachable_handler, can_throw_internal_1, can_throw_external_1):
28520         Be ready for region being removed.
28521
28522 2009-03-29  Jan Hubicka  <jh@suse.cz>
28523
28524         * bitmap.c (bitmap_last_set_bit): New function.
28525         * bitmap.h (bitmap_last_set_bit): Declare.
28526
28527 2009-03-29  David Ayers  <ayers@fsfe.org>
28528
28529         PR objc/27377
28530         * c-typeck.c (build_conditional_expr): Emit ObjC warnings
28531         by calling objc_compare_types and surpress warnings about
28532         incompatible C pointers that are compatible ObjC pointers.
28533
28534 2009-03-29  Adam Nemet  <anemet@caviumnetworks.com>
28535
28536         * cgraphbuild.c (build_cgraph_edges, rebuild_cgraph_edges): Don't
28537         call initialize_inline_failed.
28538         (initialize_inline_failed): Move it from here ...
28539         * cgraph.c (initialize_inline_failed): ... to here.
28540         (cgraph_create_edge): Call initialize_inline_failed rather than
28541         setting inline_failed directly.
28542
28543 2009-03-29  Ben Elliston  <bje@au.ibm.com>
28544
28545         PR target/32542
28546         * sysv4.opt (msdata): Improve comment.
28547         * linux64.h (ASM_SPEC32): Do not pass -memb when -msdata is given.
28548         * sysv4.h (SVR4_ASM_SPEC): Likewise.
28549
28550 2009-03-29  Ben Elliston  <bje@au.ibm.com>
28551
28552         PR target/30451
28553         * config/rs6000/rs6000.md (*movti_ppc64): Correct the order of
28554         load and store attributes.
28555
28556 2009-03-29  Ben Elliston  <bje@au.ibm.com>
28557
28558         * config/i386/i386.c (enum ix86_builtins): Add IX86_BUILTIN_HUGE_VALQ.
28559         (ix86_init_builtins): Add built-in function __builtin_huge_valq.
28560         (ix86_expand_builtin): Handle IX86_BUILTIN_HUGE_VALQ.
28561         * doc/extend.texi (X86 Built-in Functions): Add index entries for
28562         __builtin_infq and __builtin_huge_valq.
28563
28564 2009-03-28  Anatoly Sokolov  <aesok@post.ru>
28565
28566         * config/avr/avr.c (avr_mcu_t): Add atmega8c1, atmega16c1 and
28567         atmega8m1 devices.
28568         * config/avr/avr.h (LINK_SPEC, CRT_BINUTILS_SPECS): (Ditto.).
28569         * config/avr/t-avr (MULTILIB_MATCHES): (Ditto.)
28570
28571 2009-03-28  Xinliang David Li  <davidxl@google.com>
28572
28573         * tree-ssa-ccp.c (ccp_finalize): Add dbg_count support.
28574         (do_dbg_cnt): New function.
28575
28576 2009-03-28  Jan Hubicka  <jh@suse.cz>
28577
28578         Merge from pretty-ipa:
28579
28580         2009-03-27  Jan Hubicka  <jh@suse.cz>
28581
28582         * cgraph.c (dump_cgraph_node): Add replace output flag by process.
28583         * tree-pass.h (function_called_by_processed_nodes_p): Declare.
28584         * passes.c (function_called_by_processed_nodes_p): New.
28585         * ipa-pure-const.c (check_call): Fix handling of operands.
28586         (analyze_function): Dump debug output for skipped bodies.
28587         (local_pure_const): Use function_called_by_processed_nodes_p.
28588         * dwarf2out.c (reference_to_unused): Use output.
28589         * passes.c (do_per_function_toporder): Likewise.
28590
28591         2008-11-12  Jan Hubicka  <jh@suse.cz>
28592
28593         * tree-pass.h (pass_fixup_cfg, pass_local_pure_const): Declare.
28594         * ipa-pure-const.c (funct_state_d): Add can throw field; make
28595         state_set_in_source enum
28596         (check_decl): Ignore memory tags; do not set fake looping flags;
28597         dump diagnostics.
28598         (check_operand, check_tree, check_rhs_var, check_lhs_var,
28599         get_asm_expr_operands, scan_function_op, scan_function_stmt): Remove.
28600         (check_call, analyze_function): Rewrite.
28601         (check_stmt): New.
28602         (add_new_function): Update call of analyze_function.
28603         (generate_summary): Add call of analyze_function.
28604         (propagate): Propagate can_throw; handle state_set_in_source correctly.
28605         (local_pure_const): New function.
28606         (pass_local_pure_const): New pass.
28607         * ipa-inline.c (inline_transform): Set after_inlining.
28608         * tree-eh.c (stmt_can_throw_external): New.
28609         * tree-optimize.c (execute_fixup_cfg): Do not set after_inlining;
28610         work with aliasing built.
28611         * tree-flow.h (stmt_can_throw_external): New.
28612         * passes.c (init_optimization_passes): Schedule fixup_cfg pass early;
28613         and local pure/const pass in early and late optimization queue.
28614
28615 2009-03-28  Martin Jambor  <mjambor@suse.cz>
28616
28617         * fold-const.c (get_pointer_modulus_and_residue): New parameter
28618         allow_func_align.
28619         (fold_binary): Allow function decl aligment consideration is the
28620         second argument is integer constant one.
28621         * tree-ssa-forwprop.c (simplify_bitwise_and): New function.
28622         (tree_ssa_forward_propagate_single_use_vars): Handle assing statements
28623         with BIT_AND_EXPR on the RHS by calling simplify_bitwise_and.
28624
28625 2009-03-28  Jan Hubicka  <jh@suse.cz>
28626
28627         * dwarf2out.c (dwarf2out_begin_prologue): Use crtl->nothrow
28628         * tree-eh.c (stmt_could_throw_p): Remove check for WEAK decls.
28629         * function.h (rtl_data): Add nothrow flag.
28630         * except.c (set_nothrow_function_flags): Use crtl->nothrow;
28631         set DECL_NOTHROW for AVAILABLE functions.
28632
28633 2009-03-28  Jakub Jelinek  <jakub@redhat.com>
28634
28635         * config/rs6000/rs6000-c.c (rs6000_macro_to_expand): If macro
28636         following vector keyword has expansion starting with pixel or bool
28637         keyword, expand vector to __vector and pixel or bool to __pixel or
28638         __bool.
28639
28640         PR c++/39554
28641         * opts.c (warning_disallowed_functions, warn_disallowed_functions,
28642         warn_if_disallowed_function_p): Removed.
28643         (common_handle_option): Don't handle OPT_Wdisallowed_function_list_.
28644         * c-parser.c (c_parser_postfix_expression_after_primary): Don't call
28645         warning_if_disallowed_function_p.
28646         * flags.h (warn_if_disallowed_function_p,
28647         warn_disallowed_functions): Removed.
28648         * common.opt (Wdisallowed-function-list=): Removed.
28649         * doc/invoke.texi (-Wdisallowed-function-list=): Removed.
28650
28651 2009-03-28  Richard Guenther  <rguenther@suse.de>
28652
28653         PR tree-optimization/38723
28654         * tree-ssa-pre.c (compute_avail): Add all default definitions to
28655         the entry block.
28656
28657 2009-03-28  Jan Hubicka  <jh@suse.cz>
28658
28659         * tree-ssa-structalias.c (ipa_pta_execute): Fix bogus node->analyzed
28660         test introduced by my previous patch.
28661
28662 2009-03-28  Richard Guenther  <rguenther@suse.de>
28663
28664         * tree-ssa-copy.c (copy_prop_visit_phi_node): Do not leave
28665         the PHIs value undefined.
28666
28667 2009-03-28  Jan Hubicka  <jh@suse.cz>
28668
28669         * tree-pass.h (pass_fixup_cfg): New pass.
28670         * ipa-inline.c (inline_transform): Set
28671         always_inline_functions_inlined/after_inlining.
28672         * tree-optimize.c (execute_fixup_cfg): Do not set them here.
28673         (pass_fixup_cfg): New pass.
28674         * passes.c (init_optimization_passes): Add fixup_cfg.
28675
28676 2009-03-28  Richard Guenther  <rguenther@suse.de>
28677
28678         PR tree-optimization/38458
28679         * tree-ssa-copy.c (copy_prop_visit_phi_node): For the first
28680         argument use the arguments copy-of value.
28681
28682 2009-03-28  Richard Guenther  <rguenther@suse.de>
28683
28684         PR tree-optimization/38180
28685         * tree-ssa-ccp.c (get_default_value): Simplify.
28686         (likely_value): Likewise.
28687         (surely_varying_stmt_p): Properly handle VOP case.
28688         (ccp_initialize): Likewise.
28689         (ccp_fold): Handle propagating through *&.
28690         (fold_const_aggregate_ref): Also handle decls.
28691
28692 2009-03-28  Jan Hubicka  <jh@suse.cz>
28693
28694         * cgraph.c (dump_cgraph_node): Add replace output flag by process.
28695         * cgraph.h (cgraph_node): Likewise.
28696         * cgraphunit.c (cgraph_process_new_functions): Set process flag.
28697         (cgraph_reset_node): Use process flag.
28698         (cgraph_mark_functions_to_output): Likewise.
28699         (cgraph_expand_function): Likewise.
28700         (cgraph_expand_all_functions): Likewise.
28701         (cgraph_output_in_order): Likewise.
28702         * dwarf2out.c (reference_to_unused): Likewise.
28703         * passes.c do_per_function_toporder): Likewise.
28704
28705 2009-03-28  Jan Hubicka  <jh@suse.cz>
28706
28707         Bring from lto-branch:
28708
28709         2008-09-03  Doug Kwan  <dougkwan@google.com>
28710
28711         * cgraphbuild.c (initialize_inline_failed): Use cgraph_inline_failed_t
28712         enums instead of reason strings.
28713         * cgraph.c (cgraph_create_edge): Same.
28714         (cgraph_inline_failed_string): New function.
28715         * cgraph.h (cgraph_inline_failed_t): New enum type.
28716         (cgraph_inline_failed_string): New prototype.
28717         (struct cgraph_edge): Change type of INLINED_FAILED from constant
28718         char pointer to cgraph_inline_failed_t.
28719         (cgraph_inline_p): Adjust prototype to use cgraph_inline_failed_t.
28720         (cgraph_default_inline_p): Ditto.
28721         * cgraphunit.c (cgraph_inline_p): Change type of parameter REASON
28722         to cgraph_inline_failed_t pointer.
28723         * cif-code.def: New file.
28724         * ipa-inline.c (cgraph_mark_inline_edge): Use an enum instead of a
28725         reason string.
28726         (cgraph_check_inline_limits): Change type of REASON to pointer to
28727         cgraph_inline_failed_t.  Replace reason strings with enums.
28728         (cgraph_default_inline_p): Ditto.
28729         (cgraph_recursive_inlining_p): Ditto.
28730         (update_caller_keys): Change type of FAILED_REASON to
28731         cgraph_inline_failed_t.
28732         (cgraph_set_inline_failed): Change type of REASON to pointer to
28733         cgraph_inline_failed_t.  Call cgraph_inline_failed_string to
28734         convert enums to strings for text output.
28735         (cgraph_decide_inlining_of_small_function): Change FAILED_REASON
28736         to be of type cgraph_inline_failed_t.  Replace reason strings with
28737         enums.  Call cgraph_inline_failed_string to covert enums
28738         to strings for text output.
28739         (cgraph_decide_inlining): Replace reason strings with enums.
28740         (cgraph_decide_inlining_incrementally): Change type of FAILED_REASON
28741         to cgraph_inline_failed_t type.  Call cgraph_inline_failed_string
28742         for text output.
28743         * tree-inline.c (expand_call_inline): Change type of REASON
28744         to cgraph_inline_failed_t.  Replace reason strings with enums.
28745         Call cgraph_inline_failed_string for text output.
28746         * Makefile.in (CGRAPH_H): Add cif-code.def to dependencies.
28747         (cgraph.o): Ditto.
28748
28749 2009-03-28  Jan Hubicka  <jh@suse.cz>
28750
28751         * cgraph.c (cgraph_node, cgraph_remove_node, dump_cgraph_node,
28752         cgraph_clone_node): Remove master clone handling.
28753         (cgraph_is_master_clone, cgraph_master_clone): Remove.
28754         * cgraph.h (master_clone): Remove.
28755         (cgraph_is_master_clone, cgraph_master_clone): Remove.
28756         * ipa-type-escape.c (type_escape_execute): Remove use of master clone.
28757         (tree-ssa-structalias.c (ipa_pta_execute): Likewise.
28758
28759 2009-03-28  Jan Hubicka  <jh@suse.cz>
28760
28761         * cgraph.c (cgraph_function_body_availability): Functions declared
28762         inline are always safe to assume that it is not going to be replaced.
28763
28764 2009-03-28  Richard Guenther  <rguenther@suse.de>
28765
28766         PR tree-optimization/38513
28767         * tree-ssa-pre.c (eliminate): Remove redundant stores.
28768         * tree-ssa-sccvn.c (copy_reference_ops_from_ref): Handle
28769         EXC_PTR_EXPR and FILTER_EXPR.
28770         (get_ref_from_reference_ops): Likewise.
28771
28772 2009-03-28  Richard Guenther  <rguenther@suse.de>
28773
28774         PR tree-optimization/38968
28775         * tree-vect-analyze.c (vect_compute_data_ref_alignment):
28776         Use FLOOR_MOD_EXPR to compute misalignment.
28777
28778 2009-03-28  Richard Guenther  <rguenther@suse.de>
28779
28780         PR tree-optimization/37795
28781         * tree.h (combine_comparisons): Declare.
28782         * fold-const.c (combine_comparisons): Export.
28783         * tree-ssa-ifcombine.c (ifcombine_ifandif): Optimize two successive
28784         comparisons.
28785         (ifcombine_iforif): Use combine_comparisons.
28786
28787 2009-03-28  Jan Hubicka  <jh@suse.cz>
28788
28789         * tree-eh.c (inlinable_call_p): New function.
28790         (make_eh_edges): Use it.
28791         (verify_eh_edges): Use it.
28792         (stmt_can_throw_external, stmt_can_throw_internal): Use it.
28793         * except.c (reachable_next_level): Add inlinable_function argument
28794         (sjlj_find_directly_reachable_regions): Update.
28795         (add_reachable_handler): Do not set saw_any_handlers.
28796         (reachable_next_level): Handle MUST_NOT_THROW more curefully.
28797         (foreach_reachable_handler, can_throw_internal_1, can_throw_external_1):
28798         Add new inlinable call parameter.
28799         (can_throw_internal, can_throw_external): Update.
28800         * except.h (can_throw_internal_1, can_throw_external_1,
28801         foreach_reachable_handler): Update declaration.
28802
28803 2009-03-28  Joseph Myers  <joseph@codesourcery.com>
28804
28805         * config/arm/t-arm-coff, config/h8300/coff.h,
28806         config/i386/i386-aout.h, config/i386/i386-coff.h,
28807         config/libgloss.h, config/m68k/coff.h, config/m68k/m68k-aout.h,
28808         config/pdp11/2bsd.h, config/rs6000/aix41.h,
28809         config/rs6000/aix41.opt, config/rs6000/t-newas, config/sh/coff.h,
28810         fix-header.c, fixproto, gen-protos.c, protoize.c, scan-decls.c,
28811         scan-types.sh, scan.c, scan.h, sort-protos, sys-protos.h,
28812         sys-types.h: Remove.
28813         * Makefile.in: Remove protoize and fixproto support and references
28814         in comments.
28815         (SYSCALLS.c.X-warn, TARGET_GETGROUPS_T, STMP_FIXPROTO,
28816         PROTOIZE_INSTALL_NAME, UNPROTOIZE_INSTALL_NAME, FIXPROTO_DEFINES):
28817         Remove.
28818         (ALL_HOST_OBJS): Remove $(PROTO_OBJS).
28819         (MOSTLYCLEANFILES): Remove protoize$(exeext) and
28820         unprotoize$(exeext).
28821         (rest.encap): Don't depend on $(STMP_FIXPROTO)
28822         (.PHONY): Don't depend on proto.
28823         (libgcc-support): Don't depend on $(STMP_FIXPROTO).
28824         (proto, PROTO_OBJS, protoize$(exeext), unprotoize$(exeext),
28825         protoize.o, unprotoize.o, SYSCALLS.c.X, test-protoize-simple,
28826         deduced.h, GEN_PROTOS_OBJS, build/gen-protos$(build_exeext),
28827         build/gen-protos.o, build/scan.o, xsys-protos.h,
28828         build/fix-header$(build_exeext), build/fix-header.o,
28829         build/scan-decls.o, fixhdr.ready, stmp-fixproto,
28830         stmp-install-fixproto): Remove.
28831         (mostlyclean): Don't remove xsys-protos.hT, SYSCALLS.c.X,
28832         SYSCALLS.c or fixproto files.
28833         (install-common): Don't install protoize.
28834         (install-headers-tar, install-headers-cpio, install-headers-cp):
28835         Don't depend on $(STMP_FIXPROTO).
28836         (install-mkheaders): Don't depend on $(STMP_FIXPROTO).  Don't
28837         install fixproto files or write out fixproto settings.
28838         (uninstall): Don't uninstall protoize.
28839         * config.gcc (use_fixproto): Remove.
28840         (arm-*-coff*, armel-*-coff*, h8300-*-*, i[34567]86-*-aout*,
28841         i[34567]86-*-coff*, m68k-*-aout*, m68k-*-coff*, pdp11-*-bsd,
28842         rs6000-ibm-aix4.[12]*, powerpc-ibm-aix4.[12]*, sh-*-*): Remove.
28843         * config/m32r/t-linux (STMP_FIXPROTO): Remove.
28844         * config/m68k/m68k.c: Remove M68K_TARGET_COFF-conditional code.
28845         * config/mips/t-iris (FIXPROTO_DEFINES): Remove.
28846         * config/pa/t-pa-hpux (FIXPROTO_DEFINES): Remove.
28847         * config/pdp11/pdp11.c: Remove TWO_BSD-conditional code.
28848         * config/t-svr4 (FIXPROTO_DEFINES): Remove.
28849         * config/t-vxworks (STMP_FIXPROTO): Remove.
28850         * configure.ac (AC_TYPE_GETGROUPS, TARGET_GETGROUPS_T,
28851         STMP_FIXPROTO): Remove.
28852         * config.in, configure: Regenerate.
28853         * crtstuff.c (gid_t, uid_t): Don't undefine.
28854         * doc/install.texi: Change m68k-coff to m68k-elf in example.
28855         (arm-*-coff, arm-*-aout: Remove target entries.
28856         (*-ibm-aix*): Mention removal of support for AIX 4.2 and older.
28857         Remove mention of AIX 4.1.
28858         (m68k-*-*): Remove mention of m68k-*-aout and m68k-*-coff*.
28859         * doc/invoke.texi (Running Protoize): Remove.
28860         * doc/trouble.texi (Actual Bugs): Remove mention of fixproto.
28861         (Protoize Caveats): Remove.
28862         * tsystem.h: Update comments on headers assumed to exist.
28863
28864 2009-03-27  Vladimir Makarov  <vmakarov@redhat.com>
28865
28866         * genautomata.c: Add a new year to the copyright.  Add a new
28867         reference.
28868         (struct insn_reserv_decl): Add comments for member bypass_list.
28869         (find_bypass): Remove.
28870         (insert_bypass): New.
28871         (process_decls): Use insert_bypass.
28872         (output_internal_insn_latency_func): Output all bypasses with the
28873         same input insn in one switch case.
28874
28875         * rtl.def (define_bypass): Describe bypass choice.
28876         * doc/md.texi (define_bypass): Ditto.
28877
28878 2009-03-27  Richard Guenther  <rguenther@suse.de>
28879
28880         * gimplify.c (mark_addressable): Export.
28881         * tree-flow.h (mark_addressable): Declare.
28882         * tree-ssa-loop-manip.c (create_iv): Mark the base addressable.
28883         * tree-ssa.c (verify_phi_args): Verify that address taken
28884         variables have TREE_ADDRESSABLE set.
28885
28886 2009-03-27  Richard Guenther  <rguenther@suse.de>
28887
28888         * fold-const.c (build_fold_addr_expr_with_type_1): Rename back to ...
28889         (build_fold_addr_expr_with_type): ... this.  Remove in_fold handling.
28890         Do not mark decls TREE_ADDRESSABLE.
28891         (build_fold_addr_expr): Adjust.
28892         (fold_addr_expr): Remove.
28893         (fold_unary): Use build_fold_addr_expr.
28894         (fold_comparison): Likewise.
28895         (split_address_to_core_and_offset): Likewise.
28896         * coverage.c (tree_coverage_counter_addr): Mark the array decl
28897         TREE_ADDRESSABLE.
28898         * gimplify.c (mark_addressable): Do not exclude RESULT_DECLs.
28899         (gimplify_modify_expr_to_memcpy): Mark source and destination
28900         addressable.
28901         * omp-low.c (create_omp_child_function): Mark the object decl
28902         TREE_ADDRESSABLE.
28903         (lower_rec_input_clauses): Mark the var we take the address of
28904         TREE_ADDRESSABLE.
28905         (lower_omp_taskreg): Mark the sender decl TREE_ADDRESSABLE.
28906
28907 2009-03-27  H.J. Lu  <hongjiu.lu@intel.com>
28908
28909         PR middle-end/39315
28910         * cfgexpand.c (expand_one_stack_var_at): Change alignment
28911         limit to MAX_SUPPORTED_STACK_ALIGNMENT.
28912
28913 2009-03-27  Richard Guenther  <rguenther@suse.de>
28914
28915         PR tree-optimization/39120
28916         * tree-ssa-structalias.c (handle_rhs_call): Fill out return
28917         constraints.
28918         (handle_lhs_call): Process return constraints.  Add escape
28919         constraints if necessary.
28920         (handle_const_call): Fill out return constraints.  Make nested
28921         case more precise.  Avoid consttmp if possible.
28922         (handle_pure_call): Fill out return constraints.  Avoid
28923         callused if possible.
28924         (find_func_aliases): Simplify call handling.
28925
28926 2009-03-27  Richard Guenther  <rguenther@suse.de>
28927
28928         PR tree-optimization/39120
28929         * tree-ssa-structalias.c (do_sd_constraint): Do not use CALLUSED
28930         as a representative.
28931         (solve_graph): Do propagate CALLUSED.
28932         (handle_pure_call): Use a scalar constraint from CALLUSED for
28933         the return value.
28934         (find_what_p_points_to): CALLUSED shall not appear in poins-to
28935         solutions.
28936
28937 2009-03-27  H.J. Lu  <hongjiu.lu@intel.com>
28938
28939         PR c/39323
28940         * c-common.c (handle_aligned_attribute): Properly check alignment
28941         overflow.  Use (1U << i) instead of (1 << i).
28942
28943         * emit-rtl.c (get_mem_align_offset): Use "unsigned int" for align.
28944
28945         * expr.h (get_mem_align_offset): Updated.
28946
28947         * tree.h (tree_decl_common): Change align to "unsigned int" and
28948         move it before pointer_alias_set.
28949
28950 2009-03-27  H.J. Lu  <hongjiu.lu@intel.com>
28951             Jakub Jelinek  <jakub@redhat.com>
28952
28953         PR target/38034
28954         * config/ia64/sync.md (cmpxchg_rel_<mode>): Replace input
28955         gr_register_operand with gr_reg_or_0_operand.
28956         (cmpxchg_rel_di): Likewise.
28957         (sync_lock_test_and_set<mode>): Likewise.
28958
28959 2009-03-27  H.J. Lu  <hongjiu.lu@intel.com>
28960
28961         * jump.c (rtx_renumbered_equal_p): Use subreg_get_info.
28962         (true_regnum): Likewise.
28963
28964         * rtlanal.c (subreg_info): Moved to ...
28965         * rtl.h (subreg_info): Here.  New.
28966         (subreg_get_info): New.
28967
28968         * rtlanal.c (subreg_get_info): Make it extern.
28969
28970 2009-03-27  H.J. Lu  <hongjiu.lu@intel.com>
28971
28972         PR target/39472
28973         * config/i386/i386.c (ix86_abi): New.
28974         (override_options): Handle -mabi=.
28975         (ix86_function_arg_regno_p): Replace DEFAULT_ABI with ix86_abi.
28976         (ix86_call_abi_override): Likewise.
28977         (init_cumulative_args): Likewise.
28978         (function_arg_advance): Likewise.
28979         (function_arg_64): Likewise.
28980         (function_arg): Likewise.
28981         (ix86_pass_by_reference): Likewise.
28982         (ix86_function_value_regno_p): Likewise.
28983         (ix86_build_builtin_va_list_abi): Likewise.
28984         (setup_incoming_varargs_64): Likewise.
28985         (is_va_list_char_pointer): Likewise.
28986         (ix86_init_machine_status): Likewise.
28987         (ix86_reg_parm_stack_space): Use enum calling_abi on call_abi.
28988         (ix86_function_type_abi): Return enum calling_abi.  Rewrite
28989         for 64bit.  Replace DEFAULT_ABI with ix86_abi.
28990         (ix86_function_abi): Make it static and return enum calling_abi.
28991         (ix86_cfun_abi): Return enum calling_abi.  Replace DEFAULT_ABI
28992         with ix86_abi.
28993         (ix86_fn_abi_va_list): Updated.
28994
28995         * config/i386/i386.h (ix86_abi): New.
28996         (STACK_BOUNDARY): Replace DEFAULT_ABI with ix86_abi.
28997         (CONDITIONAL_REGISTER_USAGE): Likewise.
28998         (CUMULATIVE_ARGS): Change call_abi type to enum calling_abi.
28999         (machine_function): Likewise.
29000
29001         * config/i386/i386.md (untyped_call): Replace DEFAULT_ABI
29002         with ix86_abi.
29003         * config/i386/cygming.h (TARGET_64BIT_MS_ABI): Likewise.
29004         (STACK_BOUNDARY): Likewise.
29005         * config/i386/mingw32.h (EXTRA_OS_CPP_BUILTINS): Likewise.
29006
29007         * config/i386/i386.opt (mabi=): New.
29008
29009         * config/i386/i386-protos.h (ix86_cfun_abi): Changed to
29010         return enum calling_abi.
29011         (ix86_function_type_abi): Likewise.
29012         (ix86_function_abi): Removed.
29013
29014         * doc/invoke.texi: Document -mabi= option for x86.
29015
29016 2009-03-27  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
29017
29018         * builtins.c (real_dconstp): Delete.
29019         (fold_builtin_logarithm): Remove inaccurate log(e) special case.
29020
29021 2009-03-27  Dodji Seketeli  <dodji@redhat.com>
29022             Jakub Jelinek  <jakub@redhat.com>
29023
29024         PR debug/37959
29025         * dwarf2out.c (dwarf_attr_name): Handle DW_AT_explicit attribute.
29026         (gen_subprogram_die): When a function is explicit, generate the
29027         DW_AT_explicit attribute.
29028         * langhooks.h (struct lang_hooks_for_decls): Add
29029         function_decl_explicit_p langhook.
29030         * langhooks-def.h (LANG_HOOKS_FUNCTION_DECL_EXPLICIT_P): Define.
29031         (LANG_HOOKS_DECLS): Add LANG_HOOKS_FUNCTION_DECL_EXPLICIT_P.
29032
29033 2009-03-27  Jakub Jelinek  <jakub@redhat.com>
29034
29035         * builtins.c (fold_builtin_memory_op): Optimize memmove
29036         into memcpy if we can prove source and destination don't overlap.
29037
29038         * tree-inline.c: Include gt-tree-inline.h.
29039         (clone_fn_id_num): New variable.
29040         (clone_function_name): New function.
29041         (tree_function_versioning): Use it.
29042         * Makefile.in (GTFILES): Add tree-inline.c.
29043
29044 2009-03-27  Mark Mitchell  <mark@codesourcery.com>
29045
29046         * BASE-VER: Change to 4.5.0.
29047
29048 2009-03-27  Xinliang David Li  <davidxl@google.com>
29049
29050         PR tree-optimization/39557
29051         * tree-ssa.c (warn_uninitialized_vars): free postdom info.
29052
29053 2009-03-27  Xinliang David Li  <davidxl@google.com>
29054
29055         PR tree-optimization/39548
29056         * tree-ssa-copy.c (copy_prop_visit_phi_node): Add copy
29057         candidate check.
29058
29059 2009-03-27  H.J. Lu  <hongjiu.lu@intel.com>
29060
29061         * c-common.c (pointer_int_sum): Use %wd on return from
29062         tree_low_cst.
29063
29064 2009-03-27  H.J. Lu  <hongjiu.lu@intel.com>
29065
29066         * c-common.c (pointer_int_sum): Use HOST_WIDE_INT_PRINT_DEC
29067         on return from tree_low_cst.
29068
29069 2009-03-27  Andrew Pinski  <andrew_pinski@playstation.sony.com>
29070
29071         PR c++/36799
29072         * ginclude/stdarg.h (va_copy): Define also for
29073         __GXX_EXPERIMENTAL_CXX0X__.
29074
29075 2009-03-27  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
29076
29077         PR c++/35652
29078         * builtins.h (c_strlen): Do not warn here.
29079         * c-typeck.c (build_binary_op): Adjust calls to pointer_int_sum.
29080         * c-common.c (pointer_int_sum): Take an explicit location.
29081         Warn about offsets out of bounds.
29082         * c-common.h (pointer_int_sum): Adjust declaration.
29083
29084 2009-03-26  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
29085
29086         * doc/invoke.texi (i386 and x86-64 Windows Options): Fix texinfo
29087         markup glitch.
29088
29089 2009-03-26  Jakub Jelinek  <jakub@redhat.com>
29090
29091         PR c++/39554
29092         * opts.c (warn_if_disallowed_function_p): Don't assume
29093         get_callee_fndecl must return non-NULL.
29094
29095 2009-03-26  Vladimir Makarov  <vmakarov@redhat.com>
29096
29097         PR rtl-optimization/39522
29098         * reload1.c (reload_as_needed): Invalidate reg_last_reload_reg too
29099         when reg_reloaded_valid is set.
29100
29101 2009-03-26  Ulrich Weigand  <Ulrich.Weigand@de.ibm.com>
29102
29103         * config/spu/divv2df3.c: New file.
29104         * config/spu/t-spu-elf (LIB2FUNCS_STATIC_EXTRA): Add it.
29105         (DPBIT_FUNCS): Filter out _div_df.
29106
29107 2009-03-26  Bernd Schmidt  <bernd.schmidt@analog.com>
29108
29109         * config/bfin/bfin.c (bfin_optimize_loop): If the LSETUP goes before
29110         a jump insn, count that jump in the distance to the loop start.
29111
29112 2009-03-25  Kaz Kojima  <kkojima@gcc.gnu.org>
29113
29114         PR target/39523
29115         * config/sh/sh.c (calc_live_regs): Fix condition for global
29116         registers except PIC_OFFSET_TABLE_REGNUM.
29117
29118 2009-03-25  Kai Tietz  <kai.tietz@onevision.com>
29119
29120         PR/39518
29121         * doc/invoke.texi (-mconsole): New.
29122         (-mcygwin): New.
29123         (-mno-cygwin): New.
29124         (-mdll): New.
29125         (-mnop-fun-dllimport): New.
29126         (-mthread): New.
29127         (-mwin32): New.
29128         (-mwindows): New.
29129         (sub section "i386 and x86-64 Windows Options"): New.
29130
29131 2009-03-25  Ralf Corsépius  <ralf.corsepius@rtems.org>
29132
29133         * config/arm/rtems-elf.h: Remove LINK_GCC_C_SEQUENCE_SPEC.
29134         * config/rs6000/t-rtems: Remove MULTILIB_EXTRA_OPTS.
29135
29136 2009-03-25  Richard Guenther  <rguenther@suse.de>
29137
29138         PR middle-end/39497
29139         * Makefile.in (dfp.o-warn): Use -fno-strict-aliasing instead
29140         of -Wno-error.
29141
29142 2009-03-25  Andrey Belevantsev  <abel@ispras.ru>
29143
29144         * config/ia64/ia64.c (ia64_set_sched_flags): Zero spec_info->mask when
29145         neither of haifa/selective schedulers are working.
29146
29147 2009-03-25  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
29148
29149         * doc/invoke.texi (Debugging Options): Fix description of
29150         -fno-merge-debug-strings.
29151
29152 2009-03-24  Hans-Peter Nilsson  <hp@axis.com>
29153
29154         * config/cris/libgcc.ver: New version-script.
29155         * config/cris/t-linux (SHLIB_MAPFILES): Use it.
29156
29157         * configure.ac <GAS features, nop mnemonic>: Add pattern
29158         crisv32-*-* for "nop".
29159         <GAS features, Thread-local storage>: Add item for CRIS and CRIS v32.
29160         * configure: Regenerate.
29161
29162 2009-03-24  Ira Rosen  <irar@il.ibm.com>
29163
29164         PR tree-optimization/39529
29165         * tree-vect-transform.c (vect_create_data_ref_ptr): Call
29166         mark_sym_for_renaming for the tag copied to the new vector
29167         pointer.
29168
29169 2009-03-24  Arthur Loiret  <aloiret@debian.org>
29170
29171         * config.host (alpha*-*-linux*): Use driver-alpha.o and alpha/x-alpha.
29172         * config/alpha/linux.h (host_detect_local_cpu): Declare, add to
29173         EXTRA_SPEC_FUNCTIONS.
29174         (MCPU_MTUNE_NATIVE_SPECS, DRIVER_SELF_SPECS): New macros.
29175         * config/alpha/driver-alpha.c, config/alpha/x-alpha: New.
29176         * doc/invoke.texi (DEC Alpha Options): Document 'native' value for
29177         -march and -mtune options.
29178
29179 2009-03-24  Ralf Corsépius  <ralf.corsepius@rtems.org>
29180
29181         * config/m68k/t-rtems: Add m5329 multilib.
29182
29183 2009-03-24  Dodji Seketeli  <dodji@redhat.com>
29184             Jakub Jelinek  <jakub@redhat.com>
29185
29186         PR debug/39524
29187         * dwarf2out.c (gen_variable_die): Avoid adding duplicate declaration
29188         nodes.
29189
29190 2009-03-23  Jakub Jelinek  <jakub@redhat.com>
29191
29192         PR c/39495
29193         * c-parser.c (c_parser_omp_for_loop): Call c_parser_binary_expression
29194         instead of c_parser_expression_conv, if original_code isn't one of the
29195         4 allowed comparison codes, fail.
29196
29197 2009-03-23  Richard Guenther  <rguenther@suse.de>
29198
29199         * cgraph.h (struct cgraph_node): Reorder fields for 64-bit hosts.
29200         * tree.h (struct tree_type): Likewise.
29201         * reload.h (struct insn_chain): Likewise.
29202         * dwarf2out.c (struct dw_loc_descr_struct): Likewise.
29203         * function.h (struct function): Likewise.
29204         * tree-ssa-structalias.c (struct equiv_class_label): Likewise.
29205
29206 2009-03-23  Jakub Jelinek  <jakub@redhat.com>
29207
29208         PR tree-optimization/39516
29209         * lambda-code.c (perfect_nestify): Fix type of the uboundvar variable.
29210
29211 2009-03-23  Bingfeng Mei  <bmei@broadcom.com>
29212
29213         * config.gcc (need_64bit_hwint): Make clear that need_64bit_hwint
29214         should be set true if BITS_PER_WORD of target is bigger than 32
29215
29216 2009-03-22  Hans-Peter Nilsson  <hp@axis.com>
29217
29218         * config/cris/linux.h (CRIS_LINK_SUBTARGET_SPEC):
29219         Translate -B-options to -rpath-link.  Correct existing
29220         rpath-link and conditionalize on !nostdlib.
29221
29222 2009-03-22  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
29223
29224         * doc/extend.texi (Function Attributes, Variable Attributes):
29225         Fix typos.
29226         * doc/invoke.texi (Debugging Options, Optimize Options)
29227         (i386 and x86-64 Options, MCore Options): Likewise.
29228
29229 2009-03-20  Jakub Jelinek  <jakub@redhat.com>
29230
29231         PR debug/37890
29232         * dwarf2out.c (gen_namespace_die): Add context_die argument and use
29233         it for block local namespace aliases.
29234         (gen_decl_die): Pass context_die to gen_namespace_die.
29235
29236 2009-03-19  Jakub Jelinek  <jakub@redhat.com>
29237
29238         PR c/39495
29239         * c-omp.c (c_finish_omp_for): Allow NE_EXPR with TREE_TYPE (decl)'s
29240         minimum or maximum value.
29241
29242 2009-03-19  Alexandre Oliva  <aoliva@redhat.com>
29243
29244         * reginfo.c (globalize_reg): Recompute derived reg sets.
29245
29246 2009-03-19  Ozkan Sezer  <sezeroz@gmail.com>
29247
29248         PR target/39063
29249         * libgcc2.c (mprotect): Do not use signed arguments for
29250         VirtualProtect, use DWORD arguments.  Also fix the 'may
29251         be used uninitialized' warning for the np variable.
29252
29253 2009-03-19  Jakub Jelinek  <jakub@redhat.com>
29254
29255         PR target/39496
29256         * config/i386/i386.c (ix86_function_regparm): Don't optimize local
29257         functions using regparm calling conventions when not optimizing.
29258         (ix86_function_sseregparm): Similarly for sseregparm calling
29259         conventions.
29260
29261 2009-03-19  Li Feng  <nemokingdom@gmail.com>
29262
29263         PR middle-end/39500
29264         * tree-data-ref.c (analyze_subscript_affine_affine): There is no
29265         dependence if the first conflict is after niter iterations.
29266
29267 2009-03-19  Hans-Peter Nilsson  <hp@axis.com>
29268
29269         PR middle-end/38609
29270         * config/cris/cris.h (FRAME_POINTER_REQUIRED): Force for all
29271         functions with dynamic stack-pointer adjustments.
29272
29273 2009-03-19  Ben Elliston  <bje@au.ibm.com>
29274
29275         * doc/invoke.texi (RS/6000 and PowerPC Options): Fix -msdata-data
29276         option; change to -msdata=data.
29277
29278 2009-03-18  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
29279
29280         * c.opt: Unify help texts for -Wdeprecated, -Wsystem-headers,
29281         and -fopenmp.
29282
29283 2009-03-18  Eric Botcazou  <ebotcazou@adacore.com>
29284
29285         PR target/35180
29286         * config/sparc/sparc.md (do_builtin_setjmp_setup): Prettify asm output.
29287
29288 2009-03-18  Sandra Loosemore  <sandra@codesourcery.com>
29289
29290         * doc/invoke.texi (Code Gen Options): Expand discussion of
29291         -fno-common.
29292
29293 2009-03-18  Jakub Jelinek  <jakub@redhat.com>
29294
29295         * dse.c (struct group_info): Reorder fields for 64-bit hosts.
29296         * matrix-reorg.c (struct matrix_info): Likewise.
29297         * tree-ssa-loop-ivopts.c (struct ivopts_data): Likewise.
29298         * rtl.h (struct mem_attrs): Likewise.
29299         * df.h (struct df): Likewise.
29300         * tree-data-ref.h (struct data_dependence_relation): Likewise.
29301         * ira-int.h (struct ira_allocno): Likewise.
29302         * df-scan.c (struct df_collection_rec): Likewise.
29303         * ira.c (struct equivalence): Likewise.
29304         * function.c (struct temp_slot): Likewise.
29305         * cfgloop.h (struct loop): Likewise.
29306
29307         PR debug/39485
29308         * function.c (use_register_for_decl): When not optimizing, disregard
29309         register keyword for variables with types containing methods.
29310
29311 2009-03-18  Sebastian Pop  <sebastian.pop@amd.com>
29312
29313         PR middle-end/39447
29314         * graphite.c (exclude_component_ref): Renamed contains_component_ref_p.
29315         (is_simple_operand): Call contains_component_ref_p before calling data
29316         reference analysis that would fail on COMPONENT_REFs.
29317
29318         * tree-vrp.c (search_for_addr_array): Fix formatting.
29319
29320 2009-03-18  Richard Guenther  <rguenther@suse.de>
29321
29322         * tree-vect-transform.c (vect_loop_versioning): Fold the
29323         generated comparisons.
29324         * tree-vectorizer.c (set_prologue_iterations): Likewise.
29325         (slpeel_tree_peel_loop_to_edge): Likewise.
29326
29327 2009-03-17  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
29328
29329         PR middle-end/37805
29330         * opts.c (print_specific_help): In addition to `undocumented',
29331         accept `separate' and `joined' flags if passed alone.  Describe
29332         output by the first matched one of those.
29333         (common_handle_option): Skip over empty strings.
29334         * gcc.c (display_help): Fix help string for `--help='.
29335         * doc/invoke.texi (Option Summary, Overall Options): With
29336         `--help=', classes and qualifiers can both be repeated, but
29337         only the latter can be negated.  One should not pass only
29338         negated qualifiers.  Fix markup and examples.
29339
29340         Revert
29341         2008-10-14  Jakub Jelinek  <jakub@redhat.com>
29342         PR middle-end/37805
29343         * opts.c (common_handle_option): Don't ICE on -fhelp=joined
29344         and -fhelp=separate.
29345
29346 2009-03-17  Jing Yu  <jingyu@google.com>
29347
29348         PR middle-end/39378
29349         * function.h (struct rtl_data): Move is_thunk from here...
29350         (struct function): ...to here.
29351         * cp/method.c (use_thunk): Change is_thunk from crtl to cfun.
29352         * varasm.c (assemble_start_function): Change is_thunk from crtl to
29353         cfun.
29354         * config/alpha/alpha.c (alpha_sa_mask): Change is_thunk from crtl to
29355         cfun.
29356         (alpha_does_function_need_gp, alpha_start_function): Likewise.
29357         (alpha_output_function_end_prologue): Likewise.
29358         (alpha_end_function, alpha_output_mi_thunk_osf): Likewise.
29359         * config/rs6000/rs6000.c (rs6000_ra_ever_killed): Likewise.
29360         (rs6000_output_function_epilogue): Likewise.
29361         * config/arm/arm.h (ARM_DECLARE_FUNCTION_NAME): Likewise.
29362
29363 2009-03-17  Uros Bizjak  <ubizjak@gmail.com>
29364
29365         PR target/39482
29366         * config/i386/i386.md (*truncdfsf_mixed): Avoid combining registers
29367         from different units in a single alternative.
29368         (*truncdfsf_i387): Ditto.
29369         (*truncxfsf2_mixed): Ditto.
29370         (*truncxfdf2_mixed): Ditto.
29371
29372 2009-03-17  Jakub Jelinek  <jakub@redhat.com>
29373
29374         * dwarf2out.c (dwarf2out_imported_module_or_decl_1): Allow
29375         non-NAMESPACE_DECL IMPORTED_DECL_ASSOCIATED_DECL.
29376
29377         PR debug/39474
29378         * tree-ssa-live.c (remove_unused_locals): Don't remove local
29379         unused non-artificial variables when not optimizing.
29380
29381         PR debug/39471
29382         * dwarf2out.c (dwarf2out_imported_module_or_decl_1): Emit
29383         DW_TAG_imported_module even if decl is IMPORTED_DECL with
29384         NAMESPACE_DECL in its DECL_INITIAL.
29385
29386         PR middle-end/39443
29387         * optabs.c (set_user_assembler_libfunc): New function.
29388         * expr.h (set_user_assembler_libfunc): New prototype.
29389         * c-common.c: Include libfuncs.h.
29390         (set_builtin_user_assembler_name): Call set_user_assembler_libfunc
29391         for memcmp, memset, memcpy, memmove and abort.
29392         * Makefile.in (c-common.o): Depend on libfuncs.h.
29393
29394         PR debug/39412
29395         * dwarf2out.c (gen_inlined_enumeration_type_die,
29396         gen_inlined_structure_type_die, gen_inlined_union_type_die,
29397         gen_tagged_type_instantiation_die): Removed.
29398         (gen_decl_die): For TYPE_DECL_IS_STUB with non-NULL decl_origin
29399         do nothing.
29400
29401 2009-03-17  Janis Johnson  <janis187@us.ibm.com>
29402
29403         PR testsuite/38526
29404         * Makefile.in (site.exp): Rename TEST_GCC_EXEC_PREFIX and comment
29405         its use.
29406         (check-%): Don't set GCC_EXEC_PREFIX when invoking runtest.
29407         (check-parallel-%): Ditto.
29408         (check-consistency): Ditto.
29409
29410 2009-03-17  Kai Tietz  <kai.tietz@onevision.com>
29411
29412         * ipa-struct-reorg.c (create_general_new_stmt): Initialize
29413         local variable rhs by NULL_TREE.
29414
29415 2009-03-17  H.J. Lu  <hongjiu.lu@intel.com>
29416
29417         PR target/39477
29418         * doc/extend.texi: Correct register behavior for regparm on Intel 386.
29419
29420 2009-03-17  H.J. Lu  <hongjiu.lu@intel.com>
29421
29422         PR target/39476
29423         * config/i386/i386.c (ix86_function_regparm): Rewrite for 64bit.
29424
29425 2009-03-17  H.J. Lu  <hongjiu.lu@intel.com>
29426
29427         PR target/39473
29428         * config/i386/i386.c (ix86_expand_call): Check extra clobbers
29429         for ms->sysv ABI calls only in 64bit mode.
29430
29431         * config/i386/i386.md (untyped_call): Support 32bit.
29432
29433 2009-03-16  H.J. Lu  <hongjiu.lu@intel.com>
29434
29435         * doc/extend.texi: Replace x86_65 with x86_64.
29436
29437 2009-03-16  Jakub Jelinek  <jakub@redhat.com>
29438
29439         PR tree-optimization/39455
29440         * tree-ssa-loop-niter.c (number_of_iterations_lt_to_ne): Fix types
29441         mismatches for POINTER_TYPE_P (type).
29442         (number_of_iterations_le): Likewise.
29443
29444 2009-03-16  Hariharan Sandanagobalane  <hariharan@picochip.com>
29445
29446         * config/picochip/picochip.c: Removed profiling support.
29447         * config/picochip/picochip.md: Removed profiling instruction.
29448         * config/picochip/picochip.h: Removed profiling builtin.
29449
29450 2009-03-16  Joseph Myers  <joseph@codesourcery.com>
29451
29452         * doc/install.texi (--with-host-libstdcxx): Document.
29453
29454 2009-03-14  Anatoly Sokolov  <aesok@post.ru>
29455
29456         PR target/34299
29457         * config/avr/avr.c (avr_handle_fndecl_attribute): Move code for
29458         generate a warning if the function name does not begin with
29459         "__vector" and the function has either the 'signal' or 'interrupt'
29460         attribute, from here to ...
29461         (avr_declare_function_name): ...here. New function.
29462         * config/avr/avr.h (ASM_DECLARE_FUNCTION_NAME): Redefine.
29463         * config/avr/avr-protos.h (avr_declare_function_name): Declare.
29464
29465 2009-03-14  Jakub Jelinek  <jakub@redhat.com>
29466
29467         PR bootstrap/39454
29468         * cse.c (fold_rtx): Don't modify original const_arg1 when
29469         canonicalizing SHIFT_COUNT_TRUNCATED shift count, do it on a
29470         separate variable instead.
29471         * rtlanal.c (nonzero_bits1) <case ASHIFTRT>: Don't assume anything
29472         from out of range shift counts.
29473         (num_sign_bit_copies1) <case ASHIFTRT, case ASHIFT>: Similarly.
29474
29475 2009-03-13  Catherine Moore  <clm@codesourcery.com>
29476
29477         * config/i386/x-mingw32 (host-mingw32.o): Replace
29478         diagnostic.h with $(DIAGNOSTIC_H).
29479
29480 2009-03-12  Jakub Jelinek  <jakub@redhat.com>
29481
29482         PR target/39431
29483         * config/i386/predicates.md (cmpxchg8b_pic_memory_operand): New
29484         predicate.
29485         * config/i386/sync.md (sync_compare_and_swap<mode>,
29486         sync_compare_and_swap_cc<mode>): For DImode with -m32 -fpic check
29487         if operands[1] is cmpxchg8b_pic_memory_operand, if not force address
29488         into a register.
29489         (sync_double_compare_and_swapdi_pic,
29490         sync_double_compare_and_swap_ccdi_pic): Require operand 1 to be
29491         cmpxchg8b_pic_memory_operand instead of just memory_operand.
29492
29493 2009-03-12  H.J. Lu  <hongjiu.lu@intel.com>
29494
29495         PR target/39445
29496         * config/i386/i386.c (ix86_expand_push): Don't set memory alignment.
29497
29498 2009-03-12  H.J. Lu  <hongjiu.lu@intel.com>
29499
29500         PR target/39327
29501         * config/i386/sse.md (avx_addsubv8sf3): Correct item bits.
29502         (avx_addsubv4df3): Likewise.
29503         (*avx_addsubv4sf3): Likewise.
29504         (sse3_addsubv4sf3): Likewise.
29505
29506 2009-03-12  H.J. Lu  <hongjiu.lu@intel.com>
29507
29508         PR target/38824
29509         * config/i386/i386.md: Compare REGNO on the new peephole2 patterns.
29510
29511 2009-03-12  Vladimir Makarov  <vmakarov@redhat.com>
29512
29513         PR debug/39432
29514         * ira-int.h (struct allocno): Fix comment for calls_crossed_num.
29515         * ira-conflicts.c (ira_build_conflicts): Prohibit call used
29516         registers for allocnos created from user-defined variables.
29517
29518 2009-03-11  Ulrich Weigand  <Ulrich.Weigand@de.ibm.com>
29519
29520         PR target/39181
29521         * config/spu/spu.c (spu_expand_mov): Handle invalid subregs
29522         of non-integer mode as well.
29523
29524 2009-03-11  Adam Nemet  <anemet@caviumnetworks.com>
29525
29526         * gimplify.c (gimplify_call_expr): Don't set CALL_CANNOT_INLINE_P
29527         for functions for which the parameter types are unknown.
29528
29529 2009-03-11  Jakub Jelinek  <jakub@redhat.com>
29530
29531         PR target/39137
29532         * cfgexpand.c (get_decl_align_unit): Use LOCAL_DECL_ALIGNMENT macro.
29533         * defaults.h (LOCAL_DECL_ALIGNMENT): Define if not yet defined.
29534         * config/i386/i386.h (LOCAL_DECL_ALIGNMENT): Define.
29535         * config/i386/i386.c (ix86_local_alignment): For
29536         -m32 -mpreferred-stack-boundary=2 use 32-bit alignment for
29537         long long variables on the stack to avoid dynamic realignment.
29538         Allow the first argument to be a decl rather than type.
29539         * doc/tm.texi (LOCAL_DECL_ALIGNMENT): Document.
29540
29541 2009-03-11  Nick Clifton  <nickc@redhat.com>
29542
29543         PR target/5362
29544         * config/mcore/mcore.opt: Remove deprecated m4align and m8align
29545         options.
29546         Add description to mno-lsim option.
29547         * config/mcore/mcore.h: Remove comment about deprecated m4align
29548         option.
29549         (TARGET_DEFAULT): Remove deprecated MASK_M8ALIGN.
29550         * doc/invoke.texi: Add description of mno-lsim and
29551         mstack-increment options.
29552
29553         * config/fr30/fr30.opt: Document the -mno-lsim option.
29554         * doc/invoke.texi: Add descriptions of the FR30's -msmall-model
29555         and -mno-lsim options.
29556
29557 2009-03-11  Ulrich Weigand  <Ulrich.Weigand@de.ibm.com>
29558
29559         * fold-const.c (fold_comparison): Only call fold_inf_compare
29560         if the mode supports infinities.
29561
29562 2009-03-11  Jason Merrill  <jason@redhat.com>
29563
29564         PR debug/39086
29565         * tree-nrv.c (tree_nrv): Don't do this optimization if the front
29566         end already did.  Notice GIMPLE_CALL modifications of the result.
29567         Don't copy debug information from an ignored decl or a decl from
29568         another function.
29569
29570 2009-03-10  Richard Guenther  <rguenther@suse.de>
29571             Nathan Froyd  <froydnj@codesourcery.com>
29572
29573         PR middle-end/37850
29574         * libgcc2.c (__mulMODE3): Use explicit assignments to form the result.
29575         (__divMODE3): Likewise.
29576
29577 2009-03-09  Jakub Jelinek  <jakub@redhat.com>
29578
29579         PR tree-optimization/39394
29580         * gimplify.c (gimplify_type_sizes): Gimplify DECL_SIZE and
29581         DECL_SIZE_UNIT of variable length FIELD_DECLs.
29582
29583 2009-03-09  Andreas Krebbel  <Andreas.Krebbel@de.ibm.com>
29584
29585         * recog.c (verfiy_changes): Disallow renaming of hard regs in
29586         inline asms for register asm ("") declarations.
29587
29588 2009-03-09  Eric Botcazou  <ebotcazou@adacore.com>
29589
29590         * fold-const.c (fold_unary): Fix comment.
29591
29592 2009-03-07  Jan Hubicka  <jh@suse.cz>
29593
29594         PR target/39361
29595         * tree-inline.c (setup_one_parameter): Do replacement of const
29596         argument by constant in SSA form.
29597
29598 2009-03-07  Ulrich Weigand  <Ulrich.Weigand@de.ibm.com>
29599
29600         PR middle-end/38028
29601         * function.c (assign_parm_setup_stack): Use STACK_SLOT_ALIGNMENT to
29602         determine alignment passed to assign_stack_local.
29603         (assign_parms_unsplit_complex): Likewise.
29604         * except.c (sjlj_build_landing_pads): Likewise.
29605
29606 2009-03-06  Jakub Jelinek  <jakub@redhat.com>
29607
29608         PR middle-end/39360
29609         * tree-flow.h (add_referenced_var): Return bool instead of void.
29610         * tree-dfa.c (add_referenced_var): Return result of
29611         referenced_var_check_and_insert call.
29612         * tree-inline.c (expand_call_inline): Call add_referenced_var instead
29613         of referenced_var_check_and_insert.
29614
29615         PR debug/39372
29616         * dwarf2out.c (add_abstract_origin_attribute): Return origin_die.
29617         (gen_variable_die): Emit DW_AT_location on abstract static variable's
29618         DIE, don't emit it if abstract origin already has it.
29619         * tree-cfg.c (remove_useless_stmts_bind): GIMPLE_BINDs with any
29620         BLOCK_NONLOCALIZED_VARS in its gimple_bind_block aren't useless.
29621
29622 2009-03-06  Jan-Benedict Glaw  <jbglaw@lug-owl.de>
29623
29624         * genpreds.c (needs_variable): Fix parentheses at variable name
29625         detection.
29626         (write_tm_constrs_h): Indent generated code.
29627
29628 2009-03-06  Ramana Radhakrishnan  <ramana.radhakrishnan@arm.com>
29629
29630         * doc/extend.texi (Function Attributes): Add documentation
29631         for isr attributes.
29632
29633 2009-03-06  Jakub Jelinek  <jakub@redhat.com>
29634
29635         PR debug/39387
29636         * dwarf2out.c (dwarf2out_imported_module_or_decl_1): For IMPORTED_DECL
29637         take locus from its DECL_SOURCE_LOCATION instead of input_location.
29638
29639 2009-03-05  Bernd Schmidt  <bernd.schmidt@analog.com>
29640
29641         * config/bfin/bfin.c (bfin_discover_loop): When retrying fails, mark
29642         the loop as bad.
29643
29644 2009-03-05  Jakub Jelinek  <jakub@redhat.com>
29645
29646         PR debug/39379
29647         * tree-cfg.c (remove_useless_stmts_bind): Don't remove GIMPLE_BINDs
29648         with blocks containing IMPORTED_DECLs in BLOCK_VARS.
29649
29650 2009-03-05  Uros Bizjak  <ubizjak@gmail.com>
29651
29652         * config/i386/i386.md (R8_REG, R9_REG): New constants.
29653         * config/i386/i386.h (CONDITIONAL_REGISTER_USAGE): Use named
29654         constants instead of magic numbers.
29655         (HARD_REGNO_CALLER_SAVE_MODE): Ditto.
29656         (QI_REG_P): Ditto.
29657         * config/i386/i386.c (x86_64_int_parameter_registers): Ditto.
29658         (x86_64_ms_abi_int_parameter_registers): Ditto.
29659         (x86_64_int_return_registers): Ditto.
29660         (ix86_maybe_switch_abi): Ditto.
29661         (ix86_expand_call): Ditto for clobbered_registers array.
29662         (ix86_hard_regno_mode_ok): Ditto.
29663         (x86_extended_QIreg_mentioned_p): Ditto.
29664
29665 2009-03-05  J"orn Rennecke  <joern.rennecke@arc.com>
29666
29667         PR tree-optimization/39349
29668         * cse.c (cse_insn): Fix loop to stop at VOIDmode.
29669
29670         * combine.c (gen_lowpart_for_combine): Use omode when generating
29671         clobber.
29672
29673 2009-03-04  J"orn Rennecke  <joern.rennecke@arc.com>
29674
29675         PR rtl-optimization/39235
29676         * loop-iv.c (get_simple_loop_desc): Use XCNEW.
29677
29678 2009-03-04  Zdenek Dvorak  <ook@ucw.cz>
29679
29680         * graphite.c (nb_reductions_in_loop): Update simple_iv arguments.
29681
29682 2009-03-04  Richard Guenther  <rguenther@suse.de>
29683
29684         PR tree-optimization/39362
29685         * tree-ssa-sccvn.c (visit_use): Stores and copies from SSA_NAMEs
29686         that occur in abnormal PHIs should be varying.
29687
29688 2009-03-04  Zdenek Dvorak  <ook@ucw.cz>
29689
29690         * tree-scalar-evolution.c (analyze_scalar_evolution_in_loop):
29691         Extend comments.
29692         (simple_iv):  Take loop as an argument instead of statement.
29693         * tree-scalar-evolution.h (simple_iv): Declaration changed.
29694         * tree-ssa-loop-niter.c (number_of_iterations_exit): Update calls
29695         to simple_iv.
29696         * tree-ssa-loop-ivopts.c (determine_biv_step, find_givs_in_stmt_scev):
29697         Ditto.
29698         * tree-parloops.c (loop_parallel_p, canonicalize_loop_ivs): Ditto.
29699         * matrix-reorg.c (analyze_transpose): Ditto.
29700         * tree-data-ref.c (dr_analyze_innermost): Ditto.
29701         * tree-vect-analyze.c (vect_analyze_data_refs): Ditto.
29702         * tree-predcom.c (ref_at_iteration): Ditto.
29703         * tree-ssa-loop-prefetch.c (idx_analyze_ref): Ditto.
29704
29705 2009-03-04  Richard Guenther  <rguenther@suse.de>
29706
29707         PR tree-optimization/39358
29708         * tree-ssa-structalias.c (do_sd_constraint): Fix check for
29709         escaped_id and callused_id.
29710         (solve_graph): Likewise.
29711
29712 2009-03-04  Richard Guenther  <rguenther@suse.de>
29713
29714         PR tree-optimization/39339
29715         * tree-sra.c (try_instantiate_multiple_fields): Make it
29716         no longer ICE on the above.
29717
29718 2009-03-03  Joseph Myers  <joseph@codesourcery.com>
29719
29720         * emit-rtl.c (adjust_address_1): Reduce offset to a signed value
29721         that fits within Pmode.
29722
29723 2009-03-03  Steve Ellcey  <sje@cup.hp.com>
29724
29725         PR middle-end/10109
29726         * tm.texi (LIBCALL_VALUE): Update description.
29727
29728 2009-03-03  Steve Ellcey  <sje@cup.hp.com>
29729
29730         PR middle-end/34443
29731         * doc/extend.texi (section): Update description.
29732
29733 2009-03-03  H.J. Lu  <hongjiu.lu@intel.com>
29734
29735         PR middle-end/39345
29736         * tree-inline.c (remapped_type): New.
29737         (can_be_nonlocal): Call remapped_type instead of remap_type.
29738
29739 2009-03-03  Jakub Jelinek  <jakub@redhat.com>
29740
29741         PR fortran/39354
29742         * gimplify.c (goa_stabilize_expr): Handle tcc_comparison,
29743         TRUTH_ANDIF_EXPR and TRUTH_ORIF_EXPR.
29744
29745 2009-03-03  Richard Guenther  <rguenther@suse.de>
29746
29747         PR middle-end/39272
29748         * tree.c (tree_nonartificial_location): New function.
29749         * tree.h (tree_nonartificial_location): Declare.
29750         * builtins.c (expand_builtin_memory_chk): Provide location
29751         of the call location for artificial function pieces.
29752         (maybe_emit_chk_warning): Likewise.
29753         (maybe_emit_sprintf_chk_warning): Likewise.
29754         (maybe_emit_free_warning): Likewise.
29755         * expr.c (expand_expr_real_1): Likewise.
29756
29757 2009-03-03  Jakub Jelinek  <jakub@redhat.com>
29758
29759         PR tree-optimization/39343
29760         * tree-ssa-ccp.c (maybe_fold_offset_to_address): Don't check if
29761         COMPONENT_REF t has ARRAY_TYPE.
29762
29763 2009-03-02  Sebastian Pop  <sebastian.pop@amd.com>
29764
29765         PR middle-end/39335
29766         * tree-parloops.c (canonicalize_loop_ivs): Call fold_convert
29767         when the type precision of the induction variable should be
29768         larger than the type precision of nit.
29769         (gen_parallel_loop): Update use of canonicalize_loop_ivs.
29770         * graphite.c (graphite_loop_normal_form): Same.
29771         * tree-flow.h (canonicalize_loop_ivs): Update declaration.
29772
29773 2009-03-02  Uros Bizjak  <ubizjak@gmail.com>
29774
29775         * config/i386/i386.md (ST?_REG, MM?_REG): New constants.
29776         (*call_1_rex64_ms_sysv): Use named constants instead of magic
29777         numbers to describe clobbered registers.
29778         (*call_value_0_rex64_ms_sysv): Ditto.
29779         * config/i386/mmx.md (mmx_emms): Ditto.
29780         (mmx_femms): Ditto.
29781
29782 2009-03-02  Richard Sandiford  <rdsandiford@googlemail.com>
29783
29784         * config/mips/mips.c (mips_mdebug_abi_name): Fix the handling
29785         of ABI_64.
29786
29787 2009-03-02  Ulrich Weigand  <Ulrich.Weigand@de.ibm.com>
29788
29789         * config/spu/spu.c (TARGET_SECTION_TYPE_FLAGS): Define.
29790         (spu_section_type_flags): New function.
29791
29792 2009-03-02  Uros Bizjak  <ubizjak@gmail.com>
29793
29794         * config/i386/i386.h (CONDITIONAL_REGISTER_USAGE): Do not copy
29795         reg_class_contents of FLOAT_REGS into a temporary.
29796
29797 2009-03-02  Richard Guenther  <rguenther@suse.de>
29798             Ira Rosen  <irar@il.ibm.com>
29799
29800         PR tree-optimization/39318
29801         * tree-vect-transform.c (vectorizable_call): Transfer the EH region
29802         information to the vectorized statement.
29803
29804 2009-03-01  Uros Bizjak  <ubizjak@gmail.com>
29805
29806         * config/i386/i386.h (CONDITIONAL_REGISTER_USAGE): Do not shadow "i"
29807         variable.  Use defined names instead of magic constants for REX SSE
29808         registers.
29809
29810 2009-03-01  Richard Guenther  <rguenther@suse.de>
29811
29812         PR tree-optimization/39331
29813         * omp-low.c (lower_send_shared_vars): Do not receive new
29814         values for the reference of DECL_BY_REFERENCE parms or results.
29815
29816 2009-03-01  Jan Hubicka  <jh@suse.cz>
29817
29818         PR debug/39267
29819         * tree.h (BLOCK_NONLOCALIZED_VARS, BLOCK_NUM_NONLOCALIZED_VARS,
29820         BLOCK_NONLOCALIZED_VAR): New macros.
29821         (tree_block): Add nonlocalized_vars.
29822         * dwarf2out.c (gen_formal_parameter_die, gen_variable_die,
29823         gen_decl_die): Add origin argument.  Allow generation of die with
29824         origin at hand only.
29825         (gen_member_die, gen_type_die_with_usage, force_decl_die,
29826         declare_in_namespace, gen_namescpace_die, dwarf2out_decl): Update use
29827         of gen_*.
29828         (gen_block_die): Fix checking for unused blocks.
29829         (process_scope_var): Break out from .... ; work with origins only.
29830         (decls_for_scope) ... here; process nonlocalized list.
29831         (dwarf2out_ignore_block): Look for nonlocalized vars.
29832         * tree-ssa-live.c (remove_unused_scope_block_p): Look for nonlocalized
29833         vars.
29834         (dump_scope_block): Dump them.
29835         * tree-inline.c (remap_decls): Handle nonlocalized vars.
29836         (remap_block): Likewise.
29837         (can_be_nonlocal): New predicate.
29838         (copy_bind_expr, copy_gimple_bind): Update use of remap_block.
29839
29840 2009-03-01  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
29841
29842         * configure: Regenerate.
29843
29844 2009-03-01  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
29845
29846         * optc-gen.awk: No need to duplicate option flags twice.
29847         Reuse help texts for duplicate options which do not have any.
29848
29849         * gcc.c (display_help): Document --version.
29850
29851         * gcc.c (main): If print_help_list and verbose_flag, ensure
29852         driver output comes before subprocess output.
29853
29854         * optc-gen.awk: Assign all remaining fields to help string,
29855         space-separated, for multi-line help in *.opt.
29856
29857         * doc/invoke.texi (Warning Options): -Wsync-nand is C/C++ only.
29858         -Wno-pedantic-ms-format is for MinGW targets only.
29859
29860         * doc/options.texi (Option file format): Fix bad indentation,
29861         restoring dropped sentence.
29862
29863 2009-02-28  Jan Hubicka  <jh@suse.cz>
29864
29865         * tree-inline.c (tree_function_versioning): Output debug info.
29866
29867 2009-02-28  Jan Hubicka  <jh@suse.cz>
29868
29869         PR debug/39267
29870         * tree-inline.c (setup_one_parameter): Do not copy propagate
29871         arguments when not optimizing.
29872
29873 2009-02-28  H.J. Lu  <hongjiu.lu@intel.com>
29874
29875         PR target/39327
29876         * config/i386/sse.md (avx_addsubv8sf3): Correct item bits.
29877         (avx_addsubv4df3): Likewise.
29878         (*avx_addsubv4sf3): Likewise.
29879         (sse3_addsubv4sf3): Likewise.
29880         (*avx_addsubv2df3): Likewise.
29881         (sse3_addsubv2df3): Likewise.
29882         (avx_unpckhps256): Correct item selectors.
29883         (avx_unpcklps256): Likewise.
29884         (avx_unpckhpd256): Likewise.
29885         (avx_unpcklpd256): Likewise.
29886
29887 2009-02-28  Jan Hubicka  <jh@suse.cz>
29888
29889         * tree-inline.c (expand_call_inline): Avoid duplicate declarations of
29890         static vars.
29891         (copy_arguments_for_versioning): If var is declared don't declare it.
29892         (tree_function_versioning): First setup substitutions and then copy
29893         args.
29894
29895 2009-02-27  Jan Hubicka  <jh@suse.cz>
29896
29897         PR debug/39267
29898         * cgraph.h (varpool_output_debug_info): Remove.
29899         * cgraphunit.c (varpool_output_debug_info): Remove.
29900         * dwarf2out.c (deferred_locations_struct): New struct
29901         (deferred_locations): New type.
29902         (deferred_locations_list): New static var.
29903         (deffer_location): New function.
29904         (gen_variable_die): Use it.
29905         (decls_for_scope): Output info on local static vars.
29906         (dwarf2out_finish): Process deferred locations.
29907         * varpool.c (varpool_output_debug_info): Remove.
29908
29909 2009-02-27  Jan Hubicka  <jh@suse.cz>
29910
29911         PR debug/39267
29912         * tree.h (TREE_PROTECTED): Fix comment.
29913         (BLOCK_HANDLER_BLOCK): Remove.
29914         (struct tree_block): Remove handler_block add body_block.
29915         (inlined_function_outer_scope_p): New.
29916         (is_body_block): Remove.
29917         * dbxout.c (dbxout_block): Remove BLOCK_HANDLER_BLOCK.
29918         * dwarf2out.c (is_inlined_entry_point): Remove.
29919         (add_high_low_attributes): Use inlined_function_outer_scope_p.
29920         (gen_block_die): Use is_inlined_entry_point check.  Remove body block
29921         code.
29922         * langhooks.h (struct lang_hooks): Remove no_bodu_blocks.
29923         * gimplify.c (gimplify_expr): Gimplify body blocks.
29924         * tree-ssa-live.c (remove_unused_scope_block_p): Allow removing wrapper
29925         block with multiple subblocks.
29926         (dump_scope_block): Prettier output; dump more flags and info.
29927         (dump_scope_blocks): New.
29928         (remove_unused_locals): Use dump_scope_blocks.
29929         * tree-flow.h (dump_scope_blocks): Declare.
29930         * tree-cfg.c (execute_build_cfg): Dump scope blocks.
29931         * stmt.c (is_body_block): Remove.
29932         * tree-inline.c (remap_block): Copy BODY_BLOCK info.
29933         * langhooks-def.h (LANG_HOOKS_NO_BODY_BLOCKS): Remove.
29934
29935 2009-02-27  Sebastian Pop  <sebastian.pop@amd.com>
29936
29937         PR middle-end/39308
29938         * graphite.c (graphite_loop_normal_form): Do not call
29939         number_of_iterations_exit from a gcc_assert.
29940
29941 2009-02-27  Andreas Krebbel  <Andreas.Krebbel@de.ibm.com>
29942
29943         * config/s390/s390.c (s390_swap_cmp): Look for conditional
29944         jumps if COND is NULL.
29945         (find_cond_jump): New function.
29946         (s390_z10_optimize_cmp): Handling for reg-reg compares added.
29947         * config/s390/s390.md: Remove z10_cobra attribute value.
29948
29949 2009-02-26  Uros Bizjak  <ubizjak@gmail.com>
29950
29951         * config/alpha/alpha.h (alpha_expand_mov): Return false if
29952         force_const_mem returns NULL_RTX.
29953
29954 2009-02-26  Jan Hubicka  <jh@suse.cz>
29955
29956         PR debug/39267
29957         * cgraph.h (varpool_output_debug_info): Remove.
29958         * cgraphunit.c (varpool_output_debug_info): Remove.
29959         * dwarf2out.c (deferred_locations_struct): New struct
29960         (deferred_locations): New type.
29961         (deferred_locations_list): New static var.
29962         (deffer_location): New function.
29963         (gen_variable_die): Use it.
29964         (decls_for_scope): Output info on local static vars.
29965         (dwarf2out_finish): Process deferred locations.
29966         * varpool.c (varpool_output_debug_info): Remove.
29967
29968 2009-02-25  H.J. Lu  <hongjiu.lu@intel.com>
29969
29970         PR rtl-optimization/39241
29971         * jump.c (rtx_renumbered_equal_p): Remove 2 superfluous calls
29972         to subreg_offset_representable_p.
29973
29974 2009-02-25  Paolo Bonzini  <bonzini@gnu.org>
29975
29976         * regmove.c (regmove_optimize): Conform to struct rtl_opt_pass
29977         execute function prototype.  Get f and nregs from max_reg_num
29978         and get_insns.  Remove the first backward pass as it's dead,
29979         guard the forward pass by flag_expensive_optimizations.
29980         (rest_of_handle_regmove): Delete.
29981         (pass_regmove): Replace it with regmove_optimize.
29982
29983 2009-02-25  Martin Jambor  <mjambor@suse.cz>
29984
29985         PR tree-optimization/39259
29986         * tree-inline.c (initialize_cfun): Remove asserts for calls_setjmp and
29987         calls_alloca function flags.
29988         (copy_bb): Set calls_setjmp and alls_alloca function flags if such
29989         calls are detected.
29990
29991 2009-02-25  Paolo Bonzini  <bonzini@gnu.org>
29992
29993         * regmove.c (discover_flags_reg, flags_set_1, mark_flags_life_zones,
29994         flags_set_1_rtx, flags_set_1_set): Delete.
29995         (regmove_optimize): Do not call mark_flags_life_zones.
29996
29997 2009-02-24  Julian Brown  <julian@codesourcery.com>
29998
29999         PR target/35965
30000         * config/arm/arm.c (require_pic_register): Only set
30001         cfun->machine->pic_reg once per function.
30002
30003 2009-02-24  Sandra Loosemore  <sandra@codesourcery.com>
30004
30005         * doc/invoke.texi (Link Options): Document an easier way to pass
30006         options that take arguments to the GNU linker using -Xlinker and -Wl.
30007
30008 2009-02-24  Steve Ellcey  <sje@cup.hp.com>
30009
30010         PR target/33785
30011         * doc/tm.texi (TARGET_C99_FUNCTIONS): Fix description.
30012
30013 2009-02-24  Richard Guenther  <rguenther@suse.de>
30014
30015         PR debug/39285
30016         * dwarf2out.c (gen_enumeration_type_die): Handle CONST_DECLs.
30017
30018 2009-02-24  Richard Guenther  <rguenther@suse.de>
30019             Zdenek Dvorak  <ook@ucw.cz>
30020
30021         PR tree-optimization/39233
30022         * tree-ssa-loop-ivopts.c (add_candidate_1): Do not except pointers
30023         from converting them to a generic type.
30024
30025 2009-02-23  Sebastian Pop  <sebastian.pop@amd.com>
30026
30027         PR tree-optimization/39260
30028         * graphite.c (harmful_stmt_in_bb): Stop a SCoP when the basic block
30029         contains a condition with a real type.
30030         (build_scop_conditions_1): Conditions are always last_stmt of a bb.
30031
30032 2009-02-23  Jason Merrill  <jason@redhat.com>
30033
30034         PR c++/38880
30035         * varasm.c (initializer_constant_valid_p) [PLUS_EXPR]: Check
30036         narrowing_initializer_constant_valid_p.
30037         (narrowing_initializer_constant_valid_p): Don't return
30038         null_pointer_node for adding a pointer to itself.
30039
30040 2009-02-23  Jan Hubicka  <jh@suse.cz>
30041
30042         PR c/12245
30043         * ggc.h (htab_create_ggc): Use ggc_free to free hashtable when
30044         resizing.
30045
30046 2009-02-23  Jan Hubicka  <jh@suse.cz>
30047
30048         PR tree-optimization/37709
30049         * tree.c (block_ultimate_origin): Move here from dwarf2out.
30050         * tree.h (block_ultimate_origin): Declare.
30051         * dwarf2out.c (block_ultimate_origin): Move to tree.c
30052         * tree-ssa-live.c (remove_unused_scope_block_p):
30053         Eliminate blocks containig no instructions nor live variables nor
30054         nested blocks.
30055         (dump_scope_block): New function.
30056         (remove_unused_locals): Enable removal of dead blocks by default;
30057         enable dumping at TDF_DETAILS.
30058
30059 2009-02-21  H.J. Lu  <hongjiu.lu@intel.com>
30060
30061         * config/i386/i386.c (classify_argument): Don't allow COImode
30062         and OImode.
30063         (function_arg_advance_32): Don't allow OImode.
30064         (function_arg_32): Likewise.
30065         (function_value_32): Likewise.
30066         (return_in_memory_32): Likewise.
30067         (function_arg_64): Remove OImode comment.
30068
30069 2009-02-21  H.J. Lu  <hongjiu.lu@intel.com>
30070
30071         PR target/39261
30072         * config/i386/i386.c (ix86_expand_vector_init_one_nonzero): Use
30073         ix86_expand_vector_set for V4DImode in 64bit mode only.
30074         (ix86_expand_vector_init_one_var): Likewise.
30075
30076 2009-02-21  Sebastian Pop  <sebastian.pop@amd.com>
30077
30078         * graphite.c (graphite_trans_loop_block): Adjust tile size to 51.
30079
30080 2009-02-21  Richard Sandiford  <rdsandiford@googlemail.com>
30081
30082         PR bootstrap/39257
30083         * loop-iv.c: Revert last change.
30084         * emit-rtl.c: Likewise.
30085
30086 2009-02-21  H.J. Lu  <hongjiu.lu@intel.com>
30087
30088         PR target/39256
30089         * config/i386/i386.c (type_natural_mode): Remove an extra
30090         space in the warning message.
30091         (function_value_32): Handle 32-byte vector modes.
30092         (return_in_memory_32): Likewise.
30093
30094 2009-02-21  Richard Sandiford  <rdsandiford@googlemail.com>
30095
30096         * loop-iv.c (truncate_value): New function.
30097         (iv_subreg, get_iv_value, iv_number_of_iterations): Use it instead
30098         of lowpart_subreg.
30099         (lowpart_subreg): Move to...
30100         * emit-rtl.c: ...here.
30101
30102 2009-02-21  Danny Smith  <dannysmith@users.sourceforge.net>
30103
30104         * config/i386/winnt.c (i386_pe_asm_output_aligned_decl_common): Revert
30105         accidental and undocumented change at revision 140860.
30106
30107 2009-02-21  Joseph Myers  <joseph@codesourcery.com>
30108
30109         * config/arm/arm.c (arm_gimplify_va_arg_expr): Update prototype to
30110         take gimple_seq * arguments.
30111         (arm_mangle_type): Use CONST_CAST_TREE on type argument passed to
30112         types_compatible_p langhook.
30113
30114 2009-02-20  Mark Mitchell  <mark@codesourcery.com>
30115             Joseph Myers  <joseph@codesourcery.com>
30116
30117         * config/arm/arm.c (arm_builtin_va_list): New function.
30118         (arm_expand_builtin_va_start): Likewise.
30119         (arm_gimplify_va_arg_expr): Likewise.
30120         (TARGET_BUILD_BUILTIN_VA_LIST): Define.
30121         (TARGET_BUILD_BUILTIN_VA_START): Likewise.
30122         (TARGET_BUILD_BUILTIN_VA_ARG_EXPR): Likewise.
30123         (va_list_type): New variable.
30124         (arm_mangle_type): Mangle va_list_type appropriately.
30125
30126 2009-02-20  Jakub Jelinek  <jakub@redhat.com>
30127
30128         PR middle-end/39157
30129         * Makefile.in (loop-invariant.o): Depend on $(PARAMS_H).
30130         * params.h (LOOP_INVARIANT_MAX_BBS_IN_LOOP): Define.
30131         * params.def (loop-invariant-max-bbs-in-loop): New parameter.
30132         * opts.c (decode_options): Set loop-invariant-max-bbs-in-loop
30133         parameter to 1000 for -O1 by default.
30134         * doc/invoke.texi (loop-invariant-max-bbs-in-loop): Document new
30135         parameter.
30136         * loop-invariant.c: Include params.h.
30137         (move_loop_invariants): Don't call move_single_loop_invariants on
30138         very large loops.
30139
30140 2009-02-20  Jaka Mocnik  <jaka@xlab.si>
30141
30142         * calls.c (emit_library_call_value_1): Use slot_offset instead of
30143         offset when calculating bounds for indexing stack_usage_map.  Fixes
30144         a buffer overflow with certain target setups.
30145
30146 2009-02-20  Jakub Jelinek  <jakub@redhat.com>
30147
30148         PR target/39240
30149         * calls.c (expand_call): Clear try_tail_call if caller and callee
30150         disagree in promotion of function return value.
30151
30152 2009-02-19  Jakub Jelinek  <jakub@redhat.com>
30153
30154         PR target/39175
30155         * c-common.c (c_determine_visibility): If visibility changed and
30156         DECL_RTL has been already set, call make_decl_rtl to update symbol
30157         flags.
30158
30159 2009-02-19  H.J. Lu  <hongjiu.lu@intel.com>
30160
30161         PR c++/39188
30162         * varasm.c (assemble_variable): Don't check DECL_NAME when
30163         globalizing a variable.
30164
30165 2009-02-19  Joseph Myers  <joseph@codesourcery.com>
30166
30167         PR c/38483
30168         * builtins.c (gimplify_va_arg_expr): Evaluate the va_list
30169         expression before any __builtin_trap call.
30170         * c-typeck.c (build_function_call): Convert and check function
30171         arguments before generating a call to a trap.  Evaluate the
30172         function arguments before the trap.
30173
30174 2009-02-19  Uros Bizjak  <ubizjak@gmail.com>
30175
30176         PR target/39228
30177         * config/i386/i386.md (isinfxf2): Split from isinf<mode>2.
30178         (UNSPEC_FXAM_MEM): New unspec.
30179         (fxam<mode>2_i387_with_temp): New insn and split pattern.
30180         (isinf<mode>2): Use MODEF mode iterator.  Force operand[1] through
30181         memory using fxam<mode>2_i387_with_temp to remove excess precision.
30182
30183 2009-02-19  Richard Guenther  <rguenther@suse.de>
30184
30185         PR tree-optimization/39207
30186         PR tree-optimization/39074
30187         * tree-ssa-structalias.c (storedanything_id, var_storedanything,
30188         storedanything_tree): New.
30189         (do_ds_constraint): Simplify ANYTHING shortcutting.  Update
30190         the STOREDANYTHING solution if the lhs solution contains ANYTHING.
30191         (build_succ_graph): Add edges from STOREDANYTHING to all
30192         non-direct nodes.
30193         (init_base_vars): Initialize STOREDANYTHING.
30194         (compute_points_to_sets): Free substitution info after
30195         building the succ graph.
30196         (ipa_pta_execute): Likewise.
30197
30198         * tree-ssa-structalias.c (struct variable_info): Add may_have_pointers
30199         field.
30200         (do_ds_constraint): Do not add to special var or non-pointer
30201         field solutions.
30202         (type_could_have_pointers): Split out from ...
30203         (could_have_pointers): ... here.  For arrays use the element type.
30204         (create_variable_info_for): Initialize may_have_pointers.
30205         (new_var_info): Likewise.
30206         (handle_lhs_call): Make the HEAP variable unknown-sized.
30207         (intra_create_variable_infos): Use a type with pointers for
30208         PARM_NOALIAS, make it unknown-sized.
30209
30210 2009-02-18  H.J. Lu  <hongjiu.lu@intel.com>
30211
30212         PR target/39224
30213         * config/i386/i386.c (ix86_return_in_memory): Properly check ABI.
30214
30215 2009-02-18  Jason Merrill  <jason@redhat.com>
30216
30217         PR target/39179
30218         * tree-ssa-ccp.c (get_symbol_constant_value): Don't assume zero
30219         value if DECL_EXTERNAL.
30220         * tree-sra.c (sra_walk_gimple_assign): Likewise.
30221         * target.h (gcc_target::binds_local_p): Clarify "module".
30222         * tree.h (TREE_PUBLIC): Clarify "module".
30223
30224 2009-02-17  Xuepeng Guo  <xuepeng.guo@intel.com>
30225
30226         PR target/38891
30227         * config/i386/i386.h (CONDITIONAL_REGISTER_USAGE): Move the hunk of
30228         initialization for MS_ABI prior to the hunk of !TARGET_MMX.
30229
30230 2009-02-17  H.J. Lu  <hongjiu.lu@intel.com>
30231
30232         PR target/39082
30233         * c.opt (Wabi): Support C and ObjC.
30234         (Wpsabi): New.
30235
30236         * c-opts.c (c_common_handle_option): Handle OPT_Wabi.
30237
30238         * config/i386/i386.c (classify_argument): Warn once about the ABI
30239         change when passing union with long double.
30240
30241         * doc/invoke.texi: Update -Wabi for warning psABI changes.
30242
30243 2009-02-18  Joseph Myers  <joseph@codesourcery.com>
30244
30245         PR c/35447
30246         * c-parser.c (c_parser_compound_statement): Always enter and leave
30247         a scope.
30248
30249 2009-02-17  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
30250
30251         PR target/34587
30252         * config/darwin.h (SUPPORTS_INIT_PRIORITY): Define.
30253
30254 2009-02-18  Jakub Jelinek  <jakub@redhat.com>
30255
30256         PR tree-optimization/36922
30257         * tree-data-ref.c (initialize_matrix_A): Handle BIT_NOT_EXPR.
30258         * tree-scalar-evolution.c (interpret_rhs_expr, instantiate_scev_1):
30259         Likewise.
30260
30261 2009-02-17  Richard Sandiford  <rdsandiford@googlemail.com>
30262
30263         * config/mips/mips.c (mips_override_options): Set flag_dwarf2_cfi_asm
30264         to 0 for EABI64.
30265
30266 2009-02-17  Richard Sandiford  <rdsandiford@googlemail.com>
30267
30268         * config/mips/mips.md (type): Reclassify lui_movf as "unknown".
30269
30270 2009-02-17  Richard Sandiford  <rdsandiford@googlemail.com>
30271
30272         * config/mips/mips.c (mips_gimplify_va_arg_expr): Fix invalid
30273         tree sharing.
30274
30275 2009-02-17  Ruan Beihong  <ruanbeihong@gmail.com>
30276             Richard Sandiford  <rdsandiford@googlemail.com>
30277
30278         * config/mips/mips.c (CODE_FOR_loongson_biadd): Delete.
30279         * config/mips/loongson.md (reduc_uplus_<mode>): Rename to...
30280         (loongson_biadd): ...this.
30281
30282 2009-02-17  Richard Guenther  <rguenther@suse.de>
30283
30284         PR tree-optimization/39202
30285         * tree-ssa-structalias.c (do_structure_copy): Before collapsing
30286         a var make sure to follow existing collapses.
30287
30288 2009-02-17  Richard Guenther  <rguenther@suse.de>
30289
30290         PR middle-end/39214
30291         * langhooks.c (lhd_print_error_function): Check for NULL block.
30292
30293 2009-02-17  Richard Guenther  <rguenther@suse.de>
30294
30295         PR tree-optimization/39204
30296         * tree-ssa-pre.c (phi_translate_1): Lookup the value-number
30297         of the PHI arg.
30298
30299 2009-02-17  Uros Bizjak  <ubizjak@gmail.com>
30300
30301         * config/soft-fp/double.h: Update from glibc CVS.
30302
30303 2009-02-17  Richard Guenther  <rguenther@suse.de>
30304
30305         PR tree-optimization/39207
30306         * tree-ssa-structalias.c (find_what_p_points_to): Do not emit
30307         strict-aliasing warnings for pointers pointing to NULL.
30308
30309 2009-02-16  Joseph Myers  <joseph@codesourcery.com>
30310
30311         PR c/35446
30312         * c-parser.c (c_parser_braced_init): Call pop_init_level when
30313         skipping until next close brace.
30314
30315 2009-02-16  H.J. Lu  <hongjiu.lu@intel.com>
30316
30317         PR target/37049
30318         * config/i386/i386.c (ix86_expand_push): Set memory alignment
30319         to function argument boundary.
30320
30321 2009-02-16  Hariharan Sandanagobalane  <hariharan@picochip.com>
30322
30323         * config/picochip/picochip.md (lea_add): Allow any nonimmediate
30324         in the lea_add. Reload eventually constraints it properly.
30325         * config/picochip/constraints.md: Remove the target constraint
30326         "b", since it is not needed anymore.
30327
30328 2009-02-16  Jakub Jelinek  <jakub@redhat.com>
30329
30330         * gthr-dce.h: Uglify function parameter and local variable names.
30331         * gthr-gnat.h: Likewise.
30332         * gthr-mipssde.h: Likewise.
30333         * gthr-nks.h: Likewise.
30334         * gthr-posix95.h: Likewise.
30335         * gthr-posix.h: Likewise.
30336         * gthr-rtems.h: Likewise.
30337         * gthr-single.h: Likewise.
30338         * gthr-solaris.h: Likewise.
30339         * gthr-tpf.h: Likewise.
30340         * gthr-vxworks.h: Likewise.
30341         * gthr-win32.h: Likewise.
30342
30343 2009-02-15  H.J. Lu  <hongjiu.lu@intel.com>
30344
30345         PR target/39196
30346         * config/i386/i386.md: Restrict the new peephole2 to move
30347         between MMX/SSE registers.
30348
30349 2009-02-15  Richard Guenther  <rguenther@suse.de>
30350
30351         Revert
30352         2009-02-13  Richard Guenther  <rguenther@suse.de>
30353
30354         * configure.ac: Enable LFS.
30355         * configure: Re-generate.
30356         * config.in: Likewise.
30357
30358 2009-02-13  Ulrich Weigand  <Ulrich.Weigand@de.ibm.com>
30359
30360         * config/spu/spu_internals.h (spu_sr, spu_sra, spu_srqw,
30361         spu_srqwbyte, spu_srqwbytebc): Define.
30362         * config/spu/spu-builtins.def (spu_sr, spu_sra, spu_srqw,
30363         spu_srqwbyte, spu_srqwbytebc): New overloaded builtins.
30364         * config/spu/spu.md ("shrqbybi_<mode>", "shrqbi_<mode>",
30365         "shrqby_<mode>"): New insn-and-split patterns.
30366         * config/spu/spu.c (expand_builtin_args): Determine and return
30367         number of operands using spu_builtin_description data.
30368         (spu_expand_builtin_1): Use it.
30369
30370 2009-02-13  Steve Ellcey  <sje@cup.hp.com>
30371
30372         PR target/38056
30373         * config/ia64/ia64.c (ia64_function_ok_for_sibcall): Check
30374         TARGET_CONST_GP.
30375
30376 2009-02-13  H.J. Lu  <hongjiu.lu@intel.com>
30377
30378         PR target/39149
30379         * config/i386/i386.c (override_options): Correct warning
30380         messages for -malign-loops, -malign-jumps and -malign-functions.
30381
30382 2009-02-13  H.J. Lu  <hongjiu.lu@intel.com>
30383
30384         PR target/39152
30385         * config/i386/i386.md: Restrict the new peephole2 to move
30386         between the general purpose registers.
30387
30388 2009-02-13  H.J. Lu  <hongjiu.lu@intel.com>
30389
30390         PR target/39162
30391         * config/i386/i386.c (type_natural_mode): Add a new argument.
30392         Return the original mode and warn ABI change if vector size is 32byte.
30393         (function_arg_advance): Updated.
30394         (function_arg): Likewise.
30395         (ix86_function_value): Likewise.
30396         (ix86_return_in_memory): Likewise.
30397         (ix86_sol10_return_in_memory): Likewise.
30398         (ix86_gimplify_va_arg): Likewise.
30399         (function_arg_32): Don't warn ABX ABI change here.
30400         (function_arg_64): Likewise.
30401
30402 2009-02-13  Bernd Schmidt  <bernd.schmidt@analog.com>
30403
30404         * loop-iv.c (implies_p): In the final case, test that operands 0
30405         of the two comparisons match.
30406
30407         * config/bfin/bfin.c (find_prev_insn_start): New function.
30408         (bfin_optimize_loop): Use it in some cases instead of PREV_INSN.
30409         (find_next_insn_start): Move.
30410
30411 2009-02-13  Richard Guenther  <rguenther@suse.de>
30412
30413         * configure.ac: Enable LFS.
30414         * configure: Re-generate.
30415         * config.in: Likewise.
30416
30417 2009-02-13  Joseph Myers  <joseph@codesourcery.com>
30418
30419         PR c/35444
30420         * c-parser.c (c_parser_parms_list_declarator): Discard pending
30421         sizes on syntax error after some arguments have been parsed.
30422
30423 2009-02-12  Jakub Jelinek  <jakub@redhat.com>
30424
30425         * doc/invoke.texi (-fira): Remove.
30426
30427 2009-02-12  H.J. Lu  <hongjiu.lu@intel.com>
30428
30429         * caller-save.c: Replace regclass.c with reginfo.c in comments.
30430         * recog.c: Likewise.
30431         * rtl.h: Likewise.
30432
30433 2009-02-12  Uros Bizjak  <ubizjak@gmail.com>
30434
30435         * longlong.h (sub_ddmmss): New for ia64. Ported from GMP 4.2.
30436         (umul_ppmm): Likewise.
30437         (count_leading_zeros): Likewise.
30438         (count_trailing_zeros): Likewise.
30439         (UMUL_TIME): Likewise.
30440
30441 2009-02-12  H.J. Lu  <hongjiu.lu@intel.com>
30442
30443         * config.gcc (ia64*-*-linux*): Add ia64/t-fprules-softfp and
30444         soft-fp/t-softfp to tmake_file.
30445
30446         * config/ia64/ia64.c (ia64_soft_fp_init_libfuncs): New.
30447         (ia64_expand_compare): Use HPUX library for TFmode only for HPUX.
30448         (ia64_builtins) [IA64_BUILTIN_COPYSIGNQ, IA64_BUILTIN_FABSQ,
30449         IA64_BUILTIN_INFQ]: New.
30450         (ia64_init_builtins): Initialize __builtin_infq,
30451         __builtin_fabsq and __builtin_copysignq if not HPUX.
30452         (ia64_expand_builtin): Handle IA64_BUILTIN_COPYSIGNQ,
30453         IA64_BUILTIN_FABSQ and IA64_BUILTIN_INFQ.
30454
30455         * config/ia64/lib1funcs.asm (__divtf3): Define only if
30456         SHARED is defined.
30457         (__fixtfti): Likewise.
30458         (__fixunstfti): Likewise.
30459         (__floattitf): Likewise.
30460
30461         * config/ia64/libgcc-glibc.ver: New.
30462         * config/ia64/t-fprules-softfp: Likewise.
30463         * config/ia64/sfp-machine.h: Likewise.
30464
30465         * config/ia64/linux.h (LIBGCC2_HAS_TF_MODE): New.
30466         (LIBGCC2_TF_CEXT): Likewise.
30467         (TF_SIZE): Likewise.
30468         (TARGET_INIT_LIBFUNCS): Likewise.
30469
30470         * config/ia64/t-glibc (SHLINB_MAPFILES):
30471         Add $(srcdir)/config/ia64/libgcc-glibc.ver.
30472
30473 2009-02-12  H.J. Lu  <hongjiu.lu@intel.com>
30474
30475         * config/i386/i386.c (construct_container): Rewrite processing
30476         BLKmode with X86_64_SSE_CLASS.
30477
30478 2009-02-12  Paolo Bonzini  <bonzini@gnu.org>
30479
30480         PR target/39152
30481         * config/i386/i386.md: Replace simplify_replace_rtx with
30482         replace_rtx in the new peephole2.
30483
30484 2009-02-12  Nathan Sidwell  <nathan@codesourcery.com>
30485
30486         * doc/invoke.texi (Optimize Options): Stop claiming inlining and
30487         loop unrolling do not happen at -O2.
30488
30489 2009-02-12  Michael Matz  <matz@suse.de>
30490
30491         * gcc.c (ASM_DEBUG_SPEC): Check for -g0.
30492
30493 2009-02-12  Jakub Jelinek  <jakub@redhat.com>
30494
30495         * dwarf2out.c (dwarf2out_finish): Force output of comp_unit_die
30496         for -g3.
30497
30498 2009-02-12  Ben Elliston  <bje@au.ibm.com>
30499
30500         * config/rs6000/rs6000.md (allocate_stack): Use _stack form of
30501         patterns when updating the back chain.  Missed in the 2009-02-10
30502         change.
30503
30504 2009-02-11  Janis Johnson  <janis187@us.ibm.com>
30505
30506         * doc/extend.texi (Decimal Floating Types): Update identifier of
30507         draft TR and list of missing support.
30508
30509 2009-02-11  Jakub Jelinek  <jakub@redhat.com>
30510
30511         PR middle-end/39154
30512         * gimplify.c (omp_notice_variable): If adding GOVD_SEEN
30513         bit to variable length decl's flags, add it also to its
30514         pointer replacement variable.
30515
30516 2009-02-11  Uros Bizjak  <ubizjak@gmail.com>
30517             Jakub Jelinek  <jakub@redhat.com>
30518
30519         PR target/39118
30520         * config/i386/i386.md (UNSPEC_MEMORY_BLOCKAGE): New constant.
30521         (memory_blockage): New expander.
30522         (*memory_blockage): New insn pattern.
30523         * config/i386/i386.c (ix86_expand_prologue): Use memory_blockage
30524         instead of general blockage at the end of function prologue when
30525         frame pointer is used to access red zone area.  Do not emit blockage
30526         when profiling, it is emitted in generic code.
30527         (ix86_expand_epilogue): Emit memory_blockage at the beginning of
30528         function epilogue when frame pointer is used to access red zone area.
30529
30530 2009-02-11  Paolo Bonzini  <bonzini@gnu.org>
30531
30532         PR target/38824
30533         * config/i386/i386.md: Add two new peephole2 to avoid mov followed
30534         by arithmetic with memory operands.
30535         * config/i386/predicates.md (commutative_operator): New.
30536
30537 2009-02-10  Janis Johnson  <janis187@us.ibm.com>
30538
30539         * doc/extend.texi (Fixed-Point Types): Break long paragraphs into
30540         bulleted lists.
30541
30542 2009-02-10  Eric Botcazou  <ebotcazou@adacore.com>
30543
30544         * alias.h (record_alias_subset): Declare.
30545         * alias.c (record_alias_subset): Make global.
30546
30547 2009-02-10  Nick Clifton  <nickc@redhat.com>
30548
30549         * tree-parloops.c: Change license to GPLv3.
30550         * ipa-struct-reorg.c: Change license to GPLv3.
30551         * ipa-struct-reorg.h: Change license to GPLv3.
30552
30553 2009-02-10  Steve Ellcey  <sje@cup.hp.com>
30554
30555         PR c/39084
30556         * c-decl.c (start_struct): Return NULL on error.
30557
30558 2009-02-10  Jakub Jelinek  <jakub@redhat.com>
30559
30560         PR middle-end/39124
30561         * cfgloopmanip.c (remove_path): Call remove_bbs after
30562         cancel_loop_tree, not before it.
30563
30564         PR target/39139
30565         * function.h (struct function): Add has_local_explicit_reg_vars bit.
30566         * gimplify.c (gimplify_bind_expr): Set it if local DECL_HARD_REGISTER
30567         VAR_DECLs were seen.
30568         * tree-ssa-live.c (remove_unused_locals): Recompute
30569         cfun->has_local_explicit_reg_vars.
30570         * tree-ssa-sink.c (statement_sink_location): Don't sink BLKmode
30571         copies or clearings if cfun->has_local_explicit_reg_vars.
30572
30573 2009-02-10  Uros Bizjak  <ubizjak@gmail.com>
30574
30575         PR target/39118
30576         * config/i386/i386.c (expand_prologue): Emit blockage at the end
30577         of function prologue when frame pointer is used to access
30578         red zone area.
30579
30580 2009-02-10  Richard Guenther  <rguenther@suse.de>
30581
30582         PR middle-end/39127
30583         * gimplify.c (gimple_regimplify_operands): Always look if
30584         we need to create a temporary.
30585
30586 2009-02-10  Richard Guenther  <rguenther@suse.de>
30587
30588         PR tree-optimization/39132
30589         * tree-loop-distribution.c (todo): New global var.
30590         (generate_memset_zero): Trigger TODO_rebuild_alias.
30591         (tree_loop_distribution): Return todo.
30592
30593 2009-02-10  H.J. Lu  <hongjiu.lu@intel.com>
30594
30595         PR target/39119
30596         * config/i386/i386.c (x86_64_reg_class): Remove X86_64_AVX_CLASS.
30597         (x86_64_reg_class_name): Removed.
30598         (classify_argument): Return 0 if bytes > 32.  Return 0 if the
30599         first one isn't X86_64_SSE_CLASS or any other ones aren't
30600         X86_64_SSEUP_CLASS when size > 16bytes.  Don't turn
30601         X86_64_SSEUP_CLASS into X86_64_SSE_CLASS if the preceded one
30602         is X86_64_SSEUP_CLASS.  Set AVX modes to 1 X86_64_SSE_CLASS
30603         and 3 X86_64_SSEUP_CLASS.
30604         (construct_container): Remove X86_64_AVX_CLASS.  Handle 4
30605         registers with 1 X86_64_SSE_CLASS and 3 X86_64_SSEUP_CLASS.
30606
30607 2009-02-10  Ben Elliston  <bje@au.ibm.com>
30608
30609         * config/rs6000/rs6000.md (allocate_stack): Always use an update
30610         form instruction to update the stack back chain word, even if the
30611         user has disabled the generation of update instructions.
30612         (movdi_<mode>_update_stack): New.
30613         (movsi_update_stack): Likewise.
30614         * config/rs6000/rs6000.c (rs6000_emit_allocate_stack): Likewise,
30615         always use an update form instruction to update the stack back
30616         chain word.
30617
30618 2009-02-09  Sebastian Pop  <sebastian.pop@amd.com>
30619
30620         PR middle-end/38953
30621         * graphite.c (if_region_set_false_region): After moving a region in
30622         the false branch of a condition, remove the empty dummy basic block.
30623         (gloog): Remove wrong fix for PR38953.
30624
30625 2009-02-09  Ulrich Weigand  <Ulrich.Weigand@de.ibm.com>
30626
30627         * config/spu/spu.c (array_to_constant): Fix (latent) wrong-code
30628         generation due to implicit sign extension.
30629
30630 2009-02-09  Eric Botcazou  <ebotcazou@adacore.com>
30631
30632         PR middle-end/38981
30633         * tree-ssa-coalesce.c (add_coalesce): Cap the costs of coalesce pairs
30634         at MUST_COALESCE_COST-1 instead of MUST_COALESCE_COST.
30635
30636 2009-02-09  Richard Guenther  <rguenther@suse.de>
30637
30638         PR middle-end/35202
30639         * convert.c (convert_to_real): Disable (float)fn((double)x)
30640         to fnf(x) conversion if errno differences may occur and
30641         -fmath-errno is set.
30642
30643 2009-02-07  Anatoly Sokolov  <aesok@post.ru>
30644
30645         * config/avr/avr.c (avr_mcu_t): Add ata6289 device.
30646         * config/avr/avr.h (LINK_SPEC, CRT_BINUTILS_SPECS): (Ditto.).
30647         * config/avr/t-avr (MULTILIB_MATCHES): (Ditto.).
30648
30649 2009-02-06  Joseph Myers  <joseph@codesourcery.com>
30650
30651         PR c/35434
30652         * c-common.c (handle_alias_attribute): Disallow attribute for
30653         anything not a FUNCTION_DECL or VAR_DECL.
30654
30655 2009-02-06  Janis Johnson  <janis187@us.ibm.com>
30656
30657         PR c/39035
30658         * real.c (do_compare): Special-case compare of zero against
30659         decimal float value.
30660
30661 2009-02-06  Joseph Myers  <joseph@codesourcery.com>
30662
30663         PR c/36432
30664         * c-decl.c (grokdeclarator): Don't treat [] declarators in fields
30665         as indicating flexible array members unless the field itself is
30666         being declarared as the incomplete array.
30667
30668 2009-02-06  Jan Hubicka  <jh@suse.cz>
30669
30670         PR tree-optimization/38844
30671         * ipa-inline.c (try_inline): Stop inlining recursion when edge
30672         is already inlined.
30673
30674 2009-02-06  Richard Guenther  <rguenther@suse.de>
30675
30676         PR middle-end/38977
30677         * tree-cfg.c (need_fake_edge_p): Force a fake edge for
30678         fork because we may expand it as __gcov_fork.
30679
30680 2009-02-06  Nick Clifton  <nickc@redhat.com>
30681
30682         * config/m32c/m32c.h (PCC_BITFIELD_TYPE_MATTERS): Define to zero.
30683
30684 2009-02-06  Paolo Bonzini  <bonzini@gnu.org>
30685
30686         PR tree-optimization/35659
30687         * tree-ssa-sccvn.c (vn_constant_eq, vn_reference_eq, vn_nary_op_eq
30688         vn_phi_eq): Shortcut if hashcode does not match.
30689         (vn_reference_op_compute_hash): Do not call iterative_hash_expr for
30690         NULL operands.
30691         * tree-ssa-pre.c (pre_expr_hash): Look at hashcode if available,
30692         and avoid iterative_hash_expr.
30693         (FOR_EACH_VALUE_ID_IN_SET): New.
30694         (value_id_compare): Remove.
30695         (sorted_array_from_bitmap_set): Use FOR_EACH_VALUE_ID_IN_SET to
30696         sort expressions by value id.
30697
30698 2009-02-05  Kaz Kojima  <kkojima@gcc.gnu.org>
30699
30700         PR target/38991
30701         * config/sh/predicates.md (general_movsrc_operand): Don't check
30702         the subreg of system registers here.
30703
30704 2009-02-05  Jakub Jelinek  <jakub@redhat.com>
30705
30706         PR c++/39106
30707         * cgraphunit.c (cgraph_function_versioning): Clear also DECL_VIRTUAL_P
30708         on the copied decl.
30709
30710 2009-02-05  Paolo Bonzini  <bonzini@gnu.org>
30711
30712         PR rtl-optimization/39110
30713         * rtlanal.c (rtx_addr_can_trap_p_1): Shortcut unaligned
30714         addresses, not aligned ones.
30715
30716 2009-02-05  Daniel Berlin  <dberlin@dberlin.org>
30717             Richard Guenther  <rguenther@suse.de>
30718
30719         PR tree-optimization/39100
30720         * tree-ssa-structalias.c (do_ds_constraint): Actually do what the
30721         comment says and add edges.
30722
30723 2009-02-05  Joseph Myers  <joseph@codesourcery.com>
30724
30725         PR c/35435
30726         * c-common.c (handle_tls_model_attribute): Ignore attribute for
30727         non-VAR_DECLs without checking DECL_THREAD_LOCAL_P.
30728
30729 2009-02-04  Tobias Grosser  <grosser@fim.uni-passau.de>
30730
30731         * graphite.c (bb_in_sese_p, sese_build_livein_liveouts_use,
30732         sese_build_livein_liveouts_bb, sese_build_livein_liveouts,
30733         register_bb_in_sese, new_sese, free_sese): Moved.
30734         (dot_scop_1, build_scop_loop_nests, build_loop_iteration_domains,
30735         outermost_loop_in_scop, build_scop_iteration_domain,
30736         expand_scalar_variables_ssa_name, get_vdef_before_scop,
30737         limit_scops): Use bb_in_sese_p instead of bb_in_scop_p.
30738         Use loop_in_sese_p instead of loop_in_scop_p.
30739         (new_graphite_bb, gloog): Do not initialize SCOP_BBS_B.
30740         (new_scop, free_scop): Remove SCOP_LOOP2CLOOG_LOOP and SCOP_BBS_B.
30741         (scopdet_basic_block_info): Fix bug in scop detection.
30742         (new_loop_to_cloog_loop_str, hash_loop_to_cloog_loop,
30743         eq_loop_to_cloog_loop): Remove.
30744         (nb_loops_around_loop_in_scop, nb_loop
30745         ref_nb_loops): Moved here...
30746         * graphite.h (ref_nb_loops): ... from here.
30747         (struct scop): Remove bbs_b bitmap and loop2cloog_loop.
30748         (loop_domain_dim, loop_iteration_vector_dim): Remove.
30749         (SCOP_BBS_B, bb_in_scop_p, loop_in_scop_p): Removed.
30750
30751 2009-02-04  Paolo Bonzini  <bonzini@gnu.org>
30752             Hans-Peter Nilsson  <hp@axis.com>
30753
30754         PR rtl-optimization/37889
30755         * rtlanal.c (rtx_addr_can_trap_p_1): Add offset and size arguments.
30756         Move offset handling from PLUS to before the switch.  Use new
30757         arguments when considering SYMBOL_REFs too.
30758         (rtx_addr_can_trap_p): Pass dummy offset and size.
30759         (enum may_trap_p_flags): Remove.
30760         (may_trap_p_1): Pass size from MEM_SIZE.
30761
30762         PR rtl-optimization/38921
30763         * loop-invariant.c (find_invariant_insn): Use may_trap_or_fault_p.
30764         * rtl.h (may_trap_after_code_motion_p): Delete prototype.
30765         * rtlanal.c (may_trap_after_code_motion_p): Delete.
30766         (may_trap_p, may_trap_or_fault_p): Pass 0/1 as flags.
30767
30768 2009-02-04  H.J. Lu  <hongjiu.lu@intel.com>
30769
30770         AVX Programming Reference (January, 2009)
30771         * config/i386/sse.md (*vpclmulqdq): New.
30772
30773 2009-02-04  Jakub Jelinek  <jakub@redhat.com>
30774
30775         PR tree-optimization/38977
30776         PR gcov-profile/38292
30777         * calls.c (special_function_p): Disregard __builtin_ prefix.
30778
30779 2009-02-04  Hariharan Sandanagobalane  <hariharan@picochip.com>
30780
30781         * config/picochip/picochip.c (GO_IF_LEGITIMATE_ADDRESS): Disallow
30782         non-indexable addresses even before reload.
30783
30784 2009-02-03  Joseph Myers  <joseph@codesourcery.com>
30785
30786         PR c/29129
30787         * c-decl.c (grokdeclarator): Mark [*] arrays in field declarators
30788         as having variable size.  Do not give an error for unnamed
30789         parameters with [*] declarators.  Give a warning for type names
30790         with [*] declarators and mark them as variable size.
30791         * c-parser.c (c_parser_sizeof_expression): Do not give an error
30792         for sizeof applied to [*] type names.
30793
30794 2009-02-03  Andrew Pinski  <andrew_pinski@playstation.sony.com>
30795
30796         PR C++/36607
30797         * convert.c (convert_to_integer): Treat OFFSET_TYPE like INTEGER_TYPE.
30798
30799 2009-02-03  Jakub Jelinek  <jakub@redhat.com>
30800
30801         * gcc.c (process_command): Update copyright notice dates.
30802         * gcov.c (print_version): Likewise.
30803         * gcov-dump.c (print_version): Likewise.
30804         * mips-tfile.c (main): Likewise.
30805         * mips-tdump.c (main): Likewise.
30806
30807 2009-02-03  Joseph Myers  <joseph@codesourcery.com>
30808
30809         PR c/35433
30810         * c-typeck.c (composite_type): Set TYPE_SIZE and TYPE_SIZE_UNIT
30811         for composite type involving a zero-length array type.
30812
30813 2009-02-03  Jakub Jelinek  <jakub@redhat.com>
30814
30815         PR target/35318
30816         * function.c (match_asm_constraints_1): Skip over
30817         initial optional % in the constraint.
30818
30819         PR inline-asm/39059
30820         * c-parser.c (c_parser_postfix_expression): If fixed point is not
30821         supported, don't accept FIXED_CSTs.
30822         * c-decl.c (finish_declspecs): Error if fixed point is not supported
30823         and _Sat is used without _Fract/_Accum.  Set specs->type to
30824         integer_type_node for cts_fract/cts_accum if fixed point is not
30825         supported.
30826
30827 2009-02-02  Catherine Moore  <clm@codesourcery.com>
30828
30829         * sde.h (SUBTARGET_ARM_SPEC): Don't assemble -fpic code as -mabicalls.
30830
30831 2009-02-02  Richard Sandiford  <rdsandiford@googlemail.com>
30832
30833         * config/mips/mips.h (FILE_HAS_64BIT_SYMBOLS): New macro.
30834         (ABI_HAS_64BIT_SYMBOLS): Use it.
30835         (DWARF2_ADDR_SIZE): Use it instead of ABI_HAS_64BIT_SYMBOLS.
30836
30837 2009-02-02  Paul Brook  <paul@codesourcery.com>
30838
30839         * config/arm/arm.md (arm_addsi3): Add r/r/k alternative.
30840
30841 2009-02-02  Jakub Jelinek  <jakub@redhat.com>
30842
30843         PR inline-asm/39058
30844         * recog.h (asm_operand_ok): Add constraints argument.
30845         * recog.c (asm_operand_ok): Likewise.  If it is set, for digits
30846         recurse on matching constraint.
30847         (check_asm_operands): Pass constraints as 3rd argument to
30848         asm_operand_ok.  Don't look up matching constraint here.
30849         * stmt.c (expand_asm_operands): Pass NULL as 3rd argument
30850         to asm_operand_ok.
30851
30852 2009-02-02  Ben Elliston  <bje@au.ibm.com>
30853
30854         * doc/tm.texi (Storage Layout): Fix TARGET_ALIGN_ANON_BITFIELD and
30855         TARGET_NARROW_VOLATILE_BITFIELD macro names.
30856
30857 2009-01-31  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
30858
30859         * doc/install.texi (hppa*-hp-hpux*): Update binutils and linker
30860         information.  Remove some obsolete information.  Reorganize.
30861
30862         * config/pa/fptr.c: Revert license to GPL 2.
30863         * config/pa/milli64.S: Likewise.
30864
30865 2009-01-31  Dave Korn  <dave.korn.cygwin@gmail.com>
30866
30867         PR target/38904
30868         * mkmap-flat.awk (END):  Use pe_dll command-line arg to pass
30869         LIBRARY name in, instead of hard-coding it.
30870         * config.gcc (i[34567]86-*-pe | i[34567]86-*-cygwin*):  Add an
30871         extra target make frag to tmake_files according to EH model.
30872         (i[34567]86-*-mingw* | x86_64-*-mingw*):  Likewise.
30873         * config/i386/t-dw2-eh, config/i386/t-sjlj-eh:  Add new target
30874         frags that define makefile variable EH_MODEL appropriately.
30875         * config/i386/cygming.h (DWARF2_UNWIND_INFO):  Add comment.
30876         * config/i386/cygwin.h (LIBGCC_EH_EXTN):  Define to nothing or
30877         to "-sjlj" according to type of EH configured.
30878         (LIBGCC_SONAME):  Concatenate it to shared library base name.
30879         * config/i386/mingw32.h (LIBGCC_EH_EXTN):  Define to "_dw2" or
30880         to "_sjlj" according to type of EH configured.
30881         (LIBGCC_SONAME):  Concatenate it to shared library base name.
30882         * config/i386/t-cygming (SHLIB_SONAME):  Use EH_MODEL.
30883         (SHLIB_LINK):  Add missing semicolon to if-else construct.
30884         (SHLIB_MKMAP_OPTS):  Pass library name to mkmap-flat.awk as
30885         string value of "pe_dll" command-line option.
30886         * config/i386/t-cygwin (SHLIB_EH_EXTENSION):  New helper.
30887         (SHLIB_SONAME):  Use it when overriding t-cygming default.
30888         (SHLIB_IMPLIB):  Override t-cygming default.
30889         (SHLIB_MKMAP_OPTS):  Pass library name to mkmap-flat.awk as
30890         string value of "pe_dll" command-line option.
30891
30892 2009-01-31  Dave Korn  <dave.korn.cygwin@gmail.com>
30893
30894         PR target/38952
30895         * config/i386/i386.c (ix86_builtin_setjmp_frame_value): New.
30896         (TARGET_BUILTIN_SETJMP_FRAME_VALUE): Override default to point at it.
30897
30898 2009-01-31  Richard Guenther  <rguenther@suse.de>
30899
30900         PR tree-optimization/38937
30901         * tree-ssa-structalias.c (do_sd_constraint): Do not shortcut
30902         computing the transitive closure.
30903
30904 2009-01-30  Richard Guenther  <rguenther@suse.de>
30905
30906         PR tree-optimization/39041
30907         * tree-ssa-forwprop.c (forward_propagate_addr_expr_1):
30908         Propagate variable indices only if the types match for this stmt.
30909
30910 2009-01-30  Jakub Jelinek  <jakub@redhat.com>
30911
30912         PR target/39013
30913         * c-decl.c (pop_scope): Set DECL_EXTERNAL for functions declared
30914         inline but never defined.
30915
30916 2009-01-30  Wolfgang Gellerich  <gellerich@de.ibm.com>
30917
30918         * config/s390/s390.md (*insv<mode>_reg_extimm): Removed.
30919         (*insv_h_di_reg_extimm): New insn.
30920         (*insv_l<mode>_reg_extimm): New insn.
30921
30922 2009-01-30  Hariharan Sandanagobalane  <hariharan@picochip.com>
30923
30924         * config/picochip/picochip.c (flag_conserve_stack): set
30925         PARAM_LARGE_STACK_FRAME and PARAM_STACK_FRAME_GROWTH to zero under
30926         fconserve-stack. Reduce call-overhead used by inliner.
30927
30928 2009-01-30  Hariharan Sandanagobalane  <hariharan@picochip.com>
30929
30930         PR/38157
30931         * common.opt (flag_conserve_stack): Initialised to zero.
30932
30933 2009-01-30  Kai Tietz  <kai.tietz@onevision.com>
30934
30935         PR/39002
30936         * config/i386/i386.c (ix86_can_use_return_insn_p): Check for nsseregs.
30937         (ix86_expand_epilogue): Take nsseregs in account to use proper restore
30938         method.
30939
30940 2009-01-29  H.J. Lu  <hongjiu.lu@intel.com>
30941
30942         * ira-color.c (allocno_reload_assign): Update comments.
30943         * regmove.c (regmove_optimize): Likewise.
30944
30945         * ra.h: Removed.
30946
30947 2009-01-29  Robert Millan  <rmh@aybabtu.com>
30948
30949         * config.gcc: Recognize GNU/kOpenSolaris (*-*-kopensolaris*-gnu).
30950         * config/i386/kopensolaris-gnu.h: New file.  Undefine
30951         `MD_UNWIND_SUPPORT'.
30952         * config/kopensolaris-gnu.h: New file (based on kfreebsd-gnu.h).
30953
30954 2009-01-29  Kazu Hirata  <kazu@codesourcery.com>
30955
30956         PR tree-optimization/39007
30957         * tree-loop-distribution.c (generate_builtin): Use
30958         recompute_dominator to compute the immediate dominator of the
30959         basic block just after the loop.
30960
30961 2009-01-29  Rainer Orth  <ro@TechFak.Uni-Bielefeld.DE>
30962
30963         * config/i386/sol2-10.h [!HAVE_AS_IX86_DIFF_SECT_DELTA]
30964         (ASM_OUTPUT_DWARF_PCREL): Define.
30965
30966 2009-01-29  Vladimir Makarov  <vmakarov@redhat.com>
30967
30968         * doc/tm.texi (TARGET_IRA_COVER_CLASSES): Modify description.
30969         * doc/passes.texi: Remove entries about regclass, local-alloc, and
30970         global.  Modify entries about regmove and IRA.
30971
30972         * ra-conflict.c: Remove the file.
30973
30974         * reload.c (push_reload, find_dummy_reload): Remove flag_ira.
30975
30976         * tree-pass.h (pass_local_alloc, pass_global_alloc): Remove.
30977         (pass_regclass_init): Rename to pass_reginfo_init.
30978
30979         * cfgloopanal.c (estimate_reg_pressure_cost): Remove flag_ira.
30980
30981         * toplev.h (flag_ira): Remove.
30982
30983         * caller-save.c (setup_save_areas): Remove flag_ira.
30984
30985         * ira-color.c (ira_reuse_stack_slot, ira_mark_new_stack_slot): Ditto.
30986
30987         * global.c: Remove the file.
30988
30989         * opts.c (decode_options): Remove flag_ira.
30990
30991         * hard-reg-set.h (losing_caller_save_reg_set): Remove.
30992
30993         * regmove.c: Modify file description.
30994         (find_use_as_address, try_auto_increment): Define them only if
30995         AUTO_INC_DEC is defined.
30996         (replacement_quality, replace_in_call_usage, fixup_match_1,
30997         stable_and_no_regs_but_for_p): Remove.
30998         (reg_set_in_bb): Make it static.
30999         (regmove_optimize): Remove flag_ira and code which worked for
31000         !flag_ira.
31001
31002         * local-alloc.c: Remove the file.
31003
31004         * common.opt (fira): Remove.
31005
31006         * ira.c: Include except.h.
31007         (eliminable_regset): Move from global.c.
31008         (mark_elimination): Ditto.  Remove flag_ira.
31009         (reg_renumber, struct equivalence, reg_equiv, equiv_mem,
31010         equiv_mem_modified, validate_equiv_mem_from_store,
31011         validate_equiv_mem, equiv_init_varies_p, equiv_init_movable_p,
31012         contains_replace_regs, memref_referenced_p, memref_used_between_p,
31013         no_equiv, recorded_label_ref): Move from local-alloc.c.
31014         (update_equiv_regs): Ditto.  Make it static.
31015         (print_insn_chain, print_insn_chains): Move it from global.c.
31016         (pseudo_for_reload_consideration_p): Ditto.  Remove flag_ira.
31017         (build_insn_chain): Ditto.  Make it static.
31018         (ra_init_live_subregs): Move from ra-conflict.c.  Make it static.
31019         Rename to init_live_subregs.
31020         (gate_ira): Remove flag_ira.
31021
31022         * regclass.c: Rename reginfo.c.  Change file description.
31023         (FORBIDDEN_INC_DEC_CLASSES): Remove.
31024         (reg_class_superclasses, forbidden_inc_dec_class, in_inc_dec): Remove.
31025         (init_reg_sets_1): Remove code for evaluation of
31026         reg_class_superclasses and losing_caller_save_reg_set.
31027         (init_regs): Remove init_reg_autoinc.
31028         (struct costs, costs, init_cost, ok_for_index_p_nonstrict,
31029         ok_for_base_p_nonstrict): Remove.
31030         (regclass_init): Rename to reginfo_init.  Don't initialize init_cost.
31031         (pass_regclass_init): Rename to pass_reginfo_init.  Modify
31032         corresponding entries.
31033         (dump_regclass, record_operand_costs, scan_one_insn,
31034         init_reg_autoinc, regclass, record_reg_classes, copy_cost,
31035         record_address_regs, auto_inc_dec_reg_p): Remove.
31036         (gt-regclass.h): Rename to gt-reginfo.h.
31037
31038         * rtl.h (dump_global_regs, retry_global_alloc,
31039         build_insn_chain, dump_local_alloc, update_equiv_regs): Remove.
31040
31041         * Makefile.in (RA_H): Remove.
31042         (OBJS-common): Remove global.o, local-alloc.o, and ra-conflict.o.
31043         Rename regclass.o to reginfo.o.
31044         (regclass.o): Rename to reginfo.o.  Rename gt-regclass.h to
31045         gt-reginfo.h.
31046         (global.o, local-alloc.o, ra-conflict.o): Remove entries.
31047         (GTFILES): Rename regclass.c to reginfo.c.
31048
31049         * passes.c (init_optimization_passes): Remove pass_local_alloc and
31050         pass_global_alloc.  Rename pass_regclass_init to pass_reginfo_init.
31051
31052         * reload1.c (compute_use_by_pseudos, reload, count_pseudo,
31053         count_spilled_pseudo, find_reg, alter_reg, delete_output_reload):
31054         Remove flag_ira.
31055         (finish_spills): Ditto.  Remove code for !flag_ira.
31056
31057 2009-01-29  Kenneth Zadeck  <zadeck@naturalbridge.com>
31058
31059         PR middle-end/35854
31060         * doc/invoke.texi (rtl debug options): Complete rewrite.
31061         * auto-inc-dec.c (pass_inc_dec): Rename pass from "auto-inc-dec"
31062         to auto_inc_dec".
31063         * mode-switching.c (pass_mode_switching): Rename pass from
31064         "mode-sw" to "mode_sw".
31065         * except.c (pass_convert_to_eh_ranges): Rename pass from
31066         "eh-ranges" to "eh_ranges".
31067         * lower-subreg.c (pass_lower_subreg): Renamed pass from "subreg"
31068         to "subreg1".
31069
31070
31071 2009-01-29  Andrey Belevantsev  <abel@ispras.ru>
31072             Alexander Monakov  <amonakov@ispras.ru>
31073
31074         PR middle-end/38857
31075         * sel-sched.c (count_occurrences_1): Check that *cur_rtx is a hard
31076         register.
31077         (move_exprs_to_boundary): Change return type and pass through
31078         should_move from move_op.  Relax assert.  Update usage ...
31079         (schedule_expr_on_boundary): ... here.  Use should_move instead of
31080         cant_move.
31081         (move_op_orig_expr_found): Indicate that insn was disconnected from
31082         stream.
31083         (code_motion_process_successors): Do not call after_merge_succs
31084         callback if original expression was not found when traversing any of
31085         the branches.
31086         (code_motion_path_driver): Change return type.  Update prototype.
31087         (move_op): Update comment.  Add a new parameter (should_move).  Update
31088         prototype.  Set *should_move based on indication provided by
31089         move_op_orig_expr_found.
31090
31091 2009-01-28  Pat Haugen  <pthaugen@us.ibm.com>
31092
31093         * doc/invoke.texi (avoid-indexed-addresses): Document new option.
31094         * config/rs6000/rs6000-protos.h (avoiding_indexed_address_p): Declare.
31095         * config/rs6000/rs6000.opt (avoid-indexed-addresses): New option.
31096         * config/rs6000/rs6000.c (rs6000_override_options): Default
31097         avoid-indexed-addresses on for Power6, off for everything else.
31098         (avoiding_indexed_address_p): New function.
31099         (rs6000_legitimize_address): Use it.
31100         (rs6000_legitimate_address): Likewise.
31101         * config/rs6000/rs6000.md (movXX_updateX): Likewise
31102
31103 2009-01-28  Kazu Hirata  <kazu@codesourcery.com>
31104
31105         PR tree-optimization/38997
31106         * tree-loop-distribution.c (generate_memset_zero): Use
31107         POINTER_PLUS_EXPR for a pointer addition.
31108
31109 2009-01-28  Andreas Krebbel  <krebbel1@de.ibm.com>
31110
31111         * config/s390/s390.md (bswap<mode>2): New pattern added.
31112
31113 2009-01-28  Wolfgang Gellerich  <gellerich@de.ibm.com>
31114
31115         * config/s390/s390.md (*tls_load_31): Added type attribute.
31116
31117 2009-01-28  Wolfgang Gellerich  <gellerich@de.ibm.com>
31118
31119         * config/s390/s390.md: Fix a few comments.
31120
31121 2009-01-28  Wolfgang Gellerich  <gellerich@de.ibm.com>
31122
31123         * config/s390/s390.md (*tmsi_reg): Fixed z10prop attribute.
31124         (*tm<mode>_full): Fixed z10prop attribute.
31125         (*tst<mode>_extimm): Fixed z10prop attribute.
31126         (*tst<mode>_cconly_extimm): Fixed z10prop attribute.
31127         (*tstqiCCT_cconly): Fixed z10prop attribute.
31128         (*cmpsi_ccu_zerohi_rlsi): Fixed z10prop attribute.
31129         (*movsi_larl): Fixed z10prop attribute.
31130         (*movsi_zarch): Fixed z10prop attribute.
31131         (*movsi_eas): Fixed z10prop attribute.
31132         (*movhi): Fixed z10prop attribute.
31133         (*movqi): Fixed z10prop attribute.
31134         (*movstrictqi): Fixed z10prop attribute.
31135         (*mov<mode>): Fixed z10prop attribute.
31136         (*movcc): Fixed z10prop attribute.
31137         (*sethighpartdi_64): Fixed z10prop attribute.
31138         (*zero_extendhi<mode>2_z10): Fixed z10prop attribute.
31139         (*negdi2_sign_cc): Fixed z10prop attribute.
31140         (*negdi2_sign): Fixed z10prop attribute.
31141         (*absdi2_sign_cc): Fixed z10prop attribute.
31142         (*absdi2_sign): Fixed z10prop attribute.
31143         (*negabsdi2_sign_cc): Fixed z10prop attribute.
31144         (*negabsdi2_sign): Fixed z10prop attribute.
31145         (*cmp_and_trap_signed_int<mode>): Fixed z10prop attribute.
31146         (*cmp_and_trap_unsigned_int<mode>): Fixed z10prop attribute.
31147         (doloop_si64): Fixed z10prop attribute.
31148         (doloop_si31): Fixed z10prop attribute.
31149         (doloop_long): Fixed z10prop attribute.
31150         (indirect_jump): Fixed z10prop attribute.
31151         (nop): Fixed z10prop attribute.
31152         (main_base_64): Fixed z10prop attribute.
31153         (reload_base_64): Fixed z10prop attribute.
31154
31155 2009-01-28  Jakub Jelinek  <jakub@redhat.com>
31156
31157         PR rtl-optimization/38740
31158         * reorg.c (gate_handle_delay_slots): Avoid dbr scheduling
31159         if !optimize.
31160         * config/mips/mips.c (mips_reorg): Likewise.
31161
31162 2009-01-28  Richard Guenther  <rguenther@suse.de>
31163
31164         PR tree-optimization/38926
31165         * tree-ssa-pre.c (add_to_value): Assert we add only expressions
31166         with the correct value id to a value.
31167         (do_regular_insertion): Use the value number of edoubleprime
31168         for the value number of the expr.
31169
31170         Revert
31171         2008-08-21  Richard Guenther  <rguenther@suse.de>
31172
31173         * tree-ssa-pre.c (insert_into_preds_of_block): Before inserting
31174         a PHI ask VN if it is already available.
31175         * tree-ssa-sccvn.h (vn_phi_lookup): Declare.
31176         * tree-ssa-sccvn.c (vn_phi_lookup): Export.
31177
31178 2009-01-28  Jakub Jelinek  <jakub@redhat.com>
31179
31180         PR middle-end/38934
31181         * tree-vrp.c (extract_range_from_assert): For LE_EXPR and LT_EXPR
31182         set to varying whenever max has TREE_OVERFLOW set, similarly
31183         for GE_EXPR and GT_EXPR and TREE_OVERFLOW min.
31184
31185 2009-01-28  Richard Guenther  <rguenther@suse.de>
31186
31187         PR middle-end/38908
31188         * tree-ssa.c (warn_uninitialized_var): Do not warn for seemingly
31189         uninitialized aggregate uses in call arguments.
31190
31191 2009-01-28  Paolo Bonzini  <bonzini@gnu.org>
31192
31193         PR tree-optimization/38984
31194         * tree-ssa-structalias.c (get_constraints_for_1): Do not use
31195         the nothing_id variable if -fno-delete-null-pointer-checks.
31196
31197 2009-01-28  Uros Bizjak  <ubizjak@gmail.com>
31198
31199         PR target/38988
31200         * config/i386/i386.md (set_rip_rex64): Wrap operand 1 in label_ref.
31201         (set_got_offset_rex64): Ditto.
31202
31203 2009-01-27  H.J. Lu  <hongjiu.lu@intel.com>
31204
31205         PR target/38941
31206         * doc/extend.texi: Improve local variable with asm reg.
31207
31208 2009-01-27  Adam Nemet  <anemet@caviumnetworks.com>
31209
31210         * c.opt (Wpacked-bitfield-compat): Change init value to -1.
31211         * c-opts.c (c_common_post_options): If -W*packed-bitfield-compat
31212         was not supplied then set warn_packed_bitfield_compat to the
31213         default value of 1.
31214         * stor-layout.c (place_field): Check warn_packed_bitfield_compat
31215         against 1.
31216
31217 2009-01-27  Richard Guenther  <rguenther@suse.de>
31218
31219         PR tree-optimization/38503
31220         * cfgexpand.c (expand_gimple_basic_block): Ignore
31221         GIMPLE_CHANGE_DYNAMIC_TYPE during expansion.
31222         * tree-ssa-structalias.c (set_uids_in_ptset): Do not prune
31223         variables that cannot have TBAA applied.
31224         (compute_points_to_sets): Do not remove GIMPLE_CHANGE_DYNAMIC_TYPE
31225         statements.
31226
31227 2009-01-27  Uros Bizjak  <ubizjak@gmail.com>
31228
31229         PR middle-end/38969
31230         * calls.c (initialize_argument_information): Do not wrap complex
31231         arguments in SAVE_EXPR.
31232
31233 2009-01-26  Andreas Tobler  <a.tobler@schweiz.org>
31234
31235         * config/t-vxworks (LIBGCC2_INCLUDES): Fix typo.
31236         (INSTALL_LIBGCC): Revert typo commit.
31237
31238 2009-01-26  Richard Guenther  <rguenther@suse.de>
31239
31240         PR tree-optimization/38745
31241         * tree-ssa-alias.c (update_alias_info_1): Exclude RESULT_DECL
31242         from special handling.
31243
31244 2009-01-26  Richard Guenther  <rguenther@suse.de>
31245
31246         PR tree-optimization/38745
31247         * tree-ssa.c (execute_update_addresses_taken): Do not include
31248         variables that cannot possibly be a register in not_reg_needs.
31249         Do not clear TREE_ADDRESSABLE on vars that may not become
31250         registers.
31251         * tree-ssa.c (update_alias_info_1): Include those in the set
31252         of addressable vars.
31253
31254 2009-01-26  Richard Guenther  <rguenther@suse.de>
31255
31256         PR middle-end/38851
31257         * Makefile.in (tree-ssa-dse.o): Add langhooks.h.
31258         * tree-ssa-dse.c: Include langhooks.h
31259         (execute_simple_dse): Remove stores with zero size.
31260
31261 2009-01-24  Jakub Jelinek  <jakub@redhat.com>
31262
31263         PR c/38957
31264         * c-typeck.c (c_finish_return): Handle POINTER_PLUS_EXPR the same way
31265         as PLUS_EXPR.
31266
31267 2009-01-24  Julian Brown  <julian@codesourcery.com>
31268
31269         * config/arm/t-linux-eabi (LIB2FUNCS_STATIC_EXTRA): Add
31270         config/arm/linux-atomic.c.
31271         * config/arm/linux-atomic.c: New.
31272
31273 2009-01-24  Eric Botcazou  <ebotcazou@adacore.com>
31274
31275         * config/sparc/linux.h (DBX_REGISTER_NUMBER): Delete.
31276         * config/sparc/linux64.h (DBX_REGISTER_NUMBER): Likewise.
31277         * config/sparc/sysv4.h (DBX_REGISTER_NUMBER): Likewise.
31278
31279 2009-01-24  H.J. Lu  <hongjiu.lu@intel.com>
31280
31281         PR c/38938
31282         * c-opts.c (c_common_handle_option): Update warn_pointer_sign
31283         properly.
31284
31285 2009-01-24  Sebastian Pop  <sebastian.pop@amd.com>
31286
31287         PR tree-optimization/38953
31288         * graphite.c (graphite_verify): Add a call to verify_loop_closed_ssa.
31289         (scop_adjust_phis_for_liveouts): Initialize false_i to zero.
31290         (gloog): Split the exit of the scop when the scop exit is a loop exit.
31291         (graphite_transform_loops): Only call cleanup_tree_cfg if gloog
31292         changed the CFG.
31293
31294 2009-01-24  Paul Brook  <paul@codesourcery.com>
31295
31296         * config/arm/neon.md (neon_type): Move to arm.md.
31297         (neon_mov<VSTRUCT>): Add neon_type attribute.
31298         * config/arm/arm.md (neon_type): Move to here.
31299         (conds): Add "unconditioal" and use as default for NEON insns.
31300
31301 2009-01-24  Ben Elliston  <bje@au.ibm.com>
31302
31303         * bitmap.h (BITMAP_FREE): Eliminate `implicit conversion from
31304         void *' warning from -Wc++-compat.
31305         * Makefile.in (dominance.o-warn): Remove.
31306
31307 2009-01-23  Paolo Bonzini  <bonzini@gnu.org>
31308
31309         PR tree-optimization/38932
31310         * fold-const.c (fold_unary_ignore_overflow): New.
31311         * tree.h (fold_unary_ignore_overflow): Declare.
31312         * tree-ssa-ccp.c (ccp_fold): Use fold_unary_ignore_overflow.
31313         * tree-ssa-sccvn.c (visit_reference_op_load,
31314         simplify_unary_expression): Likewise.
31315
31316 2009-01-22  Adam Nemet  <anemet@caviumnetworks.com>
31317
31318         * c-decl.c (finish_struct): Move code to set DECL_PACKED after
31319         DECL_BIT_FIELD is alreay known.  Also inherit packed for bitfields
31320         regardless of their type.
31321         * c-common.c (handle_packed_attribute): Don't ignore packed on
31322         bitfields.
31323         * c.opt (Wpacked-bitfield-compat): New warning option.
31324         * stor-layout.c (place_field): Warn if offset of a field changed.
31325         * doc/extend.texi (packed): Mention the ABI change.
31326         * doc/invoke.texi (-Wpacked-bitfield-compat): Document.
31327         (Warning Options): Add it to the list.
31328
31329 2009-01-22  H.J. Lu  <hongjiu.lu@intel.com>
31330
31331         * c-opts.c (c_common_post_options): Fix a typo in comments.
31332
31333 2009-01-22  Steve Ellcey  <sje@cup.hp.com>
31334
31335         PR middle-end/38615
31336         * gimplify.c (gimplify_init_constructor): Fix promotion of const
31337         variables to static.
31338         * doc/invoke.texi (-fmerge-all-constants): Update description.
31339
31340 2009-01-22  Uros Bizjak  <ubizjak@gmail.com>
31341
31342         PR target/38931
31343         * config/i386/i386.md (*movsi_1): Use type "mmx" for alternative 2.
31344         (*movdi_1_rex64): Use type "mmx" for alternative 5.
31345
31346 2009-01-22  Richard Earnshaw  <rearnsha@arm.com>
31347
31348         * arm.h (DATA_ALIGNMENT): Align structures, unions and arrays to
31349         a word boundary.
31350         (LOCAL_ALIGNMENT): Similarly.
31351
31352 2009-01-22  Mark Shinwell  <shinwell@codesourcery.com>
31353             Joseph Myers  <joseph@codesourcery.com>
31354
31355         * config/arm/arm.c (all_architectures): Add iWMMXt2 entry.
31356         * config/arm/arm-cores.def: New ARM_CORE entry for iWMMXt2.
31357         * config/arm/arm-tune.md: Regenerate.
31358         * doc/invoke.texi (ARM Options): Document -mcpu=iwmmxt2 and
31359         -march=iwmmxt2.
31360
31361 2009-01-22  Mark Shinwell  <shinwell@codesourcery.com>
31362
31363         * config/arm/bpabi.h (SUBTARGET_EXTRA_ASM_SPEC): Bump EABI
31364         version number to five.
31365
31366 2009-01-22  Dodji Seketeli  <dodji@redhat.com>
31367
31368         PR c++/38930
31369         * c-decl.c (clone_underlying_type): Revert PR c++/26693 changes.
31370         * c-common.c (set_underlying_type): Likewise.
31371         (is_typedef_decl ): Likewise
31372         * tree.h: Likewise
31373         (set_underlying_type): Likewise.
31374         (is_typedef_type): Likewise.
31375
31376 2009-01-21  Vladimir Makarov  <vmakarov@redhat.com>
31377
31378         PR middle-end/38587
31379         * ira-color.c (coalesce_spill_slots): Don't coalesce allocnos
31380         crossing setjmps.
31381
31382 2009-01-21  Dave Korn  <dave.korn.cygwin@gmail.com>
31383
31384         PR bootstrap/37660
31385         * config/i386/cygwin.h (SHARED_LIBGCC_SPEC):  New helper macro.
31386         (LIBGCC_SPEC):  Don't define.
31387         (REAL_LIBGCC_SPEC):  Define instead, using SHARED_LIBGCC_SPEC.
31388
31389 2009-01-21  Uros Bizjak  <ubizjak@gmail.com>
31390
31391         PR rtl-optimization/38879
31392         * alias.c (base_alias_check): Unaligned access via AND address can
31393         alias all surrounding object types except those with sizes equal
31394         or wider than the size of unaligned access.
31395
31396 2009-01-21  Dodji Seketeli  <dodji@redhat.com>
31397
31398         PR c++/26693
31399         * c-decl.c (clone_underlying_type): Move this ...
31400         * c-common.c (set_underlying_type): ... here.
31401         Also, make sure the function properly sets TYPE_STUB_DECL() on
31402         the newly created typedef variant type.
31403         (is_typedef_decl ): New entry point.
31404         * tree.h: Added a new member member_types_needing_access_check to
31405         struct tree_decl_non_common.
31406         (set_underlying_type): New entry point.
31407         (is_typedef_type): Likewise.
31408
31409 2009-01-21  Bingfeng Mei  <bmei@broadcom.com>
31410
31411         * alias.c (walk_mems_1, walk_mems_2, insn_alias_sets_conflict_p):
31412         Check whether two instructions have memory references that
31413         belong to conflicting alias sets.  walk_mems_1 and walk_mems_2
31414         are helper functions for traversing.
31415         * alias.h (insn_alias_sets_confilict_p): New prototypes.
31416         * ddg.c (add_inter_loop_mem_dep): Call insn_alias_sets_conflict_p
31417         not to draw dependency edge for instructions with non-conflicting
31418         alias sets.
31419
31420 2009-01-20  Joseph Myers  <joseph@codesourcery.com>
31421
31422         PR other/38758
31423         * longlong.h: Update copyright years.  Use soft-fp license notice.
31424         Sync __clz_tab declaration with glibc.
31425
31426 2009-01-20  Steve Ellcey  <sje@cup.hp.com>
31427
31428         PR target/30687
31429         * doc/extend.texi (syscall_linkage): New.
31430         (version_id): Modify.
31431
31432 2009-01-20  Andrew Pinski  <andrew_pinski@playstation.sony.com>
31433             Richard Guenther  <rguenther@suse.de>
31434
31435         PR tree-optimization/38747
31436         PR tree-optimization/38748
31437         * tree-ssa-forwprop.c (forward_propagate_addr_expr_1): Disable the VCE
31438         conversion if the base address is an indirect reference and the
31439         aliasing sets could cause issues.
31440
31441 2009-01-20  Sebastian Pop  <sebastian.pop@amd.com>
31442
31443         * common.opt (fgraphite, fgraphite-identity): Add comment for
31444         explaining why these options are not documented.
31445
31446 2009-01-20  Sebastian Pop  <sebastian.pop@amd.com>
31447
31448         * graphite.c (stmt_simple_for_scop_p): Also handle cases when
31449         gimple_call_lhs is NULL.
31450
31451 2009-01-20  Paolo Bonzini  <bonzini@gnu.org>
31452
31453         PR target/38868
31454         * emit-rtl.c (adjust_address_1): Make sure memref is never
31455         overwritten.
31456
31457 2009-01-20  Ben Elliston  <bje@au.ibm.com>
31458
31459         * libgcov.c (__gcov_execl, __gcov_execlp, __gcov_execle): Remove
31460         const qualifier from arg parameter. Remove unnecessary cast to char *.
31461         * gcov-io.h (__gcov_execl, __gcov_execlp, __gcov_execle): Remove
31462         const qualifier from arg 2.
31463
31464 2009-01-19  Iain Sandoe  <iain.sandoe@sandoe-acoustics.co.uk>
31465
31466         * config/darwin.h: Add static-libgfortran to LINK_SPEC.
31467
31468 2009-01-19  Vladimir Makarov  <vmakarov@redhat.com>
31469
31470         PR c/38869
31471         * rtl.h (reinit_regs): New prototype.
31472         * regclass.c: Include ira.h.
31473         (reinit_regs): New.
31474         * Makefile.in (regclass.o): Add ira.h.
31475         * config/i386/i386.c (ix86_maybe_switch_abi): Use reinit_regs.
31476
31477 2009-01-18  H.J. Lu  <hongjiu.lu@intel.com>
31478
31479         PR target/38736
31480         * c-common.c (handle_aligned_attribute): Use
31481         ATTRIBUTE_ALIGNED_VALUE instead of BIGGEST_ALIGNMENT for
31482         default alignment value.
31483
31484         * c-cppbuiltin.c (c_cpp_builtins): Define __BIGGEST_ALIGNMENT__.
31485
31486         * defaults.h (ATTRIBUTE_ALIGNED_VALUE): New.
31487         * config/i386/i386.h (ATTRIBUTE_ALIGNED_VALUE): Likewise.
31488
31489         * doc/extend.texi: Update __attribute__ ((aligned)).  Document
31490         __BIGGEST_ALIGNMENT__.
31491
31492         * doc/tm.texi: Document ATTRIBUTE_ALIGNED_VALUE.
31493
31494 2009-01-18  Richard Guenther  <rguenther@suse.de>
31495
31496         PR tree-optimization/38819
31497         * tree-flow.h (operation_could_trap_helper_p): Declare.
31498         * tree-eh.c (operation_could_trap_helper_p): Export.
31499         * tree-ssa-sccvn.h (vn_nary_may_trap): Declare.
31500         * tree-ssa-sccvn.c (vn_nary_may_trap): New function.
31501         * tree-ssa-pre.c (insert_into_preds_of_block): Check if we
31502         are about to insert a possibly trapping instruction and fail
31503         in this case.
31504
31505 2009-01-18  Andreas Schwab  <schwab@suse.de>
31506
31507         * doc/install.texi (Configuration): Remove obsolete paragraph
31508         about use of --with-gnu-ld with --with-gnu-as.
31509
31510 2009-01-18  Kazu Hirata  <kazu@codesourcery.com>
31511
31512         * doc/extend.texi, doc/gimple.texi, doc/invoke.texi,
31513         doc/md.texi, doc/sourcebuild.texi, doc/tm.texi: Fix typos.
31514         Follow spelling conventions.
31515
31516 2009-01-18  Ben Elliston  <bje@au.ibm.com>
31517
31518         * bitmap.c (bitmap_obstack_alloc_stat): Adjust cast to eliminate
31519         C++ warning about implicit conversion from void * to struct
31520         bitmap_head_def *.
31521         (bitmap_obstack_free): Likewise for bitmap_element *.
31522         * Makefile.in (bitmap.o-warn): Remove.
31523
31524 2009-01-17  Dave Korn  <dave.korn.cygwin@gmail.com>
31525
31526         * Makefile.in (BACKENDLIBS):  Reorder to match dependencies.
31527
31528 2009-01-17  Sebastian Pop  <sebastian.pop@amd.com>
31529             Tobias Grosser  <tobi.grosser@amd.com>
31530
31531         * graphite.c (graphite_trans_scop_block): Do not block single
31532         nested loops.
31533
31534 2009-01-16  Alexandre Oliva  <aoliva@redhat.com>
31535
31536         * ebitmap.h (ebitmap_iter_init): Initialize all fields.
31537         * ipa-struct-reorg.c (gen_struct_type): Replace known-true
31538         test with assertion.
31539
31540 2009-01-16  Richard Guenther  <rguenther@suse.de>
31541
31542         PR tree-optimization/38835
31543         PR middle-end/36227
31544         * fold-const.c (fold_binary): Remove PTR + INT -> (INT)(PTR p+ INT)
31545         and INT + PTR -> (INT)(PTR p+ INT) folding.
31546         * tree-ssa-address.c (create_mem_ref): Properly use POINTER_PLUS_EXPR.
31547
31548 2009-01-16  Adam Nemet  <anemet@caviumnetworks.com>
31549
31550         PR target/38554
31551         * expmed.c (expand_shift): With SHIFT_COUNT_TRUNCATED, don't lift
31552         the subreg from a lowpart subreg if it is also casting the value.
31553
31554 2009-01-16  Sebastian Pop  <sebastian.pop@amd.com>
31555             Tobias Grosser  <tobi.grosser@amd.com>
31556
31557         * graphite.c (compare_prefix_loops): New.
31558         (build_scop_canonical_schedules): Rewritten.
31559         (graphite_transform_loops): Move build_scop_canonical_schedules
31560         after build_scop_iteration_domain.
31561
31562 2009-01-16  Sebastian Pop  <sebastian.pop@amd.com>
31563             Tobias Grosser  <tobi.grosser@amd.com>
31564
31565         * graphite.c (add_conditions_to_domain): Add the loops to
31566         the dimension of the iteration domain.  Do copy the domain
31567         only when it exists.
31568         (build_scop_conditions_1): Do not call add_conditions_to_domain.
31569         (add_conditions_to_constraints): New.
31570         (can_generate_code_stmt, can_generate_code): Removed.
31571         (gloog): Do not call can_generate_code.
31572         (graphite_transform_loops): Call add_conditions_to_constraints
31573         after building the iteration domain.
31574
31575 2009-01-16  Jakub Jelinek  <jakub@redhat.com>
31576
31577         PR tree-optimization/38789
31578         * tree-ssa-threadedge.c
31579         (record_temporary_equivalences_from_stmts_at_dest): Ignore calls to
31580         __builtin_constant_p.
31581
31582 2009-01-16  Kenneth Zadeck  <zadeck@naturalbridge.com>
31583
31584         * dce.c (delete_unmarked_insns): Reversed the order that insns are
31585         examined before deleting them.
31586
31587 2009-01-16  Richard Earnshaw  <rearnsha@arm.com>
31588
31589         * function.c (aggregate_value_p): Correctly extract the function
31590         type from CALL_EXPR_FN lookup.
31591
31592 2009-01-16  Hariharan Sandanagobalane  <hariharan@picochip.com>
31593
31594         * config/picochip/picochip.c (picochip_override_options): Revert
31595         CFI asm flag disable commited previously.
31596
31597 2009-01-15  Sebastian Pop  <sebastian.pop@amd.com>
31598             Tobias Grosser  <tobi.grosser@amd.com>
31599             Jan Sjodin  <jan.sjodin@amd.com>
31600
31601         * graphite.c (scan_tree_for_params): On substractions negate
31602         all the coefficients of the term.
31603         (clast_to_gcc_expression_red): New.  Handle reduction expressions
31604         of more than two operands.
31605         (clast_to_gcc_expression): Call clast_to_gcc_expression_red.
31606         (get_vdef_before_scop): Handle also the case of default definitions.
31607
31608 2009-01-15  Richard Sandiford  <rdsandiford@googlemail.com>
31609
31610         * caller-save.c (add_used_regs_1, add_used_regs): New functions.
31611         (insert_one_insn): Use them instead of REG_DEAD and REG_INC notes.
31612         Also use them when walking CALL_INSN_FUNCTION_USAGE.
31613
31614 2009-01-15  H.J. Lu  <hongjiu.lu@intel.com>
31615             Joey Ye  <joey.ye@intel.com>
31616
31617         PR middle-end/37843
31618         * cfgexpand.c (expand_stack_alignment): Don't update stack
31619         boundary nor check incoming stack boundary here.
31620         (gimple_expand_cfg): Update stack boundary and check incoming
31621         stack boundary here.
31622
31623 2009-01-15  Kenneth Zadeck  <zadeck@naturalbridge.com>
31624
31625         * dce.c (find_call_stack_args, delete_unmarked_insns): Fixed comments.
31626
31627 2009-01-14  Jakub Jelinek  <jakub@redhat.com>
31628
31629         PR rtl-optimization/38245
31630         * calls.c (expand_call): Add stack arguments to
31631         CALL_INSN_FUNCTION_USAGE even for pure calls (when
31632         ACCUMULATE_OUTGOING_ARGS) and even for args partially passed
31633         in regs and partially in memory or BLKmode arguments.
31634         (emit_library_call_value_1): Add stack arguments to
31635         CALL_INSN_FUNCTION_USAGE even for pure calls (when
31636         ACCUMULATE_OUTGOING_ARGS).
31637         * dce.c: Include tm_p.h.
31638         (find_call_stack_args): New function.
31639         (deletable_insn_p): Call it for CALL_P insns.  Add ARG_STORES
31640         argument.
31641         (mark_insn): Call find_call_stack_args for CALL_Ps.
31642         (prescan_insns_for_dce): Walk insns backwards in bb rather than
31643         forwards.  Allocate and free arg_stores bitmap if needed, pass it
31644         down to deletable_insn_p, don't mark stores set in arg_stores
31645         bitmap, clear the bitmap at the beginning of each bb.
31646         * Makefile.in (dce.o): Depend on $(TM_P_H).
31647
31648 2009-01-14  Michael Meissner  <gnu@the-meissners.org>
31649
31650         PR target/22599
31651         * config/i386/i386.c (print_operand): Add tests for 'D', 'C', 'F', 'f'
31652         to make sure the insn is a conditional test (bug 22599).  Reformat a
31653         few long lines.
31654
31655 2009-01-14  Sebastian Pop  <sebastian.pop@amd.com>
31656
31657         PR middle-end/38431
31658         * graphite.c (get_vdef_before_scop, scop_adjust_vphi): New.
31659         (scop_adjust_phis_for_liveouts): Call scop_adjust_vphi.
31660         (gloog): Do not call cleanup_tree_cfg.
31661         (graphite_transform_loops): Call cleanup_tree_cfg after all
31662         scops have been code generated.
31663
31664 2009-01-14  Basile Starynkevitch  <basile@starynkevitch.net>
31665         * doc/gty.texi (Invoking the garbage collector): Added new node
31666         and section documenting ggc_collect.
31667
31668 2009-01-14  Richard Guenther  <rguenther@suse.de>
31669
31670         PR tree-optimization/38826
31671         PR middle-end/38477
31672         * tree-ssa-structalias.c (emit_alias_warning): Emit the pointer
31673         initialization notes only if we actually emitted a warning.
31674         (intra_create_variable_infos): Add constraints for a result decl
31675         that is passed by hidden reference.
31676         (build_pred_graph): Mark all related variables non-direct on
31677         address-taking.
31678
31679 2009-01-14  Nick Clifton  <nickc@redhat.com>
31680
31681         * ira-conflicts.c: Include addresses.h for the definition of
31682         base_reg_class.
31683         (ira_build_conflicts): Use base_reg_class instead of BASE_REG_CLASS.
31684         * Makefile.in: Add a dependency of ira-conflicts.o on addresses.h.
31685
31686 2009-01-13  Vladimir Makarov  <vmakarov@redhat.com>
31687
31688         PR target/38811
31689         * Makefile.in (ira-lives.o): Add except.h.
31690
31691         * ira-lives.c: Include except.h.
31692         (process_bb_node_lives): Process can_throw_internal.
31693
31694 2009-01-13  Jakub Jelinek  <jakub@redhat.com>
31695
31696         PR rtl-optimization/38774
31697         * combine.c (simplify_set): When undoing cc_use change, don't do
31698         PUT_CODE on the newly created comparison, but instead put back the
31699         old comparison.
31700
31701 2009-01-13  Joseph Myers  <joseph@codesourcery.com>
31702
31703         * doc/invoke.texi (ARM Options): Update lists of -mcpu and -march
31704         values.  Remove duplicate arm8 entry.
31705
31706 2009-01-13  Sebastian Pop  <sebastian.pop@amd.com>
31707
31708         PR tree-optimization/38786
31709         * graphite.c (expand_scalar_variables_ssa_name): New, outlined from
31710         the SSA_NAME case of expand_scalar_variables_expr.
31711         Set the type of an expression to the type of its assign statement.
31712         (expand_scalar_variables_expr): Also gather the scalar computation
31713         used to index the memory access.  Do not pass loop_p.
31714         Fix comment.  Stop recursion on tcc_constant or tcc_declaration.
31715         (expand_scalar_variables_stmt): Pass to expand_scalar_variables_expr
31716         the gimple_stmt_iterator where it inserts new code.
31717         Do not pass loop_p.
31718         (copy_bb_and_scalar_dependences): Do not pass loop_p.
31719         (translate_clast): Update call to copy_bb_and_scalar_dependences.
31720
31721 2009-01-13  Sebastian Pop  <sebastian.pop@amd.com>
31722
31723         * graphite.h (debug_value): Removed.
31724         * graphite.c (debug_value): Removed.
31725
31726 2009-01-13  Richard Earnshaw  <rearnsha@arm.com>
31727
31728         * config/arm/arm.c (output_move_double): Don't synthesize thumb-2
31729         ldrd/strd with two 32-bit instructions.
31730
31731 2009-01-13  Richard Earnshaw  <rearnsha@arm.com>
31732
31733         * config/arm/arm.c (struct processors): Pass for speed down into
31734         cost helper functions.
31735         (const_ok_for_op): Handle COMPARE and inequality nodes.
31736         (arm_rtx_costs_1): Rewrite.
31737         (arm_size_rtx_costs): Update prototype.
31738         (arm_rtx_costs): Pass speed down to helper functions.
31739         (arm_slowmul_rtx_costs): Rework cost calculations.
31740         (arm_fastmul_rtx_costs, arm_xscale_rtx_costs): Likewise.
31741         (arm_9e_rtx_costs): Likewise.
31742
31743 2009-01-13  Uros Bizjak  <ubizjak@gmail.com>
31744
31745         * config/alpha/alpha.c (alpha_legitimate_address_p): Explicit
31746         relocations of local symbols wider than UNITS_PER_WORD are not valid.
31747         (alpha_legitimize_address): Do not split local symbols wider than
31748         UNITS_PER_WORD into HIGH/LO_SUM parts.
31749
31750 2009-01-13  Danny Smith  <dannysmith@users.sourceforge.net>
31751
31752         PR bootstrap/38580
31753         * gcc.c (process_command): Replace call to execvp with calls
31754         to pex_one and exit.
31755
31756 2009-01-03  Anatoly Sokolov  <aesok@post.ru>
31757
31758         PR target/29141
31759         * config/avr/t-avr (LIB1ASMFUNCS): Add _tablejump_elpm.
31760         * config/avr/libgcc.S (__do_global_ctors, __do_global_dtors): Add
31761         variant for devices with 3-byte PC.
31762         (__tablejump_elpm__): New.
31763
31764 2009-01-12  Jakub Jelinek  <jakub@redhat.com>
31765
31766         PR c/32041
31767         * c-parser.c (c_parser_postfix_expression): Allow `->' in
31768         offsetof member-designator, handle it as `[0].'.
31769
31770 2009-01-12  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
31771
31772         * pa.c (pa_asm_output_mi_thunk): Use pc-relative branch to thunk
31773         function when not using named sections on targets with named sections
31774         if branch distance is less than 262132.
31775
31776 2009-01-12  Richard Earnshaw  <rearnsha@arm.com>
31777
31778         * combine.c (combine_instructions):  Recompute
31779         optimize_this_for_speed_p  for each BB in the main combine loop.
31780
31781 2009-01-12  Tomas Bily  <tbily@suse.cz>
31782
31783         PR middlend/38385
31784         * tree-loop-distribution.c (prop_phis): New function.
31785         (generate_builtin): Call prop_phis.
31786
31787 2009-01-12  Jakub Jelinek  <jakub@redhat.com>
31788
31789         PR tree-optimization/38807
31790         * tree-ssa-reassoc.c (remove_visited_stmt_chain): Don't look at
31791         gimple_visited_p unless stmt is GIMPLE_ASSIGN.
31792
31793 2009-01-11  Adam Nemet  <anemet@caviumnetworks.com>
31794
31795         * expmed.c (store_bit_field_1): Properly truncate the paradoxical
31796         subreg of op0 to the original op0.
31797
31798 2009-01-11  Laurent GUERBY  <laurent@guerby.net>
31799
31800         * doc/sourcebuild.texi (Source Tree): Move up intl and fixinc.
31801
31802 2009-01-11  Markus Schoepflin  <markus.schoepflin@comsoft.de>
31803
31804         PR debug/7055
31805         * mips-tfile.c (parse_def): Fix parsing of def strings
31806         starting with digits.
31807
31808 2009-01-10  Jakub Jelinek  <jakub@redhat.com>
31809
31810         PR target/38695
31811         * config/arm/arm.c (arm_is_long_call_p): Don't call
31812         arm_function_in_section_p if decl isn't a FUNCTION_DECL.
31813
31814 2009-01-09  Steven Bosscher  <steven@gcc.gnu.org>
31815
31816         * regrename.c (regrename_optimize): Fix dumping.
31817         (find_oldest_value_reg): Preserve REG_POINTER.
31818         (copy_hardreg_forward_1): Likewise.
31819
31820 2009-01-09  Diego Novillo  <dnovillo@google.com>
31821
31822         * gimple.h (struct gimple_statement_base) <uid>: Document
31823         the restrictions on its use.
31824         (gimple_uid): Tidy.
31825         (gimple_set_uid): Tidy.
31826
31827 2009-01-09  Jakub Jelinek  <jakub@redhat.com>
31828
31829         * config/i386/i386.c (ix86_expand_movmem, ix86_expand_setmem): Add
31830         zero guard even if align_bytes != 0 and count is smaller than
31831         size_needed.
31832
31833 2009-01-09  Vladimir Makarov  <vmakarov@redhat.com>
31834
31835         PR rtl-optimization/38495
31836         * ira-emit.c (print_move_list, ira_debug_move_list): New functions.
31837         (add_range_and_copies_from_move_list): Print all added ranges.
31838         Add ranges to memory optimized destination.
31839
31840 2009-01-09  Jakub Jelinek  <jakub@redhat.com>
31841
31842         PR target/38686
31843         PR target/38708
31844         * config/i386/i386.c (override_options): Reject
31845         -mstringop-strategy=rep_8byte with -m32.
31846         (ix86_expand_movmem): For size_needed == 1 set epilogue_size_needed
31847         to 1.  Do count comparison against epilogue_size_needed at compile
31848         time even when count_exp was constant forced into register.  For
31849         size_needed don't jump to epilogue, instead just avoid aligning
31850         and invoke the body algorithm.  If need_zero_guard, add zero guard
31851         even if count is non-zero, but smaller than size_needed + number of
31852         bytes that could be stored for alignment.
31853         (ix86_expand_setmem): For size_needed == 1 set epilogue_size_needed
31854         to 1.  If need_zero_guard, add zero guard even if count is non-zero,
31855         but smaller than size_needed + number of bytes that could be stored
31856         for alignment.  Compare size_needed with epilogue_size_needed instead
31857         of desired_align - align, don't adjust size_needed, pass
31858         epilogue_size_needed to the epilogue expanders.
31859
31860         PR c/35742
31861         * c-pretty-print.c (pp_c_expression): Handle GOTO_EXPR like BIND_EXPR.
31862
31863 2009-01-09  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
31864
31865         * pa.c (last_address): Change to unsigned.
31866         (update_total_code_bytes): Change argument to unsigned.  Don't
31867         check if insn addresses are set.
31868         (pa_output_function_epilogue): Set last_address to UINT_MAX if insn
31869         addresses are not set.
31870         (pa_asm_output_mi_thunk): Handle wrap when updating last_address.
31871
31872 2009-01-09  Nick Clifton  <nickc@redhat.com>
31873
31874         * config/sh/symbian.c: Replace uses of DECL_INLINE with
31875         DECL_DECLARED_INLINE_P.
31876
31877 2009-01-09  Jakub Jelinek  <jakub@redhat.com>
31878
31879         PR middle-end/38347
31880         * dojump.c (do_jump_by_parts_zero_rtx): Use mode instead of
31881         GET_MODE (op0) in operand_subword_force calls.
31882
31883         PR middle-end/38771
31884         * fold-const.c (fold_unary): For COMPOUND_EXPR and COND_EXPR,
31885         fold_convert arg0 operands to TREE_TYPE (op0) first.
31886
31887 2009-01-08  Vladimir Makarov  <vmakarov@redhat.com>
31888
31889         * params.def (ira-max-conflict-table-size): Decrease default value
31890         to 1000.
31891
31892 2009-01-08  Jakub Jelinek  <jakub@redhat.com>
31893
31894         PR tree-optimization/37031
31895         * lambda-code.c (lambda_collect_parameters): Call pointer_set_destroy
31896         on parameter_set.
31897         (build_access_matrix): Reserve correct size for AM_MATRIX vector,
31898         allocate it using gc instead of heap, use VEC_quick_push instead of
31899         VEC_safe_push.
31900         * graphite.c (build_access_matrix): Allocate AM_MATRIX vector using gc
31901         instead of heap, use VEC_quick_push instead of VEC_safe_push.
31902         * tree-data-ref.h (struct access_matrix): Change matrix to gc
31903         allocated vector from heap allocated.
31904         * lambda.h: Add DEF_VEC_ALLOC_P for gc allocated lambda_vector.
31905         * tree-loop-linear.c (linear_transform_loops): Allocate nest
31906         vector only after perfect_loop_nest_depth call.
31907
31908 2009-01-08  Sebastian Pop  <sebastian.pop@amd.com>
31909             Jan Sjodin  <jan.sjodin@amd.com>
31910
31911         PR tree-optimization/38559
31912         * graphite.c (debug_value, copy_constraint,
31913         swap_constraint_variables, scale_constraint_variable, ): New.
31914         (get_lower_bound, get_upper_bound): Removed.
31915         (graphite_trans_bb_strip_mine): Clean up this code that works
31916         only for constant number of iterations.  Fully copy upper and
31917         lower bound constraints, not only the constant part of them.
31918         * graphite.h (debug_value): Declared.
31919
31920 2009-01-08  Ira Rosen  <irar@il.ibm.com>
31921
31922         PR tree-optimization/37194
31923         * tree-vect-transform.c (vect_estimate_min_profitable_iters):
31924         Don't add the cost of cost model guard in prologue to scalar
31925         outside cost in case of known number of iterations.
31926
31927 2009-01-07  Nathan Froyd  <froydnj@codesourcery.com>
31928             Alan Modra  <amodra@bigpond.net.au>
31929
31930         * config/rs6000/rs6000.c (rs6000_legitimize_address): Check for
31931         non-word-aligned REG+CONST addressing.
31932
31933 2009-01-07  Uros Bizjak  <ubizjak@gmail.com>
31934
31935         PR target/38706
31936         * config/alpha/alpha.c (alpha_end_function): For TARGET_ABI_OSF, call
31937         free_after_compilation when outputting a thunk.
31938         (alpha_output_mi_thunk_osf): Assert that we are processing a thunk.
31939         Do not call free_after_compilation here.
31940
31941 2009-01-07  Uros Bizjak  <ubizjak@gmail.com>
31942
31943         * config/i386/i386.c (ix86_target_string): Use ARRAY_SIZE.
31944         (ix86_valid_target_attribute_inner_p): Ditto.
31945
31946 2009-01-07  Jan Sjodin  <jan.sjodin@amd.com>
31947
31948         PR tree-optimization/38492
31949         PR tree-optimization/38498
31950         * tree-check.c (operator_is_linear, scev_is_linear_expression): New.
31951         * tree-chrec.h (scev_is_linear_expression): Declared.
31952         * graphite.c (graphite_cannot_represent_loop_niter): New.
31953         (scopdet_basic_block_info): Call graphite_cannot_represent_loop_niter.
31954         (graphite_loop_normal_form): Use gcc_assert.
31955         (scan_tree_for_params): Use CASE_CONVERT.
31956         (phi_node_is_iv, bb_contains_non_iv_scalar_phi_nodes): New.
31957         (build_scop_conditions_1): Call bb_contains_non_iv_scalar_phi_nodes.
31958         Use gcc_assert.  Discard scops that contain unhandled cases.
31959         (build_scop_conditions): Return a boolean status for unhandled cases.
31960         (strip_mine_profitable_p): Print the loop number, not its depth.
31961         (is_interchange_valid): Pass the depth of the loop nest, don't
31962         recompute it wrongly.
31963         (graphite_trans_bb_block): Same.
31964         (graphite_trans_bb_block): Print tentative of loop blocking.
31965         (graphite_trans_scop_block): Do not print that the loop has been
31966         blocked.
31967         (graphite_transform_loops): Do not handle scops that contain condition
31968         scalar phi nodes.
31969
31970 2009-01-07  H.J. Lu  <hongjiu.lu@intel.com>
31971
31972         AVX Programming Reference (December, 2008)
31973         * config/i386/avxintrin.h (_mm256_stream_si256): New.
31974         (_mm256_stream_pd): Likewise.
31975         (_mm256_stream_ps): Likewise.
31976
31977         * config/i386/i386.c (ix86_builtins): Add IX86_BUILTIN_MOVNTDQ256,
31978         IX86_BUILTIN_MOVNTPD256 and IX86_BUILTIN_MOVNTPS256.
31979         (ix86_special_builtin_type): Add VOID_FTYPE_PV4DI_V4DI.
31980         (bdesc_special_args): Add __builtin_ia32_movntdq256,
31981         __builtin_ia32_movntpd256 and __builtin_ia32_movntps256.
31982         (ix86_init_mmx_sse_builtins): Handle VOID_FTYPE_PV4DI_V4DI.
31983         (ix86_expand_special_args_builtin): Likewise.
31984
31985         * config/i386/sse.md (AVXMODEDI): New.
31986         (avx_movnt<mode>): Likewise.
31987         (avx_movnt<mode>): Likewise.
31988         (<sse>_movnt<mode>): Remove AVX support.
31989         (sse2_movntv2di): Likewise.
31990
31991 2009-01-07  Richard Guenther  <rguenther@suse.de>
31992
31993         PR middle-end/38751
31994         * fold-const.c (extract_muldiv): Remove obsolete comment.
31995         (fold_plusminus_mult_expr): Undo MINUS_EXPR
31996         to PLUS_EXPR canonicalization for the canonicalization.
31997
31998 2009-01-07  Gerald Pfeifer  <gerald@pfeifer.com>
31999
32000         * doc/install.texi (alpha*-dec-osf*): Remove note on 32-bit
32001         hosted cross-compilers generating less efficient code.
32002
32003 2009-01-06  Richard Sandiford  <rdsandiford@googlemail.com>
32004
32005         * function.h (rtl_data): Add a dbr_scheduled_p field.
32006         * reorg.c (dbr_schedule): Set it.
32007         (gate_handle_delay_slots): Check it.
32008         * config/mips/mips.c (mips_base_delayed_branch): Delete.
32009         (mips_reorg): Check flag_delayed_branch instead of
32010         mips_base_delayed_branch.
32011         (mips_override_options): Don't set mips_base_delayed_branch
32012         or flag_delayed_branch.
32013
32014 2009-01-06  Richard Sandiford  <rdsandiford@googlemail.com>
32015
32016         PR rtl-optimization/38426.
32017         * ira.c (ira): Set current_function_is_leaf earlier.
32018
32019 2009-01-06  Jakub Jelinek  <jakub@redhat.com>
32020
32021         PR rtl-optimization/38722
32022         * combine.c (try_combine): Don't modify PATTERN (i3) and notes
32023         too early, only set a flag and modify after last possible
32024         undo_all point.
32025
32026 2009-01-06  Janis Johnson  <janis187@us.ibm.com>
32027
32028         PR c/34252
32029         * ginclude/float.h: Rename DECnn_DEN to DECnn_SUBNORMAL_MIN.
32030         * real.c (decimal_single_format): Correct values of emin and emax.
32031         (decimal_double_format): Ditto.
32032         (decimal_quad_format): Ditto.
32033         * c-cppbuiltin.c (builtin_define_decimal_float_constants): Adjust
32034         computation of DECnn_MIN and DECnn_MAX for corrected values of
32035         emin and emax.  Define __DECnn_SUBNORMAL_MIN__ instead of
32036         __DECnn_MIN__, and adjust its computation for the corrected value
32037         of emin.
32038
32039 2009-01-06  Jan Hubicka  <jh@suse.cz>
32040
32041         PR target/38744
32042         * config/i386/i386.c (ix86_expand_call): Use ARRAY_SIZE.
32043
32044 2009-01-06  Gerald Pfeifer  <gerald@pfeifer.com>
32045
32046         * doc/contrib.texi (Contributors): Slightly adjust the end note.
32047         Add Robert Clark to the list of testers.
32048
32049 2009-01-06  Jan Hubicka  <jh@suse.cz>
32050             Kai Tietz  <kai.tietz@onevision.com>
32051
32052         * config/i386/i386.md (*msabi_syvabi): Add SSE regs clobbers.
32053         * config/i386/i386.c (ix86_expand_call): Add clobbers.
32054
32055 2009-01-06  Jan Hubicka  <jh@suse.cz>
32056             Kai Tietz  <kai.tietz@onevision.com>
32057
32058         * config/i386/i386.h (CONDITIONAL_CALL_USAGE): SSE regs are not used
32059         for w64 ABI.
32060         * config/i386/i386.c (struct ix86_frame): Add padding0 and nsseregs.
32061         (ix86_nsaved_regs): Count only general purpose regs.
32062         (ix86_nsaved_sseregs): New.
32063         (ix86_compute_frame_layout): Update nsseregs; set preferred alignment
32064         to 16 for w64; compute padding and size of sse reg save area.
32065         (ix86_emit_save_regs, ix86_emit_save_regs_using_mov): Save only
32066         general purpose regs.
32067         (ix86_emit_save_sse_regs_using_mov): New.
32068         (ix86_expand_prologue): Save SSE regs if needed.
32069         (ix86_emit_restore_regs_using_mov): Use only general purpose regs.
32070         (ix86_emit_restore_sse_regs_using_mov): New.
32071         (ix86_expand_epilogue): Save SSE regs if needed.
32072
32073 2009-01-06  Jan Hubicka  <jh@suse.cz>
32074             Kai Tietz  <kai.tietz@onevision.com>
32075
32076         * config/i386/i386.h (ACCUMULATE_OUTGOING_ARGS): Enable for MSABI
32077         * config/i386/i386.c (init_cumulative_args): Disallow calls of MSABI
32078         functions when accumulate outgoing args is off.
32079
32080 2009-01-06  H.J. Lu  <hongjiu.lu@intel.com>
32081
32082         PR bootstrap/38742
32083         * ira-color.c (ira_reuse_stack_slot): Check ENABLE_IRA_CHECKING
32084         before using pseudos_have_intersected_live_ranges_p.
32085
32086         * ira-int.h (ira_assert): Always define.
32087
32088 2009-01-06  H.J. Lu  <hongjiu.lu@intel.com>
32089
32090         AVX Programming Reference (December, 2008)
32091         * config/i386/avxintrin.h (_mm_permute2_pd): Removed.
32092         (_mm256_permute2_pd): Likewise.
32093         (_mm_permute2_ps): Likewise.
32094         (_mm256_permute2_ps): Likewise.
32095         * config/i386/i386.md (UNSPEC_VPERMIL2): Likewise.
32096         * config/i386/sse.md (avx_vpermil2<mode>3): Likewise.
32097
32098         * config/i386/i386.c (ix86_builtins): Remove
32099         IX86_BUILTIN_VPERMIL2PD, IX86_BUILTIN_VPERMIL2PS,
32100         IX86_BUILTIN_VPERMIL2PD256 and IX86_BUILTIN_VPERMIL2PS256.
32101         (ix86_builtin_type): Remove V8SF_FTYPE_V8SF_V8SF_V8SI_INT,
32102         V4DF_FTYPE_V4DF_V4DF_V4DI_INT, V4SF_FTYPE_V4SF_V4SF_V4SI_INT
32103         and V2DF_FTYPE_V2DF_V2DF_V2DI_INT.
32104         (bdesc_args): Remove __builtin_ia32_vpermil2pd,
32105         __builtin_ia32_vpermil2ps, __builtin_ia32_vpermil2pd256 and
32106         __builtin_ia32_vpermil2ps256.
32107         (ix86_init_mmx_sse_builtins): Updated.
32108         (ix86_expand_args_builtin): Likewise.
32109
32110 2009-01-05  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
32111
32112         * pa.c (output_call): Relocate non-jump insns in the delay slot of
32113         long absolute calls when generating PA 2.0 code.
32114
32115 2009-01-05  Vladimir Makarov  <vmakarov@redhat.com>
32116
32117         PR rtl-optimization/38583
32118         * params.h (IRA_MAX_CONFLICT_TABLE_SIZE): New macro.
32119
32120         * params.def (ira-max-conflict-table-size): New.
32121
32122         * doc/invoke.texi (ira-max-conflict-table-size): Decribe.
32123
32124         * ira.h (ira_conflicts_p): New external definition.
32125
32126         * ira-conflicts.c (build_conflict_bit_table): Do not build too big
32127         table.  Report this.  Return result of building.
32128         (ira_build_conflicts): Use ira_conflicts_p.  Check result of
32129         building conflict table.
32130
32131         * ira-color.c (fast_allocation): Use num instead of ira_allocnos_num.
32132         (ira_color): Use ira_conflicts_p.
32133
32134         * global.c: Include ira.h.
32135         (pseudo_for_reload_consideration_p, build_insn_chain): Use
32136         ira_conflicts_p.
32137
32138         * Makefile.in (global.o): Add ira.h.
32139
32140         * ira-build.c (mark_all_loops_for_removal,
32141         propagate_some_info_from_allocno): New.
32142         (remove_unnecessary_allocnos): Call
32143         propagate_some_info_from_allocno.
32144         (remove_low_level_allocnos): New.
32145         (remove_unnecessary_regions): Add parameter.  Call
32146         mark_all_loops_for_removal and remove_low_level_allocnos.  Pass
32147         parameter to remove_unnecessary_regions.
32148         (ira_build): Remove all regions but root if the conflict table was
32149         not built.  Update conflict hard regs for allocnos crossing calls.
32150
32151         * ira.c (ira_conflicts_p): New global.
32152         (ira): Define and use ira_conflicts_p.
32153
32154         * reload1.c (compute_use_by_pseudos, reload, count_pseudo,
32155         count_spilled_pseudo, find_reg, alter_reg, finish_spills,
32156         emit_input_reload_insns, delete_output_reload): Use ira_conflicts_p.
32157
32158 2009-01-06  Ben Elliston  <bje@au.ibm.com>
32159
32160         * gengtype-lex.l (YY_NO_INPUT): Define.
32161
32162 2009-01-05  Andrew Pinski  <andrew_pinski@playstation.sony.com>
32163
32164         PR c/34911
32165         * c-common.c (handle_vector_size_attribute): Also reject
32166         BOOLEAN_TYPE types.
32167
32168 2009-01-05  Sebastian Pop  <sebastian.pop@amd.com>
32169
32170         PR tree-optimization/38492
32171         * graphite.c (rename_map_elt, debug_rename_elt,
32172         debug_rename_map_1, debug_rename_map, new_rename_map_elt,
32173         rename_map_elt_info, eq_rename_map_elts,
32174         get_new_name_from_old_name, bb_in_sese_p): Moved around.
32175         (sese_find_uses_to_rename_use): Renamed sese_build_livein_liveouts_use.
32176         (sese_find_uses_to_rename_bb): Renamed sese_build_livein_liveouts_bb.
32177         (sese_build_livein_liveouts): New.
32178         (new_sese, free_sese): New.
32179         (new_scop): Call new_sese.
32180         (free_scop): Call free_sese.
32181         (rename_variables_from_edge, rename_phis_end_scop): Removed.
32182         (register_old_new_names): Renamed register_old_and_new_names.
32183         (register_scop_liveout_renames, add_loop_exit_phis,
32184         insert_loop_close_phis, struct igp,
32185         default_liveout_before_guard, add_guard_exit_phis,
32186         insert_guard_phis, copy_renames): New.
32187         (translate_clast): Call insert_loop_close_phis and insert_guard_phis.
32188         (sese_add_exit_phis_edge): Renamed scop_add_exit_phis_edge.
32189         (rewrite_into_sese_closed_ssa): Renamed scop_insert_phis_for_liveouts.
32190         (scop_adjust_phis_for_liveouts): New.
32191         (gloog): Call scop_adjust_phis_for_liveouts.
32192
32193         * graphite.h (struct sese): Documented.  Added fields liveout,
32194         num_ver and livein.
32195         (SESE_LIVEOUT, SESE_LIVEIN, SESE_LIVEIN_VER, SESE_NUM_VER): New.
32196         (new_sese, free_sese, sese_build_livein_liveouts): Declared.
32197         (struct scop): Added field liveout_renames.
32198         (SCOP_LIVEOUT_RENAMES): New.
32199
32200 2009-01-05  Harsha Jagasia  <harsha.jagasia@amd.com>
32201
32202         PR tree-optimization/38510
32203         * graphite.c (recompute_all_dominators): Call mark_irreducible_loops.
32204         (translate_clast): Call recompute_all_dominators before
32205         graphite_verify.
32206         (gloog): Call recompute_all_dominators before graphite_verify.
32207
32208 2009-01-05  Harsha Jagasia  <harsha.jagasia@amd.com>
32209             Jan Sjodin  <jan.sjodin@amd.com>
32210
32211         PR tree-optimization/38500
32212         * graphite.c (create_sese_edges): Call fix_loop_structure after
32213         splitting blocks.
32214
32215 2009-01-05  Joel Sherrill  <joel.sherrill@oarcorp.com>
32216
32217         * config.gcc: Add m32r*-*-rtems*.
32218         * config/m32r/rtems.h: New file.
32219
32220 2009-01-05  Ben Elliston  <bje@au.ibm.com>
32221
32222         * Makefile.in (.po.gmo): Use mkinstalldirs, not test -d || mkdir.
32223         (.po.pox): Likewise.
32224         (po/gcc.pot): Likewise.
32225
32226 2009-01-04  David S. Miller  <davem@davemloft.net>
32227
32228         * config/sparc/sparc.h (SECONDARY_MEMORY_NEEDED_RTX): Delete.
32229         (STARTING_FRAME_OFFSET): Always set to zero.
32230
32231 2009-01-04  Richard Sandiford  <rdsandiford@googlemail.com>
32232
32233         * tree.def (LSHIFT_EXPR, RSHIFT_EXPR): Add commentary.
32234         * tree-cfg.c (verify_gimple_assign_binary): Allow shifts of
32235         fixed-point types, and vectors of the same.
32236
32237 2009-01-04  Richard Sandiford  <rdsandiford@googlemail.com>
32238
32239         * config/mips/sync.md (*mb_barrier): Rename to...
32240         (*memory_barrier): ...this.
32241
32242 2009-01-04  Jonathan Wakely  <jwakely.gcc@gmail.com>
32243
32244         * doc/extend.texi (Function Attributes): Move @cindex after @item
32245         for 'artificial' and 'flatten'. Fix grammar for 'externally_visible'
32246         and put in alphabetical order. Fix 'target' name and put in order.
32247         * doc/invoke.texi (-Wstrict-null-sentinel, -fipa-matrix-reorg): Fix
32248         typos.
32249
32250 2009-01-04  Uros Bizjak  <ubizjak@gmail.com>
32251
32252         * config/s390/s390.md (UNSPEC_MB): Rename from UNSPECV_MB.
32253         (memory_barrier): Expand as unspec instead of unspec_volatile.
32254         Remove mem:BLK from insn operands.  Use Pmode scratch register.
32255         (*memory_barrier): Define as unspec instead of unspec_volatile.
32256         Use (match_dup 0) as input operand.
32257
32258         * config/sparc/sparc.md (UNSPEC_MEMBAR): Rename from UNSPECV_MEMBAR.
32259         * config/sparc/sync.md (memory_barrier): Expand as unspec instead of
32260         unspec_volatile.  Remove mem:BLK from insn operands.  Use Pmode
32261         scratch register.  Remove operand 1.
32262         (*stbar): Define as unspec instead of unspec_volatile.
32263         Use (match_dup 0) as input operand, remove (const_int 8).
32264         (*membar): Define as unspec instead of unspec_volatile.
32265         Use (match_dup 0) as input operand, remove input operand 2.
32266
32267         * config/xtensa/xtensa.md (UNSPEC_MEMW): Rename from UNSPECV_MEMW.
32268         (memory_barrier): Expand as unspec instead of unspec_volatile.
32269         Remove mem:BLK from insn operands.  Use Pmode scratch register.
32270         (*memory_barrier): Define as unspec instead of unspec_volatile.
32271         Use (match_dup 0) as input operand.
32272
32273         * config/ia64/sync.md (memory_barrier): Redefine as expander pattern.
32274         Remove mem:BLK from insn operands.  Use Pmode scratch register.
32275         Set volatile flag on operand 0.
32276         (*memory_barrier): New insn pattern.
32277
32278         * config/rs6000/sync.md (memory_barrier): Remove mem:BLK from
32279         insn operands.
32280         (*memory_barrier): Use (match_dup 0) as input operand.
32281
32282         * config/mips/sync.md (memory_barrier): Redefine as expander pattern.
32283         Remove mem:BLK from insn operands.  Use Pmode scratch register.
32284         Set volatile flag on operand 0.
32285         (*mb_internal): New insn pattern.
32286
32287         * config/alpha/sync.md (*memory_barrier): Rename from *mb_internal.
32288
32289 2009-01-04  Steven Bosscher  <steven@gcc.gnu.org>
32290
32291         PR middle-end/38586
32292         * function.c (struct temp_slot): Move to the section of the file
32293         that deals with temp slots.  Remove field 'address'.
32294         (temp_slot_address_table): New hash table of address -> temp slot.
32295         (struct temp_slot_address_entry): New struct, items for the table.
32296         (temp_slot_address_compute_hash, temp_slot_address_hash,
32297         temp_slot_address_eq, insert_temp_slot_address): Support functions
32298         for the new table.
32299         (find_temp_slot_from_address): Rewrite to use the new hash table.
32300         (remove_unused_temp_slot_addresses): Remove addresses of temp
32301         slots that have been made available.
32302         (remove_unused_temp_slot_addresses_1): Call-back for htab_traverse,
32303         worker function for remove_unused_temp_slot_addresses.
32304         (assign_stack_temp_for_type): Don't clear the temp slot address list.
32305         Add the temp slot address to the address -> temp slot map.
32306         (update_temp_slot_address): Update via insert_temp_slot_address.
32307         (free_temp_slots): Call remove_unused_temp_slot_addresses.
32308         (pop_temp_slots): Likewise.
32309         (init_temp_slots): Allocate the address -> temp slot map, or empty
32310         the map if it is already allocated.
32311         (prepare_function_start): Initialize temp slot processing.
32312
32313 2009-01-04  Steven Bosscher  <steven@gcc.gnu.org>
32314
32315         PR middle-end/38584
32316         * cfgexpand.c (estimate_stack_frame_size): Simplify the estimate:
32317         Calculate the size of all stack vars assuming no packing of stack
32318         vars will happen, replacing a quadratic algorithm with a linear one.
32319
32320 2009-01-03  Jakub Jelinek  <jakub@redhat.com>
32321
32322         PR target/38707
32323         * expmed.c (store_bit_field_1): Don't modify op0 if movstrict insn
32324         can't be used.
32325
32326 2009-01-03  Diego Novillo  <dnovillo@google.com>
32327
32328         * doc/contrib.texi: Update contributions.
32329
32330 2009-01-03  Jakub Jelinek  <jakub@redhat.com>
32331
32332         PR c++/38705
32333         * builtins.c (fold_builtin_memory_op): Give up if either operand
32334         is volatile.  Set srctype or desttype to non-qualified version
32335         of the other type.
32336
32337         PR c/38700
32338         * builtins.c (fold_builtin_expect): Only check DECL_WEAK for VAR_DECLs
32339         and FUNCTION_DECLs.
32340
32341 2009-01-02  Kenneth Zadeck  <zadeck@naturalbridge.com>
32342
32343         PR rtl-optimization/35805
32344         * df-problems.c (df_lr_finalize): Add recursive call to resolve lr
32345         problem if fast dce is able to remove any instructions.
32346         * dce.c (dce_process_block): Fix dump message.
32347
32348 2009-01-02  Mark Mitchell  <mark@codesourcery.com>
32349
32350         PR 33649
32351         * tree-ssa-pre.c (compute_antic): Correct loop bounds.
32352
32353 2009-01-02  Jakub Jelinek  <jakub@redhat.com>
32354
32355         PR middle-end/38690
32356         * tree-flow.h (op_code_prio, op_prio): New prototypes.
32357         * tree-pretty-print.c (op_code_prio): New function.
32358         (op_prio): No longer static.  Use op_code_prio.
32359         * gimple-pretty-print.c (dump_unary_rhs, dump_binary_rhs):
32360         Use op_prio and op_code_prio to determine if () should be
32361         printed around operand(s) or not.
32362
32363         * gimple-pretty-print.c (dump_unary_rhs, dump_binary_rhs,
32364         dump_gimple_call, dump_gimple_switch, dump_gimple_cond,
32365         dump_gimple_label, dump_gimple_try, dump_symbols, dump_gimple_phi,
32366         dump_gimple_mem_ops, dump_bb_header, dump_bb_end, pp_cfg_jump): Use
32367         pp_character instead of pp_string for single letter printing.
32368
32369 2009-01-02  Richard Sandiford  <rdsandiford@googlemail.com>
32370
32371         * doc/extend.texi: Fix '#pragma GCC option' typo.
32372
32373 2009-01-02  Richard Guenther  <rguenther@suse.de>
32374
32375         * doc/install.texi (--enable-checking): Mention different
32376         default for stage1.
32377         (--enable-stage1-checking): Document.
32378
32379 2009-01-01  Andrew Pinski  <pinskia@gmail.com>
32380
32381         PR middle-end/30142
32382         * tree-cfg.c (verify_expr): Add INDIRECT_REF case.  Change MODIFY_EXPR
32383         case to be an error.
32384
32385 2009-01-02  Ben Elliston  <bje@au.ibm.com>
32386
32387         * config/fp-bit.h (pack_d): Constify argument.
32388         * config/fp-bit.c (makenan): Constify return type. Remove casts.
32389         (isnan): Constify argument.
32390         (isinf): Likewise.
32391         (iszero): Likewise.
32392         (pack_d): Likewise.
32393         (_fpadd_parts): Constify return type.
32394         (_fpmul_parts): Likewise.
32395         (_fpdiv_parts): Likewise.
32396
32397 2009-01-01  Jakub Jelinek  <jakub@redhat.com>
32398
32399         PR c/36489
32400         * c-typeck.c (add_pending_init): Add IMPLICIT argument.  Only
32401         warn about overwriting initializer with side-effects or
32402         -Woverride-init if !IMPLICIT.
32403         (output_init_element): Likewise.  Pass IMPLICIT down to
32404         add_pending_init.
32405         (process_init_element): Add IMPLICIT argument.  Pass it down
32406         to output_init_element.
32407         (push_init_element, pop_init_level, set_designator): Adjust
32408         process_init_element callers.
32409         (set_nonincremental_init, set_nonincremental_init_from_string):
32410         Adjust add_pending_init callers.
32411         (output_pending_init_elements): Adjust output_init_element callers.
32412         * c-tree.h (process_init_element): Adjust prototype.
32413         * c-parser.c (c_parser_initelt, c_parser_initval): Adjust
32414         process_init_element callers.
32415
32416 \f
32417 Copyright (C) 2009 Free Software Foundation, Inc.
32418
32419 Copying and distribution of this file, with or without modification,
32420 are permitted in any medium without royalty provided the copyright
32421 notice and this notice are preserved.