OSDN Git Service

* tree-cfg.c (gimple_redirect_edge_and_branch) <case GIMPLE_ASM>:
[pf3gnuchains/gcc-fork.git] / gcc / ChangeLog
1 2009-11-16  Alexandre Oliva  <aoliva@redhat.com>
2
3         * tree-cfg.c (gimple_redirect_edge_and_branch) <case GIMPLE_ASM>:
4         Create the decl label for the new dest block on demand.  Require
5         a fallthrough edge if no asm labels were redirected.
6
7 2009-11-16  Uros Bizjak  <ubizjak@gmail.com>
8
9         * config/i386/i386.md (cbranchsi4): Use nonimmediate_operand for
10         operand 1 predicate.
11         (cstoresi4): Ditto for operand 2.
12         (cbranch<mode>4): Macroize expander from cbranch{qi,hi,si,di,ti}4
13         patterns using SDWIM mode iterator.
14         (cstore<mode>4): Macroize expander from cstore{qi,hi,si,di}4 patterns
15         using SWIM mode iterator.
16         (cmpdi_1): Rename from cmpdi_1_rex64.
17         (cmp<mode>_1): Macroize expander from cmp{si,di}_1 patterns using
18         SWI48 mode iterator.
19         (*cmp<mode>_1): Macroize insn from *cmp{qi,hi,si,di}_1_insn using SWI
20         mode iterator.
21         (*cmp<mode>_ccno_1): Ditto from *cmp{qi,hi,si,di}_ccno_1.
22         (*cmp<mode>_minus_1): Ditto from *cmp{qi,hi,si,di}_minus_1.
23         (*cmpqi_ext_3_insn): Make private.
24         (*cmpqi_ext_3_insn_rex64): Make private.
25         (cmpstrnsi): Update for renamed cmpdi_1_rex64.
26         * config/i386/predicates.md (cmpsi_operand): Remove.
27
28 2009-11-16  Paul Brook  <paul@codesourcery.com>
29
30         * doc/invoke.texi: Document ARM VFPv4 based FPUs.
31         * config/arm/arm.c (all_fpus): Add VFPv4 entries.
32
33 2009-11-14  Jan Hubicka  <jh@suse.cz>
34
35         * cgraphbuild.c (compute_call_stmt_bb_frequency): Use proper
36         ENTRY_BLOCK_PTR.
37         * cgraph.c (cgraph_clone_edge): Avoid freq_scale 0 to completely
38         zero out all callees.
39         * cgraphunit.c (verify_cgraph_node): Verify cgraph nodes for
40         frequency and count match.
41         * ipa-inline.c (update_noncloned_frequencies): New function.
42         (cgraph_clone_inlined_nodes): Use it.
43         * tree-inline.c (copy_bb): Fix frequency scaling; output
44         diagnostic on frequency mismatches to dump file.
45         (initialize_cfun): Do not scale frequency; fix count scaling;
46         initialize entry and exit block frequencies; copy profile info.
47         (copy_cfg_body): Use frequency_scale as argument; fix count scaling.
48         (copy_body): Use frequency_scale as argument.
49         (expand_call_inline): Compute frequency scale and output diagnostic
50         to dump file.
51         (delete_unreachable_blocks_update_callgrah): Remove checking that
52         has to be done after edge redirection.
53         (tree_function_versioning): Update initialize_cfun and copy_body call.
54
55 2009-11-14  Jan Hubicka  <jh@suse.cz>
56
57         * cgraph.c (cgraph_release_function_body): Update use of
58         ipa_transforms_to_apply.
59         (cgraph_remove_node): Remove ipa_transforms_to_apply.
60         * cgraph.h (struct cgraph_node): Add ipa_transforms_to_apply.
61         * cgraphunit.c (save_inline_function_body): Clear ipa_transforms for
62         copied body.
63         (cgraph_materialize_clone): Remove original if dead.
64         * lto-streamer-in.c (lto_read_body): Remove FIXME and
65         ipa_transforms_to_apply hack.
66         * function.h (struct function): Add ipa_transforms_to_apply.
67         * ipa.c (cgraph_remove_unreachable_nodes): Handle dead clone originals.
68         * tree-inline.c (copy_bb): Update sanity check.
69         (initialize_cfun): Do not copy ipa_transforms_to_apply.
70         (expand_call_inline): remove dead clone originals.
71         (tree_function_versioning): Merge transformation queues.
72         * passes.c (add_ipa_transform_pass): Remove.
73         (execute_one_ipa_transform_pass): Update ipa_transforms_to_apply
74         tracking.
75         (execute_all_ipa_transforms): Update.
76         (execute_one_pass): Update.
77
78 2009-11-14  Andy Hutchinson   <hutchinsonandy@gcc.gnu.org>
79
80         PR target/21078, 21080
81         * config/avr/avr.c (avr_return_addr_rtx): New function for
82         builtin_return_address.
83         (expand_prologue): Calculate stack usage.
84         (avr_asm_function_end_prologue): Output stack size and offset label.
85         * config/avr/avr.h (RETURN_ADDR_RTX): Replace.
86         (machine_function): Add stack_usage.
87         * config/avr/avr-protos.h (avr_return_addr_rtx): New function.
88
89 2009-11-14  Anatoly Sokolov  <aesok@post.ru>
90
91         * config/iq2000/iq2000.c (iq2000_function_value): Make static, add
92         new 'outgoing' argument.
93         (iq2000_libcall_value, iq2000_function_value_regno_p): New functions.
94         (TARGET_FUNCTION_VALUE, TARGET_LIBCALL_VALUE): Declare.
95         * config/iq2000/iq2000.h (FUNCTION_VALUE_REGNO_P): Redefine, use
96         iq2000_function_value_regno_p.
97         (FUNCTION_VALUE, LIBCALL_VALUE): Remove.
98         * config/iq2000/iq2000-protos.h (iq2000_function_value_regno_p):
99         Declare.
100
101 2009-11-14  Richard Earnshaw  <rearnsha@arm.com>
102
103         PR target/42031
104         * arm.md (adddi_sesidi_di): Place tied contraint first.
105         (adddi_zesidi_di, subdi_di_zesidi, subdi_di_sesidi): Likewise
106         (subdi_zesidi_di, subdi_sesidi_di): Likewise.
107         (mulsi3_compare0, mulsi_compare0_scratch): Likewise.
108         (mulsi3addsi, mulsi3addsi_compare0): Likewise.
109         (mulsi3addsi_compare0_scratch, smulsi3_highpart_nov6): Likewise.
110         (umulsi3_highpart_nov6, anddi_zesidi_di, anddi_sesdi_di): Likewise.
111         (anddi_notdi_di, iordi_sesidi_di, xordi_sesidi_di): Likewise.
112         (andsi_iorsi3_notsi, arm_ashldi3_1bit, arm_ashrdi3_1_bit): Likewise.
113         (arm_lshrdi3_1bit, one_cmpldi2): Likewise.
114
115 2009-11-14  Uros Bizjak  <ubizjak@gmail.com>
116
117         * config/i386/predicates.md (call_register_no_elim_operand):
118         New predicate.  Reject stack register as valid call operand
119         for 32bit targets.
120         (call_insn_operand): Use call_register_no_elim_operand.
121
122 2009-11-13  Richard Henderson  <rth@redhat.com>
123
124         * function.c (stack_protect_prologue): Don't bypass expand_expr
125         for stack_protect_guard and guard_decl.
126         (stack_protect_epilogue): Likewise.
127
128 2009-11-13  Jan Hubicka  <jh@suse.cz>
129
130         * ipa.c (function_and_variable_visibility): Clear COMDAT on functions
131         when to PUBLIC is set.
132
133 2009-11-13  Jakub Jelinek  <jakub@redhat.com>
134
135         PR middle-end/42029
136         * gimplify.c (gimplify_omp_atomic): Set DECL_GIMPLE_REG_P on
137         tmp_load if needed.
138
139 2009-11-13  Uros Bizjak  <ubizjak@gmail.com>
140
141         PR target/41900
142         * config/i386/i386.md (*call_pop_1, *call_1, *call_value_pop_1,
143         *call_value_1): Use "lsm" as operand 1 constraint.
144         * config/i386/predicates.md (call_insn_operand): Depend on
145         index_register_operand to avoid %esp register.
146
147 2009-11-13  Uros Bizjak  <ubizjak@gmail.com>
148
149         Revert:
150         2009-11-03  Uros Bizjak  <ubizjak@gmail.com>
151
152         PR target/41900
153         * config/i386/i386.h (ix86_arch_indices) <X86_ARCH_CALL_ESP>: New.
154         (TARGET_CALL_ESP): New define.
155         * config/i386/i386.c (initial_ix86_tune_features): Initialize
156         X86_ARCH_CALL_ESP.
157         * config/i386/i386.md (*call_pop_1_esp, *call_1_esp,
158         *call_value_pop_1_esp, *call_value_1_esp): Rename from *call_pop_1,
159         *call_1, *call_value_pop_1 and *call_value_1.  Depend on
160         TARGET_CALL_ESP.
161         (*call_pop_1, *call_1, *call_value_pop_1, *call_value_1):
162         New patterns, use "lsm" as operand 1 constraint.
163         * config/i386/predicates.md (call_insn_operand): Depend on
164         index_register_operand for !TARGET_CALL_ESP to avoid %esp register.
165
166 2009-11-13  Jason Merrill  <jason@redhat.com>
167
168         PR debug/26965
169         * dwarf2out.c (gen_variable_die): Don't worry about DECL_COMDAT.
170         Don't emit a second declaration at any scope.
171
172 2009-11-13  Andrey Belevantsev  <abel@ispras.ru>
173
174         PR rtl-optimization/41697
175         * sel-sched-ir.c (fallthru_bb_of_jump): Bail out when a block with
176         a conditional jump has a single successor.
177
178 2009-11-13  Andrey Belevantsev  <abel@ispras.ru>
179
180         * sched-deps.c (init_deps): New parameter lazy_reg_last.  Don't
181         allocate reg_last when in case lazy_reg_last is true.
182         (init_deps_reg_last): New.
183         (free_deps): When max_reg is 0, this context is already freed.
184         * sched-int.h (init_deps_reg_last): Export.
185         (init_deps): Update prototype.
186         * sched-ebb.c (schedule_ebb): Update the call to init_deps.
187         * sched-rgn.c (sched_rgn_compute_dependencies): Likewise.
188         * ddg.c (build_intra_loop_deps): Likewise.
189         * sel-sched-ir.c (copy_deps_context, create_deps_context,
190         reset_deps_context, deps_init_id): Likewise.
191         (init_first_time_insn_data): Lazy allocate INSN_DEPS_CONTEXT.
192         (free_data_for_scheduled_insn): New, break down from ...
193         (free_first_time_insn_data): ... here.
194         (has_dependence_p): Allocate reg_last now, when it is needed.
195         (extend_insn_data): When maximal LUID is big enough, allocate
196         per-insn data in smaller chunks.
197         * sel-sched-ir.h (free_data_for_scheduled_insn): Export.
198         * sel-sched.c (update_seqnos_and_stage): Free INSN_DEPS_CONTEXT
199         in scheduled insn.
200
201 2009-11-13  Uros Bizjak  <ubizjak@gmail.com>
202
203         * config/i386/i386.md (call_value): Fix comment.
204         (sibcall_value): Ditto.
205
206 2009-11-13  Eric Botcazou  <ebotcazou@adacore.com>
207
208         * config/i386/linux-unwind.h (x86_frob_update_context): New function.
209         (MD_FROB_UPDATE_CONTEXT): Define.
210
211 2009-11-12  Eric Botcazou  <ebotcazou@adacore.com>
212             Laurent GUERBY  <laurent@guerby.net>
213
214         * config/sparc/linux-unwind.h (sparc64_fallback_frame_state): Tidy.
215         Do not schedule an %sp restore.  Compensate for RETURN_ADDR_OFFSET.
216         (sparc_fallback_frame_state): Tidy.  Compensate for RETURN_ADDR_OFFSET.
217
218 2009-11-12  Jan Hubicka  <jh@suse.cz>
219
220         * ipa.c (function_and_variable_visibility): Fix my accidentail commit
221         and clear DECL_COMMON on localized declarations.
222
223 2009-11-12  Bernd Schmidt  <bernd.schmidt@analog.com>
224
225         PR rtl-opt/38582
226         * regrename.c (struct du_head): New structure; some elements moved
227         from...
228         (struct du_chain): ... this one.
229         (open_chains, closed_chains): Now of type struct du_head *.
230         (do_replace): Accept du_head argument, not du_chain.  All callers
231         changed.  Modified code to match new data structures.
232         (build_def_use): Return a list of du_head structures.  Modified code
233         to match new data structures.
234         (dump_def_use_chain): Accept du_head argument, not du_chain.  All
235         callers changed.  Modified code to match new data structures.
236         (merge_overlapping_regs): Accept du_head argument, not du_chain.  All
237         callers changed.  Modified code to match new data structures.
238         (scan_rtx_reg): Change type of this_regno and this_nregs to unsigned.
239         Allocate a du_head structure as well as a du_chain when creating a
240         new chain.  Modified other code to match new data structures.
241
242 2009-11-12  Jan Hubicka  <jh@suse.cz>
243
244         * cgraph.h (varpool_node_name): Declare.
245         * cgraphunit.c (process_function_and_variable_attributes): Set
246         force_output flag on used variables.
247         * ipa.c (function_and_variable_visibility): Dump externally visible
248         and needed variables.
249         * varpool.c (varpool_node_name): Export.
250         (decide_is_variable_needed): Check COMDAT for externally visible vars;
251         ignore needed flag.
252
253 2009-11-12  Uros Bizjak  <ubizjak@gmail.com>
254
255         PR middle-end/41930
256         * simplify-rtx.c (simplify_replace_fn_rtx) <case 'e'>: Skip
257         processing if XEXP (x, i) is NULL.
258
259 2009-11-12  Jan Hubicka  <jh@suse.cz>
260
261         * ipa.c (function_and_variable_visibility): Verify that WEAK || COMMON
262         imply PUBLIC || EXTERNAL.
263
264 2009-11-11  Andy Hutchinson  <hutchinsonandy@gcc.gnu.org>
265
266         PR middle-end/41440
267         * cfgexpand.c (expand_gimple_basic_block): Append NOP to a fallthru,
268         single successor block, ending with jump created by RTL expander.
269
270 2009-11-11  Jan Hubicka  <jh@suse.cz>
271
272         PR middle-end/41729
273         * ipa.c (function_and_variable_visibility): Do not privatize COMDAT
274         and WEAK variables at -fwhole-program.
275
276         PR middle-end/41735
277         * ipa.c (whole_program_function_and_variable_visility): COMDAT
278         functions/variables are not needed even if they are externally visible.
279
280 2009-11-11  Jan Hubicka  <jh@suse.cz>
281
282         (patch by Richard Guenther)
283         * lto-streamer-out.c (output_function): Output head of argument list
284         earlier.
285         * lto-streamer-in.c (input_function): Re-map arguments into merged
286         declaration.
287
288 2009-11-11  Jan Hubicka  <jh@suse.cz>
289
290         * lto-cgraph.c: Include gcov-io.h
291         (output_profile_summary): New function.
292         (output_cgraph): Use it.
293         (input_profile_summary): New function.
294         (input_cgraph): Use it.
295         * coverage.c (build_ctr_info_value): Use varpool; initalize
296         DECL_ASSEMBLER_NAME.
297         (create_coverage): Likewise.
298         * tree-profile.c (tree_init_ic_make_global_vars): Likewise.
299         (tree_init_edge_profiler): Likewise.
300         * Makefile.in (lto-cgraph.o): Add dependency on gcov-io.h.
301
302 2009-11-11  Kai Tietz  <kai.tietz@onevision.com>
303
304         * config/i386/cygming.h (HANDLE_PRAGMA_PUSH_POP_MACRO): Removed.
305         * c-pragma.c (def_pragma_macro_value): Likewise.
306         (def_pragma_macro): Likewise.
307         (pushed_macro_table): Likewise.
308         (HANDLE_PRAGMA_PUSH_POP_MACRO): Remove guarded code.
309         * doc/tm.texi (HANDLE_PRAGMA_PUSH_POP_MACRO): Removed.
310
311 2009-11-11  Basile Starynkevitch  <basile@starynkevitch.net>
312
313         * doc/plugins.texi (Registering custom attributes): section
314         renamed as (Registering custom attributes or pragmas).
315         Mentions custom attributes & pragmas, and c_register_pragma, with
316         a small example.
317         * doc/cpp.texi (Pragmas): Mentions that plugins can provide their
318         pragmas.
319         * doc/extend.texi (Function Attributes): Mentions that plugin can
320         provide their attributes.
321
322 2009-11-11  Jon Beniston  <jon@beniston.com>
323
324         * config.gcc: Add lm32 elf and uclinux targets.
325         * config/lm32: New directory.
326         * config/lm32/lm32.c: New file.
327         * config/lm32/lm32.h: New file.
328         * config/lm32/lm32.md: New file.
329         * config/lm32/lm32.opt: New file.
330         * config/lm32/lm32-protos.h: New file.
331         * config/lm32/constraints.md: New file.
332         * config/lm32/predicates.md: New file.
333         * config/lm32/sfp-machine.h: New file.
334         * config/lm32/t-fprules-softfp: New file.
335         * config/lm32/uclinux-elf.h: New file.
336         * doc/invoke.texi: Document lm32 options.
337         * doc/contrib.texi: Document lm32 porter.
338         * doc/install.texi: Document lm32 targets.
339
340 2009-11-11  Martin Jambor  <mjambor@suse.cz>
341
342         PR lto/41932
343         * ipa-prop.c (ipa_update_after_lto_read): Call
344         ipa_check_create_node_params and ipa_check_create_edge_args.  Also
345         call ipa_initialize_node_params instead of ipa_populate_param_decls.
346
347 2009-11-11  Daniel Jacobowitz  <dan@codesourcery.com>
348
349         * config/arm/arm.c (neon_vdup_constant, neon_make_constant): New.
350         (neon_expand_vector_init): Use them.  Also handle non-constant
351         vectors with identical elements and vectors with only one
352         non-constant element.
353         (arm_print_operand): Handle 'y' modifier.
354         * config/arm/arm-protos.h (neon_make_constant): Declare.
355         * config/arm/neon.md (neon_vdup_n<mode>): Split into two
356         patterns.  Use VX instead of VDQW for the first one.  Allow
357         a VFP alternative and V32 modes for the second one.
358         * config/arm/neon.ml (shape_elt): Add Alternatives.
359         (ops): Use Alternatives for vdup lane instructions.
360         * config/arm/neon-testgen.ml (analyze_shape): Handle Alternatives.
361         * config/arm/vec-common.md (mov<mode>): Use neon_make_constant.
362
363 2009-11-11  Daniel Jacobowitz  <dan@codesourcery.com>
364
365         * config/arm/neon.md (*neon_mov<mode>): Reject two non-register
366         operands.
367         (movti, mov<mode>): Call force_reg on one operand if required.
368         * config/arm/vec-common.md (mov<mode>): Likewise.
369
370 2009-11-11  Daniel Jacobowitz  <dan@codesourcery.com>
371
372         * config/arm/arm.c (arm_override_options): Enable scheduling for
373         Thumb-2.
374
375 2009-11-10  Eric Botcazou  <ebotcazou@adacore.com>
376
377         PR target/10127
378         PR ada/20548
379         * expr.h (anti_adjust_stack_and_probe): Declare.
380         * explow.c (anti_adjust_stack_and_probe): Make global, add ADJUST_BACK
381         parameter and rewrite head comment.
382         (allocate_dynamic_stack_space): Adjust call to above function.
383         * function.c (expand_function_end): Handle STACK_CHECK_MOVING_SP.
384
385         * tree.h (dwarf2out_args_size): Delete.
386         * dwarf2out.c (dwarf2out_args_size): Make static and move around.
387         (dwarf2out_args_size_adjust): Delete prototype and move around.
388         (dwarf2out_frame_debug_expr): Do not record arg size adjustments for
389         ACCUMULATE_OUTGOING_ARGS targets.
390
391 2009-11-10  Eric Botcazou  <ebotcazou@adacore.com>
392
393         * config/sparc/sparc.c (print_operand) <')'>: Test for a non-null
394         DECL_SIZE of DECL_RESULT before evaluating it.
395
396 2009-11-10  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
397
398         PR tree-optimization/41987
399         * fold-const.c (const_binop): Avoid using fold_buildN().
400
401 2009-11-10  Martin Jambor  <mjambor@suse.cz>
402
403         * tree-pass.h (struct ipa_opt_pass_d): Added stmt_fixup field.
404         (execute_all_ipa_stmt_fixups): Declare.
405         * ipa-cp.c (pass_ipa_cp): Added stmt_fixup value.
406         * ipa-inline.c (pass_ipa_inline): Likewise.
407         * ipa-pure-const.c (pass_ipa_pure_cons): Likewise.
408         * ipa-reference.c (pass_ipa_reference): Likewise.
409         * ipa.c (pass_ipa_whole_program_visibility): Likewise.
410         * lto-streamer-out.c (pass_ipa_lto_gimple_out): Likewise.
411         (pass_ipa_lto_finish_out): Likewise.
412         * lto-wpa-fixup.c (pass_ipa_lto_wpa_fixup): Likewise.
413         * passes.c (execute_ipa_stmt_fixups): New function.
414         (execute_all_ipa_stmt_fixups): New function.
415         * lto-streamer-in.c (input_function): Call execute_all_ipa_stmt_fixups.
416
417 2009-11-10  Eric Botcazou  <ebotcazou@adacore.com>
418
419         PR ada/20548
420         * explow.c (probe_stack_range): Fix typo.
421         * config/sparc/sparc.md (probe_stack): New expander.
422
423 2009-11-09  Dave Korn  <dave.korn.cygwin@gmail.com>
424
425         * config/i386/cygwin.h (LINK_SPEC): Add -tsaware flag if !mno-cygwin.
426
427 2009-11-09  Jason Merrill  <jason@redhat.com>
428
429         * gdbinit.in (pgq): New function for printing gimple sequence.
430
431 2009-11-09  Paul Brook  <paul@codesourcery.com>
432             Daniel Jacobowitz  <dan@codesourcery.com>
433             Sandra Loosemore  <sandra@codesourcery.com>
434
435         * doc/extend.texi (Half-Precision): Update wording to reflect
436         that there are now multiple -mfpu options that enable fp16
437         hardware support.
438         * doc/invoke.texi: Update list of ARM -mfpu= options.
439         * config.gcc: Update ARM --with-fpu option list.
440         * config/arm/arm.c (all_fpus): Add vfpv3-fp16, vfpv3-d16-fp16,
441         vfpv3xd and vfpv3xd-fp16.
442         (use_vfp_abi): New function.
443         (aapcs_vfp_is_call_or_return_candidate): Avoid double precision regs
444         when undesirable.
445         (aapcs_vfp_is_return_candidate, aapcs_vfp_is_call_candidate,
446         aapcs_vfp_allocate_return_reg): Use use_vfp_abi.
447         (arm_rtx_costs_1, arm_size_rtx_costs, arm_fastmul_rtx_costs,
448         arm_9e_rtx_costs): Only expect double-precision operations if the FPU
449         provides them.
450         (coproc_secondary_reload_class): Reload HFmode via GENERAL_REGS if no
451         NEON.
452         (arm_print_operand): Handle 'p' modifier.
453         (arm_hard_regno_mode_ok): : Allow HFmode in VFP registers if
454         TARGET_FP16.
455         * config/arm/arm.h (TARGET_VFP_SINGLE, TARGET_VFP_DOUBLE): Define.
456         (TARGET_FP16): Define.
457         * config/arm/vfp.md: Disable double-precision patterns if the FPU
458         does not provide them.
459         (arm_movdi_vfp, thumb2_movdi_vfp): Use fcpys to move
460         double-precision values on a single-precision FPU.
461         (movdf_vfp, thumb2_movdf_vfp): Likewise.  Use "Dy" for
462         double-precision constants.
463         (movhf_vfp_neon): New pattern (was movhf_vfp).
464         (movhf_vfp): Remove NEON instructions.
465         * config/arm/constraints.md: Add new "Dy" constraint for
466         double-precision constants.  Update description of "Dv".
467         * config/arm/arm.md: Disable double-precision patterns if the FPU
468         does not provide them
469
470 2009-11-09  Jakub Jelinek  <jakub@redhat.com>
471
472         * config/i386/i386.c (print_operand) <case 'D'>: Fix formatting.
473         (print_operand) <case 'Y'>: Likewise.  Fix a pasto in operand lossage
474         diagnostics.
475
476 2009-11-08  H.J. Lu  <hongjiu.lu@intel.com>
477
478         * collect2.c (main): Search PLUGIN_LD for plugin linker.
479
480         * configure.ac (--with-plugin-ld): New.  Default to ld.
481         * configure: Regenerated.
482         * config.in: Likewise.
483
484         * exec-tool.in (ORIGINAL_PLUGIN_LD_FOR_TARGET): New.
485         (collect-ld): Use ORIGINAL_PLUGIN_LD_FOR_TARGET for -plugin.
486
487 2009-11-08  Jonathan Gray  <jsg@openbsd.org>
488
489         * config/openbsd-stdint.h: Change to reflect what
490         c_common_nodes_and_builtins expects.
491
492 2009-11-08  Paolo Carlini  <paolo.carlini@oracle.com>
493
494         * builtins.c (apply_args_reg_offset): Remove commented out delaration.
495
496 2009-11-08  Jakub Jelinek  <jakub@redhat.com>
497
498         PR target/41985
499         * config/i386/i386.c (get_some_local_dynamic_name): Don't assert
500         function contains at least one local dynamic name.
501         (print_operand) <case '&'>: Instead output operand lossage diagnostics
502         here if that happens.
503
504 2009-11-08  Zbigniew Chamski  <zbigniew.chamski@gmail.com>
505             Joern Rennecke  <amylaar@spamcop.net>
506
507         * cfgrtl.c (pass_free_cfg): Add pass name.
508         * cgraphbuild.c (pass_build_cgraph_edges): Likewise.
509         (pass_rebuild_cgraph_edges, pass_remove_cgraph_callee_edges): Likewise.
510         * dce.c (pass_ud_rtl_dce, pass_fast_rtl_dce): Change pass name.
511         * df-core.c (pass_df_initialize_no_opt): Likewise.
512         * except.c (pass_rtl_eh): Likewise.
513         * function.c (pass_init_function, pass_leaf_regs): Likewise.
514         * gcse.c (pass_rtl_pre): Change pass name.
515         * passes.c (pass_postreload): Add pass name.
516         (make_pass_instance): Don't use duplicate-tracking logic for
517         names starting with '*'.
518         (next_pass_1): Assert that pass has a name.
519         (register_one_dump_file): If there is an space in the name,
520         skip past it.
521         * predict.c (pass_strip_predict_hints): Add pass name.
522         * reg-stack.c (pass_stack_regs): Likewise.
523         * stack-ptr-mod.c (pass_stack_ptr_mod): Likewise.
524         * tree-cfg.c (pass_warn_function_return,
525         pass_warn_function_noreturn): Add pass name.
526         * tree-dfa.c (pass_referenced_vars): Likewise.
527         * tree-optimize.c (pass_cleanup_cfg_post_optimizing):
528         Fix whitespace before comment.
529         (pass_fixup_cfg): Add pass name, fix whitespace before comment.
530         (pass_init_datastructures): Add pass name.
531         * tree-ssa-loop.c (pass_record_bounds): Likewise.
532         * tree-ssa.c (pass_early_warn_uninitialized,
533         pass_late_warn_uninitialized): Likewise.
534         * tree.c (pass_ipa_free_lang_data): Likewise.
535         * doc/passes.texi (pass manager): Document how to disambiguate
536         pass names.
537
538 2009-11-08  Paolo Bonzini  <bonzini@gnu.org>
539
540         * df-problems.c: Fix documentation for forward simulation of LR.
541         (df_simulate_one_insn_forwards): Use df_simulate_find_defs.
542         (df_simulate_finalize_forwards): Remove.
543         * df.h (df_simulate_finalize_forwards): Remove.
544
545 2009-11-08  Richard Guenther  <rguenther@suse.de>
546
547         * tree-ssa-structalias.c (build_succ_graph): Properly make
548         variables escape if they are stored to anything.
549
550 2009-11-08  Richard Guenther  <rguenther@suse.de>
551
552         PR rtl-optimization/41928
553         * loop-invariant.c (free_loop_data): If we didn't allocate
554         loop data do not try to free it.
555
556 2009-11-07  Jason Merrill  <jason@redhat.com>
557
558         * tree.c (reconstruct_complex_type): Preserve attributes.
559
560 2009-11-07  Richard Guenther  <rguenther@suse.de>
561
562         * tree-ssa-structalias.c (build_succ_graph): Feed stores
563         to anything only to variables that can take pointers.
564         (get_constraint_for_ssa_var): Properly exclude full
565         variables from expanding.
566         (first_vi_for_offset): Avoid overflow in arithmetic.
567         (first_or_preceding_vi_for_offset): Likewise.
568         (count_num_arguments): Fix implementation.
569         (gate_ipa_pta): Do not run when not optimizing.
570
571 2009-11-07  David Binderman <dcb314@hotmail.com>
572
573         * builtins.c (apply_args_size, expand_builtin_mathfn, expand_powi,
574         expand_builtin_expect, maybe_emit_sprintf_chk_warning): Remove some
575         set but not used variables.
576         (apply_args_reg_offset): Comment out as unused.
577         * calls.c (flags_from_decl_or_type): Likewise.
578         * genautomata.c (check_regexp_units_distribution): Likewise.
579
580 2009-11-07  Uros Bizjak  <ubizjak@gmail.com>
581
582         * config/i386/sse.md (xop_pmacsww, xop_pmacssww, xop_pmacsdd,
583         xop_pmacssdd, xop_pmacssdql, xop_pmacssdqh, xop_pmacsdql,
584         *xop_pmacsdql_mem, xop_pmacsdqh, *xop_pmacsdqh_mem, xop_pmacsswd,
585         xop_pmacswd, xop_pmadcsswd, xop_pmadcswd, xop_pcmov_<mode>,
586         xop_pcmov_<mode>256, xop_pperm, xop_pperm_pack_v2di_v4si,
587         xop_pperm_pack_v4si_v8hi, xop_pperm_pack_v8hi_v16qi): Compress
588         operand alternatives.
589
590 2009-11-06  Michael Matz  <matz@suse.de>
591
592         PR middle-end/41963
593         * tree-ssa-math-opts.c (execute_cse_reciprocals): Check all uses
594         of a potential reciprocal to really be reciprocals.
595
596 2009-11-06  Jakub Jelinek  <jakub@redhat.com>
597
598         * config/i386/x86intrin.h: Include fma4intrin.h, xopintrin.h and
599         lwpintrin.h after immintrin.h.
600         * config/i386/fma4intrin.h (__v8sf, __v4df, __m256, __m256d): Remove
601         typedefs.
602
603         PR middle-end/41935
604         * c-common.c (fold_offsetof_1) <case ARRAY_REF>: Don't crash for VLAs
605         or non-constant index, allow index one past the last element and
606         allow exceeding array bound in arrays that might be used as flexible
607         array members.
608
609 2009-11-05  Richard Henderson  <rth@redhat.com>
610
611         * config/i386/ia32intrin.h: Protect CRC32 builtins with __SSE4_2__.
612
613 2009-11-05  Paul Brook  <paul@codesourcery.com>
614
615         * config/arm/arm.c (arm_fp_model, arm_fpu_arch, arm_fpu_tune): Remove.
616         (arm_fpu_desc): New.
617         (all_fpus): Add FPU details.
618         (fp_model_for_fpu): Remove.
619         (arm_override_options): Set and use arm_fpu_desc and arm_fpu_attr.
620         (arm_output_epilogue, arm_save_coproc_regs): Use TARGET_FPA_EMU2.
621         (arm_file_start): Use arm_fpu_desc.
622         * config/arm/arm.h (TARGET_FPA, TARGET_MAVERICK, TARGET_VFP,
623         TARGET_VFPD32, TARGET_VFP3, TARGET_NEON_FP16, TARGET_NEON): Use
624         arm_fpu_desc.
625         (TARGET_FPA_EMU2): Define.
626         (arm_fp_model, fputype, arm_fpu_tune): Remove.
627         (vfp_reg_type, arm_fpu_desc): New.
628         * config/arm/arm.md (attr fpu): Simplify.
629         * config/arm/fpa.md (movxf_fpa): Use TARGET_FPA_EMU2.
630         * config/arm/linux-elf.h (FPUTYPE_DEFAULT): Use string value.
631         * config/arm/bpabi.h (FPUTYPE_DEFAULT): Use string value.
632         * config/arm/netbsd-elf.h (FPUTYPE_DEFAULT): Use string value.
633         * config/arm/vxworks.h (FPUTYPE_DEFAULT): Use string value.
634
635 2009-11-05  Michael Matz  <matz@suse.de>
636
637         * config/i386/i386.c (ix86_builtin_reciprocal): Remove dependency
638         on TARGET_RECIP.
639         * doc/invoke.texi (-mrecip): Clarify that we don't need -mrecip
640         for 1/sqrtf.
641
642 2009-11-04  Jason Merrill  <jason@redhat.com>
643
644         PR c++/36912
645         * varasm.c (initializer_constant_valid_p): A PLUS_EXPR
646         or MINUS_EXPR of REAL_TYPE is not a valid constant initializer.
647         (output_constant): Avoid crash after error.
648
649 2009-11-05  Martin Jambor  <mjambor@suse.cz>
650
651         * tree-sra.c (struct access): Changed comment of next_sibling field.
652         (analyze_modified_params): Loop over accesses of a group rather than
653         over all with the ame base, pass a common bitmap to
654         walk_aliased_vdefs.
655         (unmodified_by_ref_scalar_representative): Build link lists of
656         accesses of a group.
657         (splice_param_accesses): Likewise.
658
659 2009-11-04  Kenneth Zadeck  <zadeck@naturalbridge.com>
660
661         * df-scan.c (df-uses-record): Add case zero_extract of mem.
662
663 2009-11-04  Eric Botcazou  <ebotcazou@adacore.com>
664
665         PR target/10127
666         PR ada/20548
667         * config/i386/i386.md (probe_stack): New expander.
668         (logical operation peepholes): Do not split stack checking probes.
669
670 2009-11-04  Harsha Jagasia  <harsha.jagasia@amd.com>
671             Dwarakanath Rajagopal  <dwarak.rajagopal@amd.com>
672
673         * doc/invoke.texi (-mlwp): Add documentation.
674         * doc/extend.texi (x86 intrinsics): Add LWP intrinsics.
675         * config.gcc (i[34567]86-*-*): Include lwpintrin.h.
676         (x86_64-*-*): Ditto.
677         * config/i386/lwpintrin.h: New file, provide x86 compiler
678         intrinisics for LWP.
679         * config/i386/cpuid.h (bit_LWP): Define LWP bit.
680         * config/i386/x86intrin.h: Add LWP check and lwpintrin.h.
681         * config/i386/i386-c.c (ix86_target_macros_internal): Check
682         ISA_FLAG for LWP.
683         * config/i386/i386.h (TARGET_LWP): New macro for LWP.
684         * config/i386/i386.opt (-mlwp): New switch for LWP support.
685         * config/i386/i386.c (OPTION_MASK_ISA_LWP_SET): New.
686         (OPTION_MASK_ISA_LWP_UNSET): New.
687         (ix86_handle_option): Handle -mlwp.
688         (isa_opts): Handle -mlwp.
689         (enum pta_flags): Add PTA_LWP.
690         (override_options): Add LWP support.
691         (IX86_BUILTIN_LLWPCB16): New for LWP intrinsic.
692         (IX86_BUILTIN_LLWPCB32): Ditto.
693         (IX86_BUILTIN_LLWPCB64): Ditto.
694         (IX86_BUILTIN_SLWPCB16): Ditto.
695         (IX86_BUILTIN_SLWPCB32): Ditto.
696         (IX86_BUILTIN_SLWPCB64): Ditto.
697         (IX86_BUILTIN_LWPVAL16): Ditto.
698         (IX86_BUILTIN_LWPVAL32): Ditto.
699         (IX86_BUILTIN_LWPVAL64): Ditto.
700         (IX86_BUILTIN_LWPINS16): Ditto.
701         (IX86_BUILTIN_LWPINS32): Ditto.
702         (IX86_BUILTIN_LWPINS64): Ditto.
703         (enum  ix86_special_builtin_type): Add LWP intrinsic support.
704         (builtin_description): Ditto.
705         (ix86_init_mmx_sse_builtins): Ditto.
706         (ix86_expand_special_args_builtin): Ditto.
707         * config/i386/i386.md (UNSPEC_LLWP_INTRINSIC): Add new UNSPEC for
708         LWP support.
709         (UNSPEC_SLWP_INTRINSIC): Ditto.
710         (UNSPECV_LWPVAL_INTRINSIC): Ditto.
711         (UNSPECV_LWPINS_INTRINSIC): Ditto.
712         (lwp_llwpcbhi1): New lwp pattern.
713         (lwp_llwpcbsi1): Ditto.
714         (lwp_llwpcbdi1): Ditto.
715         (lwp_slwpcbhi1): Ditto.
716         (lwp_slwpcbsi1): Ditto.
717         (lwp_slwpcbdi1): Ditto.
718         (lwp_lwpvalhi3): Ditto.
719         (lwp_lwpvalsi3): Ditto.
720         (lwp_lwpvaldi3): Ditto.
721         (lwp_lwpinshi3): Ditto.
722         (lwp_lwpinssi3): Ditto.
723         (lwp_lwpinsdi3): Ditto.
724
725 2009-11-04  Andrew Pinski  <andrew_pinski@playstation.sony.com>
726             Trevor Smigiel <Trevor_Smigiel@playstation.sony.com>
727
728         PR rtl-opt/41833
729         * simplify-rtx.c (simplify_binary_operation_1): Simplify vec_select of
730         a vec_duplicate.
731
732 2009-11-04  Richard Guenther  <rguenther@suse.de>
733             Rafael Avila de Espindola  <espindola@google.com>
734
735         * gcc.c (process_command): Handle arguments name@offset.
736
737 2009-11-04  Harsha Jagasia  <harsha.jagasia@amd.com>
738             Dwarakanath Rajagopal  <dwarak.rajagopal@amd.com>
739
740         * config.gcc (i[34567]86-*-*): Include xopintrin.h.
741         (x86_64-*-*): Ditto.
742         * config/i386/xopintrin.h: New file, provide common x86 compiler
743         intrinisics for XOP.
744         * config/i386/cpuid.h (bit_XOP): Define XOP bit.
745         * config/i386/x86intrin.h: Add XOP check and xopintrin.h.
746         * config/i386/i386-c.c(ix86_target_macros_internal): Check
747         ISA_FLAG for XOP.
748         * config/i386/i386.h(TARGET_XOP): New macro for XOP.
749         * config/i386/i386.opt (-mxop): New switch for XOP support.
750         * config/i386/i386.md (UNSPEC_XOP_UNSIGNED_CMP)
751         (UNSPEC_XOP_TRUEFALSE)
752         (UNSPEC_XOP_PERMUTE)
753         (UNSPEC_FRCZ): Add new UNSPEC for XOP support.
754         (PPERM_*): New constants for vpperm instruction.
755         (xop_pcmov_<mode>): Add XOP conditional mov instructions.
756         * config/i386/i386.c (OPTION_MASK_ISA_XOP_SET): New.
757         (OPTION_MASK_ISA_XOP_UNSET): New.
758         (OPTION_MASK_ISA_XOP_UNSET): Change definition to depend on XOP.
759         (ix86_handle_option): Handle -mxop.
760         (isa_opts): Handle -mxop.
761         (enum pta_flags): Add PTA_XOP.
762         (override_options): Add XOP support.
763         (print_operand): Add code for XOP compare instructions.
764         (ix86_expand_sse_movcc): Extend for XOP conditional move instruction.
765         (ix86_expand_int_vcond): Extend for XOP compare instruction.
766
767         (IX86_BUILTIN_VPCMOV): New for XOP intrinsic.
768         (IX86_BUILTIN_VPCMOV_V2DI): Ditto.
769         (IX86_BUILTIN_VPCMOV_V4SI): Ditto.
770         (IX86_BUILTIN_VPCMOV_V8HI): Ditto.
771         (IX86_BUILTIN_VPCMOV_V16QI): Ditto.
772         (IX86_BUILTIN_VPCMOV_V4SF): Ditto.
773         (IX86_BUILTIN_VPCMOV_V2DF): Ditto.
774
775         (IX86_BUILTIN_VPCMOV256): Ditto.
776         (IX86_BUILTIN_VPCMOV_V4DI256): Ditto.
777         (IX86_BUILTIN_VPCMOV_V8SI256): Ditto.
778         (IX86_BUILTIN_VPCMOV_V16HI256): Ditto.
779         (IX86_BUILTIN_VPCMOV_V32QI256): Ditto.
780         (IX86_BUILTIN_VPCMOV_V8SF256): Ditto.
781         (IX86_BUILTIN_VPCMOV_V4DF256): Ditto.
782
783         (IX86_BUILTIN_VPPERM): Ditto.
784
785         (IX86_BUILTIN_VPMACSSWW): Ditto.
786         (IX86_BUILTIN_VPMACSWW): Ditto.
787         (IX86_BUILTIN_VPMACSSWD): Ditto.
788         (IX86_BUILTIN_VPMACSWD): Ditto.
789         (IX86_BUILTIN_VPMACSSDD): Ditto.
790         (IX86_BUILTIN_VPMACSDD): Ditto.
791         (IX86_BUILTIN_VPMACSSDQL): Ditto.
792         (IX86_BUILTIN_VPMACSSDQH): Ditto.
793         (IX86_BUILTIN_VPMACSDQL): Ditto.
794         (IX86_BUILTIN_VPMACSDQH): Ditto.
795         (IX86_BUILTIN_VPMADCSSWD): Ditto.
796         (IX86_BUILTIN_VPMADCSWD): Ditto.
797
798         (IX86_BUILTIN_VPHADDBW): Ditto.
799         (IX86_BUILTIN_VPHADDBD): Ditto.
800         (IX86_BUILTIN_VPHADDBQ): Ditto.
801         (IX86_BUILTIN_VPHADDWD): Ditto.
802         (IX86_BUILTIN_VPHADDWQ): Ditto.
803         (IX86_BUILTIN_VPHADDDQ): Ditto.
804         (IX86_BUILTIN_VPHADDUBW): Ditto.
805         (IX86_BUILTIN_VPHADDUBD): Ditto.
806         (IX86_BUILTIN_VPHADDUBQ): Ditto.
807         (IX86_BUILTIN_VPHADDUWD): Ditto.
808         (IX86_BUILTIN_VPHADDUWQ): Ditto.
809         (IX86_BUILTIN_VPHADDUDQ): Ditto.
810         (IX86_BUILTIN_VPHSUBBW): Ditto.
811         (IX86_BUILTIN_VPHSUBWD): Ditto.
812         (IX86_BUILTIN_VPHSUBDQ): Ditto.
813
814         (IX86_BUILTIN_VPROTB): Ditto.
815         (IX86_BUILTIN_VPROTW): Ditto.
816         (IX86_BUILTIN_VPROTD): Ditto.
817         (IX86_BUILTIN_VPROTQ): Ditto.
818         (IX86_BUILTIN_VPROTB_IMM): Ditto.
819         (IX86_BUILTIN_VPROTW_IMM): Ditto.
820         (IX86_BUILTIN_VPROTD_IMM): Ditto.
821         (IX86_BUILTIN_VPROTQ_IMM): Ditto.
822
823         (IX86_BUILTIN_VPSHLB): Ditto.
824         (IX86_BUILTIN_VPSHLW): Ditto.
825         (IX86_BUILTIN_VPSHLD): Ditto.
826         (IX86_BUILTIN_VPSHLQ): Ditto.
827         (IX86_BUILTIN_VPSHAB): Ditto.
828         (IX86_BUILTIN_VPSHAW): Ditto.
829         (IX86_BUILTIN_VPSHAD): Ditto.
830         (IX86_BUILTIN_VPSHAQ): Ditto.
831
832         (IX86_BUILTIN_VFRCZSS): Ditto.
833         (IX86_BUILTIN_VFRCZSD): Ditto.
834         (IX86_BUILTIN_VFRCZPS): Ditto.
835         (IX86_BUILTIN_VFRCZPD): Ditto.
836         (IX86_BUILTIN_VFRCZPS256): Ditto.
837         (IX86_BUILTIN_VFRCZPD256): Ditto.
838
839         (IX86_BUILTIN_VPCOMEQUB): Ditto.
840         (IX86_BUILTIN_VPCOMNEUB): Ditto.
841         (IX86_BUILTIN_VPCOMLTUB): Ditto.
842         (IX86_BUILTIN_VPCOMLEUB): Ditto.
843         (IX86_BUILTIN_VPCOMGTUB): Ditto.
844         (IX86_BUILTIN_VPCOMGEUB): Ditto.
845         (IX86_BUILTIN_VPCOMFALSEUB): Ditto.
846         (IX86_BUILTIN_VPCOMTRUEUB): Ditto.
847
848         (IX86_BUILTIN_VPCOMEQUW): Ditto.
849         (IX86_BUILTIN_VPCOMNEUW): Ditto.
850         (IX86_BUILTIN_VPCOMLTUW): Ditto.
851         (IX86_BUILTIN_VPCOMLEUW): Ditto.
852         (IX86_BUILTIN_VPCOMGTUW): Ditto.
853         (IX86_BUILTIN_VPCOMGEUW): Ditto.
854         (IX86_BUILTIN_VPCOMFALSEUW): Ditto.
855         (IX86_BUILTIN_VPCOMTRUEUW): Ditto.
856
857         (IX86_BUILTIN_VPCOMEQUD): Ditto.
858         (IX86_BUILTIN_VPCOMNEUD): Ditto.
859         (IX86_BUILTIN_VPCOMLTUD): Ditto.
860         (IX86_BUILTIN_VPCOMLEUD): Ditto.
861         (IX86_BUILTIN_VPCOMGTUD): Ditto.
862         (IX86_BUILTIN_VPCOMGEUD): Ditto.
863         (IX86_BUILTIN_VPCOMFALSEUD): Ditto.
864         (IX86_BUILTIN_VPCOMTRUEUD): Ditto.
865
866         (IX86_BUILTIN_VPCOMEQUQ): Ditto.
867         (IX86_BUILTIN_VPCOMNEUQ): Ditto.
868         (IX86_BUILTIN_VPCOMLTUQ): Ditto.
869         (IX86_BUILTIN_VPCOMLEUQ): Ditto.
870         (IX86_BUILTIN_VPCOMGTUQ): Ditto.
871         (IX86_BUILTIN_VPCOMGEUQ): Ditto.
872         (IX86_BUILTIN_VPCOMFALSEUQ): Ditto.
873         (IX86_BUILTIN_VPCOMTRUEUQ): Ditto.
874
875         (IX86_BUILTIN_VPCOMEQB): Ditto.
876         (IX86_BUILTIN_VPCOMNEB): Ditto.
877         (IX86_BUILTIN_VPCOMLTB): Ditto.
878         (IX86_BUILTIN_VPCOMLEB): Ditto.
879         (IX86_BUILTIN_VPCOMGTB): Ditto.
880         (IX86_BUILTIN_VPCOMGEB): Ditto.
881         (IX86_BUILTIN_VPCOMFALSEB): Ditto.
882         (IX86_BUILTIN_VPCOMTRUEB): Ditto.
883
884         (IX86_BUILTIN_VPCOMEQW): Ditto.
885         (IX86_BUILTIN_VPCOMNEW): Ditto.
886         (IX86_BUILTIN_VPCOMLTW): Ditto.
887         (IX86_BUILTIN_VPCOMLEW): Ditto.
888         (IX86_BUILTIN_VPCOMGTW): Ditto.
889         (IX86_BUILTIN_VPCOMGEW): Ditto.
890         (IX86_BUILTIN_VPCOMFALSEW): Ditto.
891         (IX86_BUILTIN_VPCOMTRUEW): Ditto.
892
893         (IX86_BUILTIN_VPCOMEQD): Ditto.
894         (IX86_BUILTIN_VPCOMNED): Ditto.
895         (IX86_BUILTIN_VPCOMLTD): Ditto.
896         (IX86_BUILTIN_VPCOMLED): Ditto.
897         (IX86_BUILTIN_VPCOMGTD): Ditto.
898         (IX86_BUILTIN_VPCOMGED): Ditto.
899         (IX86_BUILTIN_VPCOMFALSED): Ditto.
900         (IX86_BUILTIN_VPCOMTRUED): Ditto.
901
902         (IX86_BUILTIN_VPCOMEQQ): Ditto.
903         (IX86_BUILTIN_VPCOMNEQ): Ditto.
904         (IX86_BUILTIN_VPCOMLTQ): Ditto.
905         (IX86_BUILTIN_VPCOMLEQ): Ditto.
906         (IX86_BUILTIN_VPCOMGTQ): Ditto.
907         (IX86_BUILTIN_VPCOMGEQ): Ditto.
908         (IX86_BUILTIN_VPCOMFALSEQ): Ditto.
909         (IX86_BUILTIN_VPCOMTRUEQ): Ditto.
910
911         (enum multi_arg_type): New enum for describing the various XOP
912         intrinsic argument types.
913         (bdesc_multi_arg): New table for XOP intrinsics.
914         (ix86_init_mmx_sse_builtins): Add XOP intrinsic support.
915         (ix86_expand_multi_arg_builtin): New function for creating XOP
916         intrinsics.
917
918         * config/i386/sse.md (sserotatemax): New mode attribute for XOP.
919         (xop_pmacsww): Ditto.
920         (xop_pmacssww): Ditto.
921         (xop_pmacsdd): Ditto.
922         (xop_pmacssdd): Ditto.
923         (xop_pmacssdql): Ditto.
924         (xop_pmacssdqh): Ditto.
925         (xop_pmacsdql): Ditto.
926         (xop_pmacsdql_mem): Ditto.
927         (xop_mulv2div2di3_low): Ditto.
928         (xop_pmacsdqh): Ditto.
929         (xop_pmacsdqh_mem): Ditto.
930         (xop_mulv2div2di3_high): Ditto.
931         (xop_pmacsswd): Ditto.
932         (xop_pmacswd): Ditto.
933         (xop_pmadcsswd): Ditto.
934         (xop_pmadcswd): Ditto.
935         (xop_pcmov_<mode>): Ditto.
936         (xop_pcmov_<mode>256): Ditto.
937         (xop_phaddbw): Ditto.
938         (xop_phaddbd): Ditto.
939         (xop_phaddbq): Ditto.
940         (xop_phaddwd): Ditto.
941         (xop_phaddwq): Ditto.
942         (xop_phadddq): Ditto.
943         (xop_phaddubw): Ditto.
944         (xop_phaddubd): Ditto.
945         (xop_phaddubq): Ditto.
946         (xop_phadduwd): Ditto.
947         (xop_phadduwq): Ditto.
948         (xop_phaddudq): Ditto.
949         (xop_phsubbw): Ditto.
950         (xop_phsubwd): Ditto.
951         (xop_phsubdq): Ditto.
952         (xop_pperm): Ditto.
953         (rotl<mode>3): Ditto.
954         (rotr<mode>3): Ditto.
955         (xop_rotl<mode>3): Ditto.
956         (xop_rotr<mode>3): Ditto.
957         (vrotr<mode>3): Ditto.
958         (vrotl<mode>3): Ditto.
959         (xop_vrotl<mode>3): Ditto.
960         (vlshr<mode>3): Ditto.
961         (vashr<mode>3): Ditto.
962         (vashl<mode>3
963         (xop_ashl<mode>3): Ditto.
964         (xop_lshl<mode>3): Ditto.
965         (ashlv16qi3): Ditto.
966         (lshlv16qi3): Ditto.
967         (ashrv16qi3): Ditto.
968         (ashrv2di3): Ditto.
969         (xop_frcz<mode>2): Ditto.
970         (xop_vmfrcz<mode>2): Ditto.
971         (xop_frcz<mode>2256): Ditto.
972         (xop_maskcmp<mode>3): Ditto.
973         (xop_maskcmp_uns<mode>3): Ditto.
974         (xop_maskcmp_uns2<mode>3): Ditto.
975         (xop_pcom_tf<mode>3): Ditto.
976
977         * doc/invoke.texi (-mxop): Add documentation.
978         * doc/extend.texi (x86 intrinsics): Add XOP intrinsics.
979
980 2009-11-03  Mark Mitchell  <mark@codesourcery.com>
981
982         PR driver/11810
983         * gcc.c (SWITCHES_NEED_SPACES): Define to "o".
984         * config/alpha/osf.h (SWITCHES_NEED_SPACES): Remove here.
985         * config/mips/iris.h (SWITCHES_NEED_SPACES): Remove here.
986
987 2009-11-04  Richard Earnshaw  <rearnsha@arm.com>
988
989         PR target/40835
990         * arm.md (peephole2 patterns for move and compare): New.
991
992 2009-11-04  Nick Clifton  <nickc@redhat.com>
993
994         * defaults.h (CONSTANT_ADDRESS_P): Provide a default definition.
995         Make sure that it does not allow CONST_DOUBLEs.
996         * doc/tm.texi (CONSTANT_ADDRESS_P): Update description.
997         * config/avr/avr.h (CONSTANT_ADDRESS_P): Delete.
998         * config/bfin/bfin.h (CONSTANT_ADDRESS_P): Delete.
999         * config/cris/cris.h (CONSTANT_ADDRESS_P): Delete.
1000         * config/fr30/fr30.h (CONSTANT_ADDRESS_P): Delete.
1001         * config/frv/frv.h (CONSTANT_ADDRESS_P): Delete.
1002         * config/m32c/m32c.h (CONSTANT_ADDRESS_P): Delete.
1003         * config/m68hc11/m68hc11.h (CONSTANT_ADDRESS_P): Delete.
1004         * config/mep/mep.h (CONSTANT_ADDRESS_P): Delete.
1005         * config/mn10300/mn10300.h (CONSTANT_ADDRESS_P): Delete.
1006         * config/moxie/moxie.h (CONSTANT_ADDRESS_P): Delete.
1007         * config/pdp11/pdp11.h (CONSTANT_ADDRESS_P): Delete.
1008         * config/picochip/picochip.h (CONSTANT_ADDRESS_P): Delete.
1009         * config/score/score.h (CONSTANT_ADDRESS_P): Delete.
1010         * config/stormy16/stormy16.h (CONSTANT_ADDRESS_P): Delete.
1011
1012 2009-11-04  Richard Guenther  <rguenther@suse.de>
1013
1014         PR tree-optimization/41919
1015         * tree-vrp.c (test_for_singularity): Properly compare values.
1016
1017 2009-11-04  Revital Eres  <eres@il.ibm.com>
1018
1019         * tree-vect-data-refs.c (vect_enhance_data_refs_alignment):
1020         Consider peeling for alignment only for stores and remove
1021         redundant assignment.
1022
1023 2009-11-04  Maxim Kuvyrkov  <maxim@codesourcery.com>
1024
1025         PR target/41302
1026         * config/m68k/m68k.c (m68k_reg_present_p): New static function.
1027         (m68k_ok_for_sibcall_p): Handle different result return locations.
1028
1029 2009-11-04  Richard Guenther  <rguenther@suse.de>
1030
1031         * c-opts.c (c_common_post_options): Move LTO option processing
1032         code ...
1033         * opts.c (decode_options): ... here.
1034
1035 2009-11-04  Jakub Jelinek  <jakub@redhat.com>
1036
1037         * c-common.c (fold_offsetof_1): Use %wd instead of
1038         HOST_WIDE_INT_PRINT_DEC.
1039
1040 2009-11-04  Maciej W. Rozycki  <macro@linux-mips.org>
1041
1042         * config/vax/linux.h (TARGET_OS_CPP_BUILTINS): Don't define
1043         __pic__ or __PIC__.
1044
1045 2009-11-04  Maciej W. Rozycki  <macro@linux-mips.org>
1046
1047         * config.gcc (vax-*-linux*): Keep the original contents of
1048         tmake_file while adding vax/t-linux.
1049
1050 2009-11-03  Eric Botcazou  <ebotcazou@adacore.com>
1051
1052         PR target/10127
1053         PR ada/20548
1054         * expr.h (STACK_CHECK_PROBE_INTERVAL): Delete.
1055         (STACK_CHECK_PROBE_INTERVAL_EXP): New macro.
1056         (STACK_CHECK_MOVING_SP): Likewise.
1057         * system.h (STACK_CHECK_PROBE_INTERVAL): Poison it.
1058         * doc/tm.texi (Stack Checking): Delete STACK_CHECK_PROBE_INTERVAL.
1059         Document STACK_CHECK_PROBE_INTERVAL_EXP and STACK_CHECK_MOVING_SP.
1060         * doc/md.texi (Standard Pattern Names): Tweak entry of CHECK_STACK.
1061         Document PROBE_STACK.
1062         * explow.c (anti_adjust_stack_and_probe): New function.
1063         (allocate_dynamic_stack_space): Do not directly allocate space if
1064         STACK_CHECK_MOVING_SP, instead invoke above function.
1065         (emit_stack_probe): Handle probe_stack insn.
1066         (PROBE_INTERVAL): New macro.
1067         (STACK_GROW_OPTAB): Likewise.
1068         (STACK_GROW_OFF): Likewise.
1069         (probe_stack_range): Use Pmode and memory_address consistently.  Fix
1070         loop condition in the small constant case.  Rewrite in the general
1071         case to be immune to wraparounds.  Make sure the address of probes
1072         is valid.  Try to use [base + disp] addressing mode if possible.
1073         * ira.c (setup_eliminable_regset): Set frame_pointer_needed if stack
1074         checking is enabled and STACK_CHECK_MOVING_SP.
1075         * rtlanal.c (may_trap_p_1) <MEM>: If stack checking is enabled,
1076         return 1 for volatile references to the stack pointer.
1077         * tree.c (build_common_builtin_nodes): Do not set ECF_NOTHROW on
1078         __builtin_alloca if stack checking is enabled.
1079         * unwind-dw2.c (uw_identify_context): Take into account whether the
1080         context is that of a signal frame or not.
1081         * config/i386/linux.h (STACK_CHECK_MOVING_SP): Define to 1.
1082         * config/i386/linux64.h (STACK_CHECK_MOVING_SP): Likewise.
1083
1084 2009-11-03  Jakub Jelinek  <jakub@redhat.com>
1085
1086         PR rtl-optimization/41917
1087         * rtlanal.c (num_sign_bit_copies1) <case UMOD>: If sign bit of second
1088         operand isn't known to be 0, return 1.
1089
1090 2009-11-03  Richard Sandiford  <rdsandiford@googlemail.com>
1091
1092         * config/mips/mips.md: Fix typos.
1093
1094 2009-11-03  Richard Sandiford  <rdsandiford@googlemail.com>
1095
1096         * doc/invoke.texi: Fix typo.
1097
1098 2009-11-03  Paul Brook  <paul@codesourcery.com>
1099
1100         * config/arm/neon.ml (vectype): Add T_floatSF.
1101         (string_of_vectype): Ditto.
1102         * config/arm/neon-gen.ml (signed_ctype): Add T_floatSF.
1103         (deftypes): Use float for float32_t.
1104         * config/arm/arm_neon.h: Regenerate.
1105
1106 2009-11-03  Nick Clifton  <nickc@redhat.com>
1107             Kevin Buettner  <kevinb@redhat.com>
1108
1109         * config/rx/predicates.md (rx_store_multiple_vector): Reverse
1110         order of expected registers.
1111         (rx_load_multiple_vector): Likewise.
1112         (rx_rtsd_vector): Likewise.
1113         * config/rx/rx.c (rx_cpu_type): New variable.
1114         (rx_print_operand): Fix bug printing 64-bit constant values.
1115         (rx_emit_stack_pushm): Reverse order of pushed registers.
1116         (gen_rx_store_vector): Likewise.
1117         (is_fast_interrupt_func): Only accept "fast_interrupt" as the
1118         attribute name.
1119         (is_exception_func): Rename to is_interrupt_func and only accept
1120         "interrupt" as the attribute name.
1121         (rx_get_stack_layout): Use new function name.
1122         (rx_func_attr_inlinable): Likewise.
1123         (rx_attribute_table): Remove "exception".
1124         (rx_expand_prologue): If necessary push the accumulator register
1125         in the prologue of interrupt functions.
1126         (rx_expand_epilogue): If necessary pop the accumulator.
1127         (rx_builtins): Add RX_BUILTIN_MVTIPL.
1128         (rx_expand_builtin_stz): Remove.
1129         (rx_expand_builtin_mvtipl): New function.
1130         (rx_init_builtins): Handle RX_BUILTIN_MVTIPL.
1131         (rx_expand_builtin): Likewise.
1132         (rx_enable_fpu): New variable.
1133         (rx_handle_option): Handle -fpu, -nofpu, -mcpu and -patch.
1134         * config/rx/rx.h (TARGET_CPU_CPP_BUILTINS): Assert machine based
1135         on rx_cpu_type.  Define __RX_FPU_INSNS__ if FPU insns are allowed.
1136         (enum rx_cpu_types): Define.
1137         (ASM_SPEC): Pass -m32bit-doubles on to assembler.
1138         (INCOMING_FRAME_SP_OFFSET): Define.
1139         (ARG_POINTER_CFA_OFFSET): Define.
1140         (FRAME_POINTER_CFA_OFFSET): Define.
1141         (OVERRIDE_OPTIONS): Enable fast math if RX FPU insns are enabled.
1142         (ALLOW_RX_FPU_INSNS): Define.
1143         * config/rx/rx.md: Test ALLOW_RX_FPU_INSNS instead of
1144         fast_math_flags_set_p.
1145         (UNSPEC_BUILTIN_MVTIPL): Define.
1146         (revl): Rename to bswapsi2.
1147         (bswaphi2): New pattern.
1148         (mvtachi): Mark as volatile because it uses a register unknown to GCC.
1149         (mvtaclo): Likewise.
1150         (racw): Likewise.
1151         (mvtc): Remove clobber of cc0.
1152         (mvtcp): Delete.
1153         (opecp): Delete.
1154         * config/rx/rx.opt (mieee): Remove.
1155         (fpu): Add.
1156         (nofpu): Add.
1157         (mcpu=): Add.
1158         (patch=): Add.
1159         (msave-acc-in-interrupts): Add.
1160         * config/rx/t-rx (MULTILIB_OPTIONS): Change default to 64bit doubles.
1161         (MULTILIB_DIRS): Likewise.
1162         (MULTILIB_MATCHES): Treat -fpu as an alias for -m32bit-doubles.
1163         * doc/extend.texi: Remove description of "exception" function
1164         attribute.
1165         * doc/invoke.texi: Document -fpu, -nofpu, -mcpu=, -patch= and
1166         -msave-acc-in-interrupts options.
1167
1168 2009-11-03  Richard Guenther  <rguenther@suse.de>
1169
1170         * c-common.c (fold_offsetof_1): Use HOST_WIDE_INT_PRINT_DEC.
1171
1172 2009-11-03  Dodji Seketeli  <dodji@redhat.com>
1173
1174         PR c++/38699
1175         * c-common.c (fold_offsetof_1): Issue errors when the member
1176         designator of the offsetof expression is not legitimate.
1177
1178 2009-11-03  Uros Bizjak  <ubizjak@gmail.com>
1179
1180         * config/i386/i386.md (*call_value_1_rex64_ms_sysv): Use register
1181         names instead of numerical constants.
1182         (sse_prologue_save): Ditto.
1183         (*sse_prologue_save_insn): Ditto.
1184
1185 2009-11-03  Uros Bizjak  <ubizjak@gmail.com>
1186
1187         PR target/41900
1188         * config/i386/i386.h (ix86_arch_indices) <X86_ARCH_CALL_ESP>: New.
1189         (TARGET_CALL_ESP): New define.
1190         * config/i386/i386.c (initial_ix86_tune_features): Initialize
1191         X86_ARCH_CALL_ESP.
1192         * config/i386/i386.md (*call_pop_1_esp, *call_1_esp,
1193         *call_value_pop_1_esp, *call_value_1_esp): Rename from *call_pop_1,
1194         *call_1, *call_value_pop_1 and *call_value_1.  Depend on
1195         TARGET_CALL_ESP.
1196         (*call_pop_1, *call_1, *call_value_pop_1, *call_value_1):
1197         New patterns, use "lsm" as operand 1 constraint.
1198         * config/i386/predicates.md (call_insn_operand): Depend on
1199         index_register_operand for !TARGET_CALL_ESP to avoid %esp register.
1200
1201 2009-11-02  Ulrich Weigand  <Ulrich.Weigand@de.ibm.com>
1202
1203         PR tree-optimization/41857
1204         * tree-flow.h (rewrite_use_address): Add BASE_HINT argument.
1205         * tree-ssa-loop-ivopts.c (rewrite_use_address): Pass base hint
1206         to create_mem_ref.
1207         * tree-ssa-address.c (move_hint_to_base): New function.
1208         (most_expensive_mult_to_index): Add TYPE argument.  Use mode and
1209         address space associated with TYPE.
1210         (addr_to_parts): Add TYPE and BASE_HINT arguments.  Pass TYPE to
1211         most_expensive_mult_to_index.  Call move_hint_to_base.
1212         (create_mem_ref): Add BASE_HINT argument.  Pass BASE_HINT and
1213         TYPE to addr_to_parts.
1214
1215 2009-11-02  Martin Jambor  <mjambor@suse.cz>
1216
1217         PR tree-optimization/41750
1218         * tree-sra.c (analyze_modified_params): Loop over all
1219         representatives of components of a parameter.
1220
1221 2009-11-02  Jakub Jelinek  <jakub@redhat.com>
1222
1223         PR tree-optimization/41841
1224         * ipa-struct-reorg.c (build_data_structure): Don't attempt to look at
1225         local variables of not yet materialized clones.
1226
1227         PR debug/41893
1228         * cfgexpand.c (expand_debug_expr): Don't attempt to create DECL_RTL
1229         for a VOIDmode variable.
1230
1231         PR c++/41774
1232         * c-pragma.c (visstack): Change into vector of ints rather than
1233         enum symbol_visibility.
1234         (push_visibility): Add kind argument, push default_visibility together
1235         with kind.
1236         (pop_visibility): Add kind argument, return true if successful, fail
1237         if visibility stack is empty or if stack top is of different kind.
1238         (handle_pragma_visibility): Don't check length of visstack, instead
1239         call pop_visibility and issue diagnostics if it failed.  Pass 0
1240         as last argument to push_visibility and pop_visibility.
1241         * c-pragma.h (push_visibility): Add kind argument.
1242         (pop_visibility): Likewise.  Return bool instead of void.
1243
1244 2009-11-01  Eric Botcazou  <ebotcazou@adacore.com>
1245
1246         * tree.def (TARGET_MEM_REF): Update comment.
1247         * alias.c (get_alias_set): Retrieve the original memory reference for
1248         a TARGET_MEM_REF before proceeding.
1249
1250 2009-10-31  Anatoly Sokolov  <aesok@post.ru>
1251
1252         * config/frv/frv.c (frv_function_value, frv_libcall_value,
1253         frv_function_value_regno_p): New functions.
1254         (TARGET_FUNCTION_VALUE, TARGET_LIBCALL_VALUE): Declare.
1255         * config/frv/frv.h (FUNCTION_VALUE, LIBCALL_VALUE): Remove.
1256         (FUNCTION_VALUE_REGNO_P): Redefine, use frv_function_value_regno_p.
1257         * config/frv/frv-protos.h (frv_function_value_regno_p): Declare.
1258
1259 2009-10-31  Anatoly Sokolov  <aesok@post.ru>
1260
1261         * config/mn10300/mn10300.c (mn10300_function_value): Make static, add
1262         new 'outgoing' argument.
1263         (mn10300_libcall_value, mn10300_function_value_regno_p): New functions.
1264         (TARGET_FUNCTION_VALUE, TARGET_LIBCALL_VALUE): Declare.
1265         * config/mn10300/mn10300.h (FUNCTION_VALUE, FUNCTION_OUTGOING_VALUE,
1266         LIBCALL_VALUE): Remove.
1267         (FUNCTION_VALUE_REGNO_P): Redefine, use mn10300_function_value_regno_p.
1268         * config/mn10300/mn10300-protos.h (mn10300_function_value): Remove.
1269         (mh10300_function_value_regno_p): Declare.
1270
1271 2009-10-31  Ramana Radhakrishnan  <ramana.radhakrishnan@arm.com>
1272
1273         * config/arm/cortex-a9.md: New - integer pipeline description.
1274
1275 2009-10-31  Eric Botcazou  <ebotcazou@adacore.com>
1276
1277         * tree-ssa-sccvn.c (vn_reference_lookup_3): Bail out instead of
1278         aborting if the sizes of the two references don't match.
1279
1280 2009-10-31  Toon Moene  <toon@moene.org>
1281
1282         * ipa-inline.c (cgraph_decide_inlining):
1283         Include reason for not inlining called-once functions in dump file.
1284
1285 2009-10-30  Daniel Gutson  <dgutson@codesourcery.com>
1286
1287         * config/arm/linux-eabi.h (LINK_SPEC): BE8_LINK_SPEC added.
1288         * config/arm/bpapi.h (BE8_LINK_SPEC): New define.
1289         (LINK_SPEC): BE_LINK_SPEC added.
1290
1291 2009-10-30  Richard Guenther  <rguenther@suse.de>
1292
1293         PR lto/41858
1294         * lto-streamer.h (struct lto_file_decl_data): Remove fd member.
1295
1296 2009-10-30  Nathan Sidwell  <nathan@codesourcery.com>
1297
1298         * target-def.h (TARGET_ASM_TTYPE): Correct typo of TARGET_ARM_TTYPE.
1299         * config/arm/unwind-arm.c (__gnu_Unwind_Backtrace): Remove unused
1300         label.
1301
1302 2009-10-30  Martin Jambor  <mjambor@suse.cz>
1303
1304         * tree-sra.c (build_ref_for_offset_1): Remove a comment.
1305
1306 2009-10-30  H.J. Lu  <hongjiu.lu@intel.com>
1307
1308         PR target/40838
1309         * cfgexpand.c (expand_stack_alignment): Call update_stack_boundary
1310         first.  Move assert on stack_alignment_estimated just before
1311         setting stack_realign_needed.
1312         (gimple_expand_cfg): Initialize stack_alignment_estimated to 0.
1313         Don't call update_stack_boundary.
1314
1315         * config/i386/i386.c (ix86_minimum_incoming_stack_boundary): New.
1316         (verride_options): Don't check ix86_force_align_arg_pointer here.
1317         (ix86_function_ok_for_sibcall): Use it.
1318         (ix86_update_stack_boundary): Likewise.
1319
1320         * config/i386/i386.h (STACK_REALIGN_DEFAULT): Update comments.
1321
1322 2009-10-30  Richard Earnshaw  <rearnsha@arm.com>
1323
1324         * arm.md (QHSI): New mode iterator.
1325         (movqi): If generating for thumb, then truncate any immediate to
1326         8 bits.
1327         * thumb2.md (thumb2_movsi_shortim and peephole2 generator): Replace
1328         with...
1329         (thumb2_mov<mode>_shortim and peephole2 generator): ... iterator based
1330         version.
1331
1332 2009-10-29  Cary Coutant  <ccoutant@google.com>
1333
1334         PR debug/41700
1335         * dwarf2out.c (dwarf2_debug_hooks): Add entries for new hook (two
1336         locations in the source).
1337         (store_vcall_insn): New function.
1338         (lookup_vcall_insn): New function.
1339         (dwarf2out_virtual_call_token): Use store_vcall_insn.
1340         (dwarf2out_copy_call_info): New function.
1341         (dwarf2out_virtual_call): Use lookup_vcall_insn.
1342         * emit-rtl.c (try_split): Call copy_call_info debug hook.
1343         * debug.h (struct gcc_debug_hooks): Add copy_call_info hook.
1344         * debug.c (do_nothing_debug_hooks): Add dummy entry for new hook.
1345         (debug_nothing_rtx_rtx): New dummy hook.
1346         * dbxout.c (dbx_debug_hooks): Add dummy entry for new hook.
1347         (xcoff_debug_hooks): Likewise.
1348         * sdbout.c (sdb_debug_hooks): Likewise.
1349         * vmsdbgout.c (vmsdbg_debug_hooks): Likewise.
1350
1351 2009-10-29  David Daney  <ddaney@caviumnetworks.com>
1352
1353         * doc/invoke.texi (mmcount-ra-address): Document new command line
1354         option.
1355         * config/mips/mips.opt (mmcount-ra-address): New option.
1356         * config/mips/mips-protos.h (mips_function_profiler): Declare new
1357         function.
1358         * config/mips/mips.c (struct mips_frame_info): Add ra_fp_offset
1359         member.
1360         (mips_for_each_saved_gpr_and_fpr): Set ra_fp_offset.
1361         (mips_function_profiler): Moved from FUNCTION_PROFILER, and
1362         rewritten.
1363         * config/mips/mips.h (FUNCTION_PROFILER): Body of macro moved to
1364         mips_function_profiler.
1365
1366 2009-10-29  Steve Ellcey  <sje@cup.hp.com>
1367
1368         PR middle-end/37565
1369         PR target/38018
1370         * doc/tm.texi (OVERRIDE_OPTIONS): Update.
1371         (TARGET_OVERRIDE_OPTIONS_AFTER_CHANGE): New.
1372         * optc-gen.awk (cl_target_option_restore): Include call to
1373         targetm.override_options_after_change.
1374         * target-def.h (TARGET_OVERRIDE_OPTIONS_AFTER_CHANGE): New.
1375         * target.h (override_options_after_change): New.
1376         * c-common.c (parse_optimize_options): Call
1377         targetm.override_options_after_change.
1378         * config/ia64/ia64.c (TARGET_OVERRIDE_OPTIONS_AFTER_CHANGE): New.
1379         (ia64_override_options_after_change): New.
1380         (ia64_override_options) Add call to above.
1381
1382 2009-10-29  Michael Matz  <matz@suse.de>
1383
1384         * tree-ssa-math-opts.c (execute_convert_to_rsqrt): Remove.
1385         (gate_convert_to_rsqrt): Ditto.
1386         (pass_convert_to_rsqrt): Ditto.
1387         * tree-pass.h (pass_convert_to_rsqrt): Don't declare.
1388         * passes.c (init_optimization_passes): Don't add pass_convert_to_rsqrt
1389         to pass list.
1390
1391         * config/i386/i386.c (ix86_emit_swdivsf): Change evaluation order.
1392
1393 2009-10-29  Ramana Radhakrishnan  <ramana.radhakrishnan@arm.com>
1394
1395         * config/arm/arm.c (find_best_start): Fix type of remainder to be
1396         unsigned.
1397
1398 2009-10-29  Martin Jambor  <mjambor@suse.cz>
1399
1400         PR tree-optimization/41775
1401         * tree-sra.c (build_ref_for_offset): Unshare *expr if not NULL.
1402         (generate_subtree_copies): Do not unshare agg.
1403         (load_assign_lhs_subreplacements): Do not unshare rhs.
1404         (sra_modify_assign): Do not unshare exprs.
1405         (propagate_subacesses_accross_link): Renamed to
1406         propagate_subaccesses_across_link.
1407
1408 2009-10-29  Richard Earnshaw  <rearnsha@arm.com>
1409
1410         * arm.c (count_insns_for_constant): Rework to support counting for
1411         thumb2 immediates as well.
1412         (find_best_start): Split out from arm_gen_constant.
1413         (arm_gen_constant): Rework to support XOR with immediate.
1414
1415 2009-10-29  Chao-ying Fu  <fu@mips.com>
1416
1417         * config/mips/mips.c (mips_emit_unary, mips_force_unary): New
1418         functions.
1419         (mips_expand_synci_loop):  Use the length rtx to control the
1420         synci loop from the begin rtx that points to the first byte of
1421         the cache line.
1422
1423 2009-10-28  Rafael Avila de Espindola  <espindola@google.com>
1424
1425         * doc/invoke.texi: Rename -use-linker-plugin -fuse-linker-plugin.
1426
1427 2009-10-28  Rafael Avila de Espindola  <espindola@google.com>
1428
1429         * dbxout.c (dbxout_common_check): Accept non public trees.
1430         * dwarf2out.c (fortran_common): Accept non public trees.
1431
1432 2009-10-28  Rafael Avila de Espindola  <espindola@google.com>
1433
1434         * common.opt (fuse-linker-plugin): New option.
1435         * gcc.c (LINK_COMMAND_SPEC, main): Rename use-linker-plugin to
1436         fuse-linker-plugin.
1437         * opts.c (common_handle_option): Ignore OPT_fuse_linker_plugin.
1438
1439 2009-10-28  Paolo Bonzini  <bonzini@gnu.org>
1440
1441         PR rtl-optimization/39715
1442         * config/arm/arm.md (cstoresi4): Use gen_cstoresi_ltu_thumb1.
1443         (gen_cstoresi_ltu_thumb1): New splitter.
1444
1445 2009-10-28  Richard Guenther  <rguenther@suse.de>
1446
1447         PR lto/41808
1448         PR lto/41839
1449         * tree-ssa.c (useless_type_conversion_p): Do not treat
1450         conversions to pointers to incomplete types as useless.
1451         * gimple.c (gimple_types_compatible_p): Compare struct tags,
1452         not typedef names.
1453
1454 2009-10-28  Jakub Jelinek  <jakub@redhat.com>
1455
1456         * var-tracking.c (emit_note_insn_var_location): Don't call the second
1457         vt_expand_loc unnecessarily when location is not a register nor
1458         memory.
1459
1460         PR middle-end/41837
1461         * ipa-struct-reorg.c (find_field_in_struct_1): Return NULL if
1462         fields don't have DECL_NAME.
1463
1464         PR debug/41801
1465         * builtins.c (get_builtin_sync_mem): Expand loc in ptr_mode,
1466         call convert_memory_address on addr.
1467
1468         PR target/41762
1469         * config/i386/i386.c (ix86_pic_register_p): Don't call
1470         rtx_equal_for_cselib_p for VALUEs discarded as useless.
1471
1472 2009-10-28  Richard Sandiford  <rdsandiford@googlemail.com>
1473
1474         * var-tracking.c (emit_note_insn_var_location): Get the mode of
1475         a variable part from its REG, MEM or VALUE.
1476
1477 2009-10-28  Richard Guenther  <rguenther@suse.de>
1478
1479         * gimple.c (gimple_get_alias_set): Fix comment typo.
1480
1481 2009-10-28  Richard Guenther  <rguenther@suse.de>
1482
1483         * tree.c (free_lang_data_in_type): Do not call get_alias_set.
1484         (free_lang_data): Unconditionally compute alias sets for all
1485         standard integer types.  Bail out if gate bailed out previously.
1486         Do not reset the types_compatible_p langhook.
1487         (gate_free_lang_data): Remove.
1488         (struct pass_ipa_free_lang_data): Enable unconditionally.
1489         * gimple.c (gimple_get_alias_set): Use the same alias-set for
1490         all pointer types.
1491
1492 2009-10-28  Richard Guenther  <rguenther@suse.de>
1493
1494         PR middle-end/41855
1495         * tree-ssa-alias.c (refs_may_alias_p_1): Deal with CONST_DECLs
1496         (ref_maybe_used_by_call_p_1): Fix bcopy handling.
1497         (call_may_clobber_ref_p_1): Likewise.
1498         * tree-ssa-structalias.c (find_func_aliases): Likewise.
1499         * alias.c (nonoverlapping_memrefs_p): Deal with CONST_DECLs.
1500
1501 2009-10-28  Paolo Bonzini  <bonzini@gnu.org>
1502
1503         PR rtl-optimization/41812
1504
1505         Revert:
1506         2009-06-27  Paolo Bonzini  <bonzini@gnu.org>
1507
1508         * df-problems.c (df_md_scratch): New.
1509         (df_md_alloc, df_md_free): Allocate/free it.
1510         (df_md_local_compute): Only include live registers in init.
1511         (df_md_transfer_function): Prune the in-set computed by
1512         the confluence function, and the gen-set too.
1513
1514 2009-10-28  Paolo Bonzini  <bonzini@gnu.org>
1515
1516         PR rtl-optimization/39715
1517         * combine.c (simplify_comparison): Use extensions to
1518         widen comparisons.  Try an ANDing first.
1519
1520 2009-10-28  Paolo Bonzini  <bonzini@gnu.org>
1521
1522         PR rtl-optimization/40741
1523         * config/arm/arm.c (thumb1_rtx_costs): IOR or XOR with
1524         a small constant is cheap.
1525         * config/arm/arm.md (andsi3, iorsi3): Try to place the result of
1526         force_reg on the LHS.
1527         (xorsi3): Likewise, and split the XOR if the constant is complex
1528         and not in Thumb mode.
1529
1530 2009-10-28  Paolo Bonzini  <bonzini@gnu.org>
1531
1532         * expmed.c (emit_store_flag): Check costs before
1533         transforming to the opposite representation.
1534
1535 2009-10-28  Paolo Bonzini  <bonzini@gnu.org>
1536
1537         * config/sh/sh.md (cbranchfp4_media): Remove hack extending
1538         cstore result to DImode.
1539
1540 2009-10-28  Kaz Kojima  <kkojima@gcc.gnu.org>
1541
1542         * config/sh/sh.md (stuff_delay_slot): Move const_int pattern
1543         inside the unspec vector.
1544
1545 2009-10-27  Richard Henderson  <rth@redhat.com>
1546
1547         * cgraphunit.c (cgraph_optimize): Maintain timevar stack properly.
1548
1549 2009-10-27  Richard Henderson  <rth@redhat.com>
1550
1551         PR c++/41819
1552         * tree-eh.c (eh_region_may_contain_throw_map): Rename from
1553         eh_region_may_contain_throw; update users.
1554         (eh_region_may_contain_throw): New function.
1555         (lower_catch): Check flag_exceptions before creating exception region.
1556         (lower_eh_filter, lower_eh_must_not_throw): Likewise.
1557         (lower_cleanup): Tidy existing flag_exceptions check to match.
1558
1559 2009-10-27  Kai Tietz <kai.tietz@onevision.com>
1560
1561         PR/41799
1562         * config/i386/mingw32.h (CHECK_EXECUTE_STACK_ENABLED): New macro.
1563         * config/i386/mingw.opt: Add fset-stack-executable.
1564         * config/i386/i386.c (ix86_trampoline_init): Make call to
1565         emit_library_call conditional, if CHECK_EXECUTE_STACK_ENABLED is
1566         defined and its value is not zero.
1567         * doc/invoke.texi
1568
1569 2009-10-27  Richard Guenther  <rguenther@suse.de>
1570
1571         * tree-ssa-structalias.c (find_func_aliases): In IPA mode
1572         handle calls to externally visible functions like in regular mode.
1573         (create_variable_info_for): Do not create function infos here.
1574         (have_alias_info): Remove write-only variable.
1575         (solve_constraints): New function split out from common code
1576         in compute_points_to_sets and ipa_pta_execute.
1577         (compute_points_to_sets): Adjust.
1578         (ipa_pta_execute): Likewise.  Handle clones and externally visible
1579         functions like in non-IPA mode.
1580
1581 2009-10-27  Jakub Jelinek  <jakub@redhat.com>
1582
1583         PR c/41842
1584         * c-typeck.c (convert_arguments): Return -1 if any of the arguments is
1585         error_mark_node.
1586
1587 2009-10-27  Richard Guenther  <rguenther@suse.de>
1588
1589         * tree-complex.c (expand_complex_div_wide): Check for
1590         INTEGER_CST, not TREE_CONSTANT on comparison folding result.
1591
1592 2009-10-27  Revital Eres  <eres@il.ibm.com>
1593
1594         PR tree-optimization/40648
1595         * tree-vect-data-refs.c (vect_enhance_data_refs_alignment):
1596         Change decision of when to peel for alignment.
1597
1598 2009-10-27  Richard Guenther  <rguenther@suse.de>
1599
1600         PR lto/41821
1601         * gimple.c (gimple_types_compatible_p): Handle OFFSET_TYPE.
1602
1603 2009-10-27  Aldy Hernandez  <aldyh@redhat.com>
1604
1605         PR bootstrap/41451
1606         * fold-const.c (fold_binary_loc): Do not call
1607         protected_set_expr_location.
1608
1609 2009-10-27  Wei Guozhi  <carrot@google.com>
1610
1611         PR target/41705
1612         * target.h (have_conditional_execution): Add a new target hook
1613         function.
1614         * target-def.h (TARGET_HAVE_CONDITIONAL_EXECUTION): Likewise.
1615         * targhooks.h (default_have_conditional_execution): Likewise.
1616         * targhooks.c (default_have_conditional_execution): Likewise.
1617         * doc/tm.texi (TARGET_HAVE_CONDITIONAL_EXECUTION): Document it.
1618         * config/arm/arm.c (TARGET_HAVE_CONDITIONAL_EXECUTION): Define it.
1619         (arm_have_conditional_execution): New function.
1620         * ifcvt.c (noce_process_if_block, find_if_header,
1621         cond_exec_find_if_block, dead_or_predicable): Change the usage of
1622         macro HAVE_conditional_execution to a target hook call.
1623         * recog.c (peephole2_optimize): Likewise.
1624         * sched-rgn.c (add_branch_dependences): Likewise.
1625         * final.c (asm_insn_count, final_scan_insn): Likewise.
1626         * bb-reorder.c (HAVE_conditional_execution): Remove it.
1627
1628 2009-10-26  Ben Elliston  <bje@au.ibm.com>
1629             Michael Meissner  <meissner@linux.vnet.ibm.com>
1630             Ulrich Weigand  <uweigand@de.ibm.com>
1631
1632         * config.gcc (spu-*-elf*): Add spu_cache.h to extra_headers.
1633         * config/spu/spu_cache.h: New file.
1634
1635         * config/spu/cachemgr.c: New file.
1636         * config/spu/cache.S: New file.
1637
1638         * config/spu/spu.h (ASM_OUTPUT_SYMBOL_REF): Define.
1639         (ADDR_SPACE_EA): Define.
1640         (TARGET_ADDR_SPACE_KEYWORDS): Define.
1641         * config/spu/spu.c (EAmode): New macro.
1642         (TARGET_ADDR_SPACE_POINTER_MODE): Define.
1643         (TARGET_ADDR_SPACE_ADDRESS_MODE): Likewise.
1644         (TARGET_ADDR_SPACE_LEGITIMATE_ADDRESS_P): Likewise.
1645         (TARGET_ADDR_SPACE_LEGITIMIZE_ADDRESS): Likewise.
1646         (TARGET_ADDR_SPACE_SUBSET_P): Likewise.
1647         (TARGET_ADDR_SPACE_CONVERT): Likewise.
1648         (TARGET_ASM_SELECT_SECTION): Likewise.
1649         (TARGET_ASM_UNIQUE_SECTION): Likewise.
1650         (TARGET_ASM_UNALIGNED_SI_OP): Likewise.
1651         (TARGET_ASM_ALIGNED_DI_OP): Likewise.
1652         (ea_symbol_ref): New function.
1653         (spu_legitimate_constant_p): Handle __ea qualified addresses.
1654         (spu_addr_space_legitimate_address_p): New function.
1655         (spu_addr_space_legitimize_address): Likewise.
1656         (cache_fetch): New global.
1657         (cache_fetch_dirty): Likewise.
1658         (ea_alias_set): Likewise.
1659         (ea_load_store): New function.
1660         (ea_load_store_inline): Likewise.
1661         (expand_ea_mem): Likewise.
1662         (spu_expand_mov): Handle __ea qualified memory references.
1663         (spu_addr_space_pointer_mode): New function.
1664         (spu_addr_space_address_mode): Likewise.
1665         (spu_addr_space_subset_p): Likewise.
1666         (spu_addr_space_convert): Likewise.
1667         (spu_section_type_flags): Handle "._ea" section.
1668         (spu_select_section): New function.
1669         (spu_unique_section): Likewise.
1670         * config/spu/spu-c.c (spu_cpu_cpp_builtins): Support __EA32__
1671         and __EA64__ predefined macros.
1672         * config/spu/spu-elf.h (LIB_SPEC): Handle -mcache-size= and
1673         -matomic-updates switches.
1674
1675         * config/spu/t-spu-elf (MULTILIB_OPTIONS): Define.
1676         (EXTRA_MULTILIB_PARTS): Add libgcc_cachemgr.a,
1677         libgcc_cachemgr_nonatomic.a, libgcc_cache8k.a, libgcc_cache16k.a,
1678         libgcc_cache32k.a, libgcc_cache64k.a, libgcc_cache128k.a.
1679         ($(T)cachemgr.o, $(T)cachemgr_nonatomic.o): New target.
1680         ($(T)cache8k.o, $(T)cache16k.o, $(T)cache32k.o, $(T)cache64k.o,
1681         $(T)cache128k.o): Likewise.
1682         ($(T)libgcc_%.a): Likewise.
1683
1684         * config/spu/spu.h (TARGET_DEFAULT): Add MASK_ADDRESS_SPACE_CONVERSION.
1685         * config/spu/spu.opt (-mea32/-mea64): Add switches.
1686         (-maddress-space-conversion): Likewise.
1687         (-mcache-size=): Likewise.
1688         (-matomic-updates): Likewise.
1689         * doc/invoke.texi (-mea32/-mea64): Document.
1690         (-maddress-space-conversion): Likewise.
1691         (-mcache-size=): Likewise.
1692         (-matomic-updates): Likewise.
1693
1694 2009-10-26  Ben Elliston  <bje@au.ibm.com>
1695             Michael Meissner  <meissner@linux.vnet.ibm.com>
1696             Ulrich Weigand  <uweigand@de.ibm.com>
1697
1698         * doc/tm.texi (TARGET_ADDR_SPACE_KEYWORDS): Document.
1699
1700         * c-common.c (c_common_reswords): If TARGET_ADDR_SPACE_KEYWORDS is
1701         defined, add the named address space keywords.
1702         (c_addr_space_name): New function.
1703         (complete_array_type): Preserve named address space.
1704         (handle_mode_attribute): Use targetm.addr_space.valid_pointer_mode
1705         instead of targetm.valid_pointer_mode.
1706
1707         * c-common.h (enum rid): Add RID_ADDR_SPACE_0 .. RID_ADDR_SPACE_15,
1708         RID_FIRST_ADDR_SPACE and RID_LAST_ADDR_SPACE.
1709         (ADDR_SPACE_KEYWORD): New macro.
1710         (c_addr_space_name): Add prototype.
1711
1712         * c-tree.h (struct c_declspecs): Add address_space member.
1713         (declspecs_add_addrspace): Add prototype.
1714
1715         * c-pretty-print.c (pp_c_type_qualifier_list): Handle address spaces.
1716
1717         * c-parser.c (c_parse_init): Add assertion.
1718         (typedef enum c_id_kind): Add C_ID_ADDRSPACE.
1719         (c_lex_one_token): Handle address space keywords.
1720         (c_token_starts_typename): Likewise.
1721         (c_token_starts_declspecs): Likewise.
1722         (c_parser_declspecs): Likewise.
1723         (c_parser_postfix_expression_after_paren_type): Diagnose compound
1724         literal within function qualified with named address space.
1725
1726         * c-decl.c (diagnose_mismatched_decls): Diagnose conflicting named
1727         address space qualifiers.
1728         (shadow_tag_warned): Warn about useless address space qualifiers.
1729         (quals_from_declspecs): Handle address space qualifiers.
1730         (grokdeclarator): Likewise.
1731         (build_null_declspecs): Likewise.
1732         (declspecs_add_addrspace): New function.
1733
1734         * c-typeck.c (addr_space_superset): New function.
1735         (qualify_type): Handle named address spaces.
1736         (composite_type): Likewise.
1737         (common_pointer_type): Likewise.
1738         (comp_target_types): Likewise.
1739         (build_conditional_expr): Likewise.
1740         (handle_warn_cast_qual): Likewise.
1741         (build_c_cast): Likewise.
1742         (convert_for_assignment): Likewise.
1743         (build_binary_op): Likewise.
1744         (pointer_diff): Handle named address spaces.  Use intermediate
1745         integer type of sufficient size if required.
1746
1747 2009-10-26  Ben Elliston  <bje@au.ibm.com>
1748             Michael Meissner  <meissner@linux.vnet.ibm.com>
1749             Ulrich Weigand  <uweigand@de.ibm.com>
1750
1751         * doc/tm.texi (TARGET_ADDR_SPACE_POINTER_MODE): Document.
1752         (TARGET_ADDR_SPACE_ADDRESS_MODE): Likewise.
1753         (TARGET_ADDR_SPACE_VALID_POINTER_MODE): Likewise.
1754
1755         * target.h (struct target_def): Add pointer_mode, address_mode,
1756         and valid_pointer_mode to addr_space substructure.
1757         * target-def.h (TARGET_ADDR_SPACE_POINTER_MODE): Define.
1758         (TARGET_ADDR_SPACE_ADDRESS_MODE): Likewise.
1759         (TARGET_ADDR_SPACE_VALID_POINTER_MODE): Likewise.
1760         (TARGET_ADDR_SPACE_HOOKS): Add them.
1761         * targhooks.c (target_default_pointer_address_modes_p): New function.
1762         * target.h (target_default_pointer_address_modes_p): Add prototype.
1763         * targhooks.c (default_addr_space_pointer_mode): New function.
1764         (default_addr_space_address_mode): Likewise.
1765         (default_addr_space_valid_pointer_mode): Likewise.
1766         * targhooks.h (default_addr_space_pointer_mode): Add prototype.
1767         (default_addr_space_address_mode): Likewise.
1768         (default_addr_space_valid_pointer_mode): Likewise.
1769         * output.h (default_valid_pointer_mode): Move to ...
1770         * targhooks.h (default_valid_pointer_mode): ... here.
1771         * varasm.c (default_valid_pointer_mode): Move to ...
1772         * targhooks.c (default_valid_pointer_mode): ... here.
1773
1774         * varasm.c (output_constant): Use targetm.addr_space.valid_pointer_mode
1775         instead of targetm.valid_pointer_mode.
1776
1777         * fold-const.c (fit_double_type): Use int_or_pointer_precision.
1778         * tree.c (integer_pow2p): Likewise.
1779         (tree_log2): Likewise.
1780         (tree_floor_log2): Likewise.
1781         (signed_or_unsigned_type_for): Support pointer type of different size.
1782         (int_or_pointer_precision): New function.
1783         * tree.h (int_or_pointer_precision): Add prototype.
1784         * stor-layout.c (layout_type): Set TYPE_PRECISION for offset types.
1785         * varasm.c (initializer_constant_valid_p): Use TYPE_PRECISION of
1786         incoming pointer type instead of POINTER_SIZE.
1787
1788         * tree.c (build_pointer_type): Use appropriate pointer mode
1789         instead of ptr_mode.
1790         (build_reference_type): Likewise.
1791         * expr.c (store_expr): Likewise.
1792         (expand_expr_addr_expr): Likewise.
1793         * tree-vect-data-refs.c (vect_create_data_ref_ptr): Likewise.
1794         * cfgexpand.c (expand_debug_expr): Likewise.
1795
1796         * auto-inc-dec.c: Include "target.h".
1797         (try_merge): Use appropriate address mode instead of Pmode.
1798         (find_inc): Likewise.
1799         * combine.c (find_split_point): Likewise.
1800         * cselib.c (cselib_record_sets): Likewise.
1801         * dse.c (replace_inc_dec): Likewise.
1802         (canon_address): Likewise.
1803         * var-tracking.c (replace_expr_with_values): Likewise.
1804         (count_uses): Likewise.
1805         (add_uses): Likewise.
1806         (add_stores): Likewise.
1807         * emit-rtl.c: Include "target.h".
1808         (adjust_address_1): Use appropriate address mode instead of Pmode.
1809         (offset_address): Likewise.
1810         * explow.c (break_out_memory_refs): Likewise.
1811         (memory_address_addr_space): Likewise.
1812         (promote_mode): Likewise.
1813         * expr.c (move_by_pieces): Likewise.
1814         (emit_block_move_via_loop): Likewise.
1815         (store_by_pieces): Likewise.
1816         (store_by_pieces_1): Likewise.
1817         (expand_assignment): Likewise.
1818         (store_constructor): Likewise.
1819         (expand_expr_addr_expr): Likewise.
1820         (expand_expr_real_1): Likewise.
1821         * cfgexpand.c (expand_debug_expr): Likewise.
1822         * ifcvt.c (noce_try_cmove_arith): Likewise.
1823         * regcprop.c (kill_autoinc_value): Likewise.
1824         * regmove.c (try_auto_increment): Likewise.
1825         * reload.c (find_reloads): Likewise.
1826         (find_reloads_address): Likewise.
1827         (find_reloads_address_1): Likewise.
1828         * sched-deps.c: Include "target.h".
1829         (sched_analyze_1): Use appropriate address mode instead of Pmode.
1830         (sched_analyze_2): Likewise.
1831         * sel-sched-dump.c: Include "target.h".
1832         (debug_mem_addr_value): Use appropriate address mode instead of Pmode.
1833         * stor-layout.c (layout_type): Likewise.
1834         * tree-ssa-loop-ivopts.c (produce_memory_decl_rtl): Likewise.
1835         (multiplier_allowed_in_address_p): Likewise.
1836         (get_address_cost): Likewise.
1837         * varasm.c (make_decl_rtl): Likewise.
1838
1839         * expr.c (expand_assignment): Always convert offsets to appropriate
1840         address mode.
1841         (store_expr): Likewise.
1842         (store_constructor): Likewise.
1843         (expand_expr_real_1): Likewise.
1844
1845         * reload.h (form_sum): Add MODE argument.
1846         * reload.c (form_sum): Add MODE argument, use it instead of Pmode.
1847         Update recursive calls.
1848         (subst_indexed_address): Update calls to form_sum.
1849
1850         * tree-flow.h (addr_for_mem_ref): Add ADDRSPACE argument.
1851         * tree-ssa-address.c: Include "target.h".
1852         (templates): Replace by ...
1853         (mem_addr_template_list): ... this new vector.
1854         (TEMPL_IDX): Handle address space numbers.
1855         (gen_addr_rtx): Add address mode argument, use it instead of Pmode.
1856         (addr_for_mem_ref): Add ADDRSPACE argument.  Use per-address-space
1857         instead of global cache.  Update call to gen_addr_rtx.
1858         (valid_mem_ref_p): Update call to addr_for_mem_ref.
1859         * expr.c (expand_expr_real_1): Update call to addr_for_mem_ref.
1860
1861         * rtl.h (convert_memory_address_addr_space): Add prototype.
1862         (convert_memory_address): Define as macro.
1863         * explow.c (convert_memory_address): Rename to ...
1864         (convert_memory_address_addr_space): ... this.  Add ADDRSPACE argument.
1865         Use appropriate pointer and address modes instead of ptr_mode / Pmode.
1866         Update recursive calls.
1867         (memory_address_addr_space): Call convert_memory_address_addr_space.
1868         * expmed.c (make_tree): Likewise.
1869         * expr.c (expand_assignment): Likewise.
1870         (expand_expr_addr_expr_1): Likewise.  Also, add ADDRSPACE argument.
1871         (expand_expr_addr_expr): Likewise.  Also, update call.
1872
1873         * alias.c (find_base_value): Guard pointer size optimizations.
1874         (find_base_term): Likewise.
1875         * rtlanal.c (nonzero_bits1): Likewise.
1876         (num_sign_bit_copies1): Likewise.
1877         * simplify-rtx.c (simplify_unary_operation_1): Likewise.
1878
1879         * Makefile.in (tree-ssa-address.o): Add $(TARGET_H) dependency.
1880         (emit-rtl.o): Likewise.
1881         (auto-inc-dec.o): Likewise.
1882         (sched-deps.o): Likewise.
1883
1884 2009-10-26  Ben Elliston  <bje@au.ibm.com>
1885             Michael Meissner  <meissner@linux.vnet.ibm.com>
1886             Ulrich Weigand  <uweigand@de.ibm.com>
1887
1888         * doc/extend.texi (Named Address Spaces): New section.
1889         * coretypes.h (addr_space_t): New type.
1890         (ADDR_SPACE_GENERIC): New define.
1891         (ADDR_SPACE_GENERIC_P): New macro.
1892
1893         * doc/tm.texi (Named Address Spaces): New section.
1894         (TARGET_ADDR_SPACE_LEGITIMATE_ADDRESS_P): Document.
1895         (TARGET_ADDR_SPACE_LEGITIMIZE_ADDRESS): Document.
1896         (TARGET_ADDR_SPACE_SUBSET_P): Document.
1897         (TARGET_ADDR_SPACE_CONVERT): Document.
1898         * target.h (struct gcc_target): Add addr_space substructure.
1899         * target-def.h (TARGET_ADDR_SPACE_LEGITIMATE_ADDRESS_P): Define.
1900         (TARGET_ADDR_SPACE_LEGITIMIZE_ADDRESS): Likewise.
1901         (TARGET_ADDR_SPACE_SUBSET_P): Likewise.
1902         (TARGET_ADDR_SPACE_CONVERT): Likewise.
1903         (TARGET_ADDR_SPACE_HOOKS): Likewise.
1904         (TARGET_INITIALIZER): Initialize addr_space hooks.
1905         * targhooks.c (default_addr_space_legitimate_address_p): New function.
1906         (default_addr_space_legitimize_address): Likewise.
1907         (default_addr_space_subset_p): Likewise.
1908         (default_addr_space_convert): Likewise.
1909         * targhooks.h (default_addr_space_legitimate_address_p): Add prototype.
1910         (default_addr_space_legitimize_address): Likewise.
1911         (default_addr_space_subset_p): Likewise.
1912         (default_addr_space_convert): Likewise.
1913
1914         * doc/rtl.texi (MEM_ADDR_SPACE): Document.
1915         * rtl.h (mem_attrs): Add ADDRSPACE memory attribute.
1916         (MEM_ADDR_SPACE): New macro.
1917         * emit-rtl.c (get_mem_attrs): Add ADDRSPACE argument and set
1918         address space memory attribute.
1919         (mem_attrs_htab_hash): Handle address space memory attribute.
1920         (mem_attrs_htab_eq): Likewise.
1921         (set_mem_attributes_minus_bitpos): Likewise.
1922         (set_mem_alias_set): Likewise.
1923         (set_mem_align): Likewise.
1924         (set_mem_expr): Likewise.
1925         (set_mem_offset): Likewise.
1926         (set_mem_size): Likewise.
1927         (adjust_address_1): Likewise.
1928         (offset_address): Likewise.
1929         (widen_memoy_address): Likewise.
1930         (get_spill_slot_decl): Likewise.
1931         (set_mem_attrs_for_spill): Likewise.
1932         (set_mem_addr_space): New function.
1933         * emit-rtl.h (set_mem_addr_space): Add prototype.
1934         * print-rtl.c (print_rtx): Print address space memory attribute.
1935         * expr.c (expand_assignment): Set address space memory attribute
1936         of generated MEM RTXes as appropriate.
1937         (expand_expr_real_1): Likewise.
1938         * cfgexpand.c (expand_debug_expr): Likewise.
1939         * tree-ssa-loop-ivopts.c (produce_memory_decl_rtl): Likewise.
1940
1941         * tree.h (struct tree_base): Add address_space bitfield.  Reduce
1942         size of "spare" bitfield.
1943         (TYPE_ADDR_SPACE): New macro.
1944         (ENCODE_QUAL_ADDR_SPACE): Likewise.
1945         (DECODE_QUAL_ADDR_SPACE): Likewise.
1946         (CLEAR_QUAL_ADDR_SPACE): Likewise.
1947         (KEEP_QUAL_ADDR_SPACE): Likewise.
1948         (TYPE_QUALS): Encode type address space.
1949         (TYPE_QUALS_NO_ADDR_SPACE): New macro.
1950         * tree.c (set_type_quals): Set type address space.
1951         (build_array_type): Inherit array address space from element type.
1952         * print-tree.c (print_node_brief): Print type address space.
1953         (print_node): Likewise.
1954         * tree-pretty-print.c (dump_generic_node): Likewise.
1955
1956         * explow.c (memory_address): Rename to ...
1957         (memory_address_addr_space): ... this.  Add ADDRSPACE argument.
1958         Use address-space aware variants of memory address routines.
1959         * recog.c (memory_address_p): Rename to ...
1960         (memory_address_addr_space_p): ... this.  Add ADDSPACE argument.
1961         Use address-space aware variants of memory address routines.
1962         (offsettable_address_p): Rename to ...
1963         (offsettable_address_addr_space_p): ... this.  Add ADDRSPACE argument.
1964         Use address-space aware variants of memory address routines.
1965         * reload.c (strict_memory_address_p): Rename to ...
1966         (strict_memory_address_addr_space_p): ... this.  Add ADDSPACE argument.
1967         Use address-space aware variants of memory address routines.
1968         (maybe_memory_address_p): Rename to ...
1969         (maybe_memory_address_addr_space_p): ... this.  Add ADDSPACE argument.
1970         Use address-space aware variants of memory address routines.
1971         * expr.h (memory_address_addr_space): Add prototype.
1972         (memory_address): Define as macro.
1973         * recog.h (memory_address_addr_space_p): Add prototype.
1974         (memory_address_p): Define as macro.
1975         (offsettable_address_addr_space_p): Add prototype.
1976         (offsettable_address_p): Define as macro.
1977         (strict_memory_address_addr_space_p): Add prototype.
1978         (strict_memory_address_p): Define as macro.
1979
1980         * combine.c (find_split_point): Use address-space aware variants
1981         of memory address routines.
1982         * emit-rtl.c (operand_subword): Likewise.
1983         (change_address_1): Likewise.
1984         (adjust_address_1): Likewise.
1985         (offset_address): Likewise.
1986         * expr.c (emit_move_insn): Likewise.
1987         (expand_assignment): Likewise.
1988         (expand_expr_real_1): Likewise.
1989         * recog.c (verify_changes): Likewise.
1990         (general_operand): Likewise.
1991         (offsettable_memref_p): Likewise.
1992         (offsettable_nonstrict_memref_p): Likewise.
1993         (constrain_operands): Likewise.
1994         * reload.c (get_secondary_mem): Likewise.
1995         (find_reloads_toplev): Likewise.
1996         (find_reloads_address): Likewise.
1997         (find_reloads_subreg_address): Likewise.
1998         * reload1.c (reload): Likewise.
1999         * rtlhooks.c (gen_lowpart_if_possible): Likewise.
2000         * rtl.h (address_cost): Add ADDRSPACE argument.
2001         * rtlanal.c (address_cost): Add ADDRSPACE argument.  Use address-space
2002         aware variant of memory address routines.
2003         * loop-invariant.c (create_new_invariant): Update address_cost call.
2004         * tree-ssa-loop-ivopts.c (computation_cost): Likewise.
2005         * fwprop.c (should_replace_address): Add ADDRSPACE argument.
2006         Use address-space aware variant of memory address routines.
2007         (propagate_rtx_1): Update call to should_replace_address.
2008         * tree-flow.h (multiplier_allowed_in_address_p): Add ADDRSPACE
2009         argument.
2010         * tree-ssa-loop-ivopts.c (multiplier_allowed_in_address_p): Add
2011         ADDRSPACE argument.  Use per-address-space instead of global cache.
2012         Use address-space aware variant of memory address routines.
2013         (get_address_cost): Likewise.
2014         (get_computation_cost_at): Update calls.
2015         * tree-ssa-address.c (valid_mem_ref_p): Add ADDRSPACE argument.
2016         Use address-space aware variant of memory address routines.
2017         (create_mem_ref_raw): Update call to valid_mem_ref_p.
2018         (most_expensive_mult_to_index): Update call to
2019         multiplier_allowed_in_address_p.
2020
2021         * dwarf2out.c (modified_type_die): Output DW_AT_address_class
2022         attribute to indicate named address spaces.
2023
2024         * varasm.c (get_variable_section): DECLs in named address spaces
2025         cannot be "common".
2026
2027         * reload.c (find_reloads_address): Do not use LEGITIMIZE_RELOAD_ADDRESS
2028         for addresses in a non-generic address space.
2029
2030         * expr.c (emit_block_move_hints): Do not use libcalls for
2031         memory in non-generic address spaces.
2032         (clear_storage_hints): Likewise.
2033         (expand_assignment): Likewise.
2034
2035         * fold-const.c (operand_equal_p): Expressions refering to different
2036         address spaces are not equivalent.
2037
2038         * rtl.c (rtx_equal_p_cb): MEMs refering to different address
2039         spaces are not equivalent.
2040         (rtx_equal_p): Likewise.
2041         * cse.c (exp_equiv_p): Likewise.
2042         * jump.c (rtx_renumbered_equal_p): Likewise.
2043         * reload.c (operands_match_p): Likewise.
2044
2045         * alias.c (nonoverlapping_memrefs_p): MEMs refering to different
2046         address spaces may alias.
2047         (true_dependence): Likewise.
2048         (canon_true_dependence): Likewise.
2049         (write_dependence_p): Likewise.
2050
2051         * dse.c (canon_address): Handle named address spaces.
2052         * ifcvt.c (noce_try_cmove_arith): Likewise.
2053
2054         * tree.def (ADDR_SPACE_CONVERT_EXPR): New tree code.
2055         * expr.c (expand_expr_real_2): Expand ADDR_SPACE_CONVERT_EXPR.
2056         * convert.c (convert_to_pointer): Generate ADDR_SPACE_CONVERT_EXPR
2057         to handle conversions between different address spaces.
2058         * fold-const.c (fold_convert_loc): Likewise.
2059         (fold_unary_loc): Handle ADDR_SPACE_CONVERT_EXPR.
2060         * tree-pretty-print.c (dump_generic_node): Likewise.
2061         * gimple-pretty-print.c (dump_unary_rhs): Likewise.
2062         * tree-cfg.c (verify_gimple_assign_unary): Likewise.
2063         * tree-inline.c (estimate_operator_cost): Likewise.
2064         * tree-ssa.c (useless_type_conversion_p): Conversions between pointers
2065         to different address spaces are not useless.
2066
2067 2009-10-26  Jakub Jelinek  <jakub@redhat.com>
2068
2069         PR bootstrap/41345
2070         * cfgcleanup.c (trivially_empty_bb_p): New function.
2071         (try_optimize_bb): Use it instead of checking BB_HEAD == BB_END.
2072
2073         PR debug/41828
2074         * dwarf2out.c (add_pubname, add_pubtype, generic_parameter_die,
2075         add_name_and_src_coords_attributes, gen_namespace_die,
2076         dwarf2out_set_name): Handle dwarf2_name returning NULL.
2077
2078 2009-10-26  Nick Clifton  <nickc@redhat.com>
2079
2080         * config.gcc: Add support for RX target.
2081         * config/rx: New directory.
2082         * config/rx/constraints.md: New file.
2083         * config/rx/predicates.md: New file.
2084         * config/rx/rx.c: New file.
2085         * config/rx/rx.h: New file.
2086         * config/rx/rx.md: New file.
2087         * config/rx/rx.opt: New file.
2088         * config/rx/rx-protos.h: New file.
2089         * config/rx/t-rx: New file.
2090         * doc/extend.texi: Document RX function attributes.
2091         * doc/invoke.texi: Document RX specific command line options.
2092         * doc/contrib.texi: Document RX contribution.
2093         * doc/md.texi: Document RX constraints.
2094         * doc/install.texi: Document RX support.
2095
2096 2009-10-26  Michael Matz  <matz@suse.de>
2097
2098         PR tree-optimization/41783
2099         * tree-ssa-alias.c (get_continuation_for_phi): Export, add a special
2100         case for simple diamonds.
2101         * tree-ssa-alias.h (get_continuation_for_phi): Declare.
2102         * tree-ssa-pre.c (translate_vuse_through_block): Add same_valid
2103         argument, use alias oracle to skip some vdefs.
2104         (phi_translate_1): Change call to above, don't allocate new
2105         value ids if they can stay the same.
2106         (compute_avail): Allow vuse walking when looking up references.
2107
2108 2009-10-26  Richard Guenther  <rguenther@suse.de>
2109
2110         PR tree-optimization/41826
2111         * tree-ssa-structalias.c (get_constraint_for_ptr_offset): Avoid
2112         access to re-allocated vector fields.
2113
2114 2009-10-26  Richard Guenther  <rguenther@suse.de>
2115
2116         * graphite-sese-to-poly.c (check_poly_representation): Fix
2117         compile without checking.
2118
2119 2009-10-26  Janus Weil  <janus@gcc.gnu.org>
2120
2121         PR fortran/41714
2122         * gimple.h (tree_annotate_all_with_location): Remove prototype.
2123         * gimplify.c (tree_should_carry_location_p,
2124         tree_annotate_one_with_location,tree_annotate_all_with_location):
2125         Remove obsolete functions.
2126
2127 2009-10-25  Kaz Kojima  <kkojima@gcc.gnu.org>
2128
2129         PR target/41813
2130         * config/sh/sh.md (stuff_delay_slot): Don't set T_REG in pattern.
2131
2132 2009-10-25  Richard Guenther  <rguenther@suse.de>
2133
2134         * lto-streamer-in.c (unpack_ts_decl_common_value_fields):
2135         Stream DECL_RESTRICTED_P.
2136         * lto-streamer-out.c (pack_ts_decl_common_value_fields): Likewise.
2137
2138 2009-10-25  Richard Sandiford  <rdsandiford@googlemail.com>
2139
2140         * config/mips/mips.c (mips_restore_gp_from_cprestore_slot): Emit
2141         a note when expanding to nothing.
2142
2143 2009-10-25  Richard Guenther  <rguenther@suse.de>
2144
2145         PR middle-end/41814
2146         * tree.c (find_decls_types_r): Deal with Java overloading
2147         BINFO_VIRTUALS for its own purpose.
2148
2149 2009-10-24  Adam Nemet  <anemet@caviumnetworks.com>
2150
2151         * config/mips/predicates.md (hilo_operand): New predicate.
2152         * config/mips/mips.md (<u>mulsidi3_64bit): Change it to a
2153         define_insn.  Correct !ISA_HAS_EXT_INS length from 24 to 28.  Move
2154         splitter part from here ...:
2155         (<u>mulsidi3_64bit splitter for !ISA_HAS_EXT_INS): ... to here.  Swap
2156         op0 and op4 to match the DINS case.
2157         (<u>mulsidi3_64bit splitter for ISA_HAS_EXT_INS): New splitter.
2158
2159 2009-10-24  Andy Hutchinson  <hutchinsonandy@gcc.gnu.org>
2160
2161         PR middle-end/19154
2162         * avr.md (QIDI): Add new mode iterator.
2163         (sbrx_branch<mode>): Create new zero extract bit, test and jump
2164         patterns for all QI thru DI modes combinations.
2165         (sbrx_and_branch<mode>): Create new and based bit test and jump
2166         patterns for QI thru SI modes.
2167         avr.c (avr_out_sbxx_branch): Use only bit number.
2168
2169 2009-10-24  Jan Hubicka  <jh@suse.cz>
2170
2171         * ipa-reference.c (check_call): Noreturn notrhow calls do not write
2172         to memory.
2173         (analyze_function): When analyzing noreturn nothrow call, do not
2174         compute written stats; free bitmaps of vars early if possible.
2175         (generate_summary): Only update bitmaps if computed.
2176         (propagate): Only dump bitmaps if computed.
2177         (ipa_reference_read_summary): Fix pasto.
2178
2179 2009-10-24  Eric Botcazou  <ebotcazou@adacore.com>
2180
2181         * tree-ssa-alias.c (nonaliasing_component_refs_p): Rename into...
2182         (aliasing_component_refs_p): ...this.  Return true if there is no
2183         common base and the base access types have the same alias set.
2184         (indirect_ref_may_alias_decl_p): Adjust for above renaming.
2185         (indirect_refs_may_alias_p): Likewise.
2186
2187 2009-10-23  Joseph Myers  <joseph@codesourcery.com>
2188
2189         PR c/40033
2190         * c-typeck.c (c_finish_stmt_expr): Do not wrap error_mark_node in
2191         a C_MAYBE_CONST_EXPR.
2192
2193 2009-10-23  Michael Meissner  <meissner@linux.vnet.ibm.com>
2194
2195         PR target/41787
2196         * config/rs6000/rs6000.c (struct machine_function): Add
2197         vsx_or_altivec_used_p to record if vector types are used.
2198         (rs6000_expand_to_rtl_hook): Rename from
2199         rs6000_alloc_sdmode_stack_slot.  If VSX, check to see if there are
2200         any vector operations, so if there are, we can set VRSAVE to
2201         non-zero when only floating point vector registers are used.
2202         (TARGET_EXPAND_TO_RTL_HOOK): Use rs6000_expand_to_rtl_hook.
2203         (rs6000_check_vector_mode): Inner function to check if vector
2204         types are used in the code.
2205         (compute_vrsave_mask): If VSX, make sure VRSAVE is non-zero if
2206         vector instructions are used.
2207
2208         * config/rs6000/rs6000.h (HARD_REGNO_CALL_PART_CLOBBERED):
2209         Indicate that VSX registers which overlap floating point
2210         registers, can't be used across a call, since the ABI only states
2211         the scalar part of the register will be saved and restored.
2212
2213 2009-10-23  Joseph Myers  <joseph@codesourcery.com>
2214
2215         PR c/41673
2216         * alias.c (get_alias_set): Call langhook before returning 0 for
2217         types with structural equality.
2218         * c-common.c (c_common_get_alias_set): Use alias set of element
2219         type for arrays with structural comparison.
2220
2221 2009-10-23  Richard Guenther  <rguenther@suse.de>
2222
2223         PR middle-end/41805
2224         * cfgexpand.c (expand_call_stmt): Use gimple_has_side_effects and
2225         gimple_call_nothrow_p.
2226
2227 2009-10-23  Richard Guenther  <rguenther@suse.de>
2228
2229         PR tree-optimization/41778
2230         * tree-ssa-pre.c (do_regular_insertion): Only insert if a
2231         redundancy along a path in the CFG we want to optimize for speed
2232         is going to be removed.
2233         (execute_pre): Do partial-PRE only if the function is to be
2234         optimized for speed.
2235         (gate_pre): Do not turn off all of PRE when not optimizing a
2236         function for speed.
2237
2238 2009-10-23  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
2239
2240         * builtins.c (fold_builtin_cabs): Use validate_arg().
2241         (fold_builtin_cexp): Fix if-logic.
2242         (fold_builtin_1): Check subtype for BUILT_IN_CIMAG.
2243
2244 2009-10-22  Jeff Law  <law@redhat.com>
2245
2246         * ira-lives.c (process_single_reg_class_operands): Update the
2247         hard reg costs for all the hard registers desired by the
2248         single reg class operand.
2249
2250 2009-10-22  Richard Sandiford  <rdsandiford@googlemail.com>
2251
2252         * simplify-rtx.c (simplify_replace_fn_rtx): Add a fallback case
2253         for rtxes that aren't handled specially.
2254
2255 2009-10-22  Richard Sandiford  <rdsandiford@googlemail.com>
2256
2257         * rtl.h (shallow_copy_rtvec): Declare.
2258         * rtl.c (shallow_copy_rtvec): New function.
2259         * cselib.c (cselib_subst_to_values): Use it.  Only modify an
2260         rtx field if the subrtx has changed.
2261
2262 2009-10-22  Anatoly Sokolov  <aesok@post.ru>
2263
2264         * config/m32c/m32c.c (m32c_function_value_regno_p): New function.
2265         (m32c_function_value): Make static, add new 'outgoing' argument.
2266         (m32c_libcall_value): Make static, add new 'fun' argument.
2267         (TARGET_FUNCTION_VALUE, TARGET_LIBCALL_VALUE): Declare.
2268         * config/m32c/m32c.h (FUNCTION_VALUE, LIBCALL_VALUE): Remove.
2269         (FUNCTION_VALUE_REGNO_P): Redefine, use m32c_function_value_regno_p.
2270         * config/m32c/m32c-protos.h (m32c_function_value_regno_p): Declare.
2271         (m32c_function_value, m32c_libcall_value): Delete declaration.
2272
2273 2009-10-22  Diego Novillo  <dnovillo@google.com>
2274
2275         * Makefile.in (PLUGIN_HEADERS): Add output.h and IPA_UTILS_H.
2276
2277 2009-10-22  Razya Ladelsky  <razya@il.ibm.com>
2278
2279         * tree-cfg.c (gimple_duplicate_sese_tail): Fix typos/indentation/white
2280         space.
2281
2282 2009-10-22  Richard Guenther  <rguenther@suse.de>
2283
2284         * lto-streamer.h (lto_symtab_merge_cgraph_nodes): Declare.
2285         * lto-symtab.c (struct lto_symtab_entry_def): Add node member.
2286         (lto_symtab_merge): Do not merge cgraph nodes here.
2287         (lto_symtab_resolve_can_prevail_p): Simplify.
2288         (lto_symtab_resolve_symbols): Store cgraph node.
2289         (lto_symtab_merge_decls_1): Simplify.  Do not drop non-prevailing
2290         functions from the symtab.
2291         (lto_symtab_merge_cgraph_nodes_1): New function.
2292         (lto_symtab_merge_cgraph_nodes): Likewise.
2293
2294 2009-10-22  Richard Guenther  <rguenther@suse.de>
2295
2296         PR lto/41791
2297         * lto-streamer-out.c (lto_output_location): Stream the
2298         system header flag.
2299         * lto-streamer-in.c (lto_input_location): Likewise.
2300
2301 2009-10-22  Razya Ladelsky  <razya@il.ibm.com>
2302
2303         * cfgloopmanip.c (duplicate_subloops): Export.
2304         * tree-parloops.c (loop_parallel_p): Dump if loop is innermost.
2305         (transform_to_exit_first_loop): Duplicate bbs starting from
2306         header up to loop->latch instead of exit->src.
2307         Initialize control variable to the correct number of iterations.
2308         (gather_scalar_reductions): Do not register double reductions.
2309         (parallelize_loops): Dump which loop is tested.
2310         Indicate whether the parallelized loop is inner or not.
2311         Remove the innermost-loop requirement.
2312         * cfgloop.h (duplicate_subloops): Export.
2313         * tree-cfg.c (add_phi_args_after_redirect): New function.
2314         (gimple_duplicate_sese_tail): Remove the no-subloops constraint.
2315         Call duplicate_subloops.
2316         Update number of iterations at the exit condition.
2317         Don't redirect nexits always to the loop exit.
2318         Redirect copied edges from latch to the loop exit.
2319
2320 2009-10-22  Jan Hubicka  <jh@suse.cz>
2321
2322         * ipa-cp.c (ipcp_read_summary): Remove now invalid FIXME and
2323         flag_ltrans check.
2324         * ipa-inline.c (cgraph_mark_inline_edge,
2325         cgraph_decide_inlining_of_small_function,
2326         cgraph_decide_inlining, inline_read_summary): Disable indirect
2327         inlining for WPA for time being.
2328
2329         PR tree-optimize/40556
2330         * ipa-inline.c (cgraph_early_inlining): Fix iterations condition.
2331
2332 2009-10-22  Richard Guenther  <rguenther@suse.de>
2333
2334         * lto-streamer.h (lto_symtab_clear_resolution): Remove.
2335         * lto-symtab.c (lto_symtab_clear_resolution): Likewise.
2336
2337 2009-10-22  Jan Hubicka  <jh@suse.cz>
2338
2339         PR lto/41730
2340         * ipa-reference.c (has_proper_scope_for_analysis): Add fixme about
2341         global vars.
2342         (check_call): Handle only indirect calls.
2343         (propagate_bits): Update comment.
2344         (write_node_summary_p): Turn bogus check to assert.
2345         (ipa_reference_write_summary): Stream calls_read_all properly.
2346         (ipa_reference_read_summary): Stream in calls_read_all properly.
2347         (read_write_all_from_decl): New function.
2348         (propagate): Handle OVERWRITABLE nodes and external calls here.
2349         * ipa-pre-const.c (check_call): In IPA mode handle indirect
2350         calls only.
2351         (analyze_function): Do not check visibility here.
2352         (add_new_function): We summary OVERWRITABLE too.
2353         (generate_summary): Stream OVERWRITABLE nodes too.
2354         (propagate): Handle external calls and OVERWRITABLE nodes here.
2355         (local_pure_const): Check visibility here.
2356
2357 2009-10-22  Jan Hubicka  <jh@suse.cz>
2358
2359         * ipa-cp.c (ipcp_write_summary, ipcp_read_summary): New functions.
2360         (pass_ipa_cp): Register them.
2361         (ipcp_init_stage): Analyze all functions for whopr/lto.
2362         (ipcp_propagate_stage): Skip external calls.
2363         (ipcp_iterate_stage): Call ipa_update_after_lto_read if needed.
2364         * ipa-reference.c (write_node_summary_p): Fix thinko about
2365         availability.
2366         * cgraphunit.c (ipa_passes): When in lto, ne er produce new summaries;
2367         when in ltrans, skip executing of ipa passes since everything
2368         should've been done.
2369         * ipa-inline.c (cgraph_decide_inlining): Remove FIXMEs.
2370         (inline_generate_summary): Likewise.
2371         (inline_read_summary): New function.
2372         (inline_write_summary): New function.
2373         (pass_ipa_inline): Register new hooks.
2374         * ipa-prop.c: Inlcude lto-streamer.h
2375         (ipa_edge_args_vector): Update declaration.
2376         (ipa_count_arguments, ipa_compute_jump_functions,
2377         ipa_free_edge_args_substructures): Move ipa_edge_args_vector into ggc.
2378         (ipa_write_jump_function, ipa_read_jump_function, ipa_write_node_info,
2379         ipa_read_node_info): New static functions.
2380         (ipa_prop_write_jump_functions, ipa_prop_read_jump_functions): Update.
2381         (duplicate_array): Use xmalloc.
2382         (duplicate_ggc_array): New.
2383         (ipa_edge_duplication_hook): Use it.
2384         (ipa_update_after_lto_read): New function.
2385         * ipa-prop.h (ipa_prop_write_jump_functions,
2386         ipa_prop_read_jump_functions): Declare.
2387         (ipa_pass_through_data, ipa_ancestor_jf_data, ipa_member_ptr_cst,
2388         jump_func_value, ipa_member_ptr_cst, ipa_edge_args): Add GTY markers.
2389         (ipa_edge_args_vector): Move into GGC.
2390         (ipa_check_create_edge_args): Update.
2391         (ipa_update_after_lto_read): New.
2392         * passes.c (ipa_write_summaries_1): When in wpa, do not write
2393         summaries.
2394         (ipa_read_summaries): When in ltrans, so not read summaries.
2395         * lto-streamer.c (lto_get_section_name): Add
2396         LTO_section_jump_functions.
2397         * lto-streamer.h (LTO_section_jump_functions): New section.
2398         (produce_asm): Declare.
2399         * lto-cgraph.c (output_cgraph): Output edges in reverse order.
2400         * lto-streamer-out.c (produce_asm): Export.
2401         * lto-streamer-in.c: Include tree-pass.h
2402         (input_function): Free dominance info when done.
2403         (lto_read_body): Push ipa_inline in ltrans stage.
2404         * gengtype.c (open_base_files): Add ipa-prop.h into includes.
2405         * Makefile.in (GTFILES): Add ipa-prop.h
2406
2407 2009-10-22  Matthias Klose  <doko@ubuntu.com>
2408
2409         * doc/install.texi: Document --enable-browser-plugin.
2410
2411 2009-10-21  Vladimir Makarov  <vmakarov@redhat.com>
2412
2413         * doc/invoke.texi (fira-loop-pressure): Update default value.
2414         * opts.c (decode_options): Remove default value setting for
2415         flag_ira_loop_pressure.
2416         * config/ia64/ia64.c (ia64_override_options): Set
2417         flag_ira_loop_pressure up for -O3.
2418         * config/rs6000/rs6000.c (rs6000_override_options): Ditto.
2419
2420 2009-10-21  Sebastian Pop  <sebastian.pop@amd.com>
2421
2422         PR tree-optimization/41497
2423         * tree-scalar-evolution.c (analyze_evolution_in_loop): Return
2424         chrec_dont_know if the evolution function returned by follow_ssa_edge
2425         is constant in the analyzed loop and is not compatible with the
2426         initial value before the loop.
2427         * tree-chrec.h (no_evolution_in_loop_p): Call STRIP_NOPS.
2428
2429 2009-10-21  Joseph Myers  <joseph@codesourcery.com>
2430
2431         * config/sh/sh.c (nonpic_symbol_mentioned_p): Allow UNSPEC_TPOFF.
2432
2433 2009-10-21  Jakub Jelinek  <jakub@redhat.com>
2434
2435         PR other/25507
2436         * doc/invoke.texi: Document -print-multi-os-directory.
2437
2438 2009-10-21  Jack Howarth  <howarth@bromo.med.uc.edu>
2439
2440         PR c++/41313
2441         * gcc/config/darwin10.h: Use default_emit_unwind_label.
2442         * gcc/config/darwin.c: Disable -freorder-blocks-and-partition
2443         when darwin_emit_unwind_label is used.
2444
2445 2009-10-21  Eric Botcazou  <ebotcazou@adacore.com>
2446
2447         * tree-vect-stmts.c (exist_non_indexing_operands_for_use_p): Tweak
2448         order of checks.
2449
2450 2009-10-20  Richard Henderson  <rth@redhat.com>
2451
2452         * tree-eh.c (lower_try_finally_copy): Do lower_eh_constructs_1
2453         before emit_post_landing_pad.
2454
2455 2009-10-20  Adam Nemet  <anemet@caviumnetworks.com>
2456
2457         * config/mips/mips.c (mips_binary_cost): Add new argument speed.
2458         Use when calling rtx_costs.
2459         (mips_rtx_costs): Fix formatting.  Use argument speed rather than the
2460         global optimize_size.  Pass speed to mips_binary_cost.
2461
2462 2009-10-20  Jakub Jelinek  <jakub@redhat.com>
2463
2464         * config/rs6000/rs6000.c (def_builtin): Set TREE_READONLY instead
2465         of TREE_CONSTANT.
2466
2467 2009-10-20  Richard Sandiford  <rdsandiford@googlemail.com>
2468
2469         * rtl.h (simplify_replace_fn_rtx): Declare.
2470         (wrap_constant, unwrap_constant): Delete.
2471         * cfgexpand.c (unwrap_constant, wrap_constant): Delete.
2472         (expand_debug_expr): Don't call wrap_constant.
2473         * combine.c (rtx_subst_pair): Only define for AUTO_INC_DEC.
2474         (auto_adjust_pair): Fold into...
2475         (propagate_for_debug_subst): ...here.  Only define for AUTO_INC_DEC.
2476         Just return a new value.
2477         (propagate_for_debug): Use simplify_replace_fn_rtx for AUTO_INC_DEC,
2478         otherwise use simplify_replace_rtx.
2479         * cselib.c (wrap_constant): Reinstate old definition.
2480         (cselib_expand_value_rtx_1): Don't wrap constants.
2481         * gcse.c (try_replace_reg): Don't use copy_rtx in the call to
2482         simplify_replace_rtx.
2483         (bypass_block): Fix formatting in calls to simplify_replace_rtx.
2484         * reload1.c (reload): Skip all uses for an insn before adjusting it.
2485         Use simplify_replace_rtx.
2486         * simplify-rtx.c (simplify_replace_fn_rtx): New function,
2487         adapted from...
2488         (simplify_replace_rtx): ...here.  Turn into a wrapper for
2489         simplify_replace_fn_rtx.
2490         (simplify_unary_operation): Don't unwrap CONSTs.
2491         * var-tracking.c (check_wrap_constant): Delete.
2492         (vt_expand_loc_callback): Don't call it.
2493         (vt_expand_loc): Likewise.
2494
2495 2009-10-20  Pascal Obry  <obry@adacore.com>
2496             Eric Botcazou  <ebotcazou@adacore.com>
2497
2498         * config/i386/cygming.h (DWARF_FRAME_REGNUM): Add enclosing parens.
2499
2500 2009-10-20  Michael Matz  <matz@suse.de>
2501
2502         * loop-invariant.c (create_new_invariant): Use different magic number.
2503
2504 2009-10-20  Richard Earnshaw  <rearnsha@arm.com>
2505
2506         PR target/39247
2507         * arm.c (arm_override_options): Forcibly disable hot/cold block
2508         partitioning.
2509
2510 2009-10-20  Alexandre Oliva  <aoliva@redhat.com>
2511
2512         PR debug/41739
2513         * haifa-sched.c (try_ready): Skip debug deps updating speculation
2514         status.
2515
2516 2009-10-20  Richard Guenther  <rguenther@suse.de>
2517
2518         * ggc-page.c: Include cfgloop.h.
2519         (struct max_alignment): Drop long double, add void *.
2520         (extra_order_size_table): Add low non-power-of-two multiples
2521         of MAX_ALIGNMENT.  Drop small type-based entries, add
2522         tree_type, cgraph_node and loop.
2523         * alloc-pool.c (struct allocation_object_def): Drop long double
2524         aligning element.
2525
2526 2009-10-20  Jakub Jelinek  <jakub@redhat.com>
2527
2528         PR debug/41340
2529         * loop-invariant.c (calculate_loop_reg_pressure): Don't count regs
2530         referenced just in DEBUG_INSNs.
2531
2532 2009-10-20  Richard Guenther  <rguenther@suse.de>
2533
2534         PR lto/41761
2535         * gimple.c (gimple_register_type): Make sure we register
2536         the types main variant first.
2537
2538 2009-10-20  Richard Guenther  <rguenther@suse.de>
2539
2540         * gimple.c (gimple_types_compatible_p): Simplify.  Move
2541         cheap checks before hashtable queries.  Add checks for
2542         TYPE_NONALIASED_COMPONENT and DECL_NONADDRESSABLE_P.
2543
2544 2009-10-20  Eric Botcazou  <ebotcazou@adacore.com>
2545
2546         * tree-sra.c (build_ref_for_offset_1) <RECORD_TYPE>: Skip fields
2547         without size or with size that can't be represented as a host integer.
2548
2549 2009-10-20  Alexandre Oliva  <aoliva@redhat.com>
2550
2551         * tree-ssa-dce.c (eliminate_unnecessary_stmts): Don't regard
2552         the removal of a debug stmt as a significant change.
2553
2554 2009-10-20  Wolfgang Gellerich  <gellerich@de.ibm.com>
2555
2556         * config/s390/s390.md: Added agen condition to operand
2557         forwarding bypasses.  Added bypass for early address generation
2558         use of int results.  Updated comments.
2559
2560 2009-10-20  Stefan Dösinger  <stefan@codeweavers.com>
2561
2562         * config/i386/i386.c: Remove signal.h #include.
2563
2564 2009-10-20  Jie Zhang  <jie.zhang@analog.com>
2565
2566         * simplify-rtx.c (simplify_const_unary_operation): Handle SS_ABS.
2567         * doc/rtl.texi: Document ss_abs.
2568
2569 2009-10-19  Jakub Jelinek  <jakub@redhat.com>
2570
2571         * c-common.c (c_parse_error): Handle CPP_UTF8STRING.
2572         * c-lex.c (c_lex_with_flags): Likewise.  Test C_LEX_STRING_NO_JOIN
2573         instead of C_LEX_RAW_STRINGS.
2574         (lex_string): Handle CPP_UTF8STRING.
2575         * c-parser.c (c_parser_postfix_expression): Likewise.
2576         * c-pragma.h (C_LEX_RAW_STRINGS): Rename to ...
2577         (C_LEX_STRING_NO_JOIN): ... this.
2578
2579 2009-10-19  Anatoly Sokolov  <aesok@post.ru>
2580
2581         * config/cris/cris.c (cris_function_value, cris_libcall_value,
2582         cris_function_value_regno_p): New functions.
2583         (cris_promote_function_mode): Update comment.
2584         (TARGET_FUNCTION_VALUE, TARGET_LIBCALL_VALUE): Declare.
2585         * config/cris/cris.h (FUNCTION_VALUE, LIBCALL_VALUE): Remove.
2586         (FUNCTION_VALUE_REGNO_P): Redefine, use cris_function_value_regno_p.
2587         * config/cris/cris-protos.h (cris_function_value_regno_p): Declare.
2588
2589 2009-10-19  Jakub Jelinek  <jakub@redhat.com>
2590
2591         * unwind-dw2.c (execute_stack_op): Fix operand order for
2592         DW_OP_le, DW_OP_ge, DW_OP_lt and DW_OP_gt.
2593
2594 2009-10-19  Eric Botcazou  <ebotcazou@adacore.com>
2595
2596         * gimple-low.c (struct lower_data): Add cannot_fallthru field.
2597         (lower_stmt) <GIMPLE_BIND>: Add comment.
2598         <GIMPLE_COND, GIMPLE_GOTO, GIMPLE_SWITCH>: Set cannot_fallthru to true
2599         and return.
2600         <GIMPLE_RETURN>: Remove the statement if cannot_fallthru is set.
2601         Otherwise lower it and set cannot_fallthru to true.
2602         <GIMPLE_TRY>: Update cannot_fallthru for GIMPLE_TRY_FINALLY and return.
2603         <GIMPLE_CATCH, GIMPLE_EH_FILTER>: Set cannot_fallthru to false.
2604         <GIMPLE_CALL>: Set cannot_fallthru to false for BUILT_IN_SETJMP and
2605         to true for a noreturn call.  Do not remove statements.
2606         <GIMPLE_OMP_PARALLEL, GIMPLE_OMP_TASK>: Set cannot_fallthru to false.
2607         Set cannot_fallthru to false on function exit.
2608         (gimple_stmt_may_fallthru) <GIMPLE_SWITCH>: Really return false.
2609         <GIMPLE_ASSIGN>: Remove.
2610
2611 2009-10-19  Andreas Krebbel  <Andreas.Krebbel@de.ibm.com>
2612
2613         * config/s390/s390.c (s390_z10_optimize_cmp): Don't touch FP compares.
2614
2615 2009-10-19  Andreas Krebbel  <Andreas.Krebbel@de.ibm.com>
2616
2617         * config/s390/s390.c (s390_z10_optimize_cmp): Use
2618         next/prev_active_insn to skip DEBUG_INSNs as well.
2619
2620 2009-10-19  Joseph Myers  <joseph@codesourcery.com>
2621
2622         * config/arm/arm.c (output_move_neon): Use DImode in call to
2623         adjust_address.
2624
2625 2009-10-19  Matthias Klose  <doko@ubuntu.com>
2626
2627         PR target/40134
2628         * config.gcc (arm*-*-linux-*eabi): Use config/t-slibgcc-libgcc.
2629
2630 2009-10-19  Jakub Jelinek  <jakub@redhat.com>
2631
2632         * cfgexpand.c (expand_debug_expr): Fail if bitpos < 0 for non-MEM op0.
2633
2634 2009-10-17  Andy Hutchinson  <hutchinsonandy@gcc.gnu.org>
2635
2636         PR middle-end/41738
2637         * optabs.c (expand_binop): Make mode of shift count expression mode
2638         of shift count not target.
2639         Remove indent nit.
2640
2641 2009-10-17  Eric Botcazou  <ebotcazou@adacore.com>
2642
2643         * tree-nested.c (convert_nonlocal_reference_stmt) <GIMPLE_COND>: New
2644         case.  Force using values to replace references within the statement.
2645         (convert_local_reference_stmt): Likewise.
2646
2647 2009-10-17  Eric Botcazou  <ebotcazou@adacore.com>
2648
2649         * gimple-low.c (lower_stmt) <GIMPLE_CALL>: If the call is noreturn,
2650         remove a subsequent GOTO or RETURN statement.
2651
2652 2009-10-17  Andy Hutchinson  <hutchinsonandy@aim.com>
2653
2654         * config/avr.md (*movqi): Add zero as equally preferable constraint
2655         as general register.
2656         (*movhi): Ditto.
2657
2658 2009-10-17  Eric Botcazou  <ebotcazou@adacore.com>
2659
2660         * print-tree.c (print_node): Fix string for DECL_STRUCT_FUNCTION.
2661
2662 2009-10-17  Richard Guenther  <rguenther@suse.de>
2663
2664         * lto-streamer-in.c (lto_input_location): Try to reuse previous maps.
2665
2666 2009-10-17  Richard Guenther  <rguenther@suse.de>
2667
2668         * lto-streamer-in.c (input_gimple_stmt): Fixup FIELD_DECL
2669         operands in COMPONENT_REFs.
2670
2671 2009-10-17  Anatoly Sokolov  <aesok@post.ru>
2672
2673         * targhooks.c (default_libcall_value): Don't use LIBCALL_VALUE macro
2674         if not defined. Change type of second argument to const_rtx.
2675         (default_function_value): Call gcc_unreachable if FUNCTION_VALUE
2676         macro not defined.
2677         * targhooks.h (default_libcall_value): Update prototype.
2678         * target.h (struct gcc_target): Change type of second argument of
2679         libcall_value to const_rtx.
2680         * config/arm/arm.c (arm_libcall_value): Change type of second argument
2681         to const_rtx.
2682         (arm_libcall_uses_aapcs_base): Change type of argument to const_rtx.
2683         * doc/tm.texi (TARGET_LIBCALL_VALUE):  Revise documentation.
2684
2685 2009-10-17  Jakub Jelinek  <jakub@redhat.com>
2686
2687         PR debug/40521
2688         * debug.h (struct gcc_debug_hooks): Add assembly_start hook.
2689         * cgraphunit.c (cgraph_optimize): Call it.
2690         * dwarf2out.c (dwarf2out_init): Move .cfi_sections printing into...
2691         (dwarf2out_assembly_start): ... here.  New hook.
2692         (dwarf2out_debug_hooks): Add dwarf2out_assembly_start.
2693         * debug.c (do_nothing_debug_hooks): Do nothing for assembly_start
2694         hook.
2695         * dbxout.c (dbx_debug_hooks, xcoff_debug_hooks): Likewise.
2696         * sdbout.c (sdb_debug_hooks): Likewise.
2697         * vmsdbgout.c (vmsdbg_debug_hooks): Add vmsdbgout_assembly_start.
2698         (vmsdbgout_assembly_start): New hook.
2699
2700 2009-10-17  Alexandre Oliva  <aoliva@redhat.com>
2701
2702         * rtl.h (RTL_LOCATION): Fix typo.
2703
2704 2009-10-17  Alexandre Oliva  <aoliva@redhat.com>
2705
2706         * print-rtl.c (print_rtx): Print locators in asm_operands
2707         and asm_input.
2708
2709 2009-10-17  Alexandre Oliva  <aoliva@redhat.com>
2710
2711         PR debug/41535
2712         * sched-deps.c (depl_on_debug_p): New.
2713         (attach_dep_link): Reject debug deps before nondebug deps.
2714         (add_to_deps_list): Insert debug deps after nondebug deps.
2715         (sd_lists_empty_p): Stop at first nonempty list.  Disregard debug
2716         deps.
2717         (sd_add_dep): Do not reject debug deps.
2718         (add_insn_mem_dependence): Don't count debug deps.
2719         (remove_from_deps): Likewise.
2720         (sched_analyze_2): Set up mem deps on debug insns.
2721         (sched_analyze_insn): Record reg uses for deps on debug insns.
2722         * haifa-sched.c (schedule_insn): Reset deferred debug insn.  Don't
2723         try_ready nondebug insn after debug insn.
2724         * ddg.c (create_ddg_dep_from_intra_loop_link,
2725         create_ddg_dep_no_link): Don't reject debug deps.
2726
2727 2009-10-16  Richard Guenther  <rguenther@suse.de>
2728
2729         * lto-symtab.c (merge_incomplete_and_complete_type): Remove.
2730         (maybe_merge_incomplete_and_complete_type): Likewise.
2731         (lto_symtab_merge): Do not call them.  Do not warn for
2732         complete vs. incomplete compatible types.
2733         (lto_symtab_merge_decls_2): Simplify.
2734         * gimple.c (gimple_force_type_merge): Remove.
2735         (gimple_types_compatible_p): Make it static.
2736         * gimple.h (gimple_force_type_merge): Remove.
2737         (gimple_types_compatible_p): Likewise.
2738
2739 2009-10-16  Jakub Jelinek  <jakub@redhat.com>
2740
2741         * dwarf2out.c (mem_loc_descriptor) <case ZERO_EXTRACT>: Cast
2742         DWARF2_ADDR_SIZE to int to avoid signed vs. unsigned warnings.
2743
2744 2009-10-16  Richard Guenther  <rguenther@suse.de>
2745
2746         PR tree-optimization/41728
2747         * tree-ssa-dom.c (optimize_stmt): Mark the stmt modified
2748         if fold_stmt did anything.
2749
2750 2009-10-16  Richard Guenther  <rguenther@suse.de>
2751
2752         PR lto/41715
2753         * lto-streamer-in.c (lto_input_tree_ref): Revert last change.
2754         (maybe_fixup_handled_component): New function.
2755         (input_gimple_stmt): Fixup mismatched decl replacements.
2756
2757 2009-10-16  Richard Guenther  <rguenther@suse.de>
2758
2759         PR lto/41713
2760         * lto-streamer-out.c (lto_output_tree_ref): Handle DEBUG_EXPR_DECL
2761         the same as VAR_DECL.
2762
2763 2009-10-16  Richard Guenther  <rguenther@suse.de>
2764
2765         * gimple.c (iterative_hash_gimple_type): For integer types
2766         also hash their minimum and maximum values and the string flag.
2767         For array types hash their domain and the string flag.
2768
2769 2009-10-16  Richard Guenther  <rguenther@suse.de>
2770
2771         * gimple.c (gimple_types_compatible_p): Restrict completing
2772         types to record or unions.  Simplify completion.
2773         Do not merge records or unions with different
2774         TYPE_STRUCTURAL_EQUALITY_P tag.
2775         (iterative_hash_gimple_type): Restrict non-recursing into
2776         pointer targets for records and unions.
2777
2778 2009-10-15  Jakub Jelinek  <jakub@redhat.com>
2779
2780         PR debug/41717
2781         * cfgexpand.c (expand_debug_expr): Handle CONJ_EXPR.
2782         * dwarf2out.c (mem_loc_descriptor): Don't handle
2783         POST_INT/POST_DEC/POST_MODIFY like SUBREG.  For SUBREG
2784         punt if it is not lowpart subreg or if inner mode isn't
2785         MODE_INT.
2786
2787 2009-10-16  Andreas Krebbel  <Andreas.Krebbel@de.ibm.com>
2788
2789         * config/s390/s390.c (s390_z10_optimize_cmp): Skip notes when
2790         investigating previous or next insns.
2791
2792 2009-10-16  Eric Botcazou  <ebotcazou@adacore.com>
2793
2794         * tree-sra.c (build_ref_for_offset_1): Update comment.
2795
2796 2009-10-16  Wolfgang Gellerich  <gellerich@de.ibm.com>
2797
2798         * config/s390/s390.md (atype): Added missing values.
2799
2800 2009-10-15  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
2801
2802         PR target/41702
2803         * pa.md (casesi): Use sign extended index in call to gen_casesi64p.
2804         (casesi64p): Update pattern to reflect above.
2805
2806 2009-10-15  Steve Ellcey  <sje@cup.hp.com>
2807
2808         PR rtl-optimization/41697
2809         * sel-sched-ir.h (_eligible_successor_edge_p): Check successor count.
2810
2811 2009-10-15  Michael Meissner  <meissner@linux.vnet.ibm.com>
2812
2813         PR target/23983
2814         * config/rs6000/predicates.md: Update copyright year.
2815         * config/rs6000/altivec.md: Ditto.
2816
2817         * config/rs6000/t-rs6000 (TM_H): Add rs6000-builtin.def.
2818         (MD_INCLUDES): Add a2.md.
2819
2820         * config/rs6000/rs6000.c (rs6000_builtin_decls): Change
2821         RS6000_BUILTIN_COUNT to MAX_RS6000_BUILTINS.
2822         (builtin_classify): New static vector to classify various builtins
2823         to get the tree attributes correct.
2824         (def_builtin): Set the attributes of builtins based on what the
2825         builtin does (i.e. memory operation, floating point, saturation
2826         need special attributes, others are pure functions).
2827
2828         * config/rs6000/rs6000.h (enum rs6000_btc): New enum to classify
2829         the builtins.
2830         (enum rs6000_builtins): Include rs6000-builtin.def to define the
2831         builtins.  Change the end marker to MAX_RS6000_BUILTINS from
2832         RS6000_BUILTIN_COUNT.
2833         (rs6000_builtin_decls): Change RS6000_BUILTIN_COUNT to
2834         MAX_RS6000_BUILTINS.
2835
2836         * config/rs6000/rs6000-builtin.def: New file that combines the
2837         builtin enumeration name and attributes.
2838
2839 2009-10-15  H.J. Lu  <hongjiu.lu@intel.com>
2840
2841         * config/i386/linux.h (ASM_SPEC): Add --32.
2842
2843 2009-10-15  Jakub Jelinek  <jakub@redhat.com>
2844
2845         * dwarf2out.c (dwarf_tag_name): Handle DW_TAG_rvalue_reference_type
2846         and DW_TAG_template_alias.
2847         (dwarf_attr_name): Handle DW_AT_main_subprogram,
2848         DW_AT_data_bit_offset, DW_AT_const_expr, DW_AT_enum_class,
2849         DW_AT_linkage_name, DW_AT_GNU_guarded_by, DW_AT_GNU_pt_guarded_by,
2850         DW_AT_GNU_guarded, DW_AT_GNU_pt_guarded, DW_AT_GNU_locks_excluded,
2851         DW_AT_GNU_exclusive_locks_required, DW_AT_GNU_shared_locks_required
2852         and DW_AT_GNU_odr_signature.
2853         (dwarf_form_name): Handle DW_FORM_sec_offset, DW_FORM_exprloc,
2854         DW_FORM_flag_present and DW_FORM_ref_sig8.
2855         (output_signature): Only print name on the first byte.
2856         (output_die): Likewise for dw_val_class_data8.
2857
2858 2009-10-15  Alexander Monakov  <amonakov@ispras.ru>
2859
2860         * doc/invoke.texi: Clarify that most optimizations are not enabled
2861         without -O.
2862
2863 2009-10-15  Richard Guenther  <rguenther@suse.de>
2864
2865         PR lto/41668
2866         * gimple.c (compare_type_names_p): Handle anonymous names
2867         differently based on new mode argument.
2868         (gimple_types_compatible_p): For structs also compare the tags.
2869         (iterative_hash_type_name): Rename to ...
2870         (iterative_hash_name): ... this.  Hash all names.
2871         (iterative_hash_gimple_type): Fix hashing the struct tag of
2872         pointer targets.  Hash field decl names.
2873
2874 2009-10-15  Richard Guenther  <rguenther@suse.de>
2875
2876         PR lto/41669
2877         * gimple.c (gimple_get_alias_set): Avoid recursing on
2878         invalid type topology.
2879
2880 2009-10-15  Andrew Pinski  <andrew_pinski@playstation.sony.com>
2881
2882         * config/spu/spu.c (get_branch_target): Use extract_asm_operands.
2883
2884 2009-10-15  Richard Guenther  <rguenther@suse.de>
2885
2886         * tree.c (free_lang_data_in_decl): Free DECL_FCONTEXT.
2887
2888 2009-10-15  Jakub Jelinek  <jakub@redhat.com>
2889
2890         * config/rs6000/option-defaults.h (OPTION_DEFAULT_SPECS): Don't
2891         add --with-tune{,-32,-64} configured default for -mtune if explicit
2892         -mcpu is used.
2893
2894 2009-10-14  Daniel Gutson  <dgutson@codesourcery.com>
2895
2896         * config/arm/neon.md (neon_vshll_n<mode>): Checking Bounds fixed.
2897
2898 2009-10-14  DJ Delorie  <dj@redhat.com>
2899
2900         * config/h8300/h8300.c (F): New.
2901         (Fpa): New.
2902         (h8300_emit_stack_adjustment): Call them.
2903         (push): Likewise.
2904         (h8300_push_pop): Likewise.
2905         (h8300_expand_prologue): Likewise.
2906         * config/h8300/h8300.h (DWARF2_DEBUGGING_INFO): Define.
2907         (MUST_USE_SJLJ_EXCEPTIONS): Define.
2908         (INCOMING_RETURN_ADDR_RTX): Define.
2909         (INCOMING_FRAME_SP_OFFSET): Define.
2910         (DWARF_CIE_DATA_ALIGNMENT): Define.
2911
2912 2009-10-14  Jakub Jelinek  <jakub@redhat.com>
2913
2914         * stor-layout.c (place_field): Don't emit -Wpadded warnings for
2915         fields in builtin structs.
2916         (finalize_record_size): Likewise.
2917
2918 2009-10-14  Richard Guenther  <rguenther@suse.de>
2919
2920         * gimple.c (gtc_ob): New global.
2921         (struct type_pair_d): Replace pointers with type UIDs.
2922         (type_pair_hash): Adjust.
2923         (type_pair_eq): Likewise.
2924         (lookup_type_pair): Likewise.  Allocate from an obstack.
2925         (gimple_force_type_merge): Adjust.
2926         (gimple_types_compatible_p): Likewise.
2927         (free_gimple_type_tables): Free the obstack.
2928
2929 2009-10-14  Jakub Jelinek  <jakub@redhat.com>
2930
2931         * tree-parloops.c (separate_decls_in_region_debug_bind): Drop debug
2932         stmts setting DEBUG_EXPR_DECLs.
2933
2934         * cfgexpand.c (expand_debug_expr): Ignore zero-length bitfields.
2935         Don't crash if mode1 is VOIDmode.
2936
2937 2009-09-26  Vladimir Makarov  <vmakarov@redhat.com>
2938
2939         * params.def (PARAM_IRA_LOOP_RESERVED_REGS): New.
2940         * params.h (IRA_LOOP_RESERVED_REGS): New.
2941         * tree-pass.h (pass_subregs_of_mode_init,
2942         pass_subregs_of_mode_finish): Remove.
2943         * passes.c (pass_subregs_of_mode_init,
2944         pass_subregs_of_mode_finish): Remove.
2945         (pass_reginfo_init): Move before loop optimizations.
2946         * config/i386/i386.h (STACK_REG_COVER_CLASS): Define.
2947         * common.opt (fira-loop-pressure): New.
2948         * toplev.h (flag_ira_loop_pressure): New.
2949         * rtl.h (init_subregs_of_mode, finish_subregs_of_mode): New externals.
2950         * reginfo.c (init_subregs_of_mode, finish_subregs_of_mode):
2951         Make external and void type functions.
2952         (gate_subregs_of_mode_init, pass_subregs_of_mode_init,
2953         pass_subregs_of_mode_finish): Remove.
2954         * ira-costs.c (init_costs): Call init_subregs_of_mode.
2955         * regmove.c: Include ira.h.
2956         (regmove_optimize): Call ira_set_pseudo_classes after IRA based
2957         register pressure calculation in loops.
2958         * loop-invariant.c: Include REGS_H and ira.h.
2959         (struct loop_data): New members max_reg_pressure, regs_ref, and
2960         regs_live.
2961         (struct invariant): New member orig_regno.
2962         (curr_loop): New variable.
2963         (find_exits): Initialize regs_ref and regs_live.
2964         (create_new_invariant): Initialize orig_regno.
2965         (get_cover_class_and_nregs): New.
2966         (get_inv_cost): Make aregs_needed an array.  Use regs_needed as an
2967         array.  Add code for flag_ira_loop_pressure.
2968         (gain_for_invariant): Make new_regs an array.  Add code for
2969         flag_ira_loop_pressure.
2970         (best_gain_for_invariant): Ditto.
2971         (set_move_mark): New parameter gain.  Use it for debugging output.
2972         (find_invariants_to_move): Make regs_needed and new_regs an array.
2973         Add code for flag_ira_loop_pressure.
2974         (move_invariant_reg): Set up orig_regno.
2975         (move_invariants): Set up reg classes for pseudos for
2976         flag_ira_loop_pressure.
2977         (free_loop_data): Clear regs_ref and regs_live.
2978         (curr_regs_live, curr_reg_pressure, regs_set, n_regs_set,
2979         get_regno_cover_class, change_pressure, mark_regno_live,
2980         mark_regno_death, mark_reg_store, mark_reg_clobber,
2981         mark_reg_death, mark_ref_regs, calculate_loop_reg_pressure): New.
2982         (move_loop_invariants): Calculate pressure.  Initialize curr_loop.
2983         * ira.c (ira): Call ira_set_pseudo_classes after IRA based
2984         register pressure calculation in loops if new regs were added.
2985         Call finish_subregs_of_mode.
2986         * opts.c (decode_options): Set up flag_ira_loop_pressure.
2987         * Makefile.in (loop-invariant.o): Add ira.h.
2988         (regmove.o): Ditto.
2989         * doc/invoke.texi (-fira-loop-pressure, ira-loop-reserved-regs):
2990         Describe.
2991         * doc/tm.texi (STACK_REG_COVER_CLASS): Describe.
2992
2993 2009-10-14  Richard Guenther  <rguenther@suse.de>
2994
2995         * lto-symtab.c (lto_symtab_compatible): Fold in ...
2996         (lto_symtab_merge): ... here.  Rewrite both to take the
2997         prevailing and a to-be-merged entry and to queue diagnostics properly.
2998         (lto_symtab_resolve_replaceable_p): New predicate for
2999         symbol resolution.
3000         (lto_symtab_resolve_can_prevail_p): Likewise.
3001         (lto_symtab_resolve_symbols): Rewrite.  Fold in code that
3002         handles merging commons by choosing the largest decl.  Fold
3003         in code that gives ODR errors.
3004         (lto_symtab_merge_decls_2): Simplify a lot.  Emit queued
3005         diagnostics here.
3006         (lto_symtab_merge_decls_1): Re-structure.  Deal with the
3007         case of no prevailing decl here.  Diagnose mismatches
3008         in object types here.  Drop all but the prevailing decls.
3009         (lto_symtab_prevailing_decl): Return the single prevailing decl.
3010         * lto-streamer-in.c (lto_input_tree_ref): Deal with
3011         VIEW_CONVERT_EXPRs in decl slots.  Unshare the tree in this case.
3012
3013 2009-10-14  Richard Guenther  <rguenther@suse.de>
3014
3015         PR lto/41521
3016         * lto-streamer-in.c (input_bb): Replace debug stmts with
3017         nops instead of dropping them.
3018
3019 2009-10-14  Nick Clifton  <nickc@redhat.com>
3020
3021         * gcc/doc/extended.texi: Replace the dash character with @minus{}
3022         in situations where it is being used as a minus symbol.
3023         * gcc/doc/tm.texi: Likewise.
3024         * gcc/doc/md.texi: Likewise.
3025
3026 2009-10-14  Jakub Jelinek  <jakub@redhat.com>
3027
3028         PR preprocessor/41543
3029         * input.h (BUILTINS_LOCATION): Change to 1 from 2.
3030         Assert BUILTINS_LOCATION < RESERVED_LOCATION_COUNT.
3031         * tree.c: Include intl.h.
3032         (expand_location): Handle BUILTINS_LOCATION.
3033         * Makefile.in (tree.o): Depend on intl.h.
3034
3035         PR debug/41695
3036         * dwarf2out.c (dwarf2out_var_location): Always clear
3037         last_postcall_label when changing last_label.
3038
3039 2009-10-14  Pascal Obry  <obry@adacore.com>
3040
3041         * gcc.c (DEFAULT_SWITCH_CURTAILS_COMPILATION): Add -E.
3042         (process_command): Handle -E as done with -c and -S.  Do not add
3043         the target executable suffix to the output file when -E is used.
3044         (main): Adjust error message accordingly.
3045
3046 2009-10-14  Alexandre Oliva  <aoliva@redhat.com>
3047
3048         PR debug/41343
3049         PR debug/41447
3050         PR debug/41264
3051         PR debug/41338
3052         * tree.c (tree_node_structure_for_code): DEBUG_EXPR_DECL uses
3053         decl with rtl.
3054         (tree_code_size): Likewise.
3055
3056 2009-10-13  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
3057
3058         * builtins.c (fold_builtin_1): Support complex "arc" functions.
3059         * real.h (HAVE_mpc_arc): Define.
3060
3061 2009-10-14  Kaz Kojima  <kkojima@gcc.gnu.org>
3062
3063         * config/sh/sh.c (TARGET_BUILTIN_DECL): Define.
3064         (struct builtin_description): Add fndecl field.
3065         (bdesc): Remove const qualifier.  Update initializer.
3066         (sh_media_init_builtins): Remove const qualifier for d.  Record
3067         the result of add_builtin_function to the fndecl field.
3068         (sh_builtin_decl): New.
3069         (sh_media_builtin_decl): New.
3070
3071 2009-10-14  Hans-Peter Nilsson  <hp@axis.com>
3072
3073         PR target/38948
3074         * config/cris/cris.h (SECONDARY_RELOAD_CLASS): Handle reload
3075         requests between special registers.
3076
3077 2009-10-13  Eric Botcazou  <ebotcazou@adacore.com>
3078
3079         * dwarf2out.c (mem_loc_descriptor): Accept UNGT as well.
3080
3081 2009-10-13  Richard Henderson  <rth@redhat.com>
3082
3083         PR tree-optimization/41377
3084         * tree-eh.c (unsplit_eh): Propagate degenerate PHIs.
3085         (cleanup_empty_eh_merge_phis): New change_region parameter;
3086         pass it on to redirect_eh_edge_1.  Update callers.
3087         (cleanup_empty_eh_unsplit): Don't require an existing EH label
3088         at the destination block.
3089
3090 2009-10-13  Basile Starynkevitch  <basile@starynkevitch.net>
3091
3092         * passes.c (register_pass): Replaced gcc_unreachable by
3093         fatal_error on failure. Mentions plugins in comments & messages.
3094
3095 2009-10-13  Jakub Jelinek  <jakub@redhat.com>
3096
3097         PR target/41693
3098         * rtl.h (DEBUG_EXPR_TREE_DECL): Define.
3099         * sched-vis.c (print_value): Use it.
3100         * cselib.c (cselib_hash_rtx): Likewise.
3101         * print-rtl.c (print_rtx): Likewise.
3102         * cfgexpand.c (expand_debug_rtx): Likewise.
3103         * var-tracking.c (vt_expand_loc_callback): Likewise.
3104
3105 2009-10-13  Richard Guenther  <rguenther@suse.de>
3106
3107         PR lto/41565
3108         * opts.c (handle_option): Split out code to handle setting
3109         the options flag var ...
3110         (set_option): ... here.
3111         * opts.h (set_option): Declare.
3112         * lto-opts.c (register_user_option_p): Include -fexceptions
3113         and all position independent code variants.
3114         (handle_common_option): Remove.
3115         (lto_reissue_options): Use set_option.
3116
3117 2009-10-13  Martin Jambor  <mjambor@suse.cz>
3118
3119         PR tree-optimization/41661
3120         * ipa-prop.c (compute_complex_pass_through): Allow only operations
3121         that are tcc_comparisons or do not change the type in any
3122         un-usleless way.
3123         * ipa-cp.c (ipcp_lattice_from_jfunc): Request boolean type when
3124         folding tcc_comparison operations.
3125
3126 2009-10-13  Andreas Krebbel  <Andreas.Krebbel@de.ibm.com>
3127
3128         * config/s390/s390.c (s390_encode_section_info): Handle BLKmode
3129         properly.
3130
3131 2009-10-12  Alexandre Oliva  <aoliva@redhat.com>
3132
3133         PR debug/41343
3134         PR debug/41447
3135         PR debug/41264
3136         PR debug/41338
3137         * tree.def (DEBUG_EXPR_DECL): New.
3138         * rtl.def (DEBUG_EXPR): New.
3139         * gengtype.c (adjust_field_rtx_def): Handle it.
3140         * tree-ssa.c (propagate_var_def_into_debug_stmts): Rename to...
3141         (insert_debug_temp_for_var_def): ... this.  Drop support for
3142         moving.  Take iterator for def stmt; insert debug stmt before it.
3143         Scan early for use count and kind in debug stmts.
3144         (propagate_defs_into_debug_stmts): Rename to...
3145         (insert_debug_temps_for_defs): ... this.  Likewise.
3146         * tree.h (DEBUG_TEMP_UID): New.
3147         * tree.c (next_debug_decl_uid): New.
3148         (make_node_stat): Count debug decls separately.
3149         (copy_node_stat): Likewise.
3150         * cfgexpand.c (expand_debug_expr): Handle DEBUG_EXPR_DECL.
3151         * var-tracking.c (dv_is_decl_p): Recognize it.
3152         (VALUE_RECURSED_INTO): Apply to DEBUG_EXPRs too.
3153         (track_expr_p): Track expanded DEBUG_EXPR_DECLs.
3154         (vt_expand_loc_callback): Expand DEBUG_EXPRs.
3155         (emit_note_insn_var_location): Don't emit notes for DEBUG_EXPR_DECLs.
3156         * cselib.c (rtx_equal_for_cselib_p): Handle DEBUG_EXPR.
3157         (cselib_hash_rtx): Likewise.
3158         (cselib_expand_value_rtx_1): Use callback for DEBUG_EXPR.
3159         * tree-ssa-operands.c (get_expr_operands): Skip DEBUG_EXPR_DECLs in
3160         debug bind stmts.
3161         * emit-rtl.c (verify_rtx_sharing): Handle DEBUG_EXPR and VALUE.
3162         (copy_rtx_if_shared_1, reset_used_flags, set_used_flags): Likewise.
3163         * rtl.c (copy_rtx): Likewise.
3164         (rtx_equal_p_cb, rtx_equal_p): Handle DEBUG_EXPR.
3165         * print-rtl.c (print_rtx): Likewise.
3166         * sched-vis.c (print_value): Likewise.
3167         (print_insn): Handle DEBUG_EXPR_DECL.
3168         * tree-dump.c (dequeue_and_dump): Likewise.
3169         * tree-pretty-print.c (dump_decl_name, dump_generic_node): Likewise.
3170         * gimple-iterator (gsi_replace): Check for same lhs.
3171         (gsi_remove): Insert debug temps.
3172         * tree-ssa-loop-im.c (rewrite_reciprocal): Replace with same lhs.
3173         (move_computations_stmt): Drop explicit propagation into debug stmts.
3174         (rewrite_bittest): Likewise.  Use gsi_remove for propagation.
3175         * tree-ssa-reassoc.c (rewrite_expr_tree, linearize_expr): Likewise.
3176         * tree-ssa-sink.c (statement_sink_location): Likewise.
3177         * tree-ssa-forwprop (forward_propagate_addr_expr): Likewise.
3178         * tree-ssanames.c (release_ssa_name): Adjust for rename.
3179         * tree-flow.h: Likewise.
3180         * tree-ssa-dce.c (mark_stmt_if_obviously_necessary): Don't mark
3181         debug temps without values.
3182         (eliminate_unnecessary_stmts): Don't discard just-inserted
3183         debug stmts.
3184
3185 2009-10-12  Hans-Peter Nilsson  <hp@axis.com>
3186
3187         PR target/26515
3188         * config/cris/cris.md (andu): Check that operand 1 is one of the
3189         general registers.  Fix typo in head comment.
3190
3191 2009-10-12  Stefan Dösinger  <stefan@codeweavers.com>
3192
3193         * config/i386/i386.md (vswapmov): New.
3194         * config/i386/i386.c (ix86_handle_fndecl_attribute): New.
3195         (ix86_function_ms_hook_prologue): New.
3196         (ix86_expand_prologue): Handle ms_hook_prologue attribute.
3197         * configure.ac: Test for swap suffix support in as.
3198         * configure: Rebuild.
3199
3200 2009-10-12  Jakub Jelinek  <jakub@redhat.com>
3201
3202         PR target/41680
3203         * config/i386/i386.md (split after *testqi_ext_3_rex64): Only narrow
3204         paradoxical subregs to prevent partial register stalls if the inner
3205         mode is integer mode.
3206
3207 2009-10-12  Uros Bizjak  <ubizjak@gmail.com>
3208
3209         * config/i386/i386.md (*setcc_<mode>_2): Remove insn pattern.
3210
3211 2009-10-12  Dodji Seketeli  <dodji@redhat.com>
3212
3213         PR c++/41570
3214         * gcc/dwarf2out.c (template_parameter_pack_die,
3215         gen_formal_parameter_pack_die): Use add_name_and_src_coords_attributes.
3216
3217 2009-10-12  Alexandre Oliva  <aoliva@redhat.com>
3218
3219         PR debug/41616
3220         * tree-into-ssa.c (insert_phi_nodes_for): Build debug bind stmts
3221         on updates too.
3222         (maybe_register_def): Likewise.  Take stmt iterator.
3223         (rewrite_update_stmt): Take stmt iterator and pass it on.
3224         (rewrite_update_enter_block): Pass stmt iterator.
3225
3226 2009-10-11  Andrew Pinski  <andrew_pinski@playstation.sony.com>
3227
3228         * config/spu/spu.c (TARGET_BUILTIN_DECL): Define.
3229         (spu_builtin_decl): New function.
3230
3231 2009-10-12  Uros Bizjak  <ubizjak@gmail.com>
3232
3233         * config/i386/i386.md (SWIM): New mode iterator.
3234         (mov<mode>cc): Macroize expander from mov{qi,hi,si,di}cc patterns
3235         using SWIM mode iterator.
3236         (x86_mov<mode>cc_0_m1): Macroize insn from x86_mov{si,di}cc_0_m1
3237         patterns using SWI48 mode iterator.
3238         (*x86_mov<mode>cc_0_m1_se):  Macroize insn from
3239         *x86_mov{si,di}cc_0_m1_se patterns using SWI48 mode iterator.
3240         (*x86_mov<mode>cc_0_m1_neg): New insn pattern.
3241         (*mov<mode>cc_noc): Macroize insn from *mov{hi,si,di}cc_noc
3242         patterns using SWI248 mode iterator.
3243         * config/i386/i386.c (ix86_expand_int_movcc): Update the call to
3244         gen_x86_movdicc_0_m1_rex64 for renamed function
3245
3246 2009-10-11  Jose Ruiz  <ruiz@adacore.com>
3247             Eric Botcazou  <ebotcazou@adacore.com>
3248
3249         PR target/33743
3250         * config/sparc/sol2.h (MD_UNWIND_SUPPORT): Define.
3251         * config/sparc/sol2-unwind.h: New file.
3252
3253 2009-10-11  Olivier Hainque  <hainque@adacore.com>
3254             Eric Botcazou  <ebotcazou@adacore.com>
3255
3256         PR target/33743
3257         * config/i386/sol2.h (MD_UNWIND_SUPPORT): Define.
3258         * config/i386/sol2-unwind.h: New file.
3259
3260 2009-10-11  H.J. Lu  <hongjiu.lu@intel.com>
3261
3262         PR target/41665
3263         * config/i386/i386.md (addsi_1_zext): Get the proper second
3264         operand for lea.
3265
3266 2009-10-11  Richard Sandiford  <rdsandiford@googlemail.com>
3267
3268         * simplify-rtx.c (simplify_replace_rtx): Use rtx_equal_p for
3269         all OLD_RTXes, not just REGs.  Use copy_rtx to create the
3270         replacement value.
3271
3272 2009-10-11  Richard Guenther  <rguenther@suse.de>
3273
3274         * gimple.c (iterative_hash_type_name): Do not handle special
3275         anonymous names.
3276
3277 2009-10-11  Uros Bizjak  <ubizjak@gmail.com>
3278
3279         * config/i386/i386.md (*setcc_di_1): New insn_and_split pattern.
3280         (*setcc_si_1_and): Ditto.
3281         (*setcc_si_1_movzbl): Ditto.
3282         (*setcc_<mode>_2): Ditto.
3283         (*setcc_qi): Rename from *setcc_1.
3284         (*setcc_qi_slp): Rename from *setcc_2.
3285
3286         (*zero_extendqihi2_movzbw_and splitter): Use ix86_expand_clear.
3287         (*zero_extendqisi2_movzbw_and splitter): Ditto.
3288
3289         * config/i386/i386.c (ix86_expand_clear): Remove reload_completed from
3290         "if" condition, there is already assert with reload_completed present.
3291
3292 2009-10-11  Gerald Pfeifer  <gerald@pfeifer.com>
3293
3294         * plugin.c (try_init_one_plugin): Improve constness of variable err.
3295
3296 2009-10-10  Gerald Pfeifer  <gerald@pfeifer.com>
3297
3298         * doc/install.texi (Final install): Refer to
3299         http://gcc.gnu.org/bugs/ for bug reporting.
3300
3301 2009-10-10  Peter Bergner  <bergner@vnet.ibm.com>
3302
3303         * configure.ac: Add test for dci instruction.
3304         * configure: Regenerate.
3305         * config.in: Likewise.
3306         * config.gcc: Handle --with-cpu=476 and --with-cpu=476fp.
3307         * doc/invoke.texi: Add cpu_type 476 and 476fp.
3308         (-mmulhw): Add 476 to description.
3309         (-mdlmzb): Likewise.
3310         * config/rs6000/t-fprules (MULTILIB_MATCHES_FLOAT): Include -mcpu=476.
3311         * config/rs6000/rs6000.c (processor_costs): Add ppc476_cost.
3312         (processor_target_table): Add 476 and 476fp entries.
3313         (rs6000_override_options): Use ppc476_cost for PROCESSOR_PPC476.
3314         (rs6000_issue_rate): Add CPU_PPC476.
3315         * config/rs6000/rs6000.h (ASM_CPU_476_SPEC): Define.
3316         (ASM_CPU_SPEC): Pass %(asm_cpu_476) for -mcpu=476 and -mcpu=476fp.
3317         (processor_type): Add PROCESSOR_PPC476.
3318         (EXTRA_SPECS): Add asm_cpu_476 string.
3319         * config/rs6000/rs6000.md (define_attr "type"): Add isel attribute.
3320         (define_attr "cpu"): Add ppc476.
3321         Include 476.md.
3322         Update comments for 476.
3323         (isel_signed, isel_unsigned): Change to use "isel" type attribute.
3324         * config/rs6000/vxworks.h (CPP_SPEC): Handle 464 and 476.
3325         Update copyright year.
3326         * config/rs6000/476.md: New file.
3327         * config/rs6000/40x.md: Add description for "isel" attribute.
3328         Update copyright year.
3329         * config/rs6000/440.md: Likewise.
3330         * config/rs6000/603.md: Likewise.
3331         * config/rs6000/6xx.md: Likewise.
3332         * config/rs6000/7450.md: Likewise.
3333         * config/rs6000/7xx.md: Likewise.
3334         * config/rs6000/8540.md: Likewise.
3335         * config/rs6000/cell.md: Likewise.
3336         * config/rs6000/e300c2c3.md: Likewise.
3337         * config/rs6000/e500mc.md: Likewise.
3338         * config/rs6000/mpc.md: Likewise.
3339         * config/rs6000/power4.md: Likewise.
3340         * config/rs6000/power5.md: Likewise.
3341         * config/rs6000/power6.md: Likewise.
3342         * config/rs6000/power7.md: Likewise.
3343         * config/rs6000/rios1.md: Likewise.
3344         * config/rs6000/rios2.md: Likewise.
3345         * config/rs6000/rs64.md: Likewise.
3346
3347 2009-10-10  Richard Guenther  <rguenther@suse.de>
3348
3349         PR tree-optimization/41654
3350         * tree-ssa-ifcombine.c (ifcombine_ifandif): Properly canonicalize
3351         a cond expr before calling gimple_cond_set_condition_from_tree.
3352         (ifcombine_iforif): Likewise.
3353
3354 2009-10-09  Ian Lance Taylor  <iant@google.com>
3355
3356         * configure.ac: Use AC_SEARCH_LIBS to find dlopen.
3357         * configure: Rebuild.
3358
3359 2009-10-09  Neil Vachharajani <nvachhar@google.com>
3360
3361         * doc/cpp.texi (Other Directives): Do not list #ident and #sccs as
3362         deprecated.
3363
3364 2009-10-09  Richard Guenther  <rguenther@suse.de>
3365
3366         PR lto/41638
3367         * target-def.h (TARGET_BUILTIN_DECL): Define.
3368         (TARGET_INITIALIZER): Add TARGET_BUILTIN_DECL.
3369         * target.h (struct gcc_target): Add builtin_decl target hook.
3370         * doc/tm.texi (TARGET_BUILTIN_DECL): Document.
3371         * lto-streamer-in.c (lto_get_builtin_tree): Fix handling of
3372         target builtins.
3373         * lto-streamer-out.c (lto_output_tree_pointers): Use sorry,
3374         not gcc_unreachable.
3375         (lto_output_builtin_tree): Sorry if the target does not support
3376         streaming target builtins.
3377         * config/rs6000/rs6000.c (TARGET_BUILTIN_DECL): Define.
3378         (rs6000_builtin_decl): New function.
3379         * config/i386/i386.c (TARGET_BUILTIN_DECL): Define.
3380         (ix86_builtin_decl): New function.
3381
3382 2009-10-09  Jakub Jelinek  <jakub@redhat.com>
3383
3384         PR preprocessor/41445
3385         * c-ppoutput.c (do_line_change): New function.
3386         (cb_line_change): Use it.
3387         (scan_translation_unit): Call do_line_change if
3388         avoid_paste or PREV_WHITE and token location is on a different line
3389         than print.src_line.
3390
3391         PR debug/40521
3392         * dwarf2out.c (dwarf2out_init): Test whether
3393         HAVE_GAS_CFI_SECTIONS_DIRECTIVE is non-zero instead of checking
3394         it is defined.
3395
3396         PR rtl-optimization/41646
3397         * calls.c (expand_call): For BLKmode types returned in registers
3398         avoid likely spilled hard regs in copy_blkmode_from_reg generated
3399         insns.
3400
3401 2009-10-09  Richard Guenther  <rguenther@suse.de>
3402
3403         PR tree-optimization/41634
3404         * tree-ssa-dom.c (remove_local_expressions_from_table): Assert
3405         we remove the correct elements.
3406         (optimize_stmt): Make sure to update stmt operands before
3407         optimizing redundancies.
3408
3409 2009-10-09  Andreas Krebbel  <Andreas.Krebbel@de.ibm.com>
3410
3411         * config/s390/s390.md ("prefetch"): Remove stcmh for prefetching.
3412
3413 2009-10-09  Richard Guenther  <rguenther@suse.de>
3414
3415         PR driver/41637
3416         * lto-wrapper.c (ltrans_output_file, flto_out, args_name): New
3417         globals.
3418         (lto_wrapper_exit): New function.
3419         (fatal): Use it.
3420         (fatal_perror): Likewise.
3421         (fork_execute): Use global args_name, do not free it.
3422         (run_gcc): Use global ltrans_output_file, flto_out, do not free them.
3423         * lto-streamer.h: Remove duplicate prototypes.
3424
3425 2009-10-09  Richard Guenther  <rguenther@suse.de>
3426
3427         * cgraph.c (cgraph_create_edge): Check for NULL call_stmt
3428         before calling stmt_can_throw_external.
3429
3430 2009-10-09  Eric Botcazou  <ebotcazou@adacore.com>
3431
3432         PR tree-optimization/40071
3433         * tree-vect-data-refs.c (vect_create_data_ref_ptr): Build a ref-all
3434         pointer if the original data reference doesn't conflict with the
3435         created vector data reference.  Fix long line.
3436
3437 2009-10-09  Uros Bizjak  <ubizjak@gmail.com>
3438
3439         * config/i386/i386.md (any_div): New code iterator.
3440         (u): Handle div and udiv.
3441         (sgnprefix): Ditto.
3442         (<u>divqi3): Macroize insn from {,u}divqi3  using any_div
3443         code iterator.
3444         (lfloor<MODEF:mode><SWI48:mode>2): Macroize insn from
3445         lfloor<mode>{si,di}2 patterns using SWI48 mode iterator.
3446         (lceil<MODEF:mode><SWI48:mode>2): Macroize insn from
3447         lceil<mode>{si,di}2 patterns using SWI48 mode iterator.
3448
3449 2009-10-08  Joseph Myers  <joseph@codesourcery.com>
3450
3451         * gcc.c (main): Remove trailing "." from diagnostics.
3452
3453 2009-10-08  Cary Coutant  <ccoutant@google.com>
3454
3455         Add support for debugging with ICF (Identical Code Folding).
3456         * calls.c (debug.h): New #include.
3457         (emit_call_1): Call virtual_call_token debug hook.
3458         * common.opt (-fenable-icf-debug): New option.
3459         * dwarf2out.c (dwarf2_debug_hooks): Add entries for new hooks (two
3460         locations in the source).
3461         (poc_label_num): New variable.
3462         (dcall_entry, vcall_entry): New typedefs.
3463         (dcall_table, vcall_table): New variables.
3464         (struct vcall_insn): New type.
3465         (vcall_insn_table): New variable.
3466         (DEBUG_DCALL_SECTION, DEBUG_VCALL_SECTION): New macros.
3467         (size_of_dcall_table): New function.
3468         (output_dcall_table): New function.
3469         (size_of_vcall_table): New function.
3470         (output_vcall_table): New function.
3471         (dwarf2out_direct_call): New function.
3472         (vcall_insn_table_hash): New function.
3473         (vcall_insn_table_eq): New function.
3474         (dwarf2out_virtual_call_token): New function.
3475         (dwarf2out_virtual_call): New function.
3476         (dwarf2out_init): Allocate new tables and sections.
3477         (prune_unused_types): Mark DIEs referenced from direct call table.
3478         (dwarf2out_finish): Output direct and virtual call tables.
3479         * final.c (final_scan_insn): Call direct_call and virtual_call
3480         debug hooks.
3481         * debug.h (struct gcc_debug_hooks): Add direct_call,
3482         virtual_call_token, virtual_call hooks.
3483         (debug_nothing_uid): New function.
3484         * debug.c (do_nothing_debug_hooks): Add dummy entries for new hooks.
3485         (debug_nothing_uid): New function.
3486         * dbxout.c (dbx_debug_hooks): Add dummy entries for new hooks.
3487         (xcoff_debug_hooks): Likewise.
3488         * sdbout.c (sdb_debug_hooks): Likewise.
3489         * vmsdbgout.c (vmsdbg_debug_hooks): Likewise.
3490         * doc/invoke.texi (-fenable-icf-debug): New option.
3491
3492 2009-10-08  Alexandre Oliva  <aoliva@redhat.com>
3493
3494         PR debug/41353
3495         * regmove.c (regmove_backward_pass): Replace src with dst in the
3496         debug insn, and check for dst before rather than after.
3497
3498 2009-10-08  Janis Johnson <janis187@us.ibm.com>
3499
3500         * config/rs6000/rs6000.c (rs6000_delegitimize_address): Remove.
3501         (TARGET_DELEGITIMIZE_ADDRESS): Likewise.
3502
3503 2009-10-08  Jan Hubicka  <jh@suse.cz>
3504
3505         PR middle-end/41626
3506         * cgraphbuild.c (record_reference): When parameter DATA is NULL,
3507         do not mark cgraph nodes as needed.
3508         (record_references_in_initializer): Add new only_vars parameter.
3509         * cgraph.h (record_references_in_initializer): New parameter.
3510         * varasm.c (assemble_variable): Update call.
3511         * varpool.c (varpool_analyze_pending_decls): Always look for
3512         referenced vars.
3513
3514 2009-10-08  Anatoly Sokolov  <aesok@post.ru>
3515
3516         * config/avr/avr.c (last_insn_address) Remove variable.
3517         (expand_prologue): Don't initialise last_insn_address variable.
3518         (final_prescan_insn): Don't output insn size.
3519         * config/avr/avr.opt (msize): Remove switch.
3520         * doc/invoke.texi (AVR Options): Remove documentation of -msize
3521         switch.
3522
3523 2009-10-08  Adam Nemet  <anemet@caviumnetworks.com>
3524
3525         * combine.c (label_tick_ebb_start): Fix comment.
3526         (combine_instructions): Set label_tick and label_tick_ebb_start before
3527         calling setup_incoming_promotions.  Start them from 1.  Increment
3528         label_tick instead of deriving it from the BB index.  Rather than
3529         comparing ticks use the block from the previous iteration to decide
3530         whether to start a new EBB.  Remove empty lines before function.
3531
3532 2009-10-08  Michael Matz  <matz@suse.de>
3533
3534         PR middle-end/41573
3535         * builtins.c (fold_builtin_isascii): Use fold_build2.
3536         (fold_builtin_isdigit): Ditto.
3537         * except.c (duplicate_eh_regions_1): Tolerate NULL labels.
3538         * tree-cfg.c (struct rus_data, remove_useless_stmts_warn_notreached,
3539         remove_useless_stmts_cond, remove_useless_stmts_tf,
3540         remove_useless_stmts_tc, remove_useless_stmts_bind,
3541         remove_useless_stmts_goto, remove_useless_stmts_label,
3542         remove_useless_stmts_1, remove_useless_stmts,
3543         pass_remove_useless_stmts): Remove.
3544         * tree-pass.h (pass_remove_useless_stmts): Don't declare.
3545         * passes.c (init_optimization_passes): Don't add
3546         pass_remove_useless_stmts.
3547         * tree-eh.c (lower_eh_constructs_2): Handle empty cleanups.
3548         * tree.c (free_lang_data_in_decl): Don't clear DECL_INITIAL of
3549         static constants.
3550         * lto-symtab.c (lto_symtab_register_decl): Accepts DECL_INITIAL
3551         for static constants.
3552         * lto-streamer-out.c (output_gimple_stmt): Handle GIMPLE_NOP.
3553         * lto-streamer-in.c (input_gimple_stmt): Handle GIMPLE_NOP.
3554
3555 2009-10-08  Richard Guenther  <rguenther@suse.de>
3556
3557         * gimple.c (free_gimple_type_tables): New function.
3558         * gimple.h (free_gimple_type_tables): Declare.
3559
3560 2009-10-07  Mark Heffernan  <meheff@google.com>
3561
3562         * ipa-prop.c (ipa_print_node_params) Only print
3563         names of named arguments.
3564
3565 2009-10-08  Rafael Avila de Espindola  <espindola@google.com>
3566
3567         * gcc.c (LINK_COMMAND_SPEC): Pass libc with -pass-through if it is
3568         being statically linked.
3569
3570 2009-10-08  Rainer Orth  <ro@CeBiTec.Uni-Bielefeld.DE>
3571
3572         * collect2.c (add_lto_object): Only define if OBJECT_FORMAT_NONE.
3573
3574 2009-10-08  Jan Hubicka  <jh@suse.cz>
3575
3576         PR bootstrap/41620
3577         * ipa.c (cgraph_externally_visible_p,
3578         function_and_variable_visibility,
3579         whole_program_function_and_variable_visibility): Skip non-finalized
3580         nodes.
3581
3582 2009-10-08  Nick Clifton  <nickc@redhat.com>
3583
3584         * config/mn10300/mn10300.h (CONSTANT_ADDRESS_P): Do not allow
3585         CONST_DOUBLEs.
3586
3587 2009-10-08  Andreas Tobler  <a.tobler@schweiz.org>
3588
3589         PR bootstrap/37739
3590         * config.host: Use config/x-cflags-O1 for powerpc FreeBSD.
3591
3592 2009-10-07  Joseph Myers  <joseph@codesourcery.com>
3593
3594         PR c/41182
3595         * c-common.c (c_fully_fold_internal): Strip nops from the result
3596         of recursive calls to c_fully_fold_internal.
3597         (c_wrap_maybe_const): New.
3598         (c_save_expr): Use c_wrap_maybe_const.
3599         * c-common.h (c_wrap_maybe_const): Declare.
3600         * c-typeck.c (build_conditional_expr, c_finish_stmt_expr,
3601         build_binary_op): Use c_wrap_maybe_const.
3602
3603 2009-10-07  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
3604
3605         * real.c: Fix comment to reflect actual exponent size.
3606
3607 2009-10-08  Ben Elliston  <bje@au.ibm.com>
3608
3609         * config/rs6000/a2.md: Add FSF comment header.
3610
3611 2009-10-07  Uros Bizjak  <ubizjak@gmail.com>
3612
3613         * config/i386/i386.md (any_extend): New code iterator.
3614         (u, s): New code attributes.
3615         (sgnprefix): Ditto.
3616         (DWIH): Rewrite as code iterator for SI and DI modes.
3617         (DWI): Rewrite as mode attribute.
3618         (dwi): New mode attribute.
3619         (di): Depend on SI mode and DI mode.
3620         (doubleint_general_operand): Remove mode attribute.
3621
3622         (*lea_1): Macroize insn from *lea_1_rex64 and *lea_1 patterns using
3623         DWIH mode iterator.
3624
3625         (*add<mode>3_doubleword): Use DWIH as the base mode iterator.
3626         (*sub<mode>3_doubleword): Ditto.
3627
3628         (mul<mode>3): Macroize expander from mul{hi,si,di}3 patterns
3629         using SWIM248 mode iterator.
3630         (*mul<mode>3_1): Macroize insn from mul{si,di}3_1 patterns
3631         using SWI48 mode iterator.
3632         (<u>mul<mode><dwi>3): Macroize expander from {,u}mul{sidi,diti}3
3633         patterns using DWIH mode iterator and any_extend code iterator.
3634         (<u>mulqihi3): Macroize expander from {,u}mulqihi3 patterns
3635         using any_extend code iterator.
3636         (*<u>mul<mode><dwi>3_1): Macroize insn from {,u}mul{sidi,diti}3_1
3637         patterns using DWIH mode iterator and any_extend code iterator.
3638         (*<u>mulqihi3_1): Macroize insn from {,u}mulqihi3_1 patterns
3639         using any_extend code iterator.
3640         (<s>mul<mode>3_highpart): Macroize expander from
3641         {s,u}mul{si,di}3_highpart patterns using DWIH mode iterator
3642         and any_extend code iterator.
3643         (*<s>muldi3_highpart_1): Macroize insn from
3644         *{s,u}muldi3_highpart_rex64 patterns using any_extend code iterator.
3645         (*<s>mulsi3_highpart_1): Macroize insn from *{s,u}mulsi3_highpart_1
3646         patterns using any_extend code iterator.
3647         (*<s>mulsi3_highpart_zext): Macroize insn from
3648         *{s,u}mulsi3_highpart_zext patterns using any_extend code iterator.
3649
3650 2009-10-07  Jakub Jelinek  <jakub@redhat.com>
3651
3652         * dwarf2out.c (tree_add_const_value_attribute_for_decl): Don't add
3653         DW_AT_const_value if VAR_DIE already has DW_AT_abstract_origin
3654         refering to a DIE with DW_AT_const_value.
3655
3656 2009-10-07  Vladimir Makarov  <vmakarov@redhat.com>
3657
3658         PR middle-end/22072
3659         * ira-lives.c (check_and_make_def_conflict): Process all operands.
3660
3661 2009-10-06  Jan Hubicka  <jh@suse.cz>
3662
3663         * cgraph.c (cgraph_node_can_be_local): Handle externally visible nodes
3664         correctly.
3665
3666 2009-10-06  Uros Bizjak  <ubizjak@gmail.com>
3667
3668         * config/i386/i386.md (*lea_1_rex64, *lea_1, *lea_1_zext,
3669         *lea_2_rex64): Move before *add<mode>_1 pattern.
3670
3671 2009-10-07  Jan Hubicka  <jh@suse.cz>
3672
3673         * collect2.c (main): Add -fno-whole-program.
3674         * gcc.c (set_collect_gcc_options): Do not remove whole program here.
3675
3676 2009-10-07  Jan Hubicka  <jh@suse.cz>
3677
3678         * lto-symtab.c (lto_cgraph_replace_node): Assert that inline clones
3679         has no address taken.
3680         * cgraph.c (cgraph_mark_needed_node): Assert that inline clones are
3681         never needed.
3682         (cgraph_clone_node): Clear externally_visible flag for clones.
3683         * cgraph.h (cgraph_only_called_directly_p,
3684         cgraph_can_remove_if_no_direct_calls_p): New predicates.
3685         * tree-pass.h (pass_ipa_whole_program_visibility): Declare.
3686         * ipa-cp.c (ipcp_cloning_candidate_p): Use new predicate.
3687         (ipcp_initialize_node_lattices, ipcp_estimate_growth,
3688         ipcp_insert_stage): Likwise.
3689         * cgraphunit.c (cgraph_decide_is_function_needed): Do not compute
3690         externally_visible flag.
3691         (verify_cgraph_node): Verify that inline clones look right.
3692         (process_function_and_variable_attributes): Do not set
3693         externally_visible flags.
3694         (ipa_passes): Avoid executing small_ipa_passes at LTO stage; they've
3695         been already run.
3696         * lto-cgraph.c (lto_output_node): Assert that inline clones are not
3697         boundaries.
3698         * ipa-inline.c (cgraph_clone_inlined_nodes): Use new predicates;
3699         clear externally_visible when turning into inline clones
3700         (cgraph_mark_inline_edge): Use new predicates.
3701         (cgraph_estimate_growth): Likewise.
3702         (cgraph_decide_inlining): Likewise.
3703         * ipa.c (cgraph_postorder): Likewise.
3704         (cgraph_remove_unreachable_nodes): Likewise; sanity check
3705         that inline clones are not needed.
3706         (cgraph_externally_visible_p): New predicate.
3707         (function_and_variable_visibility): Add whole_program parameter;
3708         always set externally_visible flag; handle COMDAT function
3709         privatization.
3710         (local_function_and_variable_visibility): New function.
3711         (gate_whole_program_function_and_variable_visibility): New function.
3712         (whole_program_function_and_variable_visibility): New function.
3713         (pass_ipa_whole_program_visibility): New function.
3714         * passes.c  (init_optimization_passes): Add whole program visibility
3715         pass.
3716         (do_per_function_toporder, function_called_by_processed_nodes_p): Do
3717         not care about needed/reachable flags.
3718         * varpool.c: Include flags.h
3719         (decide_is_variable_needed): When doing LTO assume whole-program mode.
3720         (varpool_finalize_decl): When we are in LTO read-back, all variables
3721         are analyzed.
3722         (varpool_analyze_pending_decls): Skip analyzis of analyzed vars.
3723
3724 2009-10-07  Andreas Krebbel  <Andreas.Krebbel@de.ibm.com>
3725
3726         * config/s390/tpf.h (TARGET_DEFAULT): Remove MASK_HARD_FLOAT and
3727         add MASK_HARD_DFP.
3728
3729 2009-10-07  Andreas Krebbel  <Andreas.Krebbel@de.ibm.com>
3730
3731         * config.gcc: Don't include the makefile fragments intended for
3732         libgcc.
3733         * config/s390/fixdfdi.h: File removed.
3734         * config/s390/libgcc-glibc.ver: File removed.
3735         * config/s390/s390.h: Remove the fixdfdi.h hack.
3736         * config/s390/t-crtstuff: File moved to libgcc dir.
3737         * config/s390/t-linux: Likewise.
3738         * config/s390/t-tpf: libgcc specific parts removed.
3739         * config/s390/t-linux64: Likewise.
3740
3741 2009-10-06  Jerry Quinn  <jlquinn@optonline.net>
3742
3743         * Makefile.in (lto-wrapper): Use COMPILER and ALL_COMPILERFLAGS.
3744         (lto-compress.o): Likewise.
3745
3746 2009-10-07  Danny Smith  <dannysmith@users.sourceforge.net>
3747
3748         PR target/41512
3749         * config/i386/winnt.c (i386_pe_determine_dllexport_p): Don't propagate
3750         dllexport to class members here.
3751         (i386_pe_determine_dllimport_p): Only check static class data for
3752         definition.
3753         (i386_pe_encode_section_info): Don't recheck DECL_DLLIMPORT_P.
3754         * config/i386/winnt-cxx.c (i386_pe_type_dllimport_p): Only check
3755         functions for vague linkage.
3756         (i386_pe_type_dllexport_p): Fix formatting.
3757         (maybe_add_dllexport) New function.
3758         (i386_pe_adjust_class_at_definition): Use it to propagate dllexport
3759         to class members.
3760
3761 2009-10-07  Ben Elliston  <bje@au.ibm.com>
3762
3763         * config/rs6000/a2.md: Remove duplicated lines.
3764
3765 2009-10-07  Ben Elliston  <bje@au.ibm.com>
3766
3767         * config.gcc (powerpc*-*-*): Handle a2.
3768         * config/rs6000/rs6000.md (cpu): Add ppca2.  Include "a2.md".
3769         * config/rs6000/a2.md: New file.
3770         * config/rs6000/rs6000.opt (mno-update): New.
3771         (mupdate): Return to using a mask, not a var.
3772         * config/rs6000/rs6000.h (ASM_CPU_SPEC): Add support for a2.
3773         (enum processor_type): Add PROCESSOR_PPCA2.
3774         * config/rs6000/rs6000.c (ppca2_cost): New costs.
3775         (rs6000_override_options): Add "a2" to processor_target_table.
3776         Update rs6000_always_hint logic.  Correctly set rs6000_cost for a2.
3777         * doc/invoke.texi (RS/6000 and PowerPC Options): Document -mcpu=a2.
3778
3779 2009-10-06  Uros Bizjak  <ubizjak@gmail.com>
3780
3781         * config/i386/i386.md (float<SSEMODEI24:mode><X87MODEF:mode>2):
3782         Use explicit gen_truncxfsf2 and gen_truncxfdf2 references to avoid
3783         reference to nonexistent gen_truncxfxf2 function.
3784
3785 2009-10-06  Uros Bizjak  <ubizjak@gmail.com>
3786
3787         * config/i386/i386.md (SWI48, SDWIM, DWI): New mode iterators.
3788         (DWIH, g, di, doubleint_general_operand): New mode attributes.
3789         (general_operand): Handle TI mode.
3790         (add<mode>3): Macroize expander from add{qi,hi,si,di,ti}3 patterns
3791         using SDWIM mode iterator.
3792         (*add<mode>3_doubleword): New insn_and_split pattern.  Macroize
3793         pattern from *add{di,ti}3_1 patterns and corresponding splitters
3794         using DWI mode iterator.
3795         (add<mode>3_carry): Macroize insn from add{qi,hi,si,di}3_carry
3796         patterns using SWI mode iterator.
3797         (*add<mode>3_cc): Macroize insn from add{si,di}3_cc patterns
3798         using SWI48 mode iterator.
3799         (*add<mode>_1): Ditto from add{si,di}_1 patterns.
3800         (*add<mode>_2): Ditto from add{si,di}_2 patterns.
3801         (*add<mode>_3): Ditto from add{si,di}_3 patterns.
3802         (*add<mode>_5): Ditto from add{si,di}_5 patterns.
3803         (sub<mode>3): Macroize expander from sub{qi,hi,si,di,ti}3 patterns
3804         using SDWIM mode iterator.
3805         (*sub<mode>3_doubleword): New insn_and_split pattern.  Macroize
3806         pattern from *sub{di,ti}3_1 patterns and corresponding splitters
3807         using DWI mode iterator.
3808         (sub<mode>3_carry): Macroize insn from sub{qi,hi,si,di}3_carry
3809         patterns using SWI mode iterator.
3810         (*sub<mode>_1): Ditto from from sub{qi,hi,si,di}_1 patterns.
3811         (*sub<mode>_2): Ditto from sub{qi,hi,si,di}_2 patterns.
3812         (*sub<mode>_3): Ditto from sub{qi,hi,si,di}_3 patterns.
3813         (<plusminus_insn>xf3): Macroize expander from addxf3 and subxf3
3814         patterns using plusminus code iterator.
3815         (<plusminus_insn><mode>3): Macroize expander from add<mode>3 and
3816         sub<mode>3 patterns using plusminus code iterator.
3817         * config/i386/i386.c (override_options): Update the call to
3818         gen_subdi_carry_rex64 for renamed function.
3819         (ix86_expand_int_addcc): Update calls to gen_subdi3_carry_rex64
3820         and gen_adddi3_carry_rex64 for renamed functions.  Use indirect
3821         calls to instruction expanders.
3822
3823 2009-10-06  Martin Jambor  <mjambor@suse.cz>
3824
3825         PR bootstrap/41395
3826         * opts.c (decode_options): Run IPA-SRA at -O2.
3827
3828 2009-10-06  Richard Guenther  <rguenther@suse.de>
3829
3830         * lto-symtab.c (lto_symtab_entry_hash): Hash strings, not pointers.
3831
3832 2009-10-06  Tobias Burnus  <burnus@net-b.de>
3833
3834         PR lto/41591
3835         * doc/invoke.texi (-flto,-fwhole-program): Make clear that the
3836         -flto and -fwhole-program flags can be combined.
3837
3838 2009-10-06  Ryan Mansfield  <rmansfield@qnx.com>
3839
3840         PR driver/41217
3841         * gcc.c (process_command): Check that -o argument was specified.
3842
3843 2009-10-06  Jerry Quinn  <jlquinn@optonline.net>
3844
3845         * gimple.c (gimple_type_hash): Use CONST_CAST_TREE to fix compilation.
3846
3847 2009-10-05  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
3848
3849         * c.opt (Wjump-misses-init): Fix typo to enable for ObjC.
3850         * doc/invoke.texi (Warning Options): Annotate allowed languages
3851         for -Wunsuffixed-float-constants.
3852
3853 2009-10-05  Jakub Jelinek  <jakub@redhat.com>
3854
3855         * dwarf2out.c (modified_type_die): Don't add DW_AT_name to
3856         DW_TAG_{const,volatile}_type if its DW_AT_type already has the
3857         same name and isn't the main variant.
3858
3859         PR debug/41558
3860         * dwarf2out.c (loc_by_reference): Removed.
3861         (dw_loc_list_1): New function.
3862         (dw_loc_list): Remove toplev argument, add want_address argument.
3863         Don't look at decl_by_reference_p at all.  Use dw_loc_list_1.
3864         (loc_list_from_tree) <case VAR_DECL>: Pass want_address rather than
3865         want_address == 2 to dw_loc_list.  For successful dw_loc_list
3866         set have_address to 1 only if want_address is not 0.
3867
3868 2009-10-05  Richard Sandiford  <rdsandiford@googlemail.com>
3869
3870         * config/mips/mips-protos.h (mips_trampoline_code_size): Declare.
3871         * config/mips/mips.h (TRAMPOLINE_SIZE): Redefine as the size of
3872         a code block followed by two pointers.
3873         (TRAMPOLINE_ALIGNMENT): Define to 64 for 32-bit targets too.
3874         * config/mips/mips.c (MIPS_LOAD_PTR): New macro.
3875         (MIPS_MOVE): Likewise.
3876         (MIPS_LUI): Likewise.
3877         (MIPS_JR): Likewise.
3878         (MIPS_BAL): Likewise.
3879         (MIPS_NOP): Likewise.
3880         (mips_asm_trampoline_template): Delete.
3881         (mips_trampoline_code_size): New function.
3882         (mips_trampoline_init): Add shorter sequences for all cases
3883         except Pmode == DImoe && !TARGET_USE_PIC_FN_ADDR_REG.
3884         Calculate the opcodes directly, rather than copying from a template.
3885         Only flush the code part of the trampoline.
3886         (TARGET_ASM_TRAMPOLINE_TEMPLATE): Delete.
3887
3888 2009-10-05  Richard Sandiford  <rdsandiford@googlemail.com>
3889
3890         * config/mips/mips.h (DWARF_FRAME_RETURN_COLUMN): Replace
3891         GP_REG_FIRST + 31 with RETURN_ADDR_REGNUM.
3892         (INCOMING_RETURN_ADDR_RTX): Likewise.
3893         (FUNCTION_PROFILER): Likewise.  Replace GP_REG_FIRST + 1
3894         with AT_REGNUM.
3895         * config/mips/sdemtk.h (FUNCTION_PROFILER): Replace GP_REG_FIRST + 31
3896         with RETURN_ADDR_REGNUM.
3897         (MIPS_SAVE_REG_FOR_PROFILING_P): Likewise.
3898         * config/mips/mips.c (mips16_build_call_stub): Replace
3899         GP_REG_FIRST + 31 with RETURN_ADDR_REGNUM, GP_REG_FIRST + 1
3900         with AT_REGNUM and 31 with RETURN_ADDR_REGNUM.
3901         (mips_print_operand_punctuation): Likewise.
3902         (mips_frame_set): Likewise.
3903         (mips16e_output_save_restore): Likewise.
3904         (mips_cfun_might_clobber_call_saved_reg_p): Likewise.
3905         (mips_save_reg_p): Likewise.
3906         (mips_return_addr): Likewise.
3907         (mips_set_return_address): Likewise.
3908         (mips_direct_save_slot_move_p): Likewise.
3909         (mips_output_function_prologue): Likewise.
3910         (mips_restore_reg): Likewise.
3911         (mips_expand_epilogue): Likewise.
3912         (mips_epilogue_uses): Likewise.
3913         * config/mips/mips.md (RETURN_ADD_REGNUM): Define.
3914         (*mov<mode>_ra): Use it instead of a hard-coded 31.
3915         (clear_hazard_<mode>): Likewise.
3916         (call_internal): Likewise.
3917         (call_internal_direct): Likewise.
3918         (call_direct_split): Likewise.
3919         (call_value_internal): Likewise.
3920         (call_value_split): Likewise.
3921         (call_value_internal_direct): Likewise.
3922         (call_value_direct_split): Likewise.
3923         (call_value_multiple_internal): Likewise.
3924         (call_value_multiple_split): Likewise.
3925
3926 2009-10-05  Eric Botcazou  <ebotcazou@adacore.com>
3927             Jakub Jelinek  <jakub@redhat.com>
3928
3929         PR rtl-optimization/41511
3930         * combine.c (record_value_for_reg): Pass explicit values as argument
3931         to get_last_value_validate.
3932         (get_last_value_validate): Document INSN parameter.
3933         For non-readonly MEMs, assume they might have been modified if INSN
3934         was in another basic block.
3935         (get_last_value): Minor reformatting.
3936
3937 2009-10-05  Andrew Pinski  <andrew_pinski@playstation.sony.com>
3938
3939         PR tree-opt/40992
3940         * final.c (asm_str_count): Split out from asm_insn_count.
3941         * rtl.h (asm_str_count): New prototype.
3942         * tree-inline (estimate_num_insns) <case GIMPLE_ASM>: Call
3943         asm_str_count.
3944
3945 2009-10-05  Sriraman Tallam  <tmsriram@google.com>
3946
3947         * doc/plugins.texi: Change plugin_pass to register_pass_info.
3948
3949 2009-10-05  Basile Starynkevitch  <basile@starynkevitch.net>
3950             Rafael Espindola  <espindola@google.com>
3951
3952         * gengtype.c (write_types): Moved call to write_func_for_structure
3953         into seperate loops.
3954
3955 2009-10-05  Richard Guenther  <rguenther@suse.de>
3956
3957         PR lto/41281
3958         * lto-cgraph.c (output_cgraph): Output toplevel asms.
3959         (input_cgraph_1): Input toplevel asms.
3960
3961 2009-10-05  Richard Guenther  <rguenther@suse.de>
3962
3963         PR lto/40902
3964         * lto-symtab.c (lto_compatible_attributes_p): Remove.
3965         (external_aggregate_decl_p): Likewise.
3966         (lto_symtab_compatible): Re-structure.  Remove dead code.
3967         For variables ignore toplevel qualifiers when comparing types.
3968         Issue warnings, not errors for mismatched user-alignment.
3969
3970 2009-10-05  Richard Guenther  <rguenther@suse.de>
3971
3972         PR lto/41552
3973         PR lto/41487
3974         * lto-symtab.c (struct lto_symtab_base_def): Remove.
3975         (struct lto_symtab_identifier_def): Likewise.
3976         (struct lto_symtab_decl_def): Likewise.
3977         (struct lto_symtab_entry_def): New.
3978         (lto_symtab_identifier_t): Rename to ...
3979         (lto_symtab_entry_t): ... this.
3980         (lto_symtab_decls): Remove.
3981         (lto_symtab_base_hash): Rename to ...
3982         (lto_symtab_entry_hash): ... this.
3983         (lto_symtab_base_eq): Rename to ...
3984         (lto_symtab_entry_eq): ... this.
3985         (lto_symtab_base_marked_p): Rename to ...
3986         (lto_symtab_entry_marked_p): ... this.
3987         (lto_symtab_identifier_marked_p): Remove.
3988         (lto_symtab_decl_marked_p): Likewise.
3989         (lto_symtab_maybe_init_hash_tables): Rename to ...
3990         (lto_symtab_maybe_init_hash_table): ... this.
3991         (lto_symtab_set_resolution_and_file_data): Remove.
3992         (lto_symtab_register_decl): New function.
3993         (lto_symtab_get_identifier): Remove.
3994         (lto_symtab_get): New function.
3995         (lto_symtab_get_resolution): Adjust.
3996         (lto_symtab_get_identifier_decl): Remove.
3997         (lto_symtab_set_identifier_decl): Likewise.
3998         (lto_symtab_merge_decl): Rename to ...
3999         (lto_symtab_merge): ... this.  Rewrite.
4000         (lto_symtab_merge_var): Remove.
4001         (lto_symtab_merge_fn): Likewise.
4002         (lto_symtab_prevailing_decl): Adjust.
4003         (lto_cgraph_replace_node): New function.
4004         (lto_symtab_merge_decls_2): Likewise.
4005         (lto_symtab_merge_decls_1): Likewise.
4006         (lto_symtab_fixup_var_decls): Likewise.
4007         (lto_symtab_resolve_symbols): Likewise.
4008         (lto_symtab_merge_decls): Likewise.
4009         (lto_symtab_prevailing_decl): Adjust.
4010         (lto_symtab_get_symtab_def): Remove.
4011         (lto_symtab_get_file_data): Likewise.
4012         (lto_symtab_clear_resolution): Adjust.
4013         (lto_symtab_clear_resolution): Likewise.
4014         * lto-cgraph.c (input_edge): Do not merge cgraph nodes here.
4015         (input_cgraph_1): Likewise.
4016         * lto-streamer-in.c (get_resolution): Do not provide fake
4017         symbol resolutions here.
4018         (deferred_global_decls): Remove.
4019         (lto_register_deferred_decls_in_symtab): Likewise.
4020         (lto_register_var_decl_in_symtab): Change signature, register
4021         variable via lto_symtab_register_decl.
4022         (lto_register_function_decl_in_symtab): Likewise.
4023         (lto_read_tree): Adjust.
4024         * lto-streamer.h (lto_register_deferred_decls_in_symtab): Remove.
4025         (lto_symtab_merge_var): Likewise.
4026         (lto_symtab_merge_fn): Likewise.
4027         (lto_symtab_register_decl): Declare.
4028         (lto_symtab_merge_decls): Likewise.
4029
4030 2009-10-05  Richard Guenther  <rguenther@suse.de>
4031
4032         PR tree-optimization/23821
4033         * tree-vrp.c (vrp_finalize): Do not perform copy propagation.
4034         * tree-ssa-dom.c (cprop_operand): Do not propagate copies into
4035         simple IV increments.
4036
4037 2009-10-05  Ramana Radhakrishnan  <ramana.radhakrishnan@arm.com>
4038
4039         * config/arm/arm.c (arm_override_options): Really initialize
4040         flag_dwarf2_cfi_asm to 0.
4041
4042 2009-10-05  Doug Kwan  <dougkwan@google.com>
4043
4044         PR rtl-optimization/41574
4045         * combine.c (distribute_and_simplify_rtx): Quit if RTX mode is
4046         floating point and we are not doing unsafe math optimizations.
4047
4048 2009-10-03  Simon Baldwin  <simonb@google.com>
4049             Cary Coutant  <ccoutant@google.com>
4050             Rafael Espindola  <espindola@google.com>
4051             Richard Guenther  <rguenther@suse.de>
4052             Jan Hubicka  <jh@suse.cz>
4053             Doug Kwan <dougkwan@google.com>
4054             H.J. Lu  <hongjiu.lu@intel.com>
4055             Bill Maddox  <maddox@google.com>
4056             Ryan Mansfield  <rmansfield@qnx.com>
4057             Diego Novillo  <dnovillo@google.com>
4058             Ollie Wild  <aaw@google.com>
4059             Kenneth Zadeck <zadeck@naturalbridge.com>
4060
4061         * lto-cgraph.c: New file.
4062         * lto-compress.c: New file.
4063         * lto-compress.h: New file.
4064         * lto-opts.c: New file.
4065         * lto-section-in.c: New file.
4066         * lto-section-out.c: New file.
4067         * lto-streamer-in.c: New file.
4068         * lto-streamer-out.c: New file.
4069         * lto-streamer.c: New file.
4070         * lto-streamer.h: New file.
4071         * lto-symtab.c: New file.
4072         * lto-wpa-fixup.c: New file.
4073         * lto-wrapper.c: New file.
4074
4075 2009-10-03  Simon Baldwin  <baldwin@google.com>
4076             Ben Elliston  <bje@au.ibm.com>
4077             Rafael Espindola  <espindola@google.com>
4078             Nathan Froyd  <froydnj@codesourcery.com>
4079             Jan Hubicka  <jh@suse.cz>
4080             Doug Kwan  <dougkwan@google.com>
4081             Diego Novillo  <dnovillo@google.com>
4082             Kenneth Zadeck  <zadeck@naturalbridge.com>
4083
4084         * Makefile.in (enable_lto): New.
4085         (site.exp): If @enable_lto@ is set to 'yes' define ENABLE_LTO.
4086         (LINKER_PLUGIN_API_H): Define.
4087         (LTO_SYMTAB_H): Define.
4088         (LTO_STREAMER_H): Define.
4089         (TREE_VECTORIZER_H): Define.
4090         (INCLUDES): Add LIBELFINC.
4091         (OBJS-common): Add lto-cgraph.o, lto-streamer-in.o,
4092         lto-streamer-out.o, lto-section-in.o, lto-section-out.o, lto-symtab.o,
4093         lto-opts.o, lto-streamer.o, lto-wpa-fixup.o, lto-compress.o.
4094         (MOSTLYCLEANFILES): Add lto-wrapper$(exeext)
4095         (native): Add lto-wrapper$(exeext)
4096         (lto-compress.o, lto-cgraph.o, lto-streamer-in.o,
4097         lto-streamer-out.o, lto-section-in.o, lto-section-out.o,
4098         lto-symtab.o, lto-opts.o, lto-streamer.o, lto-wpa-fixup.o): New rules.
4099         (gimple.o): Add dependency on LTO_HEADER_H and LTO_SECTION_OUT_H.
4100         (varasm.o): Add dependency on tree-iterator.h.
4101         (cgraph.o): Add dependency on cif-code.def.
4102         (ipa-reference.o): Add dependency on LTO_STREAMER_H.
4103         (ipa-pure-const.o): Likewise.
4104         (GTFILES): Add lto-symtab.c.
4105         (install-lto-wrapper): New.
4106         * configure.ac: If 'lto' is in enable_languages, define ENABLE_LTO
4107         and enable_lto.  If LIBELFLIBS is set, define HAVE_libelf.
4108         * config.in: Regenerate.
4109
4110 2009-10-03  Rafael Espindola  <espindola@google.com>
4111             Diego Novillo  <dnovillo@google.com>
4112
4113         * cgraphunit.c (ipa_passes): Prevent lto1 from calling
4114         ipa_write_summaries.
4115         Call execute_ipa_summary_passes for all_regular_ipa_passes and
4116         all_lto_gen_passes.
4117         (cgraph_optimize): Make extern.
4118
4119 2009-10-03  Nathan Froyd  <froydnj@codesourcery.com>
4120             Kenneth Zadeck <zadeck@naturalbridge.com>
4121
4122         * toplev.c (in_lto_p): Declare.
4123         * collect2.c (scan_prog_file): Read all the output when reading
4124         information for LTO.
4125         (enum lto_mode_d): Declare.
4126
4127 2009-10-03  Richard Guenther  <rguenther@suse.de>
4128             Diego Novillo  <dnovillo@google.com>
4129
4130         * gimple.c: Include target.h and alias.h.
4131         (gimple_types): Declare.
4132         (type_hash_cache): Declare.
4133         (gimple_alloc_stat): Make extern.
4134         (gimple_build_eh_must_not_throw): Call
4135         gimple_eh_must_not_throw_set_fndecl.
4136         (struct type_pair_d): Declare.
4137         (type_pair_t): Declare.
4138         (type_pair_hash): New.
4139         (type_pair_eq): New.
4140         (lookup_type_pair): New.
4141         (gimple_force_type_merge): New.
4142         (compare_type_names_p): New.
4143         (compare_field_offset): New.
4144         (gimple_types_compatible_p): New.
4145         (struct sccs): Declare.
4146         (next_dfs_num): Declare.
4147         (iterative_hash_gimple_type): New.
4148         (visit): New.
4149         (iterative_hash_type_name): New.
4150         (iterative_hash_gimple_type): New.
4151         (gimple_type_hash): New.
4152         (gimple_type_eq): New.
4153         (gimple_register_type): New.
4154         (print_gimple_types_stats): New.
4155         (gimple_signed_or_unsigned_type): New.
4156         (gimple_unsigned_type): New.
4157         (gimple_signed_type): New.
4158         (gimple_get_alias_set): New.
4159         (gimple_decl_printable_name): Do not use DMGL_TYPES.
4160         * gimple.h (gimple_alloc, gimple_alloc_stat): Declare.
4161         (gimple_force_type_merge): Declare.
4162         (gimple_types_compatible_p): Declare.
4163         (gimple_register_type): Declare.
4164         (print_gimple_types_stats): Declare.
4165         (gimple_unsigned_type): Declare.
4166         (gimple_signed_type): Declare.
4167         (gimple_get_alias_set): Declare.
4168         (gimple_eh_must_not_throw_set_fndecl): New.
4169
4170 2009-10-03  Jan Hubicka  <jh@suse.cz>
4171             Kenneth Zadeck <zadeck@naturalbridge.com>
4172
4173         * ipa-pure-const.c: Include lto-streamer.h.
4174         (register_hooks): Factor out of ...
4175         (generate_summary): ... here.
4176         (pure_const_write_summary): New.
4177         (pure_const_read_summary): New.
4178         (pass_ipa_pure_const): Add pure_const_write_summary and
4179         pure_const_read_summary.
4180         * ipa-reference.c: Include lto-streamer.h.
4181         (add_new_function): New.
4182         (remove_node_data): New.
4183         (duplicate_node_data): New.
4184         (ipa_init): Guard against multiple calls.
4185         Move hook setup from analyze_function.
4186         (write_node_summary_p): New.
4187         (ipa_reference_write_summary): New.
4188         (ipa_reference_read_summary): New.
4189         (pass_ipa_reference): Add ipa_reference_write_summary and
4190         ipa_reference_read_summary.
4191         * cgraph.h (cgraph_local_info): Add field lto_file_data.
4192         (struct cgraph_edge): Add fields lto_stmt_uid and
4193         call_stmt_cannot_inline_p.
4194         (cgraph_optimize): Declare.
4195         (cgraph_decide_is_function_needed): Declare.
4196         (reset_inline_failed): Declare.
4197         (enum LTO_cgraph_tags): Declare.
4198         (LTO_cgraph_tag_names): Declare.
4199         (LCC_NOT_FOUND): Define.
4200
4201 2009-10-03  Doug Kwan  <dougkwan@google.com>
4202             Rafael Espindola  <espindola@google.com>
4203             Jan Hubicka  <jh@suse.cz>
4204             Diego Novillo  <dnovillo@google.com>
4205             Kenneth Zadeck  <zadeck@naturalbridge.com>
4206
4207         * passes.c (all_regular_ipa_passes): New.
4208         (all_ipa_passes): Rename to all_small_ipa_passes.
4209         (init_optimization_passes): Init all_regular_ipa_passes.
4210         * tree-pass.h (all_regular_ipa_passes): New.
4211         (all_ipa_passes): Rename to all_small_ipa_passes.
4212         * passes.c (all_lto_gen_passes): New.
4213         (init_optimization_passes): Initialize all_lto_gen_passes.
4214         (execute_ipa_summary_passes): Make non-static.
4215         (ipa_write_summaries_1): New.
4216         (ipa_write_summaries_2): New.
4217         (ipa_write_summaries): New.
4218         (ipa_write_summaries_of_cgraph_node_set): New.
4219         (ipa_read_summaries_1): New.
4220         (ipa_read_summaries): New.
4221         (execute_ipa_pass_list): Call cgraph_process_new_functions.
4222         (execute_regular_ipa_pass_list): Remove.
4223         (init_optimization_passes): Schedule
4224         pass_rebuild_cgraph_edges and pass_early_inline outside
4225         of pass_all_early_optimizations.  Document reason.
4226         (pass_ipa_lto_gimple_out, pass_ipa_lto_wpa_fixup,
4227         pass_ipa_lto_finish_out): New pass.
4228         (pass_ipa_summary_passes): Start and stop timers if the pass has them.
4229         (execute_all_ipa_transforms): New.
4230         (execute_one_pass): Don't call execute_one_ipa_transform_pass.
4231         (dump_properties, debug_properties): New.
4232         * tree-optimize.c (gate_all_early_local_passes): Return
4233         false if we are in lto1.
4234         (tree_rest_of_compilation): Call execute_all_ipa_transforms.
4235         * tree-pass.h (execute_all_ipa_transforms): Declare.
4236         (pass_ipa_function_and_variable_visibility): Declare.
4237         (pass_ipa_early_inline): Declare.
4238         (pass_ipa_lto_gimple_out): Declare.
4239         (pass_ipa_lto_wpa_fixup): Declare.
4240         (pass_ipa_lto_finish_out): Declare.
4241         (all_small_ipa_passes, all_regular_ipa_passes,
4242         all_lto_gen_passes): Declare.
4243         (execute_ipa_summary_passes): Declare.
4244         (execute_all_ipa_transforms): Declare.
4245         (ipa_write_summaries): Declare
4246         (ipa_write_summaries_of_cgraph_node_set): Declare.
4247         (ipa_read_summaries): Declare.
4248
4249 2009-10-03  Doug Kwan  <dougkwan@google.com>
4250             Ollie Wild  <aaw@google.com>
4251
4252         * ipa-prop.c (ipa_propagate_indirect_call_infos): Do nothing in WPA.
4253
4254         * collect2.c (LTO_MODE_NONE, LTO_MODE_LTO, LTO_MODE_WPA): New enums.
4255         (lto_mode): New variable.
4256         (maybe_run_lto_and_relink): Handle the -fwpa option.
4257         (main): Handle the -fwpa option.
4258         (maybe_unlink_list): New function.
4259         * gcc.c (link_lto_options): Replace -flto with -fwpa.
4260         * common.opt (flto): New flag.
4261         * toplev.c (flag_generate_lto): Declare.
4262
4263 2009-10-03  Simon Baldwin  <simonb@google.com>
4264
4265         * common.opt (flto-compression-level): New flag.
4266
4267         * opts.c: Include lto-opts.h.
4268         (handle_option): Call lto_register_user_option for each
4269         valid option handled.
4270         (decode_options): Clear registered options before the options
4271         handling loop.
4272
4273 2009-10-03  Cary Coutant  <ccoutant@google.com>
4274
4275         * collect2.c (is_elf): New function.
4276         (scan_prog_file): Require LTO object to be in ELF format.
4277
4278 2009-10-03  Rafael Espindola  <espindola@google.com>
4279
4280         * gcc.c (LINK_COMMAND_SPEC): Use the -pass-through option to pass
4281         libgcc to the linker.
4282
4283         * ipa-cp.c (cgraph_gate_cp): Return false if LTRANS is running.
4284
4285         * collect2.c (maybe_run_lto_and_relink): Execute lto-wrapper.
4286         (collect_execute): Add flags argument. Pass flags to pex_run. Update
4287         all callers.
4288         * collect2.h (collect_execute): Add flags argument.
4289         * tlink.c (tlink_execute): Update call to collect_execute.
4290         * gcc.c (main): Set the COLLECT_LTO_WRAPPER environment variable.
4291         (use_linker_plugin): New.
4292         (use_linker_plugin_spec_function): New.
4293         (LINK_COMMAND_SPEC): Pass plugin options to the linker.
4294         (linker_plugin_file_spec): New.
4295         (lto_wrapper_spec): New.
4296         (lto_gcc_spec): New.
4297         (static_specs): Add linker_plugin_file, lto_wrapper and lto_gcc.
4298         (static_spec_functions): Add use-linker-plugin.
4299         (process_command): Handle -use-linker-plugin.
4300         (main): Use lto_wrapper_spec instead of lto_wrapper. Set
4301         linker_plugin_file_spec and lto_gcc_spec.
4302         (use_linker_plugin_spec_function): New.
4303
4304 2009-10-03  Richard Guenther  <rguenther@suse.de>
4305
4306         PR lto/41547
4307         PR lto/41548
4308         * tree.h (is_lang_specific): Include LANG_TYPE.
4309         * tree.c (find_decls_types_r): Manually add interesting parts
4310         of TYPE_FIELDS.  Walk BINFO_VIRTUALS.  Do not walk TYPE_METHODS.
4311
4312         * gimple.c (type_pair_hash): Make symmetric.
4313         (type_pair_eq): Likewise.
4314         (lookup_type_pair): Increase initial hashtable size.
4315         (gimple_force_type_merge): Rely on type-pair symmetry.
4316         (visit): Remove excessive checking code.
4317         (iterative_hash_type_name): Do not hash TYPE_NAME of anonymous unions.
4318         (gimple_register_type): Remove getenv calls, shrink initial
4319         hashtable size.
4320
4321         PR middle-end/41502
4322         * cgraphunit.c (ipa_passes): Do not remove bodies of extern
4323         inline functions if not generating lto output.
4324
4325         PR lto/41379
4326         * toplev.c (finalize): In WPA mode remove the asm file.
4327
4328 2009-10-03  Doug Kwan  <dougkwan@google.com>
4329
4330         * ipa-inline.c (cgraph_mark_inline): Check
4331         edge->call_stmt_cannot_inline_p instead of calling
4332         gimple_call_cannot_inline_p.
4333         (cgraph_decide_inlining): Do nothing in WPA and LTRANS.
4334         (cgraph_gate_ipa_early_inlining): Return false if in_lto_p is set.
4335         (inline_generate_summary): Do nothing in LTRANS.
4336         * cgraph.c (initialize_inline_failed): Make sure e->call_stmt
4337         exists before calling gimple_call_cannot_inline_p.
4338         (cgraph_create_edge): Set edge->call_stmt_cannot_inline_p.
4339         (cgraph_clone_edge): Add argument STMT_UID.  Modify all callers.
4340         Update new_edge->lto_stmt_uid.
4341         * cgraphbuild.c (reset_inline_failed): New.
4342
4343         * common.opt (fwpa): New flag.
4344         (fltrans): New option.
4345         * gcc.c (gcc_lto_option_t): New type.
4346         (current_lto_option): New variable.
4347         (lto_single_spec_function): Remove and is replaced by ..
4348         (lto_option_spec_function): New function.
4349         (LINK_COMMAND_SPEC): Use link_lto_option spec instead of just
4350         passing the -flto flag.
4351         (cc1_options): Separate non-LTO related parts into ..
4352         (cc1_non_lto_options): Non-LTO related options shared by all FEs.
4353         (lto1_options): New spec for lto FE.
4354         (link_lto_options): New spec for handling LTO flags in linker.
4355         (invoke_lto_single): Re-format to fit in 80 column.  Replace
4356         lto-single with lto-option.
4357         (static_specs): Add cc1_non_lto_options, lto1_options and
4358         link_lto_options.
4359         (static_spec_function): Replace lto-single with lto-option.
4360         (process_command): Handle -flto, -fwpa and -fltran by setting
4361         current_lto_option and not passing it to subprocess unconditionally.
4362
4363 2009-10-03  Bill Maddox  <maddox@google.com>
4364
4365         Add `gcc' driver support for link-time code generation (LTO).
4366
4367         * collect2.c (enum pass): Add new literal PASS_LTOINFO.
4368         (lto_flag, lto_objects, lto_o_file): New variables.
4369         (struct lto_object, struct lto_object_list): New structures.
4370         (collect_exit, handler): Remove LTO temporary output file on exit.
4371         (add_lto_object): New function.
4372         (maybe_run_lto_and_relink): New function. Perform link time code
4373         generation and relinking for object files containing LTO information.
4374         (main): Invoke maybe_run_lto_and_relink().
4375         (dump_argv): New function.  For debugging, currently disabled.
4376         (scan_prog_file): Add LTO information pass.
4377         * gcc.c (LINK_COMMAND_SPEC): Pass `-flto' switch to linker, i.e.,
4378         collect2.
4379         * toplev.c (compile_file): Emit assembler directive to create
4380         the `gnu_lto_v1' marker symbol when compiling with `-flto'.
4381
4382 2009-10-03  Diego Novillo  <dnovillo@google.com>
4383
4384         * c.opt: Add LTO to warn_abi and warn_psabi.
4385
4386         * tree.c (fld_worklist_push): Rename from PUSH.  Convert to static
4387         inline function.  Ignore language-specific nodes.  Update all users.
4388         (find_decls_types_r): Do not traverse the subtrees of
4389         language-specific nodes.  Do not traverse DECL_INITIAL for TYPE_DECLs.
4390         * tree.h (is_lang_specific): New.
4391         * langhooks.h (struct lang_hooks_for_decls): Remove
4392         may_need_assembler_name_p.  Update all users.
4393
4394         * c-common.c (set_builtin_user_assembler_name): Move ...
4395         * builtins.c (set_builtin_user_assembler_name): ... here.
4396         (is_builtin_name): Add comment
4397         (is_builtin_fn): New.
4398         * except.c (output_ttype): Only call
4399         lookup_type_for_runtime if TYPE is not a runtime type.
4400
4401         * passes.c (register_pass): Call position_pass on
4402         all_small_ipa_passes, all_regular_ipa_passes and all_lto_gen_passes.
4403         * timevar.def (TV_IPA_LTO_GIMPLE_IO): Define.
4404         (TV_IPA_LTO_DECL_IO): Define.
4405         (TV_IPA_LTO_CGRAPH_IO): Define.
4406         (TV_LTO): Define.
4407         (TV_WHOPR_WPA): Define.
4408         (TV_WHOPR_WPA_IO): Define.
4409         (TV_WHOPR_LTRANS): Define.
4410         (TV_WHOPR_WPA_FIXUP): Define.
4411         (TV_WHOPR_WPA_LTRANS_EXEC): Define.
4412         * tree-cfg.c (tree_node_can_be_shared): Make extern.
4413         * tree-flow.h (tree_node_can_be_shared): Declare.
4414         * tree-inline.c (tree_can_inline_p): Check that E has a
4415         statement associated with it.
4416         * tree.c (free_lang_data_in_binf): Factor out of ...
4417         (free_lang_data_in_type): ... here.
4418         Call RECORD_OR_UNION_TYPE_P.
4419         (need_assembler_name_p): Ignore DECL if it does not have TREE_PUBLIC
4420         set.  Call lang_hooks.decls.may_need_assembler_name_p if set.
4421         (free_lang_data_in_decl): Do not clear DECL_CONTEXT for CONST_DECLs.
4422         (free_lang_data): Set debug_info_level to DINFO_LEVEL_NONE.  Set
4423         write_symbols to NO_DEBUG.  Set debug_hooks to do_nothing_debug_hooks.
4424         (gate_free_lang_data): Return true if flag_generate_lto is set.
4425         (walk_tree_1): Call RECORD_OR_UNION_TYPE_P.
4426         * c-common.h (set_builtin_user_assembler_name): Move ...
4427         * tree.h (set_builtin_user_assembler_name): ... here.
4428
4429         * common.opt (flto-report): New flag.
4430         * opts.c (complain_wrong_lang): Do not complain if running lto1.
4431         * collect2.c (scan_prog_file): Send the error output of
4432         'nm' to HOST_BIT_BUCKET.
4433
4434 2009-10-03  Ollie Wild  <aaw@google.com>
4435
4436         * langhooks-def.h (lhd_begin_section): New function declaration.
4437         (lhd_write_section): New function declaration.
4438         (lhd_end_section): New function declaration.
4439         (LANG_HOOKS_BEGIN_SECTION): New macro.
4440         (LANG_HOOKS_WRITE_SECTION_DATA): New macro.
4441         (LANG_HOOKS_END_SECTION): New macro.
4442         (LANG_HOOKS_LTO): New macro.
4443         (LANG_HOOKS_INITIALIZER): Add LANG_HOOKS_LTO.
4444         * langhooks.c (output.h): Add include.
4445         (saved_section): New static variable.
4446         (lhd_begin_section): New function.
4447         (lhd_write_section_data): New function.
4448         (lhd_end_section): New function.
4449         * langhooks.h (struct lang_hooks_for_lto): New structure.
4450         (struct lang_hooks): Add member lto.
4451         * Makefile.in (langhooks.o): Add dependency on output.h.
4452
4453         * c-opts.c (c_common_post_options): Handle -flto and -fwhopr.
4454
4455 2009-10-03  Richard Guenther  <rguenther@suse.de>
4456
4457         * config/rs6000/rs6000.c (rs6000_output_function_epilogue):
4458         Handle LTO.
4459
4460 2009-10-03  Simon Baldwin  <simonb@google.com>
4461             Richard Guenther  <rguenther@suse.de>
4462             Janis Johnson  <janis187@us.ibm.com>
4463             Doug Kwan  <dougkwan@google.com>
4464             Diego Novillo  <dnovillo@google.com>
4465             Ramana Radhakrishnan  <ramana.r@gmail.com>
4466             Ollie Wild  <aaw@google.com>
4467
4468         * doc/install.texi: Add documentation for libelf and --enable-lto.
4469         * doc/invoke.texi: Document -fwpa, -flto, -fwhopr, -fltrans,
4470         -flto-report, -flto-compression-level and -use-linker-plugin.
4471         * doc/sourcebuild.texi: Document use of zlib.  Document lto-plugin.
4472         Add section for LTO Testing.
4473
4474 2009-10-02  Cary Coutant  <ccoutant@google.com>
4475
4476         Add support for comdat type sections for DWARF v4.
4477         Merge from dwarf4 branch.
4478
4479         * dwarf2out.c (DWARF_TYPE_SIGNATURE_SIZE): New constant.
4480         (dw_die_ref): Define vector type.
4481         (enum dw_val_class): Add dw_val_class_data8.
4482         (struct dw_val_struct): Add v.val_data8.
4483         (comdat_type_node_ref): New type.
4484         (struct die_struct): Move die_symbol into a union; add new field
4485         die_type_node.  Change all uses.
4486         (comdat_type_node): New type.
4487         (skeleton_chain_node): New type.
4488         (DWARF_COMDAT_TYPE_UNIT_HEADER_SIZE): New constant.
4489         (comdat_type_list): New variable.
4490         (dwarf_tag_name): Add DW_TAG_type_unit.
4491         (dwarf_attr_name): Add DW_AT_signature.
4492         (add_AT_data8): New function.
4493         (replace_child): New function.
4494         (move_all_children): New function.
4495         (print_signature): New function.
4496         (print_die): Print signature information; add dw_val_class_data8.
4497         (attr_checksum): Support dw_val_class_data8.
4498         (CHECKSUM_STRING): Redefine for DWARF-4 to include trailing NULL byte.
4499         (CHECKSUM_SLEB128, CHECKSUM_ULEB128): New macros.
4500         (checksum_sleb128, checksum_uleb128): New functions.
4501         (checksum_die_context): New function.
4502         (loc_checksum_ordered): New function.
4503         (attr_checksum_ordered): New function.
4504         (struct checksum_attributes): New structure.
4505         (collect_checksum_attributes): New function.
4506         (die_checksum_ordered): New function.
4507         (generate_type_signature): New function.
4508         (same_dw_val_p): Add dw_val_class_data8.
4509         (is_symbol_die): Use new is_declaration_die function.
4510         (is_declaration_die): New function.
4511         (should_move_die_to_comdat): New function.
4512         (clone_die): New function.
4513         (clone_tree): New function.
4514         (clone_as_declaration): New function.
4515         (copy_declaration_context): New function.
4516         (generate_skeleton_ancestor_tree): New function.
4517         (generate_skeleton_bottom_up): New function.
4518         (generate_skeleton): New function.
4519         (remove_child_or_replace_with_skeleton): New function.
4520         (break_out_comdat_types): New function.
4521         (struct decl_table_entry): New type.
4522         (htab_decl_hash): New function.
4523         (htab_decl_eq): New function.
4524         (htab_decl_del): New function.
4525         (copy_ancestor_tree): New function.
4526         (copy_decls_walk): New function.
4527         (copy_decls_for_unworthy_types): New function.
4528         (build_abbrev_table): Don't assert on missing die_symbol when doing
4529         comdat type sections.
4530         (size_of_die): Use DW_FORM_sig8 for external references.  Add
4531         dw_val_class_data8.
4532         (unmark_dies): Don't assert for unmarked dies when doing comdat
4533         type sections.
4534         (value_format): Support DW_FORM_sig8 and dw_val_class_data8.
4535         (output_signature): New function.
4536         (output_die): Likewise.
4537         (output_compilation_unit_header): Mark output as DWARF version 3
4538         even if generating DWARF 4.
4539         (output_comdat_type_unit): New function.
4540         (output_line_info): Mark output as DWARF version 3 even if generating
4541         DWARF 4.
4542         (dwarf2out_start_source_file): Don't do eliminate_dwarf2_dups with
4543         DWARF-4.
4544         (dwarf2out_end_source_file): Likewise.
4545         (prune_unused_types_walk_attribs): Don't follow references into
4546         comdat type sections.
4547         (prune_unused_types_mark): When generating type units, do not mark
4548         children of non-defining declarations of types; do mark children of
4549         type entries.
4550         (prune_unused_types): Process comdat type sections.
4551         (htab_ct_hash): New function.
4552         (htab_ct_eq): New function.
4553         (dwarf2out_finish): Move types to comdat sections when using DWARF-4.
4554         Add a pointer to the line table from type unit entries so
4555         DW_AT_decl_file has meaning.
4556         * varasm.c (default_elf_asm_named_section): Use identifier name as
4557         comdat key instead of lang hook.
4558
4559 2009-10-02  Neil Vachharajani  <nvachhar@google.com>
4560
4561         * gcov-io.c (gcov_open): Open files read-only when MODE < 0.
4562
4563 2009-10-02  Uros Bizjak  <ubizjak@gmail.com>
4564
4565         * config/i386/i386.md (SWIM248): New mode iterator.
4566         (divmod<mode>4) Macroize expander from divmoddi4, divmodsi4 and
4567         divmodhi4 patterns using SWIM248 macro.
4568         (*divmod<mode>4): Macroize insn_and_split pattern from
4569         *divmoddi4_cltd_rex64, *divmodsi4_cltd and divmodhi4 insn patterns
4570         and their corresponding splitters usign SWIM248 macro.  Split SImode
4571         insn to generate cltd and DImode insn to generate cqto instead of
4572         move+shift when optimizing for size or TARGET_USE_CLTD is in effect.
4573         (*divmoddi4_nocltd_rex64, *divmodsi4_nocltd): Remove insn patterns.
4574         (*divmod<mode>4_noext): Macroize insn from *divmoddi_noext_rex64 and
4575         *divmodsi_noext patterns using SWIM248 macro.
4576         (udivmod<mode>4): Macroize expander from udivmoddi4, udivmodsi4 and
4577         udivmodhi4 patterns using SWIM248 macro.
4578         (*udivmod<mode>4): Macroize insn_and_split pattern from
4579         *udivmoddi4, udivmodsi4 and udivmodhi4 patterns and their
4580         corresponding splitters using SWIM248 macro.
4581         (*udivmod<mode>4_noext): Macroize insn from *udivmoddi4_noext,
4582         *udivmodsi4_noext and *udivmodhi_noext patterns using SWIM248 macro.
4583
4584 2009-10-02  Eric Botcazou  <ebotcazou@adacore.com>
4585
4586         * stor-layout.c (layout_type) <ARRAY_TYPE>: Make sure that an array
4587         of zero-sized element is zero-sized regardless of its extent.
4588
4589 2009-10-02  Jakub Jelinek  <jakub@redhat.com>
4590
4591         PR debug/40521
4592         * configure.ac (HAVE_GAS_CFI_SECTIONS_DIRECTIVE): New test.
4593         * configure: Regenerated.
4594         * config.in: Regenerated.
4595         * dwarf2out.c (dwarf2out_do_cfi_asm): Return false if
4596         !HAVE_GAS_CFI_SECTIONS_DIRECTIVE and not emitting .eh_frame.
4597         (dwarf2out_init): If HAVE_GAS_CFI_SECTIONS_DIRECTIVE and
4598         not emitting .eh_frame, emit .cfi_sections .debug_frame
4599         directive.
4600
4601         PR debug/41404
4602         PR debug/41353
4603         * cfgexpand.c (expand_debug_expr) <case STRING_CST>: Don't create
4604         CONST_STRING if STRING_CST contains embedded '\0's or doesn't end
4605         with '\0'.
4606         (expand_debug_expr) <case VAR_DECL>: For TREE_STATIC !DECL_EXTERNAL
4607         vars use DECL_RTL with resetting it back to NULL afterwards.
4608         * dwarf2out.c (same_dw_val_p): For dw_val_class_addr compare with
4609         rtx_equal_p instead of asserting it is a SYMBOL_REF.
4610         (value_format): For dw_val_class_addr only use DW_FORM_addr if
4611         the attribute type allows it, otherwise use DW_FORM_dataN.
4612         (mem_loc_descriptor): Handle CONST_STRING.
4613         (add_const_value_attribute): Handle CONST_STRING using add_AT_addr.
4614         Handle MEM with CONST_STRING address using add_AT_string.
4615         (rtl_for_decl_init): Return MEM with CONST_STRING address instead of
4616         CONST_STRING for const arrays initialized with a string literal.
4617         (resolve_one_addr, resolve_addr_in_expr, resolve_addr): New functions.
4618         (dwarf2out_finish): Call resolve_addr.
4619
4620 2009-10-02  Andreas Schwab  <schwab@linux-m68k.org>
4621             Maxim Kuvyrkov  <maxim@codesourcery.com>
4622
4623         * config/m68k/lb1sf68.asm (PICCALL): Use variable sized branch.
4624
4625 2009-10-02  Nick Clifton  <nickc@redhat.com>
4626
4627         * config/mn10300/mn10300.h (USER_LABEL_PREFIX): Define.
4628         (ASM_OUTPUT_LABELREF): Use asm_fprintf and %U.
4629
4630 2009-10-01  Jan Hubicka  <jh@suse.cz>
4631
4632         * cgraph.c (cgraph_clone_node): Add redirect_callers parameter.
4633         (cgraph_create_virtual_clone): Just pass redirect_callers
4634         around.
4635         * cgraph.h (cgraph_clone_node): Update prototype.
4636         * ipa-pure-const.c (self_recursive_p): New function.
4637         (propagate): Use it.
4638         * ipa-inline.c (cgraph_clone_inlined_nodes,
4639         cgraph_decide_recursive_inlining): Update.
4640
4641 2009-10-01  David Daney  <ddaney@caviumnetworks.com>
4642
4643         * gcc/config/mips/mips.c (mips_process_sync_loop) Emit syncw
4644         instructions for TARGET_OCTEON.
4645
4646 2009-10-01  Ramana Radhakrishnan  <ramana.radhakrishnan@arm.com>
4647
4648         * config/arm/arm.c (arm_override_options): Turn off
4649         flag_dwarf2_cfi_asm for AAPCS variants.
4650
4651 2009-10-01  Martin Jambor  <mjambor@suse.cz>
4652
4653         PR middle-end/12392
4654         * tree-sra.c (convert_callers): Do not call
4655         compute_inline_parameters on one caller more than once.
4656
4657 2009-10-01  Nick Clifton  <nickc@redhat.com>
4658
4659         * config/vax/netbsd-elf.h (NETBSD_CC1_AND_CC1PLUS_SPEC): Define as
4660         an empty string if not already defined.
4661
4662 2009-10-01  Martin Jambor  <mjambor@suse.cz>
4663
4664         PR bootstrap/41395
4665         * tree-sra.c (is_va_list_type): New function.
4666         (find_var_candidates): Call is_va_list_type.
4667         (find_param_candidates): Check that the type or the type pointed
4668         to are not va_list types.
4669
4670 2009-10-01  Martin Jambor  <mjambor@suse.cz>
4671
4672         PR c++/41503
4673         * cp/pt.c (function_parameter_expanded_from_pack_p): Return false if
4674         DECL_ARTIFICIAL (param_decl) is true.
4675
4676 2009-09-30  Gabriel Dos Reis  <gdr@cs.tamu.edu>
4677
4678         * tree.h (tree_decl_common::lang_flag_8): New.
4679         * c-common.c (c_common_reswords): Include "constexpr" as C++0x
4680         keyword.
4681         * c-common.h (RID_CONSTEXPR): New.
4682
4683 2009-09-30  Uros Bizjak  <ubizjak@gmail.com>
4684
4685         * config/alpha/alpha.c (alpha_gimplify_va_arg_1):
4686         Use ref-all pointers.
4687         (alpha_gimplify_va_arg): Ditto.
4688
4689 2009-09-30  Jakub Jelinek  <jakub@redhat.com>
4690
4691         PR target/41279
4692         * cfgloopanal.c (num_loop_insns): Don't increment ninsns for each bb
4693         before insn counting loop now that BB_END (bb) is counted.  Ensure
4694         the return value isn't zero.
4695
4696 2009-09-30  Nick Clifton  <nickc@redhat.com>
4697
4698         * config.gcc (sh-symbianelf): Replace definition of extra_objs
4699         with separate definitions of c_target_objs and cxx_target_objs.
4700         * config/sh/t-sh: Add rules to build symbian-cxx.o, symbian-c.o
4701         and symbian-base.o.
4702         * config/sh/sh.c (TARGET_CXX_INPUT_EXPORT_CLASS): Use
4703         sh_symbian_import_export_class.
4704         * config/sh/sh-protos.h: Fix names of exported symbian functions.
4705         * config/sh/symbian.c: Delete, moving code into...
4706         * config/sh/symbian-base.c: ... here
4707         * config/sh/symbian-c.c: ... and here
4708         * config/sh/symbian-cxx.c: ... and here.
4709
4710 2009-09-30  Uros Bizjak  <ubizjak@gmail.com>
4711
4712         PR target/22093
4713         * config/alpha/alpha.md (unaligned_storehi_be): Force operand
4714         of plus RTX into register.
4715
4716 2009-09-30  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
4717
4718         * doc/install.texi: Linguistic and markup fixes.
4719         (Configuration) <--disable-cpp>: Remove description.
4720         <--enable-maintainer-mode>: Autotools files are affected, too.
4721         <--with-sysroot>: Improve description.
4722         (Building): Bump required GNU make version.
4723
4724 2009-09-29  Harsha Jagasia  <harsha.jagasia@amd.com>
4725
4726         * config.gcc (i[34567]86-*-*): Include fma4intrin.h.
4727         (x86_64-*-*): Ditto.
4728
4729         * config/i386/fma4intrin.h: New file, provide common x86 compiler
4730         intrinisics for FMA4.
4731         * config/i386/cpuid.h (bit_FMA4): Define FMA4 bit.
4732         * config/i386/x86intrin.h: Fix typo to SSE4A instead of SSE4a.
4733         Add FMA4 check and fma4intrin.h.
4734         * config/i386/i386-c.c(ix86_target_macros_internal): Check
4735         ISA_FLAG for FMA4.
4736         * config/i386/i386.h(TARGET_FMA4): New macro for FMA4.
4737         * config/i386/i386.md (UNSPEC_FMA4_INTRINSIC): Add new UNSPEC
4738         constant for FMA4 support.
4739         (UNSPEC_FMA4_FMADDSUB): Ditto.
4740         (UNSPEC_FMA4_FMSUBADD): Ditto.
4741         * config/i386/i386.opt (-mfma4): New switch for FMA4 support.
4742         * config/i386/i386-protos.h (ix86_fma4_valid_op_p): Add declaration.
4743         (ix86_expand_fma4_multiple_memory): Ditto.
4744         * config/i386/i386.c (OPTION_MASK_ISA_FMA4_SET): New.
4745         (OPTION_MASK_ISA_FMA4_UNSET): New.
4746         (OPTION_MASK_ISA_SSE4A_UNSET): Change definition to depend on FMA4.
4747         (OPTION_MASK_ISA_AVX_UNSET): Change definition to depend on FMA4.
4748         (ix86_handle_option): Handle -mfma4.
4749         (isa_opts): Handle -mfma4.
4750         (enum pta_flags): Add PTA_FMA4.
4751         (override_options): Add FMA4 support.
4752         (IX86_BUILTIN_VFMADDSS): New for FMA4 intrinsic.
4753         (IX86_BUILTIN_VFMADDSD): Ditto.
4754         (IX86_BUILTIN_VFMADDPS): Ditto.
4755         (IX86_BUILTIN_VFMADDPD): Ditto.
4756         (IX86_BUILTIN_VFMSUBSS): Ditto.
4757         (IX86_BUILTIN_VFMSUBSD): Ditto.
4758         (IX86_BUILTIN_VFMSUBPS): Ditto.
4759         (IX86_BUILTIN_VFMSUBPD): Ditto.
4760         (IX86_BUILTIN_VFMADDSUBPS): Ditto.
4761         (IX86_BUILTIN_VFMADDSUBPD): Ditto.
4762         (IX86_BUILTIN_VFMSUBADDPS): Ditto.
4763         (IX86_BUILTIN_VFMSUBADDPD): Ditto.
4764         (IX86_BUILTIN_VFNMADDSS): Ditto.
4765         (IX86_BUILTIN_VFNMADDSD): Ditto.
4766         (IX86_BUILTIN_VFNMADDPS): Ditto.
4767         (IX86_BUILTIN_VFNMADDPD): Ditto.
4768         (IX86_BUILTIN_VFNMSUBSS): Ditto.
4769         (IX86_BUILTIN_VFNMSUBSD): Ditto.
4770         (IX86_BUILTIN_VFNMSUBPS): Ditto.
4771         (IX86_BUILTIN_VFNMSUBPD): Ditto.
4772         (IX86_BUILTIN_VFMADDPS256): Ditto.
4773         (IX86_BUILTIN_VFMADDPD256): Ditto.
4774         (IX86_BUILTIN_VFMSUBPS256): Ditto.
4775         (IX86_BUILTIN_VFMSUBPD256): Ditto.
4776         (IX86_BUILTIN_VFMADDSUBPS256): Ditto.
4777         (IX86_BUILTIN_VFMADDSUBPD256): Ditto.
4778         (IX86_BUILTIN_VFMSUBADDPS256): Ditto.
4779         (IX86_BUILTIN_VFMSUBADDPD256): Ditto.
4780         (IX86_BUILTIN_VFNMADDPS256): Ditto.
4781         (IX86_BUILTIN_VFNMADDPD256): Ditto.
4782         (IX86_BUILTIN_VFNMSUBPS256): Ditto.
4783         (IX86_BUILTIN_VFNMSUBPD256): Ditto.
4784         (enum multi_arg_type): New enum for describing the various FMA4
4785         intrinsic argument types.
4786         (bdesc_multi_arg): New table for FMA4 intrinsics.
4787         (ix86_init_mmx_sse_builtins): Add FMA4 intrinsic support.
4788         (ix86_expand_multi_arg_builtin): New function for creating FMA4
4789         intrinsics.
4790         (ix86_expand_builtin): Add FMA4 intrinsic support.
4791         (ix86_fma4_valid_op_p): New function to validate FMA4 3 and 4
4792         operand instructions.
4793         (ix86_expand_fma4_multiple_memory): New function to split the
4794         second memory reference from FMA4 instructions.
4795         * config/i386/sse.md (ssemodesuffixf4): New mode attribute for FMA4.
4796         (ssemodesuffixf2s): Ditto.
4797         (fma4_fmadd<mode>4): Add FMA4 floating point multiply/add
4798         instructions.
4799         (fma4_fmsub<mode>4): Ditto.
4800         (fma4_fnmadd<mode>4): Ditto.
4801         (fma4_fnmsub<mode>4): Ditto.
4802         (fma4_vmfmadd<mode>4): Ditto.
4803         (fma4_vmfmsub<mode>4): Ditto.
4804         (fma4_vmfnmadd<mode>4): Ditto.
4805         (fma4_vmfnmsub<mode>4): Ditto.
4806         (fma4_fmadd<mode>4256): Ditto.
4807         (fma4_fmsub<mode>4256): Ditto.
4808         (fma4_fnmadd<mode>4256): Ditto.
4809         (fma4_fnmsub<mode>4256): Ditto.
4810         (fma4_fmaddsubv8sf4): Ditto.
4811         (fma4_fmaddsubv4sf4): Ditto.
4812         (fma4_fmaddsubv4df4): Ditto.
4813         (fma4_fmaddsubv2df4): Ditto.
4814         (fma4_fmsubaddv8sf4): Ditto.
4815         (fma4_fmsubaddv4sf4): Ditto.
4816         (fma4_fmsubaddv4df4): Ditto.
4817         (fma4_fmsubaddv2df4): Ditto.
4818         (fma4i_fmadd<mode>4): Add FMA4 floating point multiply/add
4819         instructions for intrinsics.
4820         (fma4i_fmsub<mode>4): Ditto.
4821         (fma4i_fnmadd<mode>4): Ditto.
4822         (fma4i_fnmsub<mode>4): Ditto.
4823         (fma4i_vmfmadd<mode>4): Ditto.
4824         (fma4i_vmfmsub<mode>4): Ditto.
4825         (fma4i_vmfnmadd<mode>4): Ditto.
4826         (fma4i_vmfnmsub<mode>4): Ditto.
4827         (fma4i_fmadd<mode>4256): Ditto.
4828         (fma4i_fmsub<mode>4256): Ditto.
4829         (fma4i_fnmadd<mode>4256): Ditto.
4830         (fma4i_fnmsub<mode>4256): Ditto.
4831         (fma4i_fmaddsubv8sf4): Ditto.
4832         (fma4i_fmaddsubv4sf4): Ditto.
4833         (fma4i_fmaddsubv4df4): Ditto.
4834         (fma4i_fmaddsubv2df4): Ditto.
4835         (fma4i_fmsubaddv8sf4): Ditto.
4836         (fma4i_fmsubaddv4sf4): Ditto.
4837         (fma4i_fmsubaddv4df4): Ditto.
4838         (fma4i_fmsubaddv2df4): Ditto.
4839
4840         * doc/invoke.texi (-mfma4): Add documentation.
4841         * doc/extend.texi (x86 intrinsics): Add FMA4 intrinsics.
4842
4843 2009-09-29  Richard Henderson  <rth@redhat.com>
4844
4845         * tree-eh.c (unsplit_eh): Do not unsplit if there's already
4846         an edge to the new destination block.
4847
4848 2009-09-29  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
4849
4850         PR target/41393
4851         * pa.c (hppa_profile_hook): Use
4852         make_reg_eh_region_note_nothrow_nononlocal to add REG_EH_REGION note.
4853
4854 2009-09-29  Steve Ellcey  <sje@cup.hp.com>
4855             Alexander Monakov  <amonakov@ispras.ru>
4856
4857         PR target/41365
4858         * config/ia64/predicates.md (not_postinc_destination_operand): New.
4859         (not_postinc_memory_operand): New.
4860         (not_postinc_move_operand): New.
4861         * config/ia64/ia64.md (*cmovdi_internal): Disallow autoincrement.
4862         (*cmovsi_internal): Ditto.
4863
4864 2009-09-29  Pat Haugen  <pthaugen@us.ibm.com>
4865
4866         * config/rs6000/rs6000.c (rs6000_issue_rate): Don't artificially
4867         restrict issue_rate in first pass when scheduling for register
4868         pressure.
4869
4870 2009-09-29  Basile Starynkevitch  <basile@starynkevitch.net>
4871             Rafael Avila de Espindola  <espindola@google.com>
4872
4873         * gengtype.c (plugin_output): New.
4874         (get_output_file_with_visibility): Return plugin_output for plugins.
4875         (main): Parse and use the -P option.
4876         * gty.texi: Update the command line format.
4877
4878 2009-09-29  Jakub Jelinek  <jakub@redhat.com>
4879
4880         PR debug/41438
4881         * dwarf2out.c (const_ok_for_output_1, const_ok_for_output): New
4882         functions.
4883         (mem_loc_descriptor, loc_descriptor, add_const_value_attribute): Bail
4884         out if !const_ok_for_output.
4885
4886         PR debug/41474
4887         * dwarf2out.c (mem_loc_descriptor) <case CONCAT, case CONCATN,
4888         case VAR_LOCATION>: Remove gcc_unreachable ().
4889
4890 2009-09-29  Harsha Jagasia  <harsha.jagasia@amd.com>
4891
4892         * config.gcc (i[34567]86-*-*): Remove mmintrin-common.h.
4893         (x86_64-*-*): Ditto.
4894         * config/i386/smmintrin.h: Move instructions in mmintrin-common.h
4895         back to smmintrin.h.
4896         * config/i386/cpuid.h (bit_SSE5): Remove SSE5 bit.
4897         * config/i386/x86intrin.h: Remove SSE5.
4898         * config/i386/mmintrin-common.h: Delete file.
4899         * doc/extend.texi (x86 intrinsics): Remove SSE5 flags and builtins.
4900
4901 2009-09-29  Richard Guenther  <rguenther@suse.de>
4902
4903         * alias.c (ao_ref_from_mem): Properly deal with off decl accesses
4904         resulting from stack temporaries on STRICT_ALIGNMENT targets.
4905
4906 2009-09-29  Nick Clifton  <nickc@redhat.com>
4907
4908         * function.c (current_function_name): If there is no current
4909         function just return "<none>".
4910
4911 2009-09-28  Sriraman Tallam  <tmsriram@google.com>
4912
4913         * tree-pass.h (register_pass_info): New structure.
4914         (pass_positioning_ops): Move enum from gcc-plugin.h.
4915         (register_pass): New function.
4916         * gcc-plugin.h (plugin_pass): Delete structure.
4917         (pass_positioning_ops): Delete enum.
4918         * plugin.c (regsiter_pass): Delete function.
4919         (position_pass): Delete function.
4920         (added_pass_nodes): Delete variable.
4921         (prev_added_pass_nodes): Delete variable.
4922         (pass_list_node): Delete structure.
4923         * passes.c (make_pass_instance): New function.
4924         (next_pass_1): Change to call make_pass_instance.
4925         (pass_list_node): Move structure from gcc-plugin.h.
4926         (added_pass_nodes): Move variable from plugin.c.
4927         (prev_added_pass_nodes): Move variable from plugin.c.
4928         (position_pass): New function.
4929         (register_pass): New function.
4930
4931 2009-09-28  Easwaran Raman  <eraman@google.com>
4932
4933         * ifcvt.c (noce_try_abs): Recognize pattern and call
4934         expand_one_cmpl_abs_nojump.
4935         * optabs.c (expand_one_cmpl_abs_nojump): New function.
4936         * optabs.h (expand_one_cmpl_abs_nojump): Declare.
4937
4938 2009-09-28  Ian Lance Taylor  <iant@google.com>
4939
4940         PR middle-end/40500
4941         * c-opts.c (c_common_handle_option): Don't set
4942         warn_jump_misses_init for -Wall.
4943         * doc/invoke.texi (Warning Options): Update documentation.
4944
4945 2009-09-28  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
4946
4947         * Makefile.in ($(out_object_file)): Depend on
4948         gt-$(basename $(notdir $(out_file))).h.
4949
4950 2009-09-28  Richard Henderson  <rth@redhat.com>
4951
4952         * except.h (struct eh_region_d): Add use_cxa_end_cleanup.
4953         * except.c (gen_eh_region): Set it.
4954         (duplicate_eh_regions_1): Copy it.
4955         * tree-eh.c (lower_resx): Use it to determine which function
4956         to call to resume.
4957
4958         * langhooks.h (struct lang_hooks): Add eh_use_cxa_end_cleanup.
4959         * langhooks-def.h (LANG_HOOKS_EH_USE_CXA_END_CLEANUP): New.
4960         * builtins.def (BUILT_IN_CXA_END_CLEANUP): New.
4961         * tree.c (build_common_builtin_nodes): Remove parameter.  Build
4962         BUILT_IN_CXA_END_CLEANUP if necessary.
4963
4964         * c-common.c (c_define_builtins): Update call to
4965         build_common_builtin_nodes.
4966
4967 2009-09-28  Andrew Pinski  <andrew_pinski@playstation.sony.com>
4968
4969         * spu.c (get_branch_target): Return NULL for ASM_OPERANDS patterns.
4970
4971 2009-09-28  Michael Matz  <matz@suse.de>
4972
4973         * builtins.c (interclass_mathfn_icode): New helper.
4974         (expand_builtin_interclass_mathfn): Use it here, and split folding
4975         into ...
4976         (fold_builtin_interclass_mathfn): ... this new folder.
4977         (build_call_nofold_loc): New static helper.
4978         (build_call_nofold): New wrapper macro for above.
4979         (expand_builtin_int_roundingfn): Use it instead of build_call_expr.
4980         (expand_builtin_pow): Ditto.
4981         (expand_builtin_memset_args): Ditto.
4982         (expand_builtin_printf): Ditto.
4983         (expand_builtin_fprintf): Ditto.
4984         (expand_builtin_sprintf): Ditto.
4985         (expand_builtin_memory_chk): Ditto.
4986         (expand_builtin_mempcpy_args): Ditto and don't call folders.
4987         (expand_builtin_stpcpy): Ditto.
4988         (expand_builtin_strcmp): Ditto.
4989         (expand_builtin_strncmp): Ditto.
4990         (expand_builtin_strcpy): Remove FNDECL and MODE arguments.
4991         (expand_builtin_strcpy_args): Don't call folders.
4992         (expand_builtin_memcmp): Ditto.
4993         (expand_builtin_strncpy): Ditto, and use target.
4994         (expand_builtin_memcpy): Ditto.
4995         (expand_builtin_strstr, expand_builtin_strchr, expand_builtin_strrchr,
4996         expand_builtin_strpbrk, expand_builtin_memmove,
4997         expand_builtin_memmove_args, expand_builtin_bcopy,
4998         expand_builtin_memchr, expand_builtin_strcat, expand_builtin_strncat,
4999         expand_builtin_strspn, expand_builtin_strcspn,
5000         expand_builtin_fputs): Remove these.
5001         (expand_builtin): Don't call the above, change calls to other
5002         expanders that changed prototype.
5003         (fold_builtin_stpcpy): New folder split out from expand_builtin_stpcpy.
5004         (fold_builtin_1 <ISFINITE, ISINF, ISNORMAL>): Call
5005         fold_builtin_interclass_mathfn.
5006         (fold_builtin_2 <STPCPY>): Call fold_builtin_stpcpy.
5007         (fold_builtin_strcat): Add folding split from expand_builtin_strcat.
5008
5009         * fold-const.c (fold_binary_loc <NE_EXPR>): Add !exp != 0 -> !exp.
5010         * passes.c (init_optimization_passes): Move pass_fold_builtins
5011         after last phiopt pass.
5012         * tree-inline.c (fold_marked_statements): When folding builtins
5013         iterate over all instruction potentially generated.
5014         * tree-ssa-ccp.c (gimplify_and_update_call_from_tree): Declare
5015         earlier.
5016         (fold_gimple_call): Use it to always fold calls (into potentially
5017         multiple instructions).
5018         * tree-ssa-dom.c (optimize_stmt): Resolve __builtin_constant_p
5019         calls into zero at this time.
5020         * tree-ssa-propagate.c (substitute_and_fold): Ignore multiple
5021         statements generated by builtin folding.
5022
5023 2009-09-28  Nick Clifton  <nickc@redhat.com>
5024
5025         * config/m32r/m32r.c (m32r_is_insn): Return false for debugging insns.
5026
5027 2009-09-28  Duncan Sands  <baldrick@free.fr>
5028
5029         * gcc-plugin.h (PLUGIN_REGISTER_GGC_CACHES): New event.
5030         * plugin.c (plugin_event_name): Add PLUGIN_REGISTER_GGC_CACHES.
5031         (register_callback): Dispatch it.
5032         (invoke_plugin_callbacks): Incorporate in sanity check.
5033         * ggc.h (ggc_register_cache_tab): Add declaration.
5034         * ggc-common.c (ggc_register_root_tab): Simplify.
5035         (const_ggc_cache_tab_t): New typedef.
5036         (extra_cache_vec): New vector of dynamically added cache tables.
5037         (ggc_register_cache_tab): New function.
5038         (ggc_scan_cache_tab): New function.
5039         (ggc_mark_roots): Simplify dynamic roots.  Handle dynamic caches.
5040         * doc/plugins.texi: Document PLUGIN_REGISTER_GGC_CACHES.
5041
5042 2009-09-27  Richard Henderson  <rth@redhat.com>
5043
5044         * tree-ssa-ccp.c (optimize_stack_restore): Relax the conditions under
5045         which we remove __builtin_stack_restore.
5046
5047 2009-09-27  Bernd Schmidt  <bernd.schmidt@analog.com>
5048
5049         * loop-iv.c (iv_analyze_op): Use function_invariant_p, not CONSTANT_P,
5050         to test for GRD_INVARIANT.
5051         (simple_rhs_p): Anything that's function_invariant_p is fine.
5052
5053 2009-09-27  Rafael Avila de Espindola  <espindola@google.com>
5054
5055         * gengtype.c (main): Use plunge_files instead of plugin_output.
5056
5057 2009-09-27  Basile Starynkevitch  <basile@starynkevitch.net>
5058             Rafael Avila de Espindola  <espindola@google.com>
5059
5060         * gengtype.c (write_root, write_roots): Add a emit_pch argument.
5061         Don't print pch related info if it is false.
5062         (main): Don't print pch info in plugin mode.
5063
5064 2009-09-27  Eric Botcazou  <ebotcazou@adacore.com>
5065
5066         * dwarf2out.c (enum dw_val_class): Replace dw_val_class_long_long
5067         with dw_val_class_const_double.
5068         (struct dw_val_struct): Replace val_long_long with val_double and
5069         adjust for above change.
5070         (output_loc_operands): Likewise.
5071         (add_AT_long_long): Rename into...
5072         (add_AT_double): ...this.
5073         (print_die): Replace dw_val_class_long_long with
5074         dw_val_class_const_double and adjust.
5075         (attr_checksum): Likewise.
5076         (same_dw_val_p): Likewise.
5077         (size_of_die): Likewise.
5078         (value_format): Likewise.
5079         (output_die): Likewise.
5080         (loc_descriptor) <CONST_DOUBLE>: Likewise.
5081         (add_const_value_attribute) <CONST_DOUBLE>: Call add_AT_double
5082         instead of add_AT_long_long.
5083         (add_bound_info) <INTEGER_CST>: Generate the bound as an unsigned
5084         value with the precision of its type.
5085
5086 2009-09-27  Andreas Schwab  <schwab@linux-m68k.org>
5087
5088         PR c/41476
5089         * c-typeck.c (build_conditional_expr): Use the readonly and
5090         volatile flags of the operand types, not of the operands itself.
5091
5092 2009-09-27  Peter O'Gorman  <pogma@thewrittenword.com>
5093
5094         * collect2.c (main): Look for -brtl before adding libraries.
5095
5096 2009-09-27  Jonathan Gray  <jsg@openbsd.org>
5097
5098         * config.gcc: Update OpenBSD targets.
5099         * config/openbsd-stdint.h: New file.
5100         * config/openbsd-libpthread.h: New file.
5101         * config/openbsd.h: Update and break out LIB_SPEC definition.
5102         * config/alpha/openbsd.h: Overhaul to reflect ELF migration.
5103         * config/i386/openbsdelf.h: Correct types.
5104         * config/m68k/openbsd.h: Likewise.
5105         * config/mips/openbsd.h: Likewise.
5106         * config/vax/openbsd.h: Likewise.
5107
5108 2009-09-27  Eric Botcazou  <ebotcazou@adacore.com>
5109
5110         * fold-const.c (maybe_lvalue_p): Return false for M(IN|AX)_EXPR.
5111         (extract_muldiv_1) <MINUS_EXPR>: Swap operands if necessary.
5112         * stor-layout.c (layout_type) <ARRAY_TYPE>: Do not take the maximum
5113         of the length and zero.
5114
5115 2009-09-27  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
5116
5117         * Makefile.in (TOPLEV_H): Use $(INPUT_H) not input.h.
5118         (FLAGS_H): Add options.h $(REAL_H).
5119         (SEL_SCHED_IR_H): Add $(BITMAP_H) vecprim.h $(CFGLOOP_H).
5120         (TREE_VECTORIZER_H): New.
5121         (EBITMAP_H): Renamed from EBIMAP_H.
5122         (c-decl.o, c-objc-common.o, c-pretty-print.o, attribs.o, c-omp.o)
5123         (gtype-desc.o, ggc-common.o, ggc-page.o, ggc-zone.o, langhooks.o)
5124         (tree.o, tree-ssa-structalias.o, tree-ssa-ter.o, tree-ssanames.o)
5125         (tree-phinodes.o, tree-ssa-loop.o, tree-ssa-math-opts.o)
5126         (gimple-low.o, omp-low.o, sese.o, graphite-blocking.o)
5127         (graphite-clast-to-gimple.o, graphite-dependences.o)
5128         (graphite-interchange.o, graphite-poly.o, graphite-scop-detection.o)
5129         (graphite-sese-to-poly.o, tree-vect-loop.o, tree-vect-loop-manip.o)
5130         (tree-vect-patterns.o, tree-vect-slp.o, tree-vect-stmts.o)
5131         (tree-vect-data-refs.o, tree-vectorizer.o, gimple.o, tree-mudflap.o)
5132         (targhooks.o, stmt.o, emit-rtl.o, ipa.o, matrix-reorg.o, ipa-inline.o)
5133         (gcse.o, tree-ssa-ccp.o, df-byte-scan.o, vec.o, caller-save.o)
5134         (ira-build.o, ira-costs.o, ira-color.o, ira-emit.o, ira.o)
5135         (haifa-sched.o, sched-rgn.o, sel-sched.o, sel-sched-dump.o)
5136         (sel-sched-ir.o, final.o, $(out_object_file)): Dependencies
5137         updated and fixed as per above changes and per
5138         check_makefile_deps.sh output.
5139
5140         PR bootstrap/40928
5141         * configure.ac: Use $LIBS for '-ldl', not $LDFLAGS.
5142         * configure: Regenerate.
5143
5144 2009-09-26  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
5145
5146         * doc/install.texi: Update minimum MPC version to 0.7.
5147
5148 2009-09-26  Gerald Pfeifer  <gerald@pfeifer.com>
5149
5150         * doc/install.texi (Binaries): Remove reference to the binary
5151         distribution CD-ROM from the FSF.
5152
5153 2009-09-26  Michael Matz  <matz@suse.de>
5154
5155         PR lto/40758
5156         PR middle-end/41470
5157         * tree-ssa-coalesce.c (coalesce_ssa_name): Add only SSA names
5158         that are mentioned in the body.
5159
5160 2009-09-26  Michael Matz  <matz@suse.de>
5161
5162         PR tree-optimization/41454
5163         * tree-ssa-dom (stmts_to_rescan): Remove variable.
5164         (tree_ssa_dominator_optimize): Don't allocate and free it.
5165         (dom_opt_leave_block): Don't iterate over it.
5166         (eliminate_redundant_computations): Don't return a value.
5167         (cprop_operand, cprop_into_stmt): Ditto.
5168         (optimize_stmt): Don't defer updating stmts.
5169
5170 2009-09-25  Dodji Seketeli  <dodji@redhat.com>
5171
5172         * dwarf2out.c (dwarf_tag_name, gen_generic_params_dies,
5173         generic_parameter_die, template_parameter_pack_die,
5174         gen_formal_parameter_die, gen_subprogram_die): Adjust after
5175         renaming DW_TAG_formal_parameter_pack and
5176         DW_TAG_template_parameter_pack into DW_TAG_GNU_formal_parameter_pack
5177         and DW_TAG_GNU_template_parameter_pack.
5178
5179 2009-09-25  Anatoly Sokolov  <aesok@post.ru>
5180
5181         * config/v850/v850.h (FUNCTION_VALUE): Remove.
5182         * config/v850/v850.c (v850_function_value): New function.
5183         (TARGET_FUNCTION_VALUE): Define.
5184
5185 2009-09-25  Jakub Jelinek  <jakub@redhat.com>
5186
5187         * tree-vect-stmts.c (vectorizable_call): Call
5188         mark_symbols_for_renaming after vect_finish_stmt_generation.
5189
5190         * dwarf2out.c (tls_mem_loc_descriptor): Pass 1 instead of 2
5191         to loc_descriptor_from_tree.
5192         (add_location_or_const_value_attribute): Pass 0 instead of 2
5193         for decl_by_reference_p decls.
5194
5195 2009-09-25  Richard Guenther  <rguenther@suse.de>
5196
5197         PR middle-end/41463
5198         * tree-dfa.c (get_ref_base_and_extent): Fix issue with trailing
5199         arrays again.
5200
5201 2009-09-25  Ben Elliston  <bje@au.ibm.com>
5202
5203         * doc/invoke.texi (RS/6000 and PowerPC Options): Add missing comma
5204         after `power7'.
5205
5206 2009-09-25  Alan Modra  <amodra@bigpond.net.au>
5207
5208         * config/rs6000/rs6000.md (load_toc_v4_PIC_3c): Correct POWER
5209         form of instruction.
5210
5211 2009-09-24  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
5212
5213         PR middle-end/41435
5214         * fold-const.c (const_binop): Handle complex int division.
5215         * tree-complex.c (expand_complex_div_straight,
5216         expand_complex_div_wide): Update comments.
5217
5218 2009-09-24  DJ Delorie  <dj@redhat.com>
5219
5220         PR target/41456
5221         * config/m32c/m32c.h (REG_CLASS_CONTENTS): Add R13.
5222         (reg_class): Likewise.
5223         (REG_CLASS_NAMES): Likewise.
5224         * config/m32c/m32c.c (m32c_reg_class_from_constraint): Likewise.
5225         (m32c_override_options): Disable -fivopts for M32C.
5226
5227 2009-09-24  Michael Meissner  <meissner@linux.vnet.ibm.com>
5228
5229         * config/rs6000/predicates.md (indexed_or_indirect_operand):
5230         Delete VSX load/store with update support.
5231         * config/rs6000/rs6000.c (rs6000_legitimate_address_p): Ditto.
5232         * config/rs6000/vsx.md (vsx_mov<mode>): Ditto.
5233         (vsx_movti): Ditto.
5234         (VSX_U): Delete.
5235         (VSbit): Ditto.
5236         (VStype_load_update): Ditto.
5237         (VStype_store_update): Ditto.
5238         (vsx_load<VSX_U:mode>_update_<P:mptrsize>): Ditto.
5239         (vsx_store<VSX_U:mode>_update_<P:mptrsize>): Ditto.
5240
5241         * config/rs6000/rs6000.h (enum rs6000_builtins): Delete VSX
5242         load/store with update builtins.
5243
5244 2009-09-24  Kai Tietz  <kai.tietz@onevision.com>
5245
5246         * libgcc2.c (L_trampoline): Prototype for getpagesize
5247         and mprotect in WINNT case.
5248
5249 2009-09-24  Anatoly Sokolov  <aesok@post.ru>
5250
5251         * config/rs6000/rs6000.h (FUNCTION_VALUE): Remove macro.
5252         * config/rs6000/rs6000-protos.h (rs6000_function_value): Remove.
5253         * config/rs6000/rs6000.c (rs6000_function_value): Make static, add
5254         'outgoing' argument.
5255         (TARGET_FUNCTION_VALUE): Define.
5256
5257 2009-09-24  Iain Sandoe  <iain.sandoe@sandoe-acoustics.co.uk>
5258
5259         * config/darwin.h (DWARF2_DEBUGGING_INFO): Define as 1.
5260
5261 2009-09-24  Iain Sandoe  <iain.sandoe@sandoe-acoustics.co.uk>
5262
5263         PR bootstrap/41405
5264         * common.opt: Initialize dwarf_strict to -1.
5265         * toplev.c (process_options): Catch unset dwarf_strict
5266         and set to 0 for all targets not overriding.
5267         * config/darwin.c (darwin_override_options): Catch unset
5268         dwarf_strict and override to 1.
5269
5270 2009-09-24  Jeff Law  <law@redhat.com>
5271
5272         * tree-into-ssa.c (rewrite_into_ssa): Free interesting_blocks.
5273
5274 2009-09-24  Richard Guenther  <rguenther@suse.de>
5275
5276         PR tree-optimization/36143
5277         PR tree-optimization/38747
5278         * tree-ssa-forwprop.c (forward_propagate_addr_expr_1): Only
5279         create VIEW_CONVERT_EXPRs for TBAA compatible accesses.
5280
5281 2009-09-24  Jakub Jelinek  <jakub@redhat.com>
5282
5283         PR bootstrap/41457
5284         * dwarf2out.c (add_const_value_attribute): For HIGH and CONST_FIXED,
5285         return false instead of gcc_unreachable ().  For CONST return the
5286         value returned by recursive call instead of always returning true.
5287         (tree_add_const_value_attribute): Return the value returned by
5288         add_const_value_attribute instead of always returning true if rtl
5289         is non-NULL.
5290
5291 2009-09-23  Justin Seyster  <jrseys@gmail.com>
5292
5293         * Makefile.in (PLUGIN_HEADERS): Include real.h.
5294
5295 2009-09-24  Jakub Jelinek  <jakub@redhat.com>
5296
5297         * cgraphunit.c (cgraph_lower_function): Revert last change.
5298         * targhooks.c (default_static_chain): Use !DECL_STATIC_CHAIN
5299         instead of DECL_NO_STATIC_CHAIN.
5300         * tree-cfg.c (verify_gimple_call): Likewise.
5301         * tree-nested.c (get_chain_decl, get_chain_field,
5302         convert_tramp_reference_op, convert_gimple_call): Likewise.
5303         (convert_all_function_calls): Likewise.  Always set or clear
5304         DECL_STATIC_CHAIN initially, for !n->outer clear it.
5305         (lower_nested_functions): Remove DECL_NO_STATIC_CHAIN checking code.
5306         * c-parser.c (c_parser_declaration_or_fndef): Set DECL_STATIC_CHAIN
5307         if nested.
5308         * print-tree.c (print_node): Handle DECL_STATIC_CHAIN instead of
5309         DECL_NO_STATIC_CHAIN.
5310         * config/i386/i386.c (ix86_static_chain): Use !DECL_STATIC_CHAIN
5311         instead of DECL_NO_STATIC_CHAIN.
5312         (ix86_function_regparm, find_drap_reg): Likewise.  Don't test
5313         decl_function_context.
5314         * varasm.c (initializer_constant_valid_p): Likewise.
5315         * tree.h (DECL_NO_STATIC_CHAIN): Renamed to ...
5316         (DECL_STATIC_CHAIN): ... this.
5317         * config/moxie/moxie.c (moxie_static_chain): Use !DECL_STATIC_CHAIN
5318         instead of DECL_NO_STATIC_CHAIN.
5319
5320 2009-09-23  Basile Starynkevitch  <basile@starynkevitch.net>
5321             Rafael Avila de Espindola  <espindola@google.com>
5322
5323         * gengtype.c (nb_plugin_files): Make it unsigned to match
5324         num_gt_files. Adjust other variables to avoid warnings.
5325         (main): Allocate an all zero lang_bitmap before each plugin file name
5326         to match regular file names.
5327
5328 2009-09-23  Richard Henderson  <rth@redhat.com>
5329
5330         * doc/tm.texi (STATIC_CHAIN, STATIC_CHAIN_INCOMING): Remove.
5331         (TARGET_STATIC_CHAIN): Mention that this hook must be used for
5332         static chain passed in memory.
5333         * system.h (STATIC_CHAIN, STATIC_CHAIN_INCOMING): Poison.
5334         * targhooks.c (default_static_chain): Don't handle STATIC_CHAIN,
5335         STATIC_CHAIN_INCOMING.  Issue a sorry if there's no
5336         STATIC_CHAIN_REGNUM defined.
5337
5338         * config/picochip/picochip-protos.h: s/class/klass/.
5339         * config/picochip/picochip.c (TARGET_STATIC_CHAIN): New.
5340         (picochip_static_chain): New.
5341         * config/picochip/picochip.h (STATIC_CHAIN): Remove.
5342         (STATIC_CHAIN_INCOMING): Remove.
5343
5344         * config/xtensa/xtensa.c (TARGET_STATIC_CHAIN): New.
5345         (xtensa_static_chain): New.
5346         * config/xtensa/xtensa.h (STATIC_CHAIN): Remove.
5347         (STATIC_CHAIN_INCOMING): Remove.
5348
5349 2009-09-23  Anatoly Sokolov  <aesok@post.ru>
5350
5351         * config/pa/pa.h (FUNCTION_VALUE): Remove macro.
5352         * config/pa/pa-protos.h (function_value): Remove.
5353         * config/pa/pa.c (pa_function_value): Rename from function_value.
5354         Make static, add 'outgoing' argument.
5355         (TARGET_FUNCTION_VALUE): Define.
5356
5357 2009-09-23  Anatoly Sokolov  <aesok@post.ru>
5358
5359         * config/avr/avr.c (avr_regs_to_save): Use current_function_is_leaf
5360         instead of cfun->machine->is_leaf.
5361         * config/avr/avr.h (machine_function): Remove is_leaf field.
5362
5363 2009-09-23  Jakub Jelinek  <jakub@redhat.com>
5364
5365         PR debug/41439
5366         * dwarf2out.c (address_of_int_loc_descriptor): Don't emit
5367         DW_OP_piece after DW_OP_stack_value, adjust size calculations
5368         for it, when DW_OP_stack_value and DW_OP_implicit_value has
5369         the same size, prefer DW_OP_stack_value.
5370         (loc_descriptor, loc_list_for_address_of_addr_expr_of_indirect_ref,
5371         loc_list_from_tree): Don't emit DW_OP_piece after DW_OP_stack_value.
5372
5373 2009-09-23  Alexandre Oliva  <aoliva@redhat.com>
5374
5375         PR debug/41353
5376         * var-tracking.c (add_with_sets): Sort MO_VAL_LOC last among uses.
5377
5378 2009-09-23  Alexandre Oliva  <aoliva@redhat.com>
5379
5380         PR debug/41248
5381         * cfgexpand.c (convert_debug_memory_address): New.
5382         (expand_debug_expr): Convert base address and offset to the same
5383         mode.  Use it to convert addresses to other modes.  Accept
5384         ptr_mode addresses.
5385
5386 2009-09-23  Dodji Seketeli <dodji@redhat.com>
5387
5388         PR debug/41065
5389         * function.h (types_used_by_vars_hash): Declare new hash table.
5390         (types_used_by_vars_eq, types_used_by_var_decl_insert): Declare
5391         equality and hash function for the hash table.
5392         (types_used_by_cur_var_decl): Declare a new global chained list.
5393         (types_used_by_var_decl_insert): Declare new function.
5394         * function.c (types_used_by_vars_hash): Define the hashtable ...
5395         (types_used_by_vars_eq, types_used_by_vars_do_hash): ... as well as
5396         its equality and hash functions.
5397         (hash_types_used_by_vars_entry): New hash helper.
5398         (types_used_by_cur_var_decl): Define the global chained list.
5399         (used_types_insert): Update the list of types used by the global
5400         variable being parsed.
5401         (types_used_by_var_decl_insert): Define new function.
5402         * c-common.h (record_types_used_by_current_var_decl): Declare ...
5403         * c-common.c (record_types_used_by_current_var_decl): ... new
5404         function.
5405         * c-decl.c (finish_decl): Record the types used by the global
5406         variable declaration we've just parsed.
5407         * dwarf2out.c (premark_used_types): Insert a new line between
5408         comment and function.
5409         (premark_used_types_helper): Fix comment.
5410         (premark_types_used_by_global_vars_helper,
5411         premark_types_used_by_global_vars): New functions.
5412         (prune_unused_types): Do not prune types used by global variables.
5413
5414 2009-09-23  Richard Guenther  <rguenther@suse.de>
5415
5416         * alias.c (ao_ref_from_mem): Correct for negative MEM_OFFSET
5417         produced for bigendian targets with promoted subregs.
5418
5419 2009-09-23  Richard Guenther  <rguenther@suse.de>
5420
5421         * value-prof.c (gimple_ic): Purge old EH edges only after building
5422         the new ones.
5423
5424 2009-09-23  Nick Clifton  <nickc@redhat.com>
5425
5426         * config/arc/arc.c (arc_trampoline_init): Fix typo.
5427
5428 2009-09-23  Jakub Jelinek  <jakub@redhat.com>
5429
5430         PR bootstrap/41405
5431         * doc/invoke.texi: Document -gstrict-dwarf and -gno-strict-dwarf.
5432
5433         PR bootstrap/41436
5434         * cgraphunit.c (cgraph_lower_function): Set DECL_NO_STATIC_CHAIN
5435         on non-nested functions.
5436
5437 2009-09-23  Jakub Jelinek  <jakub@redhat.com>
5438             Jan Hubicka  <jh@suse.cz>
5439
5440         * dwarf2out.c (loc_list_plus_const): Only define if
5441         DWARF2_DEBUGGING_INFO.
5442         (address_of_int_loc_descriptor): Likewise.
5443
5444         PR debug/41411
5445         * dwarf2out.c (mem_loc_descriptor): Handle HIGH.
5446
5447 2009-09-23  Uros Bizjak  <ubizjak@gmail.com>
5448
5449         PR c/39779
5450         * c-typeck.c (build_binary_op) <short_shift>: Check that integer
5451         constant is more than zero.
5452
5453 2009-09-23  Alan Modra  <amodra@bigpond.net.au>
5454
5455         PR target/40473
5456         * config/rs6000/rs6000.c (rs6000_output_function_prologue): Don't
5457         call final to emit non-scheduled prologue, instead insert at entry.
5458
5459 2009-09-22  Loren J. Rittle  <ljrittle@acm.org>
5460             Joseph S. Myers  <joseph@codesourcery.com>
5461
5462         * doc/install.texi (*-*-freebsd*): Add proper format codes.
5463
5464 2009-09-22  Basile Starynkevitch  <basile@starynkevitch.net>
5465             Rafael Avila de Espindola  <espindola@google.com>
5466
5467         * gengtype.c (is_file_equal): New function.
5468         (close_output_files): Use is_file_equal. Free of->buf.
5469
5470 2009-09-22  Basile Starynkevitch  <basile@starynkevitch.net>
5471             Rafael Avila de Espindola  <espindola@google.com>
5472
5473         * gengtype.c (write_types, write_local): Add the output_header
5474         argument. Update all callers.
5475
5476 2009-09-22  Dodji Seketeli  <dodji@redhat.com>
5477
5478         * dwarf2out.c (template_parameter_pack_die,
5479         gen_formal_parameter_pack_die ): New functions.
5480         (make_ith_pack_parameter_name): Remove this function.
5481         (dwarf_tag_name): Support printing DW_TAG_template_parameter_pack and
5482         DW_TAG_formal_parameter_pack.
5483         (gen_generic_params_dies): Represent each template parameter pack
5484         by a DW_TAG_template_parameter_pack DIE. Argument pack elements are
5485         represented by usual DW_TAG_template_*_parameter DIEs that are
5486         children of the DW_TAG_template_parameter_pack element DIE.
5487         (generic_parameter_die): This doesn't deal with parameter pack
5488         names anymore. Don't generate DW_AT_name for some DIEs, e.g. children
5489         of parameter pack DIEs.
5490         (gen_formal_parameter_die): Add a flag to not emit DW_AT_name
5491         in certain cases, e.g. for pack elements.
5492         (gen_formal_types_die, gen_decl_die): Adjust usage of
5493         gen_formal_parameter_die.
5494         (gen_subprogram_die): Represent each function parameter pack by a
5495         DW_TAG_formal_parameter_pack DIE. Arguments of of the pack are
5496         represented by usual DW_TAG_formal_parameter DIEs that are children
5497         of the DW_TAG_formal_parameter_pack DIE. Remove references to
5498         ____builtin_va_alist decls as no part of the compiler uses those
5499         anymore.
5500         * langhooks.h (struct lang_hooks_for_decls): Add
5501         function_parm_expanded_from_pack_p, get_generic_function_decl
5502         and function_parameter_pack_p hooks.  Fix comment for
5503         get_innermost_generic_parms hook.
5504         * langhooks-def.h (LANG_HOOKS_FUNCTION_PARAMETER_PACK_P,
5505         LANG_HOOKS_FUNCTION_PARM_EXPANDED_FROM_PACK_P ): Declare new hook
5506         macros and use them to initialize lang_hook.
5507
5508 2009-09-22  Richard Henderson  <rth@redhat.com>
5509
5510         * system.h (TRAMPOLINE_TEMPLATE, INITIALIZE_TRAMPOLINE): Poison.
5511         (TRAMPOLINE_ADJUST_ADDRESS): Poison.
5512         * target-def.h (TARGET_ASM_TRAMPOLINE_TEMPLATE): Don't conditionalize
5513         on TRAMPOLINE_TEMPLATE.
5514         (TARGET_TRAMPOLINE_ADJUST_ADDRESS): Don't conditionalize on
5515         TRAMPOLINE_ADJUST_ADDRESS.
5516         * targhooks.c (default_asm_trampoline_template): Remove.
5517         (default_trampoline_adjust_address): Remove.
5518         (default_trampoline_init): Don't handle INITIALIZE_TRAMPOLINE.
5519         * targhooks.h: Update decls.
5520
5521 2009-09-22  Dave Korn  <dave.korn.cygwin@gmail.com>
5522
5523         * config/i386/cygming.h (TARGET_USE_JCR_SECTION): Enable.
5524         * config/i386/cygwin.h (LIBGCJ_SONAME): Define.
5525         * config/i386/mingw32.h (LIBGCJ_SONAME): Likewise.
5526
5527 2009-09-22  Alexandre Oliva  <aoliva@redhat.com>
5528
5529         PR debug/41295
5530         * reload1.c (reload): Reset debug insns with pseudos without
5531         equivalences.
5532
5533 2009-09-22  Janis Johnson  <janis187@us.ibm.com>
5534
5535         * config/i386/i386.c (ix86_scalar_mode_supported_p): Don't return
5536         unconditional true for decimal float modes.
5537         * config/rs6000/rs6000.c (rs6000_scalar_mode_supported_p): Ditto.
5538         * config/s390/s390.c (s390_scalar_mode_supported_p): Ditto.
5539
5540 2009-09-22  Loren J. Rittle  <ljrittle@acm.org>
5541
5542         * unwind-dw2-fde-glibc.c: Define and use USE_PT_GNU_EH_FRAME.
5543         Enable a new case for __FreeBSD__ >= 7.
5544         * crtstuff.c:  Define USE_PT_GNU_EH_FRAME for __FreeBSD__ >= 7.
5545         * config/t-freebsd: Define LIB2ADDEH and LIB2ADDEHDEP.
5546         * config/freebsd-spec.h: Conditionally define LINK_EH_SPEC
5547         and USE_LD_AS_NEEDED.
5548
5549         * doc/install.texi (*-*-freebsd*): Update target information.
5550
5551 2009-09-22  Richard Guenther  <rguenther@suse.de>
5552
5553         PR middle-end/41395
5554         * tree-dfa.c (get_ref_base_and_extent): Handle trailing
5555         arrays really properly.
5556
5557 2009-09-22  Richard Henderson  <rth@redhat.com>
5558
5559         PR target/41246
5560         * target.h (struct gcc_target): Add asm_out.trampoline_template,
5561         calls.static_chain, calls.trampoline_init,
5562         calls.trampoline_adjust_address.
5563         * target-def.h (TARGET_ASM_TRAMPOLINE_TEMPLATE): New.
5564         (TARGET_STATIC_CHAIN, TARGET_TRAMPOLINE_INIT): New.
5565         (TARGET_TRAMPOLINE_ADJUST_ADDRESS): New.
5566         * builtins.c (expand_builtin_setjmp_receiver): Use
5567         targetm.calls.static_chain; only clobber registers.
5568         (expand_builtin_init_trampoline): Use targetm.calls.trampoline_init;
5569         set up memory attributes properly for the trampoline block.
5570         (expand_builtin_adjust_trampoline): Use
5571         targetm.calls.trampoline_adjust_address.
5572         * calls.c (prepare_call_address): Add fndecl argument.  Use
5573         targetm.calls.static_chain.
5574         * df-scan.c (df_need_static_chain_reg): Remove.
5575         (df_get_entry_block_def_set): Use targetm.calls.static_chain;
5576         consolodate static chain handling.
5577         * doc/tm.texi: Document new hooks.
5578         * emit-rtl.c (static_chain_rtx, static_chain_incoming_rtx): Remove.
5579         (init_emit_regs): Don't initialize them.
5580         * expr.h (prepare_call_address): Update decl.
5581         * final.c (profile_function): Use targetm.calls.static_chain.
5582         * function.c (expand_function_start): Likewise.
5583         * rtl.h (static_chain_rtx, static_chain_incoming_rtx): Remove.
5584         * stmt.c (expand_nl_goto_receiver): Use targetm.calls.static_chain;
5585         only clobber registers.
5586         * targhooks.c (default_static_chain): New.
5587         (default_asm_trampoline_template, default_trampoline_init): New.
5588         (default_trampoline_adjust_address): New.
5589         * targhooks.h: Declare them.
5590         * varasm.c (assemble_trampoline_template): Use
5591         targetm.asm_out.trampoline_template.  Make the memory block const
5592         and set its size.
5593
5594         * config/alpha/alpha.c (alpha_trampoline_init): Rename from
5595         alpha_initialize_trampoline.  Make static.  Merge VMS parameter
5596         differences into the TARGET_ABI_OPEN_VMS code block.
5597         (TARGET_TRAMPOLINE_INIT): New.
5598         * config/alpha/alpha.h (TRAMPOLINE_TEMPLATE): Remove.
5599         (TRAMPOLINE_SECTION, INITIALIZE_TRAMPOLINE): Remove.
5600         * config/alpha/vms.h (TRAMPOLINE_SIZE, TRAMPOLINE_ALIGNMENT): Remove.
5601         (INITIALIZE_TRAMPOLINE): Remove.
5602
5603         * config/arc/arc.h (TRAMPOLINE_ALIGNMENT): New.
5604         (TRAMPOLINE_TEMPLATE): Merge with ...
5605         (INITIALIZE_TRAMPOLINE): ... this and move ...
5606         * config/arc/arc.c (arc_trampoline_init): ... here.
5607         (TARGET_TRAMPOLINE_INIT): New.
5608
5609         * config/arm/arm.c (TARGET_ASM_TRAMPOLINE_TEMPLATE): New.
5610         (TARGET_TRAMPOLINE_INIT, TARGET_TRAMPOLINE_ADJUST_ADDRESS): New.
5611         (arm_asm_trampoline_template): New.
5612         (arm_trampoline_init, arm_trampoline_adjust_address): New.
5613         * config/arm/arm.h (TRAMPOLINE_TEMPLATE, ARM_TRAMPOLINE_TEMPLATE,
5614         THUMB2_TRAMPOLINE_TEMPLATE, THUMB1_TRAMPOLINE_TEMPLATE): Move all
5615         code to arm_asm_trampoline_template.
5616         (TRAMPOLINE_ADJUST_ADDRESS): Move code to
5617         arm_trampoline_adjust_address.
5618         (INITIALIZE_TRAMPOLINE): Move code to arm_trampoline_init;
5619         adjust for target hook parameters.
5620
5621         * config/avr/avr.h (TRAMPOLINE_TEMPLATE, INITIALIZE_TRAMPOLINE):
5622         Remove.
5623
5624         * config/bfin/bfin-protos.h (initialize_trampoline): Remove.
5625         * config/bfin/bfin.c (bfin_asm_trampoline_template): New.
5626         (bfin_trampoline_init): Rename from initialize_trampoline;
5627         make static; update for target hook parameters.
5628         (TARGET_ASM_TRAMPOLINE_TEMPLATE, TARGET_TRAMPOLINE_INIT): New.
5629         * config/bfin/bfin.h (TRAMPOLINE_TEMPLATE): Move code to
5630         bfin_asm_trampoline_template.
5631         (INITIALIZE_TRAMPOLINE): Remove.
5632
5633         * config/cris/cris.c (TARGET_ASM_TRAMPOLINE_TEMPLATE,
5634         TARGET_TRAMPOLINE_INIT, cris_asm_trampoline_template,
5635         cris_trampoline_init): New.
5636         * config/cris/cris.h (TRAMPOLINE_TEMPLATE): Move code to
5637         cris_asm_trampoline_template.
5638         (INITIALIZE_TRAMPOLINE): Move code to cris_trampoline_init;
5639         adjust for target hook parameters.
5640
5641         * config/crx/crx.h (INITIALIZE_TRAMPOLINE): Remove.
5642
5643         * config/fr30/fr30.c (TARGET_ASM_TRAMPOLINE_TEMPLATE,
5644         TARGET_TRAMPOLINE_INIT, fr30_asm_trampoline_template,
5645         fr30_trampoline_init): New.
5646         * config/fr30/fr30.h (TRAMPOLINE_TEMPLATE): Move code to
5647         fr30_asm_trampoline_template.
5648         (INITIALIZE_TRAMPOLINE): Move code to fr30_trampoline_init;
5649         adjust for target hook parameters.
5650
5651         * config/frv/frv.c (TARGET_TRAMPOLINE_INIT): New.
5652         (frv_trampoline_init): Rename from frv_initialize_trampoline;
5653         make static, adjust arguments for TARGET_TRAMPOLINE_INIT hook.
5654         * config/frv/frv.h (INITIALIZE_TRAMPOLINE): Remove.
5655         * config/frv/frv-protos.h (frv_initialize_trampoline): Remove.
5656
5657         * config/h8300/h8300.c (h8300_trampoline_init): New.
5658         (TARGET_TRAMPOLINE_INIT): New.
5659         * config/h8300/h8300.h (INITIALIZE_TRAMPOLINE): Move code
5660         to h8300_trampoline_init and adjust for hook parameters.
5661
5662         * config/ia64/ia64-protos.h (ia64_initialize_trampoline): Remove.
5663         * config/ia64/ia64.c (TARGET_TRAMPOLINE_INIT): New.
5664         (ia64_trampoline_init): Rename from ia64_initialize_trampoline;
5665         make static; adjust for hook parameters.
5666         * config/ia64/ia64.h (INITIALIZE_TRAMPOLINE): Remove.
5667
5668         * config/iq2000/iq2000.c (TARGET_ASM_TRAMPOLINE_TEMPLATE): New.
5669         (TARGET_TRAMPOLINE_INIT): New.
5670         (iq2000_asm_trampoline_template, iq2000_trampoline_init): New.
5671         * config/iq2000/iq2000.h (TRAMPOLINE_TEMPLATE): Move code to
5672         iq2000_asm_trampoline_template.
5673         (INITIALIZE_TRAMPOLINE): Move code to iq2000_trampoline_init.
5674         (TRAMPOLINE_CODE_SIZE): New.
5675         (TRAMPOLINE_SIZE): Use it.
5676         (TRAMPOLINE_ALIGNMENT): Follow Pmode.
5677
5678         * config/m32c/m32c-protos.h (m32c_initialize_trampoline): Remove.
5679         * config/m32c/m32c.c (TARGET_TRAMPOLINE_INIT): New.
5680         (m32c_trampoline_init): Rename from m32c_initialize_trampoline;
5681         adjust for hook parameters.
5682         * config/m32c/m32c.h (INITIALIZE_TRAMPOLINE): Remove.
5683
5684         * config/m32r/m32r.c (TARGET_TRAMPOLINE_INIT): New.
5685         (m32r_trampoline_init): New.
5686         * config/m32r/m32r.h (INITIALIZE_TRAMPOLINE): Move code to
5687         m32r_trampoline_init.
5688
5689         * config/m68hc11/m68hc11.c (TARGET_TRAMPOLINE_INIT): New.
5690         (m68hc11_trampoline_init): Rename from m68hc11_initialize_trampoline;
5691         make static; update for hook parameters.
5692         * config/m68hc11/m68hc11-protos.h: Update.
5693         * config/m68hc11/m68hc11.h (INITIALIZE_TRAMPOLINE): Remove.
5694
5695         * config/mcore/mcore.c (TARGET_ASM_TRAMPOLINE_TEMPLATE): New.
5696         (TARGET_TRAMPOLINE_INIT): New.
5697         (mcore_function_value): Fix typo.
5698         (mcore_asm_trampoline_template, mcore_trampoline_init): New.
5699         * config/mcore/mcore.h (TRAMPOLINE_TEMPLATE): Move code
5700         to mcore_asm_trampoline_template.
5701         (INITIALIZE_TRAMPOLINE): Move code to mcore_trampoline_init.
5702
5703         * config/mep/mep.h (INITIALIZE_TRAMPOLINE): Remove.
5704         * config/mep/mep.c (TARGET_TRAMPOLINE_INIT): New.
5705         (mep_trampoline_init): Rename from mep_init_trampoline; make static;
5706         update for hook parameters.
5707         * config/mep/mep-protos.h (mep_init_trampoline): Remove.
5708
5709         * config/mips/mips.c (TARGET_ASM_TRAMPOLINE_TEMPLATE,
5710         mips_asm_trampoline_template, TARGET_TRAMPOLINE_INIT,
5711         mips_trampoline_init): New.
5712         * config/mips/mips.h (TRAMPOLINE_TEMPLATE): Move code to
5713         mips_asm_trampoline_template.
5714         (INITIALIZE_TRAMPOLINE): Move code to mips_trampoline_init;
5715         update for hook parameters.
5716
5717         * gcc/config/mmix/mmix.c (TARGET_ASM_TRAMPOLINE_TEMPLATE): New.
5718         (TARGET_TRAMPOLINE_INIT): New.
5719         (mmix_trampoline_size): Remove.
5720         (mmix_asm_trampoline_template): Rename from mmix_trampoline_template;
5721         make static.  Remove out-of-date tetra vs octa comment.
5722         (mmix_trampoline_init): Rename from mmix_initialize_trampoline;
5723         make static; update for hook parameters.
5724         * config/mmix/mmix.h (TRAMPOLINE_TEMPLATE): Remove.
5725         (INITIALIZE_TRAMPOLINE): Remove.
5726         (TRAMPOLINE_SIZE): Use a constant instead of mmix_trampoline_size.
5727         (TRAMPOLINE_ALIGNMENT): New.
5728         * gcc/config/mmix/mmix-protos.h: Update.
5729
5730         * config/mn10300/mn10300.c (TARGET_ASM_TRAMPOLINE_TEMPLATE,
5731         mn10300_asm_trampoline_template, TARGET_TRAMPOLINE_INIT,
5732         mn10300_trampoline_init): New.
5733         * config/mn10300/mn10300.h (TRAMPOLINE_TEMPLATE): Move code to
5734         mn10300_asm_trampoline_template.
5735         (INITIALIZE_TRAMPOLINE): Move code to mn10300_trampoline_init.
5736
5737         * config/moxie/moxie.c (moxie_static_chain,
5738         moxie_asm_trampoline_template, moxie_trampoline_init,
5739         TARGET_STATIC_CHAIN, TARGET_ASM_TRAMPOLINE_TEMPLATE,
5740         TARGET_TRAMPOLINE_INIT): New.
5741         * config/moxie/moxie.h (INITIALIZE_TRAMPOLINE): Move code to
5742         moxie_trampoline_init.
5743         (TRAMPOLINE_TEMPLATE): Move code to moxie_asm_trampoline_template.
5744         (STATIC_CHAIN, STATIC_CHAIN_INCOMING): Remove.
5745
5746         * gcc/config/pa/pa.c (TARGET_ASM_TRAMPOLINE_TEMPLATE,
5747         pa_asm_trampoline_template, TARGET_TRAMPOLINE_INIT,
5748         pa_trampoline_init, TARGET_TRAMPOLINE_ADJUST_ADDRESS,
5749         pa_trampoline_adjust_address): New.
5750         * config/pa/pa.h (TRAMPOLINE_TEMPLATE): Move code to
5751         pa_asm_trampoline_template.
5752         (TRAMPOLINE_ALIGNMENT): New.
5753         (TRAMPOLINE_CODE_SIZE): Move to pa.c.
5754         (INITIALIZE_TRAMPOLINE): Move code to pa_trampoline_init;
5755         adjust for hook parameters.
5756         (TRAMPOLINE_ADJUST_ADDRESS): Move code to pa_trampoline_adjust_address.
5757
5758         * config/pdp11/pdp11.c (pdp11_trampoline_init): New.
5759         (TARGET_TRAMPOLINE_INIT): New.
5760         * config/pdp11/pdp11.h (TRAMPOLINE_TEMPLATE): Remove.
5761         (INITIALIZE_TRAMPOLINE): Move code to pdp11_trampoline_init.
5762
5763         * config/picochip/picochip.h (INITIALIZE_TRAMPOLINE): Remove.
5764
5765         * config/rs6000/rs6000-protos.h (rs6000_initialize_trampoline): Remove.
5766         * config/rs6000/rs6000.c (TARGET_TRAMPOLINE_INIT): New.
5767         (rs6000_trampoline_init): Rename from rs6000_initialize_trampoline;
5768         make static; adjust parameters for the hook.
5769         * config/rs6000/rs6000.h (INITIALIZE_TRAMPOLINE): Remove.
5770
5771         * config/s390/s390.c (s390_asm_trampoline_template): Rename from
5772         s390_trampoline_template; make static.
5773         (s390_trampoline_init): Rename from s390_initialize_trampoline;
5774         make static; adjust for target hook.
5775         (TARGET_ASM_TRAMPOLINE_TEMPLATE, TARGET_TRAMPOLINE_INIT): New.
5776         * config/s390/s390-protos.h: Remove trampoline decls.
5777         * config/s390/s390.h (INITIALIZE_TRAMPOLINE): Remove.
5778         (TRAMPOLINE_TEMPLATE): Remove.
5779         (TRAMPOLINE_ALIGNMENT): New.
5780
5781         * config/score/score-protos.h (score_initialize_trampoline): Remove.
5782         * config/score/score.c (TARGET_ASM_TRAMPOLINE_TEMPLATE): New.
5783         (TARGET_TRAMPOLINE_INIT): New.
5784         (score_asm_trampoline_template): New.
5785         (score_trampoline_init): Rename from score_initialize_trampoline;
5786         make static; adjust for hook parameters.
5787         * config/score/score.h (TRAMPOLINE_TEMPLATE): Move code to
5788         score[37]_asm_trampoline_template.
5789         (INITIALIZE_TRAMPOLINE): Remove.
5790         * config/score/score3.c (score3_asm_trampoline_template): New.
5791         (score3_trampoline_init): Rename from score3_initialize_trampoline;
5792         adjust for target hook.
5793         * config/score/score7.c (score7_asm_trampoline_template): New.
5794         (score7_trampoline_init): Rename from score7_initialize_trampoline;
5795         adjust for target hook.
5796         * config/score/score3.h, config/score/score7.h: Update.
5797
5798         * config/sh/sh-protos.h (sh_initialize_trampoline): Remove.
5799         * config/sh/sh.c (TARGET_TRAMPOLINE_INIT): New.
5800         (TARGET_TRAMPOLINE_ADJUST_ADDRESS): New.
5801         (sh_trampoline_init): Rename from sh_initialize_trampoline;
5802         make static; adjust for target hook parameters.
5803         (sh_trampoline_adjust_address): New.
5804         * config/sh/sh.h (INITIALIZE_TRAMPOLINE): New.
5805         (TRAMPOLINE_ADJUST_ADDRESS): Move code to sh_trampoline_adjust_address.
5806
5807         * config/sparc/sparc.c (TARGET_TRAMPOLINE_INIT): New.
5808         (sparc32_initialize_trampoline): Rename from
5809         sparc_initialize_trampoline; make static; replace tramp parameter
5810         with m_tramp and update memory accesses.
5811         (sparc64_initialize_trampoline): Similarly.
5812         (sparc_trampoline_init): New.
5813         * config/sparc/sparc-protos.h: Remove trampoline decls.
5814         * config/sparc/sparc.h (INITIALIZE_TRAMPOLINE): Remove.
5815         * config/sparc/sparc.md (nonlocal_goto): Don't use static_chain_rtx.
5816
5817         * config/spu/spu.c (TARGET_TRAMPOLINE_INIT): New.
5818         (array_to_constant): Make ARR parameter const.
5819         (spu_trampoline_init): Rename from spu_initialize_trampoline;
5820         make static; update for hook parameters.
5821         * config/spu/spu-protos.h: Update decls.
5822         * config/spu/spu.h (INITIALIZE_TRAMPOLINE): Remove.
5823
5824         * config/stormy16/stormy16.c (xstormy16_trampoline_init): Rename
5825         from xstormy16_initialize_trampoline; make static; update for
5826         hook parameters.
5827         (TARGET_TRAMPOLINE_INIT): New.
5828         * config/stormy16/stormy16.h (INITIALIZE_TRAMPOLINE): Remove.
5829
5830         * config/v850/v850.c (TARGET_ASM_TRAMPOLINE_TEMPLATE): New.
5831         (TARGET_TRAMPOLINE_INIT): New.
5832         (v850_can_eliminate): Make static.
5833         (v850_asm_trampoline_template, v850_trampoline_init): New.
5834         * config/v850/v850.h (TRAMPOLINE_TEMPLATE): Move code to
5835         v850_asm_trampoline_template.
5836         (INITIALIZE_TRAMPOLINE): Move code to v850_trampoline_init
5837         and adjust for target hook parameters.
5838
5839         * config/vax/vax.c (TARGET_ASM_TRAMPOLINE_TEMPLATE): New.
5840         (TARGET_TRAMPOLINE_INIT): New.
5841         (vax_asm_trampoline_template, vax_trampoline_init): New.
5842         * config/vax/vax.h (TRAMPOLINE_TEMPLATE): Move code to
5843         vax_asm_trampoline_template.
5844         (INITIALIZE_TRAMPOLINE): Move code to vax_trampoline_init.
5845
5846         * config/xtensa/xtensa.c (TARGET_ASM_TRAMPOLINE_TEMPLATE): New.
5847         (TARGET_TRAMPOLINE_INIT): New.
5848         (xtensa_asm_trampoline_template): Rename from
5849         xtensa_trampoline_template; make static.
5850         (xtensa_trampoline_init): Rename from xtensa_initialize_trampoline;
5851         make static; update for hook parameters.
5852         * config/xtensa/xtensa-protos.h: Remove trampoline decls.
5853         * config/xtensa/xtensa.h (TRAMPOLINE_TEMPLATE): Remove.
5854         (INITIALIZE_TRAMPOLINE): Remove.
5855
5856         * config/i386/i386.c (ix86_function_regparm): Do not issue an
5857         error for nested functions with regparm=3.
5858         (ix86_compute_frame_layout): Adjust frame pointer offset for
5859         ix86_static_chain_on_stack.
5860         (ix86_expand_prologue): Handle ix86_static_chain_on_stack.
5861         (ix86_emit_restore_reg_using_pop): Increment ix86_cfa_state->offset,
5862         don't reset to UNITS_PER_WORD.
5863         (ix86_emit_leave): Adjust ix86_cfa_state.
5864         (ix86_expand_epilogue): Handle ix86_static_chain_on_stack.
5865         (ix86_static_chain): New.
5866         (ix86_trampoline_init): Rename from x86_initialize_trampoline;
5867         make static; update for target hook parameters; use ix86_static_chain.
5868         (TARGET_STATIC_CHAIN, TARGET_TRAMPOLINE_INIT): New.
5869         * config/i386/i386.h (STATIC_CHAIN_REGNUM): Remove.
5870         (INITIALIZE_TRAMPOLINE): Remove.
5871         (TRAMPOLINE_SIZE): Use 24 for 64-bit.
5872         (struct machine_function): Use BOOL_BITFIELD; rearrange bitfields
5873         to the end.  Add static_chain_on_stack.
5874         (ix86_static_chain_on_stack): New.
5875
5876         * config/m68k/m68k.c (TARGET_TRAMPOLINE_INIT): New.
5877         (m68k_output_mi_thunk): Don't use static_chain_rtx.
5878         (m68k_trampoline_init): New.
5879         * config/m68k/m68k.h (INITIALIZE_TRAMPOLINE): Move code to
5880         m68k_trampoline_init and adjust for hook parameters.
5881         * config/m68k/netbsd-elf.h (TRAMPOLINE_TEMPLATE): Remove.
5882         (TRAMPOLINE_SIZE, INITIALIZE_TRAMPOLINE): Remove.
5883
5884 2009-09-22  Jakub Jelinek  <jakub@redhat.com>
5885
5886         * config/rs6000/rs6000.c (bdesc_2arg): Fix CODE_FOR_vector_gt* codes
5887         for __builtin_altivec_vcmpgt{sb,uh,sh,uw}.
5888
5889         * reload1.c (reload): Call wrap_constant when substituting
5890         reg for equiv inside of DEBUG_INSNs.
5891
5892         PR bootstrap/41405
5893         * dwarf2out.c (base_type_die, record_type_tag, gen_subprogram_die,
5894         add_call_src_coords_attributes, add_high_low_attributes,
5895         gen_compile_unit_die, gen_type_die_with_usage force_decl_die,
5896         gen_decl_die, dwarf2out_imported_module_or_decl_1, dwarf2out_finish,
5897         dwarf2out_imported_module_or_decl): Avoid using DWARF3 additions
5898         when -gdwarf-2 -gstrict-dwarf.
5899         (loc_list_from_tree): Likewise.  Avoid using DWARF4 additions when
5900         -gdwarf-[23] -gstrict-dwarf.
5901         (address_of_int_loc_descriptor, loc_descriptor,
5902         loc_list_for_address_of_addr_expr_of_indirect_ref): Avoid using
5903         DWARF4 additions when -gdwarf-[23] -gstrict-dwarf.
5904         * common.opt (gno-strict-dwarf, gstrict-dwarf): New options.
5905
5906 2009-09-22  Richard Guenther  <rguenther@suse.de>
5907
5908         PR tree-optimization/41428
5909         * tree-ssa-ccp.c (ccp_fold_stmt): New function.
5910         (ccp_finalize): Pass it to substitute_and_fold.
5911
5912 2009-09-22  Richard Guenther  <rguenther@suse.de>
5913
5914         * tree-ssa-propagate.h (ssa_prop_fold_stmt_fn): Declare.
5915         (substitute_and_fold): Adjust prototype.
5916         * tree-vrp.c (vrp_evaluate_conditional): Make static.
5917         (simplify_stmt_using_ranges): Likewise.
5918         (fold_predicate_in): Move here from tree-ssa-propagate.c.
5919         (vrp_fold_stmt): New function.
5920         (vrp_finalize): Pass it to substitute_and_fold.
5921         * tree-flow.h (vrp_evaluate_conditional): Remove.
5922         (simplify_stmt_using_ranges): Likewise.
5923         * tree-ssa-ccp.c (ccp_finalize): Adjust call to substitute_and_fold.
5924         * tree-ssa-copy.c (fini_copy_prop): Likewise.
5925         * tree-ssa-propagate.c (struct prop_stats_d): Rename num_pred_folded
5926         member.
5927         (fold_predicate_in): Move to tree-vrp.c.
5928         (substitute_and_fold): Use the callback instead of calling into
5929         tree-vrp.c functions directly.
5930
5931 2009-09-22  Jakub Jelinek  <jakub@redhat.com>
5932
5933         * dwarf2out.c (address_of_int_loc_descriptor): Avoid signed/unsigned
5934         comparison warning on rs6000.
5935
5936         PR middle-end/41429
5937         * tree-cfg.c (remove_useless_stmts_tc): Call gsi_next (gsi) even for
5938         GIMPLE_EH_MUST_NOT_THROW cleanup.
5939         (verify_types_in_gimple_stmt): Handle GIMPLE_EH_MUST_NOT_THROW.
5940
5941 2009-09-22  Jack Howarth  <howarth@bromo.med.uc.edu>
5942
5943         PR middle-end/41260
5944         * gcc/config.gcc: Use darwin9.h and darwin10.h on darwin10 and later.
5945         * gcc/config/darwin10.h: Add file to pass -no_compact_unwind on
5946         LIB_SPEC for darwin10 and later since it always uses the unwinder in
5947         libSystem which is derived from the gcc 4.2.1 unwinder.
5948
5949 2009-09-22  Dave Korn  <dave.korn.cygwin@gmail.com>
5950
5951         PR middle-end/41357
5952         * varasm.c (default_encode_section_info): Copy TLS model into
5953         sym_ref flags regardless of backend support for TLS, for all
5954         model types except TLS_MODEL_EMULATED.
5955
5956 2009-09-22  Dave Korn  <dave.korn.cygwin@gmail.com>
5957
5958         PR bootstrap/41404
5959         * dwarf2out.c (mem_loc_descriptor): Punt on CONST_STRING until
5960         we can handle it correctly.
5961
5962 2009-09-21  Gerald Pfeifer  <gerald@pfeifer.com>
5963
5964         * doc/install.texi (os2): Remove section.
5965
5966 2009-09-21  Gerald Pfeifer  <gerald@pfeifer.com>
5967
5968         * doc/standards.texi (Objective-C): Adjust two URLs.
5969
5970 2009-09-21  Giuseppe Scrivano <gscrivano@gnu.org>
5971
5972         * tree-tailcall.c (process_assignment): Don't check if a
5973         multiplication or an addition are already present.
5974         (find_tail_calls): Combine multiple additions and multiplications.
5975         (adjust_accumulator_values): Emit accumulators.
5976
5977 2009-09-21  Kai Tietz  <kai.tietz@onevision.com>
5978
5979         * config/i386/i386.c (ix86_expand_epilogue): Adjust offset for
5980         xmm register restore.
5981
5982 2009-09-21  Jan Hubicka  <jh@suse.cz>
5983
5984         * dwarf2out.c (decl_loc_table_eq): Allow decl_loc_table to be NULL.
5985         (dwarf2out_abstract_function): NULLify decl_loc_table at begginig and
5986         restore at the end.
5987
5988 2009-09-21  Eric Botcazou  <ebotcazou@adacore.com>
5989
5990         * stor-layout.c (layout_type): Remove obsolete code.
5991
5992 2009-09-20  H.J. Lu  <hongjiu.lu@intel.com>
5993
5994         PR middle-end/41395
5995         * opts.c (decode_options): Don't turn on flag_ipa_sra for opt2.
5996
5997 2009-09-20  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
5998
5999         PR middle-end/30789
6000         * builtins.c (do_mpc_arg2): Accept DO_NONFINITE parameter.
6001         (do_mpc_ckconv): Accept FORCE_CONVERT parameter.
6002         (fold_builtin_2, do_mpc_arg1): Update accordingly.
6003         * fold-const.c (const_binop): Likewise.
6004         * real.h (do_mpc_arg2): Update prototype.
6005
6006 2009-09-20  Jan Hubicka  <jh@suse.cz>
6007
6008         * dwarf2out.c (add_const_value_attribute): Return true if successful.
6009         (add_location_or_const_value_attribute): Rewrite using
6010         loc_list_from_tree.
6011         (tree_add_const_value_attribute): Return true if successful.
6012         (tree_add_const_value_attribute_for_decl): Likewise.
6013
6014         * dwarf2out.c (address_of_int_loc_descriptor): Break out from ...
6015         (loc_descriptor): ... here;
6016         (loc_list_for_address_of_addr_expr_of_indirect_ref): New function.
6017         (cst_pool_loc_descr): Break out from ...; do not reffer constant
6018         pool items that was not marked for output.
6019         (loc_list_from_tree): ... here; handle special cases of ADDR_EXPR;
6020         (loc_list_for_address_of_addr_expr_of_indirect_ref): New function.
6021         (loc_list_for_address_of_addr_expr_of_indirect_ref): New function.
6022         handle ALIGN_INDIRECT_REF, MISALIGNED_INDIRECT_REF, REALPART_EXPR,
6023         IMAGPART_EXPR; handle address of INTEGER_CST; improve handling of
6024         CONSTRUCTOR; handle REAL_CST, STRING_CST, COMPLEX_CST; use
6025         DW_OP_stack_value to get address of items that are not available
6026         as addresses.
6027         (dw_loc_list): Handle single element lists correctly.
6028
6029 2009-09-20  Kai Tietz  <kai.tietz@onevision.com>
6030             Pascal Obry  <obry@adacore.com>
6031
6032         * unwind-dw2-fde.c (classify_object_over_fdes):
6033         Cast the constant 1 to _Unwind_Ptr.
6034         (add_fdes): Likewise.
6035         (linear_search_fdes): Likewise.
6036
6037 2009-09-20  Eric Botcazou  <ebotcazou@adacore.com>
6038
6039         * stor-layout.c (set_sizetype): Avoid useless type copy.
6040
6041 2009-09-20  Richard Sandiford  <rdsandiford@googlemail.com>
6042
6043         * configure.ac (gcc_cv_ld_mips_personality_relaxation): New
6044         feature check.
6045         (HAVE_LD_PERSONALITY_RELAXATION): New macro definition.
6046         * configure, config.in: Regenerate.
6047         * dwarf2asm.c (eh_data_format_name): Handle DW_EH_PE_indirect |
6048         DW_EH_PE_absptr.
6049         * config/mips/mips.h (TARGET_WRITABLE_EH_FRAME): New macro.
6050         (ASM_PREFERRED_EH_DATA_FORMAT): Define.  Use MIPS_EH_INDIRECT
6051         for global data if the output could be used in a shared library.
6052         * config/mips/mips.c (mips_override_options): Set flag_dwarf2_cfi_asm
6053         to 0 if TARGET_WRITABLE_EH_FRAME.
6054
6055 2009-09-20  Paolo Bonzini <bonzini@gnu.org>
6056
6057         PR rtl-optimization/39886
6058         * combine.c (update_cfg_for_uncondjump): Set EDGE_FALLTHRU
6059         just when insn is equal to BB_END (bb).
6060
6061 2009-09-19  Adam Nemet  <anemet@caviumnetworks.com>
6062
6063         * config/mips/mips.opt (mrelax-pic-calls): New option.
6064         * config/mips/mips.c (mips_strip_unspec_address): Move it up in
6065         the file.
6066         (mips_unspec_call): Change "unspec_call" expander into this.
6067         (mips_strip_unspec_call): New function.
6068         (mips_got_load): Call mips_unspec_call instead of
6069         gen_unspec_call<mode>.
6070         (mips16_build_call_stub): Fix comment for fp_code.  Adjust call to
6071         MIPS_CALL.
6072         (mips_cfg_in_reorg): New function.
6073         (mips16_lay_out_constants): Use it to decide whether to call
6074         CFG-aware insn splitting.
6075         (r10k_insert_cache_barriers): Move CFG set-up code from here to
6076         mips_reorg.  Move DF set-up code from here ...
6077         (mips_df_reorg): ... to here.  Call r10k_insert_cache_barriers
6078         from here.
6079         (mips_reorg): Call mips_df_reorg instead of
6080         r10k_insert_cache_barriers.  Move CFG set-up code here from
6081         r10k_insert_cache_barriers.
6082         (mips_call_expr_from_insn): New function.
6083         (mips_pic_call_symbol_from_set): Likewise.
6084         (mips_find_pic_call_symbol): Likewise.
6085         (mips_annotate_pic_call_expr): Likewise.
6086         (mips_get_pic_call_symbol): Likewise.
6087         (mips_annotate_pic_calls): Likewise.
6088         (mips_override_options): Disable -mrelax-pic-calls unless PIC
6089         calls are used.
6090         (mips_set_mips16_mode): Disable -mrelax-pic-calls for MIPS16.
6091         * config/mips/mips-protos.h (mips_get_pic_call_symbol): Declare it.
6092         * config/mips/mips.h (MIPS_CALL): Use it to print the .reloc
6093         directive.
6094         * config/mips/mips.md (UNSPEC_CALL_ATTR): New unspec.
6095         (unspec_call<mode>): Remove it.
6096         (sibcall_internal, sibcall_value_internal,
6097         sibcall_value_multiple_internal, call_internal, call_split,
6098         call_value_internal, call_value_split,
6099         call_value_multiple_internal, call_value_multiple_split): Pass
6100         SIZE_OPNO to MIPS_CALL.
6101         (call_internal_direct, call_direct_split,
6102         call_value_internal_direct, call_value_direct_split): Pass -1 as
6103         SIZE_OPNO to MIPS_CALL.
6104         * configure.ac <mips*-*-*>: Add test for .reloc R_MIPS_JALR.
6105         * configure: Regenerate.
6106         * doc/invoke.texi (Option Summary): Add -mrelax-pic-calls
6107         and -mno-relax-pic-calls.
6108         (MIPS Options): Document -mrelax-pic-calls and -mno-relax-pic-calls.
6109
6110 2009-09-19  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
6111
6112         PR bootstrap/35619
6113         * Makefile.in (stmp-fixinc): Ensure `include-fixed' is created
6114         in the directory this rule is called from, rather than the
6115         toplevel 'gcc' directory, to fix in-tree build.
6116
6117 2009-09-19  Chris Demetriou  <cgd@google.com>
6118
6119         PR preprocessor/28435:
6120         * c-opts.c (c_common_handle_option): For -MD and -MMD, indicate
6121         to cpplib that the preprocessor output is needed.
6122
6123 2009-09-19  Jakub Jelinek  <jakub@redhat.com>
6124
6125         * config/rs6000/rs6000.md (*save_gpregs_<mode>, *save_fpregs_<mode>,
6126         *restore_gpregs_<mode>, *return_and_restore_gpregs_<mode>,
6127         *return_and_restore_fpregs_<mode>,
6128         *return_and_restore_fpregs_aix_<mode>): Remove 'z' operand modifier.
6129
6130         PR bootstrap/41397
6131         * dwarf2out.c (mem_loc_descriptor) <case SUBREG>: Recurse
6132         instead of assuming it has always a REG inside of it.
6133
6134 2009-09-18  Gerald Pfeifer  <gerald@pfeifer.com>
6135
6136         * config/freebsd.h: Update comment on types.
6137         (WINT_TYPE): Define.
6138
6139 2009-09-18  Jason Merrill  <jason@redhat.com>
6140
6141         * c.opt: Add -fno-deduce-init-list.
6142
6143 2009-09-18  Neil Vachharajani  <nvachhar@google.com>
6144
6145         * value-prof.c (interesting_stringop_to_profile_p): Added output
6146         argument to indicate which parameter is the size parameter.
6147         * value-prof.c (gimple_stringop_fixed_value): Use
6148         INTERESTING_STRINGOP_TO_PROFILE_P to find size argument.
6149         * value-prof.c (gimple_stringops_transform): Update call sites to
6150         INTERESTING_STRINGOP_TO_PROFILE_P to reflect parameter change.
6151
6152 2009-09-18  Uros Bizjak  <ubizjak@gmail.com>
6153
6154         PR target/38288
6155         From David Binderman <dcb314@hotmail.com>:
6156         * gcc/config/i386/i386.c (ix86_function_regparm): Remove useless
6157         local variable f.  Remove stale comments.
6158         (ix86_compute_frame_layout): Remove useless local variable total_size.
6159         Remove #if 0'd code.
6160         (legitimate_address_p): Remove useless local variables
6161         reason_rtx and reason.
6162         (ix86_split_copysign_const): Remove useless local variable op1.
6163         (scale_counter): Remove useless local variable piece_size_mask.
6164
6165 2009-09-18  Jakub Jelinek  <jakub@redhat.com>
6166
6167         * stmt.c (expand_asm_operands): Set REG_ATTRS on the temporary from
6168         output decl.
6169
6170 2009-09-17  Michael Haubenwallner  <michael.haubenwallner@salomon.at>
6171
6172         PR target/40913
6173         * config/pa/t-hpux-shlib: Set soname in libgcc_s.sl.
6174
6175 2009-09-17  Jakub Jelinek  <jakub@redhat.com>
6176
6177         * c-decl.c (finish_struct): Adjust DECL_SOURCE_LOCATION of
6178         TYPE_STUB_DECL.
6179
6180 2009-09-17  Alexandre Oliva  <aoliva@redhat.com>
6181
6182         * dwarf2out.c (loc_descriptor): Emit DW_OP_stack_value and
6183         DW_OP_implicit_value even without dwarf_version 4.
6184
6185 2009-09-17  Jan Hubicka  <jh@suse.cz>
6186
6187         * dwarf2out.c: Include tree-pass.h and gimple.h.
6188         (loc_list_plus_const): New function.
6189         (loc_descriptor_from_tree_1): Rename to ...
6190         (loc_descriptor_from_tree): ... remove original.
6191         (loc_list_from_tree): New function.
6192         (add_AT_location_description): Accept location list.
6193         (tls_mem_loc_descriptor): Update call of loc_descriptor_from_tree.
6194         (concatn_mem_loc_descriptor): Remove.
6195         (mem_loc_descriptor): Handle CONCAT/CONCATN and VAR_LOCATION by
6196         returning NULL.
6197         (secname_for_decl): Move up.
6198         (hidden_reference_p): New function; break out from ...
6199         (loc_by_refernece): ... here; move up.
6200         (dw_loc_list): New function.
6201         (single_element_loc_list): New function.
6202         (single_element_loc_list_p): New function.
6203         (add_loc_descr_to_each): New function.
6204         (add_loc_list): New function.
6205         (loc_descr_from_tree): Make wraper of loc_list_from_tree.
6206         (loc_list_from_tree): Reroganized from loc_descr_from_tree;
6207         add diagnostics why expansion failed.
6208         (add_location_or_const_value_attribute): Support location lists.
6209         (add_bound_info): Likewise.
6210         (descr_info_loc): Update call of loc_descriptor_from_tree.
6211         (gen_variable_die): Work on location lists.
6212         * final.c (pass_final): Add dump file.
6213         * Makefile.in (dwarf2out.o): Add new dependencies.
6214
6215 2009-09-17  Janis Johnson  <janis187@us.ibm.com>
6216
6217         PR c/41049
6218         * real.c decimal_from_integer, decimal_integer_string): New.
6219         (real_from_integer): Use them as special case for decimal float.
6220         * config/dfp-bit.c (_si_to_sd, _usi_to_sd): Use default rounding.
6221         (_di_to_sd, _di_to_dd, _di_to_td, _udi_to_sd, _udi_to_dd, _udi_to_td):
6222         Do not append zero after the decimal point in string to convert.
6223
6224 2009-09-17  Alexander Monakov  <amonakov@ispras.ru>
6225
6226         * graphite-sese-to-poly.c (pdr_add_data_dimensions): Add bounds only
6227         for ARRAY_REFs.  Use array_ref_{low,up}_bound to determine bounds.
6228
6229 2009-09-17  Martin Jambor  <mjambor@suse.cz>
6230
6231         * common.opt (fipa-sra): New switch.
6232         * opts.c (decode_options): Turn flag_ipa_sra on for opt2.
6233         * timevar.def (TV_IPA_SRA): New timevar.
6234         * params.def (ipa-sra-ptr-growth-factor): New parameter.
6235         * doc/invoke.texi: Document -fipa-sra and ipa-sra-ptr-growth-factor.
6236         * tree-sra.c: Include cgraph.c.
6237         (enum sra_mode): Added SRA_MODE_EARLY_IPA.
6238         (struct access): Added fields stmt, grp_maybe_modified, grp_scalar_ptr
6239         and grp_not_necessarilly_dereferenced.
6240         (func_param_count): New variable.
6241         (encountered_apply_args): New variable.
6242         (bb_dereferences): New variable.
6243         (final_bbs): New variable.
6244         (no_accesses_representant): New variable.
6245         (no_accesses_p): New function.
6246         (dump_access): Dump the new fields.
6247         (sra_initialize): Set encountered_apply_args to false.
6248         (get_ssa_base_param): New function.
6249         (mark_parm_dereference): New function.
6250         (create_access): Caring for INIDRECT_REFs and different handling of
6251         varialble length accesses in early IPA SRA.  Store the stmt - a new
6252         parameter - to the new access.
6253         (build_access_from_expr_1): New parameter stmt, passed to
6254         create_access.  Handle INDIRECT_REFs.
6255         (build_access_from_expr): Pass the current statement to
6256         build_access_from_expr_1.
6257         (disqualify_ops_if_throwing_stmt): Trigger only in intraprocedural
6258         passes.
6259         (build_accesses_from_assign): Pass the current statement to
6260         build_access_from_expr_1.  Do not create assign links in IPA-SRA.
6261         (scan_function): Call handle_ssa_defs on phi nodes.  Set bits in
6262         final_bbs when necessary.  Check for calls to __builtin_apply_args.
6263         Fixup EH info if anythng was changed.
6264         (is_unused_scalar_param): New function.
6265         (ptr_parm_has_direct_uses): New function.
6266         (find_param_candidates): New function.
6267         (mark_maybe_modified): New function.
6268         (analyze_modified_params): New function.
6269         (propagate_dereference_distances): New function.
6270         (dump_dereferences_table): New function.
6271         (analyze_caller_dereference_legality): New function.
6272         (unmodified_by_ref_scalar_representative): New function.
6273         (splice_param_accesses): New function.
6274         (decide_one_param_reduction): New function.
6275         (enum ipa_splicing_result): New type.
6276         (splice_all_param_accesses): New function.
6277         (get_param_index): New function.
6278         (turn_representatives_into_adjustments): New function.
6279         (analyze_all_param_acesses): New function.
6280         (get_replaced_param_substitute): New function.
6281         (get_adjustment_for_base): New function.
6282         (replace_removed_params_ssa_names): New function.
6283         (sra_ipa_reset_debug_stmts): New function.
6284         (sra_ipa_modify_expr): New function.
6285         (sra_ipa_modify_assign): New function.
6286         (convert_callers): New function.
6287         (modify_function): New function.
6288         (ipa_sra_preliminary_function_checks): New function.
6289         (ipa_early_sra): New function.
6290         (ipa_early_sra_gate): New function.
6291         (pass_early_ipa_sra): New variable.
6292         * Makefile.in (tree-sra.o): Add cgraph.h to dependencies.
6293
6294 2009-09-17  Michael Matz  <matz@suse.de>
6295
6296         PR middle-end/41347
6297         * tree.c (build_type_attribute_qual_variant): Export.
6298         * tree.h (build_type_attribute_qual_variant): Declare.
6299         * tree-inline.c (remap_type_1): Use it to build variants with
6300         the original qualifiers and attributes.
6301
6302 2009-09-17  Andreas Krebbel  <Andreas.Krebbel@de.ibm.com>
6303
6304         * cfglayout.c (fixup_reorder_chain): Accept conditional jumps
6305         without a fallthrough edge.
6306
6307 2009-09-16  DJ Delorie  <dj@redhat.com>
6308
6309         * config/m32c/m32c.c (m32c_emit_epilogue): Check for R8C or M16C
6310         chip and ignore the "fast_interrupt" attribute if so.
6311
6312 2009-09-16  Richard Henderson  <rth@redhat.com>
6313
6314         PR middle-end/41360
6315         * cfgbuild.c (find_bb_boundaries): Really re-instate 2009-09-02
6316         barrier fix.
6317
6318 2009-09-16  Richard Henderson  <rth@redhat.com>
6319
6320         PR target/41246
6321         * tree-cfg.c (verify_gimple_call): Validate that gimple_call_chain
6322         is set only if DECL_NO_STATIC_CHAIN is unset.
6323         * tree-nested.c (iter_nestinfo_start, iter_nestinfo_next): New.
6324         (FOR_EACH_NEST_INFO): New.
6325         (walk_all_functions): Use it.
6326         (finalize_nesting_tree): Likewise.
6327         (unnest_nesting_tree): Likewise.
6328         (free_nesting_tree): Use iter_nestinfo_start, iter_nestinfo_next.
6329         (get_chain_decl, get_chain_field): Reset DECL_NO_STATIC_CHAIN.
6330         (convert_gimple_call): Early out if gimple_call_chain already set.
6331         (convert_all_function_calls): Iterate until no new functions
6332         require a static chain.
6333         (finalize_nesting_tree_1): Assert DECL_NO_STATIC_CHAIN is unset
6334         when building a trampoline.  Use dump_function_to_file instead
6335         of dump_function.
6336         (lower_nested_functions): Open dump_file.  Validate that decls
6337         that have DECL_NO_STATIC_CHAIN from the front end don't have that
6338         bit reset by this pass.
6339
6340 2009-09-16  Michael Matz  <matz@suse.de>
6341
6342         PR fortran/41212
6343         * tree.h (struct tree_decl_common): Add decl_restricted_flag,
6344         shorten decl_common_unused.
6345         (DECL_RESTRICTED_P): New accessor.
6346         * tree-ssa-alias.c (ptr_deref_may_alias_decl_p): Use it
6347         to disambiguate marked decls and restrict pointers.
6348
6349 2009-09-16  Richard Henderson  <rth@redhat.com>
6350
6351         PR middle-end/41360
6352         * cfgbuild.c (find_bb_boundaries): Re-instate 2009-09-02 barrier fix.
6353
6354 2009-09-16  Jakub Jelinek  <jakub@redhat.com>
6355
6356         * integrate.c (set_block_abstract_flags): Call
6357         set_decl_abstract_flags also on BLOCK_NONLOCALIZED_VARs.
6358
6359 2009-09-16  Richard Guenther  <rguenther@suse.de>
6360
6361         PR middle-end/34011
6362         * tree-flow-inline.h (may_be_aliased): Compute readonly variables
6363         as non-aliased.
6364
6365 2009-09-16  DJ Delorie  <dj@redhat.com>
6366             Kaz Kojima  <kkojima@gcc.gnu.org>
6367
6368         * config/sh/sh.c (output_stack_adjust): Add new argument frame_p.
6369         (sh_expand_prologue): Update calls to output_stack_adjust.
6370         (sh_expand_epilogue): Likewise.
6371
6372 2009-09-15  Adam Nemet  <anemet@caviumnetworks.com>
6373
6374         PR bootstrap/41349
6375         * reorg.c (redundant_insn): Don't count notes or DEBUG_INSNs when
6376         trying to limit the extent of searches in the insn stream.
6377
6378 2009-09-15  Nathan Froyd  <froydnj@codesourcery.com>
6379             Jakub Jelinek  <jakub@redhat.com>
6380
6381         PR target/41175
6382         PR target/40677
6383         * config/rs6000/rs6000.c (no_global_regs_above): Fix precedence
6384         problem.
6385         (SAVRES_NOINLINE_GPRS_SAVES_LR, SAVRES_NOINLINE_FPRS_SAVES_LR,
6386         SAVRES_NOINLINE_FPRS_DOESNT_RESTORE_LR): New strategy bits.
6387         (rs6000_savres_strategy): Always save FP registers inline if the
6388         target doesn't support hardware double-precision.  Set the above
6389         bits in return value when needed.
6390         (rs6000_savres_routine_sym): Fix computation for cache selector.
6391         Mark the generated symbol as a function.  Rename exitp argument to
6392         lr.  Move code for determining the name of the symbol...
6393         (rs6000_savres_routine_name): ...here.  New function.  Add cases for
6394         getting the names right on AIX and 64-bit Linux.
6395         (savres_routine_name): New variable.
6396         (rs6000_make_savres_rtx): Rename exitp argument to lr.  Don't assert
6397         lr isn't set when savep.  Use r12 resp. r1 instead of r11 depending
6398         on what the target routine uses as a base register.  If savep && lr
6399         describe saving of r0 into memory slot.
6400         (rs6000_emit_prologue): Correct use of call_used_regs.  Fix out of
6401         line calls for AIX ABI.
6402         (rs6000_output_function_prologue): Use rs6000_savres_routine_name to
6403         determine FP save/restore functions.
6404         (rs6000_emit_stack_reset): Handle savres if sp_offset != 0 and
6405         frame_reg_rtx != sp_reg_rtx.  Use gen_add3_insn instead of
6406         gen_addsi3.
6407         (rs6000_emit_epilogue): Adjust computation of restore_lr.
6408         Duplicate restoration of LR and execute the appropriate one
6409         depending on whether GPRs are being restored inline.  Set r11 from
6410         offsetted frame_reg_rtx instead of sp_reg_rtx; if frame_reg_rtx is
6411         r11, adjust sp_offset.  Use gen_add3_insn instead of gen_addsi3.
6412         Fix out of line calls for AIX ABI.
6413         * config/rs6000/rs6000.md (*return_and_restore_fpregs_aix_<mode>):
6414         New insn.
6415         * config/rs6000/spe.md (*save_gpregs_spe): Use explicit match for
6416         register 11.
6417         (*restore_gpregs_spe): Likewise.
6418         (*return_and_restore_gpregs_spe): Likewise.
6419         * config/rs6000/linux64.h (SAVE_FP_SUFFIX, RESTORE_FP_SUFFIX):
6420         Define to empty string unconditionally.
6421         * config/rs6000/sysv4.h (SAVE_FP_SUFFIX, RESTORE_FP_SUFFIX):
6422         Define to empty string unconditionally.
6423         (GP_SAVE_INLINE, FP_SAVE_INLINE): Handle TARGET_64BIT the same as
6424         !TARGET_64BIT.
6425
6426 2009-09-15  Jan Hubicka  <jh@suse.cz>
6427
6428         * doc/invoke.texi (inline-insns-auto): Drop from 60 to 50.
6429         * params.def (inline-insns-auto): Likewise.
6430
6431 2009-09-15  Martin Jambor  <mjambor@suse.cz>
6432
6433         * ipa-inline.c (estimate_function_body_sizes): Dump info about
6434         individual statements only at TDF_DETAILS dump level.  Format
6435         source for 80 characters per line.
6436
6437 2009-09-15  Christian Bruel  <christian.bruel@st.com>
6438
6439         * regrename.c (do_replace): Update REG_DEAD notes.
6440
6441 2009-09-15  Revital Eres  <eres@il.ibm.com>
6442
6443         * doc/tm.texi (TARGET_SUPPORT_VECTOR_MISALIGNMENT): Document.
6444         * targhooks.c (default_builtin_support_vector_misalignment):
6445         New builtin function.
6446         * targhooks.h (default_builtin_support_vector_misalignment):
6447         Declare.
6448         * target.h (builtin_support_vector_misalignment):
6449         New field in struct gcc_target.
6450         * tree-vect-data-refs.c (vect_supportable_dr_alignment): Call
6451         new builtin function.
6452         * target-def.h (TARGET_SUPPORT_VECTOR_MISALIGNMENT):
6453         Define.
6454         * config/rs6000/rs6000.c
6455         (rs6000_builtin_support_vector_misalignment): New function.
6456         (TARGET_SUPPORT_VECTOR_MISALIGNMENT): Define.
6457
6458 2009-09-15  Jie Zhang  <jie.zhang@analog.com>
6459
6460         * config/bfin/bfin.c (length_for_loop): Use NONDEBUG_INSN_P
6461         instead of INSN_P.
6462         (bfin_optimize_loop): Likewise.
6463         (bfin_gen_bundles): Likewise.
6464         (workaround_speculation): Likewise.
6465         (find_load): Return NULL_RTX for debug_insn.
6466
6467 2009-09-15  Uros Bizjak  <ubizjak@gmail.com>
6468
6469         * config/alpha/alpha.md (smaxsf3): Disable for IEEE mode.
6470         (sminsf3): Ditto.
6471
6472 2009-09-14  DJ Delorie  <dj@redhat.com>
6473
6474         * config/mep/mep.h (JUMP_TABLES_IN_TEXT_SECTION): Define.
6475         * config/mep/mep.c (mep_emit_cbranch): Don't use BEQZ/BNEI in
6476         VLIW mode.
6477
6478 2009-09-14  Richard Henderson  <rth@redhat.com>
6479             Jakub Jelinek  <jakub@redhat.com>
6480
6481         * builtins.c (expand_builtin_synchronize): Use gimple_build_asm_vec.
6482         * cfgbuild.c (make_edges): Handle asm goto.
6483         * cfglayout.c (fixup_reorder_chain): Likewise.
6484         * cfgrtl.c (patch_jump_insn): Likewise.
6485         * gimple-pretty-print.c (dump_gimple_asm): Likewise.
6486         * gimple.c (gimple_build_asm_1): Add and use nlabels parameter.
6487         (gimple_build_asm_vec): Add and use labels parameter.
6488         (gimple_build_asm): Remove.
6489         (walk_gimple_asm): Walk labels too.
6490         * gimple.def (GIMPLE_ASM): Update docs.
6491         * gimple.h: Update decls.
6492         (struct gimple_statement_asm): Change nc to use unsigned char;
6493         add nl member.
6494         (gimple_asm_nlabels): New.
6495         (gimple_asm_label_op, gimple_asm_set_label_op): New.
6496         * gimplify.c (gimplify_asm_expr): Copy labels from ASM_EXPR
6497         into gimple_build_asm_vec.
6498         * jump.c (mark_jump_label_asm): New.
6499         (mark_jump_label): Use it.
6500         (redirect_jump_1): Handle asm goto.
6501         (invert_jump_1): Soft fail if X is null.
6502         * recog.c (extract_asm_operands): New.
6503         (asm_noperands): Use it; handle asm labels.
6504         (decode_asm_operands): Use extract_asm_operands.
6505         (asm_operand_ok): Properly handle empty string.
6506         * reg-stack.c (get_asm_operands_in_out): Rename from
6507         get_asm_operand_n_inputs; use extract_asm_operands; return both
6508         inputs and outputs by reference; update all callers.
6509         * rtl.def (ASM_OPERANDS): Add label vector as operand 6.
6510         * rtl.h (ASM_OPERANDS_LABEL_VEC): New.
6511         (ASM_OPERANDS_LABEL_LENGTH, ASM_OPERANDS_LABEL): New.
6512         (ASM_OPERANDS_SOURCE_LOCATION): Renumber.
6513         (extract_asm_operands): Declare.
6514         * stmt.c (expand_asm_operands): Add and use labels parameter.
6515         (check_unique_operand_names): Likewise.
6516         (resolve_asm_operand_names, resolve_operand_name_1): Likewise.
6517         (expand_asm_stmt): Handle asm labels.
6518         * tree-cfg.c (make_gimple_asm_edges): New.
6519         (make_edges): Use it.
6520         (cleanup_dead_labels): Handle asm labels.
6521         (is_ctrl_altering_stmt): Likewise.
6522         (gimple_redirect_edge_and_branch): Likewise.
6523         * tree.def (ASM_EXPR): Add 5th operand.
6524         * tree.h (ASM_LABELS): New.
6525         (resolve_asm_operand_names): Update decl.
6526
6527         * c-parser.c (c_parser_asm_statement): Parse asm goto.
6528         (c_parser_asm_goto_operands): New.
6529         * c-tree.h (build_asm_expr): Update decl.
6530         * c-typeck.c (build_asm_expr): Add and use labels parameter.
6531         * doc/extend.texi: Document asm goto.
6532
6533 2009-09-14  Richard Henderson  <rth@redhat.com>
6534
6535         * except.h: Update declarations.
6536         (struct pointer_map_t): Forward declare.
6537         (ERT_UNKNOWN, ERT_THROW, ERT_CATCH): Remove.
6538         (struct eh_landing_pad_d, eh_landing_pad): New.
6539         (struct eh_catch_d, eh_catch): New.
6540         (struct eh_region_d): Remove next_region_sharing_label, aka,
6541         label, tree_label, landing_pad, post_landing_pad, resume,
6542         may_contain_throw.  Rename region_number to index.  Remove
6543         u.eh_catch, u.eh_throw.  Rename u.eh_try.eh_catch to first_catch.
6544         Add u.must_not_throw, landing_pads, exc_ptr_reg, filter_reg.
6545         (VEC(eh_landing_pad,gc)): New.
6546         (struct eh_status): Remove last_region_number.  Add lp_array,
6547         throw_stmt_table, ttype_data, ehspec_data.
6548         (ehr_next, FOR_ALL_EH_REGION_AT): New.
6549         (FOR_ALL_EH_REGION_FN, FOR_ALL_EH_REGION): New.
6550         * except.c (lang_protect_cleanup_actions): Return tree.
6551         (struct ehl_map_entry): Remove.
6552         (init_eh_for_function): Push zero entries for region and lp_array.
6553         (gen_eh_region): Add to region_array immediately.
6554         (gen_eh_region_catch): Operate on eh_catch objects.
6555         (gen_eh_landing_pad): New.
6556         (get_eh_region_may_contain_throw, get_eh_region_tree_label): Remove.
6557         (get_eh_region_no_tree_label, set_eh_region_tree_label): Remove.
6558         (get_eh_region_from_number, get_eh_region_from_number_fn): New.
6559         (get_eh_landing_pad_from_number_fn): New.
6560         (get_eh_landing_pad_from_number): New.
6561         (get_eh_region_from_lp_number_fn): New.
6562         (get_eh_region_from_lp_number): New.
6563         (expand_resx_stmt, note_eh_region_may_contain_throw): Remove.
6564         (get_exception_pointer, get_exception_filter): Remove.
6565         (collect_eh_region_array, can_be_reached_by_runtime): Remove.
6566         (current_function_has_exception_handlers): Simplify.
6567         (bring_to_root, eh_region_replaceable_by_p): Remove.
6568         (replace_region, hash_type_list, hash_eh_region): Remove.
6569         (eh_regions_equal_p, merge_peers, remove_unreachable_regions): Remove.
6570         (label_to_region_map, num_eh_regions): Remove.
6571         (get_next_region_sharing_label, must_not_throw_labels): Remove.
6572         (find_exception_handler_labels): Remove.
6573         (duplicate_eh_regions_0, find_prev_try): Remove.
6574         (struct duplicate_eh_regions_data): New.
6575         (duplicate_eh_regions_1): Rewrite.
6576         (duplicate_eh_regions): Return a pointer map instead of an
6577         integer offset.
6578         (copy_eh_region_1, copy_eh_region, push_reachable_handler): Remove.
6579         (redirect_eh_edge_to_label): Remove.
6580         (eh_region_outermost): Rewrite using eh_region pointers
6581         instead of integers.
6582         (add_ttypes_entry): Update for ttype_data move to eh_status.
6583         (add_ehspec_entry): Rewrite with VEC instead of varray.
6584         (assign_filter_values): Likewise.  Export.
6585         (build_post_landing_pads, connect_post_landing_pads): Remove.
6586         (dw2_build_landing_pads): Rewrite to use lp_array.
6587         (struct sjlj_lp_info, sjlj_find_directly_reachable_regions): Remove.
6588         (sjlj_assign_call_site_values): Rewrite to use lp_array.
6589         (sjlj_emit_dispatch_table, sjlj_build_landing_pads): Likewise.
6590         (sjlj_mark_call_sites): Update for landing pad numbers.
6591         (finish_eh_generation): Rewrite.
6592         (gate_handle_eh): Do nothing for no eh tree.
6593         (pass_rtl_eh): Move up near finish_eh_generation.
6594         (remove_eh_landing_pad): New.
6595         (remove_eh_handler): Export.
6596         (remove_eh_region, remove_eh_handler_and_replace): Remove.
6597         (for_each_eh_label): Rewrite to use lp_array.
6598         (make_reg_eh_region_note): New.
6599         (make_reg_eh_region_note_nothrow_nononlocal): New.
6600         (insn_could_throw_p): New.
6601         (copy_reg_eh_region_note_forward): New.
6602         (copy_reg_eh_region_note_backward): New.
6603         (check_handled, add_reachable_handler): Remove.
6604         (reachable_next_level, foreach_reachable_handler): Remove.
6605         (arh_to_landing_pad, arh_to_label, reachable_handlers): Remove.
6606         (get_eh_region_and_lp_from_rtx): New.
6607         (get_eh_region_from_rtx): New.
6608         (can_throw_internal_1, can_throw_external_1): Remove.
6609         (can_throw_internal): Use get_eh_region_from_rtx.
6610         (can_throw_external): Use get_eh_region_and_lp_from_rtx.
6611         (insn_nothrow_p, can_nonlocal_goto): New.
6612         (expand_builtin_eh_common, expand_builtin_eh_pointer): New.
6613         (expand_builtin_eh_filter, expand_builtin_eh_copy_values): New.
6614         (add_action_record): Use VEC not varray.
6615         (collect_one_action_chain): Update for eh_region changes.
6616         (convert_to_eh_region_ranges): Make static.  Use VEC not varray.
6617         Use get_eh_region_and_lp_from_rtx.
6618         (gate_convert_to_eh_region_ranges): New.
6619         (pass_convert_to_eh_region_ranges): Use it.
6620         (push_uleb128, push_sleb128): Use VEC not varray.
6621         (output_one_function_exception_table): Likewise.
6622         (dump_eh_tree): Update for eh_region changes.
6623         (verify_eh_tree): Likewise.
6624         (verify_eh_region, default_init_unwind_resume_libfunc): Remove.
6625         * tree-eh.c: Include target.h.
6626         (add_stmt_to_eh_lp_fn): Rename from add_stmt_to_eh_region_fn.
6627         Don't disallow GIMPLE_RESX; adjust argument check.
6628         (add_stmt_to_eh_lp): Rename from add_stmt_to_eh_region.
6629         (record_stmt_eh_region): Update for landing pad numbers;
6630         generate a landing pad if necessary.
6631         (remove_stmt_from_eh_lp): Rename from remove_stmt_from_eh_region.
6632         (remove_stmt_from_eh_lp_fn): Similarly.
6633         (lookup_stmt_eh_lp_fn): Rename from lookup_stmt_eh_region_fn.
6634         Update for lp numbers; don't special case missing throw_stmt_table.
6635         (lookup_expr_eh_lp): Similarly.
6636         (lookup_stmt_eh_lp): Rename from lookup_stmt_eh_region.
6637         (eh_seq, eh_region_may_contain_throw): New.
6638         (struct leh_state): Add ehp_region.
6639         (struct leh_tf_state): Remove eh_label.
6640         (emit_post_landing_pad): New.
6641         (emit_resx, emit_eh_dispatch): New.
6642         (note_eh_region_may_contain_throw): New.
6643         (frob_into_branch_around): Take eh_region not eh label;
6644         emit eh code into eh_seq.
6645         (honor_protect_cleanup_actions): Early exit for no actions.  Don't
6646         handle EXC_PTR_EXPR, FILTER_EXPR.  Use gimple_build_eh_must_not_throw,
6647         lower_eh_must_not_throw.  Emit code to eh_seq.
6648         (lower_try_finally_nofallthru): Emit eh code to eh_seq.
6649         (lower_try_finally_onedest): Likewise.
6650         (lower_try_finally_copy): Likewise.
6651         (lower_try_finally_switch): Likewise.
6652         (lower_try_finally): Initialize ehp_region.
6653         (lower_catch): Update for eh_catch objects.
6654         (lower_eh_filter): Don't handle must_not_throw.
6655         (lower_eh_must_not_throw): New.
6656         (lower_cleanup): Don't set eh_label.
6657         (lower_eh_constructs_2): Resolve eh builtins.
6658         Handle GIMPLE_EH_MUST_NOT_THROW.
6659         (lower_eh_constructs): Initialize eh_region_may_contain_throw.
6660         Add eh_seq to the end of the function body.
6661         (make_eh_dispatch_edges): New.
6662         (make_eh_edge): Remove.
6663         (make_eh_edges): Simplify for landing pads.
6664         (redirect_eh_edge_1): New.
6665         (redirect_eh_edge): Use it.
6666         (redirect_eh_dispatch_edge): New.
6667         (stmt_could_throw_p): Use a switch.  Allow RESX.
6668         (stmt_can_throw_external): Use lookup_stmt_eh_lp.
6669         (stmt_can_throw_internal): Likewise.
6670         (maybe_clean_eh_stmt_fn, maybe_clean_eh_stmt): New.
6671         (maybe_clean_or_replace_eh_stmt): Update for landing pads.
6672         (maybe_duplicate_eh_stmt_fn, maybe_duplicate_eh_stmt): New.
6673         (gate_refactor_eh): New.
6674         (pass_refactor_eh): Use it.
6675         (lower_resx, execute_lower_resx, pass_lower_resx): New.
6676         (lower_eh_dispatch, execute_lower_eh_dispatch): New.
6677         (gate_lower_ehcontrol, pass_lower_eh_dispatch): New.
6678         (remove_unreachable_handlers): Rename from
6679         tree_remove_unreachable_handlers; rewrite for landing pads;
6680         call remove_eh_handler directly.
6681         (remove_unreachable_handlers_no_lp): New.
6682         (unsplit_eh, unsplit_all_eh): New.
6683         (tree_empty_eh_handler_p, all_phis_safe_to_merge): Remove.
6684         (cleanup_empty_eh_merge_phis, cleanup_empty_eh_move_lp): New.
6685         (cleanup_empty_eh_unsplit): New.
6686         (cleanup_empty_eh): Rewrite.
6687         (cleanup_all_empty_eh): New.
6688         (execute_cleanup_eh): Rename from cleanup_eh.  Remove unreachable
6689         handlers first.  Use unsplit_all_eh, cleanup_all_empty_eh.
6690         (gate_cleanup_eh): New.
6691         (pass_cleanup_eh): Use it.
6692         (verify_eh_edges): Move later in file.  Expect one EH edge.
6693         (verify_eh_dispatch_edge): New.
6694
6695         * Makefile.in (FUNCTION_H): Use vecprim.h, not varray.h.
6696         (gtype-desc.o): Add TARGET_H.
6697         (tree.o): Use EXCEPT_H, not except.h.
6698         (cfgbuild.o): Add EXPR_H.
6699         (GTFILES): Add vecprim.h.
6700         * builtins.c (expand_builtin): Handle BUILT_IN_EH_POINTER,
6701         BUILT_IN_EH_FILTER, BUILT_IN_EH_COPY_VALUES.
6702         * builtins.def (BUILT_IN_UNWIND_RESUME, BUILT_IN_EH_POINTER,
6703         BUILT_IN_EH_FILTER, BUILT_IN_EH_COPY_VALUES): New.
6704         * calls.c (emit_call_1): Use make_reg_eh_region_note.
6705         * cfgbuild.c (control_flow_insn_p): Use can_nonlocal_goto; tidy
6706         calls to can_throw_internal.
6707         (rtl_make_eh_edge): Use get_eh_landing_pad_from_rtx.
6708         (make_edges): Don't handle RESX; use can_nonlocal_goto.
6709         * cfgexpand.c (expand_gimple_stmt_1): Don't handle RESX.
6710         (expand_gimple_stmt): Use make_reg_eh_region_note.
6711         (expand_debug_expr): Don't handle EXC_PTR_EXPR and FILTER_EXPR.
6712         (gimple_expand_cfg): Don't call convert_from_eh_region_ranges,
6713         or find_exception_handler_labels.
6714         * cfgrtl.c (rtl_verify_flow_info_1): Don't handle RESX.  Assert
6715         there is exacly one EH edge.  Use can_nonlocal_goto and
6716         can_throw_internal.
6717         * cgraphunit.c (update_call_expr): Use maybe_clean_eh_stmt_fn.
6718         (cgraph_materialize_all_clones): Use maybe_clean_or_replace_eh_stmt.
6719         * combine.c (can_combine_p, try_combine): Use insn_nothrow_p.
6720         * cse.c (count_reg_usage, insn_live_p): Use insn_could_throw_p.
6721         * dce.c (deletable_insn_p_1): Don't test may_trap_p.
6722         (deletable_insn_p): Use insn_nothrow_p; reorder nonjump insn test.
6723         * dse.c (scan_insn): Use insn_could_throw_p.
6724         * emit-rtl.c (try_split): Use copy_reg_eh_region_note_backward.
6725         * expr.c (expand_expr_real): Use make_reg_eh_region_note.
6726         (expand_expr_real_1): Don't handle RESX, EXC_PTR, or FILTER_EXPR.
6727         * fold-const.c (tree_expr_nonnegative_warnv_p): Don't handle
6728         EXC_PTR_EXPR or FILTER_EXPR.
6729         (tree_expr_nonzero_warnv_p): Likewise.
6730         * function.h: Include vecprim.h, not varray.h
6731         (struct rtl_eh): Remove filter, exc_ptr, built_landing_pad members;
6732         move ttype_data and ehspec_data members to struct eh_status; change
6733         action_record_data member to a VEC.
6734         * gcse.c (hash_scan_set): Use can_throw_internal.
6735         * gengtype.c (open_base_files): Add target.h to gtype-desc.c.
6736         * gimple-iterator.c (gsi_replace): Use maybe_clean_or_replace_eh_stmt.
6737         * gimple-low.c (lower_stmt): Handle GIMPLE_EH_MUST_NOT_THROW.
6738         (block_may_fallthru): Don't handle RESX_EXPR.
6739         * gimple-pretty-print.c (dump_gimple_label): Dump EH_LANDING_PAD_NR.
6740         (dump_gimple_eh_must_not_throw, dump_gimple_eh_dispatch): New.
6741         (dump_gimple_stmt): Dump landing pad information with TDF_EH;
6742         handle GIMPLE_EH_MUST_NOT_THROW, GIMPLE_EH_DISPATCH.
6743         * gimple.c (gss_for_code): Handle GIMPLE_EH_MUST_NOT_THROW,
6744         GIMPLE_EH_DISPATCH, GIMPLE_RESX.
6745         (gimple_size): Likewise.
6746         (gimple_build_eh_dispatch, gimple_build_eh_must_not_throw): New.
6747         (gimple_build_resx): Use gimple_build_with_ops.
6748         (DEFTREECODE): Don't handle EXC_PTR_EXPR, FILTER_EXPR.
6749         (is_gimple_val): Likewise.
6750         (is_gimple_stmt): Remove RESX_EXPR.
6751         * gimple.def (GIMPLE_EH_MUST_NOT_THROW, GIMPLE_EH_DISPATCH): New.
6752         (GIMPLE_RESX): Reorder with other EH constructs.
6753         * gimple.h (struct gimple_statement_eh_mnt): New.
6754         (struct gimple_statement_eh_ctrl): Rename from gimple_statement_resx.
6755         (gimple_eh_filter_must_not_throw): Remove.
6756         (gimple_eh_filter_set_must_not_throw): Remove.
6757         (gimple_eh_must_not_throw_fndecl): New.
6758         (gimple_eh_dispatch_region, gimple_eh_dispatch_set_region): New.
6759         (is_gimple_resx): New.
6760         * gimplify.c (gimplify_expr): Don't handle EXC_PTR_EXPR, RESX_EXPR.
6761         Don't copy EH_FILTER_MUST_NOT_THROW.
6762         * gsstruct.def (GSS_EH_MNT, GSS_EHCONTROL): New.
6763         * ipa-inline.c (estimate_function_body_sizes): Don't try to
6764         handle must_not_throw_labels specially.
6765         * ipa-pure-const.c (check_call): Update debug statement for LP.
6766         * ipa-type-escape.c (check_operand): Don't handle EXC_PTR or FILTER.
6767         * ipa-utils.c (get_base_var): Likewise.
6768         * libfunc.h (LTI_unwind_resume, unwind_resume_libfunc): Remove.
6769         * lower-subreg.c (move_eh_region_note): Remove.
6770         (resolve_simple_move): Use copy_reg_eh_region_note_forward.
6771         * omp-low.c (new_omp_context): Update for eh_lp_nr.
6772         (create_task_copyfn): Likewise.
6773         (maybe_catch_exception): Use gimple_build_eh_filter.
6774         * optabs.c (emit_libcall_block): Update test for no-nonlocal-goto
6775         REG_EH_REGION.  Use make_reg_eh_region_note_nothrow_nononlocal.
6776         * passes.c (init_optimization_passes): Add pass_lower_eh_dispatch
6777         and pass_lower_resx.
6778         * print-tree.c (print_node): Dump EH_LANDING_PAD_NR.
6779         * recog.c (peephole2_optimize): Use copy_reg_eh_region_note_backward,
6780         can_throw_internal, can_nonlocal_goto.
6781         * reload1.c (fixup_eh_region_note): Use insn_could_throw_p,
6782         copy_reg_eh_region_note_forward.
6783         (emit_input_reload_insns): Use copy_reg_eh_region_note_forward.
6784         (emit_output_reload_insns): Likewise.
6785         (copy_eh_notes): Remove.
6786         * rtl.def (RESX): Remove.
6787         * rtl.h: Update declarations.
6788         * sese.c (graphite_copy_stmts_from_block): Use maybe_duplicate_eh_stmt.
6789         * tree-cfg.c (make_edges): Handle GIMPLE_EH_DISPATCH.
6790         (update_eh_label): Remove.
6791         (cleanup_dead_labels_eh): New.
6792         (cleanup_deal_labels): Use it instead of update_eh_label.
6793         (gimple_merge_blocks): Update landing pad data structure when
6794         removing a landing pad label.
6795         (remove_useless_stmts_tc): Remove gimple_eh_filter_must_not_throw
6796         test; handle GIMPLE_EH_MUST_NOT_THROW.
6797         (is_ctrl_altering_stmt): Handle GIMPLE_EH_DISPATCH.
6798         (verify_gimple_assign_single): Don't handle EXC_PTR or FILTER_EXPR.
6799         (verify_types_in_gimple_stmt): Handle GIMPLE_EH_DISPATCH.
6800         (verify_stmt): Likewise.  Verify landing pads.
6801         (gimple_redirect_edge_and_branch): Handle GIMPLE_EH_DISPATCH.
6802         (gimple_duplicate_bb): Use maybe_duplicate_eh_stmt.
6803         (struct move_stmt_d): Add eh_map.
6804         (move_stmt_eh_region_nr, move_stmt_eh_region_tree_nr): New.
6805         (move_stmt_r): Remap eh region numbers in builtin calls,
6806         resx and eh_dispatch.
6807         (move_block_to_fn): Remove eh_offset parameter.  Use
6808         maybe_duplicate_eh_stmt_fn.
6809         (find_outermost_region_in_block): Operate on eh_region pointers
6810         instead of region numbers.
6811         (move_sese_region_to_fn): Expect eh_map instead of eh_offset from
6812         duplicate_eh_regions.
6813         * tree-cfgcleanup.c (tree_forwarder_block_p): Move entry block edge
6814         test earlier.  Disallow EH landing pads.
6815         * tree-cfa.c (create_tree_common_ann): Don't set ann->rn.
6816         * tree-flow.h: Update declarations.
6817         (struct tree_ann_common_d): Replace rn with lp_nr.
6818         * tree-inline.c (copy_tree_body_r): Don't handle RESX_EXPR.
6819         (remap_eh_region_nr, remap_eh_region_tree_nr): New.
6820         (remap_gimple_stmt): Remap eh region numbers in builtin calls,
6821         resx and eh_dispatch.
6822         (copy_bb): Use maybe_duplicate_eh_stmt_fn.
6823         (copy_edges_for_bb): Use make_eh_dispatch_edges.
6824         (copy_cfg_body): Expect eh_map instead of eh_region_offset
6825         from duplicate_eh_regions.
6826         (estimate_num_insns): Don't handle EXC_PTR_EXPR or FILTER_EXPR;
6827         update RESX; handle EH_DISPATCH.
6828         (expand_call_inline): Set eh_lp_nr, not eh_region.
6829         (maybe_inline_call_in_expr): Likewise.
6830         * tree-inline.h (struct copy_body_data): Replace eh_region with
6831         eh_lp_nr, eh_region_offset with eh_map.
6832         * tree-optimize.c (execute_fixup_cfg): Use maybe_clean_eh_stmt.
6833         * tree-pass.h (pass_lower_eh_dispatch, pass_lower_resx): New.
6834         * tree-pretty-print.c (dump_generic_node): Don't handle
6835         EXC_PTR_EXPR, FILTER_EXPR, RESX_EXPR.
6836         * tree-sra.c (scan_function): Use maybe_clean_eh_stmt.
6837         * tree-ssa-alias.c (ref_maybe_used_by_call_p_1): Don't handle
6838         EXC_PTR_EXPR, FILTER_EXPR.
6839         * tree-ssa-operands.c (get_expr_operands): Likewise.
6840         * tree-ssa-propagate.c (valid_gimple_rhs_p): Likewise.
6841         * tree-ssa-sccvn.c (copy_reference_ops_from_ref): Likewise.
6842         (ao_ref_init_from_vn_reference): Likewise.
6843         * tree-ssa-sink.c (statement_sink_location): Likewise.
6844         * tree-ssa-dce.c (mark_stmt_if_obviously_necessary): Likewise.
6845         (mark_virtual_phi_result_for_renaming): Export.  Tidy.
6846         * tree-ssa-pre.c (get_or_alloc_expr_for): Don't handle
6847         EXC_PTR_EXPR, FILTER_EXPR.
6848         (is_exception_related): Remove.
6849         (compute_avail): Don't call it.
6850         * tree-ssa-structalias.c: Remove VEC definitions for int and unsigned.
6851         * tree.c (find_decls_types_in_eh_region): Update for eh_region changes.
6852         (find_decls_types_in_node): Use FOR_ALL_EH_REGION_FN.
6853         (build_common_builtin_nodes): Add enable_cxa_end_cleanup parameter.
6854         Build EH builtins.
6855         (build_resx): Remove.
6856         * tree.def (EXC_PTR_EXPR, FILTER_EXPR, RESX_EXPR): Remove.
6857         * tree.h: Update declarations.
6858         (EH_FILTER_MUST_NOT_THROW): Remove.
6859         (struct tree_label_decl): Add eh_landing_pad_nr.
6860         (EH_LANDING_PAD_NR): New.
6861         * value-prof.c (gimple_ic): Tidy variable names.  Update for
6862         landing pad numbers.
6863         (gimple_stringop_fixed_value): Tidy variable names.  Assert
6864         that neither call stmt can throw.
6865         * vecprim.h (uchar): New.
6866         (VEC(uchar,heap), VEC(uchar,gc)): New.
6867
6868         * c-common.c (c_define_builtins): Update call to
6869         build_common_builtin_nodes.
6870         * c-parser.c (c_parse_file): Don't call
6871         default_init_unwind_resume_libfunc.
6872
6873 2009-09-14  Richard Sandiford  <rdsandiford@googlemail.com>
6874
6875         * config/mips/mips-protos.h (mips_cfun_has_cprestore_slot_p): Declare.
6876         (mips_cprestore_address_p): Likewise.
6877         (mips_save_gp_to_cprestore_slot): Likewise.
6878         (mips_restore_gp): Rename to...
6879         (mips_restore_gp_from_cprestore_slot): ...this.
6880         (mips_must_initialize_gp_p): Declare.
6881         (mips_emit_save_slot_move): Likewise.
6882         (mips_output_load_label): Return nothing.
6883         (mips_eh_uses): Declare.
6884         * config/mips/mips.h (TARGET_SPLIT_CALLS): Require epilogue_completed.
6885         (TARGET_CPRESTORE_DIRECTIVE): New macro.
6886         (TARGET_ABSOLUTE_JUMPS): Likewise.
6887         (EH_USES): Likewise.
6888         (FIRST_PSEUDO_REGISTER): Update comment.
6889         (MIPS_ABSOLUTE_JUMP): New macro, extracted from...
6890         (MIPS_CALL): ...here.
6891         (REGISTER_NAMES): Add $cprestore.
6892         * config/mips/mips.c (machine_function): Remove has_gp_insn_p.
6893         Add load_label_length, has_inflexible_gp_insn_p,
6894         has_flexible_gp_insn_p, must_initialize_gp_p and
6895         must_restore_gp_when_clobbered_p.
6896         (mips_expand_call): Don't generate split instructions here.
6897         (mips_split_call): Update the call to mips_restore_gp after
6898         the above name change.
6899         (mips16_cfun_returns_in_fpr_p): Move earlier in file.
6900         (mips_find_gp_ref): New function.
6901         (mips_insn_has_inflexible_gp_ref_p): Likewise.
6902         (mips_cfun_has_inflexible_gp_ref_p): Likewise.
6903         (mips_insn_has_flexible_gp_ref_p): Likewise.
6904         (mips_cfun_has_flexible_gp_ref_p): Likewise.
6905         (mips_function_has_gp_insn): Delete.
6906         (mips_global_pointer): Drop the df_regs_ever_live_p check.
6907         Use the new functions above.  Only return INVALID_REGNUM
6908         for TARGET_ABSOLUTE_JUMPS.
6909         (mips_must_initialize_gp_p): New function.
6910         (mips_get_cprestore_base_and_offset): New function, extracted from...
6911         (mips_cprestore_slot): ...here.  Take a bool parameter.
6912         (mips_cfun_has_cprestore_slot_p): New function.
6913         (mips_cprestore_address_p): Likewise.
6914         (mips_save_gp_to_cprestore_slot): Likewise.
6915         (mips_restore_gp): Rename to...
6916         (mips_restore_gp_from_cprestore_slot): ...this.  Assert
6917         epilogue_completed.  Update the call to mips_cprestore_slot.
6918         Test cfun->machine->must_restore_gp_when_clobbered_p.
6919         (mips_direct_save_slot_move_p): New function.
6920         (mips_emit_save_slot_move): Likewise.
6921         (mips_output_cplocal): Test mips_must_initialize_gp_p () instead
6922         of cfun->machine->global_pointer.
6923         (mips_output_function_prologue): Check mips_must_initialize_gp_p ().
6924         (mips_save_reg): Use mips_emit_save_slot_move.
6925         (mips_expand_prologue): Set must_initialize_gp_p.
6926         Use mips_cfun_has_cprestore_slot_p.  Use gen_potential_cprestore
6927         for all cprestore saves.  Emit a use_cprestore instruction after
6928         setting up the cprestore slot.
6929         (mips_restore_reg): Use mips_emit_save_slot_move.
6930         (mips_process_load_label): New function.
6931         (mips_load_label_length): Likewise.
6932         (mips_output_load_label): Don't return asm: output it here instead.
6933         Use mips_process_load_label.
6934         (mips_adjust_insn_length): Adjust the length of branch instructions
6935         that have length MAX_PIC_BRANCH_LENGTH.
6936         (mips_output_conditional_branch): Update the call to
6937         mips_output_load_label.  Assume the branch target is OPERANDS[0]
6938         rather than OPERANDS[1].  Use MIPS_ABSOLUTE_JUMP for absolute jumps.
6939         (mips_output_order_conditional_branch): Swap the meaning of
6940         OPERANDS[0] and OPERANDS[1].
6941         (mips_variable_issue): Don't count ghost instructions.
6942         (mips_expand_ghost_gp_insns): New function.
6943         (mips_reorg): Rerun mips_reorg_process_insns if it returns true.
6944         (mips_output_mi_thunk): Set must_initialize_gp_p.
6945         (mips_eh_uses): New function.
6946         * config/mips/predicates.md (cprestore_save_slot_operand)
6947         (cprestore_load_slot_operand): New predicates.
6948         * config/mips/mips.md (UNSPEC_POTENTIAL_CPRESTORE): New unspec.
6949         (UNSPEC_MOVE_GP): Likewise.
6950         (UNSPEC_CPRESTORE, UNSPEC_RESTORE_GP, UNSPEC_EH_RETURN)
6951         (UNSPEC_CONSTTABLE_INT, UNSPEC_CONSTTABLE_FLOAT): Bump to make room.
6952         (CPRESTORE_SLOT_REGNUM): New register.
6953         (MAX_PIC_BRANCH_LENGTH): New constant.
6954         (jal_macro): Use MIPS_ABSOLUTE_JUMPS.
6955         (length): Use MAX_PIC_BRANCH_LENGTH as a placeholder for PIC long
6956         branches.  Fix commentary.
6957         (loadgp_newabi_<mode>): Change from unspec_volatile to unspec.
6958         Only split if mips_must_initialize_gp_p; expand to nothing otherwise.
6959         Change type to "ghost".
6960         (loadgp_absolute_<mode>): Likewise.
6961         (loadgp_rtp_<mode>): Likewise.
6962         (copygp_mips16): Likewise.
6963         (loadgp_blockage): Remove redundant mode attribute.
6964         (potential_cprestore): New instruction.
6965         (cprestore): Turn into an unspec set.
6966         (use_cprestore): New instruction.
6967         (*branch_fp): Swap operands 0 and 1.  Remove redundant mode attribute.
6968         (*branch_fp_inverted): Likewise.
6969         (*branch_order<mode>): Likewise.
6970         (*branch_order<mode>_inverted): Likewise.
6971         (*branch_equality<mode>): Likewise.
6972         (*branch_equality<mode>_inverted): Likewise.
6973         (*branch_bit<bbv><mode>): Likewise.
6974         (*branch_bit<bbv><mode>_inverted): Likewise.
6975         (*branch_equality<mode>_mips16): Remove redundant mode.
6976         (jump): Turn into a define_expand.
6977         (*jump_absolute): New instruction.
6978         (*jump_pic): Likewise.
6979         (*jump_mips16): Rename previously-unnamed pattern.  Remove
6980         redundant mode attribute.
6981         (restore_gp): Split on epilogue_completed rather than
6982         reload_completed.  Change type to "ghost".
6983         (move_gp<mode>): New instruction.
6984         * config/mips/mips-dsp.md (mips_bposge): Swap operands 0 and 1.
6985         Remove redundant mode attribute.
6986         * config/mips/mips-ps-3d.md (bc1any4t): Likewise.
6987         (bc1any4f, bc1any2t, bc1any2f): Likewise.
6988         (*branch_upper_lower, *branch_upper_lower_inverted): Likewise.
6989
6990 2009-09-14  Michael Meissner  <meissner@linux.vnet.ibm.com>
6991
6992         PR target/41210
6993         * config/rs6000/rs6000.c (rs6000_function_value): V2DF and V2DI
6994         are returned in the same register (vs34 or v2) that Altivec vector
6995         types are returned in.
6996         (rs6000_libcall_value): Ditto.
6997
6998         PR target/41331
6999         * config/rs6000/rs6000.c (rs6000_emit_move): Use gen_add3_insn
7000         instead of explicit addsi3/adddi3 calls.
7001         (rs6000_split_multireg_move): Ditto.
7002         (rs6000_emit_allocate_stack): Ditto.
7003         (rs6000_emit_prologue): Ditto.
7004         (rs6000_output_mi_thunk): Ditto.
7005
7006         * config/rs6000/rs6000.md (bswapdi*): Don't assume the pointer
7007         size is 64 bits if we can use 64-bit registers.
7008
7009 2009-09-14  Bernd Schmidt  <bernd.schmidt@analog.com>
7010
7011         * config/bfin/bfin.c (bfin_longcall_p): Don't use short calls for weak
7012         symbols.
7013
7014         From Jie Zhang <jie.zhang@analog.com>:
7015         * config/bfin/bfin.c (bfin_expand_prologue): Ask do_link to
7016         save FP and RETS with saveall attribute.
7017         (bfin_expand_epilogue): Ask do_unlink to restore FP and RETS
7018         with saveall attribute.
7019
7020         * config/bfin/bfin.c (bfin_expand_builtin,
7021         case BFIN_BUILTIN_MULT_1X32X32): Force constants to registers for the
7022         operands.
7023
7024         From Jie Zhang <jie.zhang@analog.com>:
7025         * config/bfin/bfin.c (bfin_expand_builtin): Initialize icodes
7026         before use in two places.
7027         * config/bfin/bfin.md (AREG): Define mode iterator.
7028         (reload_in, reload_out): Use mode iterator AREG.
7029
7030 2009-09-14  Richard Guenther  <rguenther@suse.de>
7031
7032         PR middle-end/41350
7033         * dwarf2out.c (dwarf2out_begin_prologue): Adjust non-CFI asm
7034         EH personality path.
7035
7036 2009-09-13  Richard Guenther  <rguenther@suse.de>
7037             Rafael Avila de Espindola  <espindola@google.com>
7038
7039         * langhooks-def.h (LANG_HOOKS_EH_RUNTIME_TYPE): Define.
7040         (LANG_HOOKS_EH_PERSONALITY): Likewise.
7041         (LANG_HOOKS_INITIALIZER): Adjust.
7042         (lhd_pass_through_t): Declare.
7043         * langhooks.h (struct lang_hooks): Add eh_runtime_type and
7044         eh_personality.
7045         * langhooks.c (lhd_pass_through_t): New function.
7046         * dwarf2out.c (output_call_frame_info, dwarf2out_do_cfi_startproc,
7047         dwarf2out_begin_prologue): Use personality from current_function_decl.
7048         * expr.h (get_personality_function): Declare.
7049         * expr.c (get_personality_function): New function.
7050         (build_personality_function): Likewise.
7051         * libfuncs.h (libfunc_index): Remove LTI_eh_personality.
7052         (eh_personality_libfunc): Remove.
7053         * optabs.c (build_libfunc_function): New function split out from ...
7054         (init_one_libfunc): ... here.
7055         * tree.h (DECL_FUNCTION_PERSONALITY): New.
7056         (tree_function_decl): Add personality.
7057         (lhd_gcc_personality): Declare.
7058         (build_personality_function): Likewise.
7059         * tree.c (gcc_eh_personality_decl): New.
7060         (lhd_gcc_personality): New function.
7061         * except.h (lang_eh_runtime_type): Remove.
7062         (enum eh_personality_kind): New.
7063         (build_personality_function): Declare.
7064         (function_needs_eh_personality): Declare.
7065         * except.c (lang_eh_runtime_type): Remove.
7066         (function_needs_eh_personality): New function.
7067         (add_type_for_runtime): Call lang_hooks.type_for_runtime instead.
7068         (sjlj_emit_function_enter, output_function_exception_table):
7069         Use personality from current_function_decl.
7070         * tree-eh.c (lower_eh_constructs): Set DECL_FUNCTION_PERSONALITY.
7071         * tree-inline.c (tree_can_inline_p): Do not inline across different
7072         EH personalities.
7073         (expand_call_inline): Likewise.  Adjust the callers EH personality.
7074         (tree_function_versioning): Copy DECL_FUNCTION_PERSONALITY.
7075         * cgraph.c (cgraph_add_new_function): Set DECL_FUNCTION_PERSONALITY.
7076         * Makefile.in (cgraph.o): Add $(EXCEPT_H) dependency.
7077         (c-parser.o): Likewise
7078         * c-tree.h (c_eh_initialized_p): Remove.
7079         (c_maybe_initialize_eh): Likewise.
7080         * c-decl.c (finish_decl): Don't call c_maybe_initialize_eh.
7081         (finish_decl): Don't call c_maybe_initialize_eh.
7082         (c_eh_initialized_p): Remove.
7083         (c_maybe_initialize_eh): Likewise.
7084         * c-parser.c (c_parser_omp_construct): Likewise.
7085         (c_parse_file): Initialize exception handling.
7086
7087 2009-09-13  Kai Tietz  <kai.tietz@onevision.com>
7088
7089         * config.gcc (tm_file): Remove i386/biarch32.h
7090         for i?86-w64-mingw* case.
7091         (i?86-*-mingw* andx86_64-*-mingw*): Add multilib
7092         support.
7093         * config.host: Set for x64 mingw the option
7094         use_long_long_for_widest_fast_int to yes.
7095
7096 2009-09-13  Eric Botcazou  <ebotcazou@adacore.com>
7097
7098         * tree.h (DECL_IGNORED_P): Document further effect for FUNCTION_DECL.
7099         * dbxout.c (dbxout_function_end): Do not test DECL_IGNORED_P.
7100         (dbxout_begin_function): Likewise.
7101         * final.c (dwarf2_debug_info_emitted_p): New predicate.
7102         (final_start_function): Do not emit debug info if DECL_IGNORED_P is
7103         set on the function.
7104         (final_end_function): Likewise.
7105         (final_scan_insn): Likewise.
7106         (rest_of_handle_final): Likewise.
7107         * varasm.c (assemble_start_function): Likewise.
7108         * config/rs6000/xcoff.h (ASM_DECLARE_FUNCTION_NAME): Likewise.
7109
7110 2009-09-12  Jason Merrill  <jason@redhat.com>
7111
7112         * dbgcnt.c (dbg_cnt_process_single_pair): constify.
7113         * opts.c (common_handle_option): constify.
7114
7115 2009-09-12  Gerald Pfeifer  <gerald@pfeifer.com>
7116
7117         * doc/install.texi (avr): Remove obsolete reference site.
7118
7119 2009-09-12  Gerald Pfeifer  <gerald@pfeifer.com>
7120
7121         * doc/install.texi (Binaries): Adjust AIX link.
7122
7123 2009-09-12  Akim Demaille  <demaille@gostai.com>
7124
7125         * doc/invoke.texi (-fstrict-aliasing): Correct two examples.
7126         Use an imperative sentence.
7127
7128 2009-09-11  Richard Henderson  <rth@redhat.com>
7129
7130         * gsstruct.def (DEFGSSTRUCT): Remove printable-name argument; add
7131         structure-name and has-tree-operands arguments; update all entries.
7132         * gimple.def (DEFGSCODE): Replace 3rd argument with GSS_symbol;
7133         update all entries.
7134         * gimple.c (gimple_ops_offset_): Use HAS_TREE_OP argument.
7135         (gsstruct_code_size): New.
7136         (gss_for_code_): New.
7137         (gss_for_code): Remove.
7138         (gimple_size): Rewrite using gsstruct_code_size.
7139         (gimple_statement_structure): Move to gimple.h.
7140         * gimple.h (gimple_ops_offset_, gss_for_code_): Declare.
7141         (gss_for_code, gimple_statement_structure): New.
7142         (gimple_ops): Use new arrays; tidy.
7143
7144 2009-09-11  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
7145
7146         * config/pa/predicates.md (symbolic_operand): Require a CONST symbolic
7147         operand to be a PLUS expression.
7148         * config/pa/pa.c (pa_secondary_reload): Likewise.
7149
7150 2009-09-11  Jakub Jelinek  <jakub@redhat.com>
7151
7152         * combine.c (propagate_for_debug_subst): Call wrap_constant on top.
7153
7154         * print-rtl.c (print_rtx): Use JUMP_LABEL (in_rtx) instead of
7155         XEXP (in_rtx, 8).
7156
7157 2009-09-11  Bernd Schmidt  <bernd.schmidt@analog.com>
7158
7159         From Jie Zhang <jie.zhang@analog.com>:
7160         * doc/extend.texi (node Function Attributes): Document l2
7161         function attribute.
7162         (node Blackfin Variable Attributes): Document l2 variable attributes.
7163
7164 2009-09-11  Loren J. Rittle  <ljrittle@acm.org>
7165
7166         * config.gcc (*-*-freebsd*): Enable default_use_cxa_atexit
7167         to match the system compiler's configuration at inflection point.
7168         Add comment to remark a remaining difference with system compiler.
7169
7170         * configure.ac (*-*-freebsd*): Enable check for __stack_chk_fail.
7171         * configure: Regenerate.
7172
7173 2009-09-11  Bernd Schmidt  <bernd.schmidt@analog.com>
7174
7175         From Jie Zhang <jie.zhang@analog.com>:
7176         * config/bfin/bfin.c (bfin_expand_call): Handle L2 functions.
7177         (bfin_handle_l2_attribute): New.
7178         (bfin_attribute_table): Add l2 attribute.
7179
7180 2009-09-11  Michael Matz  <matz@suse.de>
7181
7182         PR middle-end/41275
7183         * tree-inline.c (remap_decls): Don't put DECL_EXTERNAL decls
7184         on the local_decls list.
7185
7186 2009-09-11  Alexandre Oliva  <aoliva@redhat.com>
7187
7188         PR debug/41276
7189         PR debug/41307
7190         * cselib.c (cselib_expand_value_rtx_cb): Document callback
7191         interface.
7192         (cselib_expand_value_rtx_1): Use callback for SUBREGs.  Adjust
7193         for VALUEs, to implement the documented interface.
7194         * var-tracking.c (vt_expand_loc_callback): Handle SUBREGs.
7195         Adjust for VALUEs and anything else, to implement the
7196         documented interface.
7197
7198 2009-09-10  Nathan Froyd  <froydnj@codesourcery.com>
7199
7200         * config/rs6000/rs6000.h (DATA_ALIGNMENT): Check that we are dealing
7201         with actual SPE/paired vector modes before using 64-bit alignment.
7202         Check that TYPE is a REAL_TYPE for TARGET_E500_DOUBLE.
7203
7204 2009-09-10  DJ Delorie  <dj@redhat.com>
7205
7206         * config/mep/mep.md (eh_epilogue): Defer until after epilogue is
7207         emitted.
7208
7209         * config/mep/mep.h (LEGITIMATE_CONSTANT_P): New.
7210         * config/mep/mep.c (mep_legitimate_constant_p): New.
7211         * config/mep/mep-protos.h: Prototype it.
7212
7213 2009-09-10  Richard Henderson  <rth@redhat.com>
7214
7215         * print-rtl.c (print_rtx): Fix JUMP_LABEL index.
7216
7217 2009-09-10  Jason Merrill  <jason@redhat.com>
7218
7219         * tree.c (chain_index): New fn.
7220         * tree.h: Declare it.
7221
7222 2009-09-10  Rainer Orth  <ro@CeBiTec.Uni-Bielefeld.DE>
7223
7224         * config/sol2-c.c (cmn_err_length_specs): Initialize
7225         scalar_identity_flag.
7226
7227 2009-09-10  Richard Henderson  <rth@redhat.com>
7228
7229         * tree.h (struct tree_decl_common): Move align member earlier;
7230         move label_decl_uid member ...
7231         (struct tree_label_decl): ... here.
7232         (LABEL_DECL_UID): Update to match.
7233
7234         * tree-cfg.c (dump_function_to_file): Dump eh tree with TDF_EH,
7235         not TDF_DETAILS.
7236
7237         * tree-cfg.c (gimple_redirect_edge_and_branch): Do
7238         gimple_try_redirect_by_replacing_jump test after no-op and EH tests.
7239
7240         * tree-cfg.c (split_edge_bb_loc): Don't disallow placement at
7241         dest_prev if the edge is complex.
7242
7243         * tree-cfg.c (is_ctrl_stmt): Use a switch.
7244
7245         * tree-cfg.c (gimple_can_merge_blocks_p): Move label and
7246         loop latch tests earlier.
7247
7248         * gimple-iterator.c (gimple_find_edge_insert_loc): Insert
7249         before GIMPLE_RETURN, not after its predecessor; insert
7250         before GIMPLE_RESX.
7251
7252         * gimple-iterator.c (gimple_find_edge_insert_loc): Use
7253         gimple_seq_empty_p to test for no PHI nodes.
7254         * tree-cfg.c (split_critical_edges): Likewise.
7255
7256         * c-common.h (c_dialect_cxx, c_dialect_objc): Boolify.
7257
7258 2009-09-10  Hariharan Sandanagobalane  <hariharan@picochip.com>
7259
7260         * final.c (shorten_branches) : Ignore DEBUG_INSN_P instructions
7261         introduced by the VTA branch merge.
7262
7263 2009-09-10  Uros Bizjak  <ubizjak@gmail.com>
7264
7265         * ira-conflicts.c: Use fputs or putc instead of fprintf
7266         where appropriate.
7267         * cfg.c: Ditto.
7268         * toplev.c: Ditto.
7269         * tree-switch-conversion.c: Ditto.
7270
7271 2009-09-10  Hariharan Sandanagobalane  <hariharan@picochip.com>
7272
7273         * config/picochip/picochip.c : Ignore DEBUG_INSN_P instructions
7274         introduced by the VTA branch merge.
7275
7276 2009-09-10  Uros Bizjak  <ubizjak@gmail.com>
7277
7278         Revert:
7279         2009-09-09  Uros Bizjak  <ubizjak@gmail.com>
7280
7281         PR rtl-optimization/39779
7282         * expr.c (convert_modes): Return when mode == oldmode after
7283         CONST_INTs are processed.
7284
7285 2009-09-10  Nick Clifton  <nickc@redhat.com>
7286
7287         * config/mep/mep.c (mep_encode_section_info): Copy weakness
7288         attribute and referring decl when creating renamed symbol.
7289
7290 2009-09-10  Richard Guenther  <rguenther@suse.de>
7291
7292         PR middle-end/41257
7293         * cgraphunit.c (cgraph_emit_thunks): Emit thunks only for
7294         reachable nodes.
7295         (cgraph_finalize_compilation_unit): Compute reachability
7296         before emitting thunks.  Properly process aliases before
7297         possibly removing unreachable nodes.
7298
7299 2009-09-10  Richard Guenther  <rguenther@suse.de>
7300
7301         PR middle-end/41254
7302         * tree.c (struct free_lang_data_d): Add worklist member.
7303         (find_decls_types_r): Push onto the worklist instead of recursing.
7304         Handle TREE_BINFOs properly.
7305         (find_decls_types): New function wrapped around find_decls_types_r
7306         to process the worklist.
7307         (find_decls_types_in_eh_region): Use it.
7308         (find_decls_types_in_node): Likewise.
7309         (find_decls_types_in_var): Likewise.
7310         (free_lang_data_in_cgraph): Likewise.  Free the worklist.
7311         * tree.h (RECORD_OR_UNION_TYPE_P): New.
7312         (AGGREGATE_TYPE_P): Adjust.
7313
7314 2009-09-09  Jason Merrill  <jason@redhat.com>
7315
7316         * configure.ac: Check glibc version even if we have an in-tree
7317         assembler.
7318
7319 2009-09-09  Anthony Green  <green@moxielogic.com>
7320
7321         * config/moxie/moxie.md (*movsi, *movhi, *movqi): Use xor to load
7322         the constant 0 when appropriate.
7323         * config/moxie/constraints.md: Add constraint O.
7324
7325         * config/moxie/moxie.c (moxie_setup_incoming_varargs): Adjust
7326         to pass up to 6 32-bit argument values in registers.
7327         (moxie_function_arg): Ditto.
7328         (moxie_arg_partial_bytes): Ditto.
7329         * config/moxie/moxie.h (FUNCTION_ARG_ADVANCE): Ditto.
7330         (REG_PARM_STACK_SPACE): Ditto.
7331         (FUNCTION_ARG_REGNO_P): Ditto.
7332
7333         * config/moxie/moxie.c (moxie_expand_prologue): Use dec
7334         instruction to allocate stack space.
7335
7336 2009-09-09  Segher Boessenkool  <segher@kernel.crashing.org>
7337
7338         * config/rs6000/rs6000.md (bswapdi2_64bit): Fix
7339         unnecessarily stringent constraints.  Fix address
7340         calculation in the splitters.
7341
7342 2009-09-09  Uros Bizjak  <ubizjak@gmail.com>
7343
7344         PR rtl-optimization/39779
7345         * expr.c (convert_modes): Return when mode == oldmode after
7346         CONST_INTs are processed.
7347
7348 2009-09-09  Kai Tietz  <kai.tietz@onevision.com>
7349
7350         PR/41315
7351         * config/i386.c (ix86_can_use_return_insn_p): Check for padding0, too.
7352         (ix86_expand_prologue): Take frame.padding0 into logic of
7353         to_allocate checks.
7354         (ix86_expand_epilogue): Likewise.
7355
7356 2009-09-09  Jakub Jelinek  <jakub@redhat.com>
7357
7358         * config/t-slibgcc-elf-ver (SHLIB_MAKE_SOLINK, SHLIB_INSTALL_SOLINK):
7359         New variables.
7360         (SHLIB_LINK, SHLIB_INSTALL): Use them.
7361         * config/t-slibgcc-libgcc: New file.
7362         * config.gcc (powerpc*-*-linux*, powerpc*-*-gnu*): Use it.
7363
7364 2009-09-09  Martin Jambor  <mjambor@suse.cz>
7365
7366         PR tree-optimization/41089
7367         * tree-sra.c (find_var_candidates): Do not consider va_lists in
7368         early SRA.
7369
7370 2009-09-09  Richard Henderson  <rth@redhat.com>
7371
7372         * gimple.h (CASE_GIMPLE_OMP): New.
7373         (is_gimple_omp): Use it.
7374         * tree-cfg.c (is_ctrl_altering_stmt): Likewise.
7375         (verify_gimple_debug): Likewise.
7376
7377 2009-09-09  Richard Guenther  <rguenther@suse.de>
7378
7379         PR tree-optimization/41101
7380         * tree-ssa-pre.c (maximal_set): Remove.
7381         (compute_antic_aux): Treat the maximal set as implicitly all ones.
7382         Defer all blocks we didn't visit at least one successor.
7383         (add_to_exp_gen): Do not add to the maximal set.
7384         (make_values_for_phi): Likewise.
7385         (compute_avail): Likewise.
7386         (init_pre): Do not allocate the maximal set.
7387         (execute_pre): Do not dump it.
7388
7389 2009-09-09  Martin Jambor  <mjambor@suse.cz>
7390
7391         * tree-cfg.c (verify_gimple_phi): Check that gimple_phi_result is
7392         an SSA_NAME rather than a is_gimple_variable.
7393
7394 2009-09-09  Richard Guenther  <rguenther@suse.de>
7395
7396         PR middle-end/41317
7397         * tree-ssa-ccp.c (maybe_fold_offset_to_component_ref): Remove
7398         code dealing with plain pointer bases.
7399         (maybe_fold_offset_to_reference): Likewise.
7400         (maybe_fold_stmt_addition): Adjust.
7401
7402 2009-09-09  Richard Guenther  <rguenther@suse.de>
7403
7404         * tree.c (free_lang_data_in_type): Do not free the type variant
7405         chains.
7406         (free_lang_data): Merge char_type_node with its properly signed
7407         variant.
7408         (pass_ipa_free): Collect after freeing language specific data.
7409
7410 2009-09-09  Michael Matz  <matz@suse.de>
7411
7412         PR middle-end/41268
7413         * cfgexpand.c (expand_gimple_stmt_1): Use an int for storing
7414         SUBREG_PROMOTED_UNSIGNED_P, instead of a bool.
7415         * rtl.h (struct rtx, SUBREG_PROMOTED_UNSIGNED_P): Update comments
7416         to reflect reality.
7417
7418 2009-09-08  DJ Delorie  <dj@redhat.com>
7419
7420         * config/mep/mep.c (conversions[]): Add "ml" pattern.
7421
7422 2009-09-04  Jason Merrill  <jason@redhat.com>
7423
7424         * tree.c (tree_find_value): Remove.
7425         * tree.h: Remove prototype.
7426         * varasm.c (assemble_external): Use value_member instead.
7427
7428 2009-09-08  Alexandre Oliva  <aoliva@redhat.com>
7429
7430         * toplev.c (process_options): Choose default debugging type when
7431         gtoggle enables debug info and type is unset.
7432
7433 2009-09-08  Alexandre Oliva  <aoliva@redhat.com>
7434
7435         PR debug/41276
7436         PR debug/41307
7437         * cselib.c (cselib_expand_value_rtx_1): Don't return copy of
7438         invalid subreg.
7439
7440 2009-09-08  Alexandre Oliva  <aoliva@redhat.com>
7441
7442         * configure: Rebuilt with modified libtool.m4.
7443
7444 2009-09-08  Alexandre Oliva  <aoliva@redhat.com>
7445
7446         PR debug/41229
7447         PR debug/41291
7448         PR debug/41300
7449         * tree-ssa.c (execute_update_addresses_taken): Update debug insns.
7450
7451 2009-09-08  Alexandre Oliva  <aoliva@redhat.com>
7452
7453         * tree-ssa-loop-ivopts.c (get_phi_with_result): Remove.
7454         (remove_statement): Likewise.
7455         (rewrite_use_nonlinear_expr): Adjust.
7456         (remove_unused_ivs): Collect SSA NAMEs to remove and call...
7457         * tree-ssa.c (release_defs_bitset): ... this.  New.
7458         * tree-flow.h (release_defs_bitset): Declare.
7459
7460 2009-09-08  Alexandre Oliva  <aoliva@redhat.com>
7461
7462         PR debug/41232
7463         * tree-ssa-phiopt.c (minmax_replacement): Skip debug stmts
7464         in the middle block.
7465
7466 2009-09-08  Kai Tietz  <kai.tietz@onevision.com>
7467
7468         * tree-ssa-reassoc.c (find_operand_rank): Cast pointer
7469         via intptr_t to long type.
7470         (insert_operand_rank): Cast long type via intptr_t to
7471         pointer type.
7472         * genattrtab.c (RTL_HASH): Use intptr_t to cast from
7473         pointer to scalar.
7474         * c-pretty-print.c (pp_c_tree_decl_identifier): Cast
7475         from pointer to unsigned via uintptr_t.
7476
7477         * configure.ac (GCC_STDINT_TYPES): Initialize intptr_t,
7478         uintptr_t, HAVE_INTTYPES_H, HAVE_STDINT_H, HAVE_UINTPTR_T,
7479         and HAVE_INTPTR_T.
7480         * configure: Regenerated.
7481         * config.in: Regenerated
7482         * system.h (stdint.h): Add include.
7483         (inttypes.h): Likewise.
7484         * Makefile.in (aclocal): Add config/stdint.m4.
7485         * aclocal.m4: Regenerated.
7486
7487 2009-09-08  Bernd Schmidt  <bernd.schmidt@analog.com>
7488
7489         * config/bfin/bfin.c (np_check_regno, np_after_branch): New static
7490         variables.
7491         (note_np_check_stores): New function.
7492         (harmless_null_pointer_p): New function.
7493         (trapping_loads_p): New args NP_REG and AFTER_NP_BRANCH.  Callers
7494         changed.  Take into account whether we're in the shadow of a condjump
7495         that tested NP_REG for NULL.
7496         Lose all code that tested for SEQUENCEs.
7497         (workaround_speculation): Avoid inserting NOPs for loads that are
7498         either always executed or a NULL pointer.
7499
7500 2009-09-08  Jan Hubicka  <jh@suse.cz>
7501
7502         * doc/invoke.texi (early-inlining-insns): Reduce from 12 to 8.
7503         * params.def (early-inlining-insns): Likewise.
7504
7505 2009-09-08  Jakub Jelinek  <jakub@redhat.com>
7506
7507         PR rtl-optimization/41239
7508         * sched-int.h (struct deps): Add last_function_call_may_noreturn field.
7509         * sched-rgn.c (deps_join): Join also last_function_call_may_noreturn
7510         lists.
7511         * sched-deps.c (sched_analyze_insn): Prevent moving trapping insns
7512         across calls, as the calls might not always return normally.
7513         (call_may_noreturn_p): New function.
7514         (deps_analyze_insn): Update last_function_call_may_noreturn list.
7515         (init_deps): Initialize it.
7516         (remove_from_deps): Also remove calls from
7517         last_function_call_may_noreturn list.
7518
7519 2009-09-07  Richard Henderson  <rth@redhat.com>
7520
7521         * tree-ssa-sccvn.c (vn_reference_lookup_3): Don't assume there are
7522         more VR->OPERANDS than LHS operands.  Free LHS before returning.
7523
7524 2009-09-07  Bernd Schmidt  <bernd.schmidt@analog.com>
7525
7526         * config/bfin/bfin.md (UNSPEC_VOLATILE_STALL): New constant.
7527         (attr "addrtype"): New member "spreg".
7528         Use it if mem_spfp_address_operand is true for the address.
7529         (attr "type"): New entry "stall".
7530         (cpu_unit "load"): New.
7531         (insn_reservations "load32", "loadp", "loadi"): Add reservation of
7532         "load".
7533         (insn_reservation "loadsp"): New.
7534         (insn_reservation "load_stall1"): New.
7535         (insn_reservation "load_stall3"): New.
7536         (stall): New insn.
7537         * config/bfin/predicates.md (const1_operand, const3_operand): New.
7538         (mem_p_address_operand): Exclude stack and frame pointer based
7539         addresses.
7540         (mem_spfp_address_operand): New; match them here.
7541         * config/bfin/bfin.c (add_sched_insns_for_speculation): New function.
7542         (bfin_reorg): Call it if scheduling insns.
7543         (bfin_gen_bundles): Remove dummy insns created by
7544         add_sched_insns_for_speculation.
7545
7546         From Jie Zhang <jie.zhang@analog.com>:
7547         * config/bfin/bfin-protos.h (enum bfin_cpu_type, bfin_cpu_type,
7548         bfin_si_revision, bfin_workarounds): Move these ...
7549         * config/bfin/bfin.h: ... here.
7550
7551         From Mike Frysinger  <michael.frysinger@analog.com>
7552         * config/bfin/bfin-protos.h (bfin_cpu_type): Add BFIN_CPU_BF542M,
7553         BFIN_CPU_BF544M, BFIN_CPU_BF547M, BFIN_CPU_BF548M, and BFIN_CPU_BF549M.
7554         * config/bfin/bfin.c (bfin_cpus[]): Add 0.3 for bf542m, bf544m,
7555         bf547m, bf548m, and bf549m.
7556         * config/bfin/bfin.h (TARGET_CPU_CPP_BUILTINS): Define __ADSPBF542M__
7557         for BFIN_CPU_BF542M, __ADSPBF544M__ for BFIN_CPU_BF544M,
7558         __ADSPBF547M__ for BFIN_CPU_BF547M, __ADSPBF548M__ for
7559         BFIN_CPU_BF548M, and __ADSPBF549M__ for BFIN_CPU_BF549M.
7560         * config/bfin/t-bfin-elf (MULTILIB_MATCHES): Select bf532-none for
7561         bf542m-none, bf544m-none, bf547m-none, bf548m-none, and bf549m-none.
7562         * config/bfin/t-bfin-linux (MULTILIB_MATCHES): Likewise.
7563         * config/bfin/t-bfin-uclinux (MULTILIB_MATCHES): Likewise.
7564         * doc/invoke.texi (Blackfin Options): Document that -mcpu now accepts
7565         bf542m, bf544m, bf547m, bf548m, and bf549m.
7566
7567         From Jie Zhang <jie.zhang@analog.com>:
7568         * config/bfin/predicates.md (p_register_operand): New predicate.
7569         (dp_register_operand): New predicate.
7570         * config/bfin/bfin-protos.h (WA_05000074): Define.
7571         (ENABLE_WA_05000074): Define.
7572         * config/bfin/bfin.c (bfin_cpus[]): Add WA_05000074 for all cpus.
7573         (bfin_gen_bundles): Put dsp32shiftimm instruction in slot[0].
7574         * config/bfin/bfin.md (define_attr type): Add dsp32shiftimm.
7575         (define_attr addrtype): Allow load/store register to be P register.
7576         (define_attr storereg): New.
7577         (define_cpu_unit anomaly_05000074): New.
7578         (define_insn_reservation dsp32shiftimm): New.
7579         (define_insn_reservation dsp32shiftimm_anomaly_05000074): New.
7580         (define_insn_reservation loadp): Cannot use slot2.
7581         (define_insn_reservation loadsp): Cannot use slot2.
7582         (define_insn_reservation storep): Cannot use slot2. Does not
7583         apply when working around 05000074.
7584         (define_insn_reservation storep_anomaly_05000074): New.
7585         (define_insn_reservation storei): Does not apply when working
7586         around 05000074.
7587         (define_insn_reservation storei_anomaly_05000074): New.
7588         (define_attr length): Add dsp32shiftimm case.
7589         (define_insn movsi_insn32, movsi_insv, ashlsi3_insn, ashrsi3,
7590         ror_one, rol_one, lshrsi3, lshrpdi3, ashrpdi3, movhiv2hi_low,
7591         movhiv2hi_high, composev2hi, packv2hi, movv2hi_hi,
7592         ssashiftv2hi3, ssashifthi3, ssashiftsi3, lshiftv2hi3, lshifthi3):
7593         Set type as dsp32shiftimm for dsp32shiftimm alternatives.
7594
7595 2009-09-07  Martin Jambor  <mjambor@suse.cz>
7596
7597         PR middle-end/41282
7598         * tree-sra.c (create_artificial_child_access): Return NULL if
7599         build_ref_for_offset fails.
7600         (propagate_subacesses_accross_link): Allow build_ref_for_offset
7601         and create_artificial_child_access to fail.
7602
7603 2009-09-06  Dmitry Gorbachev  <d.g.gorbachev@gmail.com>
7604
7605         PR c++/41214
7606         * unwind-dw2.c (uw_init_context_1): Mark noinline.
7607         * config/ia64/unwind-ia64.c (uw_init_context_1): Likewise.
7608         * config/xtensa/unwind-dw2-xtensa.c (uw_init_context_1): Likewise.
7609
7610 2009-09-07  Bernd Schmidt  <bernd.schmidt@analog.com>
7611
7612         * config/bfin/bfin.c (bfin_optimize_loop): When creating a new basic
7613         block, ensure it has an exit edge.  Emit a barrier after a jump.
7614
7615 2009-09-07  Nick Clifton  <nickc@redhat.com>
7616
7617         * gcc.c (this_is_linker_script): New variable.  Like
7618         this_is_library_file but for the %T constructor.
7619         (end_going_arg): If this_is_linker_script is set then locate the
7620         script and insert a --script switch before it
7621         (do_spec_2): Initialise this_is_linker_script.
7622         (do_spec_1): Likewise.  Handle %T construct.
7623         (eval_spec_function): Preserve this_is_linker_script.
7624         * doc/invoke.texi: Document %T construct in spec files.
7625         * config/m32c/m32c.h (LIB_SPEC): Use it.
7626
7627 2009-09-07  Andreas Krebbel  <Andreas.Krebbel@de.ibm.com>
7628
7629         * rtl.h (PREFETCH_SCHEDULE_BARRIER_P): New macro.
7630         * sched-deps.c (sched_analyze_2): Make prefetches a hard barrier
7631         when volatile flag is set.
7632         * doc/rtl.texi (PREFETCH_SCHEDULE_BARRIER_P): Add documentation pieces.
7633
7634 2009-09-06  Eric Botcazou  <ebotcazou@adacore.com>
7635
7636         PR bootstrap/41241
7637         * combine-stack-adj.c (try_apply_stack_adjustment): Handle stores.
7638         (combine_stack_adjustments_for_block): Allow insns between stack
7639         adjustments and stores with corresponding pre-(dec|inc)rement or
7640         pre-modify operation.
7641
7642 2009-09-06  Jakub Jelinek  <jakub@redhat.com>
7643
7644         PR bootstrap/41241
7645         * combine-stack-adj.c (struct csa_memlist): Rename to...
7646         (struct csa_reflist): ... this.  Rename mem field to ref.
7647         (free_csa_memlist): Rename to...
7648         (free_csa_reflist): ... this.
7649         (record_one_stack_memref): Rename to...
7650         (record_one_stack_ref): ... this.  Handle also REG_P.
7651         (try_apply_stack_adjustment): Handle also REG_P.
7652         (struct record_stack_memrefs_data): Rename to...
7653         (struct record_stack_refs_data): ... this.  Rename memlist field to
7654         reflist.
7655         (record_stack_memrefs): Rename to...
7656         (record_stack_refs): ... this.  For DEBUG_INSNs keep traversing
7657         subexpressions instead of failing when a MEM contains SP references.
7658         For SP itself in DEBUG_INSNs queue it also onto reflist chain.
7659         (combine_stack_adjustments_for_block): Adjust for mem to ref renaming.
7660
7661 2009-09-06  Richard Guenther  <rguenther@suse.de>
7662
7663         PR middle-end/41144
7664         * tree.c (build_array_type): Do not record types marked
7665         with structural equality in the canonical type hashtable.
7666
7667 2009-09-06  Richard Guenther  <rguenther@suse.de>
7668
7669         PR middle-end/41261
7670         * tree-ssa-alias.c (refs_may_alias_p_1): Bail out for function decls.
7671
7672 2009-09-05  Richard Guenther  <rguenther@suse.de>
7673
7674         PR middle-end/41181
7675         * tree-ssa-ccp.c (maybe_fold_stmt_addition): Use the correct type.
7676
7677 2009-09-05  Richard Guenther  <rguenther@suse.de>
7678
7679         PR debug/41273
7680         * tree-ssa-operands.c (get_tmr_operands): Pass through opf_no_vops.
7681
7682 2009-09-05  Richard Guenther  <rguenther@suse.de>
7683
7684         PR middle-end/41271
7685         * tree-ssa.c (useless_type_conversion_p): Drop qualifiers
7686         before comparing function argument types.
7687
7688 2009-09-05  Francois-Xavier Coudert  <fxcoudert@gcc.gnu.org>
7689
7690         PR target/41024
7691         * config/i386/mingw-w64.h (ASM_SPEC): Pass -v instead of -V to
7692         the assembler.
7693
7694 2009-09-04  Uros Bizjak  <ubizjak@gmail.com>
7695
7696         Revert:
7697         2009-08-18  Uros Bizjak  <ubizjak@gmail.com>
7698
7699         * config/alpha/alpha.c (alpha_output_mi_thunk_osf): Allocate insn
7700         locators before emit_insn is called.
7701
7702 2009-09-04  Vladimir Makarov  <vmakarov@redhat.com>
7703
7704         PR bootstrap/41241
7705         * ira.c (update_equiv_reg): Revert my previous patch for the PR.
7706         * reginfo.c (resize_reg_info): Call allocate_reg_info if necessary.
7707         (reginfo_init): Don't call allocate_reg_info.
7708
7709 2009-09-04  Uros Bizjak  <ubizjak@gmail.com>
7710
7711         PR target/41262
7712         * config/alpha/alpha.c (alpha_does_function_need_gp): Use
7713         NONDEBUG_INSN_P instead of INSN_P.
7714
7715 2009-09-04  Alexandre Oliva  <aoliva@redhat.com>
7716
7717         PR debug/41225
7718         * tree-vect-stmts.c (vect_stmt_relevant_p): Skip debug uses.
7719
7720 2009-09-04  Alexandre Oliva  <aoliva@redhat.com>
7721
7722         PR target/41252
7723         * config/arm/vfp.md (*cmpdf_split_vfp): Fix src mode in the second
7724         pattern of the split.
7725
7726 2009-09-04  Alexandre Oliva  <aoliva@redhat.com>
7727
7728         * toplev.c (process_options): Move setter of flag_var_tracking
7729         before other tests that depend on it.  Move down setter of
7730         flag_rename_registers.  Don't enable var-tracking-assignments
7731         by default if selective scheduling is enabled.  Warn if both
7732         are enabled.
7733
7734 2009-09-04  Alexandre Oliva  <aoliva@redhat.com>
7735
7736         * var-tracking.c (dv_is_decl_p): Adjust NULL behavior to match
7737         comment.  Use switch statement to catch overlaps between rtx
7738         and tree codes.  Accept FUNCTION_DECLs in addition to those in...
7739         (IS_DECL_CODE): ... here. Remove.
7740         (check_value_is_not_decl): Remove.
7741         (dv_from_decl, dv_from_value): Check after conversion.
7742
7743 2009-09-04  Richard Guenther  <rguenther@suse.de>
7744
7745         PR middle-end/41257
7746         * (cgraph_finalize_compilation_unit): Move finalizing aliases
7747         after emitting tunks.  Move emitting thunks and ctors from ...
7748         (cgraph_optimize): ... here.  Remove redundant
7749         cgraph_analyze_functions.
7750         * varasm.c (find_decl_and_mark_needed): Remove no longer
7751         necessary check.
7752         (finish_aliases_1): Adjust check for thunk aliases.
7753
7754 2009-09-04  Daniel Gutson  <dgutson@codesourcery.com>
7755
7756         * config/arm/arm.md (ctzsi2): Added braces
7757         to avoid warning that broke booststrap.
7758
7759 2009-09-04  Martin Jambor  <mjambor@suse.cz>
7760
7761         PR tree-optimization/41112
7762         * tree-sra.c (build_ref_for_offset_1): Signal that we cannot
7763         handle variable-bounded arrays.
7764         (expr_with_var_bounded_array_refs_p): New function.
7765         (analyze_access_subtree): Call expr_with_var_bounded_array_refs_p.
7766
7767 2009-09-04  Wolfgang Gellerich  <gellerich@de.ibm.com>
7768
7769         * config/s390/2097.md: Removed two incorrect bypasses.
7770         (z10_fsimpdf): Fixed latency.
7771         (z10_fhex): New insn_reservation.
7772         (z10_floaddf): Fixed latency.
7773         (z10_floadsf): Fixed latency.
7774         (z10_ftrunctf): Fixed latency.
7775         (z10_ftruncdf): Fixed latency.
7776         * config/s390/s390.c (z10_cost): Fixed values.
7777         (s390_adjust_priority): Added z10 path.
7778         * config/s390/s390.md (type): Added fhex.
7779         (*mov<mode>_64dfp): Updated type attribute.
7780         (*mov<mode>_64): Updated type attribute.
7781         (*mov<mode>_31): Updated type attribute.
7782         (*mov<mode>"): Likewise.
7783         * config/s390/2084.md (x_fsimpdf): Updated condition.
7784
7785 2009-09-04  Andreas Krebbel  <krebbel1@de.ibm.com>
7786
7787         * config/s390/s390.md ("*fmadd<mode>", "*fmsub<mode>"): Enable mem
7788         RTXs in the predicate for operand 1.
7789
7790 2009-09-03  Daniel Gutson  <dgutson@codesourcery.com>
7791
7792         * config/arm/arm.md (UNSPEC_RBIT): New constant.
7793         (rbitsi2): New insn.
7794         (ctzsi2): New expand.
7795         * config/arm/arm.h (CTZ_DEFINED_VALUE_AT_ZERO): New macro.
7796
7797 2009-09-03  Martin Jambor  <mjambor@suse.cz>
7798
7799         * tree-sra.c (duplicate_expr_for_different_base): Removed.
7800         (create_artificial_child_access): Use build_ref_for_offset instead
7801         of duplicate_expr_for_different_base.
7802         (propagate_subacesses_accross_link): Likewise.
7803
7804 2009-09-03  Richard Sandiford  <rdsandiford@googlemail.com>
7805
7806         * config/mips/mips.c (USEFUL_INSN_P): Use NONDEBUG_INSN_P instead
7807         of INSN_P.
7808         (mips16e_collect_argument_saves): Skip debug instructions.
7809         (mips_74k_agen_init): Use CALL_P || JUMP_P instead of !NONJUMP_INSN_P.
7810         (mips16_lay_out_constants): Use USEFUL_INSN_P instead of INSN_P.
7811         (r10k_insert_cache_barriers): Likewise.
7812         (mips_reorg_process_insns): Likewise.
7813
7814 2009-09-03  Vladimir Makarov  <vmakarov@redhat.com>
7815
7816         PR bootstrap/41241
7817         * ira.c (update_equiv_reg): Remove check on class likely spill.
7818
7819 2009-09-03  Jakub Jelinek  <jakub@redhat.com>
7820
7821         PR debug/41236
7822         * dwarf2out.c (loc_descriptor): Don't use SUBREG_REG macro on
7823         SIGN_EXTEND or ZERO_EXTEND.  Don't assume there is a REG inside of
7824         it or SUBREG.
7825
7826         PR debug/41238
7827         * function.c (assign_parm_find_stack_rtl): Don't set mem attributes on
7828         the stack slot if it is passed by invisible reference.
7829         * var-tracking.c (vt_add_function_parameters): Handle arguments passed
7830         by invisible reference.
7831
7832 2009-09-03  Bernd Schmidt  <bernd.schmidt@analog.com>
7833
7834         * config/bfin/linux.h (TARGET_SUPPORTS_SYNC_CALLS): Define to 1.
7835         * config/bfin/uclinux.h (TARGET_SUPPORTS_SYNC_CALLS): Define to 1.
7836         * config/bfin/bfin.h (TARGET_SUPPORTS_SYNC_CALLS): Provide default of
7837         0.
7838         * config/bfin/sync.md: New file.
7839         * config/bfin/bfin.md: Include it.
7840         (UNSPEC_ATOMIC): New.
7841         (UNSPEC_ONES): Provide a unique number.
7842
7843         From Jie Zhang <jie.zhang@analog.com>:
7844         * config/bfin/bfin.c (ret_regs): New.
7845         (must_save_fp_p): Don't return true because of frame_pointer_needed.
7846         (must_save_rets_p): New.
7847         (n_regs_saved_by_prologue): Use must_save_rets_p instead of
7848         current_function_is_leaf.
7849         (do_link): Likewise.
7850         (do_unlink): Likewise.
7851         (expand_interrupt_handler_prologue): Use ret_regs array.
7852         (expand_interrupt_handler_epilogue): Use ret_regs array and
7853         pass return register to gen_return_internal.
7854         (bfin_expand_epilogue): Pass return register to
7855         gen_return_internal.
7856         (bfin_expand_call): Explicitly clobber RETS.
7857         * config/bfin/bfin.h (FUNCTION_RETURN_REGISTERS): Define.
7858         * config/bfin/bfin.md (call_symbol_fdpic, call_value_symbol_fdpic,
7859         call_insn_fdpic, call_value_insn_fdpic, call_symbol,
7860         call_value_symbol, call_insn, call_value_insn): Explicitly clobber
7861         RETS.
7862         (return_internal): Take a reg rtx rather than the register number.
7863
7864 2009-09-03  H.J. Lu  <hongjiu.lu@intel.com>
7865
7866         * tree-parloops.c (parallelize_loops): Cast to HOST_WIDE_INT
7867         when comparing against estimated_loop_iterations_int return.
7868
7869 2009-09-03  Richard Guenther  <rguenther@suse.de>
7870
7871         * dwarf2out.c (dwarf2out_do_cfi_asm): Remove check of
7872         eh_personality_libfunc.
7873
7874 2009-09-03  Razya Ladelsky  <razya@il.ibm.com>
7875
7876         * tree-parloops.c (separate_decls_in_region): Add space.
7877
7878 2009-09-03  Razya Ladelsky  <razya@il.ibm.com>
7879
7880         * tree-parloops.c (separate_decls_in_region): Change the condition
7881         checking if there are reductions in the loop.
7882
7883 2009-09-03  Razya Ladelsky  <razya@il.ibm.com>
7884
7885         PR tree-optimization/38275
7886         * tree-parloops.c (parallelize_loops): Replace profitability condition
7887         for expected number of iterations.
7888
7889 2009-09-03  Alexandre Oliva  <aoliva@redhat.com>
7890
7891         * doc/invoke.texi (BUILD_CONFIG): Document --with-build-config.
7892         (bootstrap-debug): Explain conditions in which it becomes default.
7893         (bootstrap-debug-big): Rather than duplicate bootstrap-debug,
7894         make it add to it.
7895
7896 2009-09-03  Namhyung Kim  <namhyung@gmail.com>
7897
7898         * doc/invoke.texi (Optimize Options): Move
7899         -finline-small-functions to the -O2 list.
7900
7901 2009-09-03  Alexandre Oliva  <aoliva@redhat.com>
7902
7903         * toplev.c (process_options): Enable var-tracking-assignments
7904         by default if var-tracking is enabled.
7905
7906 2009-09-02  David Daney  <ddaney@caviumnetworks.com>
7907
7908         * cfgbuild.c (find_bb_boundaries): Split blocks containing a
7909         barrier.
7910         * emit-rtl.c (prev_nonnote_insn_bb): New function.
7911         * rtl.h (prev_nonnote_insn_bb): Declare it.
7912
7913 2009-09-03  Diego Novillo  <dnovillo@google.com>
7914
7915         * cgraph.c (cgraph_node_for_decl): New.
7916         * cgraph.h (cgraph_node_for_decl): Declare.
7917         * tree.c (host_integerp): Return 0 if T is NULL.
7918
7919 2009-09-03  Diego Novillo  <dnovillo@google.com>
7920
7921         * tree.h (struct alias_pair): Move from varasm.c.
7922         (alias_pairs): Likewise.
7923         (TYPE_MAXVAL): Define.
7924         (TYPE_MINVAL): Define.
7925         (iterative_hash_host_wide_int): Declare.
7926         (remove_unreachable_alias_pairs): Declare.
7927         * tree-pass.h (pass_ipa_free_lang_data): Declare.
7928         * diagnostic.c (default_diagnostic_starter): Make extern.
7929         (default_diagnostic_finalizer): Make extern.
7930         * diagnostic.h (default_diagnostic_starter): Declare.
7931         (default_diagnostic_finalizer): Declare.
7932         (default_tree_printer): Declare.
7933         * toplev.c (default_tree_printer): Make extern.
7934
7935 2009-09-03  Richard Guenther  <rguenther@suse.de>
7936             Diego Novillo  <dnovillo@google.com>
7937
7938         * cgraph.c (cgraph_add_new_function): Remove gimplification.
7939         * cgraphunit.c (cgraph_expand_function): Do not emit
7940         associated thunks from here.
7941         (cgraph_emit_thunks): New.
7942         (cgraph_optimize): Call it.
7943         Return if any IPA pass finds an error.
7944         * varasm.c (finish_aliases_1): Ignore errorneous aliases used
7945         by thunks.
7946
7947 2009-09-03  Simon Baldwin  <simonb@google.com>
7948             Rafael Espindola  <espindola@google.com>
7949             Richard Guenther  <rguenther@suse.de>
7950             Doug Kwan  <dougkwan@google.com>
7951             Diego Novillo  <dnovillo@google.com>
7952
7953         * tree.c: Include tree-pass.h, langhooks-def.h,
7954         diagnostic.h, cgraph.h, timevar.h, except.h and debug.h.
7955         (free_lang_data_in_type): New.
7956         (need_assembler_name_p): New.
7957         (free_lang_data_in_block): New.
7958         (free_lang_data_in_decl): New.
7959         (struct free_lang_data_d): New.
7960         (add_tree_to_fld_list): New.
7961         (find_decls_types_r): New.
7962         (get_eh_types_for_runtime): New.
7963         (find_decls_types_in_eh_region): New.
7964         (find_decls_types_in_node): New.
7965         (find_decls_types_in_var): New.
7966         (free_lang_data_in_cgraph): New.
7967         (free_lang_data): New.
7968         (gate_free_lang_data): New.
7969         (pass_ipa_free_lang_data): New.
7970
7971 2009-09-03  Diego Novillo  <dnovillo@google.com>
7972
7973         * timevar.def (TV_IPA_FREE_LANG_DATA): Define.
7974         * langhooks.h (struct lang_hooks): Add field free_lang_data.
7975         (lang_hooks): Remove const qualifier.
7976         * ipa.c (cgraph_remove_unreachable_nodes): Call
7977         remove_unreachable_alias_pairs.
7978         * except.c (add_type_for_runtime): Check if TYPE has
7979         already been converted.
7980         (lookup_type_for_runtime): Likewise.
7981         (check_handled): Handle converted types.
7982         * varasm.c (remove_unreachable_alias_pairs): New.
7983         * gimple.c: Include demangle.h.
7984         (gimple_decl_printable_name): New.
7985         (gimple_fold_obj_type_ref): New.
7986         * gimple.h (gimple_decl_printable_name): Declare.
7987         (gimple_fold_obj_type_ref): Declare.
7988         * passes.c (init_optimization_passes): Add pass
7989         pass_ipa_free_lang_data.
7990         * langhooks-def.h (LANG_HOOKS_FREE_LANG_DATA): Define.
7991         (LANG_HOOKS_INITIALIZER): Add LANG_HOOKS_FREE_LANG_DATA.
7992
7993 2009-09-03  Diego Novillo  <dnovillo@google.com>
7994
7995         * c-lang.c (lang_hooks): Remove const qualifier.
7996
7997 2009-09-02  Loren James Rittle  <ljrittle@acm.org>
7998
7999         * doc/install.texi (*-*-freebsd*): Update target information.
8000
8001 2009-09-02  Anatoly Sokolov  <aesok@post.ru>
8002
8003         * hard-reg-set.h (call_fixed_regs): Remove.
8004         * reginfo.c (call_fixed_regs): Remove.
8005         (init_reg_sets_1): Remove initialization of call_fixed_regs.
8006         (globalize_reg): Don't use call_fixed_regs.
8007         * caller-save.c (init_caller_save): Use call_fixed_reg_set instead of
8008         call_fixed_regs.
8009
8010 2009-09-01  Michael Matz  <matz@suse.de>
8011
8012         * expr.h (emit_storent_insn, expand_expr_real_1,
8013         expand_expr_real_2): Declare.
8014         * expr.c (emit_storent_insn, expand_expr_real_1,
8015         expand_expr_real_2): Export.
8016         (store_expr): Setting and evaluating dont_return_target is useless.
8017         (expand_expr_real_1, <case GOTO_EXPR, RETURN_EXPR, SWITCH_EXPR,
8018         LABEL_EXPR and ASM_EXPR>): Move to gcc_unreachable.
8019         * except.c (expand_resx_expr): Rename to ...
8020         (expand_resx_stmt): ... this.  Rewrite to take gimple statement.
8021         * except.h (expand_resx_stmt): Declare.
8022         * stmt.c: Add include gimple.h
8023         (expand_asm_expr): Rename to ...
8024         (expand_asm_stmt): ... this. Rewrite to take gimple statement.
8025         (expand_case): Rewrite to take gimple statement.
8026         * tree.h (expand_asm_stmt): Declare.
8027         (expand_case): Change prototype.
8028         * Makefile.in (stmt.o): Depend on gimple.h.
8029         * builtins.c (expand_builtin_synchronize): Build gimple asm
8030         statement, not an ASM_EXPR.
8031         * cfgexpand.c (gimple_cond_pred_to_tree, set_expr_location_r,
8032         gimple_to_tree, release_stmt_tree): Remove.
8033         (expand_gimple_cond): Don't call gimple_cond_pred_to_tree or
8034         ggc_free, but hold comparison code and operands separately.
8035         Call jumpif_1 and jumpifnot_1 instead of jumpif and jumpifnot.
8036         (expand_call_stmt, expand_gimple_stmt_1,
8037         expand_gimple_stmt): New helpers.
8038         (expand_gimple_tailcall): Don't call gimple_to_tree, expand_expr_stmt,
8039         release_stmt_tree.  Call expand_gimple_stmt instead.
8040         (expand_gimple_basic_block): Ditto.
8041
8042         * calls.c (emit_call_1): Don't look at EH regions here, make
8043         fntree parameter useless.
8044         (expand_call): New local rettype for TREE_TYPE(exp), use it
8045         throughout.  Remove local p, use addr instead.
8046         Don't look at EH regions here.
8047
8048 2009-09-02  Vladimir Makarov  <vmakarov@redhat.com>
8049
8050         * doc/invoke.texi (-fsched-pressure): Document it.
8051         (-fsched-reg-pressure-heuristic): Remove it.
8052
8053         * reload.c (ira.h): Include.
8054         (find_reloads): Add choosing reload on number of small spilled
8055         classes.
8056
8057         * haifa-sched.c (ira.h): Include.
8058         (sched_pressure_p, sched_regno_cover_class, curr_reg_pressure,
8059         saved_reg_pressure, curr_reg_live, saved_reg_live,
8060         region_ref_regs): New variables.
8061         (sched_init_region_reg_pressure_info, mark_regno_birth_or_death,
8062         initiate_reg_pressure_info, setup_ref_regs,
8063         initiate_bb_reg_pressure_info, save_reg_pressure,
8064         restore_reg_pressure, dying_use_p, print_curr_reg_pressure): New
8065         functions.
8066         (setup_insn_reg_pressure_info): New function.
8067         (rank_for_schedule): Add pressure checking and insn issue time.
8068         Remove comparison of insn reg weights.
8069         (ready_sort): Set insn reg pressure info.
8070         (update_register_pressure, setup_insn_max_reg_pressure,
8071         update_reg_and_insn_max_reg_pressure,
8072         sched_setup_bb_reg_pressure_info): New functions.
8073         (schedule_insn): Add code for printing and updating reg pressure info.
8074         (find_set_reg_weight, find_insn_reg_weight): Remove.
8075         (ok_for_early_queue_removal): Do nothing if pressure_only_p.
8076         (debug_ready_list): Print reg pressure info.
8077         (schedule_block): Ditto.  Check insn issue time.
8078         (sched_init): Set up sched_pressure_p.  Allocate and set up some
8079         reg pressure related info.
8080         (sched_finish): Free some reg pressure related info.
8081         (fix_tick_ready): Make insn always ready if pressure_p.
8082         (init_h_i_d): Don't call find_insn_reg_weight.
8083         (haifa_finish_h_i_d): Free insn reg pressure info.
8084
8085         * ira-int.h (ira_hard_regno_cover_class, ira_reg_class_nregs,
8086         ira_memory_move_cost, ira_class_hard_regs,
8087         ira_class_hard_regs_num, ira_no_alloc_regs,
8088         ira_available_class_regs, ira_reg_class_cover_size,
8089         ira_reg_class_cover, ira_class_translate): Move to ira.h.
8090
8091         * ira-lives.c (single_reg_class): Check mode to find how many
8092         registers are necessary for operand.
8093         (ira_implicitly_set_insn_hard_regs): New.
8094
8095         * common.opt (fsched-pressure): New options.
8096         (fsched-reg-pressure-heuristic): Remove.
8097
8098         * ira.c (setup_eliminable_regset): Rename to
8099         ira_setup_eliminable_regset.  Make it external.
8100         (expand_reg_info): Pass cover class to setup_reg_classes.
8101         (ira): Call resize_reg_info instead of allocate_reg_info.
8102
8103         * sched-deps.c: Include ira.h.
8104         (implicit_reg_pending_clobbers, implicit_reg_pending_uses): New.
8105         (create_insn_reg_use, create_insn_reg_set, setup_insn_reg_uses,
8106         reg_pressure_info, insn_use_p, mark_insn_pseudo_birth,
8107         mark_insn_hard_regno_birth, mark_insn_reg_birth,
8108         mark_pseudo_death, mark_hard_regno_death, mark_reg_death,
8109         mark_insn_reg_store, mark_insn_reg_clobber,
8110         setup_insn_reg_pressure_info): New.
8111         (sched_analyze_1): Update implicit_reg_pending_uses.
8112         (sched_analyze_insn): Find implicit sets, uses, clobbers of regs.
8113         Use them to create dependencies.  Set insn reg uses and pressure
8114         info.  Process reg_pending_uses in one place.
8115         (free_deps): Free implicit sets.
8116         (remove_from_deps): Remove implicit sets if necessary.  Check
8117         implicit sets when clearing reg_last_in_use.
8118         (init_deps_global): Clear implicit_reg_pending_clobbers and
8119         implicit_reg_pending_uses.
8120
8121         * ira.h (ira_hard_regno_cover_class, ira_reg_class_nregs,
8122         ira_memory_move_cost, ira_class_hard_regs,
8123         ira_class_hard_regs_num, ira_no_alloc_regs,
8124         ira_available_class_regs, ira_reg_class_cover_size,
8125         ira_reg_class_cover, ira_class_translate): Move from ira-int.h.
8126         (ira_setup_eliminable_regset, ira_set_pseudo_classes,
8127         ira_implicitly_set_insn_hard_regs): New prototypes.
8128
8129         * ira-costs.c (pseudo_classes_defined_p, allocno_p,
8130         cost_elements_num): New variables.
8131         (allocno_costs, total_costs): Rename to costs and
8132         total_allocno_costs.
8133         (COSTS_OF_ALLOCNO): Rename to COSTS.
8134         (allocno_pref): Rename to pref.
8135         (allocno_pref_buffer): Rename to pref_buffer.
8136         (common_classes): Rename to regno_cover_class.
8137         (COST_INDEX): New.
8138         (record_reg_classes): Set allocno attributes only if allocno_p.
8139         (record_address_regs): Ditto.  Use COST_INDEX instead of ALLOCNO_NUM.
8140         (scan_one_insn): Use COST_INDEX and COSTS instead of ALLOCNO_NUM
8141         and COSTS_OF_ALLOCNO.
8142         (print_costs): Rename to print_allocno_costs.
8143         (print_pseudo_costs): New.
8144         (process_bb_node_for_costs): Split into 2 functions with new
8145         function process_bb_for_costs.  Pass BB to process_bb_for_costs.
8146         (find_allocno_class_costs): Rename to find_costs_and_classes.  Add
8147         new parameter dump_file.  Use cost_elements_num instead of
8148         ira_allocnos_num.  Make one iteration if preferred classes were
8149         already calculated for scheduler.  Make 2 versions of code
8150         depending on allocno_p.
8151         (setup_allocno_cover_class_and_costs): Check allocno_p.  Use
8152         regno_cover_class and COSTS instead of common_classes and
8153         COSTS_OF_ALLOCNO.
8154         (init_costs, finish_costs): New.
8155         (ira_costs): Set up allocno_p and cost_elements_num.  Call
8156         init_costs and finish_costs.
8157         (ira_set_pseudo_classes): New.
8158
8159         * rtl.h (allocate_reg_info): Remove.
8160         (resize_reg_info): Change return type.
8161         (reg_cover_class): New.
8162         (setup_reg_classes): Add new parameter.
8163
8164         * sched-int.h (struct deps_reg): New member implicit_sets.
8165         (sched_pressure_p, sched_regno_cover_class): New external definitions.
8166         (INCREASE_BITS): New macro.
8167         (struct reg_pressure_data, struct reg_use_data): New.
8168         (struct _haifa_insn_data): Remove reg_weight.  Add members
8169         reg_pressure, reg_use_list, reg_set_list, and
8170         reg_pressure_excess_cost_change.
8171         (struct deps): New member implicit_sets.
8172         (pressure_p): New variable.
8173         (COVER_CLASS_BITS, INCREASE_BITS): New macros.
8174         (struct reg_pressure_data, struct reg_use_data): New.
8175         (INSN_REG_WEIGHT): Remove.
8176         (INSN_REG_PRESSURE, INSN_MAX_REG_PRESSURE, INSN_REG_USE_LIST,
8177         INSN_REG_SET_LIST, INSN_REG_PRESSURE_EXCESS_COST_CHANGE): New macros.
8178         (sched_init_region_reg_pressure_info,
8179         sched_setup_bb_reg_pressure_info): New prototypes.
8180
8181         * reginfo.c (struct reg_pref): New member coverclass.
8182         (reg_cover_class): New function.
8183         (reginfo_init, pass_reginfo_init): Move after free_reg_info.
8184         (reg_info_size): New variable.
8185         (allocate_reg_info): Make static.  Setup reg_info_size.
8186         (resize_reg_info): Use reg_info_size.  Return flag of resizing.
8187         (setup_reg_classes): Add a new parameter.  Setup cover class too.
8188
8189         * Makefile.in (reload.o, haifa-sched.o, sched-deps.o): Add ira.h to
8190         the dependencies.
8191
8192         * sched-rgn.c (deps_join): Set up implicit_sets.
8193         (schedule_region): Set up region and basic blocks pressure
8194         relative info.
8195
8196         * passes.c (init_optimization_passes): Move
8197         pass_subregs_of_mode_init before pass_sched.
8198
8199 2009-09-02  Martin Jambor  <mjambor@suse.cz>
8200
8201         * tree-sra.c (struct access): New field grp_hint.
8202         (dump_access): Dump grp_hint.
8203         (sort_and_splice_var_accesses): Set grp_hint if a group is read
8204         multiple times.
8205         (analyze_access_subtree): Only scalarize accesses with grp_hint set or
8206         those which have been specifically read and somehow written to.
8207         (propagate_subacesses_accross_link): Set grp_hint of right child and
8208         also possibly of the left child.
8209
8210 2009-09-02  Jakub Jelinek  <jakub@redhat.com>
8211
8212         * tree-object-size.c (addr_object_size): Always use object_size_type
8213         0 or 2 when determining the pointer pointed object size.
8214
8215 2009-09-02  Richard Guenther  <rguenther@suse.de>
8216
8217         Revert
8218         2009-08-31  Richard Guenther  <rguenther@suse.de>
8219
8220         * builtins.c (fold_builtin_memory_op): Use the alias oracle
8221         to query if the memory regions for memmove overlap.
8222         * tree-ssa-alias.c (ptr_deref_may_alias_decl_p): Relax the
8223         asserts on pointers, instead deal with odd trees.
8224         (ptr_derefs_may_alias_p): Likewise.
8225         (refs_may_alias_p_1): Constructor bases also never alias.
8226
8227 2009-08-01  Christian Bruel  <christian.bruel@st.com>
8228
8229         Revert:
8230         2009-07-31  Christian Bruel  <christian.bruel@st.com>
8231         * gcc/config.gcc (sh*-*-elf): test with_libgloss.
8232
8233 2009-09-01  Alexandre Oliva  <aoliva@redhat.com>
8234
8235         * doc/invoke.texi (-fvar-tracking-assignments): New.
8236         (-fvar-tracking-assignments-toggle): New.
8237         (-fdump-final-insns=file): Mark filename as optional.
8238         (--param min-nondebug-insn-uid): New.
8239         (-gdwarf-@{version}): Mention version 4.
8240         * opts.c (common_handle_option): Accept it.
8241         * tree-vrp.c (find_assert_locations_1): Skip debug stmts.
8242         * regrename.c (regrename_optimize): Drop last.  Don't count debug
8243         insns as uses.  Don't reject change because of debug insn.
8244         (do_replace): Reject DEBUG_INSN as chain starter.  Take base_regno
8245         from the chain starter, and check for inexact matches in DEBUG_INSNS.
8246         (scan_rtx_reg): Accept inexact matches in DEBUG_INSNs.
8247         (build_def_use): Simplify and fix the marking of DEBUG_INSNs.
8248         * sched-ebb.c (schedule_ebbs): Skip boundary debug insns.
8249         * fwprop.c (forward_propagate_and_simplify): ...into debug insns.
8250         * doc/gimple.texi (is_gimple_debug): New.
8251         (gimple_debug_bind_p): New.
8252         (is_gimple_call, gimple_assign_cast_p): End sentence with period.
8253         * doc/install.texi (bootstrap-debug): More details.
8254         (bootstrap-debug-big, bootstrap-debug-lean): Document.
8255         (bootstrap-debug-lib): More details.
8256         (bootstrap-debug-ckovw): Update.
8257         (bootstrap-time): New.
8258         * tree-into-ssa.c (mark_def_sites): Skip debug stmts.
8259         (insert_phi_nodes_for): Insert debug stmts.
8260         (rewrite_stmt): Take iterator.  Insert debug stmts.
8261         (rewrite_enter_block): Adjust.
8262         (maybe_replace_use_in_debug_stmt): New.
8263         (rewrite_update_stmt): Use it.
8264         (mark_use_interesting): Return early for debug stmts.
8265         * tree-ssa-loop-im.c (rewrite_bittest): Propagate DEFs into debug
8266         stmts before replacing stmt.
8267         (move_computations_stmt): Likewise.
8268         * ira-conflicts.c (add_copies): Skip debug insns.
8269         * regstat.c (regstat_init_n_sets_and_refs): Discount debug insns.
8270         (regstat_bb_compute_ri): Skip debug insns.
8271         * tree-ssa-threadupdate.c (redirection_block_p): Skip debug stmts.
8272         * tree-ssa-loop-manip.c (find_uses_to_rename_stmt,
8273         check_loop_closed_ssa_stmt): Skip debug stmts.
8274         * tree-tailcall.c (find_tail_calls): Likewise.
8275         * tree-ssa-loop-ch.c (should_duplicate_loop_header_p): Likewise.
8276         * tree.h (MAY_HAVE_DEBUG_STMTS): New.
8277         (build_var_debug_value_stat): Declare.
8278         (build_var_debug_value): Define.
8279         (target_for_debug_bind): Declare.
8280         * reload.c (find_equiv_reg): Skip debug insns.
8281         * rtlanal.c (reg_used_between_p): Skip debug insns.
8282         (side_effects_p): Likewise.
8283         (canonicalize_condition): Likewise.
8284         * ddg.c (create_ddg_dep_from_intra_loop_link): Check that non-debug
8285         insns never depend on debug insns.
8286         (create_ddg_dep_no_link): Likewise.
8287         (add_cross_iteration_register_deps): Use ANTI_DEP for debug insns.
8288         Don't add inter-loop dependencies for debug insns.
8289         (build_intra_loop_deps): Likewise.
8290         (create_ddg): Count debug insns.
8291         * ddg.h (struct ddg::num_debug): New.
8292         (num_backargs): Pair up with previous int field.
8293         * diagnostic.c (diagnostic_report_diagnostic): Skip notes on
8294         -fcompare-debug-second.
8295         * final.c (get_attr_length_1): Skip debug insns.
8296         (rest_of_clean-state): Don't dump CFA_RESTORE_STATE.
8297         * gcc.c (invoke_as): Call compare-debug-dump-opt.
8298         (driver_self_specs): Map -fdump-final-insns to
8299         -fdump-final-insns=..
8300         (get_local_tick): New.
8301         (compare_debug_dump_opt_spec_function): Test for . argument and
8302         compute output name.  Compute temp output spec without flag name.
8303         Compute -frandom-seed.
8304         (OPT): Undef after use.
8305         * cfgloopanal.c (num_loop_insns): Skip debug insns.
8306         (average_num_loop_insns): Likewise.
8307         * params.h (MIN_NONDEBUG_INSN_UID): New.
8308         * gimple.def (GIMPLE_DEBUG): New.
8309         * ipa-reference.c (scan_stmt_for_static_refs): Skip debug stmts.
8310         * auto-inc-dec.c (merge_in_block): Skip debug insns.
8311         (merge_in_block): Fix whitespace.
8312         * toplev.c (flag_var_tracking): Update comment.
8313         (flag_var_tracking_assignments): New.
8314         (flag_var_tracking_assignments_toggle): New.
8315         (process_options): Don't open final insns dump file if we're not
8316         going to write to it.  Compute defaults for var_tracking.
8317         * df-scan.c (df_insn_rescan_debug_internal): New.
8318         (df_uses_record): Handle debug insns.
8319         * haifa-sched.c (ready): Initialize n_debug.
8320         (contributes_to_priority): Skip debug insns.
8321         (dep_list_size): New.
8322         (priority): Use it.
8323         (rank_for_schedule): Likewise.  Schedule debug insns as soon as
8324         they're ready.  Disregard previous debug insns to make decisions.
8325         (queue_insn): Never queue debug insns.
8326         (ready_add, ready_remove_first, ready_remove): Count debug insns.
8327         (schedule_insn): Don't reject debug insns because of issue rate.
8328         (get_ebb_head_tail, no_real_insns_p): Skip boundary debug insns.
8329         (queue_to_ready): Skip and discount debug insns.
8330         (choose_ready): Let debug insns through.
8331         (schedule_block): Check boundary debug insns.  Discount debug
8332         insns, schedule them early.  Adjust whitespace.
8333         (set_priorities): Check for boundary debug insns.
8334         (add_jump_dependencies): Use dep_list_size.
8335         (prev_non_location_insn): New.
8336         (check_cfg): Use it.
8337         * tree-ssa-loop-ivopts.c (find-interesting_users): Skip debug
8338         stmts.
8339         (remove_unused_ivs): Reset debug stmts.
8340         * modulo-sched.c (const_iteration_count): Skip debug insns.
8341         (res_MII): Discount debug insns.
8342         (loop_single_full_bb_p): Skip debug insns.
8343         (sms_schedule): Likewise.
8344         (sms_schedule_by_order): Likewise.
8345         (ps_has_conflicts): Likewise.
8346         * caller-save.c (refmarker_fn): New.
8347         (save_call_clobbered_regs): Replace regs with saved mem in
8348         debug insns.
8349         (mark_referenced_regs): Take pointer, mark and arg.  Adjust.
8350         Call refmarker_fn mark for hardregnos.
8351         (mark_reg_as_referenced): New.
8352         (replace_reg_with_saved_mem): New.
8353         * ipa-pure-const.c (check_stmt): Skip debug stmts.
8354         * cse.c (cse_insn): Canonicalize debug insns.  Skip them when
8355         searching back.
8356         (cse_extended_basic_block): Skip debug insns.
8357         (count_reg_usage): Likewise.
8358         (is_dead_reg): New, split out of...
8359         (set_live_p): ... here.
8360         (insn_live_p): Use it for debug insns.
8361         * tree-stdarg.c (check_all_va_list_escapes): Skip debug stmts.
8362         (execute_optimize_stdarg): Likewise.
8363         * tree-ssa-dom.c (propagate_rhs_into_lhs): Likewise.
8364         * tree-ssa-propagate.c (substitute_and_fold): Don't regard
8365         changes in debug stmts as changes.
8366         * sel-sched.c (moving_insn_creates_bookkeeping_block_p): New.
8367         (moveup_expr): Don't move across debug insns.  Don't move
8368         debug insn if it would create a bookkeeping block.
8369         (moveup_expr_cached): Don't use cache for debug insns that
8370         are heads of blocks.
8371         (compute_av_set_inside_bb): Skip debug insns.
8372         (sel_rank_for_schedule): Schedule debug insns first.  Remove
8373         dead code.
8374         (block_valid_for_bookkeeping_p); Support lax searches.
8375         (create_block_for_bookkeeping): Adjust block numbers when
8376         encountering debug-only blocks.
8377         (find_place_for_bookkeeping): Deal with debug-only blocks.
8378         (generate_bookkeeping_insn): Accept no place to insert.
8379         (remove_temp_moveop_nops): New argument full_tidying.
8380         (prepare_place_to_insert): Deal with debug insns.
8381         (advance_state_on_fence): Debug insns don't start cycles.
8382         (update_boundaries): Take fence as argument.  Deal with
8383         debug insns.
8384         (schedule_expr_on_boundary): No full_tidying on debug insns.
8385         (fill_insns): Deal with debug insns.
8386         (track_scheduled_insns_and_blocks): Don't count debug insns.
8387         (need_nop_to_preserve_insn_bb): New, split out of...
8388         (remove_insn_from_stream): ... this.
8389         (fur_orig_expr_not_found): Skip debug insns.
8390         * rtl.def (VALUE): Move up.
8391         (DEBUG_INSN): New.
8392         * tree-ssa-sink.c (all_immediate_uses_same_place): Skip debug stmts.
8393         (nearest_common_dominator_of_uses): Take debug_stmts argument.
8394         Set it if debug stmts are found.
8395         (statement_sink_location): Skip debug stmts.  Propagate
8396         moving defs into debug stmts.
8397         * ifcvt.c (first_active_insn): Skip debug insns.
8398         (last_active_insns): Likewise.
8399         (cond_exec_process_insns): Likewise.
8400         (noce_process_if_block): Likewise.
8401         (check_cond_move_block): Likewise.
8402         (cond_move_convert_if_block): Likewise.
8403         (block_jumps_and_fallthru_p): Likewise.
8404         (dead_or_predicable): Likewise.
8405         * dwarf2out.c (debug_str_hash_forced): New.
8406         (find_AT_string): Add comment.
8407         (gen_label_for_indirect_string): New.
8408         (get_debug_string_label): New.
8409         (AT_string_form): Use it.
8410         (mem_loc_descriptor): Handle non-TLS symbols.  Handle MINUS , DIV,
8411         MOD, AND, IOR, XOR, NOT, ABS, NEG, and CONST_STRING.  Accept but
8412         discard COMPARE, IF_THEN_ELSE, ROTATE, ROTATERT, TRUNCATE and
8413         several operations that cannot be represented with DWARF opcodes.
8414         (loc_descriptor): Ignore SIGN_EXTEND and ZERO_EXTEND.  Require
8415         dwarf_version 4 for DW_OP_implicit_value and DW_OP_stack_value.
8416         (dwarf2out_var_location): Take during-call mark into account.
8417         (output_indirect_string): Update comment.  Output if there are
8418         label and references.
8419         (prune_indirect_string): New.
8420         (prune_unused_types): Call it if debug_str_hash_forced.
8421         More in dwarf2out.c, from Jakub Jelinek <jakub@redhat.com>:
8422         (dw_long_long_const): Remove.
8423         (struct dw_val_struct): Change val_long_long type to rtx.
8424         (print_die, attr_checksum, same_dw_val_p, loc_descriptor): Adjust for
8425         val_long_long change to CONST_DOUBLE rtx from a long hi/lo pair.
8426         (output_die): Likewise.  Use HOST_BITS_PER_WIDE_INT size of each
8427         component instead of HOST_BITS_PER_LONG.
8428         (output_loc_operands): Likewise.  For const8* assert
8429         HOST_BITS_PER_WIDE_INT rather than HOST_BITS_PER_LONG is >= 64.
8430         (output_loc_operands_raw): For const8* assert HOST_BITS_PER_WIDE_INT
8431         rather than HOST_BITS_PER_LONG is >= 64.
8432         (add_AT_long_long): Remove val_hi and val_lo arguments, add
8433         val_const_double.
8434         (size_of_die): Use HOST_BITS_PER_WIDE_INT size multiplier instead of
8435         HOST_BITS_PER_LONG for dw_val_class_long_long.
8436         (add_const_value_attribute): Adjust add_AT_long_long caller.  Don't
8437         handle TLS SYMBOL_REFs.  If CONST wraps a constant, tail recurse.
8438         (dwarf_stack_op_name): Handle DW_OP_implicit_value and
8439         DW_OP_stack_value.
8440         (size_of_loc_descr, output_loc_operands, output_loc_operands_raw):
8441         Handle DW_OP_implicit_value.
8442         (extract_int): Move prototype earlier.
8443         (mem_loc_descriptor): For SUBREG punt if inner
8444         mode size is wider than DWARF2_ADDR_SIZE.  Handle SIGN_EXTEND
8445         and ZERO_EXTEND by DW_OP_shl and DW_OP_shr{a,}.  Handle
8446         EQ, NE, GT, GE, LT, LE, GTU, GEU, LTU, LEU, SMIN, SMAX, UMIN,
8447         UMAX, SIGN_EXTRACT, ZERO_EXTRACT.
8448         (loc_descriptor): Compare mode size with DWARF2_ADDR_SIZE
8449         instead of Pmode size.
8450         (loc_descriptor): Add MODE argument.  Handle CONST_INT, CONST_DOUBLE,
8451         CONST_VECTOR, CONST, LABEL_REF and SYMBOL_REF if mode != VOIDmode,
8452         attempt to handle other expressions.  Don't handle TLS SYMBOL_REFs.
8453         (concat_loc_descriptor, concatn_loc_descriptor,
8454         loc_descriptor_from_tree_1): Adjust loc_descriptor callers.
8455         (add_location_or_const_value_attribute): Likewise.  For single
8456         location loc_lists attempt to use add_const_value_attribute
8457         for constant decls.  Add DW_AT_const_value even if
8458         NOTE_VAR_LOCATION is VAR_LOCATION with CONSTANT_P or CONST_STRING
8459         in its expression.
8460         * cfgbuild.c (inside_basic_block_p): Handle debug insns.
8461         (control_flow_insn_p): Likewise.
8462         * tree-parloops.c (eliminate_local_variables_stmt): Handle debug stmt.
8463         (separate_decls_in_region_debug_bind): New.
8464         (separate_decls_in_region): Process debug bind stmts afterwards.
8465         * recog.c (verify_changes): Handle debug insns.
8466         (extract_insn): Likewise.
8467         (peephole2_optimize): Skip debug insns.
8468         * dse.c (scan_insn): Skip debug insns.
8469         * sel-sched-ir.c (return_nop_to_pool): Take full_tidying argument.
8470         Pass it on.
8471         (setup_id_for_insn): Handle debug insns.
8472         (maybe_tidy_empty_bb): Adjust whitespace.
8473         (tidy_control_flow): Skip debug insns.
8474         (sel_remove_insn): Adjust for debug insns.
8475         (sel_estimate_number_of_insns): Skip debug insns.
8476         (create_insn_rtx_from_pattern): Handle debug insns.
8477         (create_copy_of_insn_rtx): Likewise.
8478         * sel-sched-.h (sel_bb_end): Declare.
8479         (sel_bb_empty_or_nop_p): New.
8480         (get_all_loop_exits): Use it.
8481         (_eligible_successor_edge_p): Likewise.
8482         (return_nop_to_pool): Adjust.
8483         * tree-eh.c (tre_empty_eh_handler_p): Skip debug stmts.
8484         * ira-lives.c (process_bb_node_lives): Skip debug insns.
8485         * gimple-pretty-print.c (dump_gimple_debug): New.
8486         (dump_gimple_stmt): Use it.
8487         (dump_bb_header): Skip gimple debug stmts.
8488         * regmove.c (optimize_reg_copy_1): Discount debug insns.
8489         (fixup_match_2): Likewise.
8490         (regmove_backward_pass): Likewise.  Simplify combined
8491         replacement.  Handle debug insns.
8492         * function.c (instantiate_virtual_regs): Handle debug insns.
8493         * function.h (struct emit_status): Add x_cur_debug_insn_uid.
8494         * print-rtl.h: Include cselib.h.
8495         (print_rtx): Print VALUEs.  Split out and recurse for VAR_LOCATIONs.
8496         * df.h (df_inns_rescan_debug_internal): Declare.
8497         * gcse.c (alloc_hash_table): Estimate n_insns.
8498         (cprop_insn): Don't regard debug insns as changes.
8499         (bypass_conditional_jumps): Skip debug insns.
8500         (one_pre_gcse_pass): Adjust.
8501         (one_code_hoisting_pass): Likewise.
8502         (compute_ld_motion_mems): Skip debug insns.
8503         (one_cprop_pass): Adjust.
8504         * tree-if-conv.c (tree_if_convert_stmt): Reset debug stmts.
8505         (if_convertible_stmt_p): Handle debug stmts.
8506         * init-regs.c (initialize_uninitialized_regs): Skip debug insns.
8507         * tree-vect-loop.c (vect_is_simple_reduction): Skip debug stmts.
8508         * ira-build.c (create_bb_allocnos): Skip debug insns.
8509         * tree-flow-inline.h (has_zero_uses): Discount debug stmts.
8510         (has_single_use): Likewise.
8511         (single_imm_use): Likewise.
8512         (num_imm_uses): Likewise.
8513         * tree-ssa-phiopt.c (empty_block_p): Skip debug stmts.
8514         * tree-ssa-coalesce.c (build_ssa_conflict_graph): Skip debug stmts.
8515         (create_outofssa_var_map): Likewise.
8516         * lower-subreg.c (adjust_decomposed_uses): New.
8517         (resolve_debug): New.
8518         (decompose_multiword_subregs): Use it.
8519         * tree-dfa.c (find_referenced_vars): Skip debug stmts.
8520         * emit-rtl.c: Include params.h.
8521         (cur_debug_insn_uid): Define.
8522         (set_new_first_and_last_insn): Set cur_debug_insn_uid too.
8523         (copy_rtx_if_shared_1): Handle debug insns.
8524         (reset_used_flags): Likewise.
8525         (set_used_flags): LIkewise.
8526         (get_max_insn_count): New.
8527         (next_nondebug_insn): New.
8528         (prev_nondebug_insn): New.
8529         (make_debug_insn_raw): New.
8530         (emit_insn_before_noloc): Handle debug insns.
8531         (emit_jump_insn_before_noloc): Likewise.
8532         (emit_call_insn_before_noloc): Likewise.
8533         (emit_debug_insn_before_noloc): New.
8534         (emit_insn_after_noloc): Handle debug insns.
8535         (emit_jump_insn_after_noloc): Likewise.
8536         (emit_call_insn_after_noloc): Likewise.
8537         (emit_debug_insn_after_noloc): Likewise.
8538         (emit_insn_after): Take loc from earlier non-debug insn.
8539         (emit_jump_insn_after): Likewise.
8540         (emit_call_insn_after): Likewise.
8541         (emit_debug_insn_after_setloc): New.
8542         (emit_debug_insn_after): New.
8543         (emit_insn_before): Take loc from later non-debug insn.
8544         (emit_jump_insn_before): Likewise.
8545         (emit_call_insn_before): Likewise.
8546         (emit_debug_insn_before_setloc): New.
8547         (emit_debug_insn_before): New.
8548         (emit_insn): Handle debug insns.
8549         (emit_debug_insn): New.
8550         (emit_jump_insn): Handle debug insns.
8551         (emit_call_insn): Likewise.
8552         (emit): Likewise.
8553         (init_emit): Take min-nondebug-insn-uid into account.
8554         Initialize cur_debug_insn_uid.
8555         (emit_copy_of_insn_after): Handle debug insns.
8556         * cfgexpand.c (gimple_assign_rhs_to_tree): Do not overwrite
8557         location of single rhs in place.
8558         (maybe_dump_rtl_for_gimple_stmt): Dump lineno.
8559         (floor_sdiv_adjust): New.
8560         (cell_sdiv_adjust): New.
8561         (cell_udiv_adjust): New.
8562         (round_sdiv_adjust): New.
8563         (round_udiv_adjust): New.
8564         (wrap_constant): Moved from cselib.
8565         (unwrap_constant): New.
8566         (expand_debug_expr): New.
8567         (expand_debug_locations): New.
8568         (expand_gimple_basic_block): Drop hiding redeclaration.  Expand
8569         debug bind stmts.
8570         (gimple_expand_cfg): Expand debug locations.
8571         * cselib.c: Include tree-pass.h.
8572         (struct expand_value_data): New.
8573         (cselib_record_sets_hook): New.
8574         (PRESERVED_VALUE_P, LONG_TERM_PRESERVED_VALUE_P): New.
8575         (cselib_clear_table): Move, and implemnet in terms of...
8576         (cselib_reset_table_with_next_value): ... this.
8577         (cselib_get_next_unknown_value): New.
8578         (discard_useless_locs): Don't discard preserved values.
8579         (cselib_preserve_value): New.
8580         (cselib_preserved_value_p): New.
8581         (cselib_preserve_definitely): New.
8582         (cselib_clear_preserve): New.
8583         (cselib_preserve_only_values): New.
8584         (new_cselib_val): Take rtx argument.  Dump it in details.
8585         (cselib_lookup_mem): Adjust.
8586         (expand_loc): Take regs_active in struct.  Adjust.  Silence
8587         dumps unless details are requested.
8588         (cselib_expand_value_rtx_cb): New.
8589         (cselib_expand_value_rtx): Rename and reimplment in terms of...
8590         (cselib_expand_value_rtx_1): ... this.  Adjust.  Silence dumps
8591         without details.  Copy more subregs.  Try to resolve values
8592         using a callback.  Wrap constants.
8593         (cselib_subst_to_values): Adjust.
8594         (cselib_log_lookup): New.
8595         (cselib_lookup): Call it.
8596         (cselib_invalidate_regno): Don't count preserved values as useless.
8597         (cselib_invalidate_mem): Likewise.
8598         (cselib_record_set): Likewise.
8599         (struct set): Renamed to cselib_set, moved to cselib.h.
8600         (cselib_record_sets): Adjust.  Call hook.
8601         (cselib_process_insn): Reset table when it would be cleared.
8602         (dump_cselib_val): New.
8603         (dump_cselib_table): New.
8604         * tree-cfgcleanup.c (tree_forwarded_block_p): Skip debug stmts.
8605         (remove_forwarder_block): Support moving debug stmts.
8606         * cselib.h (cselib_record_sets_hook): Declare.
8607         (cselib_expand_callback): New type.
8608         (cselib_expand_value_rtx_cb): Declare.
8609         (cselib_reset_table_with_next_value): Declare.
8610         (cselib_get_next_unknown_value): Declare.
8611         (cselib_preserve_value): Declare.
8612         (cselib_preserved_value_p): Declare.
8613         (cselib_preserve_only_values): Declare.
8614         (dump_cselib_table): Declare.
8615         * cfgcleanup.c (flow_find_cross_jump): Skip debug insns.
8616         (try_crossjump_to_edge): Likewise.
8617         (delete_unreachable_blocks): Remove dominant GIMPLE blocks after
8618         dominated blocks when debug stmts are present.
8619         * simplify-rtx.c (delegitimize_mem_from_attrs): New.
8620         * tree-ssa-live.c (remove_unused_locals): Skip debug stmts.
8621         (set_var_live_on_entry): Likewise.
8622         * loop-invariant.c (find_invariants_bb): Skip debug insns.
8623         * cfglayout.c (curr_location, last_location): Make static.
8624         (set_curr_insn_source_location): Don't avoid bouncing.
8625         (get_curr_insn_source_location): New.
8626         (get_curr_insn_block): New.
8627         (duplicate_insn_chain): Handle debug insns.
8628         * tree-ssa-forwprop.c (forward_propagate_addr_expr): Propagate
8629         into debug stmts.
8630         * common.opt (fcompare-debug): Move to sort order.
8631         (fdump-unnumbered-links): Likewise.
8632         (fvar-tracking-assignments): New.
8633         (fvar-tracking-assignments-toggle): New.
8634         * tree-ssa-dce.c (mark_stmt_necessary): Don't mark blocks
8635         because of debug stmts.
8636         (mark_stmt_if_obviously_necessary): Mark debug stmts.
8637         (eliminate_unnecessary_stmts): Walk dominated blocks before
8638         dominators.
8639         * tree-ssa-ter.c (find_replaceable_in_bb): Skip debug stmts.
8640         * ira.c (memref_used_between_p): Skip debug insns.
8641         (update_equiv_regs): Likewise.
8642         * sched-deps.c (sd_lists_size): Accept empty list.
8643         (sd_init_insn): Mark debug insns.
8644         (sd_finish_insn): Unmark them.
8645         (sd_add_dep): Reject non-debug deps on debug insns.
8646         (fixup_sched_groups): Give debug insns group treatment.
8647         Skip debug insns.
8648         (sched_analyze_reg): Don't mark debug insns for sched before call.
8649         (sched_analyze_2): Handle debug insns.
8650         (sched_analyze_insn): Compute next non-debug insn.  Handle debug
8651         insns.
8652         (deps_analyze_insn): Handle debug insns.
8653         (deps_start_bb): Skip debug insns.
8654         (init_deps): Initialize last_debug_insn.
8655         * tree-ssa.c (target_for_debug_bind): New.
8656         (find_released_ssa_name): New.
8657         (propagate_var_def_into_debug_stmts): New.
8658         (propagate_defs_into_debug_stmts): New.
8659         (verify_ssa): Skip debug bind stmts without values.
8660         (warn_uninialized_vars): Skip debug stmts.
8661         * target-def.h (TARGET_DELEGITIMIZE_ADDRESS): Set default.
8662         * rtl.c (rtx_equal_p_cb): Handle VALUEs.
8663         (rtx_equal_p): Likewise.
8664         * ira-costs.c (scan_one_insn): Skip debug insns.
8665         (process_bb_node_for_hard_reg_moves): Likewise.
8666         * rtl.h (DEBUG_INSN_P): New.
8667         (NONDEBUG_INSN_P): New.
8668         (MAY_HAVE_DEBUG_INSNS): New.
8669         (INSN_P): Accept debug insns.
8670         (RTX_FRAME_RELATED_P): Likewise.
8671         (INSN_DELETED_P): Likewise
8672         (PAT_VAR_LOCATION_DECL): New.
8673         (PAT_VAR_LOCATION_LOC): New.
8674         (PAT_VAR_OCATION_STATUS): New.
8675         (NOTE_VAR_LOCATION_DECL): Reimplement.
8676         (NOTE_VAR_LOCATION_LOC): Likewise.
8677         (NOTE_VAR_LOCATION_STATUS): Likewise.
8678         (INSN_VAR_LOCATION): New.
8679         (INSN_VAR_LOCATION_DECL): New.
8680         (INSN_VAR_LOCATION_LOC): New.
8681         (INSN_VAR_LOCATION_STATUS): New.
8682         (gen_rtx_UNKNOWN_VAR_LOC): New.
8683         (VAR_LOC_UNKNOWN_P): New.
8684         (NOTE_DURING_CALL_P): New.
8685         (SCHED_GROUP_P): Accept debug insns.
8686         (emit_debug_insn_before): Declare.
8687         (emit_debug_insn_before_noloc): Declare.
8688         (emit_debug_insn_beore_setloc): Declare.
8689         (emit_debug_insn_after): Declare.
8690         (emit_debug_insn_after_noloc): Declare.
8691         (emit_debug_insn_after_setloc): Declare.
8692         (emit_debug_insn): Declare.
8693         (make_debug_insn_raw): Declare.
8694         (prev_nondebug_insn): Declare.
8695         (next_nondebug_insn): Declare.
8696         (delegitimize_mem_from_attrs): Declare.
8697         (get_max_insn_count): Declare.
8698         (wrap_constant): Declare.
8699         (unwrap_constant): Declare.
8700         (get_curr_insn_source_location): Declare.
8701         (get_curr_insn_block): Declare.
8702         * tree-inline.c (insert_debug_decl_map): New.
8703         (processing_debug_stmt): New.
8704         (remap_decl): Don't create new mappings in debug stmts.
8705         (remap_gimple_op_r): Don't add references in debug stmts.
8706         (copy_tree_body_r): Likewise.
8707         (remap_gimple_stmt): Handle debug bind stmts.
8708         (copy_bb): Skip debug stmts.
8709         (copy_edges_for_bb): Likewise.
8710         (copy_debug_stmt): New.
8711         (copy_debug_stmts): New.
8712         (copy_body): Copy debug stmts at the end.
8713         (insert_init_debug_bind): New.
8714         (insert_init_stmt): Take id.  Skip and emit debug stmts.
8715         (setup_one_parameter): Remap variable earlier, register debug mapping.
8716         (estimate_num_insns): Skip debug stmts.
8717         (expand_call_inline): Preserve debug_map.
8718         (optimize_inline_calls): Check for no debug_stmts left-overs.
8719         (unsave_expr_now): Preserve debug_map.
8720         (copy_gimple_seq_and_replace_locals): Likewise.
8721         (tree_function_versioning): Check for no debug_stmts left-overs.
8722         Init and destroy debug_map as needed.  Split edges unconditionally.
8723         (build_duplicate_type): Init and destroy debug_map as needed.
8724         * tree-inline.h: Include gimple.h instead of pointer-set.h.
8725         (struct copy_body_data): Add debug_stmts and debug_map.
8726         * sched-int.h (struct ready_list): Add n_debug.
8727         (struct deps): Add last_debug_insn.
8728         (DEBUG_INSN_SCHED_P): New.
8729         (BOUNDARY_DEBUG_INSN_P): New.
8730         (SCHEDULE_DEBUG_INSN_P): New.
8731         (sd_iterator_cond): Accept empty list.
8732         * combine.c (create_log_links): Skip debug insns.
8733         (combine_instructions): Likewise.
8734         (cleanup_auto_inc_dec): New.  From Jakub Jelinek: Make sure the
8735         return value is always unshared.
8736         (struct rtx_subst_pair): New.
8737         (auto_adjust_pair): New.
8738         (propagate_for_debug_subst): New.
8739         (propagate_for_debug): New.
8740         (try_combine): Skip debug insns.  Propagate removed defs into
8741         debug insns.
8742         (next_nonnote_nondebug_insn): New.
8743         (distribute_notes): Use it.  Skip debug insns.
8744         (distribute_links): Skip debug insns.
8745         * tree-outof-ssa.c (set_location_for_edge): Likewise.
8746         * resource.c (mark_target_live_regs): Likewise.
8747         * var-tracking.c: Include cselib.h and target.h.
8748         (enum micro_operation_type): Add MO_VAL_USE, MO_VAL_LOC, and
8749         MO_VAL_SET.
8750         (micro_operation_type_name): New.
8751         (enum emit_note_where): Add EMIT_NOTE_AFTER_CALL_INSN.
8752         (struct micro_operation_def): Update comments.
8753         (decl_or_value): New type.  Use instead of decls.
8754         (struct emit_note_data_def): Add vars.
8755         (struct attrs_def): Use decl_or_value.
8756         (struct variable_tracking_info_def): Add permp, flooded.
8757         (struct location_chain_def): Update comment.
8758         (struct variable_part_def): Use decl_or_value.
8759         (struct variable_def): Make var_part a variable length array.
8760         (valvar_pool): New.
8761         (scratch_regs): New.
8762         (cselib_hook_called): New.
8763         (dv_is_decl_p): New.
8764         (dv_is_value_p): New.
8765         (dv_as_decl): New.
8766         (dv_as_value): New.
8767         (dv_as_opaque): New.
8768         (dv_onepart_p): New.
8769         (dv_pool): New.
8770         (IS_DECL_CODE): New.
8771         (check_value_is_not_decl): New.
8772         (dv_from_decl): New.
8773         (dv_from_value): New.
8774         (dv_htab_hash): New.
8775         (variable_htab_hash): Use it.
8776         (variable_htab_eq): Support values.
8777         (variable_htab_free): Free from the right pool.
8778         (attrs_list_member, attrs_list_insert): Use decl_or_value.
8779         (attrs_list_union): Adjust.
8780         (attrs_list_mpdv_union): New.
8781         (tie_break_pointers): New.
8782         (canon_value_cmp): New.
8783         (unshare_variable): Return possibly-modified slot.
8784         (vars_copy_1): Adjust.
8785         (var_reg_decl_set): Adjust.  Split out of...
8786         (var_reg_set): ... this.
8787         (get_init_value): Adjust.
8788         (var_reg_delete_and_set): Adjust.
8789         (var_reg_delete): Adjust.
8790         (var_regno_delete): Adjust.
8791         (var_mem_decl_set): Split out of...
8792         (var_mem_set): ... this.
8793         (var_mem_delete_and_set): Adjust.
8794         (var_mem_delete): Adjust.
8795         (val_store): New.
8796         (val_reset): New.
8797         (val_resolve): New.
8798         (variable_union): Adjust.  Speed up merge of 1-part vars.
8799         (variable_canonicalize): Use unshared slot.
8800         (VALUED_RECURSED_INTO): New.
8801         (find_loc_in_1pdv): New.
8802         (struct dfset_merge): New.
8803         (insert_into_intersection): New.
8804         (intersect_loc_chains): New.
8805         (loc_cmp): New.
8806         (canonicalize_loc_order_check): New.
8807         (canonicalize_values_mark): New.
8808         (canonicalize_values_star): New.
8809         (variable_merge_over_cur): New.
8810         (variable_merge_over_src): New.
8811         (dataflow_set_merge): New.
8812         (dataflow_set_equiv_regs): New.
8813         (remove_duplicate_values): New.
8814         (struct dfset_post_merge): New.
8815         (variable_post_merge_new_vals): New.
8816         (variable_post_merge_perm_vals): New.
8817         (dataflow_post_merge_adjust): New.
8818         (find_mem_expr_in_1pdv): New.
8819         (dataflow_set_preserve_mem_locs): New.
8820         (dataflow_set_remove_mem_locs): New.
8821         (dataflow_set_clear_at_call): New.
8822         (onepart_variable_different_p): New.
8823         (variable_different_p): Use it.
8824         (dataflow_set_different_1): Adjust.  Make detailed dump more verbose.
8825         (track_expr_p): Add need_rtl parameter.  Don't generate rtl
8826         if not needed.
8827         (track_loc_p): Pass it true.
8828         (struct count_use_info): New.
8829         (find_use_val): New.
8830         (replace_expr_with_values): New.
8831         (log_op_type): New.
8832         (use_type): New, partially split out of...
8833         (count_uses): ... this.  Count new micro-ops.
8834         (count_uses_1): Adjust.
8835         (count_stores): Adjust.
8836         (count_with_sets): New.
8837         (VAL_NEEDS_RESOLUTION): New.
8838         (VAL_HOLDS_TRACK_EXPR): New.
8839         (VAL_EXPR_IS_COPIED): New.
8840         (VAL_EXPR_IS_CLOBBERED): New.
8841         (add_uses): Adjust.  Generate new micro-ops.
8842         (add_uses_1): Adjust.
8843         (add_stores): Generate new micro-ops.
8844         (add_with_sets): New.
8845         (find_src_status): Adjust.
8846         (find_src_set_src): Adjust.
8847         (compute_bb_dataflow): Use dataflow_set_clear_at_call.
8848         Handle new micro-ops.  Canonicalize value equivalances.
8849         (vt_find_locations): Compute total size of hash tables for
8850         dumping.  Perform merge for var-tracking-assignments.  Don't
8851         disregard single-block loops.
8852         (dump_attrs_list): Handle decl_or_value.
8853         (dump_variable): Take variable.  Deal with decl_or_value.
8854         (dump_variable_slot): New.
8855         (dump_vars): Use it.
8856         (dump_dataflow_sets): Adjust.
8857         (set_slot_part): New, extended to support one-part variables
8858         after splitting out of...
8859         (set_variable_part): ... this.
8860         (clobber_slot_part): New, split out of...
8861         (clobber_variable_part): ... this.
8862         (delete_slot_part): New, split out of...
8863         (delete_variable_part): .... this.
8864         (check_wrap_constant): New.
8865         (vt_expand_loc_callback): New.
8866         (vt_expand_loc): New.
8867         (emit_note_insn_var_location): Adjust.  Handle values.  Handle
8868         EMIT_NOTE_AFTER_CALL_INSN.
8869         (emit_notes_for_differences_1): Adjust.  Handle values.
8870         (emit_notes_for_differences_2): Likewise.
8871         (emit_notes_for_differences): Adjust.
8872         (emit_notes_in_bb): Take pointer to set.  Emit AFTER_CALL_INSN notes.
8873         Adjust.  Handle new micro-ops.
8874         (vt_add_function_parameters): Adjust.  Create and bind values.
8875         (vt_initialize): Adjust.  Initialize scratch_regs and
8876         valvar_pool, flooded and perm..  Initialize and use cselib.  Log
8877         operations.  Move some code to count_with_sets and add_with_sets.
8878         (delete_debug_insns): New.
8879         (vt_debug_insns_local): New.
8880         (vt_finalize): Release permp, valvar_pool, scratch_regs.  Finish
8881         cselib.
8882         (var_tracking_main): If var-tracking-assignments is enabled
8883         but var-tracking isn't, delete debug insns and leave.  Likewise
8884         if we exceed limits or fail the stack adjustments tests, and
8885         after all var-tracking processing.
8886         More in var-tracking, from Jakub Jelinek <jakub@redhat.com>:
8887         (dataflow_set): Add traversed_vars.
8888         (value_chain, const_value_chain): New typedefs.
8889         (value_chain_pool, value_chains): New variables.
8890         (value_chain_htab_hash, value_chain_htab_eq, add_value_chain,
8891         add_value_chains, add_cselib_value_chains, remove_value_chain,
8892         remove_value_chains, remove_cselib_value_chains): New functions.
8893         (shared_hash_find_slot_unshare_1, shared_hash_find_slot_1,
8894         shared_hash_find_slot_noinsert_1, shared_hash_find_1): New
8895         static inlines.
8896         (shared_hash_find_slot_unshare, shared_hash_find_slot,
8897         shared_hash_find_slot_noinsert, shared_hash_find): Update.
8898         (dst_can_be_shared): New variable.
8899         (unshare_variable): Unshare set->vars if shared, use shared_hash_*.
8900         Clear dst_can_be_shared.  If set->traversed_vars is non-NULL and
8901         different from set->vars, look up slot again instead of using the
8902         passed in slot.
8903         (dataflow_set_init): Initialize traversed_vars.
8904         (variable_union): Use shared_hash_*.  Use initially NO_INSERT
8905         lookup if set->vars is shared.  Don't keep slot cleared before
8906         calling unshare_variable.  Unshare set->vars if needed.  Adjust
8907         unshare_variable callers.  Clear dst_can_be_shared if needed.
8908         Even ->refcount == 1 vars must be unshared if set->vars is shared
8909         and var needs to be modified.
8910         (dataflow_set_union): Set traversed_vars during canonicalization.
8911         (VALUE_CHANGED, DECL_CHANGED): Define.
8912         (set_dv_changed, dv_changed_p): New static inlines.
8913         (track_expr_p): Clear DECL_CHANGED.
8914         (dump_dataflow_sets): Set it.
8915         (variable_was_changed): Call set_dv_changed.
8916         (emit_note_insn_var_location): Likewise.
8917         (changed_variables_stack): New variable.
8918         (check_changed_vars_1, check_changed_vars_2): New functions.
8919         (emit_notes_for_changes): Do nothing if changed_variables is
8920         empty.  Traverse changed_variables with check_changed_vars_1,
8921         call check_changed_vars_2 on each changed_variables_stack entry.
8922         (emit_notes_in_bb): Add SET argument.  Just clear it at the
8923         beginning, use it instead of local &set, don't destroy it at the end.
8924         (vt_emit_notes): Call dataflow_set_clear early on all
8925         VTI(bb)->out sets, never use them, instead use emit_notes_in_bb
8926         computed set, dataflow_set_clear also VTI(bb)->in when we are
8927         done with the basic block.  Initialize changed_variables_stack,
8928         free it afterwards.  If ENABLE_CHECKING verify that after noting
8929         differences to an empty set value_chains hash table is empty.
8930         (vt_initialize): Initialize value_chains and value_chain_pool.
8931         (vt_finalize): Delete value_chains htab, free value_chain_pool.
8932         (variable_tracking_main): Call dump_dataflow_sets before calling
8933         vt_emit_notes, not after it.
8934         * tree-flow.h (propagate_defs_into_debug_stmts): Declare.
8935         (propagate_var_def_into_debug_stmts): Declare.
8936         * df-problems.c (df_lr_bb_local_compute): Skip debug insns.
8937         (df_set_note): Reject debug insns.
8938         (df_whole_mw_reg_dead_p): Take added_notes_p argument.  Don't
8939         add notes to debug insns.
8940         (df_note_bb_compute): Adjust.  Likewise.
8941         (df_simulate_uses): Skip debug insns.
8942         (df_simulate_initialize_backwards): Likewise.
8943         * reg-stack.c (subst_stack_regs_in_debug_insn): New.
8944         (subst_stack_regs_pat): Reject debug insns.
8945         (convert_regs_1): Handle debug insns.
8946         * Makefile.in (TREE_INLINE_H): Take pointer-set.h from GIMPLE_H.
8947         (print-rtl.o): Depend on cselib.h.
8948         (cselib.o): Depend on TREE_PASS_H.
8949         (var-tracking.o): Depend on cselib.h and TARGET_H.
8950         * sched-rgn.c (rgn_estimate_number_of_insns): Discount debug insns.
8951         (init_ready_list): Skip boundary debug insns.
8952         (add_branch_dependences): Skip debug insns.
8953         (free_block_dependencies): Check for blocks with only debug insns.
8954         (compute_priorities): Likewise.
8955         * gimple.c (gss_for_code): Handle GIMPLE_DEBUG.
8956         (gimple_build_with_ops_stat): Take subcode as unsigned.  Adjust
8957         all callers.
8958         (gimple_build_debug_bind_stat): New.
8959         (empty_body_p): Skip debug stmts.
8960         (gimple_has_side_effects): Likewise.
8961         (gimple_rhs_has_side_effects): Likewise.
8962         * gimple.h (enum gimple_debug_subcode, GIMPLE_DEBUG_BIND): New.
8963         (gimple_build_debug_bind_stat): Declare.
8964         (gimple_build_debug_bind): Define.
8965         (is_gimple_debug): New.
8966         (gimple_debug_bind_p): New.
8967         (gimple_debug_bind_get_var): New.
8968         (gimple_debug_bind_get_value): New.
8969         (gimple_debug_bind_get_value_ptr): New.
8970         (gimple_debug_bind_set_var): New.
8971         (gimple_debug_bind_set_value): New.
8972         (GIMPLE_DEBUG_BIND_NOVALUE): New internal temporary macro.
8973         (gimple_debug_bind_reset_value): New.
8974         (gimple_debug_bind_has_value_p): New.
8975         (gsi_next_nondebug): New.
8976         (gsi_prev_nondebug): New.
8977         (gsi_start_nondebug_bb): New.
8978         (gsi_last_nondebug_bb): New.
8979         * sched-vis.c (print_pattern): Handle VAR_LOCATION.
8980         (print_insn): Handle DEBUG_INSN.
8981         * tree-cfg.c (remove_bb): Walk stmts backwards.  Let loc
8982         of first insn prevail.
8983         (first_stmt): Skip debug stmts.
8984         (first_non_label_stmt): Likewise.
8985         (last_stmt): Likewise.
8986         (has_zero_uses_1): New.
8987         (single_imm_use_1): New.
8988         (verify_gimple_debug): New.
8989         (verify_types_in_gimple_stmt): Handle debug stmts.
8990         (verify_stmt): Likewise.
8991         (debug_loop_num): Skip debug stmts.
8992         (remove_edge_and_dominated_blocks): Remove dominators last.
8993         * tree-ssa-reasssoc.c (rewrite_expr_tree): Propagate into debug stmts.
8994         (linearize_expr): Likewise.
8995         * config/i386/i386.c (ix86_delegitimize_address): Call
8996         default implementation.
8997         * config/ia64/ia64.c (ia64_safe_itanium_class): Handle debug insns.
8998         (group_barrier_needed): Skip debug insns.
8999         (emit_insn_group_barriers): Likewise.
9000         (emit_all_insn_group_barriers): Likewise.
9001         (ia64_variable_issue): Handle debug insns.
9002         (ia64_dfa_new_cycle): Likewise.
9003         (final_emit_insn_group_barriers): Skip debug insns.
9004         (ia64_dwarf2out_def_steady_cfa): Take frame argument.  Don't
9005         def cfa without frame.
9006         (process_set): Likewise.
9007         (process_for_unwind_directive): Pass frame on.
9008         * config/rs6000/rs6000.c (TARGET_DELEGITIMIZE_ADDRESS): Define.
9009         (rs6000_delegitimize_address): New.
9010         (rs6000_debug_adjust_cost): Handle debug insns.
9011         (is_microcoded_insn): Likewise.
9012         (is_cracked_insn): Likewise.
9013         (is_nonpipeline_insn): Likewise.
9014         (insn_must_be_first_in_group): Likewise.
9015         (insn_must_be_last_in_group): Likewise.
9016         (force_new_group): Likewise.
9017         * cfgrtl.c (rtl_split_block): Emit INSN_DELETED note if block
9018         contains only debug insns.
9019         (rtl_merge_blocks): Skip debug insns.
9020         (purge_dead_edges): Likewise.
9021         (rtl_block_ends_with_call_p): Skip debug insns.
9022         * dce.c (deletable_insn_p): Handle VAR_LOCATION.
9023         (mark_reg_dependencies): Skip debug insns.
9024         * params.def (PARAM_MIN_NONDEBUG_INSN_UID): New.
9025         * tree-ssanames.c (release_ssa_name): Propagate def into debug stmts.
9026         * tree-ssa-threadedge.c
9027         (record_temporary_equivalences_from_stmts): Skip debug stmts.
9028         * regcprop.c (replace_oldest_value_addr): Skip debug insns.
9029         (replace_oldest_value_mem): Use ALL_REGS for debug insns.
9030         (copyprop_hardreg_forward_1): Handle debug insns.
9031         * reload1.c (reload): Skip debug insns.  Replace unassigned
9032         pseudos in debug insns with their equivalences.
9033         (eliminate_regs_in_insn): Skip debug insns.
9034         (emit_input_reload_insns): Skip debug insns at first, adjust
9035         them later.
9036         * tree-ssa-operands.c (add_virtual_operand): Reject debug stmts.
9037         (get_indirect_ref_operands): Pass opf_no_vops on.
9038         (get_expr_operands): Likewise.  Skip debug stmts.
9039         (parse_ssa_operands): Scan debug insns with opf_no_vops.
9040
9041 2009-09-01  Richard Henderson  <rth@redhat.com>
9042
9043         * tree-ssa-ccp.c (ccp_initialize): Make sure to simulate
9044         stmt_ends_pp_p statements at least once.
9045         * tree-vrp.c (vrp_initialize): Likewise.
9046         (vrp_visit_stmt): Be prepared for non-interesting stmts.
9047
9048 2009-09-01  Dodji Seketeli  <dodji@redhat.com>
9049
9050         PR bootstrap/41205
9051         Fix AIX bootstrap after PR debug/30161
9052         * dwarf2out.c (make_ith_pack_parameter_name): Don't used strnlen
9053         that is a GNU extension.
9054         (tmpl_value_parm_die_table): Move the definition of this global
9055         outside #ifdef DWARF2_DEBUGGING_INFO region.
9056
9057 2009-09-01  Richard Guenther  <rguenther@suse.de>
9058
9059         * tree.c (tree_expr_size): New function.
9060         * tree.h (tree_expr_size): Declare.
9061         * rtlanal.c (rtx_addr_can_trap_p_1): Adjust comment.
9062         * builtins.c (fold_builtin_memory_op): Use tree_expr_size.
9063         * langhooks.c (lhd_expr_size): Remove.
9064         * langhooks.h (struct lang_hooks): Remove expr_size.
9065         * explow.c (expr_size): Use tree_expr_size.
9066         (int_expr_size): Likewise.
9067         * langhooks-def.h (lhd_expr_size): Remove.
9068         (LANG_HOOKS_EXPR_SIZE): Likewise.
9069         (LANG_HOOKS_INITIALIZER): Adjust.
9070
9071 2009-09-01  Richard Guenther  <rguenther@suse.de>
9072
9073         * tree-flow.h (mark_addressable): Move declaration ...
9074         * tree.h (mark_addressable): ... here.
9075         * stmt.c (expand_asm_operands): Use mark_addressable, not
9076         lang_hooks.mark_addressable.
9077         * langhooks-def.h (LANG_HOOKS_INITIALIZER): Remove
9078         LANG_HOOKS_MARK_ADDRESSABLE.
9079         * langhooks.h (struct lang_hooks): Remove mark_addressable langhook.
9080         * c-objc-common.h (LANG_HOOKS_MARK_ADDRESSABLE): Remove.
9081
9082 2009-08-31  Chris Demetriou  <cgd@google.com>
9083
9084         * config/i386/i386.c (ix86_vectorize_builtin_conversion): Never
9085         vectorize if not TARGET_SSE2.
9086
9087 2009-08-31  DJ Delorie  <dj@redhat.com>
9088
9089         * config/mep/mep.h (FUNCTION_ARG_REGNO_P): Exclude coprocessor
9090         registers if no coprocessor is enabled.
9091
9092 2009-08-31  Dodji Seketeli  <dodji@redhat.com>
9093
9094         PR debug/30161
9095         * cgraph.h (cgraph_get_node): Declare ...
9096         * cgraph.c (cgraph_get_node): ... new function.
9097         * dwarf2out.c (gen_generic_params_dies,
9098         generic_parameter_die, tree_add_const_value_attribute_for_decl,
9099         make_ith_pack_parameter_name,
9100         append_entry_to_tmpl_value_parm_die_table,
9101         gen_remaining_tmpl_value_param_die_attribute): New functions.
9102         (gen_subprogram_die): Generate debug info for template parameters
9103         if debug info level is higher than DINFO_LEVEL_TERSE.
9104         Use tree_add_const_value_attribute_for_decl instead of
9105         tree_add_const_value_attribute.
9106         (gen_const_die): Use tree_add_const_value_attribute_for_decl
9107         instead of tree_add_const_value_attribute.
9108         (gen_struct_or_union_type_die): Generate debug
9109         info for template parameters if debug info level is higher than
9110         DINFO_LEVEL_TERSE.
9111         (tree_add_const_value_attribute): Handle integral and pointer
9112         constants. Update comment.
9113         (dwarf_tag_name): Support DW_TAG_GNU_template_template_param.
9114         (dwarf_attr_name): Support DW_AT_GNU_template_name.
9115         (reference_to_unused): Fix thinko. Remove redundant predicates from
9116         tests.
9117         (tree_add_const_value_attribute): Make this work for constant
9118         expressions only.
9119         tree_add_const_value_attribute_for_decl is to be used for variable
9120         DECLs now.
9121         (add_location_or_const_value_attribute): Use
9122         tree_add_const_value_attribute_for_decl now.
9123         (dwarf2out_finish): Emit the DW_AT_const_value attribute of
9124         DW_TAG_template_value_param DIEs after function DIEs have been
9125         emitted.
9126         * langhooks.h (lang_hooks_for_types): Add
9127         get_argument_pack_elems.
9128         (lang_hooks_for_decls): Add generic_generic_parameter_decl_p.
9129         (lang_hooks): Added get_innermost_generic_parms,
9130         get_innermost_generic_args.
9131         * langhooks-def.h (LANG_HOOKS_GET_INNERMOST_GENERIC_PARMS,
9132         LANG_HOOKS_GET_INNERMOST_GENERIC_ARGS,
9133         LANG_HOOKS_GET_ARGUMENT_PACK_ELEMS,
9134         LANG_HOOKS_GENERIC_GENERIC_PARAMETER_DECL_P): New language hooks.
9135
9136 2009-08-31  DJ Delorie  <dj@redhat.com>
9137
9138         * config/mep/mep.c (machine_function): Add frame_locked flag.  Set
9139         it once we start generating the prologue or epilogue.
9140         (mep_call_saves_register): If the frame is locked, re-use
9141         cached values.
9142         (mep_assign_save_slots): New, broken out from mep_expand_prologue.
9143         (mep_expand_prologue): Call it.
9144         (mep_expand_epilogue): Likewise.
9145         (mep_start_function): Use the same logic as mep_expand_prologue.
9146         (mep_pass_by_reference): Make logic more readable.
9147         (mep_return_in_memory): Zero-sized objects are passed in memory.
9148         (mep_reorg_noframe): Make sure we have accurate REG_DEAD notes.
9149
9150 2009-08-31  Richard Guenther  <rguenther@suse.de>
9151
9152         * builtins.c (fold_builtin_memory_op): Use the alias oracle
9153         to query if the memory regions for memmove overlap.
9154         * tree-ssa-alias.c (ptr_deref_may_alias_decl_p): Relax the
9155         asserts on pointers, instead deal with odd trees.
9156         (ptr_derefs_may_alias_p): Likewise.
9157         (refs_may_alias_p_1): Constructor bases also never alias.
9158
9159 2009-08-31  Gerald Pfeifer  <gerald@pfeifer.com>
9160
9161         * doc/install.texi (Final install): Adjust reference on where to
9162         order printed manuals.
9163
9164 2009-08-30  Olivier Hainque  <hainque@adacore.com>
9165
9166         * dwarf2out.c (switch_to_frame_table_section): Move
9167         definition prior to first use.
9168
9169 2009-08-30  Richard Guenther  <rguenther@suse.de>
9170
9171         PR tree-optimization/41186
9172         * tree-ssa-alias.c (ptr_deref_may_alias_ref_p): Remove.
9173         (ao_ref_init_from_ptr_and_size): New function.
9174         (ref_maybe_used_by_call_p_1): Be more precise tracking
9175         used ranges for builtin functions.
9176         (ref_maybe_used_by_call_p): Adjust.
9177         (call_may_clobber_ref_p_1): Be more precise tracking clobbered
9178         ranges for builtin functions.
9179         * tree-ssa-alias.h (ao_ref_init_from_ptr_and_size): Declare.
9180
9181 2009-08-30  Alan Modra  <amodra@bigpond.net.au>
9182
9183         PR target/41081
9184         * fwprop.c (get_reg_use_in): Delete.
9185         (free_load_extend): New function.
9186         (forward_propagate_subreg): Use it.
9187
9188 2009-08-29  Kaz Kojima  <kkojima@gcc.gnu.org>
9189
9190         * config.gcc (sh*-*-elf): Add superh stuff only for sh*-superh-elf.
9191
9192 2009-08-29  Kai Tietz<kai.tietz@onevision.com>
9193
9194         PR/41184
9195         * config/i386.c (ix86_expand_epilogue): Correct stack adjustment for
9196         padding.
9197
9198 2009-08-29  Douglas B Rupp  <rupp@gnat.com>
9199
9200         * crtstuff.c (__do_global_dtors_aux): Use atexit if no
9201         fini or fini_array section.
9202
9203 2009-08-28  Sebastian Pop  <sebastian.pop@amd.com>
9204
9205         * graphite-dependences.c (graphite_legal_transform_bb): Call
9206         pbb_remove_duplicate_pdrs.
9207         * graphite-poly.c (can_collapse_pdr): Removed.
9208         (pdr_find_duplicate): Removed.
9209         (can_collapse_pdrs): New.
9210         (pbb_remove_duplicate_pdrs): New.
9211         (new_poly_dr): Do not look for duplicates.
9212         * graphite-poly.h (struct poly_bb): New field pdr_duplicates_removed.
9213         (PBB_PDR_DUPLICATES_REMOVED): New.
9214         (pbb_remove_duplicate_pdrs): Declared.
9215
9216 2009-08-28  Sebastian Pop  <sebastian.pop@amd.com>
9217
9218         * graphite-interchange.c (pbb_interchange_profitable_p): Adjust
9219         the strides by multiplying by PDR_NB_REFS.
9220         * graphite-poly.c (can_collapse_pdr): New.
9221         (pdr_find_duplicate): New.
9222         (new_poly_dr): Call pdr_find_duplicate.  Collapse duplicate PDRs.
9223         Initialize PDR_NB_REFS.
9224         * graphite-poly.h (struct poly_dr): Add field nb_refs.
9225         (PDR_NB_REFS): New.
9226         (new_poly_dr): Number of subscripts is a graphite_dim_t.
9227
9228 2009-08-28  Sebastian Pop  <sebastian.pop@amd.com>
9229
9230         PR middle-end/40965
9231         * graphite-poly.c (apply_poly_transforms): Remove legality test before
9232         any transform.
9233
9234 2009-08-28  Sebastian Pop  <sebastian.pop@amd.com>
9235
9236         * graphite-dependences.c (pddr_original_scattering): Return NULL
9237         for read-read dependence relations.
9238         * graphite-poly.h (enum poly_dr_type): Fix comment.
9239         (pdr_read_p): New.
9240         (pdr_write_p): New.
9241         (pdr_may_write_p): New.
9242
9243 2009-08-28  Sebastian Pop  <sebastian.pop@amd.com>
9244
9245         * graphite-poly.h (enum POLY_DR_TYPE): Renamed poly_dr_type.
9246         (struct poly_dr): Same.
9247         (new_poly_dr): Same.
9248         * graphite-poly.c (new_poly_dr): Same.
9249         * graphite-dependences.c (dot_deps): Disable call to system.
9250
9251 2009-08-28  Cary Coutant  <ccoutant@google.com>
9252
9253         PR debug/41063
9254         * dwarf2out.c (gen_type_die_with_usage): Use proper context for
9255         struct/union/enum types local to a function.
9256
9257 2009-08-28  Konrad Trifunovic  <konrad.trifunovic@gmail.com>
9258             Sebastian Pop  <sebastian.pop@amd.com>
9259
9260         * graphite-blocking.c (pbb_strip_mine_loop_depth): Renamed
9261         pbb_strip_mine_time_depth.  Changed the implementation so that
9262         transformation is expressed as a transformation on
9263         time (scatttering) dimensions.  Also, ensures that the 2d+1
9264         scheduling format is preserved.
9265         (pbb_strip_mine_profitable_p): Profitability is based on the
9266         iteration number of a given time (scattering) dimension,
9267         and not on a original loop depth dimension.
9268         (pbb_strip_mine): Call pbb_number_of_iterations_at_time.
9269         (pbb_do_strip_mine): Call psct_dynamic_dim.
9270         * graphite-poly.c (pbb_number_of_iterations_at_time): New.
9271         * graphite-poly.h (pbb_number_of_iterations_at_time): Declared.
9272         (pbb_nb_dynamic_scattering_transform): New.
9273         (psct_dynamic_dim): New.
9274
9275 2009-08-28  Konrad Trifunovic  <konrad.trifunovic@gmail.com>
9276
9277         * graphite-ppl.c (ppl_max_for_le): Renamed ppl_max_for_le_pointset.
9278         * graphite-ppl.h (ppl_max_for_le): Renamed ppl_max_for_le_pointset.
9279         * graphite-poly.c (pbb_number_of_iterations): Rename ppl_max_for_le.
9280         * graphite-interchange.c (build_linearized_memory_access): Same.
9281         (memory_stride_in_loop): Same.
9282
9283 2009-08-28  Sebastian Pop  <sebastian.pop@amd.com>
9284
9285         * graphite-dependences.c (pddr_original_scattering): New.
9286         (graphite_legal_transform_dr): Call pddr_original_scattering.
9287         (dot_deps_1): New.
9288         (dot_deps): New.
9289         * graphite-dependences.h (dot_deps): Declared.
9290         * graphite-poly.c (new_poly_dr): Initialize PDR_ID.
9291         (print_pdr): Print PDR_ID.
9292         * graphite-poly.h (struct poly_dr): Add field id.
9293         (PDR_ID): New.
9294         (pbb_index): New.
9295         * graphite-scop-detection.c (dot_all_scops_1): Cleanup comment.
9296
9297 2009-08-28  Sebastian Pop  <sebastian.pop@amd.com>
9298
9299         * graphite-dependences.c (graphite_carried_dependence_level_k): Do
9300         not delete the original dependence relation.
9301
9302 2009-08-28  Sebastian Pop  <sebastian.pop@amd.com>
9303
9304         * graphite-dependences.c (new_poly_dr_pair): Renamed new_poly_ddr.
9305         (eq_poly_dr_pair_p): Renamed eq_poly_ddr_p.
9306         (hash_poly_dr_pair_p): Renamed hash_poly_ddr_p.
9307         (free_poly_ddr): New.
9308         (pddr_is_empty): New.
9309         (dependence_polyhedron_1): Now returns a poly_ddr_p.
9310         (dependence_polyhedron): Same.  Remove useless gcc_assert.
9311         Remove fprintfs.
9312         (graphite_legal_transform_dr): Call pddr_is_empty and free_poly_ddr.
9313         (graphite_carried_dependence_level_k): Call pddr_is_empty.
9314         * graphite-dependences.h (enum poly_dependence_kind): New.
9315         (poly_dr_pair): Renamed poly_ddr.  Added a field kind.
9316         (PDRP_SOURCE): Renamed PDDR_SOURCE.
9317         (PDRP_SINK): Renamed PDDR_SINK.
9318         (PDRP_DDP): Renamed PDDR_DDP.
9319         (PDDR_KIND): New.
9320         (free_poly_ddr): Declared.
9321         * graphite-poly.c (new_scop): Use the new hash function names.
9322         * graphite-poly.h (struct scop): Renamed field original_pdr_pairs
9323         into original_pddrs.
9324         (SCOP_ORIGINAL_PDR_PAIRS): Renamed SCOP_ORIGINAL_PDDRS.
9325
9326 2009-08-28  Sebastian Pop  <sebastian.pop@amd.com>
9327
9328         * cfgloopmanip.c (create_empty_loop_on_edge): Generate upper
9329         bounds with LT_EXPR to make niter analysis more precise on code
9330         generated by Graphite.
9331
9332 2009-08-28  Sebastian Pop  <sebastian.pop@amd.com>
9333
9334         * graphite-dependences.c (graphite_legal_transform_dr): Fix formatting.
9335         (graphite_legal_transform_bb): Same.
9336         (poly_drs_may_alias_p): Same.
9337
9338 2009-08-28  Richard Guenther  <rguenther@suse.de>
9339
9340         * tree.def: Remove note about obsolete TYPE_NONCOPIED_PARTS.
9341
9342 2009-08-28  Jan Beulich  <jbeulich@novell.com>
9343
9344         * config/i386/netware.c: Include langhooks.h.
9345         (i386_nlm_encode_section_info): Simplify.
9346         (netware_override_options): Delete.
9347         * config/i386/netware.h (netware_override_options): Delete
9348         declaration.
9349         (OVERRIDE_OPTIONS): Delete definition.
9350         (SUBTARGET_OVERRIDE_OPTIONS): Define.
9351         (ASM_COMMENT_START): Define.
9352         * config/i386/nwld.h (SUBSUBTARGET_OVERRIDE_OPTIONS): Define.
9353
9354 2009-08-28  Jan Beulich  <jbeulich@novell.com>
9355
9356         * configure.ac: For in-tree ld, do a plain version check to
9357         determine whether comdat groups are supported.
9358         * configure: Regenerate.
9359
9360 2009-08-28  Olivier Hainque  <hainque@adacore.com>
9361
9362         * collect2.c (DO_COLLECT_EXPORT_LIST): New internal macro,
9363         always defined.  Reflect definition or absence of such for
9364         COLLECT_EXPORT_LIST.  Readability helper.
9365         (scanfilter): New enum, to help control what symbols
9366         are to be considered or ignored by scan_prog_file.
9367         (enum pass): Rename as "scanpass", moved together with scanfilter
9368         prior to scan_prog_file's prototype.
9369         (scan_prog_file): Accept and honor scanpass and scanfilter arguments.
9370         Group prototype with the scanpass/scanfilter definitions, factorize
9371         head comments for the several implementations at the prototype.
9372         (main): Reorganize the first pass link control to let AIX
9373         drag only the needed frame tables in executables.  Prevent
9374         frame tables collection during the scan aimed at static ctors.
9375         Pre-link and scan for frame tables later to compensate.
9376         * doc/tm.texi (ASM_OUTPUT_DWARF_TABLE_REF): New macro.
9377         A C statement to issue assembly directives that create a reference
9378         to the given DWARF table identifier label from the current function
9379         section.
9380         * dwarf2out.c (switch_to_eh_frame_section): Add a BACK argument
9381         to differentiate first time section entry.  Only emit a .data
9382         tables start identifier label the first time around.
9383         (switch_to_frame_table_section): New function.  Helper for
9384         output_call_frame_info to switch possibly BACK into the eh_frame
9385         or the debug_frame section depending on FOR_EH.
9386         (output_call_frame_info): Use helper to first enter the proper
9387         frame section.
9388         (output_fde): Use ASM_OUTPUT_DWARF_TABLE_REF when defined to
9389         emit a link to the frame table start label from each function
9390         section.
9391         * config/rs6000/rs6000.c (rs6000_aix_asm_output_dwarf_table_ref):
9392         New function.  Implementation of ASM_OUTPUT_DWARF_TABLE_REF.
9393         * config/rs6000/rs6000-protos.h: Declare it.
9394         * config/rs6000/aix.h (ASM_OUTPUT_DWARF_TABLE_REF): Define.
9395
9396 2009-08-27  Kaz Kojima  <kkojima@gcc.gnu.org>
9397
9398         * config/sh/sh.c (split_branches): Check the result of
9399         next_active_insn.
9400
9401 2009-08-27  Steve Ellcey  <sje@cup.hp.com>
9402
9403         * config/ia64/hpux.h (LIB_SPEC): Add -lrt for when
9404         using -pthread -fopenmp
9405
9406 2009-08-27  Gerald Pfeifer  <gerald@pfeifer.com>
9407
9408         * doc/service.texi (service directory): Update URL.
9409
9410 2009-08-27  Uros Bizjak  <ubizjak@gmail.com>
9411
9412         PR rtl-optimization/40861
9413         * simplify-rtx.c (simplify_subreg): Do not call simplify_gen_subreg to
9414         extract word from a multi-word subreg for negative byte positions.
9415
9416 2009-08-27  Tristan Gingold  <gingold@adacore.com>
9417             Douglas B Rupp  <rupp@gnat.com>
9418
9419         * config/ia64/ia64.c (ia64_attribute_table): Add "common_object" entry.
9420         (SECTION_VMS_OVERLAY): Define.
9421         (ia64_vms_common_object_attribute): Added.  Handle the "common_object"
9422         attribute.
9423         (ia64_vms_elf_asm_named_section): Added.  Generate .section pseudo-op
9424         for common_object.
9425         (ia64_vms_output_aligned_decl_common): Added.  Generate pseudo-op for
9426         common_object declarations.
9427         (ia64_section_type_flags): Set section flag for common_object.
9428         * config/ia64/ia64-protos.h
9429         (ia64_vms_output_aligned_decl_common): Declare.
9430         (ia64_vms_elf_asm_named_section): Declare.
9431
9432 2009-08-27  Michael Matz  <matz@suse.de>
9433
9434         * expr.c (expand_expr_real_2): New function taking exploded
9435         unary or binary expression, split out from ...
9436         (expand_expr_real_1): ... here.  Move over all unary/binary
9437         switch parts to above function, in particular these codes:
9438         PAREN_EXPR, NOP_EXPR, CONVERT_EXPR, POINTER_PLUS_EXPR, PLUS_EXPR,
9439         MINUS_EXPR, MULT_EXPR, TRUNC_DIV_EXPR, FLOOR_DIV_EXPR, CEIL_DIV_EXPR,
9440         ROUND_DIV_EXPR, EXACT_DIV_EXPR, RDIV_EXPR, TRUNC_MOD_EXPR,
9441         FLOOR_MOD_EXPR, CEIL_MOD_EXPR, ROUND_MOD_EXPR, FIXED_CONVERT_EXPR,
9442         FIX_TRUNC_EXPR, FLOAT_EXPR, NEGATE_EXPR, ABS_EXPR, MAX_EXPR, MIN_EXPR,
9443         BIT_NOT_EXPR, TRUTH_AND_EXPR, BIT_AND_EXPR, TRUTH_OR_EXPR,
9444         BIT_IOR_EXPR, TRUTH_XOR_EXPR, BIT_XOR_EXPR, LROTATE_EXPR, RROTATE_EXPR,
9445         LSHIFT_EXPR, RSHIFT_EXPR, LT_EXPR, LE_EXPR, GT_EXPR, GE_EXPR, EQ_EXPR,
9446         NE_EXPR, UNORDERED_EXPR, ORDERED_EXPR, UNLT_EXPR, UNLE_EXPR, UNGT_EXPR,
9447         UNGE_EXPR, UNEQ_EXPR, LTGT_EXPR, TRUTH_NOT_EXPR, COMPLEX_EXPR,
9448         WIDEN_SUM_EXPR, REDUC_MAX_EXPR, REDUC_MIN_EXPR, REDUC_PLUS_EXPR,
9449         VEC_EXTRACT_EVEN_EXPR, VEC_EXTRACT_ODD_EXPR, VEC_INTERLEAVE_HIGH_EXPR,
9450         VEC_INTERLEAVE_LOW_EXPR, VEC_LSHIFT_EXPR, VEC_RSHIFT_EXPR,
9451         VEC_UNPACK_HI_EXPR, VEC_UNPACK_LO_EXPR, VEC_UNPACK_FLOAT_HI_EXPR,
9452         VEC_UNPACK_FLOAT_LO_EXPR, VEC_WIDEN_MULT_HI_EXPR,
9453         VEC_WIDEN_MULT_LO_EXPR, VEC_PACK_TRUNC_EXPR, VEC_PACK_SAT_EXPR,
9454         VEC_PACK_FIX_TRUNC_EXPR.
9455         (<case PAREN_EXPR>): Call set_mem_attributes() with type, not the
9456         full expression.
9457
9458 2009-08-27  Richard Guenther  <rguenther@suse.de>
9459
9460         * gengtype.c (main): Handle uint64_t.
9461         * ipa-utils.c (get_base_var): Indent properly.
9462         * tree-ssa-live.c (debug_scope_block): New function.
9463         * tree-flow.h (debug_scope_block): Declare.
9464         * tree-ssa-copy.c (replace_exp_1): Add vertical space.
9465         * basic-block.h (enum profile_status): Rename to
9466         enum profile_status_d.
9467         (x_profile_status): Adjust type.
9468
9469 2009-08-27  Dodji Seketeli  <dodji@redhat.com>
9470
9471         PR debug/41170
9472         * dwarf2out.c (get_context_die): Declare this static function.
9473         (gen_type_die_with_usage): Make sure a DIE is a generated for
9474         the context of a typedef.
9475
9476 2009-08-26  Anatoly Sokolov  <aesok@post.ru>
9477
9478         * doc/invoke.texi (AVR Options): Remove documentation of -minit-stack
9479         switch.
9480
9481 2009-08-26  Richard Sandiford  <rdsandiford@googlemail.com>
9482
9483         * config/mips/mips-protos.h (mips_output_sync): Declare.
9484         (mips_sync_loop_insns): Likewise.
9485         (mips_output_sync_loop): Replace first two parameters with an rtx.
9486         * config/mips/mips.c (mips_multi_member): New structure.
9487         (mips_multi_members): New variable.
9488         (mips_multi_start): New function.
9489         (mips_multi_add): Likewise.
9490         (mips_multi_add_insn): Likewise.
9491         (mips_multi_add_label): Likewise.
9492         (mips_multi_last_index): Likewise.
9493         (mips_multi_copy_insn): Likewise.
9494         (mips_multi_set_operand): Likewise.
9495         (mips_multi_write): Likewise.
9496         (mips_print_operand_punctuation): Remove '%|' and '%-'.
9497         (mips_init_print_operand_punct): Update accordingly.
9498         (mips_start_ll_sc_sync_block): New function.
9499         (mips_end_ll_sc_sync_block): Likewise.
9500         (mips_output_sync): Likewise.
9501         (mips_sync_insn1_template): Likewise.
9502         (mips_sync_insn2_template): Likewise.
9503         (mips_get_sync_operand): Likewise.
9504         (mips_process_sync_loop): Likewise.
9505         (mips_output_sync_loop): Use mips_process_sync_loop.
9506         (mips_sync_loop_insns): New function.
9507         * config/mips/mips.h (MIPS_COMPARE_AND_SWAP): Delete.
9508         (MIPS_COMPARE_AND_SWAP_12): Likewise.
9509         (MIPS_COMPARE_AND_SWAP_12_ZERO_OP): Likewise.
9510         (MIPS_COMPARE_AND_SWAP_12_NONZERO_OP): Likewise.
9511         (MIPS_SYNC_OP, MIPS_SYNC_OP_12): Likewise.
9512         (MIPS_SYNC_OP_12_AND, MIPS_SYNC_OP_12_XOR): Likewise.
9513         (MIPS_SYNC_OLD_OP_12): Likewise.
9514         (MIPS_SYNC_OLD_OP_12_AND, MIPS_SYNC_OLD_OP_12_XOR): Likewise.
9515         (MIPS_SYNC_NEW_OP_12): Likewise.
9516         (MIPS_SYNC_NEW_OP_12_AND, MIPS_SYNC_NEW_OP_12_XOR): Likewise.
9517         (MIPS_SYNC_OLD_OP, MIPS_SYNC_NEW_OP): Likewise.
9518         (MIPS_SYNC_NAND, MIPS_SYNC_OLD_NAND, MIPS_SYNC_NEW_NAND): Likewise.
9519         (MIPS_SYNC_EXCHANGE, MIPS_SYNC_EXCHANGE_12): Likewise.
9520         (MIPS_SYNC_EXCHANGE_12_ZERO_OP): Likewise.
9521         (MIPS_SYNC_EXCHANGE_12_NONZER_OP): Likewise.
9522         * config/mips/mips.md (sync_mem): New attribute.
9523         (sync_oldval, sync_newval, sync_inclusive_mask): Likewise.
9524         (sync_exclusive_mask, sync_required_oldval): Likewise.
9525         (sync_insn1_op2, sync_insn1, sync_insn2): Likewise.
9526         (sync_release_barrier): Likewise.
9527         (length): Handle sync loops.
9528         (sync): Use mips_output_sync.
9529         * config/mips/sync.md (*memory_barrier): Use mips_output_sync.
9530         (sync_compare_and_swap<mode>): Set the new sync_* attributes
9531         and use mips_output_sync_loop.
9532         (compare_and_swap_12, sync_add<mode>, sync_<optab>_12): Likewise.
9533         (sync_old_<optab>_12, sync_new_<optab>_12, sync_nand_12): Likewise.
9534         (sync_old_nand_12, sync_new_nand_12, sync_sub<mode>): Likewise.
9535         (sync_old_add<mode>, sync_old_sub<mode>): Likewise.
9536         (sync_new_add<mode>, sync_new_sub<mode>): Likewise.
9537         (sync_<optab><mode>, sync_old_<optab><mode>): Likewise.
9538         (sync_new_<optab><mode>, sync_nand<mode>): Likewise.
9539         (sync_old_nand<mode>, sync_new_nand<mode>): Likewise.
9540         (sync_lock_test_and_set<mode>, test_and_set_12): Likewise.
9541
9542 2009-08-26  Richard Guenther  <rguenther@suse.de>
9543
9544         PR middle-end/41163
9545         * gimplify.c (gimplify_addr_expr): Canonicalize ADDR_EXPRs if
9546         the types to not match.
9547         * tree-cfg.c (verify_gimple_assign_single): Adjust ADDR_EXPR
9548         verification.
9549         * tree-ssa.c (useless_type_conversion_p): Conversions to
9550         pointers to unprototyped functions are useless.
9551
9552 2009-08-26  Richard Guenther  <rguenther@suse.de>
9553
9554         * tree-ssa-structalias.c (create_variable_info_for): Remove strange
9555         whole-program condition, prepare to be called for non-globals.
9556         (intra_create_variable_infos): For restrict qualified DECL_BY_REFERENCE
9557         params build a representative with known type and track its fields.
9558
9559 2009-08-26  Uros Bizjak  <ubizjak@gmail.com>
9560
9561         * config/alpha/sync.md: Update comment about unpredictable LL/SC lock
9562         clearing by a taken branch.
9563         (sync_<fetchop_name><mode>): Split when epilogue_completed is set,
9564         effectively after bbro pass.
9565         (sync_nand<mode>): Ditto.
9566         (sync_old_<fetchop_name><mode>): Ditto.
9567         (sync_old_nand<mode>): Ditto.
9568         (sync_new_<fetchop_name><mode>): Dito.
9569         (sync_new_nand<mode>): Ditto.
9570         (sync_compare_and_swap<mode>_1): Ditto.
9571         (*sync_compare_and_swap<mode>): Ditto.
9572         (sync_lock_test_and_set<mode>_1): Ditto.
9573         ("sync_lock_test_and_set<mode>): Ditto.
9574
9575 2009-08-25  Douglas B Rupp  <rupp@gnat.com>
9576
9577         * hwint.h (HOST_LONG_FORMAT): New macro
9578         * bitmap.c, c-decl.c, mips-tfile.c, print-rtl.c, print-tree.c:
9579         Use HOST_PTR_PRINTF.
9580         * system.h (HOST_PTR_PRINTF): Resurrect old macro
9581         * doc/hostconfig.texi (HOST_LONG_FORMAT): Document.
9582         (HOST_PTR_PRINTF): Document.
9583
9584 2009-08-25 Jan Hubicka  <jh@suse.cz>
9585
9586         * config/i386/bmmintrin.h: Replace by #error.
9587
9588         Revert:
9589         Michael Meissner  <michael.meissner@amd.com>
9590         Dwarakanath Rajagopal  <dwarak.rajagopal@amd.com>
9591         Tony Linthicum  <tony.linthicum@amd.com>
9592
9593         * config/i386/i386.h (TARGET_SSE5): New macro for SSE5.
9594         (TARGET_ROUND): New macro for the round/ptest instructions which
9595         are shared between SSE4.1 and SSE5.
9596         (OPTION_MASK_ISA_ROUND): Ditto.
9597         (OPTION_ISA_ROUND): Ditto.
9598         (TARGET_FUSED_MADD): New macro for -mfused-madd swtich.
9599         (TARGET_CPU_CPP_BUILTINS): Add SSE5 support.
9600
9601         * config/i386/i386.opt (-msse5): New switch for SSE5 support.
9602         (-mfused-madd): New switch to give users control over whether the
9603         compiler optimizes to use the multiply/add SSE5 instructions.
9604
9605         * config/i386/i386.c (enum pta_flags): Add PTA_SSE5.
9606         (ix86_handle_option): Turn off 3dnow if -msse5.
9607         (override_options): Add SSE5 support.
9608         (print_operand): %Y prints comparison codes for SSE5 com/pcom
9609         instructions.
9610         (ix86_expand_sse_movcc): Add SSE5 support.
9611         (ix86_expand_sse5_unpack): New function to use pperm to unpack a
9612         vector type to the next largest size.
9613         (ix86_expand_sse5_pack): New function to use pperm to pack a
9614         vector type to the next smallest size.
9615         (IX86_BUILTIN_FMADDSS): New for SSE5 intrinsic.
9616         (IX86_BUILTIN_FMADDSD): Ditto.
9617         (IX86_BUILTIN_FMADDPS): Ditto.
9618         (IX86_BUILTIN_FMADDPD): Ditto.
9619         (IX86_BUILTIN_FMSUBSS): Ditto.
9620         (IX86_BUILTIN_FMSUBSD): Ditto.
9621         (IX86_BUILTIN_FMSUBPS): Ditto.
9622         (IX86_BUILTIN_FMSUBPD): Ditto.
9623         (IX86_BUILTIN_FNMADDSS): Ditto.
9624         (IX86_BUILTIN_FNMADDSD): Ditto.
9625         (IX86_BUILTIN_FNMADDPS): Ditto.
9626         (IX86_BUILTIN_FNMADDPD): Ditto.
9627         (IX86_BUILTIN_FNMSUBSS): Ditto.
9628         (IX86_BUILTIN_FNMSUBSD): Ditto.
9629         (IX86_BUILTIN_FNMSUBPS): Ditto.
9630         (IX86_BUILTIN_FNMSUBPD): Ditto.
9631         (IX86_BUILTIN_PCMOV_V2DI): Ditto.
9632         (IX86_BUILTIN_PCMOV_V4SI): Ditto.
9633         (IX86_BUILTIN_PCMOV_V8HI): Ditto.
9634         (IX86_BUILTIN_PCMOV_V16QI): Ditto.
9635         (IX86_BUILTIN_PCMOV_V4SF): Ditto.
9636         (IX86_BUILTIN_PCMOV_V2DF): Ditto.
9637         (IX86_BUILTIN_PPERM): Ditto.
9638         (IX86_BUILTIN_PERMPS): Ditto.
9639         (IX86_BUILTIN_PERMPD): Ditto.
9640         (IX86_BUILTIN_PMACSSWW): Ditto.
9641         (IX86_BUILTIN_PMACSWW): Ditto.
9642         (IX86_BUILTIN_PMACSSWD): Ditto.
9643         (IX86_BUILTIN_PMACSWD): Ditto.
9644         (IX86_BUILTIN_PMACSSDD): Ditto.
9645         (IX86_BUILTIN_PMACSDD): Ditto.
9646         (IX86_BUILTIN_PMACSSDQL): Ditto.
9647         (IX86_BUILTIN_PMACSSDQH): Ditto.
9648         (IX86_BUILTIN_PMACSDQL): Ditto.
9649         (IX86_BUILTIN_PMACSDQH): Ditto.
9650         (IX86_BUILTIN_PMADCSSWD): Ditto.
9651         (IX86_BUILTIN_PMADCSWD): Ditto.
9652         (IX86_BUILTIN_PHADDBW): Ditto.
9653         (IX86_BUILTIN_PHADDBD): Ditto.
9654         (IX86_BUILTIN_PHADDBQ): Ditto.
9655         (IX86_BUILTIN_PHADDWD): Ditto.
9656         (IX86_BUILTIN_PHADDWQ): Ditto.
9657         (IX86_BUILTIN_PHADDDQ): Ditto.
9658         (IX86_BUILTIN_PHADDUBW): Ditto.
9659         (IX86_BUILTIN_PHADDUBD): Ditto.
9660         (IX86_BUILTIN_PHADDUBQ): Ditto.
9661         (IX86_BUILTIN_PHADDUWD): Ditto.
9662         (IX86_BUILTIN_PHADDUWQ): Ditto.
9663         (IX86_BUILTIN_PHADDUDQ): Ditto.
9664         (IX86_BUILTIN_PHSUBBW): Ditto.
9665         (IX86_BUILTIN_PHSUBWD): Ditto.
9666         (IX86_BUILTIN_PHSUBDQ): Ditto.
9667         (IX86_BUILTIN_PROTB): Ditto.
9668         (IX86_BUILTIN_PROTW): Ditto.
9669         (IX86_BUILTIN_PROTD): Ditto.
9670         (IX86_BUILTIN_PROTQ): Ditto.
9671         (IX86_BUILTIN_PROTB_IMM): Ditto.
9672         (IX86_BUILTIN_PROTW_IMM): Ditto.
9673         (IX86_BUILTIN_PROTD_IMM): Ditto.
9674         (IX86_BUILTIN_PROTQ_IMM): Ditto.
9675         (IX86_BUILTIN_PSHLB): Ditto.
9676         (IX86_BUILTIN_PSHLW): Ditto.
9677         (IX86_BUILTIN_PSHLD): Ditto.
9678         (IX86_BUILTIN_PSHLQ): Ditto.
9679         (IX86_BUILTIN_PSHAB): Ditto.
9680         (IX86_BUILTIN_PSHAW): Ditto.
9681         (IX86_BUILTIN_PSHAD): Ditto.
9682         (IX86_BUILTIN_PSHAQ): Ditto.
9683         (IX86_BUILTIN_FRCZSS): Ditto.
9684         (IX86_BUILTIN_FRCZSD): Ditto.
9685         (IX86_BUILTIN_FRCZPS): Ditto.
9686         (IX86_BUILTIN_FRCZPD): Ditto.
9687         (IX86_BUILTIN_CVTPH2PS): Ditto.
9688         (IX86_BUILTIN_CVTPS2PH): Ditto.
9689         (IX86_BUILTIN_COMEQSS): Ditto.
9690         (IX86_BUILTIN_COMNESS): Ditto.
9691         (IX86_BUILTIN_COMLTSS): Ditto.
9692         (IX86_BUILTIN_COMLESS): Ditto.
9693         (IX86_BUILTIN_COMGTSS): Ditto.
9694         (IX86_BUILTIN_COMGESS): Ditto.
9695         (IX86_BUILTIN_COMUEQSS): Ditto.
9696         (IX86_BUILTIN_COMUNESS): Ditto.
9697         (IX86_BUILTIN_COMULTSS): Ditto.
9698         (IX86_BUILTIN_COMULESS): Ditto.
9699         (IX86_BUILTIN_COMUGTSS): Ditto.
9700         (IX86_BUILTIN_COMUGESS): Ditto.
9701         (IX86_BUILTIN_COMORDSS): Ditto.
9702         (IX86_BUILTIN_COMUNORDSS): Ditto.
9703         (IX86_BUILTIN_COMFALSESS): Ditto.
9704         (IX86_BUILTIN_COMTRUESS): Ditto.
9705         (IX86_BUILTIN_COMEQSD): Ditto.
9706         (IX86_BUILTIN_COMNESD): Ditto.
9707         (IX86_BUILTIN_COMLTSD): Ditto.
9708         (IX86_BUILTIN_COMLESD): Ditto.
9709         (IX86_BUILTIN_COMGTSD): Ditto.
9710         (IX86_BUILTIN_COMGESD): Ditto.
9711         (IX86_BUILTIN_COMUEQSD): Ditto.
9712         (IX86_BUILTIN_COMUNESD): Ditto.
9713         (IX86_BUILTIN_COMULTSD): Ditto.
9714         (IX86_BUILTIN_COMULESD): Ditto.
9715         (IX86_BUILTIN_COMUGTSD): Ditto.
9716         (IX86_BUILTIN_COMUGESD): Ditto.
9717         (IX86_BUILTIN_COMORDSD): Ditto.
9718         (IX86_BUILTIN_COMUNORDSD): Ditto.
9719         (IX86_BUILTIN_COMFALSESD): Ditto.
9720         (IX86_BUILTIN_COMTRUESD): Ditto.
9721         (IX86_BUILTIN_COMEQPS): Ditto.
9722         (IX86_BUILTIN_COMNEPS): Ditto.
9723         (IX86_BUILTIN_COMLTPS): Ditto.
9724         (IX86_BUILTIN_COMLEPS): Ditto.
9725         (IX86_BUILTIN_COMGTPS): Ditto.
9726         (IX86_BUILTIN_COMGEPS): Ditto.
9727         (IX86_BUILTIN_COMUEQPS): Ditto.
9728         (IX86_BUILTIN_COMUNEPS): Ditto.
9729         (IX86_BUILTIN_COMULTPS): Ditto.
9730         (IX86_BUILTIN_COMULEPS): Ditto.
9731         (IX86_BUILTIN_COMUGTPS): Ditto.
9732         (IX86_BUILTIN_COMUGEPS): Ditto.
9733         (IX86_BUILTIN_COMORDPS): Ditto.
9734         (IX86_BUILTIN_COMUNORDPS): Ditto.
9735         (IX86_BUILTIN_COMFALSEPS): Ditto.
9736         (IX86_BUILTIN_COMTRUEPS): Ditto.
9737         (IX86_BUILTIN_COMEQPD): Ditto.
9738         (IX86_BUILTIN_COMNEPD): Ditto.
9739         (IX86_BUILTIN_COMLTPD): Ditto.
9740         (IX86_BUILTIN_COMLEPD): Ditto.
9741         (IX86_BUILTIN_COMGTPD): Ditto.
9742         (IX86_BUILTIN_COMGEPD): Ditto.
9743         (IX86_BUILTIN_COMUEQPD): Ditto.
9744         (IX86_BUILTIN_COMUNEPD): Ditto.
9745         (IX86_BUILTIN_COMULTPD): Ditto.
9746         (IX86_BUILTIN_COMULEPD): Ditto.
9747         (IX86_BUILTIN_COMUGTPD): Ditto.
9748         (IX86_BUILTIN_COMUGEPD): Ditto.
9749         (IX86_BUILTIN_COMORDPD): Ditto.
9750         (IX86_BUILTIN_COMUNORDPD): Ditto.
9751         (IX86_BUILTIN_COMFALSEPD): Ditto.
9752         (IX86_BUILTIN_COMTRUEPD): Ditto.
9753         (IX86_BUILTIN_PCOMEQUB): Ditto.
9754         (IX86_BUILTIN_PCOMNEUB): Ditto.
9755         (IX86_BUILTIN_PCOMLTUB): Ditto.
9756         (IX86_BUILTIN_PCOMLEUB): Ditto.
9757         (IX86_BUILTIN_PCOMGTUB): Ditto.
9758         (IX86_BUILTIN_PCOMGEUB): Ditto.
9759         (IX86_BUILTIN_PCOMFALSEUB): Ditto.
9760         (IX86_BUILTIN_PCOMTRUEUB): Ditto.
9761         (IX86_BUILTIN_PCOMEQUW): Ditto.
9762         (IX86_BUILTIN_PCOMNEUW): Ditto.
9763         (IX86_BUILTIN_PCOMLTUW): Ditto.
9764         (IX86_BUILTIN_PCOMLEUW): Ditto.
9765         (IX86_BUILTIN_PCOMGTUW): Ditto.
9766         (IX86_BUILTIN_PCOMGEUW): Ditto.
9767         (IX86_BUILTIN_PCOMFALSEUW): Ditto.
9768         (IX86_BUILTIN_PCOMTRUEUW): Ditto.
9769         (IX86_BUILTIN_PCOMEQUD): Ditto.
9770         (IX86_BUILTIN_PCOMNEUD): Ditto.
9771         (IX86_BUILTIN_PCOMLTUD): Ditto.
9772         (IX86_BUILTIN_PCOMLEUD): Ditto.
9773         (IX86_BUILTIN_PCOMGTUD): Ditto.
9774         (IX86_BUILTIN_PCOMGEUD): Ditto.
9775         (IX86_BUILTIN_PCOMFALSEUD): Ditto.
9776         (IX86_BUILTIN_PCOMTRUEUD): Ditto.
9777         (IX86_BUILTIN_PCOMEQUQ): Ditto.
9778         (IX86_BUILTIN_PCOMNEUQ): Ditto.
9779         (IX86_BUILTIN_PCOMLTUQ): Ditto.
9780         (IX86_BUILTIN_PCOMLEUQ): Ditto.
9781         (IX86_BUILTIN_PCOMGTUQ): Ditto.
9782         (IX86_BUILTIN_PCOMGEUQ): Ditto.
9783         (IX86_BUILTIN_PCOMFALSEUQ): Ditto.
9784         (IX86_BUILTIN_PCOMTRUEUQ): Ditto.
9785         (IX86_BUILTIN_PCOMEQB): Ditto.
9786         (IX86_BUILTIN_PCOMNEB): Ditto.
9787         (IX86_BUILTIN_PCOMLTB): Ditto.
9788         (IX86_BUILTIN_PCOMLEB): Ditto.
9789         (IX86_BUILTIN_PCOMGTB): Ditto.
9790         (IX86_BUILTIN_PCOMGEB): Ditto.
9791         (IX86_BUILTIN_PCOMFALSEB): Ditto.
9792         (IX86_BUILTIN_PCOMTRUEB): Ditto.
9793         (IX86_BUILTIN_PCOMEQW): Ditto.
9794         (IX86_BUILTIN_PCOMNEW): Ditto.
9795         (IX86_BUILTIN_PCOMLTW): Ditto.
9796         (IX86_BUILTIN_PCOMLEW): Ditto.
9797         (IX86_BUILTIN_PCOMGTW): Ditto.
9798         (IX86_BUILTIN_PCOMGEW): Ditto.
9799         (IX86_BUILTIN_PCOMFALSEW): Ditto.
9800         (IX86_BUILTIN_PCOMTRUEW): Ditto.
9801         (IX86_BUILTIN_PCOMEQD): Ditto.
9802         (IX86_BUILTIN_PCOMNED): Ditto.
9803         (IX86_BUILTIN_PCOMLTD): Ditto.
9804         (IX86_BUILTIN_PCOMLED): Ditto.
9805         (IX86_BUILTIN_PCOMGTD): Ditto.
9806         (IX86_BUILTIN_PCOMGED): Ditto.
9807         (IX86_BUILTIN_PCOMFALSED): Ditto.
9808         (IX86_BUILTIN_PCOMTRUED): Ditto.
9809         (IX86_BUILTIN_PCOMEQQ): Ditto.
9810         (IX86_BUILTIN_PCOMNEQ): Ditto.
9811         (IX86_BUILTIN_PCOMLTQ): Ditto.
9812         (IX86_BUILTIN_PCOMLEQ): Ditto.
9813         (IX86_BUILTIN_PCOMGTQ): Ditto.
9814         (IX86_BUILTIN_PCOMGEQ): Ditto.
9815         (IX86_BUILTIN_PCOMFALSEQ): Ditto.
9816         (IX86_BUILTIN_PCOMTRUEQ): Ditto.
9817         (enum multi_arg_type): New enum for describing the various SSE5
9818         intrinsic argument types.
9819         (bdesc_multi_arg): New table for SSE5 intrinsics.
9820         (ix86_init_mmx_sse_builtins): Add SSE5 intrinsic support.
9821         (ix86_expand_multi_arg_builtin): New function for creating SSE5
9822         intrinsics.
9823         (ix86_expand_builtin): Add SSE5 intrinsic support.
9824         (ix86_sse5_valid_op_p): New function to validate SSE5 3 and 4
9825         operand instructions.
9826         (ix86_expand_sse5_multiple_memory): New function to split the
9827         second memory reference from SSE5 instructions.
9828         (type_has_variadic_args_p): Delete in favor of stdarg_p.
9829         (ix86_return_pops_args): Use stdarg_p to determine if the function
9830         has variable arguments.
9831         (ix86_setup_incoming_varargs): Ditto.
9832         (x86_this_parameter): Ditto.
9833
9834         * config/i386/i386-protos.h (ix86_expand_sse5_unpack): Add
9835         declaration.
9836         (ix86_expand_sse5_pack): Ditto.
9837         (ix86_sse5_valid_op_p): Ditto.
9838         (ix86_expand_sse5_multiple_memory): Ditto.
9839
9840         * config/i386/i386.md (UNSPEC_SSE5_INTRINSIC): Add new UNSPEC
9841         constant for SSE5 support.
9842         (UNSPEC_SSE5_UNSIGNED_CMP): Ditto.
9843         (UNSPEC_SSE5_TRUEFALSE): Ditto.
9844         (UNSPEC_SSE5_PERMUTE): Ditto.
9845         (UNSPEC_SSE5_ASHIFT): Ditto.
9846         (UNSPEC_SSE5_LSHIFT): Ditto.
9847         (UNSPEC_FRCZ): Ditto.
9848         (UNSPEC_CVTPH2PS): Ditto.
9849         (UNSPEC_CVTPS2PH): Ditto.
9850         (PCOM_FALSE): Add new constant for true/false SSE5 comparisons.
9851         (PCOM_TRUE): Ditto.
9852         (COM_FALSE_S): Ditto.
9853         (COM_FALSE_P): Ditto.
9854         (COM_TRUE_S): Ditto.
9855         (COM_TRUE_P): Ditto.
9856         (type attribute): Add ssemuladd, sseiadd1, ssecvt1, sse4arg types.
9857         (unit attribute): Add support for ssemuladd, ssecvt1, sseiadd1 sse4arg
9858         types.
9859         (memory attribute): Ditto.
9860         (sse4_1_round<mode>2): Use TARGET_ROUND instead of TARGET_SSE4_1.
9861         Use SSE4_1_ROUND_* constants instead of hard coded numbers.
9862         (rint<mode>2): Use TARGET_ROUND instead of TARGET_SSE4_1.
9863         (floor<mode>2): Ditto.
9864         (ceil<mode>2): Ditto.
9865         (btrunc<mode>2): Ditto.
9866         (nearbyintdf2): Ditto.
9867         (nearbyintsf2): Ditto.
9868         (sse_setccsf): Disable if SSE5.
9869         (sse_setccdf): Ditto.
9870         (sse5_setcc<mode>): New support for SSE5 conditional move.
9871         (sse5_pcmov_<mode>): Ditto.
9872
9873         * config/i386/sse.md (SSEMODE1248): New mode iterator for SSE5.
9874         (SSEMODEF4): Ditto.
9875         (SSEMODEF2P): Ditto.
9876         (ssemodesuffixf4): New mode attribute for SSE5.
9877         (ssemodesuffixf2s): Ditto.
9878         (ssemodesuffixf2c): Ditto.
9879         (sserotatemax): Ditto.
9880         (ssescalarmode): Ditto.
9881         (sse_maskcmpv4sf3): Disable if SSE5.
9882         (sse_maskcmpv2df3): Ditto.
9883         (sse_vmmaskcmpv4sf3): Ditto.
9884         (sse5_fmadd<mode>4): Add SSE5 floating point multiply/add instructions.
9885         (sse5_vmfmadd<mode>4): Ditto.
9886         (sse5_fmsub<mode>4): Ditto.
9887         (sse5_vmfmsub<mode>4): Ditto.
9888         (sse5_fnmadd<mode>4): Ditto.
9889         (sse5_vmfnmadd<mode>4): Ditto.
9890         (sse5_fnmsub<mode>4): Ditto.
9891         (sse5_vmfnmsub<mode>4): Ditto.
9892         (sse5i_fmadd<mode>4): Ditto.
9893         (sse5i_fmsub<mode>4): Ditto.
9894         (sse5i_fnmadd<mode>4): Ditto.
9895         (sse5i_fnmsub<mode>4): Ditto.
9896         (sse5i_vmfmadd<mode>4): Ditto.
9897         (sse5i_vmfmsub<mode>4): Ditto.
9898         (sse5i_vmfnmadd<mode>4): Ditto.
9899         (sse5i_vmfnmsub<mode>4): Ditto.
9900         (mulv16qi3): Add SSE5 support.
9901         (mulv4si3): Ditto.
9902         (sse5_mulv4si3): New insn for 32-bit multiply support on SSE5.
9903         (sse2_mulv4si3): Disable if SSE5.
9904         (sse4_1_roundpd): Use TARGET_ROUND instead of TARGET_SSE4_1.
9905         (sse4_1_roundps): Ditto.
9906         (sse4_1_roundsd): Ditto.
9907         (sse4_1_roundss): Ditto.
9908         (sse_maskcmpv4sf3): Disable if SSE5 so the SSE5 instruction will
9909         be generated.
9910         (sse_maskcmpsf3): Ditto.
9911         (sse_vmmaskcmpv4sf3): Ditto.
9912         (sse2_maskcmpv2df3): Ditto.
9913         (sse2_maskcmpdf3): Ditto.
9914         (sse2_vmmaskcmpv2df3): Ditto.
9915         (sse2_eq<mode>3): Ditto.
9916         (sse2_gt<mode>3): Ditto.
9917         (sse5_pcmov_<mode>): Add SSE5 support.
9918         (vec_unpacku_hi_v16qi): Ditto.
9919         (vec_unpacks_hi_v16qi): Ditto.
9920         (vec_unpacku_lo_v16qi): Ditto.
9921         (vec_unpacks_lo_v16qi): Ditto.
9922         (vec_unpacku_hi_v8hi): Ditto.
9923         (vec_unpacks_hi_v8hi): Ditto.
9924         (vec_unpacku_lo_v8hi): Ditto.
9925         (vec_unpacks_lo_v8hi): Ditto.
9926         (vec_unpacku_hi_v4si): Ditto.
9927         (vec_unpacks_hi_v4si): Ditto.
9928         (vec_unpacku_lo_v4si): Ditto.
9929         (vec_unpacks_lo_v4si): Ditto.
9930         (sse5_pmacsww): New SSE5 intrinsic insn.
9931         (sse5_pmacssww): Ditto.
9932         (sse5_pmacsdd): Ditto.
9933         (sse5_pmacssdd): Ditto.
9934         (sse5_pmacssdql): Ditto.
9935         (sse5_pmacssdqh): Ditto.
9936         (sse5_pmacsdqh): Ditto.
9937         (sse5_pmacsswd): Ditto.
9938         (sse5_pmacswd): Ditto.
9939         (sse5_pmadcsswd): Ditto.
9940         (sse5_pmadcswd): Ditto.
9941         (sse5_pcmov_<move>): Conditional move support on SSE5.
9942         (sse5_phaddbw): New SSE5 intrinsic insn.
9943         (sse5_phaddbd): Ditto.
9944         (sse5_phaddbq): Ditto.
9945         (sse5_phaddwd): Ditto.
9946         (sse5_phaddwq): Ditto.
9947         (sse5_phadddq): Ditto.
9948         (sse5_phaddubw): Ditto.
9949         (sse5_phaddubd): Ditto.
9950         (sse5_phaddubq): Ditto.
9951         (sse5_phadduwd): Ditto.
9952         (sse5_phadduwq): Ditto.
9953         (sse5_phaddudq): Ditto.
9954         (sse5_phsubbw): Ditto.
9955         (sse5_phsubwd): Ditto.
9956         (sse5_phsubdq): Ditto.
9957         (sse5_pperm): Ditto.
9958         (sse5_pperm_sign_v16qi_v8hi): New insns for pack/unpack with SSE5.
9959         (sse5_pperm_zero_v16qi_v8hi): Ditto.
9960         (sse5_pperm_sign_v8hi_v4si): Ditto.
9961         (sse5_pperm_zero_v8hi_v4si): Ditto.
9962         (sse5_pperm_sign_v4si_v2di): Ditto.
9963         (sse5_pperm_sign_v4si_v2di): Ditto.
9964         (sse5_pperm_pack_v2di_v4si): Ditto.
9965         (sse5_pperm_pack_v4si_v8hi): Ditto.
9966         (sse5_pperm_pack_v8hi_v16qi): Ditto.
9967         (sse5_perm<mode>): New SSE5 intrinsic insn.
9968         (rotl<mode>3): Ditto.
9969         (sse5_rotl<mode>3): Ditto.
9970         (sse5_ashl<mode>3): Ditto.
9971         (sse5_lshl<mode>3): Ditto.
9972         (sse5_frcz<mode>2): Ditto.
9973         (sse5s_frcz<mode>2): Ditto.
9974         (sse5_cvtph2ps): Ditto.
9975         (sse5_cvtps2ph): Ditto.
9976         (sse5_vmmaskcmp<mode>3): Ditto.
9977         (sse5_com_tf<mode>3): Ditto.
9978         (sse5_maskcmp<mode>3): Ditto.
9979         (sse5_maskcmp_uns<mode>3): Ditto.
9980         (sse5_maskcmp_uns2<mode>3): Ditto.
9981         (sse5_pcom_tf<mode>3): Ditto.
9982
9983         * config/i386/predicates.md (sse5_comparison_float_operator):
9984         New predicate to match the comparison operators supported by
9985         the SSE5 com instruction.
9986         (ix86_comparison_int_operator): New predicate to match just the
9987         signed int comparisons.
9988         (ix86_comparison_uns_operator): New predicate to match just the
9989         unsigned int comparisons.
9990
9991         * doc/invoke.texi (-msse5): Add documentation.
9992         (-mfused-madd): Ditto.
9993
9994         * doc/extend.texi (x86 intrinsics): Document new SSE5 intrinsics.
9995
9996         * config.gcc (i[34567]86-*-*): Include bmmintrin.h and
9997         mmintrin-common.h.
9998         (x86_64-*-*): Ditto.
9999
10000         * config/i386/cpuid.h (bit_SSE5): Define SSE5 bit.
10001
10002         * config/i386/bmmintrin.h: New file, provide common x86 compiler
10003         intrinisics for SSE5.
10004
10005         * config/i386/smmintrin.h: Move instructions shared with SSE5 to
10006         mmintrin-common.h.
10007
10008         * config/i386/mmintrin-common.h: New file, to contain common
10009         instructions between SSE4.1 and SSE5.
10010
10011         * config/i386/netware.c (gen_stdcall_or_fastcall_decoration): Use
10012         FOREACH_FUNCTION_ARGS to iterate over the argument list.
10013         (gen_regparm_prefix): Ditto.
10014
10015         * config/i386/winnt.c (gen_stdcall_or_fastcall_suffix): Use
10016         FOREACH_FUNCTION_ARGS to iterate over the argument list.  Use
10017         prototype_p to determine if a function is prototyped.
10018
10019 2009-08-25 Ville Voutilainen <ville.voutilainen@gmail.com>
10020
10021         * c-common.c (c_common_reswords) add the alignof keyword,
10022         with same RID as __alignof and __alignof__
10023
10024 2009-08-25  Anatoly Sokolov  <aesok@post.ru>
10025
10026         * hooks.h (hook_bool_const_int_const_int_true): Declare.
10027         * hooks.c (hook_bool_const_int_const_int_true): New function.
10028         * target.h (struct gcc_target): Add can_eliminate field.
10029         * target-def.h (TARGET_CAN_ELIMINATE): Define.
10030         (TARGET_INITIALIZER): Use TARGET_CAN_ELIMINATE.
10031         * ira.c (setup_eliminable_regset): Use can_eliminate target hook.
10032         * reload1.c (update_eliminables, init_elim_table): (Ditto.).
10033         (elim_table): Revise comment.
10034         * system.h (CAN_ELIMINATE): Poison.
10035         * defaults.h (CAN_ELIMINATE): Remove.
10036         * doc/tm.texi (CAN_ELIMINATE): Revise documentation.
10037
10038         * config/alpha/vms.h (CAN_ELIMINATE): Remove macro.
10039         * config/alpha/alpha.c (TARGET_CAN_ELIMINATE) [TARGET_ABI_OPEN_VMS]:
10040         Define macro.
10041         (alpha_vms_can_eliminate): Declare as static, change return type to
10042         bool.
10043         * config/alpha/alpha-protos.h (alpha_vms_can_eliminate): Remove.
10044
10045         * config/arm/arm.h (CAN_ELIMINATE): Remove macro.
10046         * config/arm/arm.c (TARGET_CAN_ELIMINATE): Define macro.
10047         (arm_can_eliminate): New function.
10048
10049         * config/avr/avr.h (CAN_ELIMINATE): Remove macro.
10050         * config/avr/avr.c (TARGET_CAN_ELIMINATE): Define macro.
10051         (avr_can_eliminate): Declare as static.
10052         * config/avr/avr-protos.h (avr_can_eliminate): Remove.
10053
10054         * config/bfin/bfin.h (CAN_ELIMINATE): Remove macro.
10055         * config/bfin/bfin.c (TARGET_CAN_ELIMINATE): Define macro.
10056         (bfin_can_eliminate): New function.
10057
10058         * config/crx/crx.h (CAN_ELIMINATE): Remove macro.
10059         * config/crx/crx.c (TARGET_CAN_ELIMINATE): Define macro.
10060         (crx_can_eliminate): New function.
10061
10062         * config/fr30/fr30.h (CAN_ELIMINATE): Remove macro.
10063         * config/fr30/fr30.c (TARGET_CAN_ELIMINATE): Define macro.
10064         (fr30_can_eliminate): New function.
10065
10066         * config/frv/frv.h (CAN_ELIMINATE): Remove macro.
10067         * config/frv/frv.c (TARGET_CAN_ELIMINATE): Define macro.
10068         (frv_can_eliminate): New function.
10069
10070         * config/h8300/h8300.h (CAN_ELIMINATE): Remove macro.
10071         * config/h8300/h8300.c (TARGET_CAN_ELIMINATE): Define macro.
10072         (h8300_can_eliminate): New function.
10073
10074         * config/i386/i386.h (CAN_ELIMINATE): Remove macro.
10075         * config/i386/i386.c (TARGET_CAN_ELIMINATE): Define macro.
10076         (i386_can_eliminate): Declare as static, change return type to bool.
10077         * config/i386/i386-protos.h (i386_can_eliminate): Remove.
10078
10079         * config/ia64/ia64.h (CAN_ELIMINATE): Remove macro.
10080         * config/ia64/ia64.c (TARGET_CAN_ELIMINATE): Define macro.
10081         (ia64_can_eliminate): New function.
10082
10083         * config/iq2000/iq2000.h (CAN_ELIMINATE): Remove macro.
10084         * config/iq2000/iq2000.c (TARGET_CAN_ELIMINATE): Define macro.
10085         (iq2000_can_eliminate): New function.
10086
10087         * config/m32r/m32r.h (CAN_ELIMINATE): Remove macro.
10088         * config/m32r/m32r.c (TARGET_CAN_ELIMINATE): Define macro.
10089         (m32r_can_eliminate): New function.
10090
10091         * config/m68hc11/m68hc11.h (CAN_ELIMINATE): Remove macro.
10092         * config/m68hc11/m68hc11.c (TARGET_CAN_ELIMINATE): Define macro.
10093         (m68hc11_can_eliminate): New function.
10094
10095         * config/m68k/m68k.h (CAN_ELIMINATE): Remove macro.
10096         * config/m68k/m68k.c (TARGET_CAN_ELIMINATE): Define macro.
10097         (m68k_can_eliminate): New function.
10098
10099         * config/mep/mep.h (CAN_ELIMINATE): Remove macro.
10100         * config/mep/mep.c (TARGET_CAN_ELIMINATE): Define macro.
10101         (mep_can_eliminate): New function.
10102
10103         * config/mips/mips.h (CAN_ELIMINATE): Remove macro.
10104         * config/mips/mips.c (TARGET_CAN_ELIMINATE): Define macro.
10105         (mips_can_eliminate): New function.
10106
10107         * config/rs6000/rs6000.h (CAN_ELIMINATE): Remove macro.
10108         * config/rs6000/rs6000.c (TARGET_CAN_ELIMINATE): Define macro.
10109         (rs6000_can_eliminate): New function.
10110
10111         * config/s390/s390.h (CAN_ELIMINATE): Remove macro.
10112         * config/s390/s390.c (TARGET_CAN_ELIMINATE): Define macro.
10113         (s390_can_eliminate): Declare as static.
10114         * config/s390/s390-protos.h (sparc_can_eliminate): Remove.
10115
10116         * config/score/score.h (CAN_ELIMINATE): Remove macro.
10117         * config/score/score.c (TARGET_CAN_ELIMINATE): Define macro.
10118         (score_can_eliminate): New function.
10119
10120         * config/sparc/sparc.h (CAN_ELIMINATE): Remove macro.
10121         * config/sparc/sparc.c (TARGET_CAN_ELIMINATE): Define macro.
10122         (sparc_can_eliminate): Declare as static.
10123         * config/sparc/sparc-protos.h (sparc_can_eliminate): Remove.
10124
10125         * config/stormy16/stormy16.h (CAN_ELIMINATE): Remove macro.
10126         * config/stormy16/stormy16.c (TARGET_CAN_ELIMINATE): Define macro.
10127         (xstormy16_can_eliminate): New function.
10128
10129         * config/v850/v850.h (CAN_ELIMINATE): Remove macro.
10130         * config/v850/v850.c (TARGET_CAN_ELIMINATE): Define macro.
10131         (v850_can_eliminate): New function.
10132
10133 2009-08-25  Uros Bizjak  <ubizjak@gmail.com>
10134
10135         * config/alpha/alpha.md (*cmpdf_ieee_ext[123]): Remove.
10136         (*cmpdf_internal): Enable for all ALPHA_FPTM levels.
10137         (*movdfcc_ext[1234]): Disable for IEEE mode.
10138
10139 2009-08-25  Eric Botcazou  <ebotcazou@adacore.com>
10140
10141         * gimplify.c (prepare_gimple_addressable): New static function.
10142         (gimplify_modify_expr_to_memcpy): Invoke it on the RHS before marking
10143         it addressable.
10144         (gimplify_addr_expr): Invoke it similarly on the operand instead of
10145         manually fiddling with it.
10146
10147 2009-08-25  Michael Matz  <matz@suse.de>
10148
10149         * expr.h (jumpifnot_1, jumpif_1, do_jump_1): Declare.
10150         * dojump.c (do_jump_by_parts_greater): Take two operands instead of
10151         full expression.
10152         (do_jump_by_parts_equality, do_compare_and_jump): Ditto.
10153         (jumpifnot_1, jumpif_1): New wrappers for do_jump_1.
10154         (do_jump): Split out code for simple binary comparisons into ...
10155         (do_jump_1): ... this, taking the individual operands and code.
10156         Change callers to helper function above accordingly.
10157         * expr.c (expand_expr_real_1): Use jumpifnot_1 for simple binary
10158         comparisons.
10159
10160 2009-08-25  Michael Matz  <matz@suse.de>
10161
10162         * expr.h (struct separate_ops, sepops): New type for passing
10163         around an exploded simple expression.
10164         * optabs.c (expand_widen_pattern_expr, expand_vec_shift_expr):
10165         Use this structure instead of expression tree.
10166         (get_vcond_icode, expand_vec_cond_expr_p): Don't take whole
10167         expression, only its type.
10168         (expand_vec_cond_expr): Take type and individual operands instead
10169         of full expression.
10170         * optabs.h (expand_widen_pattern_expr, expand_vec_cond_expr,
10171         expand_vec_shift_expr): Change prototype accordingly.
10172         * tree-vect-stmts.c (vectorizable_condition): Change call of
10173         expand_vec_cond_expr_p to pass only type.
10174         * expr.c (do_store_flags): Change prototype and implementation
10175         to take an exploded expression.
10176         (expand_expr_real_1): New local ops initialized with details
10177         of the full expression.  Use it instead of full
10178         expression in calls to do_store_flags, expand_vec_cond_expr,
10179         expand_widen_pattern_expr and expand_vec_shift_expr.
10180
10181 2009-08-25  Michael Matz  <matz@suse.de>
10182
10183         * expr.c (expand_expr_real_1): New local treeop0, treeop1,
10184         treeop2 initialized with first three operands of the full expression.
10185         Substitute all TREE_OPERAND (exp, [012]) calls with them.
10186
10187 2009-08-25  Kai Tietz  <kai.tietz@onevision.com>
10188
10189         * gcc/gthr-win32.h (__UNUSED_PARAM): Define, if not already present.
10190         (__gthread_objc_condition_allocate): Mark arguments as unused.
10191         (__gthread_objc_condition_deallocate): Likewise.
10192         (__gthread_objc_condition_wait): Likewise.
10193         (__gthread_objc_condition_broadcast): Likewise.
10194         (__gthread_objc_condition_signal): Likewise.
10195         (__gthread_objc_thread_detach): Cast via INT_PTR to pointer.
10196         (__gthread_objc_thread_id): Likewise.
10197
10198 2009-08-25  Janus Weil  <janus@gcc.gnu.org>
10199
10200         PR middle-end/41149
10201         * tree-pretty-print.c (print_call_name): Print the correct call name
10202         for procedure pointer components.
10203
10204 2009-08-24  Steve Ellcey  <sje@cup.hp.com>
10205
10206         * config/ia64/ia64.c (ia64_promote_function_mode): Call
10207         default_promote_function_mode when not VMS.
10208
10209 2009-08-24  Olivier Hainque  <hainque@adacore.com>
10210
10211         * convert.c (convert_to_integer): Don't assume an input pointer is
10212         POINTER_SIZE wide.  Fetch from the type instead.
10213
10214 2009-08-24  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
10215
10216         * configure.ac (AC_PREREQ): Bump to 2.64.
10217
10218 2009-08-24  Rafael Avila de Espindola  <espindola@google.com>
10219
10220         * gcc.c (standard_exec_prefix_1,standard_exec_prefix_2): Remove.
10221         (process_command): Don't search standard_exec_prefix_1 and
10222         standard_exec_prefix_2.
10223
10224 2009-08-24  Ramana Radhakrishnan  <ramana.radhakrishnan@arm.com>
10225
10226         * config/arm/arm.c (output_return_instruction): Handle for
10227         unified syntax.
10228
10229 2009-08-24  Ramana Radhakrishnan  <ramana.radhakrishnan@arm.com>
10230
10231         * config/arm/arm.c (arm_select_cc_mode): Handle subreg.
10232
10233 2009-08-24  Ramana Radhakrishnan  <ramana.radhakrishnan@arm.com>
10234
10235         * config/arm/vfp.md (*arm_movdi_vfp): Mark as predicable.
10236         (*arm_movdf_vfp): Likewise.
10237
10238 2009-08-24  Ramana Radhakrishnan  <ramana.radhakrishnan@arm.com>
10239
10240         * config/arm/neon.md (vashl<mode>3): Rename from ashl<mode>3.
10241         (vashr<mode>3): Rename from ashr<mode>3.
10242         (vlshr<mode>3): Rename from lshr<mode>3.
10243
10244 2009-08-24  Kai Tietz  <kai.tietz@onevision.com>
10245
10246         PR/40786
10247         * c-format.c (format_wanted_type): Add new member scalar_identity_flag.
10248         (check_format_info_main): Use scalar_identify_flag.
10249         (check_format_types): Check for scalar size identity if
10250         scalar_identify_flag is set.
10251         (printf_length_specs): Extend by new field.
10252         (asm_fprintf_length_specs): Likewise.
10253         (gcc_diag_length_specs): Likewise.
10254         (scanf_length_specs): Likewise.
10255         (strfmon_length_specs): Likewise.
10256         (gcc_gfc_length_specs): Likewise.
10257         * config/i386/msformat-c.c (ms_printf_length_specs): Likewise.
10258         (ms_printf_flag_specs): Likewise.
10259         * c-format.h (format_length_info): Add new member scalar_identity_flag.
10260
10261 2009-08-23  Uros Bizjak  <ubizjak@gmail.com>
10262
10263         PR target/40718
10264         * config/i386/i386.c (*call_pop_1): Disable for sibling calls.
10265         (*call_value_pop_1): Ditto.
10266         (*sibcall_pop_1): New insn pattern.
10267         (*sibcall_value_pop_1): Ditto.
10268
10269 2009-08-23  Alan Modra  <amodra@bigpond.net.au>
10270
10271         PR target/41081
10272         * config/rs6000/rs6000.md (rotlsi3_64, ashlsi3_64, lshrsi3_64,
10273         ashrsi3_64): New.
10274
10275 2009-08-23  Alan Modra  <amodra@bigpond.net.au>
10276
10277         PR target/41081
10278         * fwprop.c (try_fwprop_subst): Allow multiple sets.
10279         (get_reg_use_in): New function.
10280         (forward_propagate_subreg): Propagate through subreg of zero_extend
10281         or sign_extend.
10282
10283 2009-08-22  Kaz Kojima  <kkojima@gcc.gnu.org>
10284
10285         * config/sh/t-sh (TARGET_LIBGCC2_CFLAGS): Define.
10286         * config/sh/t-netbsd (TARGET_LIBGCC2_CFLAGS): Add -mieee.
10287
10288 2009-08-22  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
10289
10290         * configure.ac: Remove --with-datarootdir, --with-docdir,
10291         --with-htmldir switches.  No need to call AC_SUBST for
10292         datarootdir, docdir, htmldir any more.
10293         * configure: Regenerate.
10294         * doc/install.texi (Configuration): Document --datarootdir,
10295         --docdir, --htmldir, --pdfdir; update documentation for
10296         --infodir, --mandir.
10297         (Prerequisites): Bump Autoconf version to 2.64, Automake to 1.11,
10298         M4 to 1.4.6.
10299
10300         * aclocal.m4: Regenerate.
10301         * config.in: Regenerate.
10302         * configure: Regenerate.
10303
10304 2009-08-21  Douglas B Rupp  <rupp@gnat.com>
10305             Olivier Hainque  <hainque@adacore.com>
10306
10307         * config/ia64/ia64.c: Include libfuncs.h.
10308         (TARGET_PROMOTE_FUNCITON_MODE): Define target macro.
10309         (ia64_expand_call): Use reg 25 on VMS.
10310         (ia64_initialize_trampoline): Fix for VMS ABI.
10311         (ia64_function_arg_offset): Always returns 0 when TARGET_ABI_OPEN_VMS.
10312         (ia64_function_arg): Initialize reg 25 on VMS.
10313         Fix OpenVMS ABI issues for varargs.
10314         For OpenVMS, emit the Argument Information register set in the
10315         incoming/sibcall case as well.
10316         (ia64_arg_type): New function.
10317         (ia64_function_arg_advance): Keep track of cum->words.
10318         Fix OpenVMS ABI issues for varargs.
10319         (ia64_function_value): On VMS, promote mode of non-aggregate types.
10320         (ia64_override_options): Set flag_no_common on VMS.
10321         (ia64_init_builtins): Disable FWRITE builtin.
10322         (ia64_asm_output_external): Call DO_CRTL_NAMES.
10323         (ia64_vms_init_libfuncs): Add decc$ routines.
10324         (ia64_vms_valid_pointer_mode): New function.
10325         (ia64_struct_value_rtx): Allways NULL_RTX on VMS.
10326         (ia64_promote_function_mode): New function
10327         * config/ia64/ia64.h (TARGET_ABI_OPEN_VMS): Define as 0 for default.
10328         (LONG_DOUBLE_TYPE_SIZE): Force to 64 on VMS.
10329         (LIBCGC2_LONG_DOUBLE_TYPE_SIZE): Likewise.
10330         (INIT_CUMULATIVE_ARGS): Add atypes for VMS.
10331         (INIT_CUMULATIVE_INCOMING_ARGS): Likewise.
10332         (ASM_OUTPUT_DEF): Use ISDIGIT instead of isdigit.
10333         Suppress trailing '#' if VALUE is numeric.
10334         * config/ia64/vms.h (PROMOTE_FUNCTION_MODE): Remove, code moved to
10335         ia64_promote_function_mode.
10336         (TARGET_VALID_POINTER_MODE): Define.
10337
10338 2009-08-21  Michael Meissner  <meissner@linux.vnet.ibm.com>
10339
10340         PR target/40671
10341         * config/rs6000/rs6000.c (rs6000_override_options): Use
10342         TARGET_64BIT instead of TARGET_POWERPC64 to set the size of pointers.
10343
10344         PR target/41145
10345         * config/rs6000/rs6000.c (rs6000_handle_altivec_attribute): Fix
10346         reporting of vector + decimal/boolean/complex error.
10347
10348 2009-08-21  Jakub Jelinek  <jakub@redhat.com>
10349
10350         * config/rs6000/rs6000.c (rs6000_init_builtins): Fix type of
10351         __vector double TYPE_DECL.
10352
10353 2009-08-21  Richard Earnshaw  <rearnsha@arm.com>
10354
10355         * arm.h (MACHMODE): New define.  Include insn-modes.h if available.
10356         (CUMULATIVE_ARGS): Use MACHMODE for declaration of aapcs_vfp_mode.
10357         * arm.c (aapcs_vfp_is_call_or_return_candidate): Change base_mode
10358         to pointer to enum machine_mode.  Update all callers as needed.
10359
10360 2009-08-21  Uros Bizjak  <ubizjak@gmail.com>
10361
10362         * config/alpha/alpha.md (exception_receiver): Emit alternative
10363         GP load sequence if flag_reorder_blocks_and_partition is set.
10364         (*exception_receiver_2): Also enable when
10365         flag_reorder_blocks_and_partition is set.
10366
10367 2009-08-20  Matt Rice  <ratmice@gmail.com>
10368             Diego Novillo  <dnovillo@google.com>
10369
10370         * Makefile.in (PLUGIN_HEADERS): Include incpath.h and
10371         tree-ssa-sccvn.h.
10372
10373 2009-08-20  Richard Guenther  <rguenther@suse.de>
10374
10375         * c-objc-common.h (LANG_HOOKS_DUP_LANG_SPECIFIC_DECL): Do not define.
10376         * c-tree.h (c_dup_lang_specific_decl): Remove.
10377         (struct lang_decl, struct lang_type): Move definitions ...
10378         * c-lang.h: ... here.  New file.
10379         * c-decl.c: Include c-lang.h.
10380         (c_dup_lang_specific_decl): Remove.
10381         * c-typeck.c: Include c-lang.h.
10382         * Makefile.in (c-decl.o): Add c-lang.h dependency.
10383         (c-typeck.o): Likewise.
10384         * c-config-lang.in (gtfiles): Add c-lang.h.
10385         * gengtype.c (get_output_file_with_visibility): Handle c-lang.h
10386         like c-tree.h.
10387
10388 2009-08-20  Uros Bizjak  <ubizjak@gmail.com>
10389
10390         * config/alpha/alpha.c (alpha_end_function): Do not clear
10391         crtl->emit structure and free insn locators if cfun->is_thunk is true,
10392         this is now handled in generic code.
10393
10394 2009-08-20  Andreas Krebbel  <krebbel1@de.ibm.com>
10395
10396         * config/s390/s390.c (Z10_PREDICT_DISTANCE): New macro.
10397         (s390_z10_fix_long_loop_prediction): New function.
10398         (s390_z10_optimize_cmp): INSN walk moved to callee - s390_reorg.
10399         (s390_reorg): Walk over the INSNs and invoke
10400         s390_z10_fix_long_loop_prediction and s390_z10_optimize_cmp.
10401
10402 2009-08-20  Andreas Krebbel  <krebbel1@de.ibm.com>
10403
10404         * config/s390/s390.md ("*brx_stage1_<GPR:mode>", "*brxg_64bit",
10405         "*brx_64bit", "*brx_31bit"): New patterns.
10406         * config/s390/s390.c ('E'): New output modifier.
10407
10408 2009-08-20  Ramana Radhakrishnan  <ramana.radhakrishnan@arm.com>
10409             Richard Earnshaw  <richard.earnshaw@arm.com>
10410
10411         * config/arm/arm.c (arm_emit_movpair): Handle CONST_INT.
10412         * config/arm/arm.md (*arm_movtas_ze): New pattern for movt.
10413
10414 2009-08-19  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
10415
10416         * pa.md (reload_inhi, reload_outhi, reload_inqi, reload_outqi): New
10417         patterns.
10418         * pa.c (emit_move_sequence): Check if address of operand1 is valid
10419         for mode mode of operand0 when doing secondary reload for SAR.
10420
10421 2009-08-19  Jakub Jelinek  <jakub@redhat.com>
10422
10423         PR middle-end/41123
10424         * expr.c (expand_expr_real_1) <normal_inner_ref>: Handle all kinds
10425         of CONCAT, not just bitpos 0 bitsize size of the whole CONCAT.
10426
10427 2009-08-19  Jason Merrill  <jason@redhat.com>
10428
10429         * doc/invoke.texi (C++ Dialect Options): Note change of minimum
10430         supported template depth in C++0x.
10431
10432 2009-08-19  Jakub Jelinek  <jakub@redhat.com>
10433
10434         * config/rs6000/rs6000.c (rs6000_output_mi_thunk): Don't call
10435         free_after_compilation.
10436         * config/score/score7.c (score7_output_mi_thunk): Likewise.
10437         * config/score/score3.c (score3_output_mi_thunk): Likewise.
10438         * config/ia64/ia64.c (ia64_output_mi_thunk): Likewise.
10439         * config/mips/mips.c (mips_output_mi_thunk): Likewise.
10440         * config/sh/sh.c (sh_output_mi_thunk): Likewise.
10441         * config/m68k/m68k.c (m68k_output_mi_thunk): Likewise.
10442         * config/sparc/sparc.c (sparc_output_mi_thunk): Likewise.
10443
10444 2009-08-19  Ian Lance Taylor  <iant@google.com>
10445
10446         * doc/md.texi (Insn Canonicalizations): Correct canonicalization
10447         of (plus (mult (neg B) C) A).
10448
10449 2009-08-18  Michael Matz  <matz@suse.de>
10450
10451         * omp-low.c (optimize_omp_library_calls): Use types_compatible_p
10452         instead of comparing TYPE_MAIN_VARIANT for equality.
10453         * tree-vect-patterns.c (vect_recog_dot_prod_pattern,
10454         vect_recog_widen_mult_pattern, vect_recog_widen_sum_pattern): Ditto.
10455         * tree-vect-loop.c (vect_is_simple_reduction): Ditto.
10456         * gimplify.c (goa_lhs_expr_p): Ditto and use
10457         STRIP_USELESS_TYPE_CONVERSION.
10458
10459 2009-08-18  Michael Matz  <matz@suse.de>
10460
10461         * tree-ssa-structalias.c (create_variable_info_for): Also mark
10462         first field in a struct.
10463         (intra_create_variable_infos): Don't deal with flag_argument_noalias.
10464
10465 2009-08-18  Uros Bizjak  <ubizjak@gmail.com>
10466
10467         * config/alpha/alpha.c (alpha_output_mi_thunk_osf): Allocate insn
10468         locators before emit_insn is called.  Remove assert that
10469         cfun->is_thunk.
10470         (alpha_end_function): Clear crtl->emit structure and free insn
10471         locators if cfun->is_thunk is true.
10472
10473 2009-08-18  Jason Merrill  <jason@redhat.com>
10474
10475         * config/elfos.h (ASM_DECLARE_OBJECT_NAME): Use gnu_unique_object
10476         type if available.
10477         * configure.ac: Test for it.
10478         * configure, config.in: Regenerate.
10479         * doc/install.texi: Document --enable-gnu-unique-object.
10480
10481 2009-08-18  Richard Guenther  <rguenther@suse.de>
10482
10483         PR middle-end/41094
10484         * builtins.c (fold_builtin_pow): Fold pow(pow(x,y),z) to
10485         pow(x,y*z) only if x is nonnegative.
10486
10487 2009-08-18  Jakub Jelinek  <jakub@redhat.com>
10488
10489         * bb-reorder.c (fix_up_fall_thru_edges): Only call invert_jump
10490         on jumps.
10491
10492         PR target/40971
10493         * config/rs6000/rs6000.c (rs6000_legitimize_address): For
10494         [DT][FDI]mode ensure the offset isn't 4/8/12 bytes below 0x8000.
10495
10496 2009-08-17  DJ Delorie  <dj@redhat.com>
10497
10498         * config/m32c/m32c.md (UNS_FSETB, UNS_FREIT): New.
10499         * config/m32c/prologue.md (epilogue_freit): New.
10500         (fset_b): New.
10501         * config/m32c/m32c.c (m32c_function_needs_enter): Add prototype.
10502         (bank_switch_p): Likewise.
10503         (fast_interrupt_p): Likewise.
10504         (interrupt_p): Likewise.
10505         (m32c_conditional_register_usage): Round memregs size up.
10506         (need_to_save): We only need to save $a0 when we use ENTER.
10507         (interrupt_p): Check for fast_interrupt too.
10508         (bank_switch_p): New.
10509         (fast_interrupt_p): New.
10510         (m32c_attribute_table): Add bank_switch and fast_interrupt.
10511         (m32c_emit_prolog): Support bank switching and fast interrupts.
10512         * doc/extend.texi (Function Attributes): Add bank_switch and
10513         fast_interrupt.
10514
10515 2009-08-17  Douglas B Rupp  <rupp@gnat.com>
10516
10517         * config/alpha/alpha.c (vms_valid_pointer_mode): New function.
10518         * config/alpha/vms.h (TARGET_VALID_POINTER_MODE): Define.
10519
10520 2009-08-16  Douglas B Rupp  <rupp@gnat.com>
10521
10522         * doc/invoke.texi (Target options): Add new option list for IA-64/VMS.
10523         (menu): Add IA-64/VMS Options.
10524         (IA-64/VMS Options): Likewise.
10525
10526 2009-08-16  Richard Sandiford  <rdsandiford@googlemail.com>
10527
10528         PR target/38599
10529         * config/mips/mips.md (*lwxs): Use :P for pointer values.
10530
10531 2009-08-16  Richard Sandiford  <rdsandiford@googlemail.com>
10532
10533         * config/mips/mips-protos.h (mips_push_asm_switch): New function.
10534         (mips_pop_asm_switch): Likewise.
10535         * config/mips/mips.c (set_noreorder, set_nomacro, set_noat): Replace
10536         with...
10537         (mips_noreorder, mips_nomacro, mips_noat): ...these new variables.
10538         (mips_push_asm_switch_1, mips_pop_asm_switch_1): New functions.
10539         (mips_push_asm_switch, mips_pop_asm_switch): Likewise.
10540         (mips_print_operand_punctuation): Use them.  Check mips_noreorder
10541         instead of set_noreorder.
10542         (mips_output_function_prologue): Use the new functions.
10543         (mips_output_function_epilogue): Likewise.
10544         (mips_need_noat_wrapper_p): New function, split out from...
10545         (mips_final_prescan_insn, mips_final_postscan_insn): ...here.
10546         Use mips_push_asm_switch and mips_pop_asm_switch.
10547         * config/mips/mips.h (FUNCTION_PROFILER): Use mips_push_asm_switch
10548         and mips_pop_asm_switch.
10549         (ASM_OUTPUT_REG_POP): Likewise.
10550         (DBR_OUTPUT_SEQEND): Remove boilerplate comment.
10551         Use mips_pop_asm_switch.
10552         (mips_asm_switch): New structure.
10553         (set_noreorder, set_nomacro): Replace with...
10554         (mips_noreorder, mips_nomacro, mips_noat): ...these new variables.
10555         * config/mips/mips.md (fix_truncdfsi2_macro): Use mips_nomacro
10556         instead of set_nomacro.
10557         (fix_truncsfsi2_macro): Likewise.
10558         (cprestore): Likewise.
10559         (hazard): Use mips_noreorder instead of set_noreorder.
10560         * config/mips/sdemtk.h (FUNCTION_PROFILER): As for mips.h.
10561
10562 2009-08-16  Uros Bizjak  <ubizjak@gmail.com>
10563
10564         * config/alpha/alpha.c (alpha_end_function): Handle NULL_RTX returned
10565         from prev_active_insn.
10566
10567 2009-08-16  Anatoly Sokolov  <aesok@post.ru>
10568
10569         * config/avr/avr.h (AVR_HAVE_8BIT_SP): New macros.
10570         * config/avr/avr.c (avr_override_options): Initialize
10571         avr_current_arch variable.
10572         (avr_cpu_cpp_builtins): Define __AVR_HAVE_8BIT_SP__ or
10573         __AVR_HAVE_16BIT_SP__ according to the device type.
10574         (expand_prologue, output_movhi): Use AVR_HAVE_8BIT_SP instead of
10575         TARGET_TINY_STACK.
10576         (expand_epilogue): Use correct QI mode frame pointer for tiny stack.
10577         Use AVR_HAVE_8BIT_SP instead of TARGET_TINY_STACK.
10578
10579 2009-08-16  Dodji Seketeli  <dodji@redhat.com>
10580
10581         PR debug/37801
10582         * gcc/dwarf2out.c (gen_inlined_subroutine_die): Concentrate on
10583         generating inlined subroutine die only. We shouldn't be
10584         called for anything else.
10585         (gen_block_die): Don't generate inline subroutine debug info for
10586         abstract blocks.
10587
10588 2009-08-15  Sebastian Pop  <sebastian.pop@amd.com>
10589
10590         * graphite-poly.c (print_pbb): Print PBB index.
10591
10592 2009-08-15  Sebastian Pop  <sebastian.pop@amd.com>
10593
10594         PR middle-end/40981
10595         * graphite-interchange.c (ppl_max_for_le): Moved...
10596         * graphite-poly.c (pbb_number_of_iterations): Call ppl_max_for_le.
10597         * graphite-ppl.c (ppl_max_for_le): ... here.  Correct the use of
10598         ppl_Pointset_Powerset_C_Polyhedron_maximize.
10599         * graphite-ppl.h (ppl_max_for_le): Declared.
10600
10601 2009-08-14  Olatunji Ruwase <tjruwase@google.com>
10602
10603         * doc/extend.texi (Symbol-Renaming Pragmas): redefine_extname is
10604         supported on all platforms.
10605         * target.h (struct gcc_target): Remove handle_pragma_redefine_extname.
10606         * c-cppbuiltin.c: Remove use of targetm.handle_pragma_redefine_extname.
10607         * c-pragma.c: Likewise.
10608         * target-def.h (TARGET_INITIALIZER): Remove
10609         TARGET_HANDLE_PRAGMA_REDEFINE_EXTNAME.
10610         * config/sol2.h: Remove use of TARGET_HANDLE_PRAGMA_REDEFINE_EXTNAME.
10611
10612 2009-08-14  Douglas B Rupp  <rupp@gnat.com>
10613
10614         * config/ia64/fde-vms.c: New file.
10615         * config/ia64/fde-glibc.c (_Unwind_FindTableEntry): Add dummy arg.
10616         * config/ia64/unwind-ia64.c (UNW_ accessors): Move to unwind-ia64.h
10617         (MD_UNW_COMPATIBLE_PERSONALITY_P): Provide default.
10618         (uw_frame_state_for): Only register a personality routine if it is
10619         known to be compatible with our expectations.
10620         (_Unwind_FindEnclosingFunction, uw_frame_state_for):
10621         Declare unw_table_entry stack variable and
10622         mod all calls to _Unwind_FindTableEntry to add arg.
10623         * config/ia64/unwind-ia64.h (UNW_ accessors): Move here.
10624         (_Unwind_FindTableEntry): Add arg to prototype.
10625
10626 2009-08-14  Eric Botcazou  <ebotcazou@adacore.com>
10627
10628         * config/ia64/unwind-ia64.c (struct _Unwind_Context): Add new
10629         field 'signal_pfs_loc'.
10630         (uw_frame_state_for): Remove duplicate code dealing with leaf
10631         procedures without unwind info.
10632         If in the frame after unwinding through a signal handler, restore
10633         the AR.PFS register instead of the CFM if AR.PFS has not been saved.
10634         * config/ia64/linux-unwind.h (ia64_fallback_frame_state): Do not set
10635         'pfs_loc' to the AR.PFS location in the signal context; instead
10636         set 'signal_pfs_loc'.
10637         Manually generate the unwind info for the AR.PFS register.
10638         (ABI_MARKER_OLD_LINUX_SIGTRAMP, ABI_MARKER_OLD_LINUX_INTERRUPT,
10639         ABI_MARKER_LINUX_SIGTRAMP, ABI_MARKER_LINUX_INTERRUPT): Define.
10640         (ia64_handle_unwabi): Test 'fs->unwabi' against them.
10641         Do not set 'pfs_loc' to the AR.PFS location in the signal context;
10642         instead set 'signal_pfs_loc'.
10643         Remove code preventing the AR.PFS register from being restored
10644         from the signal context.
10645
10646 2009-08-14  Douglas B Rupp  <rupp@gnat.com>
10647             Tristan Gingold  <gingold@adacore.com>
10648
10649         * config.gcc (ia64-hp-*vms*): Insert ia64/t-ia64 in tmake_file.
10650         * config/ia64/t-vms: New file.
10651         * config/ia64/vms64.h: New file.
10652         * config/ia64/vms.h: New file.
10653         * config/ia64/vms-crtinit.asm: New file.
10654         * config/ia64/vms_symvec_libgcc_s.opt: New file.
10655         * config/ia64/vms-unwind.h: New file.
10656
10657 2009-08-14  Uros Bizjak  <ubizjak@gmail.com>
10658
10659         * config/alpha/alpha.c (alpha_emit_conditional_move): Handle
10660         TFmode compares.
10661
10662 2009-08-14  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
10663
10664         PR middle-end/30789
10665         * builtins.c (do_mpc_arg2): Make extern, define for any MPC version.
10666         Move declaration...
10667         * real.h (do_mpc_arg2): ... here.
10668         * fold-const.c (const_binop): Use MPC for complex MULT_EXPR
10669         and RDIV_EXPR.
10670
10671 2009-08-14  Rafael Avila de Espindola  <espindola@google.com>
10672
10673         * final.c (add_debug_prefix_map): Don't use GC memory for
10674         old_prefix and new_prefix.
10675
10676 2009-08-14  Richard Guenther  <rguenther@suse.de>
10677
10678         * ipa-prop.c (compute_complex_pass_through): If we cannot
10679         compute a non-varying offset for IPA_JF_ANCESTOR punt.
10680
10681 2009-08-14  Ulrich Weigand  <Ulrich.Weigand@de.ibm.com>
10682
10683         * c-lex.c (c_lex_with_flags): Increase size of local variable
10684         to avoid memory clobber.
10685
10686 2009-08-14  Paolo Bonzini  <bonzini@gnu.org>
10687
10688         PR target/40934
10689         * config/i386/i386.c (ix86_fp_comparison_strategy):
10690         Only enable/disable sahf at function granularity.
10691
10692 2009-08-14  Hans-Peter Nilsson  <hp@axis.com>
10693
10694         PR rtl-optimization/41064
10695         * reload1.c (reload_as_needed): Don't call extract_insn
10696         for known invalid replacements after calling
10697         validate_replace_rtx_group and verify_changes.
10698
10699 2009-08-14  Uros Bizjak  <ubizjak@gmail.com>
10700
10701         PR target/41019
10702         * config/i386/sse.md (SSEMODE124C8): New mode iterator.
10703         (vcond<SSEMODEF2P:mode>): Assert that operation is supported by
10704         ix86_expand_fp_vcond.
10705         (vcond<SSEMODE124C8:mode>): Use SSEMODE124C8 instead of SSEMODE124.
10706         Assert that operation is supported by ix86_expand_int_vcond.
10707         (vcondu<SSEMODE124C8:mode>): Ditto.
10708
10709 2009-08-13  DJ Delorie  <dj@redhat.com>
10710
10711         * config/i386/djgpp-stdint.h: New.
10712         * config.gcc (djgpp): Use it.
10713
10714 2009-08-13  Kaz Kojima  <kkojima@gcc.gnu.org>
10715
10716         * config/sh/sh.c (sh_override_options): When flag_exceptions or
10717         flag_unwind_tables is on, turn flag_reorder_blocks_and_partition off.
10718
10719 2009-08-13  Ghassan Shobaki  <ghassan.shobaki@amd.com>
10720
10721         * tree-ssa-loop-prefetch.c
10722         (prune_ref_by_group_reuse): Enhance probabilistic analysis
10723         for long-stride pruning.
10724         (compute_miss_rate): New function to compute the probability
10725         that two memory references access different cache lines.
10726
10727 2009-08-13  Dave Korn  <dave.korn.cygwin@gmail.com>
10728
10729         * gcc/config/i386/cygwin.h (LINK_SPEC): Add --enable-auto-image-base.
10730
10731 2009-08-13  Richard Guenther  <rguenther@suse.de>
10732
10733         PR middle-end/41047
10734         * tree-ssa-ccp.c (ccp_fold): When folding pointer additions
10735         use the constant pointer type.
10736         * gimplify.c (canonicalize_addr_expr): Canonicalize independent
10737         of CV qualifiers on the target pointer type.
10738         * tree-ssa.c (useless_type_conversion_p): Move incomplete pointer
10739         conversion check before restrict check.
10740
10741 2009-08-12  Kaz Kojima  <kkojima@gcc.gnu.org>
10742
10743         PR target/41029
10744         * config/sh/sh.md (reload_outdf__RnFRm+4): Fix thinko.
10745
10746 2009-08-12  Kaz Kojima  <kkojima@gcc.gnu.org>
10747
10748         * config/sh/sh.c (sh_promote_function_mode): Add ATTRIBUTE_UNUSED.
10749
10750 2009-08-12  Richard Guenther  <rguenther@suse.de>
10751
10752         PR tree-optimization/41011
10753         * ipa-cp.c (ipcp_lattice_from_jfunc): Deal with failing fold
10754         and reference constructing.
10755
10756 2009-08-12  Xinliang David Li  <davidxl@google.com>
10757
10758         PR tree-optimization/41012
10759         * tree-flow.h : New external interface.
10760         * gimple-low.c (check_call_arg): Change to public function.
10761         Remove argument mismatch check in lowering.
10762         * tree-inline.h (tree_can_inline_p): Interface change.
10763         * tree-inline.c (tree_can_inline_p): Fold argument mismatch check
10764         into this function.
10765         * ipa-inline.c (cgraph_decide_inlining_of_small_functions):
10766         Call change to tree_can_inline_p function.
10767         (cgraph_decide_inlining_incrementally): Ditto.
10768
10769 2009-08-12  Richard Sandiford  <rdsandiford@googlemail.com>
10770
10771         PR tree-optimization/41031
10772         * tree-outof-ssa.c (insert_value_copy_on_edge): Use promote_decl_mode
10773         on the partition variable rather than promote_mode on the source
10774         type.  Assert that the partition variable's type has the same
10775         mode as the source value's.
10776
10777 2009-08-12  Paolo Bonzini  <bonzini@gnu.org>
10778
10779         * doc/tm.texi (TARGET_PROMOTE_FUNCTION_MODE): Add documentation
10780         for for_return == 2.
10781         * function.c (assign_parm_setup_reg): Use for_return == 2, improve
10782         comments.
10783         * calls.c (expand_call): Fix typo.
10784         * explow.c (promote_decl_mode): Use for_return == 2 for RESULT_DECL
10785         and PARM_DECL.
10786         * stmt.c (expand_value_return): Use promote_function_mode to copy out
10787         of pseudo.
10788         * targhooks.c (default_promote_function_mode): Handle for_return == 2.
10789         * config/cris/cris.c (cris_promote_function_mode): Likewise.
10790         * config/mmix/mmix.c (mmix_promote_function_mode): Likewise.
10791         * config/pa/pa.c (pa_promote_function_mode): Likewise.
10792
10793 2009-08-12  Andrew Haley  <aph@redhat.com>
10794
10795         * config/arm/arm.c (arm_init_libfuncs): Add __sync_synchronize.
10796
10797 2009-08-12  Sebastian Pop  <sebastian.pop@amd.com>
10798
10799         PR bootstrap/40103
10800         * graphite.c: Remove pragma GCC diagnostic warning "-Wc++-compat".
10801
10802 2009-08-12  Richard Guenther  <rguenther@suse.de>
10803
10804         * alias.c (get_alias_set): Honor TYPE_STRUCTURAL_EQUALITY_P.
10805         * gimplify.c (gimplify_modify_expr): Do not use
10806         lang_hooks.types_compatible_p.
10807         * tree-ssa.c (useless_type_conversion_p): For aggregates
10808         just return false if the canonical types differ.
10809
10810 2009-08-12  Sebastian Pop  <sebastian.pop@amd.com>
10811
10812         PR middle-end/40980
10813         * sese.c (convert_for_phi_arg): New.
10814         (add_guard_exit_phis): Use convert_for_phi_arg.
10815
10816 2009-08-12  Sebastian Pop  <sebastian.pop@amd.com>
10817
10818         * graphite-sese-to-poly.c (pdr_add_data_dimensions): Dont add
10819         unknown subscript upper bounds.
10820
10821 2009-08-12  Sebastian Pop  <sebastian.pop@amd.com>
10822             Pranav Garg  <pranav.garg2107@gmail.com>
10823
10824         * graphite-interchange.c (gather_access_strides): Removed.
10825         (ppl_max_for_le): New.
10826         (build_linearized_memory_access): New.
10827         (memory_stride_in_loop): New.
10828         (pbb_interchange_profitable_p): Reimplemented.
10829         * graphite-ppl.h (ppl_new_id_map): New.
10830         (ppl_interchange): New.
10831
10832 2009-08-12  Sebastian Pop  <sebastian.pop@amd.com>
10833
10834         * graphite-interchange.c (compute_subscript): Removed.
10835         (compute_array_size_cstr): Removed.
10836         (compute_array_size_poly): Removed.
10837         (compute_array_size): Removed.
10838         (gather_access_strides_poly): Removed.
10839         (gather_access_strides): Empty.
10840
10841 2009-08-12  Sebastian Pop  <sebastian.pop@amd.com>
10842
10843         * graphite-dependences.c (dependence_polyhedron_1): Replace
10844         pdr_nb_subscripts with PDR_NB_SUBSCRIPTS.
10845         (graphite_legal_transform_dr): Same.
10846         (graphite_carried_dependence_level_k): Same.
10847         * graphite-poly.c (new_poly_dr): Add a parameter nb_subscripts.
10848         Initialize PDR_NB_SUBSCRIPTS.
10849         (print_pdr_access_layout): Replace pdr_nb_subscripts with
10850         PDR_NB_SUBSCRIPTS.
10851         * graphite-poly.h (struct poly_dr): Add nb_subscripts field.
10852         (PDR_NB_SUBSCRIPTS): New.
10853         (pdr_nb_subscripts): Removed.
10854         (pdr_dim): Simplified.
10855         * graphite-sese-to-poly.c (build_poly_dr): Replace pdr_nb_subscripts
10856         with PDR_NB_SUBSCRIPTS.
10857
10858 2009-08-12  Sebastian Pop  <sebastian.pop@amd.com>
10859
10860         * graphite-interchange.c (compute_array_size): Remove use of
10861         PDR_DATA_CONTAINER.
10862         * graphite-poly.c (new_poly_dr): Remove argument data_container.
10863         Do not initialize PDR_DATA_CONTAINER.
10864         (print_pdr): Do not print PDR_DATA_CONTAINER.
10865         * graphite-poly.h (struct poly_dr): Remove data_container field.
10866         (PDR_DATA_CONTAINER): Removed.
10867         * graphite-sese-to-poly.c (pdr_add_data_dimensions): Remove use of
10868         PDR_DATA_CONTAINER.
10869         (build_poly_dr): Same.
10870
10871 2009-08-12  Konrad Trifunovic  <konrad.trifunovic@gmail.com>
10872             Sebastian Pop  <sebastian.pop@amd.com>
10873
10874         * graphite-dependences.c (graphite_legal_transform_dr): Work on a
10875         copy of the dependence polyhedron.  Free the temporary objects.
10876         (graphite_carried_dependence_level_k): Free unused objects before
10877         returning.
10878
10879 2009-08-12  Sebastian Pop  <sebastian.pop@amd.com>
10880
10881         * graphite-blocking.c (scop_do_strip_mine): Call store_scattering.
10882         Early return without analyzing the data dependences if no
10883         transform has been done.  Call restore_scattering if the transform
10884         is not legal.
10885         (graphite-interchange.c): Same.
10886         * graphite-poly.c (print_scattering_function): Test for
10887         PBB_TRANSFORMED.
10888         (graphite_read_transforms): Initialize PBB_TRANSFORMED.
10889         (apply_poly_transforms): Do not gcc_assert that
10890         the transform is legal.
10891         (new_poly_bb): Initialize PBB_TRANSFORMED, PBB_SAVED and PBB_ORIGINAL.
10892         Do not initialize PBB_NB_SCATTERING_TRANSFORM, PBB_NB_LOCAL_VARIABLES,
10893         PBB_TRANSFORMED_SCATTERING, and PBB_ORIGINAL_SCATTERING.
10894         (free_poly_dr): Free PBB_TRANSFORMED, PBB_SAVED, and PBB_ORIGINAL.
10895         * graphite-poly.h (struct poly_scattering): New.
10896         (struct poly_bb): Add original, transformed, and saved fields.
10897         Remove transformed_scattering, original_scattering,
10898         nb_local_variables and nb_scattering_transform fields.
10899         (PBB_ORIGINAL, PBB_TRANSFORMED, PBB_SAVED): New.
10900         (poly_scattering_new): New.
10901         (poly_scattering_free): New.
10902         (poly_scattering_copy): New.
10903         (store_scattering_pbb): New.
10904         (store_scattering): New.
10905         (restore_scattering_pbb): New.
10906         (restore_scattering): New.
10907         * graphite-sese-to-poly.c (build_pbb_scattering_polyhedrons):
10908         Initialize PBB_TRANSFORMED and PBB_ORIGINAL.
10909
10910 2009-08-12  Sebastian Pop  <sebastian.pop@amd.com>
10911
10912         * graphite-poly.c (print_pbb): Add parentheses in the pretty print.
10913         (print_scop): Same.
10914
10915 2009-08-12  Sebastian Pop  <sebastian.pop@amd.com>
10916
10917         * Makefile.in (graphite.o): Depends on PREDICT_H.
10918         * graphite.c: Include predict.h.
10919         (graphite_finalize): Call tree_estimate_probability.
10920         * predict.c (predict_loops): Do not call scev_initialize and
10921         scev_finalize.
10922         (tree_estimate_probability_bb): New.
10923         (tree_estimate_probability): Do not initialize loops: move that
10924         code to the driver.  Call tree_estimate_probability_bb.
10925         (tree_estimate_probability_driver): New.
10926         (pass_profile): Use tree_estimate_probability_driver.
10927         * predict.h (tree_estimate_probability): Declared.
10928
10929 2009-08-12  Sebastian Pop  <sebastian.pop@amd.com>
10930
10931         * graphite-clast-to-gimple.c (gloog): Add time to TV_GRAPHITE_CODE_GEN.
10932         * graphite-dependences.c (graphite_legal_transform): Add time to
10933         TV_GRAPHITE_DATA_DEPS.
10934         (dependency_between_pbbs_p): Same.
10935         * timevar.def (TV_GRAPHITE_DATA_DEPS, TV_GRAPHITE_CODE_GEN): New.
10936
10937 2009-08-12  Andrey Belevantsev  <abel@ispras.ru>
10938
10939         PR rtl-optimization/41033
10940         * alias.c (nonoverlapping_component_refs_p): Punt when strict
10941         aliasing is disabled.
10942
10943 2009-08-11  Adam Nemet  <anemet@caviumnetworks.com>
10944
10945         * config/mips/predicates.md (qi_mask_operand, hi_mask_operand,
10946         si_mask_operand, and_load_operand, low_bitmask_operand,
10947         and_reg_operand, and_operand): New predicates.
10948         * config/mips/constraints.md (Yb, Yh, Yw, Yz): New constraints.
10949         * config/mips/mips.c (and_operands_ok): New function.
10950         * config/mips/mips-protos.h (and_operands_ok): Declare it.
10951         * config/mips/mips.md (move_type): Add ext_ins and logical.
10952         (type): Handle them.
10953         (and<mode>3): Use and_reg_operand as the second operand's predicate.
10954         (*and<mode>3): Add alternatives for lbu, lhu, lwu, <d>ext and
10955         shift_shift.  Remove commutative constraint modifier.
10956         (*and<mode>3_mips16): Add alternatives for lbu, lhu, lwu and
10957         shift_shift.
10958         (*clear_upper32_dext): Remove define_insn_and_split.
10959         (*clear_upper32): Turn this define_insn_and_split ...
10960         (splitter for ANDing register with 0xffff_ffff): .. into this.
10961
10962 2009-08-11  Adam Nemet  <anemet@caviumnetworks.com>
10963
10964         * combine.c (try_widen_shift_mode): Factor out code to check if an
10965         integer constant is a low-order bitmask from here ...
10966         * rtlanal.c (low_bitmask_len): ... to here.
10967         * rtl.h (low_bitmask_len): Declare.
10968
10969 2009-08-11  Uros Bizjak  <ubizjak@gmail.com>
10970
10971         PR target/8603
10972         * config/alpha/alpha.md (addsi3): Remove expander.
10973         (addsi3): Rename from *addsi3_internal insn pattern.
10974         (subsi3): Remove expander.
10975         (subsi3): Rename from *subsi3_internal insn pattern.
10976
10977 2009-08-11  Douglas B Rupp  <rupp@gnat.com>
10978
10979         * config/alpha/alpha.c (alpha_init_builtins): Nullify FWRITE and
10980         FWRITE_UNLOCKED.
10981
10982 2009-08-11  Vasiliy Fofanov  <fofanov@adacore.com>
10983             Eric Botcazou  <botcazou@adacore.com>
10984             Douglas B Rupp  <rupp@gnat.com>
10985
10986         * config/alpha/alpha.c (alpha_return_in_memory): On VMS, ensure
10987         that records that fit in 64 bits are returned by immediate value,
10988         as required by OpenVMS Calling Standard.
10989         (function_value): Adjust for above modification.
10990         (alpha_va_start) <TARGET_ABI_OPEN_VMS>: Use
10991         virtual_incoming_args_rtx as base object, not next_arg.
10992         * config/alpha/vms.h (DEFAULT_PCC_STRUCT_RETURN): Define as 0.
10993
10994 2009-08-11  Ulrich Weigand  <Ulrich.Weigand@de.ibm.com>
10995
10996         * reload.c (find_reloads_subreg_address): Check the original
10997         req_equiv_mem address to detect the case where an address is
10998         not valid in the outer mode.
10999
11000 2009-08-11  Richard Guenther  <rguenther@suse.de>
11001
11002         PR bootstrap/40788
11003         * builtins.c (gimplify_va_arg_expr): Do not call SET_EXPR_LOCATION.
11004
11005 2009-08-10  Douglas B Rupp  <rupp@gnat.com>
11006
11007         * config/alpha/vms.h (OPTIMIZATION_OPTIONS): Remove
11008         (OVERRIDE_OPTIONS): Incorporate removed OPTIMIZATION_OPTIONS.
11009
11010 2009-08-10  Olivier Hainque  <hainqueu@adacore.com>
11011             Douglas B Rupp  <rupp@gnat.com>
11012
11013         * config/alpha/alpha.c (alpha_sa_size): Force procedure type to
11014         PT_STACK when frame_pointer_needed on OpenVMS.
11015         (alpha_pv_save_size, alpha_using_fp): Remove.
11016         (alpha_vms_can_eliminate): New function. Support for CAN_ELIMINATE
11017         with proper processing for PT_NULL.
11018         (alpha_vms_initial_elimination_offset): New function. Support for
11019         INITIAL_ELIMINATION_OFFSET with proper processing for PT_NULL.
11020         (alpha_sa_size): Force procedure type to PT_STACK when
11021         frame_pointer_needed on OpenVMS.
11022         * config/alpha/alpha-protos.h (alpha_pv_save_size): Remove prototype.
11023         (alpha_using_fp): Likewise.
11024         (alpha_vms_can_eliminate): Add prototype.
11025         (alpha_vms_initial_elimination_offset): Likewise.
11026         * config/alpha/vms.h (CAN_ELIMINATE, INITIAL_ELIMINATION_OFFSET):
11027         Call alpha_vms_can_eliminate and alpha_vms_initial_elimination_offset.
11028
11029 2009-08-10  Eric Botcazou  <botcazou@adacore.com>
11030             Douglas B Rupp  <rupp@gnat.com>
11031
11032         * config/alpha/alpha.c (common_object_handler): New function.
11033         (vms_attribute_table): Declare a single attribute "common_object".
11034         (vms_output_aligned_decl_common): New global function.
11035         (SECTION_VMS_OVERLAY): Delete.
11036         (SECTION_VMS_GLOBAL): Likewise.
11037         (SECTION_VMS_INITIALIZE): Likewise.
11038         (vms_asm_named_section): Remove support for above flags.
11039         (vms_section_type_flags): Delete.
11040         (TARGET_SECTION_TYPE_FLAGS): Likewise.
11041         * config/alpha/alpha-protos.h (vms_output_aligned_decl_common): New.
11042         * config/alpha/vms.h (ASM_OUTPUT_ALIGNED_COMMON): Delete.
11043         (ASM_OUTPUT_ALIGNED_DECL_COMMON): New macro.
11044
11045 2009-08-10  SUGIOKA Toshinobu  <sugioka@itonet.co.jp>
11046
11047         PR target/41015
11048         * longlong.h [__sh__] (udiv_qrnnd): Add T register to clobber list.
11049         (sub_ddmmss): Likewise.
11050
11051 2009-08-10  Andreas Tobler  <a.tobler@schweiz.org>
11052
11053         PR bootstrap/41018
11054         * config/rs6000/freebsd.h: Define SVR4_ASM_SPEC. Adjust copyright
11055         year.
11056
11057 2009-08-10  Ulrich Weigand  <Ulrich.Weigand@de.ibm.com>
11058
11059         PR target/37053
11060         * reload1.c (reload_as_needed): Use cancel_changes to completely
11061         undo a failed replacement attempt.
11062
11063 2009-08-10  Richard Guenther  <rguenther@suse.de>
11064
11065         PR middle-end/41006
11066         * tree-ssa.c (useless_type_conversion_p_1): Fold into ...
11067         (useless_type_conversion_p): ... here.  Require pointer targets
11068         to be compatible.
11069
11070 2009-08-10  Dodji Seketeli  <dodji@redhat.com>
11071
11072         PR c++/40866
11073         * tree-inline.c (copy_statement_list): The resulting copy shouldn't
11074         loose the original type of the statement list.
11075
11076 2009-08-09  Douglas B Rupp  <rupp@gnat.com>
11077
11078         * config/alpha/alpha.c: Include libfuncs.h
11079         (avms_asm_output_extern): New function.
11080         (alpha_init_libfuncs): Init some decc libfuncs.
11081         * config/alpha/alpha-protos.h (avms_asm_output_external): Declare.
11082         * config/alpha/vms.h (ASM_OUTPUT_EXTERNAL): Define.
11083         (DO_CRTL_NAMES): Define.
11084         (LIB_SPEC): Remove.
11085         * config/alpha/vms64.h (POINTERS_EXTEND_UNSIGNED): Remove undef.
11086         (LONG_TYPE_SIZE): Define.
11087         (TARGET_OS_CPP_BUILTINS): Define with __LONG_POINTERS=1
11088         (SUBTARGET_SWITCHES): Define malloc64 switch.
11089         (TARGET_DEFAULT): Default MASK_MALLOC64 set.
11090         (MASK_RETURN_ADDR): Define.
11091         doc/invoke.texi (mmalloc64): Document switch.
11092
11093 2009-08-09  Olivier Hainque  <hainque@adacore.com>
11094             Douglas B Rupp  <rupp@gnat.com>
11095
11096         * config/alpha/alpha.c (struct machine_function): New flag for VMS,
11097         uses_condition_handler.
11098         (alpha_expand_builtin_establish_vms_condition_handler): New expander.
11099         (alpha_expand_builtin_revert_vms_condition_handler): New expander.
11100         (enum alpha_builtin): New ALPHA_BUILTIN_REVERT_VMS_CONDITION_HANDLER
11101         and ALPHA_BUILTIN_ESTABLISH_VMS_CONDITION_HANDLER values.
11102         (code_for_builtin): New insn codes for the new alpha_builtins.
11103         (alpha_init_builtins): Register the new functions as BUILT_IN_MD.
11104         (alpha_sa_size): Account for uses_condition_handler.
11105         (alpha_expand_prologue): Likewise.
11106         (alpha_start_function): Likewise.
11107         (alpha_expand_epilogue): Likewise.
11108         * config/alpha/alpha-protos.h: Prototype the new alpha.c builtin
11109         establish/revert expanders.
11110         * config/alpha/alpha.h (DWARF_FRAME_REGNUM): Define.
11111         * config/alpha/alpha.md (builtin_establish_vms_condition_handler):
11112         New expander, resorting to the alpha.c associated function.
11113         (builtin_revert_vms_condition_handler): Likewise.
11114         * config/alpha/vms-gcc_shell_handler.c: New file. Implements
11115         __gcc_shell_handler, the static VMS condition handler used as
11116         an indirection wrapper to the current dynamically established
11117         handler.
11118         * config/alpha/vms-unwind.h: Complete rewrite.
11119         * config/alpha/t-vms (LIB2FUNCS_EXTRA): Add vms-gcc_shell_handler.c
11120         * config/alpha/vms.h (MD_UNWIND_SUPPORT):
11121
11122 2009-08-09  Eric Botcazou  <botcazou@adacore.com>
11123             Douglas B Rupp  <rupp@gnat.com>
11124
11125         * config/alpha/alpha.c (alpha_links): Add 'target' field.
11126         (alpha_need_linkage): Handle aliases.  Return function symbol.
11127         (alpha_use_linkage): Rename 'linkage' argument to 'func'.
11128         Use ultimate alias target for the linkage name.
11129         * config/alpha/alpha.md (movmemdi): Use the symbol returned
11130         by alpha_need_linkage for the function symbol.
11131         (setmemdi): Likewise.
11132
11133 2009-08-09  Douglas B Rupp  <rupp@gnat.com>
11134
11135         * config/alpha/alpha.c (TARGET_ASM_UNALIGNED_*_OP): Define if on VMS.
11136         * config/alpha/vms.h (OBJECT_FORMAT_ELF): Define.
11137         (ASM_WEAKEN_LABEL): Define.
11138         (CRT_CALL_STATIC_FUNCTION): Define.
11139         (STARTFILE_SPEC): Add crtbegin.o crtbeginS.o.
11140         (ENDFILE_SPEC): Define.
11141         (INIT_SECTION_ASM_OP): Define.
11142         * config/alpha/vms-dwarf2eh.asm (__EH_FRAME_BEGIN__): Remove.
11143         * config/alpha/t-vms (EXTRA_PARTS): Add crtbegin.o crtbeginS.o
11144         crtend.o crtendS.o.
11145         (MULTILIB_OSDIRNAMES): Define.
11146         (shlib_version): Define.
11147         (SHLIB_EXT): Define.
11148         (SHLIB_OBJS): Define.
11149         (SHLIB_NAME): Define.
11150         (SHLIB_MULTILIB): Define.
11151         (SHLIB_INSTALL): Define.
11152         (SHLIB_SYMVEC): Define.
11153         (SHLIB_SYMVECX2): Define.
11154         (SHLIB_LINK): Define.
11155
11156 2009-08-09  Douglas B Rupp  <rupp@gnat.com>
11157
11158         * config/alpha/alpha.c (alpha_initialize_trampoline):
11159         Initialize VMS trampoline IAW ABI for bounded procedure calls.
11160         (alpha_start_function): Emit transfer address on nested functions
11161         for VMS trampoline call.
11162         * config/alpha/t-vms (LIB2FUNCS_EXTRA): Remove vms_tramp.asm
11163         since no longer used.
11164         * config/alpha/vms-tramp.asm: Remove.
11165         * config/alpha/vms.h (TRAMPOLINE_TEMPLATE): Leave undefined
11166         since now only data initialized at runtime.
11167
11168 2009-08-09  Douglas B Rupp  <rupp@gnat.com>
11169
11170         * config/alpha/vms.h (HANDLE_SYSV_PRAGMA): Define.
11171         (LINK_GCC_C_SEQUENCE_SPEC): Define.
11172         (MD_EXEC_PREFIX): Remove, no longer used.
11173         (MD_STARTFILE_PREFIX): Likewise.
11174         (INCLUDE_DEFAULTS): Likewise.
11175         * config/alpha/t-vms:
11176         (vms-dwarf2.o, vms-dwarf2eh.o): Use GCC_FOR_TARGET to compile.
11177
11178 2009-08-09  Richard Guenther  <rguenther@suse.de>
11179
11180         PR tree-optimization/41016
11181         * tree-ssa-ifcombine.c (get_name_for_bit_test): Fix tuplification bug.
11182         (operand_precision): Remove.
11183         (integral_operand_p): Likewise.
11184         (recognize_single_bit_test): Adjust.
11185
11186 2009-08-09  Richard Sandiford  <rdsandiford@googlemail.com>
11187
11188         * c-common.c (c_fully_fold_internal): Issue a warning if a binary
11189         operation overflows.  Likewise non-cast unary arithmetic.
11190         If one arm of a conditional expression is always taken,
11191         inhibit evaluation warnings for the other arm.  Likewise inhibit
11192         evaluation warnings for the second && or || operand if the first
11193         operand is enough to determine the result.
11194         * c-typeck.c (build_conditional_expr): Apply the same inhibition
11195         rules here.
11196         (build_binary_op): Prevent duplicate evaluation warnings.
11197
11198 2009-08-09  Richard Sandiford  <rdsandiford@googlemail.com>
11199
11200         * tree-out-of-ssa.c (insert_value_copy_on_edge): If the source
11201         and destination have different modes, Use promote_mode to
11202         determine the signedness of the conversion.  Assert that the
11203         promoted source mode matches the destination mode.  Don't pass
11204         the destination and destination mode to expand_expr if the source
11205         mode is different.  Simplify conversion logic.
11206
11207 2009-08-09  Ira Rosen  <irar@il.ibm.com>
11208
11209         PR tree-optimization/41008
11210         * tree-vect-loop.c (vect_is_simple_reduction): Get operands
11211         from condition only in case it's a comparison. Adjust checks.
11212
11213 2009-08-09  Bernd Schmidt  <bernd.schmidt@analog.com>
11214
11215         * tree-dfa.c (renumber_gimple_stmt_uids_in_blocks): New function.
11216         * tree-flow.h (renumber_gimple_stmt_uids_in_blocks): Declare it.
11217         * tree-ssa-loop-ivopts.c (comp_cost): Make COST an integer.
11218         (enum iv_position): Add IP_AFTER_USE and IP_BEFORE_USE.
11219         (dump_cand): Handle them.
11220         (struct iv_cand): New members COST_STEP and AINC_USE.
11221         (stmt_after_increment): Likewise.
11222         (stmt_after_inc_pos): Renamed from stmt_after_ip_original_pos.  All
11223         callers changed.  Use gimple_uid comparison instead of scanning.
11224         (add_candidate_1): When looking for identical candidates, take
11225         AINC_USE into account.  Set it for new candidates.
11226         (force_expr_to_var_cost): Cast target_spill_cost to int.
11227         (get_address_cost): New arguments STMT_AFTER_INC and MAY_AUTOINC.
11228         All callers changed.  Check for availability of autoinc addressing
11229         modes, both in general for a given mode, and in the specific use case.
11230         (get_computation_cost_at): New argument CAN_AUTOINC.  All callers
11231         changed.
11232         (get_computation_cost): Likewise.
11233         (autoinc_possible_for_pair, set_autoinc_for_original_candidates,
11234         add_autoinc_candidates): New static functions.
11235         (add_candidate): Call add_autoinc_candidates for candidates based on
11236         a USE_ADDRESS use.
11237         (find_iv_candidates): Call set_autoinc_for_original_candidates.
11238         (determine_use_iv_cost_address): If we have an autoinc candidate at
11239         the matching use, verify autoinc is possible and subtract the cost
11240         of the candidate's step from the cost.
11241         (determine_iv_cost): Record the cost of the increment in the COST_STEP
11242         member of the candidate.
11243         (tree_ssa_iv_optimize_loop): Swap the calls to determine_iv_costs and
11244         determine_use_iv_costs.  Call renumber_gimple_stmt_uids_in_blocks.
11245
11246 2009-08-09  Douglas B Rupp  <rupp@gnat.com>
11247
11248         * config.build (ia64-hp-*vms*): New target.
11249         (alpha64-dec-*vms*,alpha*-dec-*vms*): Fix for config/vms and unify
11250         with ia64-hp-*vms*.
11251         * config.gcc (ia64-hp-*vms*): New target.
11252         (alpha64-dec-*vms*,alpha*-dec-*vms*): Fix for config/vms and unify
11253         with ia64-hp-*vms*.
11254         * config.host (ia64-hp-*vms*): New target.
11255         (alpha64-dec-*vms*,alpha*-dec-*vms*): Fix for config/vms and unify
11256         with ia64-hp-*vms*.
11257
11258 2009-08-08  Richard Guenther  <rguenther@suse.de>
11259
11260         PR tree-optimization/40991
11261         * tree-ssa-pre.c (eliminate): Delay purging EH edges.
11262
11263 2009-08-08  Richard Sandiford  <rdsandiford@googlemail.com>
11264
11265         * combine.c (gen_lowpart_or_truncate): Exclude CONST_INTs from
11266         mode check.  Do truncations in an integer mode.
11267         (force_to_mode): Handle subregs for all mode types.  Only do
11268         arithmetic simplifications on integer modes.
11269
11270 2009-08-07  Richard Guenther  <rguenther@suse.de>
11271
11272         PR tree-optimization/40999
11273         * tree-ssa-ccp.c (get_symbol_constant_value): Handle CONST_DECLs.
11274         (maybe_fold_reference): Lookup constant initializers.
11275         (fold_gimple_assign): Likewise.
11276
11277 2009-08-07  Richard Guenther  <rguenther@suse.de>
11278
11279         * tree-ssa.c (useless_type_conversion_p_1): Only for types
11280         that require structural equality defer to the langhook.
11281
11282 2009-08-07  Martin Jambor  <mjambor@suse.cz>
11283
11284         * ipa-prop.h (enum jump_func_type): New value IPA_JF_ANCESTOR, changed
11285         comments.
11286         (struct ipa_pass_through_data): New type.
11287         (struct ipa_ancestor_jf_data): New type.
11288         (union jump_func_value): Removed field formal_id, added fields
11289         pass_through and ancestor.
11290         (struct ipa_param_call_note): Changed type of formal_id to int from
11291         unsigned.
11292         * ipa-prop.c (ipa_print_node_jump_functions): Print pass through with
11293         operations jump functions and ancestor jump functions.
11294         (compute_complex_pass_through): New function.
11295         (compute_scalar_jump_functions): Call compute_complex_pass_through,
11296         reflect changes in the jump function strucutre.
11297         (update_jump_functions_after_inlining): Ignore complex pass-through
11298         and ancestor jump functions.
11299         * ipa-cp.c (ipcp_lattice_from_jfunc): Added support for ancestor and
11300         polynomial pass-through with operation jump functions.
11301
11302 2009-08-07  Jakub Jelinek  <jakub@redhat.com>
11303
11304         * dwarf2out.c (output_fde): When doing hot/cold partitioning, use
11305         fde->dw_fde_begin as begin label instead of hot/cold label.
11306         Use LLSDAC label instead of LLSDA for second section lsda.
11307         (dwarf2out_do_cfi_startproc): Add SECOND argument.  Use LLSDAC
11308         label instead of LLSDA if it is true.
11309         (dwarf2out_begin_prologue, dwarf2out_switch_text_section): Adjust
11310         callers.
11311         * except.c (add_call_site, dw2_size_of_call_site_table): Add
11312         SECTION argument.  Use it as index into crtl->eh.call_site_record
11313         array.
11314         (dw2_output_call_site_table): Likewise.  Add CS_FORMAT argument,
11315         use it to determine how to print table entries instead of using
11316         #ifdef HAVE_AS_LEB128.  For SECTION > 0 use hot resp. cold
11317         label instead of normal begin label as base.
11318         (sjlj_assign_call_site_values): Adjust add_call_site caller.
11319         (convert_to_eh_region_ranges): When doing hot/cold partitioning,
11320         ensure no EH range spans between sections and that landing pads
11321         are always in the corresponding section.
11322         (sjlj_size_of_call_site_table, sjlj_output_call_site_table): Adjust
11323         for crtl->eh.call_site_record being an array rather than scalar.
11324         (output_one_function_exception_table): New function, copied
11325         from output_function_exception_table.  Adjust
11326         dw2_size_of_call_site_table, dw2_output_call_site_table
11327         callers.  For SECOND section use *C suffixed labels.
11328         (output_function_exception_table): Call
11329         output_one_function_exception_table and, when doing hot/cold
11330         partitioning, also another time for the second section.
11331         * opts.c: Include except.h.
11332         (decode_options): Allow -freorder-blocks-and-partition with
11333         exceptions, unless SJLJ or TARGET_UNWIND_INFO.
11334         * Makefile.in (opts.o): Depend on $(EXCEPT_H).
11335         * function.h (struct rtl_eh): Change call_site_record from
11336         scalar into array of 2 elements.
11337
11338 2009-08-07  Martin Jambor  <mjambor@suse.cz>
11339
11340         * ipa-prop.c (count_formal_params_1): New function.
11341         (ipa_get_vector_of_formal_parms): New function.
11342         (get_vector_of_formal_parm_types): New function.
11343         (ipa_modify_formal_parameters): New function.
11344         (ipa_modify_call_arguments): New function.
11345         (index_in_adjustments_multiple_times_p): New function.
11346         (ipa_combine_adjustments): New function.
11347         (ipa_dump_param_adjustments): New function.
11348         * ipa-prop.h (struct ipa_parm_adjustment): New type.
11349         (ipa_get_vector_of_formal_parms): Declare.
11350         (ipa_modify_formal_parameters): Declare.
11351         (ipa_modify_call_arguments): Declare.
11352         (ipa_combine_adjustments): Declare.
11353         (ipa_dump_param_adjustments): Declare.
11354         (build_ref_for_offset): Declare.
11355         * Makefile.in (tree-sra.o): Add ipa-prop.h to dependencies.
11356         * tree-sra.c: Include ipa-prop.c.
11357         (build_ref_for_offset): Make public.
11358
11359 2009-08-06  Neil Vachharajani  <nvachhar@gmail.com>
11360
11361         * value-prof.c (init_pid_map): Replace xmalloc with XCNEWVEC.
11362
11363 2009-08-06  Thomas Schwinge  <tschwinge@gnu.org>
11364
11365         * gcc/doc/extend.texi (__builtin_extract_return_address)
11366         (__builtin_frob_return_address): Document.
11367
11368 2009-08-06  Paul Brook  <paul@codesourcery.com>
11369
11370         * config/arm/lib1funcs.asm (ARM_DIV_BODY): Add Thumb-2 implementation.
11371         (udivsi3, aeabi_uidivmod, divsi3, aeabi_idivmod): Only use Thumb-1
11372         implementation on ARMv6-M.
11373
11374 2009-08-06  Richard Earnshaw  <rearnsha@arm.com>
11375
11376         * doc/extend.texi (pcs): Document new attribute for ARM.
11377
11378 2009-08-06  Richard Earnshaw  <rearnsha@arm.com>
11379
11380         * arm.c (pcs_attribute_args): Comment out unsupported attribute
11381         variants.
11382
11383 2009-08-06  Richard Earnshaw  <rearnsha@arm.com>
11384
11385         * arm.c (arm_handle_pcs_attribute): Pass the entire name object to
11386         warning ().
11387
11388 2009-08-06  Richard Earnshaw  <rearnsha@arm.com>
11389
11390         * arm.c (arm_handle_pcs_attribute): Use %qE in warning.
11391
11392 2009-08-06  Richard Earnshaw  <rearnsha@arm.com>
11393
11394         Merge ARM/hard_vfp_branch to trunk.
11395
11396         2009-08-04  Richard Earnshaw  <rearnsha@arm.com>
11397
11398         * arm.c (libcall_eq): New function.
11399         (libcall_hash): New function.
11400         (add_libcall): New function.
11401         (arm_libcall_uses_aapcs_base): New function.
11402         (arm_libcall_value): Use arm_libcall_uses_aapcs_base to check for
11403         libcalls using the base PCS.
11404         (arm_init_cumulative_args): Likewise.
11405
11406         2009-07-20  Joseph Myers  <joseph@codesourcery.com>
11407
11408         * config/arm/arm.c (arm_libcall_value, arm_init_cumulative_args):
11409         Use base ABI for conversion libfuncs between HFmode and SFmode.
11410
11411         2009-05-12  Joseph Myers  <joseph@codesourcery.com>
11412
11413         * config/arm/arm.c (aapcs_vfp_sub_candidate): Use V2SImode and
11414         V4SImode as representatives of all 64-bit and 128-bit vector
11415         types.  Allow vector types without vector modes.
11416         (aapcs_vfp_is_call_or_return_candidate): Handle vector types
11417         without vector modes like BLKmode.
11418         (aapcs_vfp_allocate): Handle TImode for non-TARGET_NEON like
11419         BLKmode.  Avoid unsupported vector modes or TImode moves for
11420         non-TARGET_NEON.
11421         (aapcs_vfp_allocate_return_reg): Likewise.
11422         (arm_vector_mode_supported_p): Only support V2SImode, V4HImode and
11423         V8QImode if TARGET_NEON || TARGET_IWMMXT.
11424
11425         2009-05-12  Joseph Myers  <joseph@codesourcery.com>
11426
11427         * config/arm/arm.c (arm_handle_pcs_attribute): New.
11428         (arm_get_pcs_model): Pass attribute arguments to
11429         arm_pcs_from_attribute.
11430         (arm_init_cumulative_args): Use base AAPCS for conversions from
11431         floating-point types to DImode.
11432         (arm_attribute_table): Add pcs attribute.
11433         (arm_handle_pcs_attribute): New.
11434         * config/arm/bpabi.h (DECLARE_LIBRARY_RENAMES): When renaming
11435         conversions from floating-point types to DImode, also declare them
11436         to use base AAPCS and declare functions they call to use base
11437         AAPCS and their RTABI names.
11438
11439         2009-05-12  Joseph Myers  <joseph@codesourcery.com>
11440
11441         * doc/invoke.texi (-mfloat-abi=@var{name}): Remove statement about
11442         -mfloat-abi=hard not being supported for VFP.
11443
11444         2009-05-11  Kazu Hirata  <kazu@codesourcery.com>
11445
11446         * config/sparc/sparc.c (sparc_emit_float_lib_cmp): Pass a libcall
11447         SYMBOL_REF to hard_libcall_value.
11448
11449         2009-03-05  Joseph Myers  <joseph@codesourcery.com>
11450             Richard Earnshaw  <rearnsha@arm.com>
11451
11452         * config/arm/arm.c (aapcs_layout_arg): Once a co-processor argument
11453         has been put on the stack, all remaining co-processory arguments for
11454         that co-processor also go on the stack.
11455
11456         2009-03-05  Joseph Myers  <joseph@codesourcery.com>
11457
11458         * config/arm/arm.c (arm_return_in_memory): Handle returning
11459         vectors of suitable size in registers also for AAPCS case.
11460
11461         2009-01-13  Richard Earnshaw <rearnsha@arm.com>
11462
11463         * doc/tm.texi (TARGET_LIBCALL_VALUE): Add missing end statement.
11464
11465         2008-12-09  Richard Earnshaw <rearnsha@arm.com>
11466
11467         ARM Hard-VFP calling convention
11468         * target-def.h (TARGET_LIBCALL_VALUE): New hook.
11469         * target.h (gcc_target): Add libcall_value to table of call hooks.
11470         * targhooks.h (default_libcall_value): Default implementation.
11471         * targhooks.c (default_libcall_value): Likewise.
11472         * doc/tm.texi (TARGET_LIBCALL_VALUE): Document it.
11473         * optabs.c (expand_unop): Use it.
11474         * expr.h (hard_libcall_value): Pass the function RTX through.
11475         * calls.c (emit_library_call_value_1): Update call to
11476         hard_libcall_value.
11477         * explow.c (hard_libcall_value): Use new target hook.
11478         * config/arm/arm.c: Include cgraph.h
11479         (TARGET_FUNCTION_VALUE): Override default hook.
11480         (arm_pcs_default): New variable.
11481         (arm_override_options): Don't fault hard calling convention with VFP.
11482         Add support for AAPCS variants.
11483         (arm_function_value): Make static.  Handle AAPCS variants.
11484         (arm_libcall_value): New function.
11485         (arm_apply_result_size): Handle VFP registers in results.
11486         (arm_return_in_memory): Rework all AAPCS variants; handle hard-vfp
11487         conventions.
11488         (pcs_attribute_args): New variable.
11489         (arm_pcs_from_attribute): New function.
11490         (arm_get_pcs_model): New function.
11491         (aapcs_vfp_cum_init): New function.
11492         (aapcs_vfp_sub_candidate): New function.
11493         (aapcs_vfp_is_return_candidate): New function.
11494         (aapcs_vfp_is_call_candidate): New function.
11495         (aapcs_vfp_allocate): New function.
11496         (aapcs_vfp_allocate_return_reg): New function.
11497         (aapcs_vfp_advance): New function.
11498         (aapcs_cp_arg_layout): New variable.
11499         (aapcs_select_call_coproc): New function.
11500         (aapcs_select_return_coproc): New function.
11501         (aapcs_allocate_return_reg): New function.
11502         (aapcs_libcall_value): New function.
11503         (aapcs_layout_arg): New function.
11504         (arm_init_cumulative_args): Initialize AAPCS args data.
11505         (arm_function_arg): Handle AAPCS variants using new interface.
11506         (arm_arg_parital_bytes): Likewise.
11507         (arm_function_arg_advance): New function.
11508         (arm_function_ok_for_sibcall): Ensure that sibling calls agree on
11509         calling conventions.
11510         (arm_setup_incoming_varargs): Handle new AAPCS args data.
11511         * arm.h (NUM_VFP_ARG_REGS): Define.
11512         (LIBCALL_VALUE): Update.
11513         (FUNCTION_VALUE): Delete.
11514         (FUNCTION_VALUE_REGNO_P): Add VFP regs.
11515         (arm_pcs): New enum.
11516         (CUMULATIVE_ARGS): New data to support AAPCS argument marshalling.
11517         (FUNCTION_ARG_ADVANCE): Call arm_function_arg_advance.
11518         (FUNCTION_ARG_REGNO_P): Add VFP regs.
11519         * arm-protos.h (arm_function_arg_advance): Add.
11520         (aapcs_libcall_value): Add.
11521         (arm_function_value): Delete.
11522
11523 2009-08-06  Uros Bizjak  <ubizjak@gmail.com>
11524             H.J. Lu  <hongjiu.lu@intel.com>
11525
11526         PR target/40957
11527         * config/i386/i386.c (standard_sse_mode_p): Remove.
11528         (standard_sse_constant_p): Return 2 for integer mode
11529         vector_all_ones_operand when SSE2 is enabled.
11530         (standard_sse_constant_opcode)<case 2>: Always return [v]pcmpeqd.
11531         (ix86_expand_vector_move): Do not check for negative values from
11532         standard_sse_constant_p.
11533
11534 2009-08-06  Richard Guenther  <rguenther@suse.de>
11535
11536         * tree-ssa.c (useless_type_conversion_p_1): Make function and
11537         array type comparisons frontend independent.
11538         * Makefile.in (tree-ssa.o): Add $(TARGET_H) dependency.
11539         * tree-ssa-sccvn.c (copy_reference_ops_from_ref): Always fill
11540         out array reference lower bound and element size operands.
11541         (ao_ref_init_from_vn_reference): Properly compute the offset
11542         for ARRAY_RANGE_REF.
11543         (vn_reference_fold_indirect): Fill out array reference lower
11544         bound and element size operands.
11545         * tree-ssa-pre.c (phi_translate_1): Fail if we have to translate
11546         a non gimple valued reference operand which can happen for
11547         array reference lower bound or element size.
11548         (create_component_ref_by_pieces_1): Properly generate the
11549         element size operand for array references.
11550
11551 2009-08-06  Richard Guenther  <rguenther@suse.de>
11552
11553         PR tree-optimization/40964
11554         * tree.c (iterative_hash_host_wide_int): Export.
11555         * tree.h (iterative_hash_host_wide_int): Declare.
11556         * tree-ssa-structalias.c (heapvar_map): New struct.
11557         (heapvar_map_eq): New function.
11558         (heapvar_map_hash): Likewise.
11559         (heapvar_lookup): Adjust.
11560         (heapvar_insert): Likewise.
11561         (make_constraint_from_heapvar): Allow multiple heap variables
11562         per decl at different offsets.
11563         (init_alias_heapvars): Adjust.
11564
11565 2009-08-04  David Daney  <ddaney@caviumnetworks.com>
11566
11567         * config/mips/mips.h (TARGET_SYNC_AFTER_SC): New macro.
11568         * mips_output_sync_loop (mips_output_sync_loop): Only emit
11569         trailing sync if TARGET_SYNC_AFTER_SC.
11570
11571 2009-08-05  David Daney  <ddaney@caviumnetworks.com>
11572
11573         * gcc/config/mips/sync.md (sync_compare_and_swap<mode>,
11574         compare_and_swap_12, sync_add<mode>, sync_<optab>_12,
11575         sync_old_<optab>_12, sync_new_<optab>_12, sync_nand_12,
11576         sync_old_nand_12, sync_new_nand_12, sync_sub<mode>,
11577         sync_old_add<mode>, sync_old_sub<mode>, sync_new_add<mode>,
11578         sync_new_sub<mode>, sync_<optab><mode>, sync_old_<optab><mode>,
11579         sync_new_<optab><mode>, sync_nand<mode>, sync_old_nand<mode>,
11580         sync_new_nand<mode>, sync_lock_test_and_set<mode>,
11581         test_and_set_12): Rewrite calls to mips_output_sync_loop.
11582         * gcc/config/mips/mips-protos.h (mips_output_sync_loop): Make
11583         the prototype declaration match the definition.
11584         * gcc/config/mips/mips.c (mips_output_sync_loop):  Emit sync
11585         instructions explicitly.  Add barrier_before and operands
11586         parameters.
11587         * gcc/config/mips/mips.h (MIPS_COMPARE_AND_SWAP,
11588         MIPS_COMPARE_AND_SWAP_12, MIPS_SYNC_OP, MIPS_SYNC_OP_12,
11589         MIPS_SYNC_OLD_OP_12, MIPS_SYNC_NEW_OP_12, MIPS_SYNC_OLD_OP,
11590         MIPS_SYNC_NEW_OP, MIPS_SYNC_NAND, MIPS_SYNC_OLD_NAND,
11591         MIPS_SYNC_NEW_NAND, MIPS_SYNC_EXCHANGE,
11592         MIPS_SYNC_EXCHANGE_12): Remove sync instructions.
11593
11594 2009-08-05  Andrew Pinski  <pinskia@gmail.com>
11595
11596         * tree-ssa-alias.c: Fix intervals to use [) syntax.
11597
11598 2009-08-05  Uros Bizjak  <ubizjak@gmail.com>
11599             Mikulas Patocka  <mikulas@artax.karlin.mff.cuni.cz>
11600
11601         PR target/40906
11602         * config/i386/i386.c (ix86_split_long_move): Fix push of multi-part
11603         source operand.
11604
11605 2009-08-05  Jakub Jelinek  <jakub@redhat.com>
11606
11607         PR rtl-optimization/40924
11608         * dse.c (canon_address): Before calling cselib_expand_value_rtx
11609         make sure canon_rtx (mem_address) isn't simpler than
11610         canon_rtx (expanded_mem_address).
11611
11612 2009-08-05  Li Feng  <nemokingdom@gmail.com>
11613
11614         * graphite-sese-to-poly.c (build_pbb_drs): Remove build alias set
11615         for each poly_bb_p.
11616         (build_scop_drs): Build alias set for each SCoP.
11617
11618 2009-08-04  Sandra Loosemore  <sandra@codesourcery.com>
11619
11620         * doc/invoke.texi (MIPS Options): Document new 1004K -march options.
11621         * config/mips/mips.c (mips_cpu_info_table): Add 1004K cores.
11622         * config/mips/mips.h (MIPS_ISA_LEVEL_SPEC): Add pattern for 1004K.
11623         (MIPS_ARCH_FLOAT_SPEC): Likewise.
11624         (BASE_DRIVER_SELF_SPECS): Likewise.
11625
11626 2009-08-04  Andrew Pinski  <pinskia@gmail.com>
11627
11628         * tree-ssa-alias.c: Fix some comment typos.
11629
11630 2009-08-04  Kaz Kojima  <kkojima@gcc.gnu.org>
11631
11632         * config/sh/linux-atomic.asm (ATOMIC_BOOL_COMPARE_AND_SWAP,
11633         ATOMIC_OP_AND_FETCH, ATOMIC_COMBOP_AND_FETCH): Define.
11634
11635 2009-08-03  Janis Johnson  <janis187@us.ibm.com>
11636
11637         PR c/39902
11638         * simplify-rtx.c (simplify_binary_operation_1): Disable
11639         simplifications for decimal float operations.
11640
11641 2009-08-03  Jakub Jelinek  <jakub@redhat.com>
11642
11643         PR middle-end/40943
11644         * tree-ssa.c (warn_uninitialized_var): Even on LHS warn for
11645         operand of INDIRECT_REF.
11646
11647 2009-08-03  Uros Bizjak  <ubizjak@gmail.com>
11648
11649         * config/alpha/alpha.c (alpha_legitimate_constant_p): Reject CONST
11650         constants referencing TLS symbols.
11651
11652 2009-08-03  SUGIOKA Toshinobu  <sugioka@itonet.co.jp>
11653
11654         * config/sh/linux-atomic.asm (ATOMIC_COMPARE_AND_SWAP): Rename
11655         __sync_compare_and_swap_* to __sync_val_compare_and_swap_*.
11656
11657 2009-08-03  Richard Guenther  <rguenther@suse.de>
11658
11659         * tree.c (make_vector_type): Build a main variant first,
11660         get the canonical one and then build the variant.
11661         * tree-ssa.c (useless_type_conversion_p_1): Handle
11662         fixed-point types.
11663         (useless_type_conversion_p): Conversions to pointers to
11664         incomplete record types are useless.
11665
11666 2009-08-03  Richard Guenther  <rguenther@suse.de>
11667
11668         * tree-cfg.c (pass_warn_unused_result): Mark name that no dump
11669         file will be created.
11670         * omp-low.c (pass_diagnose_omp_blocks): Likewise.
11671         * toplev.c (compile_file): Adjust comment.
11672
11673 2009-08-03  Kaz Kojima  <kkojima@gcc.gnu.org>
11674
11675         * config/sh/sh-protos.h (sh_promote_function_mode): Remove.
11676         * config/sh/sh.c (sh_promote_function_mode): Wrap long lines.
11677         (TARGET_PROMOTE_FUNCTION_MODE): Define.
11678         (TARGET_PROMOTE_FUNCTION_ARGS): Remove.
11679         (sh_promote_function_mode): Fix typo.
11680
11681 2009-08-03  Andreas Krebbel  <krebbel1@de.ibm.com>
11682
11683         * explow.c (promote_mode): Mark TYPE and PUNSIGNEDP as possibly unused.
11684
11685 2009-08-02  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
11686
11687         * pa.c (pa_promote_function_mode): Remove ATTRIBUTE_UNUSED from
11688         declaration arguments.
11689
11690 2009-08-02  Uros Bizjak  <ubizjak@gmail.com>
11691
11692         * config/i386/i386.c (ix86_expand_fp_compare): Use const0_rtx instead
11693         of GEN_INT (0x00) and const1_rtx instead of GEN_INT (0x01).
11694         (ix86_split_ashl): Ditto.
11695         (ix86_expand_vector_init_one_nonzero): Ditto.
11696         (ix86_expand_vector_set): Ditto.
11697         (ix86_expand_reduc_v4sf): Ditto.
11698
11699 2009-08-02  Paolo Bonzini  <bonzini@gnu.org>
11700
11701         * explow.c (promote_function_mode): Remove assert.
11702         * config/sh/sh.c (sh_promote_function_mode): Declare.
11703
11704 2009-08-01  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
11705
11706         * config/pa/pa.c (pa_promote_function_mode): Declare.
11707         Change to static.  Fix promote_mode call.
11708
11709         * gthr-dce.h (CONST_CAST2): Define if not defined.
11710         (__gthread_setspecific): Use CONST_CAST2 to fix warning.
11711
11712         * config.gcc (hppa[12]*-*-hpux10*): Add stdint support.
11713
11714 2009-08-01  Paolo Bonzini  <bonzini@gnu.org>
11715
11716         * expr.c (store_constructor): Use promote_decl_mode.  Remove
11717         now write-only variable unsignedp.
11718         (expand_expr_real_1): Use promote_decl_mode.
11719         * expr.h (promote_function_mode, promote_decl_mode): New.
11720         (promote_mode): Remove last argument.
11721         * function.c (assign_temp): Drop last argument of promote_mode.
11722         (assign_parm_find_data_types): Use promote_function_mode.
11723         (assign_parm_setup_reg): Likewise.
11724         (expand_function_end): Use promote_function_mode.
11725         * calls.c (initialize_argument_information): Use promote_function_mode.
11726         (precompute_arguments): Use promote_mode instead of checking if
11727         only PROMOTE_FUNCTION_MODE is defined.
11728         (expand_call): When making sibcall decisions, use promote_function_mode.
11729         Below, remove an if for targetm.calls.promote_function_return and
11730         and use promote_function_mode.
11731         (emit_library_call_value_1): Use promote_function_mode, fix bug
11732         where promote_mode was passed FOR_CALL == 0 for a return value in an
11733         assertion.
11734         * cfgexpand.c (expand_one_register_var): Use promote_decl_mode.
11735         * explow.c (promote_function_mode, promote_decl_mode): New.
11736         (promote_mode): Keep only the FOR_CALL == 0 case.
11737         * combine.c (setup_incoming_promotion): Remove test of
11738         promote_function_args.  Use promote_function_mode.
11739         * stmt.c (expand_value_return): Use promote_decl_mode.
11740         (expand_decl): Use promote_decl_mode.
11741
11742         * expr.c (store_constructor): Use promote_decl_mode.  Remove
11743         now write-only variable unsignedp.
11744         (expand_expr_real_1): Use promote_decl_mode.
11745         * expr.h (promote_function_mode, promote_decl_mode): New.
11746         (promote_mode): Remove last argument.
11747         * function.c (assign_temp): Drop last argument of promote_mode.
11748         (assign_parm_find_data_types): Use promote_function_mode.
11749         (assign_parm_setup_reg): Likewise.
11750         (expand_function_end): Use promote_function_mode.
11751         * calls.c (initialize_argument_information): Use promote_function_mode.
11752         (precompute_arguments): Use promote_mode instead of checking if
11753         only PROMOTE_FUNCTION_MODE is defined.
11754         (expand_call): When making sibcall decisions, use promote_function_mode.
11755         Below, remove an if for targetm.calls.promote_function_return and
11756         and use promote_function_mode.
11757         (emit_library_call_value_1): Use promote_function_mode, fix bug
11758         where promote_mode was passed FOR_CALL == 0 for a return value in an
11759         assertion.
11760         * cfgexpand.c (expand_one_register_var): Use promote_decl_mode.
11761         * explow.c (promote_function_mode, promote_decl_mode): New.
11762         (promote_mode): Keep only the FOR_CALL == 0 case.
11763         * combine.c (setup_incoming_promotion): Remove test of
11764         promote_function_args.  Use promote_function_mode.
11765         * stmt.c (expand_value_return): Use promote_decl_mode.
11766         (expand_decl): Use promote_decl_mode.
11767
11768         * explow.c (promote_function_mode): Just call the target hook.
11769         * targhooks.c (default_promote_function_mode,
11770         default_promote_function_mode_always_promote): New.
11771         * targhooks.h (default_promote_function_mode,
11772         default_promote_function_mode_always_promote): Declare.
11773         * target.h (promote_function_args, promote_function_return): Remove.
11774         (promote_function_mode): New.
11775         * target-def.h (TARGET_PROMOTE_FUNCTION_ARGS,
11776         TARGET_PROMOTE_FUNCTION_RETURN): Remove.
11777         (TARGET_PROMOTE_FUNCTION_MODE): New.
11778         (TARGET_CALLS): Adjust.
11779         * system.h (TARGET_PROMOTE_FUNCTION_ARGS,
11780         TARGET_PROMOTE_FUNCTION_RETURN, PROMOTE_FUNCTION_MODE): Poison.
11781
11782         * config/s390/s390.h (PROMOTE_FUNCTION_MODE): Move...
11783         * config/s390/s390.c (s390_promote_function_mode): ... here,
11784         with pointer handling.
11785         (TARGET_PROMOTE_FUNCTION_MODE): Define.
11786         (TARGET_PROMOTE_FUNCTION_ARGS, TARGET_PROMOTE_FUNCTION_RETURN): Remove.
11787
11788         * config/sparc/sparc.h (PROMOTE_FUNCTION_MODE): Move...
11789         * config/sparc/sparc.c (sparc_promote_function_mode): ... here,
11790         with pointer handling.
11791         (TARGET_PROMOTE_FUNCTION_MODE): Define.
11792         (TARGET_PROMOTE_FUNCTION_ARGS, TARGET_PROMOTE_FUNCTION_RETURN): Remove.
11793
11794         * config/sh/sh-protos.h (sh_promote_function_mode): New.
11795         * config/sh/sh.c (sh_promote_function_mode): New.
11796         (TARGET_PROMOTE_FUNCTION_MODE): Define.
11797         (TARGET_PROMOTE_FUNCTION_ARGS, TARGET_PROMOTE_FUNCTION_RETURN): Remove.
11798
11799         * config/cris/cris.h (PROMOTE_FUNCTION_MODE): Move...
11800         * config/cris/cris.c (cris_promote_function_mode): ... here.
11801         (TARGET_PROMOTE_FUNCTION_MODE): Define.
11802         (TARGET_PROMOTE_FUNCTION_ARGS): Remove.
11803
11804         * config/mmix/mmix.h (PROMOTE_FUNCTION_MODE): Move...
11805         * config/mmix/mmix.c (mmix_promote_function_mode): ... here.
11806         (TARGET_PROMOTE_FUNCTION_MODE): Define.
11807         (TARGET_PROMOTE_FUNCTION_ARGS): Remove.
11808
11809         * config/arm/arm.h (PROMOTE_FUNCTION_MODE): Move...
11810         * config/arm/arm.c (arm_promote_function_mode): ... here, without
11811         complex type handling.
11812         (TARGET_PROMOTE_FUNCTION_MODE): Define.
11813         (TARGET_PROMOTE_FUNCTION_ARGS, TARGET_PROMOTE_FUNCTION_RETURN): Remove.
11814
11815         * config/pa/pa.c (pa_promote_function_mode): New.
11816         (TARGET_PROMOTE_FUNCTION_MODE): Define.
11817         (TARGET_PROMOTE_FUNCTION_RETURN): Remove.
11818
11819         * config/alpha/alpha.c (TARGET_PROMOTE_FUNCTION_ARGS,
11820         TARGET_PROMOTE_FUNCTION_RETURN): Remove.
11821         (TARGET_PROMOTE_FUNCTION_MODE): Define equivalently.
11822         * config/xtensa/xtensa.c: Likewise.
11823         * config/stormy16/stormy16.c: Likewise.
11824         * config/iq2000/iq2000.c: Likewise.
11825         * config/rs6000/rs6000.c: Likewise.
11826         * config/picochip/picochip.c: Likewise.
11827         * config/arc/arc.c: Likewise.
11828         * config/mcore/mcore.c: Likewise.
11829         * config/score/score.c: Likewise.
11830         * config/mips/mips.c: Likewise.
11831         * config/bfin/bfin.c: Likewise.
11832         * config/ia64/ia64.c: Likewise (disabled though).
11833
11834         * config/frv/frv.h: Remove pointless remark.
11835
11836         * doc/tm.texi (PROMOTE_FUNCTION_MODE,
11837         TARGET_PROMOTE_FUNCTION_ARGS,
11838         TARGET_PROMOTE_FUNCTION_RETURN): Consolidate into...
11839         (TARGET_PROMOTE_FUNCTION_MODE): ... this.
11840
11841 2009-08-01  Sebastian Pop  <sebastian.pop@amd.com>
11842
11843         * doc/invoke.texi (-fgraphite-force-parallel): Renamed
11844         -floop-parallelize-all.
11845         * toplev.c (process_options): Rename flag_graphite_force_parallel to
11846         flag_loop_parallelize_all.
11847         * tree-ssa-loop.c (gate_graphite_transforms): Same.
11848         * graphite.c (graphite_transform_loops): Same.
11849         * common.opt: Same.
11850         * graphite-poly.c (apply_poly_transforms): Same.
11851
11852 2009-07-31  Richard Earnshaw  <rearnsha@arm.com>
11853
11854         PR tree-optimization/40914
11855         * ipa-prop.c (ipa_get_ptr_load_param): New argument use_delta,
11856         if set, then check the delta field of the PMF record.
11857         (ipa_get_stmt_member_ptr_load_param): Propagate new param use_delta.
11858         (ipa_analyze_call_uses): Handle machines where the vbit for a PMF
11859         call is stored in the delta.
11860
11861 2009-07-31  Adam Nemet  <anemet@caviumnetworks.com>
11862
11863         * config/mips/mips.md (*clear_upper32_dext): New pattern.
11864
11865 2009-07-31  Uros Bizjak  <ubizjak@gmail.com>
11866
11867         * config/i386/bsd.h (ASM_BYTE): New define.
11868         * config/i386/darwin.h (ASM_BYTE): Rename from ASM_BYTE_OP.
11869         * config/i386/att.h (ASM_BYTE): New define. Use ASM_BYTE instead of
11870         .byte.  Use fputs or putc instead of fprintf where appropriate.
11871         * config/i386/i386-interix.h: Use ASM_BYTE instead of .byte.  Use
11872         fputs or putc instead of fprintf where appropriate.
11873         * config/i386/i386elf.h: Ditto.
11874         * config/i386/sysv4.h: Ditto.
11875
11876         * config/i386/i386.c (TARGET_ASM_BYTE_OP): New define.
11877         * config/i386/i386.md (x86_sahf_1): Use ASM_BYTE instead of .byte.
11878         (*tls_global_dynamic_64): Ditto.
11879
11880 2009-07-31  Christian Bruel  <christian.bruel@st.com>
11881
11882         * gcc/config.gcc (sh*-*-elf): test with_libgloss.
11883
11884 2009-07-31  Ramana Radhakrishnan  <ramana.radhakrishnan@arm.com>
11885
11886         * config/arm/arm.c (arm_arm_address_cost): Fix typo.
11887         Remove dead code for MINUS.
11888
11889 2009-07-31  Anthony Green  <green@moxielogic.com>
11890
11891         * config/moxie/moxie.c (moxie_expand_prologue): Use $r5 instead of
11892         $r12 in prologue.
11893         (moxie_expand_epilogue): Ditto for epilogue.
11894         (moxie_setup_incoming_varargs): ABI change.  Use 5 registers for
11895         incoming arguments.
11896         (moxie_function_arg): Ditto.
11897         (moxie_pass_by_reference): Ditto.
11898         (moxie_arg_partial_bytes): Ditto.
11899         * config/moxie/moxie.h (CALL_USED_REGISTERS): Ditto.
11900         (FUNCTION_ARG_ADVANCE) Ditto.
11901         (REG_PARM_STACK_SPACE) Ditto.
11902         (FUNCTION_ARG_REGNO_P) Dito.
11903
11904         * config.gcc: Add moxie linux config support.
11905         * gcc/config/moxie/uclinux.h: New file.
11906
11907 2009-07-31  DJ Delorie  <dj@redhat.com>
11908
11909         * config/sh/sh.md (UNSPECV_SP_SWITCH_B): New.
11910         (UNSPECV_SP_SWITCH_E): New.
11911         (sp_switch_1): Change to an unspec.
11912         (sp_switch_2): Change to an unspec.  Don't use post-inc when we
11913         replace $r15.
11914         * config/sh/sh.c (sh_expand_prologue): Use the constant pool to
11915         reference the new stack's address
11916
11917 2009-07-30  Sebastian Pop  <sebastian.pop@amd.com>
11918
11919         * Makefile.in (OBJS-common): Added dependence on graphite-blocking.o,
11920         graphite-clast-to-gimple.o, graphite-dependences.o,
11921         graphite-interchange.o, graphite-poly.o, graphite-ppl.o,
11922         graphite-scop-detection.o, graphite-sese-to-poly.o, and sese.o.
11923         (graphite-blocking.o,
11924         graphite-clast-to-gimple.o, graphite-dependences.o,
11925         graphite-interchange.o, graphite-poly.o, graphite-ppl.o,
11926         graphite-scop-detection.o, graphite-sese-to-poly.o, and sese.o): New.
11927         * cfgloop.c (alloc_loop): Set loop->can_be_parallel to false.
11928         * cfgloop.h (struct loop): Add can_be_parallel field.
11929         * common.opt (fgraphite-identity): Moved up.
11930         (fgraphite-force-parallel): New flag.
11931         * graphite.c: Rewrite.
11932         * graphite.h: Rewrite.
11933         * passes.c (init_optimization_passes): Schedule a pass of DCE and LIM
11934         after Graphite.
11935         * toplev.c (graphite_out_file): New file descriptor.
11936         (graphite_in_file): New.
11937         (process_options): flag_graphite_force_parallel cannot be used without
11938         Graphite.
11939         * tree-ssa-loop.c: Include toplev.h.
11940         (gate_graphite_transforms): Enable flag_graphite for
11941         flag_graphite_force_parallel.
11942
11943 2009-07-30  Sebastian Pop  <sebastian.pop@amd.com>
11944
11945         * ChangeLog.graphite: New.
11946         * graphite-blocking.c: New.
11947         * graphite-clast-to-gimple.c: New.
11948         * graphite-clast-to-gimple.h: New.
11949         * graphite-dependences.c: New.
11950         * graphite-dependences.h: New.
11951         * graphite-interchange.c: New.
11952         * graphite-poly.c: New.
11953         * graphite-poly.h: New.
11954         * graphite-ppl.c: New.
11955         * graphite-ppl.h: New.
11956         * graphite-scop-detection.c: New.
11957         * graphite-scop-detection.h: New.
11958         * graphite-sese-to-poly.c: New.
11959         * graphite-sese-to-poly.h: New.
11960         * sese.c: New.
11961         * sese.h: New.
11962
11963 2009-07-30  Sebastian Pop  <sebastian.pop@amd.com>
11964
11965         * tree-chrec.c (evolution_function_right_is_integer_cst): New.
11966         * tree-chrec.h (evolution_function_right_is_integer_cst): Declared.
11967
11968 2009-07-30  Sebastian Pop  <sebastian.pop@amd.com>
11969
11970         * tree-chrec.c (operator_is_linear): Handle BIT_NOT_EXPR.
11971         (scev_is_linear_expression): Return false if the evolution is not
11972         affine multivariate.
11973
11974 2009-07-30  Sebastian Pop  <sebastian.pop@amd.com>
11975
11976         * tree-data-ref.c (graphite_find_data_references_in_stmt): New.
11977         * tree-data-ref.h (graphite_find_data_references_in_stmt): Declared.
11978
11979 2009-07-30  Sebastian Pop  <sebastian.pop@amd.com>
11980
11981         * tree-data-ref.c (debug_data_references): New.
11982         (debug_data_reference): New.
11983         * tree-data-ref.h (debug_data_references): Declared.
11984         (debug_data_reference): Declared.
11985
11986 2009-07-30  Sebastian Pop  <sebastian.pop@amd.com>
11987
11988         * tree-data-ref.c (stmt_simple_memref_p: Removed.
11989         * tree-data-ref.h (scop_p): Removed.
11990         (struct data_reference): Remove field scop.
11991         (DR_SCOP): Removed.
11992         (stmt_simple_memref_p): Removed.
11993
11994 2009-07-30  Sebastian Pop  <sebastian.pop@amd.com>
11995
11996         * cfgloop.h (create_empty_loop_on_edge): Pass an extra argument.
11997         * cfgloopmanip.c (create_empty_loop_on_edge): Leave the loop_latch
11998         basic block empty.
11999
12000 2009-07-30  Sebastian Pop  <sebastian.pop@amd.com>
12001
12002         * doc/invoke.texi (-fgraphite-force-parallel): Documented.
12003
12004 2009-07-30  Sebastian Pop  <sebastian.pop@amd.com>
12005
12006         * doc/invoke.texi (-fgraphite-identity): Documented.
12007
12008 2009-07-30  Sebastian Pop  <sebastian.pop@amd.com>
12009
12010         * tree-scalar-evolution.c: Fix comment.
12011         (instantiate_scev_1): Return unknow from scev instantiation if the
12012         result is not above instantiate_below.
12013
12014 2009-07-30  Sebastian Pop  <sebastian.pop@amd.com>
12015
12016         * tree-scalar-evolution.c (compute_overall_effect_of_inner_loop): Not
12017         static anymore.  Instantiate the symbols that may have been introduced
12018         by chrec_apply.
12019         * tree-scalar-evolution.h (compute_overall_effect_of_inner_loop):
12020         Declared.
12021
12022 2009-07-30  DJ Delorie  <dj@redhat.com>
12023
12024         * config/mep/mep.c (mep_asm_init_sections): Add section flags and
12025         .vliw directive to VLIW sections.
12026
12027 2009-07-30  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
12028
12029         * Makefile.in (AUTOCONF, ACLOCAL, ACLOCAL_AMFLAGS, aclocal_deps):
12030         New variables.
12031         ($(srcdir)/configure, $(srcdir)/aclocal.m4): New rules.
12032         (AUTOHEADER): New variable.
12033         ($(srcdir)/cstamp-h.in): Use it.
12034
12035 2009-07-30  Michael Meissner  <meissner@linux.vnet.ibm.com>
12036             Pat Haugen  <pthaugen@us.ibm.com>
12037             Revital Eres <ERES@il.ibm.com>
12038
12039         * config/rs6000/vector.md (VEC_F): Add VSX support.
12040         (VEC_A): Ditto.
12041         (VEC_N): Ditto.
12042         (mov<mode>): Ditto.
12043         (vector_load_<mode>): Ditto.
12044         (vector_store_<mode>): Ditto.
12045         (vector GPR move split): Ditto.
12046         (vec_reload_and_plus_<mptrsize>): Ditto.
12047         (vec_reload_and_reg_<mptrsize>): Ditto.
12048         (add<mode>3): Ditto.
12049         (sub<mode>3): Ditto.
12050         (mul<mode>3): Ditto.
12051         (neg<mode>2): Ditto.
12052         (abs<mode>2): Ditto.
12053         (smin<mode>3): Ditto.
12054         (smax<mode>3): Ditto.
12055         (vector_eq<mode>): Ditto.
12056         (vector_gt<mode>): Ditto.
12057         (vector_ge<mode>): Ditto.
12058         (vector_gtu<mode>): Ditto.
12059         (vector_select_<mode>_uns): Ditto.
12060         (vector_eq_<mode>_p): Ditto.
12061         (vector_gt_<mode>_p): Ditto.
12062         (vector_ge_<mode>_p): Ditto.
12063         (vector_gtu_<mode>_p): Ditto.
12064         (cr6_test_for_zero): Ditto.
12065         (cr6_test_for_zero_reverse): Ditto.
12066         (cr6_test_for_lt): Ditto.
12067         (cr6_test_for_lt_reverse): Ditto.
12068         (xor<mode>3): Ditto.
12069         (ior<mode>3): Ditto.
12070         (and<mode>3): Ditto.
12071         (one_cmpl<mode>2): Ditto.
12072         (nor<mode>2): Ditto.
12073         (andc<mode>2): Ditto.
12074         (float<VEC_int<mode>2): Ditto.
12075         (unsigned_float<VEC_int><mode>2): Ditto.
12076         (fix_trunc<mode><VEC_int>2): Ditto.
12077         (fixuns_trunc<mode><VEC_int>2): Ditto.
12078         (vec_init<mode>):
12079         (vec_set<mode>): Ditto.
12080         (vec_extract<mode>): Ditto.
12081         (vec_interleave_highv4sf): Ditto.
12082         (vec_interleave_lowv4sf): Ditto.
12083         (vec_realign_load_<mode>): Ditto.
12084         (vec_shl_<mode>): Ditto.
12085         (vec_shr_<mode>): Ditto.
12086         (div<mode>3): New patterns for VSX.
12087         (vec_interleave_highv2df): Ditto.
12088         (vec_interleave_lowv2df): Ditto.
12089         (vec_pack_trunc_v2df): Ditto.
12090         (vec_pack_sfix_trunc_v2df): Ditto.
12091         (vec_pack_ufix_trunc_v2df): Ditto.
12092         (vec_unpacks_hi_v4sf): Ditto.
12093         (vec_unpacks_lo_v4sf): Ditto.
12094         (vec_unpacks_float_hi_v4si): Ditto.
12095         (vec_unpacks_float_lo_v4si): Ditto.
12096         (vec_unpacku_float_hi_v4si): Ditto.
12097         (vec_unpacku_float_lo_v4si): Ditto.
12098         (movmisalign<mode>): Ditto.
12099         (vector_ceil<mode>2): New patterns for vectorizing math library.
12100         (vector_floor<mode>2): Ditto.
12101         (vector_btrunc<mode>2): Ditto.
12102         (vector_copysign<mode>3): Ditto.
12103
12104         * config/rs6000/predicates.md (easy_vector_constant_msb): New
12105         predicate for setting the high bit in each word, used for copysign.
12106
12107         * config/rs6000/ppc-asm.h (f19): Whitespace.
12108         (f32-f63): Define if VSX.
12109         (v0-v31): Define if Altivec.
12110         (vs0-vs63): Define if VSX.
12111
12112         * config/rs6000/t-rs6000 (MD_INCLUDES): Add power7.md and vsx.md.
12113
12114         * config/rs6000/power7.md: New file, provide tuning parameters for
12115         -mcpu=power7.
12116
12117         * config/rs6000/rs6000-c.c (rs6000_macro_to_expand): Add VSX support.
12118         (rs6000_cpu_cpp_builtins): Ditto.
12119         (altivec_overloaded_builtins): Ditto.
12120         (altivec_resolve_overloaded_builtin): Ditto.
12121
12122         * config/rs6000/rs6000.opt (-mno-vectorize-builtins): Add new
12123         debug switch to disable vectorizing simple math builtin
12124         functions.
12125
12126         * config/rs6000/rs6000.c (rs6000_builtin_vectorized_function):
12127         Vectorize simple math builtin functions.
12128         (TARGET_VECTORIZE_BUILTIN_VECTORIZED_FUNCTION): Define target
12129         hook to vectorize math builtins.
12130         (rs6000_override_options): Enable -mvsx on -mcpu=power7.
12131         (rs6000_builtin_conversion): Add VSX/power7 support.
12132         (rs6000_builtin_vec_perm): Ditto.
12133         (vsplits_constant): Add support for loading up a vector constant
12134         with just the high bit set in each part.
12135         (rs6000_expand_vector_init): Add VSX/power7 support.
12136         (rs6000_expand_vector_set): Ditto.
12137         (rs6000_expand_vector_extract): Ditto.
12138         (rs6000_emit_move): Ditto.
12139         (bdesc_3arg): Ditto.
12140         (bdesc_2arg): Ditto.
12141         (bdesc_1arg): Ditto.
12142         (rs6000_expand_ternop_builtin): Ditto.
12143         (altivec_expand_builtin): Ditto.
12144         (rs6000_expand_unop_builtin): Ditto.
12145         (rs6000_init_builtins): Ditto.
12146         (altivec_init_builtins): Ditto.
12147         (builtin_function_type): Ditto.
12148         (rs6000_common_init_builtins): Ditto.
12149         (rs6000_handle_altivec_attribute); Ditto.
12150         (rs6000_mangle_type): Ditto.
12151         (rs6000_vector_mode_supported_p): Ditto.
12152         (rs6000_mode_dependent_address): Altivec addresses with AND -16
12153         are mode dependent.
12154
12155         * config/rs6000/vsx.md: New file for VSX support.
12156
12157         * config/rs6000/rs6000.h (EASY_VECTOR_MSB): New macro for
12158         identifing values with just the most significant bit set.
12159         (enum rs6000_builtins): Add builtins for VSX.  Add simple math
12160         vectorized builtins.
12161
12162         * config/rs6000/altivec.md (UNSPEC_VRFIP): Delete.
12163         (UNSPEC_VRFIM): Delete.
12164         (splitter for loading up vector with most significant bit): New
12165         splitter for vectorizing copysign.
12166         (altivec_vrfiz): Rename from altivec_fturncv4sf2.  Add support for
12167         vectorizing simple math functions.
12168         (altivec_vrfip): Add support for vectorizing simple math functions.
12169         (altivec_vrfim): Ditto.
12170         (altivec_copysign_v4sf3): New insn for Altivec copysign support.
12171
12172         * config/rs6000/rs6000.md (UNSPEC_BPERM): New constant.
12173         (power7.md, vsx.md): Include for power7 support.
12174         (copysigndf3): Use VSX instructions if -mvsx.
12175         (negdf2_fpr): Ditto.
12176         (absdf2_fpr): Ditto.
12177         (nabsdf2_fpr): Ditto.
12178         (adddf3_fpr): Ditto.
12179         (subdf3_fpr): Ditto.
12180         (muldf3_fpr): Ditto.
12181         (divdf3_fpr): Ditto.
12182         (fix_truncdfdi2_fpr): Ditto.
12183         (cmpdf_internal1): Ditto.
12184         (fred, fred_fpr): Convert into expander/insn to add VSX support.
12185         (btruncdf2, btruncdf2_fpr): Ditto.
12186         (ceildf2, ceildf2_fpr): Ditto.
12187         (floordf2, floordf2_fpr): Ditto.
12188         (floatdidf2, floatdidf2_fpr): Ditto.
12189         (fmadddf4_fpr): Name insn.  Use VSX instructions if -mvsx.
12190         (fmsubdf4_fpr): Ditto.
12191         (fnmadddf4_fpr_1): Ditto.
12192         (fnmadddf4_fpr_2): Ditto.
12193         (fnmsubdf4_fpr_1): Ditto.
12194         (fnmsubdf4_fpr_2): Ditto.
12195         (fixuns_truncdfdi2): Add expander for VSX support.
12196         (fix_truncdfdi2): Ditto.
12197         (fix_truncdfsi2): Ditto.
12198         (ftruncdf2): Ditto.
12199         (btruncsf2): Whitespace.
12200         (movdf_hardfloat32): Add support for VSX registers.
12201         (movdf_softfloat32): Ditto.
12202         (movdf_hardfloat64): Ditto.
12203         (movdf_hardfloat64_mfpgpr): Ditto.
12204         (movdf_softfloat64): Ditto.
12205         (movti splitters): Add check for vector registers supporting
12206         TImode in the future.
12207         (bpermd): Add power7 bpermd instruction.
12208
12209         * config/rs6000/altivec.h (vec_div): Define if VSX.
12210         (vec_mul): Ditto.
12211         (vec_msub): Ditto.
12212         (vec_nmadd): Ditto.
12213         (vec_nearbyint): Ditto.
12214         (vec_rint): Ditto.
12215         (vec_sqrt): Ditto.
12216         (all predicates): Use the generic builtin function, and not the V4SF
12217         specific function so that the predicates will work with VSX's V2DF.
12218         (vec_all_*): Ditto.
12219         (vec_any_*): Ditto.
12220
12221         * doc/extend.texi (PowerPC Altivec/VSX Built-in Functions):
12222         Document new VSX functions and types.
12223
12224         * doc/invoke.texi (PowerPc options): Document -mpopcntd, -mvsx
12225         switches.
12226
12227         * doc/md.texi (PowerPC constraints): Document "wd", "wf", "ws",
12228         "wa", and "j" constraints.  Modify "v" to talk about Altivec
12229         instead of just vector.
12230
12231 2009-07-30  Andrew MacLeod  <amacleod@redhat.com>
12232
12233         PR debug/26475
12234         * tree-into-ssa.c (insert_phi_nodes_for, rewrite_add_phi_arguments): Set
12235         location for phi arguments.
12236         (rewrite_update_phi_arguments): Find locations for reaching defs.
12237         * tree-ssa-threadupdate.c (create_edge_and_update_destination_phis):
12238         Add location to add_phi_arg calls.
12239         * tree-loop-districbution.c (update_phis_for_loop_copy): Add locations.
12240         * tree-ssa-loop-manip.c (create_iv, add_exit_phis_edge,
12241         split_loop_exit_edge, tree_transform_and_unroll_loop): Add locations.
12242         * tree-tailcall.c (add_successor_phi_arg, eliminate_tail_call,
12243         create_tailcall_accumulator, tree_optimize_tail_calls_1): Add locations.
12244         * tree.h (struct phi_arg_d): Add location_t to PHI arguments.
12245         * tree-phinodes.c (make_phi_node): Initialize location.
12246         (resize_phi_node): Initialize location to UNKNOWN_LOCATION.
12247         (add_phi_arg): Add location parameter.
12248         (remove_phi_arg_num): Move location when moving phi argument.
12249         * omp-low.c (expand_parallel_call, expand_omp_for_static_chunk): Set
12250         location.
12251         * tree-vect-loop-manip.c (slpeel_update_phis_for_duplicate_loop,
12252         slpeel_update_phi_nodes_for_guard1,
12253         slpeel_update_phi_nodes_for_guard2,
12254         slpeel_tree_duplicate_loop_to_edge_cfg, set_prologue_iterations,
12255         vect_loop_versioning): Set locations.
12256         * tree-parloops.c (create_phi_for_local_result,
12257         transform_to_exit_first_loop, create_parallel_loop): Add locations.
12258         * gimple-pretty-print.c (dump_gimple_phi): Dump lineno's if present.
12259         * tree-vect-loop.c (get_initial_def_for_induction,
12260         vect_create_epilog_for_reduction, vect_finalize_reduction): Add
12261         locations.
12262         * tree-flow-inline.h (gimple_phi_arg_location): New.  Return locus.
12263         (gimple_phi_arg_location_from_edge): New.  Return locus from an edge.
12264         (gimple_phi_arg_set_location): New.  Set locus.
12265         (gimple_phi_arg_has_location): New.  Check for locus.
12266         (redirect_edge_var_map_location): New.  Return locus from var_map.
12267         * tree-vect-data-refs.c (vect_setup_realignment): Set location.
12268         * tree-ssa-phiopt.c (conditional_replacement): Set locus when
12269         combining PHI arguments.
12270         (cond_store_replacement): Set location.
12271         * cfgexpand.c (gimple_assign_rhs_to_tree): Transfer locus if possible.
12272         * grpahite.c (add_loop_exit_phis, add_guard_exit_phis,
12273         scop_add_exit_phis_edge): Add locations.
12274         * tree-cfgcleanup.c (remove_forwarder_block,
12275         remove_forwarder_block_with_phi): Add locations.
12276         * tree-ssa-pre.c (insert_into_preds_of_block): Add locations.
12277         * tree-predcom.c (initialize_root_vars, initialize_root_vars_lm): Add
12278         locations.
12279         * tree-ssa-dce.c (forward_edge_to_pdom): Add locations.
12280         * tree-ssa.c (redirect_edge_var_map_add, ssa_redirect_edge,
12281         flush_pending_stmts): Add source location.
12282         * lambda-code.c (perfect_nestify): Maintain location stack with argument
12283         stack to preserve locations.
12284         * tree-vect-stmts.c (vectorizable_load): Add location.
12285         * tree-inline.c (copy_phis_for_bb): Copy locus.
12286         (setup_one_parameter): Add call locus to inlined parameter stmts.
12287         (initialize_inlined_parameters): Pass in call location as parameter
12288         assignment locus.
12289         (tree_function_versioning): Pass location to setup_one_parameter.
12290         * tree-ssa-phiprop.c (phiprop_insert_phi): Set locations.
12291         * tree-outof-ssa.c (struct _elim_graph): Add source_location vecs for
12292         copy and edge lists.
12293         (insert_partition_copy_on_edge, insert_value_copy_on_edge,
12294         insert_rtx_to_part_on_edge, insert_part_to_rtx_on_edge): Provide a
12295         locus parameter and override the stmt default if provided.
12296         (new_elim_graph, clear_elim_graph, delete_elim_graph,
12297         elim_graph_add_edge, elim_graph_remove_succ_edge,
12298         FOR_EACH_ELIM_GRAPH_SUCC, FOR_EACH_ELIM_GRAPH_PRED, eliminate_build,
12299         elim_forward, elim_unvisited_predecessor, elim_backward, elim_create,
12300         eliminate_phi):  Add locus info in elimination graph for each edge and
12301         value copy.
12302         (insert_backedge_copies): Copy locus if present.
12303         * tree-flow.h (struct _edge_var_map): Add locus field.
12304         * tree-switch_conversions.c (fix_phi_nodes): Add locations.
12305         * tree-cfg.c (reinstall_phi_args, gimple_make_forwarder_block,
12306         add_phi_args_after_copy_edge, gimple_lv_adjust_loop_header_phi): Add
12307         locations.
12308         * ipa-struct-reorg.c (make_edge_and_fix_phis_of_dest): Add locations.
12309
12310 2009-07-30  Martin Jambor  <mjambor@suse.cz>
12311
12312         PR tree-optimization/40570
12313         * ipa-inline.c (cgraph_decide_inlining): Watch out for dead single
12314         use inlining loops.
12315
12316 2009-07-30  Razya Ladelsky <razya@il.ibm.com>
12317
12318         * ssa-loop-manip.c: Include langhooks.h.
12319         (rewrite_phi_with_iv): New.
12320         (rewrite_all_phi_nodes_with_iv): New.
12321         (canonicalize_loop_ivs): Move here from tree-parloops.c.
12322         Remove reduction_list argument. Use rewrite_all_phi_nodes_with_iv.
12323         * tree-parloops.c (loop_parallel_p): Move out all conditions
12324         except dependency check.
12325         (canonicalize_loop_ivs): Move to tree-ssa-loop-manip.c.
12326         (gen_parallel_loop): Call canonicalize_loop_ivs without
12327         reduction_list argument.
12328         (build_new_reduction): New.
12329         (gather_scalar_reductions): New.
12330         (try_get_loop_niter): New.
12331         (try_create_reduction_list): New.
12332         (parallleize_loops): Change the parallel conditions check.
12333         * tree-flow.h (canonicalize_loop_ivs): Remove one argument.
12334         * Makefile.in (tree-ssa-loop-manip.o): Add langhooks.h dependency.
12335
12336 2009-07-30  Dave Korn  <dave.korn.cygwin@gmail.com>
12337
12338         * opt-functions.awk (opt_args): Allow argument to be enclosed in
12339         curly braces.
12340         * doc/options.texi (Option properties):  Mention new quoting syntax.
12341
12342 2009-07-29  Douglas B Rupp  <rupp@gnat.com>
12343
12344         * config/alpha/alpha.c (alpha_start_function):
12345         Handle VMS_DEBUG_MAIN_POINTER
12346         * config/alpha/vms.h (VMS_DEBUG_MAIN_POINTER): Define new macro.
12347         * doc/invoke.texi: Document -mdebug-main switch.
12348
12349 2009-07-29  Richard Henderson  <rth@redhat.com>
12350
12351         * cgraph.c (cgraph_set_call_stmt_including_clones): Tidy.
12352         (cgraph_create_edge_including_clones): Likewise.
12353         * tree-inline.c (copy_bb): Operate on the correct edges
12354         when updating the callgraph.
12355
12356 2009-07-29  Douglas B Rupp  <rupp@gnat.com>
12357
12358         * config/alpha/vms-cc.c: Deleted.
12359         * config/alpha/vms-ld.c: Deleted.
12360         * config/alpha/t-vms64: Moved to config/vms
12361         * config/alpha/vms-crt0-64.c: Moved to config/vms
12362         * config/alpha/vms-crt0.c: Moved to config/vms
12363         * config/alpha/vms-psxcrt0-64.c: Moved to config/vms
12364         * config/alpha/vms-psxcrt0.c: Moved to config/vms
12365         * config/alpha/xm-vms.h: Moved to config/vms
12366         * config/alpha/x-vms: Moved to config/vms
12367         * config/alpha/t-vms (vcrt0.o, pcrt0.o): Move rules to new file
12368         config/vms/t-vms.
12369         * config/vms/t-vms: Moved here from config/alpha. Alpha specific
12370         parts removed. (STMP_FIXPROTO, STMP_FIXINC, LIMITS_H_TEST): Set.
12371         (version): Set.
12372         * config/vms/t-vms64: Moved here from config/alpha
12373         * config/vms/vms-crt0-64.c: Moved here from config/alpha.
12374         (argc,argv,envp): Enforce 32bit malloc'ing.
12375         * config/vms/vms-psxcrt0-64.c: Likewise.
12376         * config/vms/vms-crt0.c: Moved here from config/alpha.
12377         * config/vms/vms-psxcrt0.c: Likewise.
12378         * config/vms/vms-crtl-64.h: New file.
12379         * config/vms/vms-crtl.h: New file.
12380         * config/vms/vms.opt: New file.
12381         * config/vms/xm-vms64.h: New file.
12382         * config/vms/xm-vms.h: Moved here from config/alpha.
12383         (STANARD_EXEC_PREFIX, STANDARD_STARTFILE_PREFIX, STANDARD_INCLUDE_DIR):
12384         Set.
12385         * config/vms/x-vms: Moved here from config/alpha.
12386         (version, VMS_EXTRA_PARTS): Moved to t-vms.
12387         (vms-ld.o, vms-cc.o): Removed.
12388         (LN, LN_S, USE_COLLECT2, POD2MAN): Set.
12389
12390 2009-07-29  Douglas B Rupp  <rupp@gnat.com>
12391
12392         * dwarf2out.c (add_name_and_src_coords_attributes): Push on the
12393         correct stack (obvious VMS fix).
12394
12395 2009-07-29  Douglas B Rupp  <rupp@gnat.com>
12396
12397         * dwarf2out.c (output_file_names): Output VMS style file name, size,
12398         date, version info if VMS_DEBUGGING_INFO defined.
12399         * vmsdgbout.c (vms_file_stats_name): New functon. VMS style file name,
12400         size, date calculating code moved here.
12401
12402 2009-07-29  Paul Brook  <paul@codesourcery.com>
12403
12404         * config/arm/lib1funcs.asm (clear_cache): Use ARM_FUNC_START and
12405         do_push/do_pop.
12406
12407 2009-07-29  Uros Bizjak  <ubizjak@gmail.com>
12408
12409         PR target/40577
12410         * config/alpha/alpha.c (alpha_expand_unaligned_store): Convert src
12411         to DImode when generating insq_le insn.
12412
12413 2009-07-28  Douglas B Rupp  <rupp@gnat.com>
12414
12415         * dwarf2out.c (DWARF2_INDIRECT_STRING_SUPPORT_MISSING_ON_TARGET):
12416         New macro set for VMS_DEBUGGGING_INFO.
12417         (AT_string_form): Use it.
12418
12419 2009-07-28  DJ Delorie  <dj@redhat.com>
12420
12421         * config/mep/mep.c (vtext_section): New.
12422         (vftext_section): New.
12423         (ftext_section): New.
12424         (mep_select_section): Add support for functions.
12425         (mep_unique_section): Likewise.
12426         (mep_asm_init_sections): Likewise.
12427         (mep_encode_section_info): Remove it from here.
12428
12429         * config/mep/mep.h (USE_SELECT_SECTION_FOR_FUNCTIONS): Define.
12430
12431 2009-07-28  Paolo Bonzini  <bonzinI@gnu.org>
12432
12433         * tree.h (TREE_DEPRECATED): Document it is used for types too.
12434         (TYPE_VECTOR_OPAQUE): Use default_def_flag
12435
12436 2009-07-28  Douglas B Rupp  <rupp@gnat.com>
12437
12438         * dwarf2out.c (output_file_names): Test new macro
12439         DWARF2_DIR_SHOULD_END_WITH_SEPARATOR.
12440         (add_comp_dir_attribute): Likewise.
12441
12442 2009-07-28  Kai Tietz  <kai.tietz@onevision.com>
12443
12444         * config/i386/mingw-w64.h (LINK_SPEC): Add
12445         separating space between commands.
12446
12447 2009-07-28  Jan Hubicka  <jh@suse.cz>
12448
12449         PR tree-optimization/40759
12450         * tree-ssa-dce.c (mark_virtual_phi_result_for_renaming): Mark all uses
12451         for renaming.
12452
12453 2009-07-27  DJ Delorie  <dj@redhat.com>
12454
12455         * config/mep/mep.c (mep_expand_builtin_saveregs): Make sure 64-bit
12456         types are dword-aligned.
12457         (mep_expand_va_start): Likewise.
12458
12459 2009-07-27  Olivier Hainque  <hainque@adacore.com>
12460             Douglas B Rupp  <rupp@gnat.com>
12461
12462         * convert.c (convert_to_pointer): Don't assume the target
12463         pointer type is POINTER_SIZE long. Fetch its precision instead.
12464
12465 2009-07-27  Douglas B Rupp  <rupp@gnat.com>
12466
12467         * system.h (fopen): Undefine if macro.
12468
12469 2009-07-27  Jakub Jelinek  <jakub@redhat.com>
12470
12471         * dwarf2out.c (output_cfi_p): Removed.
12472         (output_cfis): New function.
12473         (output_fde): New function, split from output_call_frame_info.
12474         (output_call_frame_info): Use it.
12475         (dwarf2out_switch_text_section): Use output_cfis.
12476
12477 2009-07-24  Kai Tietz  <kai.tietz@onevision.com>
12478
12479         * config/i386/cygming.h (DWARF2_UNWIND_INFO): Error build when
12480         TARGET_BI_ARCH is specified without enabling SJLJ.
12481         * config/i386/mingw32.h (MD_UNWIND_SUPPORT): Define MD_UNWIND_SUPPORT,
12482         if TARGET_64BIT and TARGET_BI_ARCH aren't defined.
12483
12484 2009-07-26  Mikael Pettersson <mikpe@it.uu.se>
12485
12486         * arm.md (negdi2): Use DImode if forcing a value into a register.
12487
12488 2009-07-26  Ira Rosen  <irar@il.ibm.com>
12489
12490         PR tree-optimization/40801
12491         * tree-vect-stmts.c (vectorizable_call): Get previous copy
12492         of vector operand from the previous copy of vector statement.
12493         Pass the correct definition type value to
12494         vect_get_vec_def_for_stmt_copy().
12495
12496 2009-07-25  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
12497
12498         * collect2.c (scan_libraries): Use CONST_CAST2 to perform char ** to
12499         const char ** conversion.
12500
12501 2009-07-25 David Daney <ddaney@caviumnetworks.com>
12502
12503         * system.h (gcc_assert): Invoke __builtin_unreachable() instead of
12504         fancy_abort() if !ENABLE_ASSERT_CHECKING.
12505         (gcc_unreachable): Invoke __builtin_unreachable() if
12506         !ENABLE_ASSERT_CHECKING.
12507
12508 2009-07-25  David Daney  <ddaney@caviumnetworks.com>
12509
12510         PR rtl-optimization/40445
12511         * emit-rtl.c (next_nonnote_insn_bb): New function.
12512         * rtl.h (next_nonnote_insn_bb): Declare new function.
12513         * cfgcleanup.c (try_optimize_cfg): Don't remove an empty block
12514         with no successors that is the successor of the ENTRY_BLOCK.
12515         Continue from the top after removing an empty fallthrough block.
12516         * cfgrtl.c (get_last_bb_insn): Call next_nonnote_insn_bb instead
12517         of next_nonnote_insn.
12518
12519 2009-07-25  David Daney  <ddaney@caviumnetworks.com>
12520
12521         * cfgcleanup.c (old_insns_match_p): Handle the case of empty blocks.
12522
12523 2009-07-25  Martin Jambor  <mjambor@suse.cz>
12524
12525         * c-common.c (c_common_attribute_table): New element for noclone.
12526         (handle_noclone_attribute): New function. Forward-declare.
12527         * tree-inline.c (tree_versionable_function_p): Check for noclone
12528         attribute.
12529         * doc/extend.texi (Labels as Values): Document need for noclone.
12530         (Function Attributes): Document noclone attribute.
12531
12532 2009-07-25  Jakub Jelinek  <jakub@redhat.com>
12533
12534         PR rtl-optimization/34999
12535         * dwarf2out.c (struct dw_fde_struct): Add dw_fde_switch_cfi
12536         and dw_fde_switched_cold_to_hot fields.
12537         (output_cfi_p): New function.
12538         (output_call_frame_info): If fde->dw_fde_switched_sections,
12539         output 2 FDEs instead of one with corrupted header.
12540         (dwarf2out_do_cfi_startproc): New function.
12541         (dwarf2out_begin_prologue): Use it.  Initialize fde->dw_fde_switch_cfi
12542         and fde->dw_fde_switched_cold_to_hot.
12543         (dwarf2out_switch_text_section): Compute
12544         fde->dw_fde_switched_cold_to_hot.  Switch to new text section here.
12545         If dwarf2out_do_cfi_asm, emit .cfi_endproc before it and call
12546         dwarf2out_do_cfi_startproc plus emit again currently active CFI insns.
12547         Otherwise, compute fde->dw_fde_switch_cfi.
12548
12549 2009-07-24  Cary Coutant  <ccoutant@google.com>
12550
12551         * tree-cfg.c (assign_discriminator): Add explicit parentheses.
12552
12553 2009-07-24  Cary Coutant  <ccoutant@google.com>
12554
12555         * cfghooks.c (split_block): Copy discriminator to new block.
12556         * tree-cfg.c (assign_discriminator): Check location of last
12557         instruction in block as well as first.
12558
12559 2009-07-24  Uros Bizjak  <ubizjak@gmail.com>
12560
12561         * config/i386/linux.c: Use fputs or putc instead of fprintf
12562         where appropriate.
12563         * config/i386/gas.h: Ditto.
12564         * config/i386/x86-64.h: Ditto.
12565         * config/i386/att.h: Ditto.
12566
12567 2009-07-24  Andreas Krebbel  <Andreas.Krebbel@de.ibm.com>
12568
12569         * expmed.c (emit_store_flag): Use a recursive call to optimize the
12570         xor case.
12571
12572 2009-07-24  Martin Jambor  <mjambor@suse.cz>
12573
12574         * ipa-prop.h (struct ipa_node_params): New flag node_enqued.
12575         (ipa_push_func_to_list_1): Declare.
12576         (ipa_push_func_to_list): New function.
12577
12578         * ipa-prop.c (ipa_push_func_to_list_1): New function.
12579         (ipa_init_func_list): Call ipa_push_func_to_list_1.
12580         (ipa_push_func_to_list): Removed.
12581         (ipa_pop_func_from_list): Clear node_enqueued flag.
12582
12583 2009-07-24  Andreas Krebbel  <krebbel1@de.ibm.com>
12584
12585         * config/s390/s390.c (override_options): Default
12586         max-unrolled-insns to 100 for z10 tuning.
12587
12588 2009-07-24  Tobias Grosser  <grosser@fim.uni-passau.de>
12589
12590         * Makefile.in (TREE_DATA_REF_H, tree-vrp.o, tree-cfg.o, tree-if-conv.o
12591         tree-ssa-loop.o, tree-ssa-loop-niter.o, tree-ssa-loop-ivcanon.o,
12592         tree-ssa-loop-prefetch.o, tree-predcom.o, tree-affine.o,
12593         tree-scalar-evolution.o, tree-data-ref.o, tree-vect-loop.o,
12594         tree-vect-data-refs.o, tree-loop-linear.o, tree-loop-distribution.o
12595         tree-parloops.o, tree-pretty-printer.o, fold-const.o, tree-ssa-dce.o,
12596         lambda-code.o, params.o): Cleanup use of SCEV_H and TREE_DATA_REF_H.
12597
12598 2009-07-24  Kai Tietz  <kai.tietz@onevision.com>
12599
12600         * config/i386/mingw-w64.h (STANDARD_INCLUDE_DIR): Remove and
12601         use default set in mingw32.h header.
12602         * config/i386/mingw32.h (STANDARD_INCLUDE_DIR): Use for 32-bit and
12603         64-bit /mingw/include path.
12604         (STANDARD_STARTFILE_PREFIX_1): Use for 32-bit and 64-bit /mingw/lib
12605         path.
12606
12607 2009-07-23  Neil Vachharajani  <nvachhar@google.com>
12608
12609         PR rtl-optimization/40209
12610         * loop-iv.c (iv_analysis_loop_init): Call df_note_add_problem.
12611
12612 2009-07-23  Uros Bizjak  <ubizjak@gmail.com>
12613
12614         * config/i386/i386.c: Use ASM_LONG instead of .long.  Concatenate
12615         ASM_LONG, LPREFIX, MCOUNT_NAME and PROFILE_COUNT_REGISTER strings
12616         with the rest of string where appropriate.  Use fputs or putc
12617         instead of fprintf where appropriate.
12618
12619 2009-07-22  Michael Meissner  <meissner@linux.vnet.ibm.com>
12620             Pat Haugen  <pthaugen@us.ibm.com>
12621             Revital Eres <ERES@il.ibm.com>
12622
12623         * config/rs6000/vector.md: New file.  Move most of the vector
12624         expander support here from altivec.md to allow for the VSX vector
12625         unit in the future.  Add support for secondary_reload patterns.
12626         Rewrite the patterns for vector comparison, and vector comparison
12627         predicate instructions so that the RTL expresses the desired
12628         behavior, instead of using unspec.
12629
12630         * config/rs6000/constraints.md ("f" constraint): Use
12631         rs6000_constraints to hold the precalculated register class.
12632         ("d" constraint): Ditto.
12633         ("wd" constraint): New constraint for VSX.
12634         ("wf" constraint): Ditto.
12635         ("ws" constraint): Ditto.
12636         ("wa" constraint): Ditto.
12637         ("wZ" constraint): Ditto.
12638         ("j" constraint): Ditto.
12639
12640         * config/rs6000/predicates.md (vsx_register_operand): New
12641         predicate for VSX.
12642         (vfloat_operand): New predicate for vector.md.
12643         (vint_operand): Ditto.
12644         (vlogical_operand): Ditto.
12645         (easy_fp_constant): If VSX, 0.0 is an easy constant.
12646         (easy_vector_constant): Add VSX support.
12647         (altivec_indexed_or_indirect_operand): New predicate for
12648         recognizing Altivec style memory references with AND -16.
12649
12650         * config/rs6000/rs6000.c (rs6000_vector_reload): New static global
12651         for vector secondary reload support.
12652         (rs6000_vector_reg_class): Delete, replacing it with
12653         rs6000_constraints.
12654         (rs6000_vsx_reg_class): Ditto.
12655         (rs6000_constraints): New array to hold the register classes of
12656         each of the register constraints that can vary at runtime.
12657         (builtin_mode_to_type): New static array for builtin function type
12658         creation.
12659         (builtin_hash_table): New static hash table for builtin function
12660         type creation.
12661         (TARGET_SECONDARY_RELOAD): Define target hook.
12662         (TARGET_IRA_COVER_CLASSES): Ditto.
12663         (rs6000_hard_regno_nregs_internal): If -mvsx, floating point
12664         registers are 128 bits if VSX memory reference instructions are used.
12665         (rs6000_hard_regno_mode_ok): For VSX, only check if the VSX memory
12666         unit is being used.
12667         (rs6000_debug_vector_unit): Move into rs6000_debug_reg_global.
12668         (rs6000_debug_reg_global): Move -mdebug=reg statements here.
12669         Print several of the scheduling related parameters.
12670         (rs6000_init_hard_regno_mode_ok): Switch to putting constraints in
12671         rs6000_constraints instead of rs6000_vector_reg_class.  Move
12672         -mdebug=reg code to rs6000_debug_reg_global.  Add support for
12673         -mvsx-align-128 debug switch.  Drop testing float_p if VSX or
12674         Altivec.  Add VSX support.  Setup for secondary reload support on
12675         Altivec/VSX registers.
12676         (rs6000_override_options): Make power7 set the scheduling groups
12677         like the power5.  Add support for new debug switches to override
12678         the scheduling defaults.  Temporarily disable -mcpu=power7 from
12679         setting -mvsx.  Add support for debug switches -malways-hint,
12680         -msched-groups, and -malign-branch-targets.
12681         (rs6000_buitlin_conversion): Add support for returning unsigned
12682         vector conversion functions to fix regressions due to stricter
12683         type checking.
12684         (rs6000_builtin_mul_widen_even): Ditto.
12685         (rs6000_builtin_mul_widen_odd): Ditto.
12686         (rs6000_builtin_vec_perm): Ditto.
12687         (rs6000_vec_const_move): On VSX, use xxlxor to clear register.
12688         (rs6000_expand_vector_init): Initial VSX support for using xxlxor
12689         to zero a register.
12690         (rs6000_emit_move): Fixup invalid const symbol_ref+reg that is
12691         generated upstream.
12692         (bdesc_3arg): Add builtins for unsigned types.  Add builtins for
12693         VSX types for bit operations.  Changes to accomidate vector.md.
12694         (bdesc_2arg): Ditto.
12695         (bdesc_1arg): Ditto.
12696         (struct builtin_description_predicates): Rewrite predicate
12697         handling so that RTL describes the operation, instead of passing
12698         the instruction to be used as a string argument.
12699         (bdesc_altivec_preds): Ditto.
12700         (altivec_expand_predicate_builtin): Ditto.
12701         (altivec_expand_builtin): Ditto.
12702         (rs6000_expand_ternop_builtin): Use a switch instead of an if
12703         statement for vsldoi support.
12704         (altivec_expand_ld_builtin): Change to use new names from vector.md.
12705         (altivec_expand_st_builtin): Ditto.
12706         (paired_expand_builtin): Whitespace changes.
12707         (rs6000_init_builtins): Add V2DF/V2DI types.  Initialize the
12708         builtin_mode_to_type table for secondary reload.  Call
12709         builtin_function_type to build random builtin functions.
12710         (altivec_init_builtins): Change to use builtin_function_type to
12711         create builtin function types dynamically as we need them.
12712         (builtin_hash_function): New support for hashing the tree types
12713         for builtin function as we need it, rather than trying to build
12714         all of the trees that we need.  Add initial preliminary VSX support.
12715         (builtin_function_type): Ditto.
12716         (builtin_function_eq): Ditto.
12717         (builtin_hash_struct): Ditto.
12718         (rs6000_init_builtins): Ditto.
12719         (rs6000_common_init_builtins): Ditto.
12720         (altivec_init_builtins): Ditto.
12721         (rs6000_common_init_builtins): Ditto.
12722         (enum reload_reg_type): New enum for simplifing reg classes.
12723         (rs6000_reload_register_type): Simplify register classes into GPR,
12724         Vector, and other registers.  Altivec and VSX addresses in reload.
12725         (rs6000_secondary_reload_inner): Ditto.
12726         (rs6000_ira_cover_classes): New target hook, that returns the
12727         appropriate cover classes, based on -mvsx being used or not.
12728         (rs6000_secondary_reload_class): Add VSX support.
12729         (get_vec_cmp_insn): Delete, rewrite vector conditionals.
12730         (get_vsel_insn): Ditto.
12731         (rs6000_emit_vector_compare): Rewrite vector conditional support
12732         so that where we can, we use RTL operators, instead of blindly use
12733         UNSPEC.
12734         (rs6000_emit_vector_select): Ditto.
12735         (rs6000_emit_vector_cond_expr): Ditto.
12736         (rs6000_emit_minmax): Directly generate min/max under altivec, vsx.
12737         (create_TOC_reference): Add -mdebug=addr support.
12738         (emit_frame_save): VSX loads/stores need register indexed addressing.
12739
12740         * config/rs6000/rs6000.md: Include vector.md.
12741
12742         * config/rs6000/t-rs6000 (MD_INCLUDES): Add vector.md.
12743
12744         * config/rs6000/rs6000-c.c (altivec_overloaded_builtins): Add
12745         support for V2DI, V2DF in logical, permute, select operations.
12746
12747         * config/rs6000/rs6000.opt (-mvsx-scalar-double): Add new debug
12748         switch for vsx/power7.
12749         (-mvsx-scalar-memory): Ditto.
12750         (-mvsx-align-128): Ditto.
12751         (-mallow-movmisalign): Ditto.
12752         (-mallow-df-permute): Ditto.
12753         (-msched-groups): Ditto.
12754         (-malways-hint): Ditto.
12755         (-malign-branch-targets): Ditto.
12756
12757         * config/rs6000/rs6000.h (IRA_COVER_CLASSES): Delete, use target
12758         hook instead.
12759         (IRA_COVER_CLASSES_PRE_VSX): Cover classes if not -mvsx.
12760         (IRA_COVER_CLASSES_VSX): Cover classes if -mvsx.
12761         (rs6000_vector_reg_class): Delete.
12762         (rs6000_vsx_reg_class): Ditto.
12763         (enum rs6000_reg_class_enum): New enum for the constraints that
12764         vary based on target switches.
12765         (rs6000_constraints): New array to hold the register class for all
12766         of the register constraints that vary based on the switches used.
12767         (ALTIVEC_BUILTIN_*_UNS): Add unsigned builtin functions.
12768         (enum rs6000_builtins): Add unsigned varients for the builtin
12769         declarations returned by target hooks for expanding multiplies,
12770         select, and permute operations.  Add VSX builtins.
12771         (enum rs6000_builtin_type_index): Add entries for VSX.
12772         (V2DI_type_node): Ditto.
12773         (V2DF_type_node): Ditto.
12774         (unsigned_V2DI_type_node): Ditto.
12775         (bool_long_type_node): Ditto.
12776         (intDI_type_internal_node): Ditto.
12777         (uintDI_type_internal_node): Ditto.
12778         (double_type_internal_node): Ditto.
12779
12780         * config/rs6000/altivec.md (whole file): Move all expanders to
12781         vector.md from altivec.md.  Rename insn matching functions to be
12782         altivec_foo.
12783         (UNSPEC_VCMP*): Delete, rewrite vector comparisons.
12784         (altivec_vcmp*): Ditto.
12785         (UNSPEC_VPERM_UNS): New, add for unsigned types using vperm.
12786         (VM): New iterator for moves that includes the VSX types.
12787         (altivec_vperm_<mode>): Add VSX types.  Add unsigned types.
12788         (altivec_vperm_<mode>_uns): New, for unsigned types.
12789         (altivec_vsel_*): Rewrite vector comparisons and predicate builtins.
12790         (altivec_eq<mode>): Ditto.
12791         (altivec_gt<mode>): Ditto.
12792         (altivec_gtu<mode>): Ditto.
12793         (altivec_eqv4sf): Ditto.
12794         (altivec_gev4sf): Ditto.
12795         (altivec_gtv4sf): Ditto.
12796         (altivec_vcmpbfp_p): Ditto.
12797
12798 2009-07-23  Richard Earnshaw  <rearnsha@arm.com>
12799
12800         * arm.md (split for ior/xor with shift and zero-extend): Cast op3 to
12801         unsigned HWI.
12802
12803 2009-07-23  Uros Bizjak  <ubizjak@gmail.com>
12804
12805         PR target/40832
12806         * config/i386/i386.c (output_387_ffreep): Rewrite to use
12807         ASM_SHORT instead of .word.
12808         * config/i386/i386.md (*tls_global_dynamic_64): Use ASM_SHORT
12809         instead of .word in asm template.
12810
12811 2009-07-22  Vladimir Makarov  <vmakarov@redhat.com>
12812
12813         PR target/37488
12814         * ira-lives.c (bb_has_abnormal_call_pred): New function.
12815         (process_bb_node_lives): Use it.
12816
12817         * ira.c (setup_cover_and_important_classes): Don't setup
12818         ira_important_class_nums.  Add cover classes to the end of
12819         important classes.
12820         (cover_class_order, comp_reg_classes_func, reorder_important_classes):
12821         New.
12822         (find_reg_class_closure): Use reorder_important_classes.
12823
12824         * config/i386/i386.h (IRA_COVER_CLASSES): Remove.
12825
12826         * config/i386/i386.c (i386_ira_cover_classes): New function.
12827         (TARGET_IRA_COVER_CLASSES): Redefine.
12828
12829         * doc/tm.texi (TARGET_IRA_COVER_CLASSES): Add a comment about
12830         importance of order of cover classes in the array.
12831
12832 2009-07-22  Diego Novillo  <dnovillo@google.com>
12833
12834         * tree-pass.h (TDF_EH): Define.
12835         * gimple-pretty-print.c (dump_gimple_stmt): If FLAGS
12836         contains TDF_EH, print the EH region number holding GS.
12837         * tree-dump.c (dump_options): Add "eh".
12838         * doc/invoke.texi: Document it.
12839
12840 2009-07-22  Doug Kwan  <dougkwan@google.com>
12841
12842         * config/arm/arm.md (subdi3) Copy non-reg values to DImode registers.
12843
12844 2009-07-22  Michael Matz  <matz@suse.de>
12845
12846         PR tree-optimization/35229
12847         PR tree-optimization/39300
12848
12849         * tree-ssa-pre.c (includes): Include tree-scalar-evolution.h.
12850         (inhibit_phi_insertion): New function.
12851         (insert_into_preds_of_block): Call it for REFERENCEs.
12852         (init_pre): Initialize and finalize scalar evolutions.
12853         * Makefile.in (tree-ssa-pre.o): Depend on tree-scalar-evolution.h .
12854
12855 2009-07-22  Uros Bizjak  <ubizjak@gmail.com>
12856
12857         * config/i386/predicates.md (zero_extended_scalar_load_operand):
12858         Use CONST_VECTOR_NUNITS to determine number of elements.
12859
12860 2009-07-22  Andreas Krebbel  <krebbel1@de.ibm.com>
12861
12862         * config/s390/constraints.md (ZQ, ZR, ZS, ZT): New constraints.
12863         (U, W): Constraints are now deprecated and will be removed if we
12864         run out of letters.
12865         * config/s390/s390.md (U, W): Replaced with ZQZR, ZSZT throughout
12866         the file.
12867         ("prefetch"): Add the stcmh instruction for prefetching.
12868         * config/s390/s390.c (s390_symref_operand_p): Function moved. No
12869         changes.
12870         (s390_short_displacement): Return always true if compiling for
12871         machines not providing the long displacement facility.
12872         (s390_mem_constraint): Support the new constraint letter Z.
12873         (s390_check_qrst_address): New function.
12874
12875 2009-07-21  DJ Delorie  <dj@redhat.com>
12876
12877         * config/mep/mep.c (mep_legitimize_arg): Leave control registers
12878         alone too.
12879
12880 2009-07-21  Jason Merrill  <jason@redhat.com>
12881
12882         * c-common.c (max_tinst_depth): Increase default to 1024.
12883
12884 2009-07-21  Uros Bizjak  <ubizjak@gmail.com>
12885
12886         * config/i386/sse.md (vec_unpacku_float_hi_v4si): New expander.
12887         (vec_unpacku_float_lo_v4si): Ditto.
12888
12889 2009-07-21  Uros Bizjak  <ubizjak@gmail.com>
12890
12891         PR target/40811
12892         * config/i386/sse.md (sse2_cvtudq2ps): New expander.
12893         (enum ix86_builtins): Add IX86_BUILTIN_CVTUDQ2PS.
12894         (builtin_description): Add __builtin_ia32_cvtudq2ps.
12895         (ix86_vectorize_builtin_conversion): Handle IX86_BUILTIN_CVTUDQ2PS.
12896
12897 2009-07-21  Jakub Jelinek  <jakub@redhat.com>
12898
12899         PR tree-optimization/40813
12900         * tree-inline.c (copy_bb): Regimplify RHS after last stmt, not before
12901         it.
12902
12903 2009-07-21  Kaz Kojima  <kkojima@gcc.gnu.org>
12904
12905         * config/sh/sh.c (sh_gimplify_va_arg_expr): Wrap the result
12906         with a NOP_EXPR if needed.
12907
12908 2009-07-21  Paul Brook <paul@codesourcery.com>
12909
12910         * tree-vectorizer.c (increase_alignment): Handle nested arrays.
12911         Terminate debug dump with newline.
12912
12913 2009-07-20  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
12914
12915         * pa.c (compute_zdepwi_operands): Limit deposit length to 32 - lsb.
12916         Cast "1" to unsigned HOST_WIDE_INT.
12917         (compute_zdepdi_operands): Limit maximum length to 64 bits.  Limit
12918         deposit length to the maximum length - lsb.  Extend length if
12919         HOST_BITS_PER_WIDE_INT is 32.
12920
12921 2009-07-20  Olatunji Ruwase <tjruwase@google.com>
12922
12923         * cgraph.h (constant_pool_htab): New function.
12924         (constant_descriptor_tree): Move from varasm.c.
12925         * varasm.c (constant_pool_htab): New function.
12926         (constant_descriptor_tree): Move to cgraph.h.
12927
12928 2009-07-20  Olatunji Ruwase  <tjruwase@google.com>
12929
12930         * toplev.c: Invoke FINISH_UNIT callbacks before call to finalize().
12931
12932 2009-07-20  Shujing Zhao  <pearly.zhao@oracle.com>
12933
12934         * Makefile.in (TREE_INLINE_H, tree-inline.o, cgraph.o): Remove
12935         $(VARRAY_H).
12936
12937 2009-07-20  Xinliang David Li  <davidxl@google.com>
12938
12939         * dbgcnt.c (dbg_cnt_set_limit_by_name): Add length check.
12940
12941 2009-07-20  Adam Nemet  <anemet@caviumnetworks.com>
12942
12943         * config/mips/mips.md (move_type): Add arith.
12944         (type): Handle arith.
12945         (zero_extendsidi2): Rename this into ...
12946         (*zero_extendsidi2): ... this.  Don't match if ISA_HAS_EXT_INS.
12947         (zero_extendsidi2): New expander.
12948         (*zero_extendsidi2_dext): New pattern.
12949
12950 2009-07-20  Nick Clifton  <nickc@redhat.com>
12951
12952         * config.gcc (mips64-*-*): Add definition of tm_defines in order
12953         to set MIPS_ABI_DEFAULT.
12954         * config/mips/vr.h (MIPS_ABI_DEFAULT): Remove definition.
12955
12956 2009-07-20  Jakub Jelinek  <jakub@redhat.com>
12957
12958         * tree-object-size.c (addr_object_size): Handle unions with
12959         array in it as last field of structs in __bos (, 1) as __bos (, 0).
12960
12961         PR tree-optimization/40792
12962         * tree.c (build_function_type_skip_args): Remove bogus assert.
12963
12964 2009-07-20  Jan Hubicka  <jh@suse.cz>
12965             Martin Jambor  <mjambor@suse.cz>
12966
12967         * cgraph.h (combined_args_to_skip): New field.
12968         * cgraph.c (cgraph_create_virtual_clone): Properly handle
12969         combined_args_to_skip and args_to_skip.
12970         * tree-inline.c (update_clone_info): New function.
12971         (tree_function_versioning): Call update_clone_info.
12972         * cgraphunit.c (cgraph_materialize_clone): Dump materialized
12973         functions.
12974         (cgraph_materialize_all_clones): More extensive dumping, working
12975         with combined_args_to_skip rather than args_to_skip.
12976
12977 2009-07-20  Ira Rosen  <irar@il.ibm.com>
12978
12979         * tree-vectorizer.h (vectorizable_condition): Add parameters.
12980         * tree-vect-loop.c (vect_is_simple_reduction): Support COND_EXPR.
12981         (get_initial_def_for_reduction): Likewise.
12982         (vectorizable_reduction): Skip the check of first operand in case
12983         of COND_EXPR. Add check that it is outer loop vectorization if
12984         nested cycle was detected. Call vectorizable_condition() for
12985         COND_EXPR. If reduction epilogue cannot be created do not fail for
12986         nested cycles (if it is not double reduction). Assert that there
12987         is only one type in the loop in case of COND_EXPR. Call
12988         vectorizable_condition() to vectorize COND_EXPR.
12989         * tree-vect-stmts.c (vectorizable_condition): Update comment.
12990         Add parameters. Allow nested cycles if called from
12991         vectorizable_reduction(). Use reduction vector variable if provided.
12992         (vect_analyze_stmt): Call vectorizable_reduction() before
12993         vectorizable_condition().
12994         (vect_transform_stmt): Update call to vectorizable_condition().
12995
12996 2009-07-20  Christian Bruel  <christian.bruel@st.com>
12997
12998         * config/sh/sh.opt (-mfmovd): Resurrect and document.
12999         * doc/invoke.texi (-mfmovd): Likewise.
13000         * config/sh/sh.h (TARGET_FMOVD, MASK_FMOVD): Remove default setting.
13001
13002 2009-07-20  Jan Hubicka  <jh@suse.cz>
13003
13004         * tree-ssa-dce.c (remove_dead_phis): Only look for abnormal PHIs
13005         when handling SSA name.
13006
13007 2009-07-19  Jan Hubicka  <jh@suse.cz>
13008
13009         PR tree-optimization/40676
13010         * tree-ssa-dce.c (eliminate_unnecessary_stmts): Do renaming on all
13011         virtual PHIs in empty BBs.
13012
13013 2009-07-18  Adam Nemet  <anemet@caviumnetworks.com>
13014
13015         * combine.c (make_compound_operation) <SUBREG>: If force_to_mode
13016         re-expanded the compound use gen_lowpart instead to convert to the
13017         desired mode.
13018
13019 2009-07-18  Adam Nemet  <anemet@caviumnetworks.com>
13020
13021         * combine.c (try_widen_shift_mode): Add COUNT, OUTER_CODE and
13022         OUTER_CONST arguments.
13023         <LSHIFTRT>: Use them to allow widening if the bits shifted in from
13024         the new wider mode will be masked off.
13025         (simplify_shift_const_1): Adjust calls to try_widen_shift_mode.
13026
13027 2009-07-18  Adam Nemet  <anemet@caviumnetworks.com>
13028
13029         * combine.c (try_widen_shift_mode) <LSHIFTRT>: Allow widening if the
13030         high-order bits are zero.
13031
13032 2009-07-18  Adam Nemet  <anemet@caviumnetworks.com>
13033
13034         * combine.c (simplify_shift_const_1): Split code to determine
13035         shift_mode into ...
13036         (try_widen_shift_mode): ... here.  Allow widening for ASHIFTRT if the
13037         new bits shifted in are identical to the old sign bit.
13038
13039 2009-07-18  Richard Guenther  <rguenther@suse.de>
13040
13041         PR c/40787
13042         * gimplify.c (gimplify_call_expr): Reject code using results from
13043         functions returning void.
13044
13045 2009-07-18  Richard Sandiford  <r.sandiford@uk.ibm.com>
13046
13047         * doc/md.texi: Document the new PowerPC "es" constraint.
13048         Document that "m" can include automodified addresses on this target,
13049         and explain how %U must be used.  Extend the "Q" and "Z" documentation
13050         to suggest "es" as well as "m".
13051         * config/rs6000/constraints.md (es): New memory constraint.
13052         (Q, Z): Update strings to match new documentation.
13053
13054 2009-07-18  Richard Sandiford  <r.sandiford@uk.ibm.com>
13055
13056         * config/rs6000/rs6000.c (rs6000_mode_dependent_address): Allow any
13057         offset from virtual_stack_vars_rtx and arg_pointer_rtx.
13058         * config/rs6000/predicates.md (volatile_mem_operand): Use
13059         offsettable_nonstrict_memref_p.
13060         * config/rs6000/rs6000.md (*floatsidf2_internal): Remove split check.
13061         (*floatunssidf2_internal): Likewise.
13062         (*fix_truncdfsi2_internal): Likewise.
13063         (*fix_trunctfsi2_internal): Likewise.
13064
13065 2009-07-17  Anatoly Sokolov  <aesok@post.ru>
13066
13067         * config/avr/avr-devices.c (avr_mcu_t): Add atmega8u2, atmega16u2 and
13068         atmega32u2 devices.
13069         * config/avr/t-avr (MULTILIB_MATCHES): (Ditto.).
13070
13071 2009-07-17  Richard Guenther  <rguenther@suse.de>
13072
13073         PR c/40401
13074         * tree-pass.h (pass_diagnose_omp_blocks): Declare.
13075         (pass_warn_unused_result): Likewise.
13076         (TODO_set_props): Remove.
13077         * omp-low.c (diagnose_omp_structured_block_errors): Change to
13078         run as a pass.
13079         (pass_diagnose_omp_blocks): Define.
13080         * c-decl.c (pop_file_scope): Do not finalize the CU here.
13081         (c_gimple_diagnostics_recursively): Remove.
13082         (finish_function): Do not call it.
13083         (c_write_global_declarations): Continue after errors.
13084         Finalize the CU here.
13085         * c-gimplify.c (c_genericize): Do not gimplify here.
13086         * c-common.c (c_warn_unused_result): Move ...
13087         * tree-cfg.c (do_warn_unused_result): ... here.
13088         (run_warn_unused_result): New function.
13089         (gate_warn_unused_result): New function.
13090         (pass_warn_unused_result): New pass.
13091         * c-common.h (c_warn_unused_result): Remove.
13092         * flags.h (flag_warn_unused_result): Declare.
13093         * c-opts.c (c_common_init_options): Enable flag_warn_unused_result.
13094         * opts.c (flag_warn_unused_result): Initialize to false.
13095         * toplev.c (compile_file): Add comment.
13096         * omp-low.c (create_omp_child_function): Do not register
13097         the function with the frontend.
13098         (diagnose_omp_structured_block_errors): Prepare to be
13099         called as optimization pass.
13100         (gate_diagnose_omp_blocks): New function.
13101         (pass_diagnose_omp_blocks): New pass.
13102         * cgraph.h (cgraph_optimize): Remove.
13103         (cgraph_analyze_function): Likewise.
13104         * cgraph.c (cgraph_add_new_function): Gimplify C++ thunks.
13105         * cgraphunit.c (cgraph_lower_function): Lower nested functions
13106         before their parents here.
13107         (cgraph_finalize_function): Not here.
13108         (cgraph_analyze_function): Gimplify functions here.
13109         (cgraph_finalize_compilation_unit): Continue after errors.
13110         Optimize the callgraph from here.
13111         (cgraph_optimize): Make static.
13112         * langhooks.c (write_global_declarations): Finalize the CU.
13113         * gimplify.c (gimplify_asm_expr): Do not emit ASMs with errors.
13114         (gimplify_function_tree): Assert we gimplify only once.
13115         Set PROP_gimple_any property.
13116         * tree-nested.c (gimplify_all_functions): New function.
13117         (lower_nested_functions): Gimplify all nested functions.
13118         * gimple.h (diagnose_omp_structured_block_errors): Remove.
13119         * passes.c (init_optimization_passes): Add pass_warn_unused_result
13120         and pass_diagnose_omp_blocks after gimplification.  Do not
13121         set TODO_set_props on all_lowering_passes.
13122         (execute_one_pass): Do not handle TODO_set_props.
13123         * Makefile.in (cgraphunit.o): Add $(TREE_DUMP_H) dependency.
13124         (gimplify.o): Add tree-pass.h dependency.
13125         * tree-inline.c (copy_statement_list): Properly copy STATEMENT_LIST.
13126         (copy_tree_body_r): Properly handle TARGET_EXPR like SAVE_EXPR.
13127         (unsave_r): Likewise.
13128         * c-omp.c (c_finish_omp_atomic): Set DECL_CONTEXT on the
13129         temporary variable.
13130
13131 2009-07-17  Sandra Loosemore  <sandra@codesourcery.com>
13132
13133         * doc/service.texi (Service): Restore previously removed link,
13134         which isn't broken after all.
13135
13136 2009-07-17  Richard Guenther  <rguenther@suse.de>
13137
13138         PR tree-optimization/40321
13139         * tree-ssa-pre.c (add_to_exp_gen): Also add names defined by
13140         PHI nodes to the maximal set.
13141         (make_values_for_phi): Add PHI arguments to the maximal set.
13142         (execute_pre): Dump PHI_GEN and the maximal set.
13143
13144 2009-07-17  Jakub Jelinek  <jakub@redhat.com>
13145
13146         PR c++/40780
13147         * gimplify.c (gimplify_conversion): Don't change non-conversions into
13148         VIEW_CONVERT_EXPR.
13149
13150 2009-07-16  Sandra Loosemore  <sandra@codesourcery.com>
13151
13152         * doc/extend.texi (Nested Functions): Replace broken link with
13153         textual reference.
13154         * doc/service.texi (Service): Remove broken link.
13155
13156 2009-07-16  H.J. Lu  <hongjiu.lu@intel.com>
13157
13158         PR bootstrap/40781
13159         * builtins.c (expand_builtin_memcmp): Use loc instead of
13160         EXPR_LOCATION (exp).
13161         (expand_builtin_strncmp): Likewise.
13162
13163 2009-07-17  Aldy Hernandez  <aldyh@redhat.com>
13164             Manuel López-Ibáñez  <manu@gcc.gnu.org>
13165
13166         PR 40435
13167         * tree-complex.c, tree-loop-distribution.c, tree.c, tree.h,
13168         builtins.c, fold-const.c, omp-low.c, cgraphunit.c, tree-ssa-ccp.c,
13169         tree-ssa-dom.c, gimple-low.c, expr.c, tree-ssa-ifcombine.c,
13170         c-decl.c, stor-layout.c, tree-if-conv.c, c-typeck.c, gimplify.c,
13171         calls.c, tree-sra.c, tree-mudflap.c, tree-ssa-copy.c,
13172         tree-ssa-forwprop.c, c-convert.c, c-omp.c, varasm.c,
13173         tree-inline.c, c-common.c, c-common.h, gimple.c,
13174         tree-switch-conversion.c, gimple.h, tree-cfg.c, c-parser.c,
13175         convert.c: Add location argument to fold_{unary,binary,ternary},
13176         fold_build[123], build_call_expr, build_size_arg,
13177         build_fold_addr_expr, build_call_array, non_lvalue, size_diffop,
13178         fold_build1_initializer, fold_build2_initializer,
13179         fold_build3_initializer, fold_build_call_array,
13180         fold_build_call_array_initializer, fold_single_bit_test,
13181         omit_one_operand, omit_two_operands, invert_truthvalue,
13182         fold_truth_not_expr, build_fold_indirect_ref, fold_indirect_ref,
13183         combine_comparisons, fold_builtin_*, fold_call_expr,
13184         build_range_check, maybe_fold_offset_to_address, round_up,
13185         round_down.
13186
13187 2009-07-16  Jason Merrill  <jason@redhat.com>
13188
13189         PR libstdc++/37907
13190         * c-common.c (c_common_reswords): Add __is_standard_layout
13191         and __is_trivial.
13192         * c-common.h (enum rid): Add RID_IS_STD_LAYOUT and RID_IS_TRIVIAL.
13193         * doc/implement-cxx.texi: New.
13194         * doc/gcc.texi: Include it.
13195
13196 2009-07-16  DJ Delorie  <dj@redhat.com>
13197
13198         * config/m32c/m32c.c (m32c_compare_redundant): Avoid removing
13199         compares that may be indirectly affected by previous instructions.
13200
13201 2009-07-16  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
13202
13203         * builtins.c (do_mpc_arg2): New.
13204         (fold_builtin_2): Fold builtin cpow.
13205         * real.h (HAVE_mpc_pow): New.
13206
13207 2009-07-16  Bingfeng Mei  <bmei@broadcom.com>
13208
13209         * modulo-sched.c (sms_schedule): stage_count <= 1 as correct
13210         comparison to skip unprofitable schedule
13211
13212 2009-07-16  Simon Baldwin  <simonb@google.com>
13213
13214         * gcc.c (option_map): New flag -no-canonical-prefixes.
13215         * (display_help): Print help text for new flag.
13216         * (process_command): Move options translation and language specifics
13217         and handle new flag early.  Use it to set a function pointer to a
13218         prefix builder.  Replace make_relative_prefix calls with calls to
13219         the function pointed to.  Ignore new flag in regular options handling.
13220         * doc/invoke.texi (Overall Options): Documented -no-canonical-prefixes.
13221
13222 2009-07-15  DJ Delorie  <dj@redhat.com>
13223
13224         * config/mep/mep.md (sibcall_internal): Change register to avoid
13225         argument registers.
13226         (sibcall_value_internal): Likewise.
13227
13228 2009-07-15  Eric Botcazou  <ebotcazou@adacore.com>
13229
13230         PR rtl-optimization/40710
13231         * resource.c (mark_target_live_regs): Reset DF problem to LR.
13232
13233 2009-07-15  Adam Nemet  <anemet@caviumnetworks.com>
13234
13235         * config/mips/mips.md (*extenddi_truncate<mode>,
13236         *extendsi_truncate<mode>): Change type attribute to move_type
13237         with shift_shift.  Split out code handling exts from here ...
13238         (*extend<GPR:mode>_truncate<SHORT:mode>_exts): ... to this new
13239         pattern.
13240         (*extendhi_truncateqi): Change type attribute to move_type with
13241         shift_shift.  Split out code handling exts from here ...
13242         (*extendhi_truncateqi_exts): ... to this new pattern.
13243
13244 2009-07-15  Uros Bizjak  <ubizjak@gmail.com>
13245
13246         * config/i386/sse.md (copysign<mode>3): Use "and-not" SSE instruction
13247         instead of "and" with inverted sign bit mask value.  Use
13248         "nonimmediate_operand" for operand 1 and operand 2 predicate.
13249         Allocate registers only for operand 4 and operand 5.
13250
13251 2009-07-15  Jakub Jelinek  <jakub@redhat.com>
13252
13253         PR middle-end/40747
13254         * fold-const.c (fold_cond_expr_with_comparison): When folding
13255         < and <= to MIN, make sure the MIN uses the same type as the
13256         comparison's operands.
13257
13258 2009-07-15  Richard Earnshaw  <rearnsha@arm.com>
13259
13260         * arm.md (ior_xor): New code iterator.
13261         (split for ior/xor with shift and zero-extend): New split pattern.
13262         * arm/predicates.md (subreg_lowpart_operator): New special predicate.
13263
13264 2009-07-15  Richard Guenther  <rguenther@suse.de>
13265
13266         * tree-ssa-structalias.c (make_constraint_from_heapvar): Initialize
13267         offset member.
13268
13269 2009-07-15  Richard Guenther  <rguenther@suse.de>
13270
13271         PR middle-end/40753
13272         * alias.c (ao_ref_from_mem): Reject FUNCTION_DECL and LABEL_DECL bases.
13273
13274 2009-07-15  Maxim Kuvyrkov  <maxim@codesourcery.com>
13275
13276         * config/m68k/linux-unwind.h (m68k_fallback_frame_state): Update to
13277         handle 2.6.30 kernel.
13278
13279 2009-07-15  DJ Delorie  <dj@redhat.com>
13280
13281         * config/mep/mep.md (sibcall_internal): Change register to allow
13282         for 24-bit addresses.
13283         (sibcall_value_internal): Likewise.
13284
13285 2009-07-14  Ghassan Shobaki  <ghassan.shobaki@amd.com>
13286
13287         * doc/invoke.texi: Added descriptions of the  scheduling heuristics
13288         that are enabled/disabled by the flags introduced by a previous patch.
13289
13290 2009-07-14  DJ Delorie  <dj@redhat.com>
13291
13292         * config/mep/mep.md (sibcall_internal): Include non-toggling
13293         non-jmp case.
13294         (sibcall_value_internal): Likewise.
13295
13296 2009-07-14  Taras Glek  <tglek@mozilla.com>
13297             Rafael Espindola  <espindola@google.com>
13298
13299         * doc/sourcebuild.texi: Document install-plugin target.
13300         * configure.ac: Added install-plugin target to language makefiles.
13301         * configure: Regenerate.
13302         * Makefile.in (install-plugin): Install more headers,
13303         depend on lang.install-plugin.
13304
13305 2009-07-15  Manuel López-Ibáñez  <manu@gcc.gnu.org>
13306
13307         * tree-vrp.c (vrp_evaluate_conditional): Mark strings for
13308         translation.
13309
13310 2009-07-14  DJ Delorie  <dj@redhat.com>
13311
13312         * config/mep/mep.c (mep_vliw_jmp_match): New function.
13313         * config/mep/mep-protos.h (mep_vliw_jmp_match): Prototype it.
13314         * config/mep/mep.md (sibcall_internal): Change test from
13315         mep_vliw_mode_match to mep_vliw_jmp_match.
13316         (sibcall_value_internal): Likewise.
13317
13318 2009-07-14  Uros Bizjak  <ubizjak@gmail.com>
13319
13320         * config/i386/sse.md (copysign<mode>3): New expander.
13321         * config/i386/i386-protos.h (ix86_build_signbit_mask): New prototype.
13322         * config/i386/i386.c (ix86_build_signbit_mask): Make public.
13323         Use ix86_build_const_vector.
13324         (enum ix86_builtins): Add IX86_BUILTIN_CPYSGNPS and
13325         IX86_BUILTIN_CPYSGNPD.
13326         (builtin_description): Add __builtin_ia32_copysignps and
13327         __builtin_ia32_copysignpd.
13328         (ix86_builtin_vectorized_function): Handle BUILT_IN_COPYSIGN
13329         and BUILT_IN_COPYSIGNF.
13330
13331 2009-07-13  Jason Merrill  <jason@redhat.com>
13332
13333         * builtins.c (can_trust_pointer_alignment): New fn.
13334         (get_pointer_alignment): Factor it out from here.
13335         * tree.h: Declare it.
13336
13337 2009-07-14  David Edelsohn  <edelsohn@gnu.org>
13338
13339         * config/rs6000/predicates.md (offsettable_mem_operand): Test
13340         RTX_AUTOINC class.
13341
13342 2009-07-14  Dodji Seketeli  <dodji@redhat.com>
13343
13344         PR debug/40705
13345         PR c++/403057
13346         * dwarf2.out.c (gen_type_die_with_usage): Added comment.
13347
13348 2009-07-14  Richard Guenther  <rguenther@suse.de>
13349             Andrey Belevantsev <abel@ispras.ru>
13350
13351         PR middle-end/40745
13352         * cfgexpand.c (partition_stack_vars): Do not bother to update
13353         alias information when not optimizing.
13354
13355 2009-07-14  Richard Guenther  <rguenther@suse.de>
13356             Andrey Belevantsev <abel@ispras.ru>
13357
13358         * tree-ssa-alias.h (refs_may_alias_p_1): Declare.
13359         (pt_solution_set): Likewise.
13360         * tree-ssa-alias.c (refs_may_alias_p_1): Export.
13361         * tree-ssa-structalias.c (pt_solution_set): New function.
13362         * final.c (rest_of_clean_state): Free SSA data structures.
13363         * print-rtl.c (print_decl_name): Remove.
13364         (print_mem_expr): Implement in terms of print_generic_expr.
13365         * alias.c (ao_ref_from_mem): New function.
13366         (rtx_refs_may_alias_p): Likewise.
13367         (true_dependence): Query alias-export info.
13368         (canon_true_dependence): Likewise.
13369         (write_dependence_p): Likewise.
13370         * tree-dfa.c (get_ref_base_and_extent): For void types leave
13371         size unknown.
13372         * emit-rtl.c (component_ref_for_mem_expr): Remove.
13373         (mem_expr_equal_p): Use operand_equal_p.
13374         (set_mem_attributes_minus_bitpos): Do not use
13375         component_ref_for_mem_expr.
13376         * cfgexpand.c (add_partitioned_vars_to_ptset): New function.
13377         (update_alias_info_with_stack_vars): Likewise.
13378         (partition_stack_vars): Call update_alias_info_with_stack_vars.
13379         * tree-ssa.c (delete_tree_ssa): Do not release SSA names
13380         explicitly nor clear stmt operands.
13381         Free the decl-to-pointer map.
13382         * tree-optimize.c (execute_free_datastructures): Do not free
13383         SSA data structures here.
13384         * tree-flow.h (struct gimple_df): Add decls_to_pointers member.
13385         * Makefile.in (emit-rtl.o): Add pointer-set.h dependency.
13386         (alias.o): Add tree-ssa-alias.h, pointer-set.h and $(TREE_FLOW_H)
13387         dependencies.
13388         (print-rtl.o): Add $(DIAGNOSTIC_H) dependency.
13389
13390 2009-07-13  DJ Delorie  <dj@redhat.com>
13391
13392         * config/mep/mep.h (CC1_SPEC): Tweak parameters to trigger
13393         unrolling at the right iteration count.
13394
13395         * config/mep/mep.c (mep_expand_prologue): Fix frame pointer
13396         calculations.
13397
13398 2009-07-13  Ghassan Shobaki  <ghassan.shobaki@amd.com>
13399
13400         * haifa-sched.c (rank_for_schedule): Introduced flags to
13401         enable/disable individual scheduling heuristics.
13402         * common.opt: Introduced flags to enable/disable individual
13403         heuristics in the scheduler.
13404         * doc/invoke.texi: Introduced flags to enable/disable individual
13405         heuristics in the scheduler.
13406
13407 2009-07-13  Kai Tietz  <kai.tietz@onevision.com>
13408
13409         * config/i386/t-gthr-win32 (LIB2FUNCS_EXTRA): Remove file
13410         config/i386/mingw-tls.c.
13411         * config/i386/mingw-tls.c: Removed.
13412
13413 2009-07-13  Ira Rosen  <irar@il.ibm.com>
13414
13415         * tree-vect-loop.c (get_initial_def_for_reduction): Ensure that the
13416         checks access only relevant statements.
13417         (vectorizable_reduction): Likewise.
13418
13419 2009-07-12  Kai Tietz  <kai.tietz@onevision.com>
13420
13421         * config/i386/cygming.h (TARGET_OS_CPP_BUILTINS): Define _X86_
13422         just for 32-bit case.
13423
13424 2009-07-12  Jan Hubicka  <jh@suse.cz>
13425
13426         PR tree-optimization/40585
13427         * except.c (expand_resx_expr): When there already is resume
13428         instruction, produce linked list.
13429         (build_post_landing_pads): Assert that resume is empty.
13430         (connect_post_landing_pads): Handle resume lists.
13431         (dump_eh_tree): Dump resume list.
13432
13433 2009-07-12  Ira Rosen  <irar@il.ibm.com>
13434
13435         * tree-parloops.c (loop_parallel_p): Call vect_is_simple_reduction
13436         with additional argument.
13437         * tree-vectorizer.h (enum vect_def_type): Add
13438         vect_double_reduction_def.
13439         (vect_is_simple_reduction): Add argument.
13440         * tree-vect-loop.c (vect_determine_vectorization_factor): Fix
13441         indentation.
13442         (vect_analyze_scalar_cycles_1): Detect double reduction. Call
13443         vect_is_simple_reduction with additional argument.
13444         (vect_analyze_loop_operations): Handle exit phi nodes in case of
13445         double reduction.
13446         (reduction_code_for_scalar_code): Handle additional codes by
13447         returning ERROR_MARK for them. Fix comment and indentation.
13448         (vect_is_simple_reduction): Fix comment, add argument to specify
13449         double reduction. Detect double reduction.
13450         (get_initial_def_for_induction): Fix indentation.
13451         (get_initial_def_for_reduction): Fix comment and indentation.
13452         Handle double reduction. Create initial definitions that do not
13453         require adjustment if ADJUSTMENT_DEF is NULL. Handle additional cases.
13454         (vect_create_epilog_for_reduction): Fix comment, add argument to
13455         handle double reduction. Use PLUS_EXPR in case of MINUS_EXPR in
13456         epilogue result extraction. Create double reduction phi node and
13457         replace relevant uses.
13458         (vectorizable_reduction): Call vect_is_simple_reduction with
13459         additional argument. Fix indentation. Update epilogue code treatment
13460         according to the changes in reduction_code_for_scalar_code. Check
13461         for double reduction. Call vect_create_epilog_for_reduction with
13462         additional argument.
13463         * tree-vect-stmts.c (process_use): Handle double reduction, update
13464         documentation.
13465         (vect_mark_stmts_to_be_vectorized): Handle double reduction.
13466         (vect_get_vec_def_for_operand): Likewise.
13467
13468 2009-07-12  Danny Smith  <dansmister@gmail.com>
13469
13470         * config/i386/winnt.c (i386_pe_determine_dllexport_p): Don't
13471         dllexport if !TREE_PUBLIC.
13472         (i386_pe_maybe_record_exported_symbol): Assert TREE_PUBLIC.
13473
13474 2009-07-11  Anatoly Sokolov  <aesok@post.ru>
13475
13476         * config/avr/avr.h (TARGET_CPU_CPP_BUILTINS): Redefine.
13477         (avr_extra_arch_macro) Remove declatation.
13478         * config/avr/avr.c (avr_cpu_cpp_builtins): New function.
13479         (avr_extra_arch_macro) Declare as static.
13480         * config/avr/avr-protos.h (avr_cpu_cpp_builtins): Dclare.
13481
13482 2009-07-11  Jan Hubicka  <jh@suse.cz>
13483
13484         PR middle-end/48388
13485         * except.c (can_be_reached_by_runtime): Test for NULL aka bitmap.
13486
13487 2009-07-11  Jakub Jelinek  <jakub@redhat.com>
13488
13489         PR debug/40713
13490         * dwarf2out.c (dw_fde_struct): Add in_std_section and
13491         cold_in_std_section bits.
13492         (dwarf2out_begin_prologue): Initialize them.
13493         (dwarf2out_finish): Don't emit FDE range into .debug_ranges
13494         if already covered by text_section or cold_text_section range.
13495
13496         PR rtl-optimization/40667
13497         * defaults.h (MINIMUM_ALIGNMENT): Define if not defined.
13498         * doc/tm.texi (MINIMUM_ALIGNMENT): Document it.
13499         * config/i386/i386.h (MINIMUM_ALIGNMENT): Define.
13500         * config/i386/i386.c (ix86_minimum_alignment): New function.
13501         * config/i386/i386-protos.h (ix86_minimum_alignment): New prototype.
13502         * cfgexpand.c (expand_one_var): Use MINIMIM_ALIGNMENT.
13503         * emit-rtl.c (gen_reg_rtx): Likewise.
13504         * function.c (assign_parms): Likewise.  If nominal_type needs
13505         bigger alignment than FUNCTION_ARG_BOUNDARY, use its alignment
13506         rather than passed_type's alignment.
13507
13508         PR target/40668
13509         * function.c (assign_parm_setup_stack): Adjust
13510         MEM_OFFSET (data->stack_parm) if promoted_mode is different
13511         from nominal_mode on big endian.
13512
13513 2009-07-11  Paolo Bonzini  <bonzini@gnu.org>
13514
13515         * expmed.c (emit_store_flag_1): Fix choice of zero vs. sign extension.
13516
13517 2009-07-10  DJ Delorie  <dj@redhat.com>
13518
13519         * config/mep/mep.c (mep_can_inline_p): Correct logic, and simplify.
13520
13521 2009-07-10  Mark Mitchell  <mark@codesourcery.com>
13522
13523         * config/arm/thumb2.md (thumb2_cbz): Correct computation of length
13524         attribute.
13525         (thumb2_cbnz): Likewise.
13526
13527 2009-07-10  David Daney  <ddaney@caviumnetworks.com>
13528
13529         PR target/39079
13530         * config.gcc (supported_defaults): Add synci.
13531         (with_synci): Add validation.
13532         (all_defaults): Add synci.
13533         * config/mips/mips.md (clear_cache): Use TARGET_SYNCI instead of
13534         ISA_HAS_SYNCI.
13535         (synci): Same.
13536         * config/mips/mips.opt (msynci): New option.
13537         * config/mips/mips.c (mips_override_options): Warn on use of
13538         -msynci for targets that do now support it.
13539         * gcc/config/mips/mips.h (OPTION_DEFAULT_SPECS): Add a default for
13540         msynci.
13541         * gcc/doc/invoke.texi (-msynci): Document the new option.
13542         * doc/install.texi (--with-synci): Document the new option.
13543
13544 2009-07-10  Richard Guenther  <rguenther@suse.de>
13545
13546         PR tree-optimization/40496
13547         * tree-ssa-loop-manip.c (tree_transform_and_unroll_loop): Create
13548         the PHI result with a compatible type.
13549
13550 2009-07-10  Manuel López-Ibáñez  <manu@gcc.gnu.org>
13551
13552         PR 25509
13553         PR 40614
13554         * c.opt (Wunused-result): New.
13555         * doc/invoke.texi: Document it.
13556         * c-common.c (c_warn_unused_result): Use it.
13557
13558 2009-07-09  DJ Delorie  <dj@redhat.com>
13559
13560         * targhooks.c (default_target_can_inline_p): Rename from
13561         default_target_option_can_inline_p.
13562         * targhooks.h (default_target_can_inline_p): Likewise.
13563         * target-def.h (TARGET_CAN_INLINE_P): Rename from
13564         TARGET_OPTION_CAN_INLINE_P.
13565         * config/i386/i386.c (TARGET_CAN_INLINE_P): Likewise.
13566         * config/mep/mep.c (TARGET_CAN_INLINE_P): Likewise.
13567         (mep_target_can_inline_p): Rename from
13568         mep_target_option_can_inline_p.
13569
13570         PR target/40626
13571         * config/mep/mep.h (FUNCTION_ARG_REGNO_P): Add coprocessor
13572         registers used to pass vectors.
13573
13574         * config/mep/mep.c (mep_option_can_inline_p): Remove error call.
13575
13576 2009-07-09  Tom Tromey  <tromey@redhat.com>
13577
13578         * unwind-dw2-fde-darwin.c: Include dwarf2.h.
13579         * config/mmix/mmix.c: Include dwarf2.h.
13580         * config/rs6000/darwin-fallback.c: Include dwarf2.h.
13581         * config/xtensa/unwind-dw2-xtensa.c: Include dwarf2.h.
13582         * config/sh/sh.c: Include dwarf2.h.
13583         * config/i386/i386.c: Include dwarf2.h.
13584         * Makefile.in (DWARF2_H): Remove 'elf'.
13585         * except.c: Include dwarf2.h.
13586         * unwind-dw2.c: Include dwarf2.h.
13587         * dwarf2out.c: Include dwarf2.h.
13588         * unwind-dw2-fde-glibc.c: Include dwarf2.h.
13589         * unwind-dw2-fde.c: Include dwarf2.h.
13590         * dwarf2asm.c: Include dwarf2.h.
13591
13592 2009-07-09  Maxim Kuvyrkov  <maxim@codesourcery.com>
13593
13594         * haifa-sched.c (insn_finishes_cycle_p): New static function.
13595         (max_issue): Use it.
13596         * sched-int.h (struct sched_info: insn_finishes_block_p): New
13597         scheduler hook.
13598         * sched-rgn.c (rgn_insn_finishes_block_p): Implement it.
13599         (region_sched_info): Update.
13600         * sched-ebb.c (ebb_sched_info): Update.
13601         * modulo-sched.c (sms_sched_info): Update.
13602         * sel-sched-ir.c (sched_sel_haifa_sched_info): Update.
13603
13604 2009-07-09  Maxim Kuvyrkov  <maxim@codesourcery.com>
13605
13606         * varasm.c (build_constant_desc): Don't share RTL in pool entries.
13607
13608 2009-07-09  Basile Starynkevitch  <basile@starynkevitch.net>
13609
13610         * plugin.c (try_init_one_plugin): passes RTLD_GLOBAL to dlopen.
13611
13612 2009-07-09  Jakub Jelinek  <jakub@redhat.com>
13613
13614         PR middle-end/40692
13615         * fold-const.c (fold_cond_expr_with_comparison): Don't replace
13616         arg1 with arg01 if arg1 is already INTEGER_CST.
13617
13618 2009-07-08  Adam Nemet  <anemet@caviumnetworks.com>
13619
13620         * simplify-rtx.c (simplify_binary_operation_1) <AND>:
13621         Transform (and (truncate)) into (truncate (and)).
13622
13623 2009-07-08  Adam Nemet  <anemet@caviumnetworks.com>
13624
13625         * combine.c (make_extraction): Check TRULY_NOOP_TRUNCATION before
13626         creating LHS paradoxical subregs.  Fix surrounding returns to
13627         use NULL_RTX rather than 0.
13628
13629 2009-07-08  DJ Delorie  <dj@redhat.com>
13630
13631         * config/mep/mep.c (mep_option_can_inline_p): New.
13632         (TARGET_OPTION_CAN_INLINE_P): Define.
13633
13634 2009-07-08  Mark Wielaard  <mjw@redhat.com>
13635
13636         PR debug/40659
13637         * dwarf2out.c (add_data_member_location_attribute): When we have
13638         only a constant offset don't emit a new location description using
13639         DW_OP_plus_uconst, but just add the constant with add_AT_int, when
13640         dwarf_version > 2.
13641
13642 2009-07-08  Richard Henderson  <rth@redhat.com>
13643
13644         PR target/38900
13645         * config/i386/i386.h (CONDITIONAL_REGISTER_USAGE): Move to i386.c.
13646         (enum reg_class): Add CLOBBERED_REGS.
13647         (REG_CLASS_NAMES, REG_CLASS_CONTENTS): Likewise.
13648         * config/i386/i386.c (ix86_conditional_register_usage): Moved
13649         from CONDITIONAL_REGISTER_USAGE; build CLOBBERED_REGS for 64-bit.
13650         (ix86_function_ok_for_sibcall): Tidy.  Disallow MS->SYSV sibcalls.
13651         (ix86_expand_call): Use sibcall_insn_operand when needed.  Don't
13652         force 64-bit sibcalls into R11.
13653         * config/i386/constraints.md (U): New constraint.
13654         * config/i386/i386.md (sibcall_1, sibcall_value_1): Use it.
13655         (sibcall_1_rex64, sibcall_value_1_rex64): Likewise.
13656         (sibcall_1_rex64_v, sibcall_value_1_rex64_v): Remove.
13657
13658 2009-07-08  Shujing Zhao  <pearly.zhao@oracle.com>
13659
13660         * basic-block.h (dump_regset, debug_regset): Remove duplicate
13661         prototypes.
13662         * c-objc-common.h (c_initialize_diagnostics): Ditto.
13663         * ebitmap.h (dump_ebitmap): Ditto.
13664         * optabs.h (optab_libfunc): Ditto.
13665         * tree.h (tree_expr_nonzero_warnv_p): Ditto.
13666         * tree-flow.h (vect_can_force_dr_alignment_p,
13667         get_vectype_for_scalar_type): Ditto.
13668         (vectorize_loops): Move prototype to ...
13669         * tree-vectorizer.h: ... here. Also, adjust comment.
13670         (vect_set_verbosity_level): Remove duplicate prototype.
13671         * tree-ssa-loop.c: Include tree-vectorizer.h.
13672         * Makefile.in (tree-ssa-loop.o): Depend on tree-vectorizer.h.
13673
13674 2009-07-08  Nick Clifton  <nickc@redhat.com>
13675
13676         * config/i386/unix.h (ASM_COMMENT_START): Add a space after the
13677         forward slash.
13678
13679 2009-07-08  DJ Delorie  <dj@redhat.com>
13680
13681         * config/mep/mep-ivc2.cpu (cpmovtocsar0_C3, cpmovtocsar1_C3,
13682         cpmovtocc_C3, cpmovtocsar0_P0S_P1, cpmovtocsar1_P0S_P1,
13683         cpmovtocc_P0S_P1): Mark volatile.  Note which registers are
13684         written to.
13685         * config/mep/intrinsics.md: Regenerated.
13686         * config/mep/mep.c (mep_interrupt_saved_reg): Save IVC2 control
13687         registers when asm() or calls are detected.
13688
13689 2009-07-08  Manuel López-Ibáñez  <manu@gcc.gnu.org>
13690
13691         PR c++/31246
13692         * gimplify.c (gimplify_expr): Propagate no_warning flag when
13693         gimplifying.
13694         * gimple (gimple_build_call_from_tree): Likewise.
13695         * tree-cfg.c (remove_useless_stmts_warn_notreached): Check
13696         no_warning flag before warning.
13697
13698 2009-07-07  Manuel López-Ibáñez  <manu@gcc.gnu.org>
13699
13700         * tree.c (set_expr_locus): Remove.
13701         * tree.h (EXPR_LOCUS,SET_EXPR_LOCUS,set_expr_locus): Remove.
13702         * c-typeck.c (c_finish_stmt_expr):  Replace EXPR_LOCUS by
13703         EXPR_LOCATION.
13704         * gimplify.c (internal_get_tmp_var): Likewise.
13705         (gimplify_call_expr): Likewise.
13706         (gimplify_one_sizepos): Likewise.
13707
13708 2009-07-07  Eric Botcazou  <ebotcazou@adacore.com>
13709
13710         PR debug/40666
13711         * dbxout.c (dbxout_symbol) <PARM_DECL>: Deal with parameters pointing
13712         to variables for debugging purposes.
13713
13714 2009-06-23  Mark Loeser  <mark@halcy0n.com>
13715
13716         PR build/40010
13717         * Makefile.in (gcc.pod): Depend on gcc-vers.texi.
13718
13719 2009-07-07  Manuel López-Ibáñez  <manu@gcc.gnu.org>
13720
13721         * pretty-print.c (pp_base_format): Remove %J.
13722         * c-format.c (gcc_diag_char_table, gcc_tdiag_char_table,
13723         gcc_cxxdiag_char_table): Likewise.
13724         (init_dynamic_diag_info): Likewise.
13725
13726 2009-07-07  Manuel López-Ibáñez  <manu@gcc.gnu.org>
13727
13728         * pretty-print.c (pp_base_format): Remove %H.
13729         * c-format.c (gcc_diag_char_table, gcc_tdiag_char_table,
13730         gcc_cxxdiag_char_table): Likewise.
13731         (init_dynamic_diag_info): Likewise.
13732         * config/mep/mep.c (mep_select_section): Likewise.
13733
13734 2009-07-07  Duncan Sands  <baldrick@free.fr>
13735
13736         * final.c (pass_clean_state): Give the pass a name.
13737         * passes.c (pass_rest_of_compilation): Likewise.
13738         * tree-optimize.c (pass_all_optimizations): Likewise.
13739
13740 2009-07-07  H.J. Lu  <hongjiu.lu@intel.com>
13741
13742         * config/ia64/ia64.c (ia64_handle_model_attribute): Remove
13743         an extra 'decl' for error_at.
13744
13745 2009-07-07  Jakub Jelinek  <jakub@redhat.com>
13746
13747         PR middle-end/40669
13748         * tree-tailcall.c (adjust_return_value_with_ops,
13749         create_tailcall_accumulator): Set DECL_GIMPLE_REG_P on the temporary
13750         if it has complex or vector type.
13751
13752 2009-07-07  Olivier Hainque  <hainque@adacore.com>
13753
13754         * config/alpha/t-osf4 (SHLIB_LINK): Do not hide the dummy weak
13755         pthread symbols.
13756
13757 2009-07-07  Basile Starynkevitch  <basile@starynkevitch.net>
13758
13759         * Makefile.in: added more lists of includes to PLUGIN_HEADERS.
13760
13761 2009-07-07  Manuel López-Ibáñez  <manu@gcc.gnu.org>
13762
13763         * cgraphunit.c: Replace %J by an explicit location.  Update all calls.
13764         * c-decl.c: Likewise.
13765         * function.c: Likewise.
13766         * varasm.c: Likewise.
13767         * tree-ssa.c: Likewise.
13768         * c-common.c: Likewise.
13769         * tree-cfg.c: Likewise.
13770         * config/spu/spu.c: Likewise.
13771         * config/ia64/ia64.c: Likewise.
13772         * config/v850/v850.c: Likewise.
13773
13774 2009-07-06  DJ Delorie  <dj@redhat.com>
13775
13776         * config/mep/mep-core.cpu (fsft, ssarb): Mark as VOLATILE.
13777         * config/mep/mep-ivc2.cpu (many): Add VOLATILE to more insns that make
13778         unspecified accesses to control registers.
13779         * config/mep/intrinsics.md: Regenerate.
13780         * config/mep/intrinsics.h: Regenerate.
13781         * config/mep/mep-intrin.h: Regenerate.
13782
13783 2009-07-07  Manuel López-Ibáñez  <manu@gcc.gnu.org>
13784
13785         * c-lex.c: Replace %H by an explicit location. Update all calls.
13786         * c-common.c: Likewise.
13787         * c-decl.c: Likewise.
13788         * c-typeck.c: Likewise.
13789         * fold-const.c: Likewise.
13790         * gimplify.c: Likewise.
13791         * stmt.c: Likewise.
13792         * tree-cfg.c: Likewise.
13793         * tree-ssa-loop-niter.c: Likewise.
13794         * tree-vrp.c: Likewise.
13795         * value-prof.c: Likewise.
13796
13797 2009-07-06  Diego Novillo  <dnovillo@google.com>
13798
13799         * tree-dfa.c (dump_variable): Write DECL_INITIAL for VAR
13800         if it has one.  Handle cases where VAR does not have an
13801         annotation or cfun is NULL.
13802
13803 2009-07-06  Diego Novillo  <dnovillo@google.com>
13804
13805         * tree.c: Include debug.h.
13806         (initialize_tree_contains_struct): New.
13807         (init_ttree): Call it.
13808         (tree_node_structure_for_code): Factor out of ...
13809         (tree_node_structure): ... here.
13810         * treestruct.def (TS_PHI_NODE): Remove.
13811         (TS_GIMPLE_STATEMENT): Remove.
13812
13813 2009-07-06  Diego Novillo  <dnovillo@google.com>
13814
13815         * tree-pretty-print.c (dump_generic_node): Protect against NULL op0.
13816         (debug_tree_chain): Handle cycles.
13817
13818 2009-07-06  Nick Clifton  <nickc@redhat.com>
13819             DJ Delorie  <dj@redhat.com>
13820
13821         * config.sh/lib1funcs.h (FMOVD_WORKS): Only define if
13822         __FMOVD_ENABLED__ is defined.
13823         * config/sh/sh.h
13824         (TARGET_FMOVD): Provide a default definition.
13825         (MASK_FMOVD): Likewise.
13826         (TARGET_CPU_CPP_BUILTINS): Define
13827         __FMOVD_ENABLED__ if TARGET_FMOVD is true.
13828         * config/sh/sh.md (movdf_i4): For alternative 0 use either one or
13829         two fmov instructions depending upon whether TARGET_FMOVD is enabled.
13830         (split for DF load from memory into register): Also handle
13831         MEMs which consist of REG+DISP addressing.
13832         (split for DF store from register to memory): Likewise.
13833         (movsf_ie): Always use single fp_mode.
13834         * config/sh/sh.c (sh_override_options): Do not automatically
13835         enable TARGET_MOVD for the SH2A when supporting doubles - leave
13836         that to the -mfmovd command line switch.
13837         (broken_move): Do not restrict fldi test to only the SH4 and SH4A.
13838         (fldi_ok): Always allow.
13839         * config/sh/sh.opt (mfmovd): Remove this switch.
13840         * doc/invoke.texi (-mfmovd): Remove documentation of this switch.
13841
13842 2009-07-06  J"orn Rennecke  <joern.rennecke@arc.com>
13843             Kaz Kojima  <kkojima@gcc.gnu.org>
13844
13845         PR rtl-optimization/30807
13846         * postreload.c (reload_combine): For every new use of REG_SUM,
13847         record the use of BASE.
13848
13849 2009-07-06  Jan Hubicka  <jh@suse.cz>
13850
13851         * params.def: Revert my accidental commit at 2009-06-30.
13852
13853 2009-07-04  Ian Lance Taylor  <iant@google.com>
13854
13855         PR target/40636
13856         * config/i386/msformat-c.c (mingw_format_attributes): Declare as
13857         EXPORTED_CONST.
13858         (mingw_format_attribute_overrides): Likewise.
13859
13860 2009-07-04  Jakub Jelinek  <jakub@redhat.com>
13861
13862         PR debug/40596
13863         * dwarf2out.c (based_loc_descr): For crtl->stack_realign_tried
13864         don't check cfa.reg.  Instead of cfa.indirect use
13865         fde && fde->drap_reg != INVALID_REGNUM test.
13866
13867 2009-07-04  Eric Botcazou  <ebotcazou@adacore.com>
13868
13869         * postreload.c (reload_combine): Replace CONST_REG with INDEX_REG.
13870
13871 2009-07-03  Vladimir Makarov  <vmakarov@redhat.com>
13872
13873         PR target/40587
13874         * ira.c (build_insn_chain): Use DF_LR_OUT instead of df_get_live_out.
13875
13876 2009-07-03  Richard Guenther  <rguenther@suse.de>
13877
13878         PR tree-optimization/40640
13879         * tree-switch-conversion.c (build_arrays): Perform arithmetic
13880         in original type.
13881
13882 2009-07-03  Jan Hubicka  <jh@suse.cz>
13883
13884         * ipa-inline.c (cgraph_decide_inlining_incrementally): When optimizing
13885         for size, reduce amount of inlining.
13886
13887 2009-07-03  Richard Guenther  <rguenther@suse.de>
13888
13889         PR middle-end/34163
13890         * tree-chrec.c (chrec_convert_1): Fold (T2)(t +- x) to (T2)t +- (T2)x
13891         if t +- x is known to not overflow and the conversion widens the
13892         operation.
13893         * Makefile.in (tree-chrec.o): Add $(FLAGS_H) dependency.
13894
13895 2009-07-03  Jan Hubicka  <jh@suse.cz>
13896
13897         * ipa-pure-const.c (analyze): Update loop optimizer init.
13898         * tree-ssa-loop-iv-canon.c (empty_loop_p, remove_empty_loop,
13899         try_remove_empty_loop, remove_empty_loops): Remove.
13900         * tree-ssa-loop.c (tree_ssa_empty_loop, pass_empty_loop): Remove.
13901         * tree-ssa-dce.c (find_obviously_necessary_stmts): Use finiteness info
13902         to mark regular loops as neccesary.
13903         (degenerate_phi_p): New function.
13904         (propagate_necessity, remove_dead_phis): Use it.
13905         (forward_edge_to_pdom): Likewise.
13906         (eliminate_unnecessary_stmts): Take care to remove uses of results of
13907         virtual PHI nodes that became unreachable.
13908         (perform_tree_ssa_dce): Initialize/deinitialize loop optimizer.
13909         * tree-flow.h (remove_empty_loops): Remove.
13910         * passes.c (init_optimization_passes): Remove.
13911
13912 2009-07-03  Uros Bizjak  <ubizjak@gmail.com>
13913
13914         * config/i386/i386.md (fix_trunc<mode>_fisttp_i387_1): Use
13915         can_create_pseudo_p.
13916         (*fix_trunc<mode>_i387_1): Ditto.
13917         (*floathi<mode>2_1): Ditto.
13918         (*float<SSEMODEI24:mode><X87MODEF:mode>2_1): Ditto.
13919         (*fistdi2_1): Ditto.
13920         (*fist<mode>2_1): Ditto.
13921         (frndintxf2_floor): Ditto.
13922         (*fist<mode>2_floor_1): Ditto.
13923         (frndintxf2_ceil): Ditto.
13924         (*fist<mode>2_ceil_1): Ditto.
13925         (frndintxf2_trunc): Ditto.
13926         (frndintxf2_mask_pm): Ditto.
13927         (fxam<mode>2_i387_with_temp): Ditto.
13928         * config/i386/sse.md (mulv16qi3): Ditto.
13929         (*sse2_mulv4si3): Ditto.
13930         (mulv2di3): Ditto.
13931         (sse4_2_pcmpestr): Ditto.
13932         (sse4_2_pcmpistr): Ditto.
13933
13934 2009-07-03  Jan Hubicka  <jh@suse.cz>
13935
13936         * tree-ssa-dce.c (bb_contains_live_stmts): New bitmap.
13937         (mark_stmt_necessary): Set it.
13938         (mark_operand_necessary): Set it.
13939         (mark_control_dependent_edges_necessary): Set it.
13940         (mark_virtual_phi_result_for_renaming): New function.
13941         (get_live_post_dom): New function.
13942         (forward_edge_to_pdom): New function.
13943         (remove_dead_stmt): Fix handling of control dependences.
13944         (tree_dce_init): Init new bitmap.
13945         (tree_dce_done): Free it.
13946
13947 2009-07-02  Richard Guenther  <rguenther@suse.de>
13948
13949         PR bootstrap/40617
13950         * tree-ssa-structalias.c (new_var_info): Initialize
13951         is_restrict_var.
13952
13953 2009-07-02  Jan Hubicka  <jh@suse.cz>
13954
13955         * ipa-pure-const.c (check_op): Use PTA info to see if indirect_ref is
13956         local.
13957
13958 2009-07-02  Paolo Bonzini  <bonzini@gnu.org>
13959
13960         * expmed.c (emit_cstore, emit_store_flag_1): Accept target_mode
13961         instead of recomputing it.  Adjust calls.
13962         (emit_store_flag): Adjust recursive calls.
13963
13964 2009-07-02  Richard Guenther  <rguenther@suse.de>
13965
13966         * tree-ssa-live.c (remove_unused_locals): Do not remove
13967         heap variables.
13968         * tree-ssa-structalias.c (handle_lhs_call): Delay setting
13969         of DECL_EXTERNAL for HEAP variables.
13970         (compute_points_to_sets): Set DECL_EXTERNAL for escaped
13971         HEAP variables.  Do not adjust RESTRICT vars.
13972         (find_what_var_points_to): Nobody cares if something
13973         points to READONLY.
13974
13975 2009-07-02  Ben Elliston  <bje@au.ibm.com>
13976
13977         * unwind-dw2-fde-glibc.c (_Unwind_IteratePhdrCallback): Move
13978         pc_low and pc_high declarations to the top of the function.
13979
13980 2009-07-01  DJ Delorie  <dj@redhat.com>
13981
13982         * config/mep/mep.c (mep_handle_option): Leave IVC2 control
13983         registers as fixed.
13984         (mep_interrupt_saved_reg): Save appropriate IVC2 control registers.
13985         * config/mep/mep-ivc2.cpu: Add VOLATILE to insns that make
13986         unspecified accesses to control registers.
13987         * config/mep/intrinsics.md: Regenerate.
13988         * config/mep/intrinsics.h: Regenerate.
13989         * config/mep/mep-intrin.h: Regenerate.
13990
13991 2009-07-01  Anthony Green  <green@moxielogic.com>
13992
13993         * config/moxie/moxie.c (moxie_expand_prologue): Use dec
13994         instruction when possible.
13995         (moxie_expand_prologue): Ditto.  Also, save an instruction and
13996         some complexity by popping off of $r12 instead of $sp.
13997         * config/moxie/moxie.md (movsi_pop): Don't assume $sp.  Take two
13998         operands.
13999
14000 2009-07-01  Richard Henderson  <rth@redhat.com>
14001
14002         PR bootstrap/40347
14003         * function.c (reposition_prologue_and_epilogue_notes): If epilogue
14004         contained no insns, reposition note before last insn.
14005
14006 2009-07-01  Richard Henderson  <rth@redhat.com>
14007
14008         PR debug/40431
14009         * dwarf2out.c (def_cfa_1): Revert 2009-06-11 change for
14010         DW_CFA_def_cfa_offset and DW_CFA_def_cfa.
14011
14012 2009-07-01  Michael Meissner  <meissner@linux.vnet.ibm.com>
14013
14014         PR bootstrap/40558
14015         * config/rs6000/rs6000.c (print_operand): Undo change that breaks
14016         darwin9 for printing reg addresses with %y.
14017
14018 2009-07-01  Adam Nemet  <anemet@caviumnetworks.com>
14019
14020         * combine.c (force_to_mode): Handle TRUNCATE.  Factor out
14021         truncation from operands in binary operations.
14022
14023 2009-07-01  Adam Nemet  <anemet@caviumnetworks.com>
14024
14025         Revert:
14026         2009-01-11  Adam Nemet  <anemet@caviumnetworks.com>
14027         * expmed.c (store_bit_field_1): Properly truncate the paradoxical
14028         subreg of op0 to the original op0.
14029
14030         * expmed.c (store_bit_field_1): Use a temporary as the destination
14031         instead of a paradoxical subreg when we need to truncate the result.
14032
14033 2009-07-01  DJ Delorie  <dj@redhat.com>
14034
14035         * config/mep/mep-ivc2.cpu (cmov, cmovc, cmovh): Add intrinsic
14036         names to VLIW variants.
14037         (ivc2rm, ivc2crn): Make data type consistent with non-VLIW variants.
14038         * config/mep/intrinsics.md: Regenerate.
14039         * config/mep/intrinsics.h: Regenerate.
14040         * config/mep/mep-intrin.h: Regenerate.
14041
14042 2009-07-01  Jakub Jelinek  <jakub@redhat.com>
14043
14044         PR debug/40462
14045         * jump.c (returnjump_p): Revert last patch.
14046         * dwarf2out.c (dwarf2out_begin_epilogue): Handle SEQUENCEs.
14047
14048 2009-07-01  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
14049
14050         PR target/40575
14051         * pa.md (casesi32p): Use jump table label to determine the offset
14052         of the jump table.
14053         (casesi64p): Likewise.
14054
14055         * pa.c (forward_branch_p): Return bool type.  Use instruction
14056         addresses when available.  Assert that INSN has a jump label.
14057         (pa_adjust_insn_length): Don't call forward_branch_p if INSN doesn't
14058         have a jump label.
14059
14060 2009-07-01  Richard Guenther  <rguenther@suse.de>
14061
14062         PR tree-optimization/19831
14063         * tree-ssa-dce.c (propagate_necessity): Calls to functions
14064         that only act as barriers do not make any previous stores necessary.
14065         * tree-ssa-structalias.c (handle_lhs_call): Delay making
14066         HEAP variables global, do not add a constraint from nonlocal.
14067         (find_func_aliases): Handle escapes through return statements.
14068         (compute_points_to_sets): Make escaped HEAP variables global.
14069
14070 2009-07-01  Paolo Bonzini  <bonzini@gnu.org>
14071
14072         PR bootstrap/40597
14073         * expmed.c (emit_store_flag): Perform a conversion if necessary,
14074         after reducing a DImode cstore to SImode.
14075
14076 2009-07-01  Paolo Bonzini  <bonzini@gnu.org>
14077
14078         * expr.c (expand_expr_real_1): Reinstate fallthrough to
14079         TRUTH_ANDIF_EXPR if do_store_flag returns NULL.
14080
14081 2009-07-01  Maciej W. Rozycki  <macro@linux-mips.org>
14082
14083         * config/vax/vax.h (TARGET_BSD_DIVMOD): New macro.  Set to 1.
14084         * config/vax/linux.h (TARGET_BSD_DIVMOD): New macro.  Redefine the
14085         to 0.
14086         * config/vax/vax.c (vax_init_libfuncs): Only redefine udiv_optab
14087         and umod_optab if TARGET_BSD_DIVMOD.
14088         * config/vax/lib1funcs.asm: New file.
14089         * config/vax/t-linux: New file.
14090         * config.gcc (vax-*-linux*): Set tmake_file to vax/t-linux.
14091
14092 2009-06-30  Jakub Jelinek  <jakub@redhat.com>
14093
14094         PR c++/40566
14095         * convert.c (convert_to_integer) <case COND_EXPR>: Don't convert
14096         to type arguments that have void type.
14097
14098         PR debug/40573
14099         * dwarf2out.c (gen_formal_parameter_die): Call
14100         equate_decl_number_to_die if node is different from origin.
14101
14102 2009-06-30  Anthony Green  <green@moxielogic.com>
14103
14104         Clean up moxie port for --enable-build-with-cxx.
14105         * config/moxie/moxie.c (moxie_function_value): First two
14106         parameters are const_tree, not tree.
14107         * config/moxie/moxie.h (enum reg_class): Rename CC_REG to CC_REGS.
14108         (REG_CLASS_NAMES): Ditto.
14109         (REGNO_REG_CLASS): Ditto.
14110         * config/moxie/moxie-protos.h (moxie_override_options): Declare.
14111         (moxie_function_value): Fix constyness of arguments.
14112
14113 2009-06-30  Eric Botcazou  <ebotcazou@adacore.com>
14114
14115         * cgraphunit.c (cgraph_finalize_compilation_unit): Call
14116         finalize_size_functions before further processing.
14117         * stor-layout.c: Include cgraph.h, tree-inline.h and tree-dump.h.
14118         (variable_size): Call self_referential_size on size expressions
14119         that contain a PLACEHOLDER_EXPR.
14120         (size_functions): New static variable.
14121         (copy_self_referential_tree_r): New static function.
14122         (self_referential_size): Likewise.
14123         (finalize_size_functions): New global function.
14124         * tree.c: Include tree-inline.h.
14125         (push_without_duplicates): New static function.
14126         (find_placeholder_in_expr): New global function.
14127         (substitute_in_expr) <tcc_declaration>: Return the replacement object
14128         on equality.
14129         <tcc_expression>: Likewise.
14130         <tcc_vl_exp>: If the replacement object is a constant, try to inline
14131         the call in the expression.
14132         * tree.h (finalize_size_functions): Declare.
14133         (find_placeholder_in_expr): Likewise.
14134         (FIND_PLACEHOLDER_IN_EXPR): New macro.
14135         (substitute_placeholder_in_expr): Update comment.
14136         * tree-inline.c (remap_decl): Do not unshare trees if do_not_unshare
14137         is true.
14138         (copy_tree_body_r): Likewise.
14139         (copy_tree_body): New static function.
14140         (maybe_inline_call_in_expr): New global function.
14141         * tree-inline.h (struct copy_body_data): Add do_not_unshare field.
14142         (maybe_inline_call_in_expr): Declare.
14143         * Makefile.in (tree.o): Depend on TREE_INLINE_H.
14144         (stor-layout.o): Depend on CGRAPH_H, TREE_INLINE_H, TREE_DUMP_H and
14145         GIMPLE_H.
14146
14147 2009-06-30  Richard Guenther  <rguenther@suse.de>
14148
14149         * tree-ssa-dce.c (mark_all_reaching_defs_necessary_1): Always
14150         continue walking.
14151         (propagate_necessity): Do not mark reaching defs of stores
14152         as necessary.
14153
14154 2009-06-30  Jan Hubicka  <jh@suse.cz>
14155
14156         * cfgloopanal.c (check_irred): Move into ...
14157         (mark_irreducible_loops): ... here; return true if ireducible
14158         loops was found.
14159         * ipa-pure-const.c: Include cfgloop.h and tree-scalar-evolution.h
14160         (analyze_function): Try to prove loop finiteness.
14161         * cfgloop.h (mark_irreducible_loops): Update prototype.
14162         * Makefile.in (ipa-pure-const.o): Add dependency on SCEV and CFGLOOP.
14163
14164 2009-06-30  Basile Starynkevitch  <basile@starynkevitch.net>
14165
14166         * Makefile.in (PLUGIN_HEADERS): added ggc, tree-dump, pretty-print.
14167
14168 2009-06-30  Ira Rosen  <irar@il.ibm.com>
14169
14170         PR tree-optimization/40542
14171         * tree-vect-stmts.c (vect_analyze_stmt): Don't vectorize volatile
14172         types.
14173
14174 2009-06-30  Martin Jambor  <mjambor@suse.cz>
14175
14176         PR tree-optimization/40582
14177         * tree-sra.c (build_ref_for_offset_1): Use types_compatible_p rather
14178         than useless_type_conversion_p.
14179         (generate_subtree_copies): Increment sra_stats.subtree_copies at a
14180         proper place.
14181
14182 2009-06-30  Martin Jambor  <mjambor@suse.cz>
14183
14184         PR middle-end/40554
14185         * tree-sra.c (sra_modify_expr): Add access->offset to start_offset.
14186
14187 2009-06-30  Richard Guenther  <rguenther@suse.de>
14188
14189         * tree-ssa-alias.c (walk_aliased_vdefs_1): Change interface to
14190         use ao_ref references.
14191         (walk_aliased_vdefs): Likewise.
14192         * tree-ssa-alias.h (walk_aliased_vdefs): Adjust prototype.
14193         * tree-ssa-dce.c (struct ref_data): Remove.
14194         (mark_aliased_reaching_defs_necessary_1): Use the ao_ref argument.
14195         (mark_aliased_reaching_defs_necessary): Adjust.
14196         (mark_all_reaching_defs_necessary_1): Likewise.
14197
14198 2009-06-30  Paolo Bonzini  <bonzini@gnu.org>
14199
14200         PR boostrap/40597
14201         * expmed.c (emit_cstore): New name of emit_store_flag_1.
14202         (emit_store_flag_1): Extract from emit_store_flag, adjust
14203         calls to (what now is) emit_cstore.
14204         (emit_store_flag): Call emit_store_flag_1 and also use it
14205         for what used to be recursive calls.
14206
14207 2009-06-30  Wei Guozhi  <carrot@google.com>
14208
14209         PR/40416
14210         * tree-ssa-sink.c (statement_sink_location): Stop sinking expression
14211         if the target bb post dominates from bb.
14212         * config/i386/i386.c (memory_address_length): Check existence of base
14213         register before using it.
14214
14215 2009-06-30  Nick Clifton  <nickc@redhat.com>
14216             DJ Delorie  <dj@redhat.com>
14217
14218         * config.sh/lib1funcs.h (FMOVD_WORKS): Only define if
14219         __FMOVD_ENABLED__ is defined.
14220         * config/sh/sh.h
14221         (TARGET_FMOVD): Provide a default definition.
14222         (MASK_FMOVD): Likewise.
14223         (TARGET_CPU_CPP_BUILTINS): Define
14224         __FMOVD_ENABLED__ if TARGET_FMOVD is true.
14225         * config/sh/sh.md (movdf_i4): For alternative 0 use either one or
14226         two fmov instructions depending upon whether TARGET_FMOVD is
14227         enabled.
14228         (split for DF load from memory into register): Also handle
14229         MEMs which consist of REG+DISP addressing.
14230         (split for DF store from register to memory): Likewise.
14231         * config/sh/sh.opt (mfmovd): Remove this switch.
14232         * doc/invoke.texi (-mfmovd): Remove documentation of this switch.
14233         * config/sh/sh.c (sh_override_options): Do not automatically
14234         enable TARGET_MOVD for the SH2A when supporting doubles - leave
14235         that to the -mfmovd command line switch.
14236
14237         * config/sh/sh.c (broken_move): Do not restrict fldi test to only
14238         the SH4 and SH4A.
14239         (fldi_ok): Always allow.
14240         * config/sh/sh.md (movsf_ie): Always use single fp_mode.
14241
14242 2009-06-29  DJ Delorie  <dj@redhat.com>
14243
14244         * doc/install.texi (mep-x-elf): Correct chip's full name.
14245
14246 2009-06-29  H.J. Lu  <hongjiu.lu@intel.com>
14247
14248         * doc/extend.texi: Fix typo.
14249
14250 2009-06-29  Tom Tromey  <tromey@redhat.com>
14251
14252         * dwarf2.h: Remove.
14253         * Makefile.in (DWARF2_H): New variable.
14254         (except.o): Use it.
14255         (dwarf2out.o): Likewise.
14256         (dwarf2asm.o): Likewise.
14257         * config/i386/t-i386: Use DWARF2_H.
14258         * except.c: Include elf/dwarf2.h.
14259         * unwind-dw2.c: Include elf/dwarf2.h.
14260         * dwarf2out.c: Include elf/dwarf2.h.
14261         (dw_loc_descr_struct) <dw_loc_opc>: Now a bitfield.
14262         <dtprel>: New field.
14263         (dwarf_stack_op_name): Don't handle INTERNAL_DW_OP_tls_addr.
14264         (size_of_loc_descr): Likewise.
14265         (output_loc_operands_raw): Likewise.
14266         (output_loc_operands): Handle new dtprel field.
14267         (loc_checksum): Update.
14268         (loc_descriptor_from_tree_1) <VAR_DDECL>: Set dtprel field.
14269         * unwind-dw2-fde-glibc.c: Include elf/dwarf2.h.
14270         * unwind-dw2-fde.c: Include elf/dwarf2.h.
14271         * dwarf2asm.c: Include elf/dwarf2.h.
14272         * unwind-dw2-fde-darwin.c: Include elf/dwarf2.h.
14273         * config/mmix/mmix.c: Include elf/dwarf2.h.
14274         * config/rs6000/darwin-fallback.c: Include elf/dwarf2.h.
14275         * config/xtensa/unwind-dw2-xtensa.c: Include elf/dwarf2.h.
14276         * config/sh/sh.c: Include elf/dwarf2.h.
14277         * config/i386/i386.c: Include elf/dwarf2.h.
14278
14279 2009-06-29  DJ Delorie  <dj@redhat.com>
14280
14281         * config/mep/mep.h (CPP_SPEC): Remove __cop macro.
14282
14283         * doc/extend.texi: Add MeP attributes and pragmas.
14284         * doc/invoke.text: Add MeP Options.
14285         * doc/contrib.texi: Add MeP contribution.
14286         * doc/md.texi: Add MeP constraints.
14287         * doc/install.texi: Add MeP target.
14288
14289 2009-06-30  Anatoly Sokolov  <aesok@post.ru>
14290
14291         * target.h (struct gcc_target): Add frame_pointer_required field.
14292         * target-def.h (TARGET_FRAME_POINTER_REQUIRED): New.
14293         (TARGET_INITIALIZER): Use TARGET_FRAME_POINTER_REQUIRED.
14294         * ira.c (setup_eliminable_regset): Use frame_pointer_required target
14295         hook.
14296         * reload1.c (update_eliminables): (Ditto.).
14297         * gcc/system.h (FRAME_POINTER_REQUIRED): Poison.
14298         * doc/tm.texi (FRAME_POINTER_REQUIRED): Revise documentation.
14299         (INITIAL_FRAME_POINTER_OFFSET): (Ditto.).
14300
14301         * config/arc/arc.h (FRAME_POINTER_REQUIRED): Remove macro.
14302
14303         * config/arm/arm.h (FRAME_POINTER_REQUIRED): Remove macro.
14304         * config/arm/arm.c (TARGET_FRAME_POINTER_REQUIRED): Define.
14305         (arm_frame_pointer_required): New function.
14306
14307         * config/avr/avr.h (FRAME_POINTER_REQUIRED): Remove macro.
14308         * config/avr/avr.c (TARGET_FRAME_POINTER_REQUIRED): Define macro.
14309         (avr_frame_pointer_required_p): Declare as static.
14310         * config/avr/avr-protos.h (avr_frame_pointer_required_p): Remove.
14311
14312         * config/bfin/bfin.h (FRAME_POINTER_REQUIRED): Remove macro.
14313         * config/bfin/bfin.c (TARGET_FRAME_POINTER_REQUIRED): Define.
14314         (bfin_frame_pointer_required): Make as static, change return type
14315         to bool.
14316         * config/bfin/bfin-protos.h (bfin_frame_pointer_required): Remove.
14317
14318         * config/cris/cris.h (FRAME_POINTER_REQUIRED): Remove macro.
14319         * config/cris/cris.c (TARGET_FRAME_POINTER_REQUIRED): Define macro.
14320         (cris_frame_pointer_required): New function.
14321
14322         * config/crx/crx.h (FRAME_POINTER_REQUIRED): Remove macro.
14323
14324         * config/fr30/fr30.h (FRAME_POINTER_REQUIRED): Remove macro.
14325         * config/fr30/fr30.c (TARGET_FRAME_POINTER_REQUIRED): Define macro.
14326         (fr30_frame_pointer_required): New function.
14327
14328         * config/frv/frv.h (FRAME_POINTER_REQUIRED): Remove macro.
14329         * config/frv/frv.c (TARGET_FRAME_POINTER_REQUIRED): Define.
14330         (frv_frame_pointer_required): Make as static, change return type
14331         to bool.
14332         * config/bfin/bfin-protos.h (frv_frame_pointer_required): Remove.
14333
14334         * config/i386/i386.h (FRAME_POINTER_REQUIRED): Remove macro.
14335         * config/i386/i386.c (TARGET_FRAME_POINTER_REQUIRED): Define macro.
14336         (ix86_frame_pointer_required): Make as static, change return type to
14337         bool.
14338         * config/i386/i386-protos.h (ix86_frame_pointer_required): Remove.
14339
14340         * config/m32c/m32c.h (FRAME_POINTER_REQUIRED): Remove macro.
14341         * config/m32c/m32c.c (TARGET_FRAME_POINTER_REQUIRED): Define macro.
14342
14343         * config/m32r/m32r.h (FRAME_POINTER_REQUIRED): Remove macro.
14344
14345         * config/mcore/mcore.h (CAN_ELIMINATE): Remove macro.
14346
14347         * config/mep/mep.h (FRAME_POINTER_REQUIRED): Remove macro.
14348
14349         * config/mips/mips.h (FRAME_POINTER_REQUIRED): Remove macro.
14350         * config/mips/mips.c (TARGET_FRAME_POINTER_REQUIRED): Define macro.
14351         (mips_frame_pointer_required): Make as static.
14352         * config/mips/mips-protos.h (mips_frame_pointer_required): Remove.
14353
14354         * config/mmix/mmix.h (FRAME_POINTER_REQUIRED): Remove macro.
14355         * config/mmix/mmix.c (TARGET_FRAME_POINTER_REQUIRED): Define macro.
14356         (mmix_frame_pointer_required): Mew function.
14357
14358         * config/moxie/moxie.h (FRAME_POINTER_REQUIRED): Remove macro.
14359         * config/moxie/moxie.c (TARGET_FRAME_POINTER_REQUIRED): Define macro.
14360
14361         * config/pa/pa.h (FRAME_POINTER_REQUIRED): Remove macro.
14362
14363         * config/score/score.h (FRAME_POINTER_REQUIRED): Remove macro.
14364
14365         * config/sh/sh.h (CAN_ELIMINATE): Remove macro.
14366
14367         * config/sparc/sparc.h (FRAME_POINTER_REQUIRED): Remove macro.
14368         (CAN_ELIMINATE): Redefine.
14369         * config/sparc/sparc.c (TARGET_FRAME_POINTER_REQUIRED): Define macro.
14370         (sparc_frame_pointer_required): New function.
14371         (sparc_can_eliminate): New function.
14372         * config/sparc/sparc-protos.h (sparc_can_eliminate): Declare.
14373
14374         * config/vax/vax.h (FRAME_POINTER_REQUIRED): Remove macro.
14375         * config/vax/vax.c (TARGET_FRAME_POINTER_REQUIRED): Define.
14376
14377         * config/xtensa/xtensa.h (FRAME_POINTER_REQUIRED): Remove macro.
14378         * config/xtensa/xtensa.c (TARGET_FRAME_POINTER_REQUIRED): Define.
14379         (xtensa_frame_pointer_required): Make as static, change return type
14380         to bool.
14381         * config/xtensa/xtensa-protos.h (xtensa_frame_pointer_required):
14382         Remove.
14383
14384 2009-06-29  Olatunji Ruwase  <tjruwase@google.com>
14385
14386         * doc/plugins.texi: Document PLUGIN_START_UNIT.
14387         * toplev.c (compile_file): Call PLUGIN_START_UNIT.
14388         * gcc-plugin.h (PLUGIN_START_UNIT): Added new event.
14389         * plugin.c (plugin_event_name): Added PLUGIN_START_UNIT.
14390         (register_callback): Handle PLUGIN_START_UNIT.
14391         (invoke_plugin_callbacks): Handle PLUGIN_START_UNIT.
14392
14393 2009-06-29  Eric Botcazou  <ebotcazou@adacore.com>
14394
14395         * tree.c (process_call_operands): Propagate TREE_READONLY from the
14396         operands.
14397         (PROCESS_ARG): Do not clear TREE_READONLY if CONSTANT_CLASS_P.
14398         (build3_stat): Propagate TREE_READONLY for COND_EXPR.
14399
14400 2009-06-29  Daniel Jacobowitz  <dan@codesourcery.com>
14401
14402         * config/arm/arm.h (REGISTER_MOVE_COST): Increase VFP register
14403         move cost.
14404
14405 2009-06-29  Uros Bizjak  <ubizjak@gmail.com>
14406
14407         * doc/extend.texi (Additional Floating Types): __float128 is also
14408         supported on i386 targets.
14409
14410 2009-06-29  Richard Guenther  <rguenther@suse.de>
14411
14412         PR middle-end/14187
14413         * tree-ssa-alias.h (struct pt_solution): Add vars_contains_restrict
14414         flag.
14415         (pt_solutions_same_restrict_base): Declare.
14416         * tree-ssa-structalias.c (struct variable_info): Add is_restrict_var
14417         flag.
14418         (new_var_info): Initialize is_global_var properly for SSA_NAMEs.
14419         (make_constraint_from, make_copy_constraint): Move earlier.
14420         (make_constraint_from_heapvar): New function.
14421         (make_constraint_from_restrict): Likewise.
14422         (handle_lhs_call): Use it.
14423         (find_func_aliases): Use it to track conversions to restrict
14424         qualified pointers.
14425         (struct fieldoff): Add only_restrict_pointers flag.
14426         (push_fields_onto_fieldstack): Initialize it.
14427         (create_variable_info_for): Track global restrict qualified pointers.
14428         (intra_create_variable_infos): Use make_constraint_from_heapvar.
14429         Track restrict qualified pointer arguments.
14430         (set_uids_in_ptset): Use varinfo is_global_var flag.
14431         (find_what_var_points_to): Set the vars_contains_restrict flag.
14432         Always create the points-to solution for sets including restrict tags.
14433         (pt_solutions_same_restrict_base): New function.
14434         * tree-ssa-alias.c (ptr_derefs_may_alias_p): For two restrict
14435         qualified pointers use pt_solutions_same_restrict_base as
14436         additional source for disambiguation.
14437
14438 2009-06-29  Richard Guenther  <rguenther@suse.de>
14439
14440         PR middle-end/38212
14441         * alias.c (find_base_decl): Remove.
14442         (get_deref_alias_set_1): Remove restrict handling.
14443         * c-common.c (c_apply_type_quals_to_decl): Do not set
14444         DECL_POINTER_ALIAS_SET.
14445         * gimplify.c (find_single_pointer_decl_1): Remove.
14446         (find_single_pointer_decl): Likewise.
14447         (internal_get_tmp_var): Remove restrict handling.
14448         (gimple_regimplify_operands): Likewise.
14449         * omp-low.c (expand_omp_atomic_pipeline): Do not set
14450         DECL_POINTER_ALIAS_SET. Use ref-all pointers.
14451         * print-tree.c (print_node): Do not print DECL_POINTER_ALIAS_SET.
14452         * tree.c (restrict_base_for_decl): Remove.
14453         (init_ttree): Do not allocate it.
14454         (make_node_stat): Do not set DECL_POINTER_ALIAS_SET.  Set
14455         LABEL_DECL_UID for label decls.
14456         (copy_node_stat): Do not copy restrict information.
14457         (decl_restrict_base_lookup): Remove.
14458         (decl_restrict_base_insert): Likewise.
14459         (print_restrict_base_statistics): Likewise.
14460         (dump_tree_statistics): Do not call print_restrict_base_statistics.
14461         * tree.h (DECL_POINTER_ALIAS_SET): Remove.
14462         (DECL_POINTER_ALIAS_SET_KNOWN_P): Likewise.
14463         (struct tree_decl_common): Rename pointer_alias_set to label_decl_uid.
14464         (LABEL_DECL_UID): Adjust.
14465         (DECL_BASED_ON_RESTRICT_P): Remove.
14466         (DECL_GET_RESTRICT_BASE): Likewise.
14467         (SET_DECL_RESTRICT_BASE): Likewise.
14468         (struct tree_decl_with_vis): Remove based_on_restrict_p flag.
14469
14470         * config/i386/i386.c (ix86_gimplify_va_arg): Use ref-all pointers
14471         instead of DECL_POINTER_ALIAS_SET.
14472         * config/rs6000/rs6000.c (rs6000_gimplify_va_arg): Likewise.
14473         * config/s390/s390.c (s390_gimplify_va_arg): Likewise.
14474         * config/spu/spu.c (spu_gimplify_va_arg_expr): Likewise.
14475
14476 2009-06-29  Richard Guenther  <rguenther@suse.de>
14477
14478         PR tree-optimization/40579
14479         * tree-vrp.c (vrp_evaluate_conditional): Bail out early if
14480         the IL to simplify has constants that overflowed.
14481
14482 2009-06-28  Uros Bizjak  <ubizjak@gmail.com>
14483
14484         PR tree-optimization/40550
14485         * tree-vect-generic.c (expand_vector_operations_1): Compute in
14486         vector_compute_type only when the size of vector_compute_type is
14487         less than the size of type.
14488
14489 2009-06-28  Eric Botcazou  <ebotcazou@adacore.com>
14490
14491         * fold-const.c (contains_label_1): Fix comments.
14492         (contains_label_p): Do not walk trees multiple time.
14493
14494 2009-06-28  Paolo Bonzini  <bonzini@gnu.org>
14495
14496         * config/i386/i386.h (enum ix86_fpcmp_strategy): New.
14497         * config/i386/i386.md (cbranchxf4, cstorexf4, cbranch<MODEF>4,
14498         cstore<MODEF>4, mov<X87MODEF>cc): Change predicate to
14499         ix86_fp_comparison_operator.
14500         (*fp_jcc_1_mixed, *fp_jcc_1_sse, *fp_jcc_1_387, *fp_jcc_2_mixed,
14501         *fp_jcc_2_sse, *fp_jcc_2_387): Delete
14502         (*fp_jcc_3_387, *fp_jcc_4_387, *fp_jcc_5_387, *fp_jcc_6_387,
14503         *fp_jcc_7_387, *fp_jcc_8<MODEF>_387): Eliminate call to
14504         !ix86_use_fcomi_compare, change ix86_fp_jump_nontrivial_p call
14505         to !TARGET_CMOVE, change predicate to ix86_fp_comparison_operator.
14506         (related splits): Change predicate to ix86_fp_comparison_operator.
14507         * config/i386/predicates.md: Use ix86_trivial_fp_comparison_operator
14508         instead of ix86_fp_comparison_codes.
14509         (ix86_trivial_fp_comparison_operator,
14510         ix86_fp_comparison_operator): New.
14511         * config/i386/i386-protos.h (ix86_fp_comparison_strategy): New.
14512         (ix86_expand_compare): Eliminate last two parameters.
14513         (ix86_fp_jump_nontrivial_p): Kill.
14514         * config/i386/i386.c (put_condition_code): Eliminate call to
14515         ix86_fp_comparison_codes and subsequent assertion.
14516         (ix86_fp_comparison_codes): Eliminate.
14517         (ix86_fp_swap_condition): New.
14518         (ix86_fp_comparison_arithmetics_cost, ix86_fp_comparison_fcomi_cost,
14519         ix86_fp_comparison_sahf_cost, ix86_use_fcomi_compare): Consolidate
14520         into ix86_fp_comparison_cost and ix86_fp_comparison_strategy.
14521         (ix86_prepare_fp_compare_args): Use ix86_fp_comparison_strategy
14522         and ix86_fp_swap_condition.
14523         (ix86_expand_fp_compare): Eliminate code for second jump/bypass jump.
14524         Use ix86_fp_comparison_strategy.
14525         (ix86_expand_compare): Likewise.  Eliminate last two arguments.
14526         (ix86_fp_jump_nontrivial_p): Eliminate.
14527         (ix86_expand_branch): Treat SFmode/DFmode/XFmode as simple.  Adjust
14528         call to ix86_expand_compare.
14529         (ix86_split_fp_branch, ix86_expand_setcc,
14530         ix86_expand_carry_flag_compare, ix86_expand_int_movcc,
14531         ix86_expand_fp_movcc): Eliminate code for second jump/bypass jump.
14532
14533 2009-06-28  Paolo Bonzini  <bonzini@gnu.org>
14534
14535         * config/arm/arm.c (arm_final_prescan_ins): Eliminate code
14536         related to jump_clobbers.
14537         * config/arm/arm.md (conds): Remove jump_clob case.
14538         (addsi3_cbranch, addsi3_cbranch_scratch, subsi3_cbranch, two
14539         splits): Change comparison_operator to arm_comparison_operator.
14540         (*arm_buneq, *arm_bltgt, *arm_buneq_reversed, *arm_bltgt_reversed):
14541         Eliminate.
14542
14543 2009-06-28  Paolo Bonzini  <bonzini@gnu.org>
14544
14545         * dojump.c (do_compare_rtx_and_jump): Try swapping the
14546         condition for floating point modes.
14547         * expmed.c (emit_store_flag_1): Move here a bigger part
14548         of emit_store_flag.
14549         (emit_store_flag): Try swapping the condition for floating point
14550         modes.
14551         * optabs.c (emit_cmp_and_jump_insns): Cope with constant op0 better.
14552
14553 2009-06-28  Paolo Bonzini  <bonzini@gnu.org>
14554
14555         * expr.c (expand_expr_real_1): Just use do_store_flag.
14556         (do_store_flag): Drop support for TRUTH_NOT_EXPR.  Use
14557         emit_store_flag_force.
14558         * expmed.c (emit_store_flag_force): Copy here trick
14559         previously in expand_expr_real_1.  Try reversing the comparison.
14560         (emit_store_flag_1): Work if target is NULL.
14561         (emit_store_flag): Work if target is NULL, using the result mode
14562         from the comparison.  Use split_comparison, restructure final part
14563         to simplify conditionals.
14564
14565 2009-06-28  Paolo Bonzini  <bonzini@gnu.org>
14566
14567         * builtins.c (expand_errno_check): Use do_compare_rtx_and_jump.
14568         * dojump.c (do_jump): Change handling of floating-point
14569         ops to use just do_compare_and_jump.
14570         (split_comparison): New.
14571         (do_compare_rtx_and_jump): Add here logic coming previously
14572         in do_jump, using split_comparison.
14573
14574 2009-06-27  H.J. Lu  <hongjiu.lu@intel.com>
14575
14576         PR target/40489
14577         * config/ia64/ia64.c (ia64_reorg): Check NULL insn.
14578
14579 2009-06-27  Paolo Bonzini  <bonzini@gnu.org>
14580
14581         * tree-ssa-alias.c: Fix unintentional commit.
14582
14583 2009-06-27  Paolo Bonzini  <bonzini@gnu.org>
14584
14585         * passes.c (execute_one_pass): Fix unintentional commit.
14586
14587 2009-06-27  Paolo Bonzini  <bonzini@gnu.org>
14588
14589         * df-problems.c (df_set_seen, df_unset_seen): Delete.
14590         (df_rd_local_compute, df_md_local_compute): Inline them.
14591
14592         (df_md_scratch): New.
14593         (df_md_alloc, df_md_free): Allocate/free it.
14594         (df_md_local_compute): Only include live registers in init.
14595         (df_md_transfer_function): Prune the in-set computed by
14596         the confluence function, and the gen-set too.
14597
14598 2009-06-27  Paolo Bonzini  <bonzini@gnu.org>
14599
14600         PR rtl-optimization/26854
14601         * timevar.def: Remove TV_DF_RU, add TV_DF_MD.
14602         * df-problems.c (df_rd_add_problem): Fix comment.
14603         (df_md_set_bb_info, df_md_free_bb_info, df_md_alloc,
14604         df_md_simulate_artificial_defs_at_top,
14605         df_md_simulate_one_insn, df_md_bb_local_compute_process_def,
14606         df_md_bb_local_compute, df_md_local_compute, df_md_reset,
14607         df_md_transfer_function, df_md_init, df_md_confluence_0,
14608         df_md_confluence_n, df_md_free, df_md_top_dump, df_md_bottom_dump,
14609         problem_MD, df_md_add_problem): New.
14610         * df.h (DF_MD, DF_MD_BB_INFO, struct df_md_bb_info, df_md,
14611         df_md_get_bb_info): New.
14612         (DF_LAST_PROBLEM_PLUS1): Adjust.
14613
14614         * Makefile.in (fwprop.o): Include domwalk.h.
14615         * fwprop.c: Include domwalk.h.
14616         (reg_defs, reg_defs_stack): New.
14617         (bitmap_only_bit_between): Remove.
14618         (process_defs): New.
14619         (process_uses): Use reg_defs and local_md instead of
14620         bitmap_only_bit_between and local_rd.
14621         (single_def_use_enter_block): New, from build_single_def_use_links.
14622         (single_def_use_leave_block): New.
14623         (build_single_def_use_links): Remove code moved to
14624         single_def_use_enter_block, invoke domwalk.
14625         (use_killed_between): Adjust comment.
14626
14627 2009-06-27  Paolo Bonzini  <bonzini@gnu.org>
14628
14629         * bitmap.h (bitmap_ior_and_into): New.
14630         * bitmap.c (bitmap_ior_and_into): New.
14631
14632 2009-06-27  Paolo Bonzini  <bonzini@gnu.org>
14633
14634         * domwalk.h (struct dom_walk_data): Remove all callbacks except
14635         before_dom_children_before_stmts and after_dom_children_after_stmts.
14636         Rename the two remaining callbacks to just before_dom_children and
14637         after_dom_children. Remove other GIMPLE statement walking bits.
14638         * domwalk.c (walk_dominator_tree): Remove now unsupported features.
14639         * graphite.c: Do not include domwalk.h.
14640         * tree-into-ssa.c (interesting_blocks): New global.
14641         (struct mark_def_sites_global_data): Remove it and names_to_rename.
14642         (mark_def_sites, rewrite_stmt, rewrite_add_phi_arguments,
14643         rewrite_update_stmt, rewrite_update_phi_arguments): Simplify
14644         now that they're not domwalk callbacks.
14645         (rewrite_initialize_block): Rename to...
14646         (rewrite_enter_block): ... this, place after called functions.  Test
14647         interesting_blocks, call rewrite_stmt and rewrite_add_phi_arguments.
14648         (rewrite_finalize_block): Rename to...
14649         (rewrite_leave_block): ... this, place after called functions.
14650         (rewrite_update_init_block): Rename to...
14651         (rewrite_update_enter_block): ... this, place after called functions.
14652         Test interesting_blocks, call rewrite_update_stmt and
14653         rewrite_update_phi_arguments.
14654         (rewrite_update_fini_block): Rename to...
14655         (rewrite_leave_block): ... this, place after called functions.
14656         (rewrite_blocks): Remove last argument, simplify initialization of
14657         walk_data.
14658         (mark_def_sites_initialize_block): Rename to...
14659         (mark_def_sites_block): ... this, call mark_def_sites.
14660         (mark_def_sites_blocks): Remove argument, simplify initialization of
14661         walk_data.
14662         (rewrite_into_ssa): Adjust for interesting_blocks_being a global.
14663         (update_ssa): Likewise.
14664         * tree-ssa-dom.c (optimize_stmt): Simplify now that it's not a domwalk
14665         callback.
14666         (tree_ssa_dominator_optimize): Simplify initialization of walk_data.
14667         (dom_opt_initialize_block): Rename to...
14668         (dom_opt_enter_block): ... this, place after called functions.  Walk
14669         statements here, inline propagate_to_outgoing_edges.
14670         (dom_opt_finalize_block): Rename to...
14671         (dom_opt_leave_block): ... this, place after called functions.
14672         * tree-ssa-dse.c (dse_optimize_stmt): Simplify now that it's not a
14673         domwalk callback.
14674         (dse_enter_block, dse_record_phi): New.
14675         (dse_record_phis): Delete.
14676         (dse_finalize_block): Rename to...
14677         (dse_leave_block): ... this.
14678         (tree_ssa_dse): Simplify initialization of walk_data.
14679         * tree-ssa-loop-im.c (determine_invariantness, move_computations):
14680         Adjust initialization of walk_data.
14681         * tree-ssa-loop-unswitch.c: Do not include domwalk.h.
14682         * tree-ssa-loop-phiopt.c (get_non_trapping):
14683         Adjust initialization of walk_data.
14684         * tree-ssa-loop-threadedge.c: Do not include domwalk.h.
14685         * tree-ssa-uncprop.c (uncprop_into_successor_phis): Simplify now that
14686         it's not a domwalk callback.
14687         (uncprop_initialize_block): Rename to...
14688         (dse_enter_block): ... this, call uncprop_into_successor_phis.
14689         (dse_finalize_block): Rename to...
14690         (dse_leave_block): ... this.
14691         (tree_ssa_uncprop): Simplify initialization of walk_data.
14692         * Makefile.in: Adjust dependencies.
14693
14694 2009-06-27  Richard Earnshaw  <rearnsha@arm.com>
14695
14696         * arm.md (casesi): Fix test for Thumb1.
14697         (thumb1_casesi_internal_pic): Likewise.
14698         (thumb1_casesi_dispatch): Likewise.
14699
14700 2009-06-26  Daniel Gutson  <dgutson@codesourcery.com>
14701
14702         * config/arm/arm-cores.def: Added core cortex-m0.
14703         * config/arm/arm-tune.md: Regenerated.
14704         * doc/invoke.texi: Added entry for cpu ARM Cortex-M0.
14705
14706 2009-06-26  DJ Delorie  <dj@redhat.com>
14707
14708         * config/mep/mep.opt (mfar): Remove -mfar as it doesn't do anything.
14709
14710         * config/mep/mep.c (mep_bundle_insns): Account for the fact that
14711         the scheduler doesn't tag jump insns.
14712
14713 2009-06-26  H.J. Lu  <hongjiu.lu@intel.com>
14714
14715         * c-decl.c (merge_decls): Re-indent.
14716
14717 2009-06-26  Janis Johnson  <janis187@us.ibm.com>
14718
14719         PR c/39902
14720         * tree.c (real_zerop, real_onep, real_twop, real_minus_onep):
14721         Special-case decimal float constants.
14722
14723 2009-06-26  Richard Henderson  <rth@redhat.com>
14724
14725         * function.h (struct function): Add cannot_be_copied_reason,
14726         and cannot_be_copied_set.
14727         * tree-inline.c (has_label_address_in_static_1): Rename from
14728         inline_forbidden_p_2; don't set inline_forbidden_reason here.
14729         (cannot_copy_type_1): Rename from inline_forbidden_p_op; likewise
14730         don't set inline_forbidden_reason.
14731         (copy_forbidden): New function, split out of inline_forbidden_p.
14732         (inline_forbidden_p_stmt): Don't check for nonlocal labels here.
14733         (inline_forbidden_p): Use copy_forbidden.
14734         (tree_versionable_function_p): Likewise.
14735         (inlinable_function_p): Merge into tree_inlinable_function_p.
14736         (tree_function_versioning): Remap cfun->nonlocal_goto_save_area.
14737         * ipa-cp.c (ipcp_versionable_function_p): New function.
14738         (ipcp_cloning_candidate_p): Use it.
14739         (ipcp_node_modifiable_p): Likewise.
14740
14741 2009-06-26  Olatunji Ruwase  <tjruwase@google.com>
14742
14743         * builtins.c (expand_builtin_alloca): Handle builtin alloca
14744         that is marked not to be inlined. Remove flag_mudflap use.
14745         * tree-mudflap.c: Rename mf_xform_derefs to mf_xfrom_statements.
14746         (mf_xform_statements): Mark builtin alloca calls as un-inlineable.
14747
14748 2009-06-26  Steve Ellcey  <sje@cup.hp.com>
14749
14750         PR bootstrap/40338
14751         * config/pa/t-pa-hpux10 (TARGET_LIBGCC2_CFLAGS): Add -frandom-seed.
14752         * config/pa/t-pa-hpux11 (TARGET_LIBGCC2_CFLAGS): Ditto.
14753
14754 2009-06-26  Kai Tietz  <kai.tietz@onevision.com>
14755
14756         * config/i386/mingw-tls.c (__mingwthr_key_dtor): Remove for none
14757         shared libgcc.
14758         (__mingwthr_remove_key_dtor): Likewise.
14759
14760 2009-06-26  Richard Guenther  <rguenther@suse.de>
14761
14762         * tree-ssa-structalias.c (do_ds_constraint): Simplify escape handling.
14763
14764 2009-06-26  Steven Bosscher  <steven@gcc.gnu.org>
14765
14766         PR middle-end/40525
14767         * ifcvt.c (dead_or_predicable): If predicating MERGE_BB fails,
14768         try the non-cond_exec path also.
14769
14770 2009-06-25  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
14771
14772         PR target/40468
14773         * pa.c (branch_to_delay_slot_p, branch_needs_nop_p): New functions.
14774         (output_cbranch): Use new functions.
14775         (output_lbranch, output_bb, output_bvb, output_dbra, output_movb):
14776         Likewise.
14777
14778 2009-06-25  Michael Meissner  <meissner@linux.vnet.ibm.com>
14779             Pat Haugen  <pthaugen@us.ibm.com>
14780             Revital Eres <ERES@il.ibm.com>
14781
14782         * config/rs6000/rs6000.c (print_operand): Correct lossage message
14783         for %c error.  Add %x support to print VSX registers as a unified
14784         register set, instead of separate float and altivec registers.
14785         Switch to use VECTOR_MEM_ALTIVEC_P instead of TARGET_ALTIVEC for
14786         %y case, and add support for VSX pre-modify addresses.
14787         (output_toc): Add assert for CONST containing an integer constant
14788         in the PLUS case.
14789         (rs6000_adjust_cost): Add POWER7 support.
14790         (insn_must_be_first_in_group): Ditto.
14791         (insn_must_be_last_in_group): Ditto.
14792         (rs6000_emit_popcount): Ditto.
14793         (rs6000_vector_mode_supported_p): Ditto.
14794
14795         * config/rs6000/rs6000-protos.h (rs6000_secondary_reload_class):
14796         Change some of the functions called by macros to being called
14797         through a pointer, so debug functions can be inserted if
14798         -mdebug=addr or -mdebug=cost.
14799         (rs6000_preferred_reload_class_ptr): Ditto.
14800         (rs6000_secondary_reload_class_ptr): Ditto.
14801         (rs6000_secondary_memory_needed_ptr): Ditto.
14802         (rs6000_cannot_change_mode_class_ptr): Ditto.
14803         (rs6000_secondary_reload_inner): Ditto.
14804         (rs6000_legitimize_reload_address): Ditto.
14805         (rs6000_legitimize_reload_address_ptr): Ditto.
14806         (rs6000_mode_dependent_address): Ditto.
14807         (rs6000_mode_dependent_address_ptr): Ditto.
14808
14809         * config/rs6000/rs6000.c (reg_offset_addressing_ok_p): New
14810         function to return true if the mode allows reg + integer
14811         addresses.
14812         (virtual_stack_registers_memory_p): New function to return true if
14813         the address refers to a virtual stack register.
14814         (rs6000_legitimate_offset_address_p): Move code to say whether a
14815         mode supports reg+int addressing to reg_offset_addressing_ok_p and
14816         call it.
14817         (rs6000_legitimate_address_p): Add checks for modes that only can
14818         do reg+reg addressing.  Start adding VSX support.
14819         (rs6000_legitimize_reload_address): Ditto.
14820         (rs6000_legitimize_address): Ditto.
14821         (rs6000_debug_legitimate_address_p): New debug functions for
14822         -mdebug=addr and -mdebug=cost.
14823         (rs6000_debug_rtx_costs): Ditto.
14824         (rs6000_debug_address_costs): Ditto.
14825         (rs6000_debug_adjust_cost): Ditto.
14826         (rs6000_debug_legitimize_address): Ditto.
14827         (rs6000_legitimize_reload_address_ptr): Point to call normal
14828         function or debug function.  Make functions called via pointer
14829         static.
14830         (rs6000_mode_dependent_address_ptr): Ditto.
14831         (rs6000_secondary_reload_class_ptr): Ditto.
14832         (rs6000_hard_regno_mode_ok): Add preliminary VSX support.
14833         (rs6000_emit_move): Add -mdebug=addr support.  Change an abort
14834         into a friendlier error.
14835         (rs6000_init_builtins): Add initial VSX support.
14836         (rs6000_adjust_cost): Fix some spacing issues.
14837
14838         * config/rs6000/rs6000.h (enum reg_class): Add VSX_REGS.
14839         (REG_CLASS_NAMES): Ditto.
14840         (REG_CLASS_CONTENTS): Ditto.
14841         (PREFERRED_RELOAD_CLASS): Move from a macro to calling through a
14842         pointer, to add -mdebug=addr support.
14843         (CANNOT_CHANGE_MODE_CLASS): Ditto.
14844         (SECONDARY_RELOAD_CLASS): Call through a pointer to add
14845         -mdebug=addr support.
14846         (LEGITIMIZE_RELOAD_ADDRESS): Ditto.
14847         (GO_IF_MODE_DEPENDENT_ADDRESS): Ditto.
14848         (enum rs6000_builtins): Add RS6000_BUILTIN_BSWAP_HI.
14849
14850         * config/rs6000/rs6000.md (bswaphi*): Add support for swapping
14851         16-bit values.
14852         (bswapsi*): Set attribute types for load/store.  Add combiner
14853         patterns to eliminate zero extend on 64-bit.
14854         (bswapdi*): Add support for swapping 64-bit values.  Use ldbrx and
14855         stdbrx if the hardware supports those instructions.
14856
14857 2009-06-25  Ian Lance Taylor  <iant@google.com>
14858
14859         * doc/invoke.texi (Option Summary): Mention -static-libstdc++.
14860         (Link Options): Document -static-libstdc++.
14861
14862 2009-06-25  Andrew Pinski  <andrew_pinski@playstation.sony.com>
14863
14864         PR target/38731
14865         * config/rs6000/rs6000.c (LOCAL_ALIGNMENT): Redefine to just use
14866         DATA_ALIGNMENT instead.
14867
14868 2009-06-25  Richard Guenther  <rguenther@suse.de>
14869
14870         * tree-ssa-alias.c (ref_maybe_used_by_call_p_1): Disambiguate
14871         indirect references against the callused/escaped solutions.
14872         (call_may_clobber_ref_p_1): Likewise.
14873
14874 2009-06-25  Martin Jambor  <mjambor@suse.cz>
14875
14876         PR tree-optimization/40493
14877         * tree-sra.c (sra_modify_expr): Correct BIT_FIELD_REF argument numbers.
14878         (enum unscalarized_data_handling): New type.
14879         (handle_unscalarized_data_in_subtree): Return what has been done.
14880         (load_assign_lhs_subreplacements): Handle left flushes differently.
14881         (sra_modify_assign): Use unscalarized_data_handling, simplified
14882         condition determining whether to remove the statement.
14883
14884 2009-06-25  Basile Starynkevitch  <basile@starynkevitch.net>
14885
14886         * doc/plugins.texi (Building GCC plugins): Correct typo in Makefile
14887         excerpt - @ should be doubled for texinfo.
14888
14889 2009-06-24  Ian Lance Taylor  <iant@google.com>
14890
14891         * config/arc/arc.c: Include "df.h".
14892         (arc_attribute_table): Make static.  Move higher in file.
14893         (arc_address_cost): Call SMALL_INT on INTVAL, not rtx.
14894         (output_shift): Initialize n later to avoid warning.
14895         * config/arm/arm.c (arm_attribute_table): Make static.  Move
14896         higher in file.
14897         * config/avr/avr.c (avr_attribute_table): Make static.  Move
14898         higher in file.
14899         (reg_class_tab): Change array type from int to enum reg_class.
14900         (avr_jump_mode): Change GET_MODE to GET_CODE when checking for
14901         LABEL_REF.
14902         (out_tsthi, ashlhi3_out): Don't use AS2 with "or" or "and".
14903         (lshrhi3_out): Likewise.
14904         (class_likely_spilled_p): Change return type to bool.
14905         (avr_rtx_costs): Use local code variable with enum type.
14906         * config/avr/avr.md (movmemhi): Use add_reg_note.
14907         (andhi3, andsi3): Don't use AS2 with "and".
14908         (iorhi3, iorsi3): Don't use AS2 with "or".
14909         * config/avr/avr-protos.h (class_likely_spilled_p): Update declaration.
14910         * config/crx/crx.c: Include "df.h".
14911         (crx_attribute_table): Make static.
14912         * config/m32r/m32r.c: Include "df.h".
14913         (m32r_attribute_table): Make static.  Move higher in file.
14914         (pop): Use add_reg_note.
14915         (block_move_call): Change 0 to LCT_NORMAL in function call.
14916         * config/m32r/m32r.md (movsi_insn): Remove unused local value.
14917         * config/m32r/m32r.h (INITIALIZE_TRAMPOLINE): Likewise.
14918         * config/m32r/m32r-protos.h (m32r_compute_function_type): Always
14919         declare, not just when TREE_CODE is defined.
14920         * config/m68hc11/m68hc11.c: Include "expr.h".
14921         (m68hc11_attribute_table): Make static.  Move higher in file.
14922         (m68hc11_small_indexed_indirect_p): Change 0 to VOIDmode in
14923         function call.
14924         (m68hc11_register_indirect_p): Likewise.
14925         (m68hc11_function_arg_padding): Change return type to enum
14926         direction.
14927         (emit_move_after_reload): Use add_reg_note.
14928         (m68hc11_emit_logical): Change code parameter to enum rtx_code.
14929         (m68hc11_split_logical): Likewise.
14930         (m68hc11_rtx_costs): Add local code_and outer_code variables with
14931         enum type.
14932         * config/m68hc11/predicates.md (reg_or_some_mem_operand): Change 0
14933         to VOIDmode in function call.
14934         * config/m68hc11/m68hc11-protos.h: Don't check TREE_CODE to see if
14935         tree is defined.
14936         (m68hc11_split_logical): Update declaration.
14937         (m68hc11_function_arg_padding): Update declaration.
14938         * config/mcore/mcore.c (regno_reg_class): Change form array of int
14939         to array of enum reg_class.
14940         (mcore_attribute_table): Make static.  Move higher in file.
14941         (mcore_rtx_costs): Add cast to enum type.
14942         * config/mcore/mcore.h (regno_reg_class): Update declaration.
14943         (GO_IF_LEGITIMATE_INDEX): Add cast to avoid warning.
14944         * config/sh/sh.c (sh_attribute_table): Make static.  Move higher
14945         in file.
14946         * config/sh/predicates.md (trapping_target_operand): Rename and to
14947         and_expr.
14948         * config/sparc/sparc.c (sparc_attribute_table): Make static.  Move
14949         higher in file.
14950         * config/spu/spu.c (spu_attribute_table): Make static.  Move
14951         higher in file.
14952         * config/v850/v850.c (v850_attribute_table): Make static.  Move
14953         higher in file.
14954         (v850_rtx_costs): Use local code with enum type.
14955         (expand_epilogue): Add cast.
14956         * config/v850/v850-c.c (ghs_pragma_section): Initialize repeat.
14957
14958 2009-06-23  Takashi YOSHII  <yoshii.takashi@renesas.com>
14959
14960         PR target/40515
14961         * doc/invoke.texi (SH Options): Document -m2a, -m2a-single,
14962         -m2a-single-only and -m2a-nofpu.
14963         * config/sh/sh.opt: Document m2a generates FPU code.
14964
14965 2009-06-24  Anatoly Sokolov  <aesok@post.ru>
14966
14967         * defaults.h (CAN_ELIMINATE): Provide default.
14968         * doc/tm.texi (CAN_ELIMINATE): Revise documentation.
14969         * config/alpha/alpha.h (CAN_ELIMINATE): Delete.
14970         * config/m32c/m32c.h (CAN_ELIMINATE): Delete.
14971         * config/spu/spu.h (CAN_ELIMINATE): Delete.
14972         * config/xtensa/xtensa.h (CAN_ELIMINATE): Delete.
14973         * config/moxie/moxie.h (CAN_ELIMINATE): Delete.
14974         * config/cris/cris.h (CAN_ELIMINATE): Delete.
14975         * config/mn10300/mn10300.h (CAN_ELIMINATE): Delete.
14976         * config/pa/pa64-linux.h (CAN_ELIMINATE): Delete.
14977         * config/mmix/mmix.h (CAN_ELIMINATE): Delete.
14978
14979 2009-06-24  DJ Delorie  <dj@redhat.com>
14980
14981         * mep-ext-cop.cpu: Fix copyright notice.
14982         * mep-default: Fix copyright notice.
14983         * mep-core: Fix copyright notice.
14984         * mep: Fix copyright notice.
14985         * mep-ivc2: Fix copyright notice.
14986         * mep-c5: Fix copyright notice.
14987
14988 2009-06-24  Denis Chertykov  <chertykov@gmail.com>
14989
14990         * doc/contrib.texi (Contributors):
14991
14992 2009-06-24  Andreas Krebbel  <krebbel1@de.ibm.com>
14993
14994         PR middle-end/40501
14995         * tree-ssa-math-opts.c (execute_optimize_bswap): Convert the bswap
14996         src and dst operands if necessary.
14997
14998 2009-06-23  DJ Delorie  <dj@redhat.com>
14999
15000         Add MeP port.
15001         * config.gcc: Add mep support.
15002         * recog.c: Resurrect validate_replace_rtx_subexp().
15003         * recog.h: Likewise.
15004         * config/mep/: Add new port:
15005         * config/mep/constraints.md: New file.
15006         * config/mep/default.h: New file.
15007         * config/mep/intrinsics.h: New file.
15008         * config/mep/intrinsics.md: New file.
15009         * config/mep/ivc2-template.h: New file.
15010         * config/mep/mep-c5.cpu: New file.
15011         * config/mep/mep-core.cpu: New file.
15012         * config/mep/mep-default.cpu: New file.
15013         * config/mep/mep-ext-cop.cpu: New file.
15014         * config/mep/mep-intrin.h: New file.
15015         * config/mep/mep-ivc2.cpu: New file.
15016         * config/mep/mep-lib1.asm: New file.
15017         * config/mep/mep-lib2.c: New file.
15018         * config/mep/mep-pragma.c: New file.
15019         * config/mep/mep-protos.h: New file.
15020         * config/mep/mep-tramp.c: New file.
15021         * config/mep/mep.c: New file.
15022         * config/mep/mep.cpu: New file.
15023         * config/mep/mep.h: New file.
15024         * config/mep/mep.md: New file.
15025         * config/mep/mep.opt: New file.
15026         * config/mep/predicates.md: New file.
15027         * config/mep/t-mep: New file.
15028
15029 2009-06-23  Ian Lance Taylor  <iant@google.com>
15030
15031         * configure.ac: Invoke AC_PROG_CXX.  Separate C specific warnings
15032         from loose_warn into c_loose_warn and from strict_warn into
15033         c_strict_warn.  Set and substitute warn_cxxflags.  Check for
15034         --enable-build-with-cxx.  Set and substitute
15035         ENABLE_BUILD_WITH_CXX.  Set and substitute HOST_LIBS.
15036         * Makefile.in (CXXFLAGS): New variable.
15037         (C_LOOSE_WARN, C_STRICT_WARN): New variables.
15038         (GCC_WARN_CFLAGS): Add $(C_LOOSE_WARN).  Add $(C_STRICT_WARN) if
15039         the default is the same as $(STRICT_WARN).
15040         (GCC_WARN_CXXFLAGS, WARN_CXXFLAGS): New variables.
15041         (CXX): New variable.
15042         (COMPILER): New value if ENABLE_BUILD_WITH_CXX.
15043         (COMPILER_FLAGS, LINKER, LINKER_FLAGS): Likewise.
15044         (ALL_COMPILERFLAGS, ALL_LINKERFLAGS): Likewise.
15045         (HOST_LIBS): New variable.
15046         (GCC_CFLAGS): Add $(C_LOOSE_WARN).
15047         (ALL_CXXFLAGS): New variable.
15048         (LIBS, BACKENDLIBS): Add $(HOST_LIBS).
15049         * doc/install.texi (Configuration): Document
15050         --enable-build-with-cxx, --with-stage1-ldflags,
15051         --with-stage1-libs, --with-boot-ldflags, --with-boot-libs.
15052         * configure: Rebuild.
15053
15054 2009-06-24  Ramana Radhakrishnan  <ramana.radhakrishnan@arm.com>
15055
15056         * config/arm/arm.c (arm_override_options): Fix braces and formatting
15057         from previous commit.
15058
15059 2009-06-23  Ian Lance Taylor  <iant@google.com>
15060
15061         * Makefile.in ($(out_object_file)): Depend upon $(DF_H).
15062
15063 2009-06-23  Ian Lance Taylor  <iant@google.com>
15064
15065         * reload.c (alternative_allows_const_pool_ref): Mark mem parameter
15066         with ATTRIBUTE_UNUSED.
15067
15068 2009-06-23  Michael Meissner  <meissner@linux.vnet.ibm.com>
15069             Pat Haugen  <pthaugen@us.ibm.com>
15070             Revital Eres  <eres@il.ibm.com>
15071
15072         * config.in (HAVE_AS_POPCNTD): Add default definition.
15073         (HAVE_AS_LWSYNC): Ditto.
15074
15075         * configure.ac (gcc_cv_as_powerpc_mfpgpr): Provide real binutils
15076         release number.
15077         (gcc_cv_as_powerpc_cmpb): Ditto.
15078         (gcc_cv_as_powerpc_dfp): Ditto.
15079         (gcc_cv_as_powerpc_vsx): Ditto.
15080         (gcc_cv_as_powerpc_popcntd): Add feature test for assembler
15081         supporting the popcntd/lwsync instructions.
15082         (gcc_cv_as_powerpc_lwsync): Ditto.
15083         * configure: Regenerate.
15084
15085         * config/rs6000/aix53.h (ASM_CPU_SPEC): Add support for
15086         -mcpu=native and -mcpu=power7.
15087         * config/rs6000/aix61.h (ASM_CPU_SPEC): Ditto.
15088
15089         * config/rs6000/linux64.opt (-mprofile-kernel): Move switch to be
15090         a variable instead of a mask to reduce the number of mask bits.
15091         * config/rs6000/sysv4.opt (-mbit-align): Ditto.
15092         (-mbit-word): Ditto.
15093         (-mregnames): Ditto.
15094         * config/rs6000/rs6000.opt (-mupdate): Ditto.
15095         (-mfused-madd): Ditto.
15096
15097         * config/rs6000/rs6000.opt (-mpopcntd): New switch for non-VSX ISA
15098         2.06 instructions.
15099         (-mvsx): New switch for VSX instructions.
15100         (-misel): Move from a variable to a mask to allow it to be set by
15101         -mcpu=.
15102
15103         * config/rs6000/rs6000-protos.h (rs6000_hard_regno_nregs): Change
15104         function declaration to an array declaration.
15105         (rs6000_hard_regno_nregs): New external array declaration.
15106
15107         * config/rs6000/t-rs6000 (MD_INCLUDES): Define, add all of the .md
15108         files included by rs6000.md.
15109
15110         * config/rs6000/linux64.h (SUBSUBTARGET_OVERRIDE_OPTIONS): Use
15111         SET_PROFILE_KERNEL macro to reset the -mprofile-kernel switch.
15112
15113         * config/rs6000/rs6000.c (rs6000_isel): Delete, -misel moved to be
15114         a target mask.
15115         (rs6000_debug_reg): New -mdebug= variables.
15116         (rs6000_debug_addr): Ditto.
15117         (rs6000_debug_cost): Ditto.
15118         (rs6000_pmode): New variable to hold Pmode.
15119         (rs6000_pointer_size): New variable to hold POINTER_SIZE.
15120         (rs6000_class_max_nregs): New array to hold CLASS_MAX_NREGS
15121         calculated at compiler start.
15122         (rs6000_hard_regno_nregs): Change function to an array which holds
15123         HARD_REGNO_NREGS calculated at compiler start.
15124         (rs6000_explicit_options): Delete isel field.
15125         (rs6000_vector_unit): New array to hold which vector unit
15126         supports arithmetic options for a given type.
15127         (rs6000_vector_mem): New array to hold which vector unit supports
15128         memory reference operations for a given type.
15129         (rs6000_vector_align): New array to given the alignment of each
15130         vector type.
15131         (power7_cost): New basic costs for power7.
15132         (SET_PROFILE_KERNEL): New macro for resetting -mprofile-kernel.
15133         (rs6000_hard_regno_nregs_internal): New function, moved from
15134         HARD_REGNO_NREGS, to calculate the number of registers each hard
15135         register takes for each type.
15136         (rs6000_debug_reg_print): New function for -mdebug=reg support.
15137         (rs6000_debug_vector_unit): New array, map rs6000_vector to string.
15138         (+rs6000_init_hard_regno_mode_ok): New function, move calculation
15139         of HARD_REGNO_NREGS, CLASS_MAX_NREGS, REGNO_REG_CLASS, and vector
15140         unit information here so it is calculated once at compiler startup
15141         time.
15142         (rs6000_override_options): Make -misel a target mask.  Add more
15143         power7 target masks.  Setup Pmode and POINTER_SIZE.  Add initial
15144         VSX support.  Add support for -mdebug=reg, -mdebug=addr, and
15145         -mdebug=cost.
15146         (POWERPC_MASKS): Add MASK_POPCNTD, MASK_VSX, and MASK_ISEL.
15147         (rs6000_handle_option): Move -misel from variable to target mask.
15148         (rs6000_builtin_mask_for_load): Add VSX support.
15149         (rs6000_conditional_register_usage): Ditto.
15150         (USE_ALTIVEC_FOR_ARG_P): Ditto.
15151         (function_arg_boundary): Ditto.
15152         (rs6000_expand_builtin): Ditto.
15153         (def_builtin): Make abort message a little friendlier.
15154         (rs6000_emit_int_cmove): Add support for 64-bit isel.
15155
15156         * config/rs6000/rs6000.h (ASM_CPU_POWER7_SPEC): Depend on the
15157         assembler support the popcntd instruction instead of a vsx
15158         instruction to enable power7 support.
15159         (ASM_CPU_SPEC): Add support for -mcpu=native and -mcpu=power7.
15160         (EXTRA_SPECS): Add ASM_CPU_NATIVE_SPEC to allow passing the right
15161         option to the assembler if -mcpu=native.
15162         (ASM_CPU_NATIVE_SPEC): Ditto.
15163         (TARGET_POPCNTD): If assembler doesn't support popcntd, turn off
15164         ISA 2.06 features.
15165         (TARGET_LWSYNC_INSTRUCTION): Define whether it is safe to issue
15166         the lwsync instruction.
15167         (enum processor_type): Add PROCESSOR_POWER7.
15168         (rs6000_debug_reg): New -mdebug= options.
15169         (rs6000_debug_addr): Ditto.
15170         (rs6000_debug_cost): Ditto.
15171         (rs6000_isel): Delete.
15172         (enum rs6000_vector): New enum to say what vector unit we have.
15173         (VECTOR_UNIT_*): New macros to say which vector unit has
15174         arithmetic operations for a given type.
15175         (VECTOR_MEM_*): New macros to say which vector unit has memory
15176         operations for a given type.
15177         (TARGET_LDBRX): Whether the machine supports the ldbrx
15178         instruction.
15179         (TARGET_ISEL): Delete, -misel moved to be a mask.
15180         (TARGET_ISEL64): New macro for 64-bit isel support.
15181         (UNITS_PER_VSX_WORD): New macro.
15182         (POINTER_SIZE): Move to be an external variable, rather than
15183         calculating whether we are generating 32 ot 64-bit code.
15184         (Pmode): Ditto.
15185         (STACK_BOUNDARY): Add VSX support.
15186         (LOCAL_ALIGNMENT): Ditto.
15187         (SLOW_UNALIGNED_ACCESS): Ditto.
15188         (VSX_REGNO_P): New macro for VSX support.
15189         (VFLOAT_REGNO_P): Ditto.
15190         (VINT_REGNO_P): Ditto.
15191         (VLOGICAL_REGNO_P): Ditto.
15192         (VSX_VECTOR_MODE): Ditto.
15193         (VSX_SCALAR_MODE): Ditto.
15194         (VSX_MODE): Ditto.
15195         (VSX_MOVE_MODE): Ditto.
15196         (VSX_REG_CLASS_P): Ditto.
15197         (HARD_REGNO_NREGS): Instead of calling a function, use an array
15198         lookup.
15199         (UNITS_PER_SIMD_WORD): Add VSX support.
15200         (MODES_TIEABLE_P): Ditto.
15201         (STARTING_FRAME_OFFSET): Ditto.
15202         (STACK_DYNAMIC_OFFSET): Ditto.
15203         (EPILOGUE_USES): Ditto.
15204         (REGNO_REG_CLASS): Move to array lookup.
15205         (CLASS_MAX_NREGS): Ditto.
15206         (rs6000_vector_reg_class): Add declaration.
15207         (ADDITIONAL_REGISTER_NAMES): Add VSX names for the registers that
15208         overlap with the floating point and Altivec registers.
15209
15210         * config/rs6000/e500.h (CHECK_E500_OPTIONS): Disallow -mvsx.
15211
15212         * config/rs6000/driver-rs6000.c (asm_names): New static array to
15213         give the appropriate asm switches if -mcpu=native.
15214         (host_detect_local_cpu): Add support for "asm".
15215         (host_detect_local_cpu): Follow GNU code guidelines for name.
15216
15217         * config/rs6000/sysv4.h (SUBTARGET_OVERRIDE_OPTIONS): Move
15218         -mbit-word to a variable instead of being a target mask.
15219
15220         * config/rs6000/sync.md (lwsync): If the assembler supports it,
15221         emit the lwsync instruction instead of emitting the instruction as
15222         an integer constant.
15223
15224         * config/rs6000/spe.md (spe_fixuns_truncdfsi2): Rename from
15225         fixuns_trundfsi2, move expander into rs6000.md.
15226
15227         * config/rs6000/rs6000.md (cpu): Add power7.
15228         (sel, *ptrsize): New mode attributes for 32/64-bit isel.
15229         (logical predicate patterns): Change the single instruction
15230         primitives that set CR0 to be fast_compare instead of compare.
15231         (norsi*): Ditto.
15232         (popcntwsi2): Add support for ISA 2.06 popcount instructions.
15233         (popcntddi2): Ditto.
15234         (popcount<mode>): Ditto.
15235         (floating multiply/add insns): Name the floating point
15236         multiply/add insns.
15237         (isel_signed_<mode>): Add support for -misel on 64-bit systems.
15238         (isel_unsigned_<mode>): Ditto.
15239         (fixuns_trundfsi2): Move expander here from spe.md.
15240         (smindi3): Define if we have -misel on 64-bit systems.
15241         (smaxdi3): Ditto.
15242         (umindi3): Ditto.
15243         (umaxdi3): Ditto.
15244
15245 2009-06-23  Anatoly Sokolov  <aesok@post.ru>
15246
15247         * config.gcc (avr-*-rtems*, avr-*-*): Set extra_gcc_objs and
15248         extra_objs.
15249         * config/avr/avr.c (avr_current_device): New variable.
15250         (avr_arch_types, avr_mcu_types): Move to avr-deveces.c.
15251         (avr_arch, mcu_type_s): Move to avr.h.
15252         * config/avr/avr.h (base_arch_s). Add reserved2, arch_name and
15253         default_data_section_start fields.
15254         (avr_arch): Moved from avr.c.
15255         (mcu_type_s): Moved from avr.c. Add short_sp, data_section_start and
15256         library_name fields.
15257         (avr_current_device, avr_mcu_types, avr_arch_types,
15258         avr_device_to_arch, avr_device_to_data_start,
15259         avr_device_to_startfiles, avr_device_to_devicelib): Declare.
15260         (EXTRA_SPEC_FUNCTIONS): Define.
15261         (LINK_SPEC): Remove device name to '-m ...' and '-Tdata ...' linker
15262         options mapping. Use device_to_arch and device_to_data_start insted.
15263         (STARTFILE_SPEC): Use device_to_startfile instead of crt_binutils.
15264         (CRT_BINUTILS_SPECS, EXTRA_SPECS): Remove.
15265         * config/avr/t-avr (driver-avr.o, avr-devices.o): New rules.
15266         * config/avr/driver-avr.c: New file.
15267         * config/avr/avr-devices.c: New file.
15268
15269 2009-06-23  Jakub Jelinek  <jakub@redhat.com>
15270
15271         * var-tracking.c (unshare_variable): Force initialized to
15272         be VAR_INIT_STATUS_INITIALIZED unless flag_var_tracking_uninit.
15273         (set_variable_part): Likewise.
15274         (struct variable_union_info): Remove pos_src field.
15275         (vui_vec, vui_allocated): New variables.
15276         (variable_union): Pass VAR_INIT_STATUS_UNKNOWN to unshare_variable
15277         unconditionally.  Avoid XCVECNEW/free for every sorting, for dst_l
15278         == 1 use a simpler sorting algorithm.  Compute pos field right
15279         away, don't fill in pos_src.  For dst_l == 2 avoid qsort.
15280         Avoid quadratic comparison if !flag_var_tracking_uninit.
15281         (variable_canonicalize): Pass VAR_INIT_STATUS_UNKNOWN to
15282         unshare_variable unconditionally.
15283         (dataflow_set_different_2): Removed.
15284         (dataflow_set_different): Don't traverse second hash table.
15285         (compute_bb_dataflow): Pass VAR_INIT_STATUS_UNINITIALIZED
15286         unconditionally to var_reg_set or var_mem_set.
15287         (emit_notes_in_bb): Likewise.
15288         (delete_variable_part): Pass VAR_INIT_STATUS_UNKNOWN to
15289         unshare_variable.
15290         (emit_note_insn_var_location): Don't set initialized to
15291         VAR_INIT_STATUS_INITIALIZED early.
15292         (vt_finalize): Free vui_vec if needed, clear vui_vec and
15293         vui_allocated.
15294         * rtl.c (rtx_equal_p): Don't implement on top of rtx_equal_p_cb.
15295
15296         * tree-object-size.c (addr_object_size): Instead of checking
15297         for non-NULL TREE_CHAIN of the FIELD_DECL check that there
15298         are no FIELD_DECLs following it.
15299
15300 2009-06-23  Andreas Krebbel  <krebbel1@de.ibm.com>
15301
15302         * tree-ssa-math-opts.c (find_bswap): Increase the search depth in
15303         order to match bswaps with signed source operands.
15304
15305 2009-06-23  Rainer Orth  <ro@TechFak.Uni-Bielefeld.DE>
15306
15307         * sdbout.c (sdbout_one_type): Fix braces in switch.
15308
15309 2009-06-23  Richard Guenther  <rguenther@suse.de>
15310
15311         * tree-ssa-structalias.c (struct variable_info): Add is_global_var
15312         member.
15313         (var_anything, anything_tree, var_nothing, nothing_tree, var_readonly,
15314         readonly_tree, var_escaped, escaped_tree, var_nonlocal, nonlocal_tree,
15315         var_callused, callused_tree, var_storedanything, storedanything_tree,
15316         var_integer, integer_tree): Remove global variables.
15317         (new_var_info): Do not pass new id, append the new var to the
15318         global variable vector.
15319         (do_ds_constraint): Use is_global_var member of the variable-info.
15320         (new_scalar_tmp_constraint_exp): Adjust.
15321         (create_function_info_for): Likewise.
15322         (create_variable_info_for): Likewise.
15323         (find_what_var_points_to): Remove dead code.
15324         (init_base_vars): Simplify.
15325         (compute_points_to_sets): Adjust.
15326
15327 2009-06-22  Adam Nemet  <anemet@caviumnetworks.com>
15328
15329         * combine.c (try_combine): Dump information about the insns we're
15330         combining.
15331
15332 2009-06-22  Adam Nemet  <anemet@caviumnetworks.com>
15333
15334         * combine.c (combine_simplify_rtx): Remove TRULY_NOOP_TRUNCATION
15335         check when calling force_to_mode on TRUNCATE's operand.
15336
15337 2009-06-22  Ian Lance Taylor  <iant@google.com>
15338
15339         * config/rs6000/rs6000.opt: Move msched-epilog before msched-prolog.
15340
15341 2009-06-22  Steven Bosscher  <steven@gcc.gnu.org>
15342
15343         * config/arm/arm.md (prologue_use): Set length of fake insn to 0.
15344
15345 2009-06-22  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
15346
15347         * doc/invoke.texi (Link Options): -nodefaultlibs and -nostdlib
15348         override library linkage flags such as -static-libgcc or
15349         -shared-libgcc.
15350
15351 2009-06-22  Maxim Kuvyrkov  <maxim@codesourcery.com>
15352
15353         * config/m68k/m68k-devices.def: Add line for MCF5221x.
15354
15355 2009-06-22  Ian Lance Taylor  <iant@google.com>
15356
15357         * config/linux.opt: Put mglibc ahead of muclibc.
15358
15359         * c-decl.c (diagnose_mismatched_decls): Add -Wc++-compat warning
15360         for duplicate decls.
15361
15362 2009-06-22  Matthias Klose  <doko@ubuntu.com>
15363
15364         * Makefile.in (install-plugin): Remove extra `/' after $(DESTDIR).
15365
15366 2009-06-22  Steven Bosscher  <steven@gcc.gnu.org>
15367
15368         PR objc/28050
15369         * c-parser.c (c_parser_objc_message_args): Return error_mark_node
15370         instead of NULL if a parser error occurs.
15371
15372 2009-06-22  Rainer Orth  <ro@TechFak.Uni-Bielefeld.DE>
15373
15374         * dwarf2out.c (dwarf2_debug_hooks): Initialize
15375         non-DWARF2_DEBUGGING_INFO version.
15376
15377 2009-06-22  Kai Tietz  <kai.tietz@onevision.com>
15378
15379         * config.gcc (i[34567]86-*-mingw*, x86_64-*-mingw*): Add
15380         i386/t-fprules-softfp and soft-fp/t-softfp to tmake_file.
15381
15382         * config/i386/mingw32.h (LIBGCC2_HAS_TF_MODE): Define.
15383         (LIBGCC2_TF_CEXT): Define.
15384         (TF_SIZE): Define.
15385
15386 2009-06-22  Ramana Radhakrishnan  <ramana.radhakrishnan@arm.com>
15387
15388         PR target/40463
15389         * config/arm/linux-eabi.h (CLEAR_INSN_CACHE): Fix definition.
15390
15391 2009-06-22  Ramana Radhakrishnan  <ramana.radhakrishnan@arm.com>
15392
15393         * config/arm/arm.c (arm_override_options): Disable
15394         -mcaller-super-interworking and -mcallee-super-interworking.
15395         * doc/invoke.texi (ARM Options): Document this.
15396
15397 2009-06-22  Nathan Sidwell  <nathan@codesourcery.com>
15398
15399         * config/arm/arm.c (arm_print_operand): Deal with HIGH.
15400         * config/arm/constraints.md (j): New constraint for movw operands.
15401         (N): Remove thumb2 meaning.
15402         * config/arm/arm.md (*arm_movw): Delete.
15403         (*arm_movsi_insn): Use j constraint for movw instead of N constraint.
15404         * config/arm/vfp.md (*arm_movsi_vfp, *thumb2_movsi_vfp): Likewise.
15405         * config/arm/thumb2.md (*thumb2_movsi_insn): Likewise.
15406
15407 2009-06-22  Martin Jambor  <mjambor@suse.cz>
15408
15409         PR tree-optimization/40492
15410         * tree-sra.c (sra_modify_assign): Pass zero offsets to
15411         build_ref_for_offset.
15412
15413 2009-06-22  Shujing Zhao  <pearly.zhao@oracle.com>
15414
15415         * alias.c: Use REG_P, MEM_P, CONST_INT_P, LABEL_P, CALL_P, NOTE_P and
15416         JUMP_TABLE_DATA_P predicates where applicable.
15417         * auto-inc-dec.c: Ditto.
15418         * builtins.c: Ditto.
15419         * caller-save.c: Ditto.
15420         * calls.c: Ditto.
15421         * cfgcleanup.c: Ditto.
15422         * cfglayout.c: Ditto.
15423         * cfgrtl.c: Ditto.
15424         * combine.c: Ditto.
15425         * combine-stack-adj.c: Ditto.
15426         * cse.c: Ditto.
15427         * cselib.c: Ditto.
15428         * dbxout.c: Ditto.
15429         * df-scan.c: Ditto.
15430         * dse.c: Ditto.
15431         * dwarf2asm.c: Ditto.
15432         * dwarf2out.c: Ditto.
15433         * emit-rtl.c: Ditto.
15434         * except.c: Ditto.
15435         * explow.c: Ditto.
15436         * expmed.c: Ditto.
15437         * expr.c: Ditto.
15438         * final.c: Ditto.
15439         * function.c: Ditto.
15440         * fwprop.c: Ditto.
15441         * gcse.c: Ditto.
15442         * genpreds.c: Ditto.
15443         * genrecog.c: Ditto.
15444         * ifcvt.c: Ditto.
15445         * ira-costs.c: Ditto.
15446         * ira-lives.c: Ditto.
15447         * jump.c: Ditto.
15448         * loop-iv.c: Ditto.
15449         * lower-subreg.c: Ditto.
15450         * modulo-sched.c: Ditto.
15451         * optabs.c: Ditto.
15452         * postreload.c: Ditto.
15453         * print-rtl.c: Ditto.
15454         * recog.c: Ditto.
15455         * reginfo.c: Ditto.
15456         * regmove.c: Ditto.
15457         * reload1.c: Ditto.
15458         * reload.c: Ditto.
15459         * reorg.c: Ditto.
15460         * rtlanal.c: Ditto.
15461         * rtl.c: Ditto.
15462         * sched-vis.c: Ditto.
15463         * sdbout.c: Ditto.
15464         * sel-sched-ir.c: Ditto.
15465         * simplify-rtx.c: Ditto.
15466         * targhooks.c: Ditto.
15467         * var-tracking.c: Ditto.
15468         * vmsdbgout.c: Ditto.
15469
15470 2009-06-22  Matthias Klose  <doko@ubuntu.com>
15471
15472         * Makefile.in (install-plugin): Always use DESTDIR.
15473
15474 2009-06-22  Olivier Hainque  <hainque@adacore.com>
15475
15476         * config/pa/pa.c (output_call): Don't optimize post call jumps
15477         into return address adjustments if the call may throw.
15478
15479 2009-06-21  Richard Earnshaw  <rearnsha@arm.com>
15480
15481         * arm.c (thumb1_output_casesi): New function.
15482         * arm.h (CASE_VECTOR_PC_RELATIVE): Thumb-1 code is also relative if
15483         optimizing for size or PIC.
15484         (CASE_VECTOR_SHORTEN_MODE): Handle thumb-1.
15485         * arm.md (UNSPEC_THUMB1_CASESI): New constant.
15486         (casesi): Handle Thumb-1 when optimizing for size or PIC.
15487         (thumb1_casesi_internal_pic): New expand rule.
15488         (thumb1_casesi_dispatch): New pattern.
15489         * aout.h (ASM_OUTPUT_ADDR_DIFF_ELT): Use shortened vectors for
15490         thumb-1 mode.
15491         * coff.h (JUMP_TABLES_IN_TEXT_SECTION): Thumb-1 jump tables are now
15492         in the text seciton when PIC or optimizing for size.
15493         * elf.h (JUMP_TABLES_IN_TEXT_SECTION): Likewise.
15494         * lib1funcs.asm ([__ARM_EABI__]): Add an attribute describing stack
15495         preservation properties of code.
15496         (__gnu_thumb1_case_sqi, __gnu_thumb1_case_uqi): New functions.
15497         (__gnu_thumb1_case_shi, __gnu_thumb1_case_uhi): New functions.
15498         (__gnu_thumb1_case_si): New function.
15499         * t-arm (LIB1ASMSRC): Define here.
15500         (LIB1ASMFUNCS): Add some common functions.
15501         * t-arm-elf (LIB1ASMSRC): Delete.
15502         (LIB1ASMFUNCS): Append to existing set.
15503         * t-pe (LIB1ASMSRC, LIB1ASMFUNCS): Likewise.
15504         * t-strongarm-elf (LIB1ASMSRC, LIB1ASMFUNCS): Likewise.
15505         * t-symbian (LIB1ASMFUNCS): Likewise.
15506         * t-vxworks (LIB1ASMSRC, LIB1ASMFUNCS): Likewise.
15507         * t-wince-pe (LIB1ASMSRC, LIB1ASMFUNCS): Likewise.
15508
15509 2009-06-21  Richard Guenther  <rguenther@suse.de>
15510
15511         PR tree-optimization/38729
15512         * tree-ssa-loop-niter.c (find_loop_niter_by_eval): Restrict
15513         to loops with a single exit if -fno-expensive-optimizations.
15514
15515 2009-06-21  Jakub Jelinek  <jakub@redhat.com>
15516
15517         * var-tracking.c (struct shared_hash_def, shared_hash): New types.
15518         (dataflow_set): Change vars type from htab_t to shared_hash.
15519         (shared_hash_pool, empty_shared_hash): New variables.
15520         (vars_clear): Removed.
15521         (shared_hash_shared, shared_hash_htab, shared_hash_copy,
15522         shared_hash_find_slot_unshare, shared_hash_find_slot,
15523         shared_hash_find_slot_noinsert, shared_hash_find): New
15524         static inlines.
15525         (shared_hash_unshare, shared_hash_destroy): New functions.
15526         (unshare_variable): Unshare set->vars if shared, use
15527         shared_hash_htab.
15528         (vars_copy): Use htab_traverse_noresize instead of htab_traverse.
15529         (get_init_value, find_src_set_src, dump_dataflow_set,
15530         clobber_variable_part, emit_notes_for_differences): Use
15531         shared_hash_htab.
15532         (dataflow_set_init): Remove second argument, set vars to
15533         empty_shared_hash instead of creating a new htab.
15534         (dataflow_set_clear): Call shared_hash_destroy and set vars
15535         to empty_shared_hash instead of calling vars_clear.
15536         (dataflow_set_copy): Don't call vars_copy, instead just share
15537         the src htab with dst.
15538         (variable_union): Use shared_hash_*, use initially NO_INSERT
15539         lookup if set->vars is shared.  Don't keep slot cleared before
15540         calling unshare_variable.  Unshare set->vars if needed.
15541         Even ->refcount == 1 vars must be unshared if set->vars is shared
15542         and var needs to be modified.
15543         (variable_canonicalize): New function.
15544         (dataflow_set_union): If dst->vars is empty, just share src->vars
15545         with dst->vars and traverse with variable_canonicalize to canonicalize
15546         and unshare what is needed.
15547         (dataflow_set_different): If old_set and new_set use the same shared
15548         htab, they aren't different.  If number of htab elements is different,
15549         htabs are different.  Use shared_hash_*.
15550         (dataflow_set_destroy): Call shared_hash_destroy instead of
15551         htab_delete.
15552         (compute_bb_dataflow, emit_notes_in_bb, vt_emit_notes): Don't pass
15553         second argument to dataflow_set_init.
15554         (vt_initialize): Likewise.  Initialize shared_hash_pool and
15555         empty_shared_hash, move bb in/out initialization afterwards.
15556         Use variable_htab_free instead of NULL as changed_variables del hook.
15557         (variable_was_changed): Change type of second argument to pointer to
15558         dataflow_set.  When inserting var into changed_variables, bump
15559         refcount.  Unshare set->vars if set is shared htab and slot needs to
15560         be cleared.
15561         (set_variable_part): Use shared_hash_*, use initially NO_INSERT
15562         lookup if set->vars is shared.  Unshare set->vars if needed.
15563         Even ->refcount == 1 vars must be unshared if set->vars is shared
15564         and var needs to be modified.  Adjust variable_was_changed caller.
15565         (delete_variable_part): Use shared_hash_*.  Even ->refcount == 1
15566         vars must be unshared if set->vars is shared and var needs to be
15567         modified.  Adjust variable_was_changed caller.
15568         (emit_note_insn_var_location): Don't pool_free var.
15569         (emit_notes_for_differences_1): Initialize empty_var->refcount to 0
15570         instead of 1.
15571         (vt_finalize): Call htab_delete on empty_shared_hash->htab and
15572         free_alloc_pool on shared_hash_pool.
15573
15574 2009-06-20  Anthony Green  <green@moxielogic.com>
15575
15576         * config/moxie/sfp-machine.h (__gcc_CMPtype, CMPtype): Define.
15577         * config/moxie/moxie.h (LOAD_EXTEND_OP): Define.
15578
15579 2009-06-20  Richard Guenther  <rguenther@suse.de>
15580
15581         * tree-ssa-structalias.c (find_func_aliases): For memset use
15582         a constraint from NULL if we memset to zero.
15583         * tree-ssa-alias.c (ref_maybe_used_by_call_p_1): Add builtins
15584         we explicitly handle that do not read from memory.
15585         (call_may_clobber_ref_p_1): Properly handle builtins that may
15586         set errno.
15587
15588 2009-06-20  Richard Guenther  <rguenther@suse.de>
15589
15590         PR tree-optimization/40495
15591         * tree-ssa-structalias.c (get_constraint_exp_for_temp): Remove.
15592         (new_scalar_tmp_constraint_exp): New function.
15593         (process_constraint): Do not create temporary decls.
15594         (process_all_all_constraints): Likewise.
15595         (handle_const_call): Likewise.
15596         (create_function_info_for): Do not set decl.
15597
15598 2009-06-19  Ian Lance Taylor  <iant@google.com>
15599
15600         * config/rs6000/rs6000.c (rs6000_explicit_options): Make static.
15601         (rs6000_attribute_table): Make static; move before use.
15602
15603 2009-06-19  Eric Botcazou  <ebotcazou@adacore.com>
15604
15605         * tree.c (substitute_in_expr) <COMPONENT_REF>: Tweak and reformat.
15606         <tcc_vl_exp>: Call process_call_operands on the new CALL_EXPR.
15607         Propagate the TREE_READONLY flag without overwriting it.
15608         (substitute_placeholder_in_expr) <tcc_vl_exp>: Likewise.
15609         Propagate the TREE_READONLY flag onto the result.
15610         (process_call_operands): Move around.  Use correct constant value.
15611
15612 2009-06-19  Ramana Radhakrishnan  <ramana.radhakrishnan@arm.com>
15613
15614         PR target/40482
15615         * config/arm/arm.c (thumb_shiftable_const): Truncate val to 32 bits.
15616         * config/arm/arm.md: Likewise.
15617
15618 2009-06-19  Ian Lance Taylor  <iant@google.com>
15619
15620         * tree-cfg.c (gimple_redirect_edge_and_branch): Change ERROR_MARK
15621         to GIMPLE_ERROR_MARK.
15622
15623         * c-typeck.c (build_conditional_expr): Add op1_original_type and
15624         op2_original_type parameters.  Warn about using different enum types.
15625         * c-parser.c (c_parser_conditional_expression): Pass original
15626         types to build_conditional_expr.
15627         * c-tree.h (build_conditional_expr): Update declaration.
15628
15629 2009-06-19  Ian Lance Taylor  <iant@google.com>
15630
15631         * config/i386/i386.c (ix86_function_specific_save): Test that
15632         fields match values, rather than testing the values are in a
15633         certain range.
15634
15635 2009-06-19  Richard Guenther  <rguenther@suse.de>
15636
15637         * tree-ssa-alias.c (ptr_deref_may_alias_decl_p): Handle
15638         ADDR_EXPR pointers.
15639         (ptr_derefs_may_alias_p): Likewise.
15640         (ptr_deref_may_alias_ref_p_1): New function.
15641         (ptr_deref_may_alias_ref_p): Likewise.
15642         (ref_maybe_used_by_call_p_1): Handle builtins that are not
15643         covered by looking at the ESCAPED solution.
15644         (call_may_clobber_ref_p_1): Likewise.
15645         * tree-ssa-structalias.c (get_constraint_for_ptr_offset):
15646         Handle NULL_TREE offset.  Do not produce redundant constraints.
15647         (process_all_all_constraints): New helper function.
15648         (do_structure_copy): Use it.
15649         (handle_lhs_call): Likewise.
15650         (find_func_aliases): Handle some builtins with pointer arguments
15651         and/or return values explicitly.
15652
15653 2009-06-19  Ian Lance Taylor  <iant@google.com>
15654
15655         * varasm.c (const_rtx_hash_1): Remove const qualifier from shift.
15656
15657 2009-06-19  Ian Lance Taylor  <iant@google.com>
15658
15659         * rtl.h (SUBREG_PROMOTED_UNSIGNED_P): Add cast to int.
15660
15661 2009-06-19  Ian Lance Taylor  <iant@google.com>
15662
15663         * ggc-page.c (ggc_pch_write_object): Initialize emptyBytes.
15664         * sdbout.c (sdb_debug_hooks): Initialize non-SDB_DEBUGGING_INFO
15665         version.
15666
15667         * c-decl.c (finish_decl): If -Wc++-compat, warn about
15668         uninitialized const.
15669
15670 2009-06-19  Ian Lance Taylor  <iant@google.com>
15671
15672         * dse.c (struct store_info): Rename bitmap field to bmap.  Change
15673         all uses.
15674
15675         * c-decl.c (in_struct, struct_types): Remove.
15676         (struct c_binding): Add in_struct field.
15677         (c_binding_ptr): Define type, along with VEC.
15678         (struct c_struct_parse_info): Define.
15679         (struct_parse_info): New static variable.
15680         (bind): Initialize in_struct field.
15681         (start_struct): Remove enclosing_in_struct and
15682         enclosing_struct_types parameters.  Add
15683         enclosing_struct_parse_info parameter.  Change all callers.  Set
15684         struct_parse_info rather than in_struct and struct_types.
15685         (grokfield): If -Wc++-compat and there is a symbol binding for the
15686         field name, set the in_struct flag and push it on the
15687         struct_parse_info->fields vector.
15688         (warn_cxx_compat_finish_struct): New static function.
15689         (finish_struct): Remove enclosing_in_struct and
15690         enclosing_struct_types parameters.  Add
15691         enclosing_struct_parse_info parameter.  Change all callers.  Don't
15692         set C_TYPE_DEFINED_IN_STRUCT here.  Call
15693         warn_cxx_compat_finish_struct.  Free struct_parse_info and set to
15694         parameter.  Only push on struct_types if warn_cxx_compat.
15695         (finish_enum): Only push on struct_types if warn_cxx_compat.
15696         (declspecs_add_type): Add loc parameter.  Change all callers.
15697         Change all error calls to error_at.  Pass loc, not input_location,
15698         to pedwarn calls.  Warn if -Wc++-compat and a typedef name is
15699         defined in a struct.  If -Wc++-compat and parsing a struct, record
15700         that a typedef name was used.
15701         * c-parser.c (c_parser_declspecs): Get location to pass to
15702         declspecs_add_type.
15703         (c_parser_struct_or_union_specifier): Update calls to start_struct
15704         and finish_struct.
15705         * c-tree.h (struct c_struct_parse_info): Declare.
15706         (finish_struct, start_struct): Update declarations.
15707         (declspecs_add_type): Update declaration.
15708
15709 2009-06-19  Ian Lance Taylor  <iant@google.com>
15710
15711         * c-decl.c (grokdeclarator): If -Wc++-compat, warn about a global
15712         variable with an anonymous type.
15713
15714 2009-06-19  Uros Bizjak  <ubizjak@gmail.com>
15715
15716         * see.c: Remove for real.
15717
15718 2009-06-19  Uros Bizjak  <ubizjak@gmail.com>
15719
15720         * optabs.h (enum optab_index): Add new OTI_significand.
15721         (significand_optab): Define corresponding macro.
15722         * optabs.c (init_optabs): Initialize significand_optab.
15723         * genopinit.c (optabs): Implement significand_optab using
15724         significand?f2 patterns.
15725         * builtins.c (expand_builtin_mathfn): Handle
15726         BUILT_IN_SIGNIFICAND{,F,L}.
15727         (expand_builtin): Expand BUILT_IN_SIGNIFICAND{,F,L} using
15728         expand_builtin_mathfn if flag_unsafe_math_optimizations is set.
15729
15730         * config/i386/i386.md (significandxf2, significand<mode>2): New
15731         expanders to implement significandf, significand and significandl
15732         built-ins as inline x87 intrinsics.
15733
15734 2009-06-18  Anatoly Sokolov  <aesok@post.ru>
15735
15736         * config/avr/avr.c (avr_override_options): Remove setting value of
15737         PARAM_INLINE_CALL_COST.
15738
15739 2009-06-18  Richard Henderson  <rth@redhat.com>
15740
15741         PR 40488
15742         * tree-pass.h (TDF_ASMNAME): New.
15743         * tree-dump.c (dump_options): Add asmname.
15744         * doc/invoke.texi: Document it.
15745
15746         * tree-pretty-print.c (maybe_dump_asm_name): Merge into...
15747         (dump_decl_name): ...here.
15748         (dump_function_name): New flags arg; mind TDF_ASMNAME.
15749         (dump_generic_node): Update dump_function_name calls.
15750         (print_call_name): New flags arg; update all dump calls.
15751         * diagnostic.h (print_call_name): Update.
15752         * gimple-pretty-print.c (dump_gimple_call): Update.
15753
15754 2009-06-18  H.J. Lu  <hongjiu.lu@intel.com>
15755
15756         PR target/40470
15757         * config/i386/i386.h (CLASS_LIKELY_SPILLED_P): Add SSE_FIRST_REG.
15758
15759 2009-06-18  Diego Novillo  <dnovillo@google.com>
15760
15761         * doc/plugins.texi: Document plugin_is_GPL_compatible.
15762         * plugin.c (str_license): Declare.
15763         (try_init_one_plugin): Assert that the symbol
15764         'plugin_is_GPL_compatible' exists.
15765
15766 2009-06-18  Sergei Dyshel  <sergeid@il.ibm.com>
15767
15768         * see.c: Remove.
15769         * Makefile.in (OBJS-common): Remove see.o.
15770         (see.o): Remove.
15771         * common.opt (fsee): Mark as preserved for backward compatibility.
15772         * opts.c (common_handle_option): Add OPT_fsee to the backward
15773         compatibility section.
15774         * passes.c (init_optimization_passes, pass_see): Remove pass.
15775         * timevar.def (TV_SEE): Remove.
15776         * tree-pass.h (pass_see): Remove declaration.
15777         * doc/invoke.texi (-fsee): Remove documentation.
15778
15779 2009-06-18  Martin Jambor  <mjambor@suse.cz>
15780
15781         * tree-sra.c: Include statistics.h
15782         (sra_stats): New variable.
15783         (sra_initialize): Clear sra_stats.
15784         (create_access_replacement): Increment sra_stats.replacements.
15785         (get_access_replacement): Do not return twice.
15786         (analyze_all_variable_accesses): Increment statistics counter by the
15787         number of scalarized aggregates.
15788         (generate_subtree_copies): Increment sra_stats.subtree_copies.
15789         (sra_modify_expr): Increment sra_stats.exprs.
15790         (load_assign_lhs_subreplacements): Increment sra_stats.subreplacements.
15791         (sra_modify_assign): Increment sra_stats.exprs,
15792         sra_stats.separate_lhs_rhs_handling and sra_stats.deleted.
15793         (perform_intra_sra): Update statistics counters.
15794         * Makefile.in (tree-sra.o): Add statistics.h to dependencies.
15795
15796 2009-06-18  Sandra Loosemore  <sandra@codesourcery.com>
15797
15798         * config/arm/arm.c (TARGET_SCALAR_MODE_SUPPORTED_P): Redefine.
15799         (arm_scalar_mode_supported_p): New function.
15800
15801 2009-06-18  Paul Brook  <paul@codesourcery.com>
15802             Sandra Loosemore  <sandra@codesourcery.com>
15803
15804         * config/arm/sfp-machine.h (_FP_NANFRAC_H, _FP_NANSIGN_H): Define.
15805         (__extendhfsf2, __truncsfhf2): Define.
15806         * config/arm/fp16.c: New file.
15807         * config/arm/t-bpabi (LIB2FUNCS_STATIC_EXTRA): Add fp16.c.
15808         * config/arm/t-symbian (LIB2FUNCS_STATIC_EXTRA):  Add fp16.c.
15809
15810 2009-06-18  Sandra Loosemore  <sandra@codesourcery.com>
15811
15812         * doc/extend.texi (Half-Precision): New section.
15813         * doc/invoke.texi (Option Summary): List -mfp16-format.
15814         (ARM Options): List neon-fp16 as -mfpu value.  Document -mfp16-format.
15815         * config/arm/arm.opt (mfp16-format=): New.
15816         * config/arm/arm.c: Include intl.h.
15817         (TARGET_INVALID_PARAMETER_TYPE): Redefine.
15818         (TARGET_INVALID_RETURN_TYPE): Redefine.
15819         (TARGET_PROMOTED_TYPE): Redefine.
15820         (TARGET_CONVERT_TO_TYPE): Redefine.
15821         (arm_fp16_format): Define.
15822         (all_fpus): Add entry for neon-fp16.
15823         (fp_model_for_fpu): Likewise.
15824         (struct fp16_format): Declare.
15825         (all_fp16_formats): Define.
15826         (arm_init_libfuncs): Add entries for HFmode conversions and arithmetic
15827         functions.
15828         (arm_override_options): Set arm_fp16_format. Call sorry for fp16
15829         and no ldrh.
15830         (arm_legitimate_index_p): Treat HFmode like HImode.
15831         (thumb1_legitimate_address_p): Make it recognize HFmode constants.
15832         (coproc_secondary_reload_class): Special-case HFmode.
15833         (arm_print_operand): Add 'z' specifier for vld1.16/vst1.16.
15834         (arm_hard_regno_mode_ok): Allow HFmode values in VFP registers.
15835         (arm_init_fp16_builtins): New.
15836         (arm_init_builtins): Call it.
15837         (arm_invalid_parameter_type): New.
15838         (arm_invalid_return_type): New.
15839         (arm_promoted_type): New.
15840         (arm_convert_to_type).
15841         (arm_file_start): Deal with neon-fp16 as fpu_name.  Emit tag for fp16
15842         format.
15843         (arm_emit_fp16_const): New function.
15844         (arm_mangle_type): Mangle __fp16 as "Dh".
15845         * config/arm/arm.h (TARGET_VFPD32): Make it know about
15846         FPUTYPE_NEON_FP16.
15847         (TARGET_NEON_FP16): New.
15848         (TARGET_NEON): Make it know about FPUTYPE_NEON_FP16.
15849         (enum fputype): Add FPUTYPE_NEON_FP16.
15850         (enum arm_fp16_format_type): Declare.
15851         (arm_fp16_format): Declare.
15852         (LARGEST_EXPONENT_IS_NORMAL): Define.
15853         * config/arm/arm-protos.h (arm_emit_fp16_const): Declare.
15854         * config/arm/arm-modes.def (HFmode): Define.
15855         * config/arm/vfp.md (*movhf_vfp): New.
15856         (extendhfsf2): New.
15857         (truncsfhf2): New.
15858         * config/arm/arm.md (fpu): Add neon_fp16.
15859         (floatsihf2, floatdihf2): New.
15860         (fix_trunchfsi2, fix_trunchfdi2): New.
15861         (truncdfhf2): New.
15862         (extendhfdf2): New.
15863         (movhf): New.
15864         (*arm32_movhf): New.
15865         (*thumb1_movhf): New.
15866         (consttable_2): Add check for HFmode constants.
15867         (consttable_4): Handle HFmode constants.
15868
15869 2009-06-18  Uros Bizjak  <ubizjak@gmail.com>
15870
15871         * convert.c (convert_to_integer): Convert (int)logb() into ilogb().
15872
15873 2009-06-17  Olivier Hainque  <hainque@adacore.com>
15874
15875         * collect2.c (main): Use CONST_CAST2 to perform char ** to
15876         const char ** conversion in AIX specific section.
15877
15878 2009-06-17  H.J. Lu  <hongjiu.lu@intel.com>
15879
15880         * config/i386/i386.c (ix86_special_builtin_type): Remove
15881         UINT64_FTYPE_PINT.  Add UINT64_FTYPE_PUNSIGNED.
15882         (bdesc_special_args): Updated.
15883         (ix86_init_mmx_sse_builtins): Likewise.
15884         (ix86_expand_special_args_builtin): Likewise.
15885
15886 2009-06-17  Richard Henderson  <rth@redhat.com>
15887
15888         * tree-pretty-print.c (maybe_dump_asm_name): New.
15889         (dump_decl_name): Use it.
15890         (PRINT_FUNCTION_NAME): Merge into...
15891         (dump_function_name): ... here.  Use maybe_dump_asm_name.
15892
15893 2009-06-17  Cary Coutant  <ccoutant@google.com>
15894
15895         * dbxout.c (dbxout_source_line): Add is_stmt parameter.
15896         Change caller.
15897         * debug.c (struct gcc_debug_hooks): Change placeholder for
15898         source_line hook.
15899         (debug_nothing_int_charstar_int): Replaced by...
15900         (debug_nothing_int_charstar_int_bool): ...this.
15901         * debug.h (struct gcc_debug_hooks): Add is_stmt parameter to
15902         source_line prototype.
15903         (debug_nothing_int_charstar_int): Replaced by...
15904         (debug_nothing_int_charstar_int_bool): ...this.
15905         * defaults.h (SUPPORTS_DISCRIMINATOR): New constant.
15906         * dwarf2out.c (dwarf2out_source_line): Add is_stmt parameter.
15907         Output is_stmt operand when necessary.
15908         * final.c (final_scan_insn): Pass is_stmt to source_line debug hook.
15909         (notice_source_line): Add is_stmt parameter.
15910         * sdbout.c (sdbout_source_line): Add is_stmt parameter.
15911         * vmsdbgout.c (vmsdbgout_source_line): Add is_stmt parameter.
15912         Change callers.
15913         * xcoffout.c (xcoffout_source_line): Add is_stmt parameter.
15914         * xcoffout.h (xcoffout_source_line): Add is_stmt parameter.
15915
15916 2009-06-17  Ian Lance Taylor  <iant@google.com>
15917
15918         * expr.c (struct move_by_pieces_d): Rename from move_by_pieces.
15919         Change all uses.
15920         (struct store_by_pieces_d): Rename from store_by_pieces.  Change
15921         call uses.
15922
15923 2009-06-17  Adam Nemet  <anemet@caviumnetworks.com>
15924
15925         * tree.h (STRIP_NOPS, STRIP_SIGN_NOPS,
15926         STRIP_USELESS_TYPE_CONVERSION): Use tree_strip_nop_conversions,
15927         tree_strip_sign_nop_conversions and
15928         tree_ssa_strip_useless_type_conversions rather than stripping
15929         the operations here.
15930         (tree_strip_nop_conversions, tree_strip_sign_nop_conversions):
15931         Declare them.
15932         * gimple.h (tree_ssa_strip_useless_type_conversions): Declare it.
15933         * tree-ssa.c (tree_ssa_strip_useless_type_conversions): New function.
15934         * tree.c (tree_nop_conversion, tree_sign_nop_conversion,
15935         tree_strip_nop_conversions, tree_strip_sign_nop_conversions): New
15936         functions.
15937
15938 2009-06-17  Michael Eager  <eager@eagercon.com>
15939
15940         * config/rs6000/constraints.md (register_constraint "d"): New.
15941         * config/rs6000/dfp.md (movsd_store, extendsddd2, extendsdtd2,
15942         truncddsd2, *negdd2_fpr, *absdd2_fpr, *nabsdd2_fpr,
15943         *movdd_hardfloat32, *movdd_hardfloat64_mfpgpr, *movdd_hardfloat64,
15944         *negtd2_fp, *abstd2_fpr, *nabstd2_fpr, *movtd_internal, extendddtd2,
15945         trunctddd2, adddd3, addtd3, subdd3, subtd3, muldd3, multd3, divdd3,
15946         divtd3, *cmpdd_internal1, *cmptd_internal1, floatditd2, ftruncdd2,
15947         fixdddi2, ftrunctd2, fixtddi2): replace 'f' constraint with 'd'
15948         * config/rs6000/ppu_intrinsics.h (__mffs, __mtfsf, __mtfsfi, __fabs,
15949         __fnabs, __fmadd, __fmsub, __fnmadd, __fnmsub, __fsel, __frsqrte,
15950         __fsqrt, __fmul, __fmuls, __frsp, __fcfid, __fctid, __fctidz, __fctiw,
15951         __fctiwz): Same.
15952         * config/rs6000/rs6000.md (*extendsfdf2_fpr, *truncdfsf2_fpr,
15953         *fseldfsf4, *negdf2_fpr, *absdf2_fpr, *nabsdf2_fpr, *adddf3_fpr,
15954         *subdf3_fpr, *muldf3_fpr, *divdf3_fpr, recipdf3, fred, sqrtdf2,
15955         *fseldfdf4, *fselsfdf4, *floatsidf2_internal, *floatunssidf2_internal,
15956         *fix_truncdfsi2_internal, fix_truncdfsi2_internal_gfxopt,
15957         fix_truncdfsi2_mfpgpr, fctiwz, btruncdf2, ceildf2, floordf2, rounddf2,
15958         stfiwx, floatdidf2, fix_truncdfdi2, floatdisf2_internal1,
15959         *movdf_hardfloat32, *movdf_hardfloat64_mfpgpr, *movdf_hardfloat64,
15960         *movtf_internal, *extenddftf2_internal, trunctfdf2_internal1,
15961         trunctfdf2_internal2, trunctfsf2_fprs, fix_trunc_helper,
15962         *fix_trunctfsi2_internal, negtf2_internal, *movdi_internal32,
15963         *movdi_mfpgpr, *movdi_internal64, *movdf_update1, *movdf_update2,
15964         *cmpdf_internal1, *cmptf_internal1, *cmptf_internal2): Same.
15965         * doc/md.texi: Describe PowerPC 'd' constraint, update 'f' constraint.
15966
15967 2009-06-16  Ian Lance Taylor  <iant@google.com>
15968
15969         * profile.c (total_num_never_executed): Don't define.
15970         (compute_branch_probabilities): Don't count or print
15971         num_never_executed.
15972         (init_branch_prob): Don't set total_num_never_executed.
15973         (end_branch_prob): Don't print total_num_never_executed.
15974
15975 2009-06-17  David Daney  <ddaney@caviumnetworks.com>
15976
15977         * jump.c (cleanup_barriers): Handle case of no insns before a barrier.
15978
15979 2009-06-17  David Edelsohn  <edelsohn@gnu.org>
15980
15981         * config/rs6000/dfp.md (nabsdd2_fpr): Correct mode.
15982         (nabstd2_fpr): Same.
15983
15984 2009-06-17  Steve Ellcey  <sje@cup.hp.com>
15985
15986         * expr.c (expand_assignment): Change complex type check.
15987
15988 2009-06-17  Basile Starynkevitch  <basile@starynkevitch.net>
15989
15990         * doc/plugins.texi (Building GCC plugins): Added new section.
15991
15992 2009-06-17  Ian Lance Taylor  <iant@google.com>
15993
15994         * c-pch.c (get_ident): Don't set size of templ array.
15995         (pch_init): Don't set size of partial_pch array.
15996
15997         * c-typeck.c (digest_init): If -Wc++-compat, warn about using a
15998         string constant to intialize an array whose size is the length of
15999         the string.
16000
16001 2009-06-17  Richard Guenther  <rguenther@suse.de>
16002
16003         PR tree-optimization/40389
16004         * tree-ssa-structalias.c (handle_rhs_call): Restrict NRV case
16005         to addressable types.
16006         * gimple.c (walk_stmt_load_store_addr_ops): Likewise.
16007
16008 2009-06-17  Richard Guenther  <rguenther@suse.de>
16009
16010         PR middle-end/40460
16011         * tree-chrec.h (build_polynomial_chrec): If we cannot determine
16012         if there is no evolution of left in the loop bail out.
16013         * tree-chrec.c (chrec_fold_multiply_poly_poly): CSE one
16014         chrec_fold_multiply.
16015
16016 2009-06-16  J"orn Rennecke  <joern.rennecke@arc.com>
16017             Janis Johnson  <janis187@us.ibm.com>
16018
16019         PR target/39254
16020         * config/rs6000/rs6000.c (rs6000_emit_move): Don't emit a USE
16021         for the symbol ref of a constant that is the source of a move
16022         - nor for any other not-obvious-label-ref constants.
16023
16024 2009-06-16  Olatunji Ruwase  <tjruwase@google.com>
16025
16026         * plugin.c (position_pass): Skip newly inserted pass during list
16027         traversal to avoid repeated insertion.
16028
16029 2009-06-16  Ian Lance Taylor  <iant@google.com>
16030
16031         * vec.h (VEC_stack_alloc): Define different version if
16032         GATHER_STATISTICS is defined, to accept and ignore MEM_STAT.
16033         (DEF_VEC_ALLOC_FUNC_P_STACK): Remove MEM_STAT_DECL.
16034         (DEF_VEC_ALLOC_FUNC_O_STACK): Likewise.
16035         (DEF_VEC_ALLOC_FUNC_I_STACK): Likewise.
16036
16037 2009-06-16  H.J. Lu  <hongjiu.lu@intel.com>
16038
16039         * config.gcc (extra_headers): Add ia32intrin.h for x86.
16040
16041         * config/i386/i386.c (ix86_builtins): Add IX86_BUILTIN_BSRSI,
16042         IX86_BUILTIN_BSRDI.  IX86_BUILTIN_RDPMC, IX86_BUILTIN_RDTSC.
16043         IX86_BUILTIN_RDTSCP.  IX86_BUILTIN_ROLQI, IX86_BUILTIN_ROLHI,
16044         IX86_BUILTIN_RORQI and IX86_BUILTIN_RORHI.
16045         (ix86_special_builtin_type): Add UINT64_FTYPE_VOID,
16046         UINT64_FTYPE_PINT, INT_FTYPE_INT, UINT64_FTYPE_INT,
16047         INT64_FTYPE_INT64, UINT16_FTYPE_UINT16_INT and UINT8_FTYPE_UINT8_INT.
16048         (bdesc_special_args): Add __builtin_ia32_rdtsc and
16049         __builtin_ia32_rdtscp.
16050         (bdesc_args): Add __builtin_ia32_bsrsi, __builtin_ia32_bsrdi,
16051         __builtin_ia32_rolqi, __builtin_ia32_rolhi, __builtin_ia32_rorqi
16052         and __builtin_ia32_rorhi.
16053         (ix86_init_mmx_sse_builtins): Handle UINT64_FTYPE_VOID,
16054         UINT64_FTYPE_PINT, INT_FTYPE_INT, UINT64_FTYPE_INT,
16055         INT64_FTYPE_INT64, UINT16_FTYPE_UINT16_INT and UINT8_FTYPE_UINT8_INT.
16056         (ix86_expand_args_builtin): Likewise.
16057         (ix86_expand_special_args_builtin): Likewise.
16058
16059         * config/i386/i386.md (UNSPECV_RDTSCP): New.
16060         (UNSPECV_RDTSC): Likewise.
16061         (UNSPECV_RDPMC): Likewise.
16062         (*bsr): Renamed to ...
16063         (bsr): This
16064         (*bsr_rex64): Renamed to ...
16065         (bsr_rex64): This.
16066         (rdpmc): New.
16067         (*rdpmc): Likewise.
16068         (*rdpmc_rex64): Likewise.
16069         (rdtsc): Likewise.
16070         (*rdtsc): Likewise.
16071         (*rdtsc_rex64): Likewise.
16072         (rdtscp): Likewise.
16073         (*rdtscp): Likewise.
16074         (*rdtscp_rex64): Likewise.
16075
16076         * config/i386/ia32intrin.h: New.
16077
16078         * config/i386/x86intrin.h: Include <ia32intrin.h>.
16079
16080 2009-06-16  Ian Lance Taylor  <iant@google.com>
16081
16082         * ira-build.c (copy_info_to_removed_store_destinations):
16083         Initialize parent_a.
16084
16085 2009-06-16  Ian Lance Taylor  <iant@google.com>
16086
16087         * c-decl.c (grokdeclarator): Change size_varies to bool.
16088
16089 2009-06-16  Ian Lance Taylor  <iant@google.com>
16090
16091         * sel-sched.c: Make forward declarations of move_op_hooks and
16092         fur_hooks explicitly extern.
16093
16094 2009-06-16  Ian Lance Taylor  <iant@google.com>
16095
16096         * df-problems.c (df_byte_lr_alloc): Don't set problem_data to itself.
16097         * vec.c (vec_gc_o_reserve_1): Don't set alloc to itself.
16098
16099 2009-06-16  Ian Lance Taylor  <iant@google.com>
16100
16101         * resource.c (mark_referenced_resources): Change
16102         include_delayed_effects parameter to bool.  Change all callers.
16103         (mark_end_of_function_resources): Likewise.
16104         * reorg.c (insn_references_resource_p): Likewise.
16105         (insn_sets_resource_p): Likewise.
16106         * resource.h (mark_referenced_resources): Update declaration.
16107         (mark_end_of_function_resources): Update declaration.
16108
16109 2009-06-16  David Edelsohn  <edelsohn@gnu.org>
16110
16111         * config/rs6000/aix.h (LIBSTDCXX_STATIC): Remove -lstdc++.
16112
16113 2009-06-16  David Edelsohn  <edelsohn@gnu.org>
16114
16115         * doc/install.texi (*-*-aix): Update explanation of XLC bootstrap.
16116         GCC can bootstrap on AIX with GNU Binutils 2.20.
16117
16118 2009-06-16  Ian Lance Taylor  <iant@google.com>
16119
16120         * Makefile.in (tree-vect-stmts.o): Depend upon $(TOPLEV_H).
16121
16122 2009-06-16  Ian Lance Taylor  <iant@google.com>
16123
16124         * toplev.h (floor_log2): If GCC_VERSION >= 3004, declare as static
16125         inline, not extern inline.
16126         (exact_log2): Likewise.
16127         * toplev.c (floor_log2): Only define if GCC_VERSION < 3004. Don't
16128         test CLZ_HWI.
16129         (exact_log2): Likewise, but don't test CTZ_HWI.
16130
16131 2009-06-16  Ian Lance Taylor  <iant@google.com>
16132
16133         * bitmap.c (bitmap_clear): Don't declare as inline.
16134         * gimple.c (gimplify_assign): Likewise.
16135         * tree-ssa-sccvn.c (vn_nary_op_compute_hash): Likewise.
16136         * haifa-sched.c (insn_cost): Don't declare with HAIFA_INLINE.
16137         (sched_scan_info): Remove duplicate definition.
16138
16139 2009-06-16  Ian Lance Taylor  <iant@google.com>
16140
16141         * c-common.c (skip_evaluation): Don't define.
16142         (c_inhibit_evaluation_warnings): Define global variable.
16143         (overflow_warning): Check c_inhibit_evaluation_warnings rather
16144         than skip_evaluation.
16145         (convert_and_check, warn_for_div_by_zero): Likewise.
16146         * c-common.h (skip_evaluation): Don't declare.
16147         (c_inhibit_evaluation_warnings): Declare.
16148         * c-parser.c (c_parser_typeof_specifier): Set
16149         c_inhibit_evaluation_warnings rather than skip_evaluation.
16150         (c_parser_conditional_expression): Likewise.
16151         (c_parser_binary_expression): Likewise.
16152         (c_parser_sizeof_expression): Likewise.
16153         (c_parser_alignof_expression): Likewise.
16154         * c-typeck.c (build_indirect_ref): Check
16155         c_inhibit_evaluation_warnings rather than skip_evaluation.
16156         (build_conditional_expr, build_binary_op): Likewise.
16157
16158 2009-06-16  Richard Guenther  <rguenther@suse.de>
16159
16160         * tree-ssa-alias.c (is_escape_site): Remove.
16161         * tree-ssa-alias.h (enum escape_type): Remove.
16162         (is_escape_site): Likewise.
16163         * tree-ssa-structalias.c (find_func_aliases): Handle escapes
16164         via casts and asms without deferring to is_escape_site.
16165
16166 2009-06-16  Jakub Jelinek  <jakub@redhat.com>
16167
16168         PR middle-end/40446
16169         * expr.c (expand_expr_real_1) <case VIEW_CONVERT_EXPR>: Don't
16170         use gen_lowpart if op0 has complex mode.
16171
16172 2009-06-16  Richard Guenther  <rguenther@suse.de>
16173
16174         * tree-ssa-structalias.c (do_ds_constraint): Stores in global
16175         variables add them to ESCAPED.
16176         (find_func_aliases): Do not make all indirectly stored values escaped.
16177
16178 2009-06-16  Rafael Avila de Espindola  <espindola@google.com>
16179
16180         * config/i386/winnt.c (i386_pe_encode_section_info): Update call to
16181         make_decl_one_only.
16182
16183 2009-06-16  Martin Jambor  <mjambor@suse.cz>
16184
16185         PR tree-optimization/40432
16186         * tree-sra.c (sra_modify_assign): When creating VIEW_CONVERT_EXPR,
16187         check whether we need to force gimple register operand.
16188
16189 2009-06-16  Martin Jambor  <mjambor@suse.cz>
16190
16191         PR tree-optimization/40413
16192         * tree-sra.c (load_assign_lhs_subreplacements): Pass offset to
16193         build_ref_for_offset.
16194         (propagate_subacesses_accross_link): Fix a typo in a comment.
16195
16196 2009-06-16  Ira Rosen  <irar@il.ibm.com>
16197
16198         * tree-parloops.c (loop_parallel_p): Call vect_is_simple_reduction
16199         with additional parameter.
16200         * tree-vectorizer.h (enum vect_def_type): Add new value
16201         vect_nested_cycle.
16202         (enum vect_relevant): Add comments.
16203         (vect_is_simple_reduction): Add new argument.
16204         * tree-vect-loop.c (vect_analyze_scalar_cycles_1): Add comments.
16205         Detect nested cycles.
16206         (vect_is_simple_reduction): Update documentation, add an argument to
16207         distinguish inner-loop reduction from nested cycle, detect nested
16208         cycles, fix printings and indentation, don't swap operands in case
16209         of nested cycle.
16210         (get_initial_def_for_reduction): Handle subtraction.
16211         (vect_create_epilog_for_reduction): Add new argument to specify
16212         reduction variable.
16213         (vect_finalize_reduction): Handle subtraction, fix comments.
16214         (vectorizable_reduction): Handle nested cycles. In case of nested
16215         cycle keep track of the reduction variable position. Call
16216         vect_is_simple_reduction with additional parameter. Use original
16217         statement code in reduction epilogue for nested cycle. Call
16218         vect_create_epilog_for_reduction with additional parameter.
16219         * tree-vect-patterns.c (vect_recog_dot_prod_pattern): Assert
16220         inner-loop vectorization.
16221         (vect_recog_widen_sum_pattern): Likewise.
16222         * tree-vect-stmts.c (process_use): Distinguish between nested cycles
16223         and reductions.
16224         (vect_mark_stmts_to_be_vectorized): Likewise.
16225         (vect_get_vec_def_for_operand): Handle nested cycles.
16226
16227 2009-06-16  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
16228
16229         * doc/invoke.texi (Debugging Options): Fix option index entries
16230         for -fdump-statistics, -frandom-seed add entries for
16231         -fdump-tree-original, -fdump-tree-optimized, -frandom-seed.
16232         (FRV Options): Fix entries for -mTLS, -mtls.
16233         (HPPA Options): Fix entries for -mgnu-ld, -mhp-ld.
16234         (i386 and x86-64 Options): Fix entry for -mno-red-zone.
16235         (M68hc1x Options): Fix @itemx for -mnominmax.
16236         (MCore Options): Fix entry for -mno-lsim.
16237         (MMIX Options): Fix entry for -mabi=mmixware.
16238         (PDP-11 Options): Fix entry for -mbcopy-builtin.
16239
16240 2009-06-16  Basile Starynkevitch  <basile@starynkevitch.net>
16241
16242         * doc/plugins.texi (Interacting with the GCC Garbage Collector):
16243         Mention the plugin mode of gengtype.
16244         * doc/gty.texi (Source Files Containing Type Information): Likewise.
16245         * gengtype.c: Updated copyright.
16246         (plugin_files, nb_plugin_files) Added new static variables.
16247         (measure_input_list) Care about plugin_files.
16248         (write_rtx_next): Added early return in plugin mode.
16249         (create_file): Updated copyright year in generated file. Added
16250         asserts.
16251         (oprintf): Added early return if NULL outf.
16252         (get_output_file_with_visibility): Care of plugin_files.
16253         (get_output_file_name): May return null.
16254         (write_local): Added early return.
16255         (put_mangled_filename): Ditto.
16256         (finish_root_table): Added check for base_files.
16257         (write_roots): Care about null when plugins.
16258         (main): Added plugin mode.
16259
16260 2009-06-15  Ian Lance Taylor  <iant@google.com>
16261
16262         * df-problems.c (df_simulate_one_insn_forwards): Fix braces in switch.
16263         * gcov.c (read_count_file): Add braces around variables declared
16264         before label.
16265
16266         * c.opt (Wjump-misses-init): New warning.
16267         * c-opts.c (c_common_handle_option): Set warn_jump_misses_init for
16268         -Wall and -Wc++-compat if not already set.
16269         (c_common_post_options): Clear warn_jump_misses_init if it was not
16270         set.
16271         * c-decl.c (struct c_binding): Change type field to a union with
16272         new label field.  Make it the first field in the struct.  Update
16273         references to type to use u.type instead.
16274         (struct c_spot_bindings): Define.
16275         (struct c_goto_bindings): Define.
16276         (c_goto_bindings_p): Define, along with VECs.
16277         (struct c_label_vars): Define.
16278         (struct c_scope): Add has_label_bindings field.
16279         (bind_label, set_spot_bindings): New static functions.
16280         (decl_jump_unsafe, update_spot_bindings): New static functions.
16281         (update_label_decls): New static function.
16282         (pop_scope): Call update_label_decls.  Don't call c_end_vm_scope.
16283         Update binding u.label field to shadowed field.
16284         (c_binding_start_stmt_expr): New function.
16285         (c_binding_end_stmt_expr): New function.
16286         (pushdecl): Don't call c_begin_vm_scope.
16287         (make_label): Add defining and p_label_vars parameters.  Change
16288         all callers.
16289         (lookup_label): Correct test for whether a label has not yet been
16290         defined.  Call bind_label rather than bind.
16291         (warn_about_goto): New static function.
16292         (lookup_label_for_goto): New function.
16293         (declare_label): Call bind_label rather than bind.
16294         (check_earlier_gotos): New static function.
16295         (define_label): Don't give errors about jumping into statement
16296         expressions or scopes of variably modified types.  Call
16297         set_spot_bindings and check_earlier_gotos.  Call bind_label
16298         instead of bind.  Don't set label_context_stack_se or
16299         label_context_stack_vm.
16300         (c_get_switch_bindings): New function.
16301         (c_release_switch_bindings): New function.
16302         (c_check_switch_jump_warnings): New function.
16303         (start_function): Don't set label_context_stack_se or
16304         label_context_stack_vm.
16305         (finish_function): Likewise.
16306         * c-typeck.c (label_context_stack_se): Don't define.
16307         (label_context_stack_vm): Don't define.
16308         (c_finish_goto_label): Call lookup_label_for_goto rather than
16309         lookup_label.  Don't give errors about jumping into a statement
16310         expression or the scope of a variably modified type.  Don't set
16311         label_context_stack_se or label_context_stack_vm.
16312         (struct c_switch): Remove blocked_stmt_expr and blocked_vm
16313         fields.  Add bindings field.
16314         (c_start_case): Don't set deleted fields.  Set bindings field.
16315         (do_case): Rework order of tests.  Don't check blocked_stmt_expr
16316         or blocked_vm.  Call c_check_switch_jump_warnings.
16317         (c_finish_case): Don't test blocked_stmt_expr field.  Call
16318         c_release_switch_bindings.
16319         (c_begin_stmt_expr): Don't increment blocked_stmt_expr in
16320         c_switch_stack.  Don't walk label_context_stack_se labels.  Don't
16321         set label_context_stack_se.  Call c_bindings_start_stmt_expr.
16322         (c_finish_stmt_expr): Don't decrement blocked_stmt_expr in
16323         c_switch_stack.  Don't walk label_context_stack_se labels.  Don't
16324         set label_context_stack_se.  Call c_bindings_end_stmt_expr.
16325         (c_begin_vm_scope, c_end_vm_scope): Don't define.
16326         * c-tree.h (C_DECL_UNJUMPABLE_STMT_EXPR): Don't define.
16327         (C_DECL_UNDEFINABLE_STMT_EXPR): Don't define.
16328         (C_DECL_UNJUMPABLE_VM): Don't define.
16329         (C_DECL_UNDEFINABLE_VM): Don't define.
16330         (struct c_label_list): Don't define.
16331         (struct c_label_context_se): Don't define.
16332         (struct c_label_context_vm): Don't define.
16333         (struct c_spot_bindings): Declare.
16334         (c_bindings_start_stmt_expr): Declare.
16335         (c_bindings_end_stmt_expr): Declare.
16336         (lookup_label_for_goto): Declare.
16337         (c_get_switch_bindings, c_release_switch_bindings): Declare.
16338         (c_check_switch_jump_warnings): Declare.
16339         (label_context_stack_se, label_context_stack_vm): Don't declare.
16340         (c_finish_goto_label): Update declaration.
16341         (c_begin_vm_scope, c_end_vm_scope): Don't declare.
16342         * doc/invoke.texi (Option Summary): Mention -Wjump-misses-init.
16343         (Warning Options): Document -Wjump-misses-init.
16344
16345 2009-06-15  Jakub Jelinek  <jakub@redhat.com>
16346
16347         * tree-object-size.c (addr_object_size): Fix a pasto in the last
16348         change.
16349
16350 2009-06-15  Rafael Avila de Espindola  <espindola@google.com>
16351
16352         * cgraph.c (cgraph_make_node_local): Use DECL_COMDAT_GROUP.
16353
16354 2009-06-15  Aldy Hernandez  <aldyh@redhat.com>
16355
16356         * except.c (init_eh): Use BUILTINS_LOCATION when calling build_decl.
16357
16358 2009-06-15  Aldy Hernandez  <aldyh@redhat.com>
16359
16360         * tree-eh.c (lower_try_finally_switch): Initialize tf_loc.
16361
16362 2009-06-15  Rafael Avila de Espindola  <espindola@google.com>
16363
16364         * cgraphunit.c (cgraph_function_versioning,save_inline_function_body):
16365         Use DECL_COMDAT_GROUP instead of DECL_ONE_ONLY.
16366         * cgraph.c (cgraph_create_virtual_clone): Use DECL_COMDAT_GROUP.
16367         * config/i386/i386.c (ix86_file_end): Compute DECL_COMDAT_GROUP.
16368         * dwarf2asm.c (dw2_force_const_mem): Update call to
16369         make_decl_one_only.
16370         * langhooks-def.h (lhd_comdat_group, LANG_HOOKS_COMDAT_GROUP): Remove.
16371         (LANG_HOOKS_DECLS): Remove LANG_HOOKS_COMDAT_GROUP.
16372         * langhooks.c (lhd_comdat_group): Remove.
16373         * langhooks.h (lang_hooks_for_decls): Remove comdat_group.
16374         * tree.h (DECL_COMDAT_GROUP): New.
16375         (DECL_ONE_ONLY): Use DECL_COMDAT_GROUP.
16376         (tree_decl_with_vis): Add comdat_group. Remove one_only.
16377         (make_decl_one_only): Change signature.
16378         * varasm.c (get_emutls_init_templ_addr, emutls_decl): Update call to
16379         make_decl_one_only.
16380         (make_decl_one_only): Change signature.
16381         (default_elf_asm_named_section): Use DECL_COMDAT_GROUP.
16382
16383 2009-06-15  Richard Guenther  <rguenther@suse.de>
16384
16385         PR middle-end/40439
16386         * tree.c (widest_int_cst_value): Fix bootstrap on 32bit HWI hosts.
16387
16388 2009-06-14  Andreas Krebbel  <Andreas.Krebbel@de.ibm.com>
16389
16390         * tree-ssa-math-opts.c: Remove extra divide.
16391
16392 2009-06-14  Andreas Krebbel  <Andreas.Krebbel@de.ibm.com>
16393
16394         * config/s390/s390.md ("bswap<mode>2"): Only available on z900.
16395
16396 2009-06-14  Andreas Krebbel  <Andreas.Krebbel@de.ibm.com>
16397
16398         * passes.c: Add bswap pass.
16399         * tree-pass.h: Add pass_optimize_bswap declaration.
16400         * tree-ssa-math-opts.c: Include diagnostics.h for print_gimple_stmt.
16401         Include rtl.h, expr.h and optabs.h for optab_handler check.
16402         (struct symbolic_number, pass_optimize_bswap): New definition.
16403         (do_shift_rotate, verify_symbolic_number_p): New functions.
16404         (find_bswap_1, find_bswap, execute_optimize_bswap): New functions.
16405         (gate_optimize_bswap): New function.
16406         * tree.c (widest_int_cst_value): New function.
16407         * tree.h (widest_int_cst_value): Prototype added.
16408
16409 2009-06-14  Steven Bosscher  <steven@gcc.gnu.org>
16410
16411         * cfgcleanup.c (old_insns_match_p): Remove code to substitute
16412         REG_EQUAL/REG_EQUIV notes.
16413
16414 2009-06-14  Richard Guenther  <rguenther@suse.de>
16415
16416         PR middle-end/40389
16417         * gimple.c (walk_stmt_load_store_addr_ops): The LHS of a call
16418         has its address taken if NRV was applied and it is addressable.
16419         * tree-ssa-structalias.c (get_constraint_for_address_of): New
16420         function split out from ...
16421         (get_constraint_for_1): ... here.
16422         (handle_rhs_call): Use it to mark the return slot escaped if
16423         it is addressable and NRV was applied.
16424
16425 2009-06-13  Aldy Hernandez  <aldyh@redhat.com>
16426
16427         * config/rs6000/rs6000-protos.h (altivec_resolve_overloaded_builtin):
16428         Change first argument type to location_t.
16429         * config/rs6000/rs6000-c.c (altivec_resolve_overloaded_builtin): Same.
16430         Do not set input_location.
16431         Use loc instead of input_location throughout.
16432
16433 2009-06-13  Richard Guenther  <rguenther@suse.de>
16434
16435         PR tree-optimization/40421
16436         * tree-predcom.c (should_unroll_loop_p): Remove.
16437         (tree_predictive_commoning_loop): Use can_unroll_loop_p.
16438
16439 2009-06-13  Michael Meissner  <meissner@linux.vnet.ibm.com>
16440
16441         * config/rs6000/rs6000-c.c (altivec_resolve_overloaded_builtin):
16442         Add location argument.
16443
16444 2009-06-13  Aldy Hernandez  <aldyh@redhat.com>
16445
16446         * config/alpha/alpha.c (alpha_build_builtin_va_list): Pass location to
16447         build_decl.
16448         * config/s390/s390.c (s390_build_builtin_va_list): Same.
16449         (s390_gimplify_va_arg): Pass location to create_artificial_label.
16450         * config/spu/spu-protos.h: Add location to
16451         spu_resolve_overloaded_builtin.
16452         * config/spu/spu.c (spu_build_builtin_va_list): Pass location to
16453         spu_build_builtin_va_list.
16454         * config/spu/spu-c.c (spu_resolve_overloaded_builtin): Add location
16455         argument.  Pass location to build_function_call_vec.
16456         * config/sh/sh.c (sh_build_builtin_va_list): Pass location to
16457         build_decl.
16458         (emit_fpu_switch): Same.
16459         (sh_gimplify_va_arg_expr): Pass location to create_artificial_label.
16460         * config/xtensa/xtensa.c (xtensa_build_builtin_va_list): Pass location
16461         to build_decl and create_artificial_label.
16462         (xtensa_gimplify_va_arg_expr): Same.
16463         * config/stormy16/stormy16.c (xstormy16_build_builtin_va_list): Same.
16464         (xstormy16_gimplify_va_arg_expr): Same.
16465         * config/iq2000/iq2000.c (iq2000_expand_prologue): Same.
16466         * config/arm/arm.c (arm_build_builtin_va_list): Same.
16467         * config/mips/mips.c (mips_build_builtin_va_list): Same.
16468         (mips16_build_function_stub): Same.
16469         (mips16_build_call_stub): Same.
16470
16471 2009-06-13  Richard Earnshaw  <rearnsha@arm.com>
16472
16473         PR target/40327
16474         * arm/constraints.md (Pa, Pb): New constraints.
16475         * arm/arm.md (thumb1_addsi3): Support more complex additions.  Add a
16476         split pattern to deal with them.
16477
16478 2009-06-13  Joerg Sonnenberger  <joerg@britannica.bec.de>
16479
16480         * doc/invoke.texi: Add missing option -Wp,OPTION in list,
16481         fix index entry for -Xpreprocessor.
16482
16483 2009-06-12  Aldy Hernandez  <aldyh@redhat.com>
16484
16485         * config/rs6000/rs6000-c.c (altivec_resolve_overloaded_builtin):
16486         Add location argument to build_decl call.
16487         * config/rs6000/rs6000.c (rs6000_build_builtin_va_list): Same.
16488         (rs6000_init_builtins): Same.
16489         (spe_init_builtins): Same.
16490         (rs6000_gimplify_va_arg): Add location argument to
16491         create_artificial_label call.
16492
16493 2009-06-12  Steven Bosscher  <steven@gcc.gnu.org>
16494
16495         * timevar.def (TV_COMBINE_STACK_ADJUST): New timevar.
16496         * combine-stack-adj.c (pass_stack_adjustments): Use it.
16497         * Makefile.in: Fix GGC dependency for gcse.o.
16498
16499 2009-06-12  Aldy Hernandez  <aldyh@redhat.com>
16500
16501         * tree-pretty-print.c (dump_generic_node): Dump column numbers.
16502         * gimple-pretty-print.c (dump_gimple_stmt): Same.
16503         * gimplify.c (gimplify_modify_expr): Set location for GIMPLE_ASSIGNs
16504         created.
16505         * c-parser.c (c_parser_binary_expression): Use current column while
16506         building binary operations.
16507         * common.opt (fshow-column): Enable by default.
16508         * tree-vrp.c (check_array_ref): Use warning_at.
16509         (check_array_bounds): Use location from call back if expr has no
16510         location.
16511         * tree.h: Add location argument to maybe_fold_*.
16512         * tree-ssa-ccp.c (ccp_fold): Pass location to maybe_fold_*.
16513         (maybe_fold_offset_to_array_ref): Add location argument and use it.
16514         (maybe_fold_offset_to_component_ref): Same.
16515         (maybe_fold_offset_to_reference): Same.
16516         (maybe_fold_offset_to_address): Same.
16517         (maybe_fold_stmt_indirect): Same.
16518         (maybe_fold_stmt_addition): Same.
16519         (fold_stmt_r): Pass location to maybe_fold_*.
16520         (fold_gimple_assign): Same.
16521         * c-tree.h: Add location argument to finish_decl,
16522         default_function_array_conversion, store_init_value.
16523         * c-decl.c (define_label): Use error_at.
16524         (c_make_fname_decl): Pass location to finish_decl.
16525         (finish_decl): New location argument.
16526         (build_compound_literal): Pass location to store_init_value.
16527         (grokdeclarator): Pass location to finish_decl.
16528         (grokfield): Same.
16529         * c-typeck.c (array_to_pointer_conversion): New location argument.
16530         (function_to_pointer_conversion): Same.
16531         (default_function_array_conversion): Same.
16532         (parser_build_unary_op): Pass location to overflow_warning.
16533         (parser_build_binary_op): Same.  Use warning_at.
16534         (build_unary_op): Pass location to array_to_pointer_conversion.
16535         (build_c_cast): Pass location to digest_init.
16536         (build_modify_expr): New location argument.
16537         (convert_for_assignment): Same.
16538         (store_init_value): Same.
16539         (digest_init): Same.
16540         (output_init_element): Pass location to digest_init and
16541         array_to_pointer_conversion.
16542         (c_finish_return): Pass location to convert_for_assignment.
16543         * gimplify.c (gimplify_conversion): Pass location to
16544         maybe_fold_offset_to_address.
16545         * tree-ssa-forwprop.c (forward_propagate_addr_expr_1): Pass location
16546         to maybe_fold_stmt_addition.
16547         * c-omp.c (c_finish_omp_atomic): Pass new location to
16548         build_modify_expr.
16549         (c_finish_omp_for): Same.
16550         * c-common.c (overflow_warning): New argument.
16551         * c-common.h: New argument to build_modify_expr, overflow_warning.
16552         * c-parser.c (c_parser_declaration_or_fndef): Pass location to
16553         finish_decl.
16554         (c_parser_initializer): Pass location to
16555         default_function_array_conversion.
16556         (c_parser_initelt): Same.
16557         (c_parser_initval): Same.
16558         (c_parser_asm_operands): Same.
16559         (c_parser_expr_no_commas): Same.  Pass location to build_modify_expr.
16560         (c_parser_conditional_expression): Same.
16561         (c_parser_binary_expression): Add location info to stack.  Use it.
16562         (c_parser_unary_expression): Pass location to
16563         default_function_array_conversion, parser_build_unary_op,
16564         build_indirect_ref, c_parser_postfix_expression_after_primary.
16565         (c_parser_postfix_expression_after_primary): New location argument.
16566         Use it.
16567         (c_parser_expression_conv): Pass location to
16568         default_function_array_conversion.
16569         (c_parser_expr_list): Same.
16570         (c_parser_omp_atomic): Same.
16571         (c_parser_omp_for_loop): Same.
16572         * c-tree.h (struct c_declarator): Add comment to id_loc.
16573         (build_array_declarator): New argument.
16574         * c-decl.c (build_array_declarator): Add location argument.
16575         (grokdeclarator): Set id_loc for cdk_array.
16576         * c-parser.c (c_parser_direct_declarator_inner): Pass location to
16577         build_array_declarator.
16578         * tree.c (build_omp_clause): Add location argument.
16579         * tree.h (OMP_CLAUSE_HAS_LOCATION): New macro.
16580         (OMP_CLAUSE_LOCATION): New macro.
16581         (struct tree_omp_clause): Add location field.
16582         (build_omp_clause): Add argument.
16583         * cp/pt.c (tsubst_omp_for_iterator): Pass location to
16584         build_omp_clause.
16585         * cp/parser.c (cp_parser_omp_var_list_no_open): Same.
16586         (cp_parser_omp_clause_collapse): Same.
16587         (cp_parser_omp_clause_default): Same.
16588         (cp_parser_omp_clause_if): Same.
16589         (cp_parser_omp_clause_nowait): Same.
16590         (cp_parser_omp_clause_num_threads): Same.
16591         (cp_parser_omp_clause_ordered): Same.
16592         (cp_parser_omp_clause_schedule): Same.
16593         (cp_parser_omp_clause_untied): Same.
16594         (cp_parser_omp_for_loop): Same.
16595         (cp_parser_omp_parallel): Pass location to c_split_parallel_clauses.
16596         * c-tree.h (c_start_case): Add location argument.
16597         (c_process_expr_stmt): Same.
16598         (c_finish_goto_*): Same.
16599         * tree-parloops.c (initialize_reductions): Pass location to
16600         build_omp_clause.
16601         (create_parallel_loop): Same.
16602         * fortran/trans-openmp.c (gfc_trans_omp_variable_list): Same.
16603         (gfc_trans_omp_reduction_list): Same.
16604         (gfc_trans_omp_clauses): Same.
16605         (gfc_trans_omp_do): Same.
16606         * c-typeck.c (c_finish_goto_label): Same.
16607         (c_finish_goto_ptr): New location argument.
16608         (c_start_case): Same.
16609         (emit_side_effect_warnings): Same.
16610         (c_process_expr_stmt): Same.
16611         (c_finish_stmt_expr): Same.
16612         (c_finish_omp_clauses): Use error_at instead of error.
16613         * gimplify.c (gimplify_adjust_omp_clauses_1): Pass location to
16614         build_omp_clause.
16615         * c-omp.c (c_split_parallel_clauses): New location argument.
16616         * tree-nested.c (convert_nonlocal_reference_stmt): Pass location
16617         to build_omp_clause.
16618         (convert_local_reference_stmt): Same.
16619         (convert_gimple_call): Same.
16620         * c-common.h (c_split_parallel_clauses): New argument.
16621         * c-parser.c (c_parser_statement_after_labels): Pass location to
16622         c_finish_goto_label.
16623         (c_parser_switch_statement): Pass location to c_start_case.
16624         (c_parser_for_statement): Pass location to c_finish_expr_stmt,
16625         and c_process_expr_stmt.
16626         (c_parser_omp_variable_list): Add location argument.
16627         (c_parser_omp_clause_collapse): Pass location to build_omp_clause.
16628         (c_parser_omp_clause_default): Same.
16629         (c_parser_omp_clause_if): Same.
16630         (c_parser_omp_clause_num_threads): Same.
16631         (-c_parser_omp_clause_ordered): Same.
16632         (c_parser_omp_clause_reduction): Pass location to
16633         c_parser_omp_variable_list.
16634         (c_parser_omp_clause_schedule): Pass location to build_omp_clause.
16635         (c_parser_omp_clause_untied): Same.
16636         (c_parser_omp_for_loop): Pass location to c_process_expr_stmt.
16637         (c_parser_omp_parallel): Pass location to c_split_parallel_clauses.
16638
16639         * c-tree.h (check_for_loop_decls, undeclared_variable,
16640         build_component_ref, build_array_ref, build_external_ref,
16641         c_expr_sizeof_expr, c_expr_sizeof_type, parser_build_unary_op,
16642         build_conditional_expr, build_compound_expr, c_cast_expr,
16643         build_c_cast, build_asm_expr, c_end_compound_stmt, c_finish_stmt_expr,
16644         c_finish_return, c_finish_omp_parallel, c_finish_omp_task): New
16645         argument.
16646         * c-semantics.c (build_stmt): Same.
16647         (build_case_label): Same.
16648         * c-decl.c (c_finish_incomplete_decl): Pass location on down.
16649         (undeclared_variable): New argument.
16650         (make_label): Same.
16651         (lookup_label): Pass location on down.
16652         (define_label): Same.
16653         (finish_decl): Same.
16654         (build_compound_literal): Same.
16655         (finish_struct): Same.
16656         (finish_function): Do not set location here.
16657         (check_for_loop_decls): New argument.
16658         * tree.c (save_expr): Set location.
16659         (build_empty_stmt): New argument.
16660         * tree.h (build_empty_stmt): New argument to build_empty_stmt.
16661         (CAN_HAVE_LOCATION_P): Make sure we have a non empty node.
16662         * builtins.c (gimplify_va_arg_expr): Use locations.
16663         (expand_builtin_sync_operation): Same.
16664         * c-typeck.c (build_component_ref): New argument.
16665         (build_array_ref): Same.
16666         (build_external_ref): Same.
16667         (c_expr_sizeof_expr): Same.
16668         (c_expr_sizeof_type): Same.
16669         (parser_build_unary_op): Same.
16670         (build_conditional_expr): Same.
16671         (build_compound_expr): Pass location on down.
16672         (build_compound_expr): New argument.
16673         (build_c_cast): Same.
16674         (c_cast_expr): Same.
16675         (build_asm_expr): Same.
16676         (c_finish_return): Same.
16677         (c_process_expr_stmt): Pass location on down.
16678         (c_finish_stmt_expr): New argument.
16679         (push_clenaup): Same.
16680         (c_finish_omp_parallel): Same.
16681         (c_finish_omp_task): Same.
16682         * gimplify.c (gimplify_call_expr): Pass location on down.
16683         * c-omp.c (c_finish_omp_master): New argument.
16684         (c_finish_omp_critical): Same.
16685         (c_finish_omp_ordered): Same.
16686         (c_finish_omp_barrier): Same.
16687         (-c_finish_omp_taskwait): Same.
16688         (c_finish_omp_atomic): Same.
16689         (c_finish_omp_flush): Same.
16690         * tree-inline.c (copy_tree_body_r): Pass location on down.
16691         (inline_forbidden_p): Remove use of input_location.
16692         * c-gimplify.c (c_build_bind_expr): New argument.
16693         * c-common.c (c_common_truthvalue_conversion): Pass location on down.
16694         (c_sizeof_or_alignof_type): New argument.
16695         (c_alignof_expr): Same.
16696         (build_va_arg): Same.
16697         (c_add_case_label): Same.
16698         * c-common.h (c_sizeof_or_alignof_type, c_alignof_expr,
16699         c_sizeof, c_alignof, build_va_arg, build_stmt, build_case_label,
16700         c_build_bind_expr, objc_build_selector_expr, objc_build_throw_stmt,
16701         c_finish_omp_master, c_finish_omp_critical, c_finish_omp_ordered,
16702         c_finish_omp_barrier, c_finish_omp_atomic, c_finish_omp_flush,
16703         c_finish_omp_taskwait, c_finish_omp_for, c_split_parallel_clauses):
16704         New argument.
16705         * stub-objc.c (objc_build_selector_expr): Same.
16706         (objc_build_throw_stmt): Same.
16707         * c-parser.c (c_parser_declaration_or_fndef): Pass location on down.
16708         (c_parser_initelt): Same.
16709         (c_parser_compound_statement): Same.
16710         (c_parser_compound_statement_nostart): Same.
16711         (c_parser_label): Same.
16712         (c_parser_statement_after_labels): Same.
16713         (c_parser_if_body): Same.
16714         (c_parser_else_body): Same.
16715         (c_parser_if_statement): Same.
16716         (c_parser_switch_statement): Same.
16717         (c_parser_while_statement): Same.
16718         (c_parser_do_statement): Same.
16719         (c_parser_for_statement): Same.
16720         (c_parser_asm_statement): Same.
16721         (c_parser_conditional_expression): Same.
16722         (c_parser_binary_expression): Same.
16723         (c_parser_cast_expression): Same.
16724         (c_parser_unary_expression): Same.
16725         (c_parser_sizeof_expression): Same.
16726         (c_parser_alignof_expression): Same.
16727         (c_parser_postfix_expression): Same.
16728         (c_parser_expression): Same.
16729         (c_parser_objc_receiver): Same.
16730         (c_parser_omp_variable_list): Same.
16731         (c_parser_omp_structured_block): Same.
16732         (c_parser_omp_atomic): New argument.
16733         (c_parser_omp_barrier): Same.
16734         (c_parser_omp_critical): Same.
16735         (c_parser_omp_flush): Pass location on down.
16736         (c_parser_omp_for_loop): New argument.
16737         (c_parser_omp_for): Same.
16738         (c_parser_omp_master): Same.
16739         (c_parser_omp_ordered): Same.
16740         (c_parser_omp_sections_scope): Same.
16741         (c_parser_omp_sections): Same.
16742         (c_parser_omp_parallel): Same.
16743         (c_parser_omp_single): Same.
16744         (c_parser_omp_task): Same.
16745         (c_parser_omp_taskwait): Pass location on down.
16746         (c_parser_omp_construct): Same.
16747         (c_parser_omp_threadprivate): Same.
16748         * dwarf2asm.c, targhooks.c, optabs.c, tree.c, tree.h, target.h,
16749         builtins.c, omp-low.c, cgraphunit.c, tree-call-cdce.c,
16750         tree-ssa-alias.c, gimple-low.c, c-tree.h, expr.c, tree-parloops.c,
16751         c-decl.c, tree-eh.c, langhooks.c, function.c, stor-layout.c,
16752         c-typeck.c, gimplify.c, c-pragma.c, expmed.c, except.c, coverage.c,
16753         emit-rtl.c, cfgexpand.c, tree-mudflap.c, varasm.c, tree-nested.c,
16754         rtl.h, tree-inline.c, tree-profile.c, c-common.c, c-common.h,
16755         tree-switch-conversion.c, tree-cfg.c, ipa-struct-reorg.c, c-parser.c,
16756         config/i386/i386.c, stmt.c:
16757         Add location argument to the following function definitions and/or
16758         function calls: build_decl, objcp_start_struct, objcp_finish_struct,
16759         start_struct, finish_struct, PUSH_FIELD, create_artificial_label,
16760         cp_make_fname_decl, pushtag, implicitly_declare, c_make_fname_decl,
16761         build_compound_literal, parser_xref_tag, resolve_overloaded_builtin,
16762         do_case, c_finish_bc_stmt, build_compound_literal,
16763         build_function_call.
16764         * c-decl.c (build_compound_literal): Add location argument.
16765         Make all diagnostic calls use location.
16766         (start_struct): Same.
16767         (finish_struct): Same.
16768         (start_enum): Same.
16769         (build_enumerator): Same.
16770         (start_function): Same.
16771         (grokdeclarator): Make all diagnostic calls use location.
16772         (store_parm_decls_oldstyle): Same.
16773         * c-typeck.c (build_function_call): Add location argument.
16774         Make all diagnostic calls use location.
16775         (do_case): Same.
16776         (c_finish_bc_stmt): Same.
16777         * tree-nested.c (get_trampoline_type): Add argument.
16778         Pass location to build_decl.
16779         (lookup_tramp_for_decl): Pass location to get_trampoline_type.
16780         * rtl.h (RTL_LOCATION): New.
16781         * c-common.c (c_add_case_label): Add location argument.
16782         Make all diagnostic calls use location.
16783         * c-common.h: Add location argument to make_fname_decl, do_case,
16784         c_add_case_label, build_function_call, resolve_overloaded_builtin.
16785         * c-parser.c (c_parser_enum_specifier): Rename ident_loc to enum_loc.
16786         Set it appropriately for every case.  Pass enum_loc to start_enum
16787         call.  Pass value_loc first to build_enumerator.  Pass enum_loc to
16788         parser_xref_tag.
16789         (c_parser_struct_or_union_specifier): Save location.  Use it for
16790         start_struct, finish_struct, and parser_xref_tag.
16791
16792 2009-06-12  Ian Lance Taylor  <iant@google.com>
16793
16794         * fold-const.c (fold_unary): Rename local variable and to and_expr.
16795
16796         * c-opts.c (c_common_handle_option): For -Wc++-compat set
16797         cpp_opts->warn_cxx_operator_names.
16798
16799 2009-06-12  Andrew Pinski  <andrew_pinski@playstation.sony.com>
16800
16801         PR tree-opt/38865
16802         * tree-ssa-sccvn.c (visit_reference_op_load): If vn_reference_lookup
16803         is returns NULL and OP is a VCE, look through the VCE.
16804
16805 2009-06-12  Ian Lance Taylor  <iant@google.com>
16806
16807         PR bootstrap/40430
16808         * collect2.c (main): Use CONST_CAST2 in code inside #if
16809         LINK_ELIMINATE_DUPLICATE_LDIRECTORIES.
16810
16811 2009-06-12  Joey Ye  <joey.ye@intel.com>
16812
16813         PR middle-end/39146
16814         * cfgexpand.c (get_decl_align_unit): Update
16815         max_used_stack_slot_alignment with align instead of
16816         stack_alignment_needed.
16817
16818         * function.c (assign_stack_local_1): Update
16819         max_used_stack_slot_alignment with alignment_in_bits instead
16820         of stack_alignment_needed.
16821         (locate_and_pad_parm): Don't update max_used_stack_slot_alignment
16822         here.
16823
16824 2009-06-12  Jakub Jelinek  <jakub@redhat.com>
16825
16826         * dwarf2out.c (last_var_location_insn): New variable.
16827         (dwarf2out_end_epilogue): Clear last_var_location_insn.
16828         (dwarf2out_var_location): Don't record anything after last real
16829         insn.  Only change labels if there were any real instructions
16830         in between last note and this one, or if changed sections.
16831
16832 2009-06-11  Richard Henderson  <rth@redhat.com>
16833
16834         * alpha.c (alpha_expand_prologue): Add a REF_CFA_REGISTER
16835         note when storing the frame pointer in a register.
16836         (FRP): Don't redefine to nothing for epilogue.
16837         (alpha_expand_epilogue): Mark register and sp restores.
16838         (unicosmk_gen_dsib): Don't mark weird frame pointer adjust.
16839
16840         * config/alpha/alpha.c (alpha_emit_setcc): Fix test for
16841         when gen_lowpart is needed.
16842
16843 2009-06-11  Richard Henderson  <rth@redhat.com>
16844
16845         * dwarf2out.c (def_cfa_1): Likewise for DW_CFA_cfa_offset.
16846
16847         * dwarf2out.c (need_data_align_sf_opcode): New.
16848         (div_data_align): Move earlier.
16849         (def_cfa_1, reg_save): Use it.
16850
16851 2009-06-11  H.J. Lu  <hongjiu.lu@intel.com>
16852
16853         * config/i386/i386.c (OPTION_MASK_ISA_CRC32_SET): New.
16854         (OPTION_MASK_ISA_CRC32_UNSET): Likewise.
16855         (ix86_handle_option): Handle OPT_mcrc32.
16856         (ix86_target_string): Add -mcrc32.
16857         (bdesc_args): Enable crc32 builtins with OPTION_MASK_ISA_CRC32.
16858
16859         * config/i386/i386.h (TARGET_CRC32): New.
16860
16861         * config/i386/i386.md (sse4_2_crc32<mode>): Also check TARGET_CRC32.
16862         (sse4_2_crc32di): Likewise.
16863
16864         * config/i386/i386.opt (mcrc32): New.
16865
16866         * doc/invoke.texi: Document -mcrc32.
16867
16868 2009-06-11  Richard Henderson  <rth@redhat.com>
16869
16870         * common.opt (gdwarf-): Accept a version number.
16871         * doc/invoke.texi (gdwarf-): Update docs.
16872         * opth-gen.awk: Special case -gdwarf+ to OPT_gdwarfplus.
16873         * opts.c (common_handle_option) [OPT_gdwarf_]: Verify dwarf
16874         version level, and record it.
16875
16876         * dwarf2.h (DW_CIE_VERSION): Remove.
16877         * dwarf2out.c (DWARF_VERSION): Remove.
16878         (add_fde_cfi): Skip DW_CFA_set_loc addition for dwarf3.
16879         (output_call_frame_info): Use CIE version 3 for dwarf3,
16880         or if the return register column is out of range for version 1.
16881         (dwarf_stack_op_name): Add all dwarf3 values.
16882         (DEBUG_PUBTYPES_SECTION): New.
16883         (size_of_die) [dw_val_class_die_ref]: Handle DW_FORM_ref_addr
16884         encoding change for dwarf3.
16885         (output_die) [dw_val_class_die_ref]: Likewise.
16886         (output_compilation_unit_header): Emit correct version for dwarf3.
16887         (output_line_info): Likewise.
16888         (output_pubnames): Update for DWARF_VERSION removal.
16889         (output_aranges): Likewise.
16890         (gen_subprogram_die): Emit DW_OP_call_frame_cfa if emitting dwarf3.
16891         (dwarf2out_init): Don't ifdef DEBUG_PUBTYPES_SECTION.
16892         (dwarf2out_finish): Likewise.
16893
16894 2009-06-11  David Daney  <ddaney@caviumnetworks.com>
16895
16896         * system.h (gcc_assert, gcc_unreachable): Revert accidental commit
16897         in r148403.
16898
16899 2009-06-11  David Daney  <ddaney@caviumnetworks.com>
16900
16901         PR c/39252
16902         * doc/extend.texi ( __builtin_unreachable): Document new builtin.
16903         * builtins.c (expand_builtin_unreachable): New function.
16904         (expand_builtin): Handle BUILT_IN_UNREACHABLE case.
16905         * builtins.def (BUILT_IN_UNREACHABLE): Add new builtin.
16906         * cfgcleanup.c (try_optimize_cfg): Delete empty blocks with no
16907         successors.
16908         * cfgrtl.c (rtl_verify_flow_info): Handle empty blocks when
16909         searching for missing barriers.
16910
16911 2009-06-11  Francois-Xavier Coudert  <fxcoudert@gcc.gnu.org>
16912
16913         * config/darwin.h (LINK_COMMAND_SPEC): Adjust spec to link libcov
16914         when -fprofile-generate* was passed.
16915         * config/darwin9.h (LINK_COMMAND_SPEC): Likewise.
16916
16917 2009-06-11  Anthony Green  <green@moxielogic.com>
16918
16919         * config/moxie/moxie.md: Define length attribute for all instructions.
16920         (rCC): Define.
16921         (*b<cond:code>): Support limited branch ranges for new PC-relative
16922         branch instructions.
16923         * config/moxie/moxie.h (HAS_LONG_UNCOND_BRANCH): Define.
16924
16925 2009-06-11  Jakub Jelinek  <jakub@redhat.com>
16926
16927         * config/i386/i386.c (min_insn_size): Use get_attr_length
16928         for normal insns other than TYPE_MULTI, TYPE_OTHER and TYPE_FCMP.
16929         For __asm return 0.
16930
16931         * config/i386/i386.c (ix86_pad_returns): Use emit_jump_insn_before
16932         instead of emit_insn_before.
16933
16934 2009-06-10  Ian Lance Taylor  <iant@google.com>
16935
16936         PR bootstrap/40408
16937         * graphite.c (add_conditions_to_domain): Change SWITCH_EXPR to
16938         GIMPLE_SWITCH.
16939
16940 2009-06-10  Revital Eres  <eres@il.ibm.com>
16941
16942         * passes.c (init_optimization_passes): Reschedule
16943         predictive-commoning pass before complete unroll pass.
16944
16945 2009-06-10  Martin Jambor  <mjambor@suse.cz>
16946
16947         * cgraph.c (cgraph_node_can_be_local_p): New function.
16948         (cgraph_make_node_local): New function.
16949         * cgraph.h (cgraph_node_can_be_local_p): Declare.
16950         (cgraph_make_node_local): Declare.
16951
16952 2009-06-10  Nathan Froyd  <froydnj@codesourcery.com>
16953
16954         * tree.h (tree_base): Add packed_flag and user_align fields.
16955         Decrease size of spare field.
16956         (TYPE_USER_ALIGN): Use user_align from tree_base.
16957         (DECL_USER_ALIGN): Likewise.
16958         (TYPE_PACKED): Use packed_flag from tree_base.
16959         (DECL_PACKED): Likewise.
16960         (tree_type): Delete packed_flag and user_align fields.  Widen
16961         precision field.  Widen mode field and shuffle fields to align
16962         mode on an 8-bit boundary.
16963         (tree_decl_common): Delete decl_flag_1 and user_align fields.
16964         Renumber decl_flag_* fields.  Fix comments.  Widen
16965         decl_common_unused field.
16966         (DECL_HAS_VALUE_EXPR_P): Adjust for renumbering of decl_flag_* fields.
16967         (DECL_EXTERNAL): Likewise.
16968         (DECL_BIT_FIELD): Likewise.
16969         (DECL_NONADDRESSABLE_P): Likewise.
16970         (TYPE_DECL_SUPRESS_DEBUG): Likewise.
16971         * config/arm/arm-modes.def (XImode): Make it an INT_MODE.
16972
16973 2009-06-10  Ian Lance Taylor  <iant@google.com>
16974
16975         * vec.h (DEF_VEC_ALLOC_I): Use DEF_VEC_NONALLOC_FUNCS_I.
16976         (DEF_VEC_ALLOC_P): Use DEF_VEC_NONALLOC_FUNCS_P.
16977         (DEF_VEC_ALLOC_O): Use DEF_VEC_NONALLOC_FUNCS_O.
16978         (DEF_VEC_ALLOC_FUNC_P): Only define VEC_OP (T,A,alloc).
16979         (DEF_VEC_NONALLOC_FUNCS_P): New macro, broken out of old
16980         DEF_VEC_ALLOC_FUNC_P.
16981         (DEF_VEC_ALLOC_FUNC_O): Only define VEC_OP (T,A,alloc).
16982         (DEF_VEC_NONALLOC_FUNCS_O): New macro, broken out of old
16983         DEF_VEC_ALLOC_FUNC_O.
16984         (DEF_VEC_ALLOC_FUNC_I): Only define VEC_OP (T,A,alloc).
16985         (DEF_VEC_NONALLOC_FUNCS_I): New macro, broken out of old
16986         DEF_VEC_ALLOC_FUNC_I.
16987         (vec_stack_p_reserve, vec_stack_p_reserve_exact): Declare.
16988         (vec_stack_p_reserve_exact_1): Declare.
16989         (vec_stack_o_reserve, vec_stack_o_reserve_exact): Declare.
16990         (vec_stack_free): Declare.
16991         (VEC_stack_alloc): Define.
16992         (DEF_VEC_ALLOC_P_STACK, DEF_VEC_ALLOC_FUNC_P_STACK): Define.
16993         (DEF_VEC_ALLOC_O_STACK, DEF_VEC_ALLOC_FUNC_O_STACK): Define.
16994         (DEF_VEC_ALLOC_I_STACK, DEF_VEC_ALLOC_FUNC_I_STACK): Define.
16995         * vec.c (void_p): New type.  Call DEF_VEC_P and DEF_VEC_ALLOC_P
16996         for void_p.
16997         (stack_vecs): New static variable.
16998         (vec_stack_p_reserve_exact_1): New function.
16999         (vec_stack_o_reserve_1): New static function.
17000         (vec_stack_p_reserve, vec_stack_p_reserve_exact): New functions.
17001         (vec_stack_o_reserve, vec_stack_o_reserve_exact): New functions.
17002         (vec_stack_free): New function.
17003         * df-scan.c (df_ref): Use DEF_VEC_P and DEF_VEC_ALLOC_P_STACK.
17004         (VEC_df_ref_stack_alloc): Define.
17005         (df_mw_hardreg_ptr): New type.  Use DEF_VEC_P and
17006         DEF_VEC_ALLOC_P_STACK.
17007         (VEC_df_mw_hardreg_ptr_stack_alloc): Define.
17008         (struct df_collection_rec): Change _vec fields to VEC.  Remove
17009         _use fields.
17010         (df_free_collection_rec): Adjust for new fields.
17011         (df_insn_rescan): Use new df_collection_rec fields.
17012         (df_notes_rescan, df_canonize_collection_rec): Likewise.
17013         (df_ref_create_structure, df_ref_record): Likewise.
17014         (df_get_conditional_uses, df_get_call_refs): Likewise.
17015         (df_insn_refs_collect, df_bb_refs_collect): Likewise.
17016         (df_bb_refs_record, df_record_entry_block_defs): Likewise.
17017         (df_record_exit_block_uses, df_bb_verify): Likewise.
17018         (df_swap_refs): Change ref_vec parameter to VEC.  Change all callers.
17019         (df_sort_and_compress_refs): Change ref_vec parameter to VEC.
17020         Remove count parameter.  Change return type to void.  Change all
17021         callers.
17022         (df_sort_and_compress_mws): Change mw_vec parameter to VEC.
17023         Remove count parameter.  Change return type to void.  Change all
17024         callers.
17025         (df_install_refs): Change old_vec parameter to VEC.  Remove count
17026         parameter.  Change all callers.
17027         (df_install_mws): Change old_vec parameter to VEC.  Remove count
17028         parameter.  Change all callers.
17029         (df_refs_verify): Change new_rec parameter to VEC.  Change call
17030         callers.
17031         (df_mws_verify): Likewise.
17032
17033 2009-06-10  Alexandre Oliva  <aoliva@redhat.com>
17034
17035         * gcc.c (compare_files): Cast munmap argumento to caddr_t.
17036
17037 2009-06-10  H.J. Lu  <hongjiu.lu@intel.com>
17038
17039         * doc/extend.texi: Add description for __builtin_ia32_crc32di.
17040
17041 2009-06-10  Anthony Green  <green@moxielogic.com>
17042
17043         * config/moxie/crti.asm: New file.
17044         * config/moxie/crtn.asm: New file.
17045         * config/moxie/moxie.c: New file.
17046         * config/moxie/moxie.h: New file.
17047         * config/moxie/sfp-machine.h: New file.
17048         * config/moxie/moxie-protos.h: New file.
17049         * config/moxie/t-moxie: Created.
17050         * config/moxie/t-moxie-softfp: Created.
17051         * config/moxie/moxie.md: Created.
17052         * config/moxie/constraints.md: Created.
17053         * config.gcc: Add moxie support.
17054         * doc/md.texi (Machine Constraints): Add moxie constraints.
17055         * doc/contrib.texi (Contributors): Mention moxie port.
17056         * doc/install.texi (Specific): Mention the moxie port.
17057
17058 2009-06-09  Ian Lance Taylor  <iant@google.com>
17059
17060         * system.h (HAVE_DESIGNATED_INITIALIZERS): Don't define if
17061         compiling with C++.
17062         * optabs.c (optab_table): Only use designated initializers if
17063         HAVE_DESIGNATED_INITIALIZERS is defined.
17064         (convert_optab_table): Likewise.
17065         (init_optabs): Always call init_insn_codes if
17066         HAVE_DESIGNATED_INITIALIZERS is not defined.
17067
17068 2009-06-09  Ian Lance Taylor  <iant@google.com>
17069
17070         * targhooks.c (default_builtin_vectorized_function): Change fn
17071         parameter to unsigned int.
17072         (default_builtin_vectorized_conversion): Change code parameter to
17073         unsigned int.
17074         (default_builtin_reciprocal): Change fn parameter to unsigned int.
17075         * targhooks.h: Update declarations.
17076         * config/rs6000/rs6000.c (rs6000_builtin_conversion): Change code
17077         parameter to unsigned int.
17078
17079         * c-typeck.c (comptypes_check_enum_int): New static function.
17080         (comptypes_internal): Add enum_and_int_p parameter.  Change all
17081         callers.
17082         (comp_target_types): Add location parameter.  Change all callers.
17083         (tagged_types_tu_compatible_p): Add enum_and_int_p parameter.
17084         Change all callers.
17085         (function_types_compatible_p, type_lists_compatible_p): Likewise.
17086         (build_conditional_expr): Add colon_loc parameter.  Change all
17087         callers.
17088         (convert_for_assignment): Add location parameter.  Change all callers.
17089         * c-parser.c (c_parser_conditional_expression): Pass location of
17090         colon to build_conditional_expr.
17091         * c-tree.h (build_conditional_expr): Update declaration.
17092
17093 2009-06-09  Sebastian Pop  <sebastian.pop@amd.com>
17094
17095         * graphite.c: Revert previous patch.
17096
17097 2009-06-09  Sebastian Pop  <sebastian.pop@amd.com>
17098
17099         PR bootstrap/40103
17100         * graphite.c: Remove pragma GCC diagnostic warning "-Wc++-compat".
17101
17102 2009-06-09  Ghassan Shobaki  <ghassan.shobaki@amd.com>
17103
17104         * tree-ssa-loop-prefetch.c
17105         (loop_prefetch_arrays): Fixed a portability problem in printf format
17106         string.
17107
17108 2009-06-09  Martin Jambor  <mjambor@suse.cz>
17109
17110         PR tree-optimization/40351
17111         * tree-sra.c (propagate_subacesses_accross_link): Check that a
17112         refrence to a potential artifical subaccess can be constructed.
17113
17114 2009-06-08  Kaz Kojima  <kkojima@gcc.gnu.org>
17115
17116         * config/sh/sh-protos.h (sh_optimization_options): Declare.
17117         (sh_override_options): Likewise.
17118         * config/sh/sh.c: Include params.h.
17119         (sh_optimization_options): New.
17120         (sh_override_options): Likewise.
17121         * config/sh/sh.c (OPTIMIZATION_OPTIONS): Use sh_optimization_options.
17122         (OVERRIDE_OPTIONS): Use sh_override_options.
17123
17124 2009-06-08  Jakub Jelinek  <jakub@redhat.com>
17125
17126         * dwarf2out.c (emit_cfa_remember): New variable.
17127         (add_fde_cfi): If emit_cfa_remember, recurse to add
17128         DW_CFA_remember_state first.
17129         (dwarf2out_begin_epilogue): Don't add_fde_cfi DW_CFA_remember_state,
17130         instead just set emit_cfa_remember.
17131
17132 2009-06-08  Jan Hubicka  <jh@suse.cz>
17133
17134         PR debug/40126
17135         * dwarf2out.c (dwarf2out_abstract_function): Free decl_loc_table.
17136
17137 2009-06-08  Jan Hubicka  <jh@suse.cz>
17138
17139         PR middle-end/39834
17140         * cgraphunit.c (save_inline_function_body): Do not copy transform
17141         hooks for saved inline bodies.
17142         * ipa-passes.c (do_per_function): Do not add the hoks multiple times
17143         for given function.
17144
17145 2009-06-08  Adam Nemet  <anemet@caviumnetworks.com>
17146
17147         * jump.c (returnjump_p): Handle delayed branches.  Add missing
17148         function comment.
17149
17150 2009-06-08  Jan Hubicka  <jh@suse.cz>
17151
17152         PR middle-end/40102
17153         * cgraph.c (cgraph_create_edge_including_clones): Also asume that the
17154         original node might've been modified.
17155         * tree-inline.c (copy_bb): Do not assume that all clones are the same.
17156
17157 2009-06-08  Jakub Jelinek  <jakub@redhat.com>
17158
17159         * tree-object-size.c (addr_object_size): Add OSI argument.
17160         Handle also INDIRECT_REF with SSA_NAME inside of it as base address.
17161         (compute_builtin_object_size, expr_object_size): Adjust callers.
17162         (plus_stmt_object_size): Call addr_object_size instead of
17163         compute_builtin_object_size.
17164
17165 2009-06-08  Ghassan Shobaki  <ghassan.shobaki@amd.com>
17166             Dwarakanath Rajagopal  <dwarak.rajagopal@amd.com>
17167
17168         * tree-ssa-loop-prefetch.c
17169         (gather_memory_references): Introduced a counter for the number of
17170         memory references.
17171         (anything_to_prefetch_p): Introduced a counter for the number of
17172         prefetches.
17173         (is_loop_prefetching_profitable): New function with a cost model
17174         for prefetching.
17175         (loop_prefetch_arrays): Use the new cost model to determine if
17176         prefetching is profitable.
17177         * params.def (MIN_INSN_TO_PREFETCH_RATIO,
17178         PREFETCH_MIN_INSN_TO_MEM_RATIO): New parameters.
17179         * params.h (MIN_INSN_TO_PREFETCH_RATIO,
17180         PREFETCH_MIN_INSN_TO_MEM_RATIO): New parameters.
17181         * doc/invoke.texi (MIN_INSN_TO_PREFETCT_RATIO,
17182         PREFETCH_MIN_INSN_TO_MEM_RATIO): New parameters.
17183
17184 2009-06-08  Michael Matz  <matz@suse.de>
17185
17186         PR debug/40012
17187         * cfgexpand.c (set_rtl): Store place also in DECL_RTL, if all
17188         partitions use the same.
17189         (expand_one_var): Deal with DECL_RTL sometimes begin set also
17190         for basevars of SSA_NAMEs.
17191         (expand_used_vars): Reset TREE_USED for basevars of SSA_NAMEs,
17192         to not expand them twice.
17193         (gimple_expand_cfg): Clear DECL_RTL for those decls that have
17194         multiple places.
17195
17196 2009-06-08  Alexandre Oliva  <aoliva@redhat.com>
17197
17198         * common.opt (fcompare-debug=, fcompare-debug-second): New.
17199         (fdump-final-insns=, gtoggle): New.
17200         * doc/invoke.texi: Document them.
17201         * final.c (rest_of_clean_state): Dump final insn stream.
17202         * gcc.c (invoke_as): Hook in -fcompare-debug.
17203         (static_spec_functions): Add compare-debug-dump-opt,
17204         compare-debug-self-opt and compare-debug-auxbase-opt.
17205         (compare_debug, compare_debug_second, compare_debug_opt): New.
17206         (switches_debug_check, n_switches_debug_check): New.
17207         (debug_auxbase_opt, debug_check_temp_file): New.
17208         (process_command): Handle -fno-compare-debug, -fcompare-debug and
17209         -fcompare-debug=*.
17210         (do_self_spec): Handle arguments after switches.
17211         (do_spec_1): Add .gk extension to temp file basenames for compare.
17212         (check_live_switch): Take SWITCH_IGNORE into account, and earlier.
17213         (cc1_options): Use it instead of normal auxbase computation for
17214         the second compare-debug compilation.
17215         (compare_files): New.
17216         (main): Set up and implement compare debug mode.
17217         (compare_debug_dump_opt_spec_function): New.
17218         (compare_debug_self_opt_spec_function): New.
17219         (compare_debug_auxbase_opt_spec_function): New.
17220         * toplev.c (process_options): Handle flag_gtoggle,
17221         flag_dump_final_insns.
17222         * coverage.c (coverage_begin_output): Don't overwrite .gcno file
17223         during -fcompare-debug-second compilation.
17224
17225 2009-06-07  Ian Lance Taylor  <iant@google.com>
17226
17227         * dwarf2.h (enum dwarf_location_atom): Add INTERNAL_DW_OP_tls_addr.
17228         * dwarf2out.c (INTERNAL_DW_OP_tls_addr): Don't #define.
17229
17230         * c-common.c (c_do_switch_warnings): Don't exit early for -Wswitch
17231         with no default node.  Change warning with %H to warning_at.
17232         Don't clear warn_switch around case checking.
17233         * doc/invoke.texi (Warning Options): Clarify distinction between
17234         -Wswitch and -Wswitch-enum.
17235
17236 2009-06-07  Bernhard Reutner-Fischer  <aldot@gcc.gnu.org>
17237
17238         * tree-pass.h (TODO_update_ssa_any): Document internal use only.
17239
17240 2009-06-07  Bernhard Reutner-Fischer  <aldot@gcc.gnu.org>
17241
17242         * gbl-ctors.h: Add header guard.
17243
17244 2009-06-07  Bernhard Reutner-Fischer  <aldot@gcc.gnu.org>
17245
17246         * tree-flow.h (make_value_handle, set_value_handle, sort_vuses,
17247         sort_vuses_heap, vn_lookup_or_add, vn_lookup_or_add_with_stmt,
17248         vn_lookup_or_add_with_vuses, vn_add, vn_add_with_vuses,
17249         vn_lookup_with_stmt, vn_lookup, vn_lookup_with_vuses): Remove
17250         prototypes for removed functions.
17251         (expressions_equal_p): Move to ...
17252         * tree-ssa-sccvn.h: ... here and ...
17253         * matrix-reorg.c: ... adjust includes.
17254
17255 2009-06-07  Bernhard Reutner-Fischer  <aldot@gcc.gnu.org>
17256
17257         * ipa-struct-reorg.c (do_reorg_1): Fix whitespace in dump output.
17258
17259 2009-06-07  Bernhard Reutner-Fischer  <aldot@gcc.gnu.org>
17260
17261         * c-decl.c (finish_decl): Use bool for variable was_incomplete.
17262         (finish_function): Remove erroneous whitespace.
17263
17264 2009-06-07  Bernhard Reutner-Fischer  <aldot@gcc.gnu.org>
17265
17266         * tree-cfg.c (gimple_merge_blocks): Commentary typo fix.
17267         (verify_stmts): Print statement who's gimple_bb is set to a wrong BB
17268
17269 2009-06-07  Bernhard Reutner-Fischer  <aldot@gcc.gnu.org>
17270
17271         * errors.c (internal_error): Commentary typo fix.
17272         * gimple-iterator.c (gsi_insert_seq_on_edge): Ditto.
17273         * tree-ssa-pre.c: Ditto.
17274
17275 2009-06-07  Bernhard Reutner-Fischer  <aldot@gcc.gnu.org>
17276
17277         * basic-block.h (ENTRY_BLOCK, EXIT_BLOCK): Document that neither of
17278         them is supposed to hold actual statements.
17279
17280 2009-06-06  Ian Lance Taylor  <iant@google.com>
17281
17282         * doc/extend.texi (Attribute Syntax): Document that C++ labels on
17283         empty statements can now have attributes.
17284
17285 2009-06-05  Shujing Zhao  <pearly.zhao@oracle.com>
17286
17287         * config/mips/mips.c: Use REG_P and CONST_INT_P where applicable.
17288         * config/mips/mips.md: Ditto.
17289
17290 2009-06-05  Nathan Froyd  <froydnj@codesourcery.com>
17291
17292         * config/rs6000/eabi.asm (__eabi_convert): Don't define if
17293         _RELOCATABLE.
17294         (__eabi_uconvert): Likewise.
17295
17296 2009-06-05  Nathan Froyd  <froydnj@codesourcery.com>
17297
17298         * config/rs6000/ppc-asm.h: Protect auto-host.h inclusion and
17299         CFI_* definitions with IN_GCC.
17300
17301 2009-06-05  David Edelsohn  <edelsohn@gnu.org>
17302
17303         * xcoffout.h (xcoffout_source_line): Update prototype.
17304
17305 2009-06-05  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
17306
17307         * builtins.c (do_mpc_ckconv, do_mpc_arg1): Use
17308         mpc_realref/mpc_imagref instead of MPC_RE/MPC_IM.
17309
17310 2009-06-05  Jakub Jelinek  <jakub@redhat.com>
17311
17312         PR middle-end/40340
17313         * tree-ssa-live.c (remove_unused_scope_block_p): Don't prune
17314         inlined_function_outer_scope_p blocks for artificial inlines
17315         even at -g0/-g1.
17316         * tree.c (tree_nonartificial_location): Rewrite using
17317         block_nonartificial_location.
17318
17319 2009-06-05  Revital Eres  <eres@il.ibm.com>
17320             Leehod Baruch  <leehod@il.ibm.com>
17321
17322         * expr.c (expand_assignment): Expand MISALIGNED_INDIRECT_REF.
17323         (expand_expr_real_1): Remove comment.
17324         * tree-vect-data-refs.c (vect_enhance_data_refs_alignment):
17325         Vectorize misaligned access when the target supports it.
17326         (vect_supportable_dr_alignment): Check for unaligned access support.
17327         * tree-vect-stmts.c (vectorizable_store): Generate misaligned store
17328         and remove asset.
17329
17330 2009-06-05  Julian Brown  <julian@codesourcery.com>
17331
17332         * config/arm/ieee754-df.S (cmpdf2): Avoid writing below SP.
17333         * config/arm/ieee754-sf.S (cmpsf2): Likewise.
17334
17335 2009-06-05  Richard Guenther  <rguenther@suse.de>
17336
17337         PR bootstrap/40350
17338         * dwarf2out.c (dwarf2out_begin_function): Mark discriminator
17339         as possibly unused.
17340
17341 2009-06-05  Jakub Jelinek  <jakub@redhat.com>
17342
17343         * config/s390/s390.c (global_not_special_regno_p): New static inline.
17344         (save_gprs): Don't tell unwinder when a global register is saved.
17345         (s390_emit_epilogue): Emit needed epilogue unwind info.
17346
17347 2009-06-05  Alexandre Oliva  <aoliva@redhat.com>
17348
17349         * dwarf2out.c (deferred_asm_name): New.
17350         (add_name_and_src_coords_attributes): Defer creation of
17351         DW_AT_MIPS_linkage_name attribute if DECL_ASSEMBLER_NAME was not
17352         computed yet.
17353         (move_linkage_attr): New.
17354         (dwarf2out_finish): Revisit deferrals and emit attributes at the
17355         right place.
17356
17357 2009-06-05  Alexandre Oliva  <aoliva@redhat.com>
17358
17359         * tree-nested.c (finalize_nesting_tree_1): Declare the
17360         frame_decl in the binding tree.
17361
17362 2009-06-04  Cary Coutant  <ccoutant@google.com>
17363
17364         * basic-block.h (struct basic_block_def): Add discriminator field.
17365         * dbxout.c (dbxout_source_line): Add new parameter.  Change all
17366         callers.
17367         * debug.c (do_nothing_debug_hooks): Add additional entry.
17368         (debug_nothing_int_charstar_int): New function.
17369         * debug.h (struct gcc_debug_hooks): Add parameter to source_line hook.
17370         (debug_nothing_int_charstar_int): New declaration.
17371         * dwarf2out.c (dwarf2out_source_line): Add new parameter.  Write
17372         discriminator value in .loc directive.
17373         * final.c (last_discriminator): New variable.
17374         (discriminator): New variable.
17375         (final_start_function): Initialize above variables, pass current
17376         discriminator to debug hook.
17377         (notice_source_line): Check for discriminator change.
17378         * gimple-pretty-print.c (dump_bb_header): Print discriminator value.
17379         * sdbout.c (sdbout_source_line): New parameter.
17380         * tree-cfg.c (struct locus_discrim_map): New structure type.
17381         (discriminator_per_locus): New hash table.
17382         (build_gimple_cfg): Allocate and free discriminator hash table.
17383         (make_edges): Call assign_discriminator.
17384         (locus_map_hash): New function.
17385         (locus_map_eq): New function.
17386         (next_discriminator_for_locus): New function.
17387         (same_line_p): New function.
17388         (assign_discriminator): New function.
17389         (make_cond_expr_edges): Call assign_discriminator.
17390         (make_gimple_switch_edges): Likewise.
17391         (first_non_label_stmt): New function.
17392         * vmsdbgout.c (vmsdbgout_source_line): Add new parameter.  Change
17393         all callers.
17394         * xcoffout.c (xcoffout_source_line): Add new parameter.
17395
17396         * configure.ac (gcc_cv_as_discriminator): New configury check for
17397         gas support for discriminator.
17398         * configure: Regenerate.
17399         * config.in: Regenerate.
17400
17401 2009-06-04  Ramana Radhakrishnan  <ramana.radhakrishnan@arm.com>
17402
17403         * config/arm/arm.c (thumb2_legitimate_index_p): Initialize
17404         val after checking for integers.
17405
17406 2009-06-04  Uros Bizjak  <ubizjak@gmail.com>
17407
17408         * config/i386/i386.h (X86_64_MS_REGPARM_MAX): Rename from
17409         X64_REGPARM_MAX.
17410         (REGPARM_MAX): Use X86_64_MS_REGPARM_MAX.
17411         (X86_64_MS_SSE_REGPARM_MAX): Rename from X64_SSE_REGPARM_MAX.
17412         (SSE_REGPARM_MAX): Use X86_64_MS_SSE_REGPARM_MAX.
17413         * config/i386/i386.c: Use X86_64_MS_REGPARM_MAX instead of
17414         X64_REGPARM_MAX.  Use X86_64_MS_SSE_REGPARM_MAX instead of
17415         X64_SSE_REGPARM_MAX.
17416         * config/i386/i386.md: Use X86_64_MS_SSE_REGPARM_MAX instead of
17417         X64_SSE_REGPARM_MAX.
17418
17419 2009-06-04  Alexandre Oliva  <aoliva@redhat.com>
17420
17421         * gcc.c (report_times_to_file): New.
17422         (execute): Implement it.
17423         (process_command): Support -time=.
17424         * doc/invoke.texi: Document it.
17425
17426 2009-06-04  Alexandre Oliva  <aoliva@redhat.com>
17427
17428         * tree-ssa-live.c (remove_unused_scope_block_p): Keep variables
17429         that have value exprs.
17430
17431 2009-06-04  Alexandre Oliva  <aoliva@redhat.com>
17432
17433         * dwarf2asm.c (dw2_force_const_mem): Defer creation of
17434         declarations for constants until...
17435         (dw2_output_indirect_constant_1): ... this point.
17436
17437 2009-06-04  Richard Earnshaw  <rearnsha@arm.com>
17438
17439         PR target/10242
17440         * arm.md (arm_addsi3): Don't try to split an add with an
17441         eliminable register until after reload has completed.
17442
17443 2009-06-03  Ian Lance Taylor  <iant@google.com>
17444
17445         * dummy-checksum.c (executable_checksum): Use EXPORTED_CONST.
17446         * genattrtab.c (write_length_unit_log): Likewise.
17447         * genchecksum.c (dosum): Likewise.
17448         * gengtype.c (write_rtx_next): Likewise.
17449         (finish_root_table, write_roots): Likewise.
17450         * gimple.c (gimple_ops_offset_): Likewise.
17451         * tree-nomudflap.c (gt_ggc_r_gt_tree_mudflap_h): Likewise.
17452         * config/arc/arc.c (arc_attribute_table): Likewise.
17453         * config/arm/arm.c (arm_attribute_table): Likewise.
17454         * config/avr/avr.c (avr_attribute_table): Likewise.
17455         * config/crx/crx.c (crx_attribute_table): Likewise.
17456         * config/m32r/m32r.c (m32r_attribute_table): Likewise.
17457         * config/m68hc11/m68hc11.c (m68hc11_attribute_table): Likewise.
17458         * config/mcore/mcore.c (mcore_attribute_table): Likewise.
17459         * config/rs6000/rs6000.c (rs6000_attribute_table): Likewise.
17460         * config/sh/sh.c (sh_attribute_table): Likewise.
17461         * config/sparc/sparc.c (sparc_attribute_table): Likewise.
17462         * config/spu/spu.c (spu_attribute_table): Likewise.
17463         * config/v850/v850.c (v850_attribute_table): Likewise.
17464
17465         * config/alpha/alpha.c (vms_attribute_table): Make static.
17466         * config/bfin/bfin.c (bfin_attribute_table): Likewise.
17467         * config/h8300/h8300.c (h8300_attribute_table): Likewise.
17468         * config/mips/mips.c (mips_attribute_table): Likewise.
17469
17470         * Makefile.in (dummy-checksum.o): Depend upon $(CONFIG_H) and
17471         $(SYSTEM_H).
17472         (cc1-checksum.o): Likewise.
17473
17474 2009-06-03  Steve Ellcey  <sje@cup.hp.com>
17475
17476         * config/ia64/vect.md (*movv2sf_internal): Handle big endian case.
17477
17478 2009-06-03  Jakub Jelinek  <jakub@redhat.com>
17479
17480         * config/rs6000/rs6000.c (rs6000_emit_stack_reset): Return generated
17481         insn if it is changing sp.  Use gen_add3_insn instead of
17482         conditionally gen_addsi3 and gen_adddi3.
17483         (offset_below_red_zone_p): New static inline function.
17484         (rs6000_emit_epilogue): Emit needed epilogue unwind info.
17485         Use gen_add3_insn instead of conditionally gen_addsi3 and gen_adddi3.
17486         * config/rs6000/ppc-asm.h: Include auto-host.h.
17487         (CFI_STARTPROC, CFI_ENDPROC, CFI_DEF_CFA_REGISTER, CFI_OFFSET,
17488         CFI_RESTORE): Define.
17489         * config/rs6000/crtresxgpr.asm: Add unwind info.
17490         * config/rs6000/crtresxfpr.asm: Likewise.
17491         * config/rs6000/crtresgpr.asm: Likewise.
17492         * config/rs6000/crtresfpr.asm: Likewise.
17493         * config/rs6000/crtsavgpr.asm: Likewise.
17494         * config/rs6000/crtsavfpr.asm: Likewise.
17495
17496         * dwarf2out.c (output_cfi_directive): Pass 1 instead of 0 to second
17497         argument of DWARF2_FRAME_REG_OUT macros.
17498
17499 2009-06-03  Julian Brown  <julian@codesourcery.com>
17500
17501         * config/arm/arm.c (arm_hard_regno_mode_ok): Permit values of four
17502         words or less (including TImode) in core registers.
17503
17504 2009-06-03  Richard Guenther  <rguenther@suse.de>
17505
17506         PR middle-end/40328
17507         * fold-const.c (fold_convert): Fold the build COMPLEX_EXPR.
17508
17509 2009-06-03  Andrey Belevantsev  <abel@ispras.ru>
17510
17511         * statistics.c (statistics_counter_event): Do not record event
17512         in pass dump if its number == -1.
17513         (curr_statistics_hash): Add assert that we never get passes
17514         with static number == -1.
17515
17516 2009-06-03  Richard Guenther  <rguenther@suse.de>
17517             Andrey Belevantsev  <abel@ispras.ru>
17518
17519         * cfgexpand.c (discover_nonconstant_array_refs_r): Make only
17520         non-BLKmode arrays addressable.
17521
17522 2009-06-03  Maxim Kuvyrkov  <maxim@codesourcery.com>
17523
17524         * config/m68k/linux.h (HAVE_GAS_BALIGN_AND_P2ALIGN): Move to ...
17525         * config/m68k/m68k.h: ... here.
17526
17527 2009-06-03  Martin Jambor  <mjambor@suse.cz>
17528
17529         PR tree-optimization/40323
17530         * ipa-prop.c (get_ssa_def_if_simple_copy): Break if not single
17531         assignment.
17532
17533 2009-06-03  Richard Guenther  <rguenther@suse.de>
17534
17535         * tree-ssa-sccvn.c (copy_reference_ops_from_ref): Use DECL_SIZE
17536         consistently.
17537
17538 2009-06-03  Shujing Zhao  <pearly.zhao@oracle.com>
17539
17540         * config/sh/predicates.md: Use REG_P, MEM_P, CONST_INT_P, LABEL_P,
17541         JUMP_P, CALL_P, NONJUMP_INSN_P, NOTE_P, BARRIER_P and
17542         JUMP_TABLE_DATA_P where applicable.
17543         * config/sh/sh.c: Ditto.
17544         * config/sh/sh.h: Ditto.
17545         * config/sh/sh.md: Ditto.
17546         * config/sh/symbian.c: Ditto.
17547
17548 2009-06-03  Uros Bizjak  <ubizjak@gmail.com>
17549
17550         * config/i386/driver-i386.c (describe_cache): Optimize
17551         concatenation of strings.  Use snprintf instead of sprintf.
17552         (host_detect_local_cpu): Ditto.  Ignore -march and -mtune for native
17553         target when not compiling with GCC.
17554
17555 2009-06-02  Kaz Kojima  <kkojima@gcc.gnu.org>
17556
17557         * config/sh/sh.c: Revert last change.
17558         (sh_expand_epilogue): Emit a blockage insn before the frame
17559         pointer adjustment unconditionally.
17560
17561 2009-06-02  Richard Sandiford  <r.sandiford@uk.ibm.com>
17562
17563         * config/pa/pa-hpux.h (LINK_SPEC): Remove "%<fwhole-program".
17564         * config/pa/pa-hpux10.h (LINK_SPEC): Likewise.
17565         * config/pa/pa-hpux11.h (LINK_SPEC): Likewise.
17566         * gcc.c (set_collect_gcc_options): Don't add -fwhole-program
17567         to COLLECT_GCC_OPTIONS.
17568
17569 2009-06-02  Richard Sandiford  <r.sandiford@uk.ibm.com>
17570
17571         * collect2.c (target_system_root): New variable.
17572         (main): Handle --sysroot=.
17573         (ignore_library): Strip the sysroot from the library path.
17574
17575 2009-06-02  Richard Sandiford  <r.sandiford@uk.ibm.com>
17576
17577         * Makefile.in (COLLECT2_OBJS): Add collect2-aix.o.
17578         (collect2.o): Depend on collect2-aix.h.
17579         (collect2-aix.o): New rule.
17580         * collect2-aix.h: New file.
17581         * collect2-aix.c: Likewise.
17582         * collect2.c: Include collect2-aix.h.  Don't undefine
17583         OBJECT_FORMAT_COFF if CROSS_AIX_SUPPORT is defined.
17584         Guard native includes with #ifndef CROSS_DIRECTORY_STRUCTURE.
17585         Use TARGET_AIX_VERSION instead of _AIX51.
17586         * config/rs6000/aix43.h (TARGET_AIX_VERSION): Define.
17587         * config/rs6000/aix51.h (TARGET_AIX_VERSION): Likewise.
17588         * config/rs6000/aix52.h (TARGET_AIX_VERSION): Likewise.
17589         * config/rs6000/aix53.h (TARGET_AIX_VERSION): Likewise.
17590         * config/rs6000/aix61.h (TARGET_AIX_VERSION): Likewise.
17591
17592 2009-06-02  Richard Sandiford  <r.sandiford@uk.ibm.com>
17593
17594         * collect2.c (ignore_library): Avoid premature post-increment
17595         and null deference.
17596
17597 2009-06-02  Richard Sandiford  <r.sandiford@uk.ibm.com>
17598
17599         * Makefile.in (libgcc.mvars): Add TARGET_SYSTEM_ROOT.
17600         * config/rs6000/aix.h (LINK_SYSCALLS_SPEC): Add %R to the
17601         !CROSS_DIRECTORY_STRUCTURE alternative and use it for
17602         CROSS_DIRECTORY_STRUCTURE too.
17603         (LINK_LIBG_SPEC): Likewise.
17604         (LIB_SPEC): Add %R to sysroot paths.
17605         * config/rs6000/aix43.h (CPP_SPEC): Add %R to sysroot paths.
17606         (CPLUSPLUS_CPP_SPEC, LIB_SPEC): Likewise.
17607         * config/rs6000/aix51.h: As for aix43.h.
17608         * config/rs6000/aix52.h: Likewise.
17609         * config/rs6000/aix53.h: Likewise.
17610         * config/rs6000/aix61.h: Likewise.
17611         * config/rs6000/t-aix52 (SHLIB_LINK): Add $(TARGET_SYSTEM_ROOT)
17612         to the beginning of sysroot paths.
17613
17614 2009-06-02  Alexandre Oliva  <aoliva@redhat.com>
17615
17616         * print_rtl (print_rtx): Don't print modes in EXPR_LISTs and
17617         INSN_LISTs that are out of the REG_NOTE range.
17618
17619 2009-06-02  Alexandre Oliva  <aoliva@redhat.com>
17620
17621         * loop-unroll.c (struct iv_to_split): Add pointer to next.
17622         (struct var_to_expand): Likewise.
17623         (struct opt_info): Add head and tail for linked lists of the above.
17624         (analyze_insn_to_expand_var): Initialize next.
17625         (analyze_iv_to_split_insn): Likewise.
17626         (analyze_insns_in_loop): Create linked lists.
17627         (allocate_basic_variable): Simplify for use without hash table.
17628         (insert_var_expansion_initialization): Likewise, make it type-safer.
17629         (combine_var_copies_in_loop_exit): Likewise.
17630         (apply_opt_in_copies): Walk lists rather than hash tables.
17631         (release_var_copies): Simplified and inlined by hand into...
17632         (free_opt_info): ... this function.
17633
17634 2009-06-02  Richard Guenther  <rguenther@suse.de>
17635
17636         * tree-ssa-sccvn.c (copy_reference_ops_from_ref): Use DECL_SIZE
17637         for field decls.
17638
17639 2009-06-02  Alexandre Oliva  <aoliva@redhat.com>
17640
17641         * cfgexpand.c (gimple_expand_cfg): Discard the source location
17642         only for builtins that are not overridden.
17643
17644 2009-06-02  Alexandre Oliva  <aoliva@redhat.com>
17645
17646         * gengtype.c (adjust_field_rtx_def): Add NOTE_INSN_DELETED_LABEL's
17647         label string.
17648
17649 2009-06-02  Alexandre Oliva  <aoliva@redhat.com>
17650
17651         * df-core.c (df_ref_debug): Honor -fdump-noaddr.
17652
17653 2009-06-02  Alexandre Oliva  <aoliva@redhat.com>
17654
17655         * combine.c (move_deaths): Compare LUIDs within the same BB only.
17656
17657 2009-06-02  Alexandre Oliva  <aoliva@redhat.com>
17658
17659         * common.opt (fdump-unnumbered-links): New.
17660         * doc/invoke.texi (-fdump-unnumbered-links): Document it.
17661         * print-rtl.c (flag_dump_unnumbered_links): New.
17662         (print_rtx): Test it.
17663
17664 2009-06-02  Richard Earnshaw  <rearnsha@arm.com>
17665
17666         * arm.c (arm_get_frame_offsets): Prefer using r3 for padding a
17667         push/pop multiple to 8-byte alignment.
17668
17669 2009-06-01  Jakub Jelinek  <jakub@redhat.com>
17670
17671         * config/i386/i386.c (queued_cfa_restores): New static variable.
17672         (ix86_add_cfa_restore_note, ix86_add_queued_cfa_restore_notes): New
17673         functions.
17674         (pro_epilogue_adjust_stack): Call ix86_add_queued_cfa_restore_notes.
17675         (ix86_emit_restore_reg_using_pop): Add RED_OFFSET argument.
17676         Set RTX_FRAME_RELATED_P immediately after adding a REG_CFA_* note.
17677         Call ix86_add_cfa_restore_note instead of adding REG_CFA_OFFSET
17678         note unconditionally.
17679         (ix86_emit_restore_regs_using_mov): Likewise.
17680         (ix86_emit_restore_sse_regs_using_mov): Likewise.
17681         (ix86_emit_restore_regs_using_pop): Add RED_OFFSET argument, pass
17682         it through to ix86_emit_restore_reg_using_pop.
17683         (ix86_emit_leave): Add RED_OFFSET argument.  Call
17684         ix86_add_queued_cfa_restore_notes.  Call ix86_add_cfa_restore_note
17685         instead of adding REG_CFA_OFFSET note unconditionally.
17686         (ix86_expand_epilogue): Compute RED_OFFSET, pass it down to
17687         the above functions.  Call ix86_add_queued_cfa_restore_notes when
17688         needed.
17689
17690         * dwarf2out.c (dwarf2out_cfi_label): Add FORCE argument, if true,
17691         force output of the label even for dwarf2out_do_cfi_asm.
17692         (add_fde_cfi): If -g2 and above and cfi might change CFA,
17693         force creation of CFI label and chain DW_CFA_set_loc jumping to it
17694         for convert_cfa_to_fb_loc_list.  Adjust other dwarf2out_cfi_label
17695         caller.
17696         (dwarf2out_stack_adjust, dwarf2out_frame_debug,
17697         dwarf2out_begin_epilogue, dwarf2out_frame_debug_restore_state): Adjust
17698         dwarf2out_cfi_label callers.
17699         * tree.h (dwarf2out_cfi_label): Adjust prototype.
17700         * config/arm/arm.c (thumb_pushpop, thumb1_output_function_prologue):
17701         Adjust dwarf2out_cfi_label callers.
17702         * config/vax/vax.c (vax_output_function_prologue): Likewise.
17703
17704         * config/i386/i386.h (struct machine_cfa_state,
17705         struct machine_function): Guard with ifndef USED_FOR_TARGET
17706         instead of not IN_LIBGCC2 and not in IN_TARGET_LIBS.
17707
17708         PR other/40024
17709         * emutls.c (__emutls_get_address): Change arr->size to mean number
17710         of allocated arr->data entries instead of # of slots + 1.
17711
17712         PR middle-end/40316
17713         * recog.c (peep2_reinit_state): New function.
17714         (peephole2_init_state): Use it at the end of a basic block and also
17715         when seeing a RTX_FRAME_RELATED_P insn.
17716
17717 2009-06-01  Steve Ellcey  <sje@cup.hp.com>
17718
17719         * ia64.md (floatdirf2, fix_truncrfdi, floatunsdirf,
17720         fixuns_truncrfdi2): New.
17721         (fix_truncxfdi2_alts, fixuns_truncxfdi2_alts,
17722         *nmaddsf4_alts, *nmadddf4_alts, *nmadddf4_truncsf_alts,
17723         *mulxf3_alts, *mulxf3_truncsf_alts, *mulxf3_truncdf_alts,
17724         *maddxf4_alts, *maddxf4_alts_truncsf, *maddxf4_alts_truncdf,
17725         *nmaddxf4_alts, *nmaddxf4_truncsf_alts, *nmaddxf4_truncdf_alts,
17726         *recip_approx): Remove.
17727         (divsi3 modsi3, udivsi3, umodsi3, divsi3_internal, divdi3,
17728         moddi3, udivdi3, umoddi3, divdi3_internal_lat, divdi3_internal_thr,
17729         divsf3, sqrtsf2, divdf3, sqrtdf2, divxf3, sqrtxf2): Modify and
17730         move to div.md.
17731         * div.md (fix_truncrfdi2_alts, fixuns_truncrfdi2_alt,
17732         setf_exp_rf): New.
17733
17734 2009-06-01  Ian Lance Taylor  <iant@google.com>
17735
17736         * attribs.c (register_attribute): Use CONST_CAST.
17737         * collect2.c (main): Use CONST_CAST2.
17738         (scan_prog_file): Likewise.
17739         * gcc.c (process_command, main): Likewise.
17740         * toplev.c (toplev_main): Likewise.
17741
17742         * c-typeck.c (handle_warn_cast_qual): New static function,
17743         partially broken out of build_c_cast.
17744         (build_c_cast): Call handle_warn_cast_qual.
17745         * doc/invoke.texi (Warning Options): Document new effect of
17746         -Wcast-qual.
17747
17748 2009-06-01  Aldy Hernandez  <aldyh@redhat.com>
17749
17750         * diagnostic.c (diagnostic_build_prefix): Always print columns.
17751         (diagnostic_report_current_module): Print columns.
17752         * common.opt (flag_show_column): Enable by default.
17753
17754 2009-06-01  Luis Machado  <luisgpm@br.ibm.com>
17755
17756         * alias.c (find_base_term): Check for NULL term before returning.
17757
17758 2009-06-01  Maxim Kuvyrkov  <maxim@codesourcery.com>
17759
17760         Revert due to PR40320:
17761         2009-06-01  Maxim Kuvyrkov  <maxim@codesourcery.com>
17762         * calls.c (emit_library_call_value_1): Don't force_operand for move
17763         and push insns.
17764
17765 2009-06-01  Olivier Hainque  <hainque@adacore.com>
17766             Eric Botcazou  <ebotcazou@adacore.com>
17767
17768         * tree.h (CONSTRUCTOR_BITFIELD_P): True if NODE, a FIELD_DECL, is
17769         to be processed as a bitfield for constructor output purposes.
17770         * output.h (initializer_constant_valid_for_bitfield_p): Declare
17771         new function.
17772         * varasm.c (oc_local_state): New type, output_constructor
17773         local state to support communication with helpers.
17774         (oc_outer_state): New type, output_constructor outer state of
17775         relevance in recursive calls.
17776         (output_constructor_array_range): New output_constructor helper,
17777         extracted code for an array range element.
17778         (output_constructor_regular_field): New output_constructor helper,
17779         extracted code for an element that is not a bitfield.
17780         (output_constructor_bitfield): New output_constructor helper,
17781         extracted code for a bitfield element.  Accept an OUTER state
17782         argument for recursive processing.  Recurse on record or array
17783         CONSTRUCTOR values, possibly past noop conversions.
17784         (initializer_constant_valid_for_bitfield_p): New predicate.  Whether
17785         VALUE is a valid constant-valued expression for use in a static
17786         bit-field initializer.
17787         (output_constructor): Rework to use helpers.  Accept and honor an
17788         OUTER state argument for recursive calls.  Return total size.  Be
17789         prepared for nested constructors initializing bitfields.
17790         (output_constant): Feed OUTER in calls to output_constructor.
17791
17792 2009-06-01  Maxim Kuvyrkov  <maxim@codesourcery.com>
17793
17794         * calls.c (emit_library_call_value_1): Don't force_operand for move
17795         and push insns.
17796
17797 2009-06-01  Nick Clifton  <nickc@redhat.com>
17798
17799         * doc/invoke.texi (IA-64 Options): Fix typo.
17800
17801 2009-06-01  Ira Rosen  <irar@il.ibm.com>
17802
17803         PR tree-optimization/39129
17804         * tree-vect-loop-manip.c (conservative_cost_threshold): Change the
17805         printed message.
17806         (vect_do_peeling_for_loop_bound): Use
17807         LOOP_REQUIRES_VERSIONING_FOR_ALIGNMENT and
17808         LOOP_REQUIRES_VERSIONING_FOR_ALIAS macros.
17809         (vect_loop_versioning): Likewise.
17810         (vect_create_cond_for_alias_checks): Fix indentation.
17811         * tree-vectorizer.h (struct _loop_vec_info): Fix indentation of the
17812         macros.
17813         (LOOP_REQUIRES_VERSIONING_FOR_ALIGNMENT): Define.
17814         (LOOP_REQUIRES_VERSIONING_FOR_ALIAS): Likewise.
17815         * tree-vect-loop.c (vect_analyze_loop_form): Change "too many BBs" to
17816         "control flow in loop".
17817         (vect_estimate_min_profitable_iters): Use
17818         LOOP_REQUIRES_VERSIONING_FOR_ALIGNMENT and
17819         LOOP_REQUIRES_VERSIONING_FOR_ALIAS macros.
17820         * tree-vect-data-refs.c (vect_enhance_data_refs_alignment): Likewise.
17821         (vect_create_data_ref_ptr): Don't mention array dimension in printing.
17822         * tree-vect-stmts.c (vectorizable_store): Replace the check that the
17823         statement belongs to a group of strided accesses with the exact code
17824         check.
17825         (vectorizable_load): Likewise.
17826         * tree-vect-slp.c (vect_analyze_slp_instance): Spell out "basic block".
17827         (vect_slp_analyze_bb, vect_slp_transform_bb): Likewise.
17828
17829 2009-06-01  Gerald Pfeifer  <gerald@pfeifer.com>
17830
17831         * config/freebsd-stdint.h: New file.
17832         * config.gcc (*-*-freebsd): Set use_gcc_stdint=wrap.
17833         Add freebsd-stdint.h to tm_file.
17834
17835 2009-06-01  Richard Earnshaw  <rearnsha@arm.com>
17836
17837         * arm/thumb2.md (thumb2_zero_extendhidi2): New insn and split.
17838         (thumb2_extendhidi2): Likewise.
17839
17840 2009-05-31  Ian Lance Taylor  <iant@google.com>
17841
17842         * regstat.c (regstat_n_sets_and_refs): Remove duplicate definition.
17843
17844 2009-05-31  Ian Lance Taylor  <iant@google.com>
17845
17846         * Makefile.in (except.o): Depend upon gt-except.h, not gt-$(EXCEPT_H).
17847         (ipa-cp.o): Depend upon $(FIBHEAP_H) and $(PARAMS_H).
17848         (ipa-reference.o): Depend upon gt-ipa-reference.h.
17849
17850 2009-05-31  Jason Merrill  <jason@redhat.com>
17851
17852         * tree-pretty-print.c (print_call_name): Take the callee, not the
17853         call itself.  Make non-static.  Use dump_function_name for functions.
17854         (dump_generic_node): Adjust.
17855         * diagnostic.h: Declare print_call_name.
17856         * gimple-pretty-print.c (dump_gimple_call): Use it.
17857
17858 2009-05-31  Kaz Kojima  <kkojima@gcc.gnu.org>
17859
17860         * config/sh/sh.md (ashldi3_std): New define_expand.
17861         (ashldi3): Use it.
17862
17863 2009-05-31  Kaz Kojima  <kkojima@gcc.gnu.org>
17864
17865         PR target/40313
17866         * config/sh/sh.c: Include debug.h.
17867         (sh_expand_epilogue): Emit a blockage insn before the frame
17868         pointer adjustment also when dwarf2out_do_frame returns true.
17869
17870 2009-05-31  Richard Earnshaw  <rearnsha@arm.com>
17871
17872         * arm/thumb2.md (thumb2_extendsidi2): Add a split sub-pattern.
17873         (thumb2_extendqidi2): New pattern.
17874
17875 2009-05-31  Ira Rosen  <irar@il.ibm.com>
17876
17877         * tree-vect-loop-manip.c (slpeel_update_phi_nodes_for_guard1): Don't
17878         mark phis for renaming.
17879         * tree-vectorizer.c (vect_memsyms_to_rename): Remove.
17880         (vectorize_loops): Don't allocate and free vect_memsyms_to_rename.
17881         Call mark_sym_for_renaming.
17882         * tree-vectorizer.h (vect_memsyms_to_rename): Remove.
17883         * tree-vect-loop.c (vect_transform_loop): Remove
17884         vect_memsyms_to_rename initialization and a call to
17885         mark_set_for_renaming.
17886
17887 2009-05-31  Jakub Jelinek  <jakub@redhat.com>
17888
17889         PR middle-end/40304
17890         * config/i386/i386.c (pro_epilogue_adjust_stack): Mark insns
17891         frame related even if !set_cfa && style < 0.
17892
17893 2009-05-30  Kai Tietz  <kai.tietz@onevision.com>
17894
17895         * config/i386/mingw-tls.c: New file.
17896         * config/i386/t-gthr-win32 (LIB2FUNCS_EXTRA): Add mingw-tls.c file.
17897         * gthr-win32.h (MINGW32_SUPPORTS_MT_EH): Define it for targets
17898         defining _WIN32 but not __CYGWIN__.
17899
17900 2009-05-29  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
17901
17902         * configure.ac: Add MPC support.
17903
17904         * config.in, configure: Regenerate.
17905
17906 2009-05-29  Richard Henderson  <rth@redhat.com>
17907
17908         * cfgcleanup.c (try_crossjump_to_edge): Only skip past
17909         NOTE_INSN_BASIC_BLOCK.
17910         * cfglayout.c (duplicate_insn_chain): Copy epilogue insn marks.
17911         Duplicate NOTE_INSN_EPILOGUE_BEG notes.
17912         * cfgrtl.c (can_delete_note_p): Allow NOTE_INSN_EPILOGUE_BEG
17913         to be deleted.
17914         * dwarf2out.c (struct cfa_loc): Change indirect field to bitfield,
17915         add in_use field.
17916         (add_cfi): Disable check redefining cfa away from drap.
17917         (lookup_cfa_1): Add remember argument; handle remember/restore.
17918         (lookup_cfa): Pass remember argument.
17919         (cfa_remember): New.
17920         (compute_barrier_args_size_1): Remove sibcall check.
17921         (dwarf2out_frame_debug_def_cfa): New.
17922         (dwarf2out_frame_debug_adjust_cfa): New.
17923         (dwarf2out_frame_debug_cfa_offset): New.
17924         (dwarf2out_frame_debug_cfa_register): New.
17925         (dwarf2out_frame_debug_cfa_restore): New.
17926         (dwarf2out_frame_debug): Handle REG_CFA_* notes.
17927         (dwarf2out_begin_epilogue): New.
17928         (dwarf2out_frame_debug_restore_state): New.
17929         (dw_cfi_oprnd1_desc): Handle DW_CFA_remember_state,
17930         DW_CFA_restore_state.
17931         (output_cfi_directive): Likewise.
17932         (convert_cfa_to_fb_loc_list): Likewise.
17933         (dw_cfi_oprnd1_desc): Handle DW_CFA_restore.
17934         * dwarf2out.h: Update.
17935         * emit-rtl.c (try_split): Don't split RTX_FRAME_RELATED_P.
17936         (copy_insn_1): Early out for null.
17937         * final.c (final_scan_insn): Call dwarf2out_begin_epilogue
17938         and dwarf2out_frame_debug_restore_state.
17939         * function.c (prologue, epilogue, sibcall_epilogue): Remove.
17940         (prologue_insn_hash, epilogue_insn_hash): New.
17941         (free_after_compilation): Adjust freeing accordingly.
17942         (record_insns): Create hash table if needed; push insns into
17943         hash instead of array.
17944         (maybe_copy_epilogue_insn): New.
17945         (contains): Search hash table instead of array.
17946         (sibcall_epilogue_contains): Remove.
17947         (thread_prologue_and_epilogue_insns): Split eh_return insns
17948         and mark them as epilogues.
17949         (reposition_prologue_and_epilogue_notes): Rewrite epilogue
17950         scanning in terms of basic blocks.
17951         * insn-notes.def (CFA_RESTORE_STATE): New.
17952         * jump.c (returnjump_p_1): Accept EH_RETURN.
17953         (eh_returnjump_p_1, eh_returnjump_p): New.
17954         * reg-notes.def (CFA_DEF_CFA, CFA_ADJUST_CFA, CFA_OFFSET,
17955         CFA_REGISTER, CFA_RESTORE): New.
17956         * rtl.def (EH_RETURN): New.
17957         * rtl.h (eh_returnjump_p, maybe_copy_epilogue_insn): Declare.
17958
17959         * config/bfin/bfin.md (UNSPEC_VOLATILE_EH_RETURN): Remove.
17960         (eh_return_internal): Use eh_return rtx; split w/ epilogue.
17961
17962         * config/i386/i386.c (gen_push): Update cfa state.
17963         (pro_epilogue_adjust_stack): Add set_cfa argument.  When true,
17964         add a CFA_ADJUST_CFA note.
17965         (ix86_dwarf_handle_frame_unspec): Remove.
17966         (ix86_expand_prologue): Update cfa state.
17967         (ix86_emit_restore_reg_using_pop): New.
17968         (ix86_emit_restore_regs_using_pop): New.
17969         (ix86_emit_leave): New.
17970         (ix86_emit_restore_regs_using_mov): Add CFA_RESTORE notes.
17971         (ix86_expand_epilogue): Add notes for unwinding the epilogue.
17972         * config/i386/i386.h (struct machine_cfa_state): New.
17973         (ix86_cfa_state): New.
17974         * config/i386/i386.md (UNSPEC_EH_RETURN): Remove.
17975         (eh_return_internal): Merge from eh_return_<mode>,
17976         use eh_return rtx, split w/ epilogue.
17977
17978 2009-05-29  Ian Lance Taylor  <iant@google.com>
17979
17980         * builtins.c (validate_gimple_arglist): Don't use va_arg with
17981         enum type.
17982         * calls.c (emit_library_call_value_1): Likewise.
17983
17984         * c-typeck.c (c_build_va_arg): New function.
17985         * c-tree.h (c_build_va_arg): Declare.
17986         * c-parser.c (c_parser_postfix_expression): Call c_build_va_arg
17987         instead of build_va_arg.
17988
17989 2009-05-29  Eric Botcazou  <ebotcazou@adacore.com>
17990
17991         * tree-ssa-loop-ivopts.c (strip_offset_1) <MULT_EXPR>: New case.
17992         (force_expr_to_var_cost) <NEGATE_EXPR>: Likewise.
17993         (ptr_difference_cost): Use affine combinations to compute it.
17994         (difference_cost): Likewise.
17995         (get_computation_cost_at): Compute more accurate cost for addresses
17996         if the ratio is a multiplier allowed in addresses.
17997         For non-addresses, consider that an additional offset or symbol is
17998         added only once.
17999
18000 2009-05-29  Jakub Jelinek  <jakub@redhat.com>
18001
18002         * config/i386/i386.c (ix86_decompose_address): Avoid useless
18003         0 displacement.  Add 0 displacement if base is %[er]bp or %r13.
18004
18005         * config/i386/i386.md (prefix_data16, prefix_rep): Set to 0 for
18006         TYPE_SSE{MULADD,4ARG,IADD1,CVT1} by default.
18007         (prefix_rex): For UNIT_MMX don't imply the prefix by default
18008         if MODE_DI.
18009         (prefix_extra): Default to 2 for TYPE_SSE{MULADD,4ARG} and
18010         to 1 for TYPE_SSE{IADD1,CVT1}.
18011         (prefix_vex_imm8): Removed.
18012         (length_vex): Only pass 1 as second argument to
18013         ix86_attr_length_vex_default if prefix_extra is 0.
18014         (modrm): For TYPE_INCDEC only set to 0 if not TARGET_64BIT.
18015         (length): For prefix vex computation use length_immediate
18016         attribute instead of prefix_vex_imm8.
18017         (cmpqi_ext_3_insn, cmpqi_ext_3_insn_rex64,
18018         addqi_ext_1, addqi_ext_1_rex64, *testqi_ext_0, andqi_ext_0,
18019         *andqi_ext_0_cc, *iorqi_ext_0, *xorqi_ext_0, *xorqi_cc_ext_1,
18020         *xorqi_cc_ext_1_rex64): Override modrm attribute to 1.
18021         (extendsidi2_rex64, extendhidi2, extendqidi2, extendhisi2,
18022         *extendhisi2_zext, extendqihi2, extendqisi2, *extendqisi2_zext): Emit
18023         a space in between the operands.
18024         (*anddi_1_rex64, *andsi_1): Likewise.  Override prefix_rex to 1
18025         if one operand is 0xff and the other one si, di, bp or sp.
18026         (*andhi_1): Override prefix_rex to 1 if one operand is 0xff and the
18027         other one si, di, bp or sp.
18028         (*btsq, *btrq, *btcq, *btdi_rex64, *btsi): Add mode attribute.
18029         (*ffssi_1, *ffsdi_1, ctzsi2, ctzdi2): Add
18030         type and mode attributes.
18031         (*bsr, *bsr_rex64, *bsrhi): Add type attribute.
18032         (*cmpfp_i_mixed, *cmpfp_iu_mixed): For TYPE_SSECOMI, clear
18033         prefix_rep attribute and set prefix_data16 attribute iff MODE_DF.
18034         (*cmpfp_i_sse, *cmpfp_iu_sse): Clear prefix_rep attribute and set
18035         prefix_data16 attribute iff MODE_DF.
18036         (*movsi_1): For TYPE_SSEMOV MODE_SI set prefix_data16 attribute.
18037         (fix_trunc<mode>di_sse): Set prefix_rex attribute.
18038         (*adddi_4_rex64, *addsi_4): Use const128_operand instead of
18039         constm128_operand in length_immediate computation.
18040         (*addhi_4): Likewise.  Fix mode attribute to MODE_HI.
18041         (anddi_1_rex64): Use movzbl/movzwl instead of movzbq/movzwq.
18042         (*avx_ashlti3, sse2_ashlti3, *avx_lshrti3, sse2_lshrti3): Set
18043         length_immediate attribute to 1.
18044         (x86_fnstsw_1, x86_fnstcw_1, x86_fldcw_1): Fix length attribute.
18045         (*movdi_1_rex64): Override prefix_rex or prefix_data16 attributes
18046         for certain alternatives.
18047         (*movdf_nointeger, *movdf_integer_rex64, *movdf_integer): Override
18048         prefix_data16 attribute if MODE_V1DF.
18049         (*avx_setcc<mode>, *sse_setcc<mode>, *sse5_setcc<mode>): Set
18050         length_immediate to 1.
18051         (set_got_rex64, set_rip_rex64): Remove length attribute, set
18052         length_address to 4, set mode attribute to MODE_DI.
18053         (set_got_offset_rex64): Likewise.  Set length_immediate to 0.
18054         (fxam<mode>2_i387): Set length attribute to 4.
18055         (*prefetch_sse, *prefetch_sse_rex, *prefetch_3dnow,
18056         *prefetch_3dnow_rex): Override length_address attribute.
18057         (sse4_2_crc32<mode>): Override prefix_data16 and prefix_rex
18058         attributes.
18059         * config/i386/predicates.md (ext_QIreg_nomode_operand): New predicate.
18060         (constm128_operand): Removed.
18061         * config/i386/i386.c (memory_address_length): For
18062         disp && !index && !base in 64-bit mode account for SIB byte if
18063         print_operand_address can't optimize disp32 into disp32(%rip)
18064         and UNSPEC doesn't imply (%rip) addressing.  Add 1 to length
18065         for fs: or gs: segment.
18066         (ix86_attr_length_immediate_default): When checking if shortform
18067         is possible, truncate immediate to the length of the non-shortened
18068         immediate.
18069         (ix86_attr_length_address_default): Ignore MEM_P operands
18070         with X constraint.
18071         (ix86_attr_length_vex_default): Only check for DImode on
18072         GENERAL_REG_P operands.
18073         * config/i386/sse.md (<sse>_comi, <sse>_ucomi): Clear
18074         prefix_rep attribute, set prefix_data16 attribute iff MODE_DF.
18075         (sse_cvttps2pi): Clear prefix_rep attribute.
18076         (sse2_cvttps2dq, *sse2_cvtpd2dq, sse2_cvtps2pd): Clear prefix_data16
18077         attribute.
18078         (*sse2_cvttpd2dq): Don't clear prefix_rep attribute.
18079         (*avx_ashr<mode>3, ashr<mode>3, *avx_lshr<mode>3, lshr<mode>3,
18080         *avx_ashl<mode>3, ashl<mode>3): Set length_immediate attribute to 1
18081         iff operand 2 is const_int_operand.
18082         (*vec_dupv4si, avx_shufpd256_1, *avx_shufpd_<mode>,
18083         sse2_shufpd_<mode>): Set length_immediate attribute to 1.
18084         (sse2_pshufd_1): Likewise.  Set prefix attribute to maybe_vex
18085         instead of vex.
18086         (sse2_pshuflw_1, sse2_pshufhw_1): Set length_immediate to 1 and clear
18087         prefix_data16.
18088         (sse2_unpckhpd, sse2_unpcklpd, sse2_storehpd, *vec_concatv2df): Set
18089         prefix_data16 attribute for movlpd and movhpd instructions.
18090         (sse2_loadhpd, sse2_loadlpd, sse2_movsd): Likewise.  Override
18091         length_immediate for shufpd instruction.
18092         (sse2_movntsi, sse3_lddqu): Clear prefix_data16 attribute.
18093         (avx_cmpp<avxmodesuffixf2c><mode>3,
18094         avx_cmps<ssemodesuffixf2c><mode>3, *avx_maskcmp<mode>3,
18095         <sse>_maskcmp<mode>3, <sse>_vmmaskcmp<mode>3,
18096         avx_shufps256_1, *avx_shufps_<mode>, sse_shufps_<mode>,
18097         *vec_dupv4sf_avx, *vec_dupv4sf): Set length_immediate attribute to 1.
18098         (*avx_cvtsi2ssq, *avx_cvtsi2sdq): Set length_vex attribute to 4.
18099         (sse_cvtsi2ssq, sse2_cvtsi2sdq): Set prefix_rex attribute to 1.
18100         (sse2_cvtpi2pd, sse_loadlps, sse2_storelpd): Override
18101         prefix_data16 attribute for the first alternative to 1.
18102         (*avx_loadlps): Override length_immediate for the first alternative.
18103         (*vec_concatv2sf_avx): Override length_immediate and prefix_extra
18104         attributes for second alternative.
18105         (*vec_concatv2sf_sse4_1): Override length_immediate and
18106         prefix_data16 attributes for second alternative.
18107         (*vec_setv4sf_avx, *avx_insertps, vec_extract_lo_<mode>,
18108         vec_extract_hi_<mode>, vec_extract_lo_v16hi,
18109         vec_extract_hi_v16hi, vec_extract_lo_v32qi,
18110         vec_extract_hi_v32qi): Set prefix_extra and length_immediate to 1.
18111         (*vec_setv4sf_sse4_1, sse4_1_insertps, *sse4_1_extractps): Set
18112         prefix_data16 and length_immediate to 1.
18113         (*avx_mulv2siv2di3, *avx_mulv4si3, sse4_2_gtv2di3): Set prefix_extra
18114         to 1.
18115         (*avx_<code><mode>3, *avx_eq<mode>3, *avx_gt<mode>3): Set
18116         prefix_extra attribute for variants that don't have 0f prefix alone.
18117         (*avx_pinsr<ssevecsize>): Likewise.  Set length_immediate to 1.
18118         (*sse4_1_pinsrb, *sse2_pinsrw, *sse4_1_pinsrd, *sse4_1_pextrb,
18119         *sse4_1_pextrb_memory, *sse2_pextrw, *sse4_1_pextrw_memory,
18120         *sse4_1_pextrd): Set length_immediate to 1.
18121         (*sse4_1_pinsrd): Likewise.  Set prefix_extra to 1.
18122         (*sse4_1_pinsrq, *sse4_1_pextrq): Set prefix_rex and length_immediate
18123         to 1.
18124         (*vec_extractv2di_1_rex64_avx, *vec_extractv2di_1_rex64,
18125         *vec_extractv2di_1_avx, *vec_extractv2di_1_sse2): Override
18126         length_immediate to 1 for second alternative.
18127         (*vec_concatv2si_avx, *vec_concatv2di_rex64_avx): Override
18128         prefix_extra and length_immediate attributes for the first
18129         alternative.
18130         (vec_concatv2si_sse4_1): Override length_immediate to 1 for the
18131         first alternative.
18132         (*vec_concatv2di_rex64_sse4_1): Likewise.  Override prefix_rex
18133         to 1 for the first and third alternative.
18134         (*vec_concatv2di_rex64_sse): Override prefix_rex to 1 for the second
18135         alternative.
18136         (*sse2_maskmovdqu, *sse2_maskmovdqu_rex64): Override length_vex
18137         attribute.
18138         (*sse_sfence, sse2_mfence, sse2_lfence): Override length_address
18139         attribute to 0.
18140         (*avx_phaddwv8hi3, *avx_phadddv4si3, *avx_phaddswv8hi3,
18141         *avx_phsubwv8hi3, *avx_phsubdv4si3, *avx_phsubswv8hi,
18142         *avx_pmaddubsw128, *avx_pmulhrswv8hi3, *avx_pshufbv16qi3,
18143         *avx_psign<mode>3): Set prefix_extra attribute to 1.
18144         (ssse3_phaddwv4hi3, ssse3_phadddv2si3, ssse3_phaddswv4hi3,
18145         ssse3_phsubwv4hi3, ssse3_phsubdv2si3, ssse3_phsubswv4hi3,
18146         ssse3_pmaddubsw, *ssse3_pmulhrswv4hi, ssse3_pshufbv8qi3,
18147         ssse3_psign<mode>3): Override prefix_rex attribute.
18148         (*avx_palignrti): Override prefix_extra and length_immediate to 1.
18149         (ssse3_palignrti): Override length_immediate to 1.
18150         (ssse3_palignrdi): Override length_immediate to 1, override
18151         prefix_rex attribute.
18152         (abs<mode>2): Override prefix_rep to 0, override prefix_rex attribute.
18153         (sse4a_extrqi): Override length_immediate to 2.
18154         (sse4a_insertqi): Likewise.  Override prefix_data16 to 0.
18155         (sse4a_insertq): Override prefix_data16 to 0.
18156         (avx_blendp<avxmodesuffixf2c><avxmodesuffix>,
18157         avx_blendvp<avxmodesuffixf2c><avxmodesuffix>,
18158         avx_dpp<avxmodesuffixf2c><avxmodesuffix>, *avx_mpsadbw,
18159         *avx_pblendvb, *avx_pblendw, avx_roundp<avxmodesuffixf2c>256,
18160         avx_rounds<avxmodesuffixf2c>256): Override prefix_extra
18161         and length_immediate to 1.
18162         (sse4_1_blendp<ssemodesuffixf2c>, sse4_1_dpp<ssemodesuffixf2c>,
18163         sse4_2_pcmpestr, sse4_2_pcmpestri, sse4_2_pcmpestrm,
18164         sse4_2_pcmpestr_cconly, sse4_2_pcmpistr, sse4_2_pcmpistri,
18165         sse4_2_pcmpistrm, sse4_2_pcmpistr_cconly): Override prefix_data16
18166         and length_immediate to 1.
18167         (sse4_1_blendvp<ssemodesuffixf2c>): Override prefix_data16 to 1.
18168         (sse4_1_mpsadbw, sse4_1_pblendw): Override length_immediate to 1.
18169         (*avx_packusdw, avx_vtestp<avxmodesuffixf2c><avxmodesuffix>,
18170         avx_ptest256): Override prefix_extra to 1.
18171         (sse4_1_roundp<ssemodesuffixf2c>, sse4_1_rounds<ssemodesuffixf2c>):
18172         Override prefix_data16 and length_immediate to 1.
18173         (sse5_pperm_zero_v16qi_v8hi, sse5_pperm_sign_v16qi_v8hi,
18174         sse5_pperm_zero_v8hi_v4si, sse5_pperm_sign_v8hi_v4si,
18175         sse5_pperm_zero_v4si_v2di, sse5_pperm_sign_v4si_v2di,
18176         sse5_vrotl<mode>3, sse5_ashl<mode>3, sse5_lshl<mode>3): Override
18177         prefix_data16 to 0 and prefix_extra to 2.
18178         (sse5_rotl<mode>3, sse5_rotr<mode>3): Override length_immediate to 1.
18179         (sse5_frcz<mode>2, sse5_vmfrcz<mode>2): Don't override prefix_extra
18180         attribute.
18181         (*sse5_vmmaskcmp<mode>3, sse5_com_tf<mode>3,
18182         sse5_maskcmp<mode>3, sse5_maskcmp<mode>3, sse5_maskcmp_uns<mode>3):
18183         Override prefix_data16 and prefix_rep to 0, length_immediate to 1
18184         and prefix_extra to 2.
18185         (sse5_maskcmp_uns2<mode>3, sse5_pcom_tf<mode>3): Override
18186         prefix_data16 to 0, length_immediate to 1 and prefix_extra to 2.
18187         (*avx_aesenc, *avx_aesenclast, *avx_aesdec, *avx_aesdeclast,
18188         avx_vpermilvar<mode>3,
18189         avx_vbroadcasts<avxmodesuffixf2c><avxmodesuffix>,
18190         avx_vbroadcastss256, avx_vbroadcastf128_p<avxmodesuffixf2c>256,
18191         avx_maskloadp<avxmodesuffixf2c><avxmodesuffix>,
18192         avx_maskstorep<avxmodesuffixf2c><avxmodesuffix>):
18193         Override prefix_extra to 1.
18194         (aeskeygenassist, pclmulqdq): Override length_immediate to 1.
18195         (*vpclmulqdq, avx_vpermil<mode>, avx_vperm2f128<mode>3,
18196         vec_set_lo_<mode>, vec_set_hi_<mode>, vec_set_lo_v16hi,
18197         vec_set_hi_v16hi, vec_set_lo_v32qi, vec_set_hi_v32qi): Override
18198         prefix_extra and length_immediate to 1.
18199         (*avx_vzeroall, avx_vzeroupper, avx_vzeroupper_rex64): Override
18200         modrm to 0.
18201         (*vec_concat<mode>_avx): Override prefix_extra and length_immediate
18202         to 1 for the first alternative.
18203         * config/i386/mmx.md (*mov<mode>_internal_rex64): Override
18204         prefix_rep, prefix_data16 and/or prefix_rex attributes in certain
18205         cases.
18206         (*mov<mode>_internal_avx, *movv2sf_internal_rex64,
18207         *movv2sf_internal_avx, *movv2sf_internal): Override
18208         prefix_rep attribute for certain alternatives.
18209         (*mov<mode>_internal): Override prefix_rep or prefix_data16
18210         attributes for certain alternatives.
18211         (*movv2sf_internal_rex64_avx): Override prefix_rep and length_vex
18212         attributes for certain alternatives.
18213         (*mmx_addv2sf3, *mmx_subv2sf3, *mmx_mulv2sf3,
18214         *mmx_<code>v2sf3_finite, *mmx_<code>v2sf3, mmx_rcpv2sf2,
18215         mmx_rcpit1v2sf3, mmx_rcpit2v2sf3, mmx_rsqrtv2sf2, mmx_rsqit1v2sf3,
18216         mmx_haddv2sf3, mmx_hsubv2sf3, mmx_addsubv2sf3,
18217         *mmx_eqv2sf3, mmx_gtv2sf3, mmx_gev2sf3, mmx_pf2id, mmx_pf2iw,
18218         mmx_pi2fw, mmx_floatv2si2, mmx_pswapdv2sf2, *mmx_pmulhrwv4hi3,
18219         mmx_pswapdv2si2): Set prefix_extra attribute to 1.
18220         (mmx_ashr<mode>3, mmx_lshr<mode>3, mmx_ashl<mode>3): Set
18221         length_immediate to 1 if operand 2 is const_int_operand.
18222         (*mmx_pinsrw, mmx_pextrw, mmx_pshufw_1, *vec_dupv4hi,
18223         *vec_extractv2si_1): Set length_immediate attribute to 1.
18224         (*mmx_uavgv8qi3): Override prefix_extra attribute to 1 if
18225         using old 3DNOW insn rather than SSE/3DNOW_A.
18226         (mmx_emms, mmx_femms): Clear modrm attribute.
18227
18228 2009-05-29  Martin Jambor  <mjambor@suse.cz>
18229
18230         * tree-sra.c:  New implementation of SRA.
18231
18232         * params.def (PARAM_SRA_MAX_STRUCTURE_SIZE): Removed.
18233         (PARAM_SRA_MAX_STRUCTURE_COUNT): Removed.
18234         (PARAM_SRA_FIELD_STRUCTURE_RATIO): Removed.
18235         * params.h (SRA_MAX_STRUCTURE_SIZE): Removed.
18236         (SRA_MAX_STRUCTURE_COUNT): Removed.
18237         (SRA_FIELD_STRUCTURE_RATIO): Removed.
18238         * doc/invoke.texi (sra-max-structure-size): Removed.
18239         (sra-field-structure-ratio): Removed.
18240
18241 2009-05-29  Jakub Jelinek  <jakub@redhat.com>
18242
18243         PR middle-end/40291
18244         * builtins.c (expand_builtin_memcmp): Convert len to sizetype
18245         before expansion.
18246
18247 2009-05-29  Andrey Belevantsev  <abel@ispras.ru>
18248
18249         PR rtl-optimization/40101
18250         * sel-sched-ir.c (get_seqno_by_preds): Allow returning negative
18251         seqno.  Adjust comment.
18252         * sel-sched.c (find_seqno_for_bookkeeping): Assert that when
18253         inserting bookkeeping before a jump, the jump is not scheduled.
18254         When no positive seqno found, provide a value.  Add comment.
18255
18256 2009-05-29  Richard Guenther  <rguenther@suse.de>
18257
18258         * tree-ssa-alias.c (nonaliasing_component_refs_p): Remove
18259         short-cutting on the first component.
18260
18261 2009-05-29  Jakub Jelinek  <jakub@redhat.com>
18262
18263         PR middle-end/39958
18264         * omp-low.c (scan_omp_1_op): Call remap_type on TREE_TYPE
18265         for trees other than decls/types.
18266
18267 2009-05-29  Richard Guenther  <rguenther@suse.de>
18268
18269         * tree-ssa-operands.c (get_expr_operands): Do not handle
18270         INDIRECT_REFs in the handled-component case.  Remove
18271         unused get_ref_base_and_extent case.
18272         * tree-dfa.c (get_ref_base_and_extent): Avoid calling
18273         tree_low_cst and host_integerp where possible.
18274         * tree-ssa-structalias.c (equiv_class_label_eq): Check hash
18275         codes for equivalence.
18276         * dce.c (find_call_stack_args): Avoid redundant bitmap queries.
18277
18278 2009-05-29  David Billinghurst <billingd@gcc.gnu.org>
18279
18280         * config.gcc: Add i386/t-fprules-softfp and soft-fp/t-softfp
18281         to tmake_file for i[34567]86-*-cygwin*.
18282
18283 2009-05-29  Jakub Jelinek  <jakub@redhat.com>
18284
18285         PR target/40017
18286         * config/rs6000/rs6000-c.c (_Bool_keyword): New variable.
18287         (altivec_categorize_keyword, init_vector_keywords,
18288         rs6000_cpu_cpp_builtins): Define _Bool as conditional macro
18289         similar to bool.
18290
18291 2009-05-29  Kai Tietz  <kai.tietz@onevision.com>
18292
18293         * tree.c (handle_dll_attribute): Check if node is
18294         of kind FUNCTION_DECL for DECL_DECLARED_INLINE_P check.
18295
18296 2009-05-29  Richard Earnshaw  <rearnsha@arm.com>
18297
18298         * config/arm/thumb2.md (thumb2_zero_extendsidi2): Add a split
18299         component.
18300         (thumb2_zero_extendqidi2): Likewise.
18301
18302 2009-05-28  Kaz Kojima  <kkojima@gcc.gnu.org>
18303
18304         * config/sh/sh.c (sh_expand_t_scc): Use gen_xorsi3_movrt
18305         instead of gen_movrt.
18306         * config/sh/sh.md (movrt): Remove.
18307
18308 2009-05-28  Steve Ellcey  <sje@cup.hp.com>
18309
18310         * doc/invoke.texi (IA-64 Options):
18311         Add -msdata, -mfused-madd, -mno-inline-float-divide,
18312         -mno-inline-int-divide, -mno-inline-sqrt, -msched-spec-ldc,
18313         -msched-spec-control-ldc, -msched-prefer-non-data-spec-insns,
18314         -msched-prefer-non-control-spec-insns,
18315         -msched-stop-bits-after-every-cycle,
18316         -msched-count-spec-in-critical-path,
18317         -msel-sched-dont-check-control-spec, -msched-fp-mem-deps-zero-cost
18318         -msched-max-memory-insns-hard-limit, -msched-max-memory-insns.
18319         Remove -mt, -pthread, -msched-ldc, -mno-sched-control-ldc,
18320         and -msched-spec-verbose.
18321
18322 2009-05-28  Joseph Myers  <joseph@codesourcery.com>
18323
18324         * config/arm/lib1funcs.asm (__clear_cache): Define if L_clear_cache.
18325         * config/arm/linux-eabi.h (CLEAR_INSN_CACHE): Define to give an
18326         error if used.
18327         * config/arm/t-linux-eabi (LIB1ASMFUNCS): Add _clear_cache.
18328
18329 2009-05-28  Richard Guenther  <rguenther@suse.de>
18330
18331         * tree-ssa-alias.c (ao_ref_init): New function.
18332         (ao_ref_base): Likewise.
18333         (ao_ref_base_alias_set): Likewise.
18334         (ao_ref_alias_set): Likewise.
18335         (refs_may_alias_p_1): Change signature.
18336         (refs_may_alias_p): Adjust.
18337         (refs_anti_dependent_p): Likewise.
18338         (refs_output_dependent_p): Likewise.
18339         (call_may_clobber_ref_p_1): Change signature.
18340         (call_may_clobber_ref_p): Adjust.
18341         (stmt_may_clobber_ref_p_1): New function split out from ...
18342         (stmt_may_clobber_ref_p): ... here.
18343         (maybe_skip_until): Adjust signature.
18344         (get_continuation_for_phi): Likewise.
18345         (walk_non_aliased_vuses): Likewise.
18346         * tree-ssa-alias.h (struct ao_ref_s): New structure type.
18347         (ao_ref_init): Declare.
18348         (ao_ref_base): Likewise.
18349         (ao_ref_alias_set): Likewise.
18350         (stmt_may_clobber_ref_p_1): Likewise.
18351         (walk_non_aliased_vuses): Adjust.
18352         * tree-ssa-sccvn.c (ao_ref_init_from_vn_reference): New function.
18353         (get_ref_from_reference_ops): remove.
18354         (vn_reference_lookup_2): Adjust signature.
18355         (vn_reference_lookup_3): Do not re-build trees.  Handle unions.
18356         (vn_reference_lookup_pieces): Adjust signature, do not re-build trees.
18357         (vn_reference_lookup): Adjust.
18358         (vn_reference_insert): Likewise.
18359         (vn_reference_insert_pieces): Adjust signature.
18360         (visit_reference_op_call): Adjust.
18361         * tree-ssa-pre.c (get_expr_type): Simplify.
18362         (phi_translate_1): Adjust.
18363         (compute_avail): Likewise.
18364         (translate_vuse_through_block): Do not re-build trees.
18365         (value_dies_in_block_x): Likewise.
18366         * tree-ssa-sccvn.h (struct vn_reference_s): Add type and alias-set
18367         fields.
18368         (vn_reference_lookup_pieces): Adjust declaration.
18369         (vn_reference_insert_pieces): Likewise.
18370
18371 2009-05-28  Benjamin Kosnik  <bkoz@redhat.com>
18372
18373         * tree-ssa-copy.c (replace_exp_1): Move op for warning-free use
18374         with checking disabled.
18375
18376 2009-05-28  Dave Korn  <dave.korn.cygwin@gmail.com>
18377
18378         PR target/37216
18379
18380         * configure.ac (HAVE_GAS_ALIGNED_COMM):  Add autoconf test and
18381         macro definition for support of three-operand format aligned
18382         .comm directive in assembler on cygwin/pe/mingw target OS.
18383         * configure:  Regenerate.
18384         * config.h:  Regenerate.
18385
18386         * config/i386/winnt.c (i386_pe_asm_output_aligned_decl_common):  Use
18387         aligned form of .comm directive if -mpe-aligned-commons is in effect.
18388         * config/i386/cygming.opt (-mpe-aligned-commons):  Add new option.
18389
18390         * doc/invoke.texi (-mpe-aligned-commons):  Document new target option.
18391         * doc/tm.texi (ASM_OUTPUT_COMMON):  Document zero size commons.
18392
18393 2009-05-28  Ira Rosen  <irar@il.ibm.com>
18394
18395         PR tree-optimization/40254
18396         * tree-data-ref.c (dr_analyze_innermost): Take POFFSET into account
18397         in analysis of basic blocks.
18398
18399 2009-05-28  Adam Nemet  <anemet@caviumnetworks.com>
18400
18401         PR middle-end/33699
18402         * target.h (struct gcc_target): Fix indentation.  Add const_anchor.
18403         * target-def.h (TARGET_CONST_ANCHOR): New macro.
18404         (TARGET_INITIALIZER): Use it.
18405         * cse.c (CHEAPER): Move it up to the other macros.
18406         (insert): Rename this ...
18407         (insert_with_costs): ... to this.  Add cost parameters.  Update
18408         function comment.
18409         (insert): New function.  Call insert_with_costs.
18410         (compute_const_anchors, insert_const_anchor, insert_const_anchors,
18411         find_reg_offset_for_const, try_const_anchors): New functions.
18412         (cse_insn): Call try_const_anchors.  Adjust cost of src_related
18413         when using a const-anchor.  Call insert_const_anchors.
18414         * config/mips/mips.c (mips_set_mips16_mode): Set targetm.const_anchor.
18415         * doc/tm.texi (Misc): Document TARGET_CONST_ANCHOR.
18416
18417 2009-05-28  Alexandre Oliva  <aoliva@redhat.com>
18418
18419         * tree-inline.c (remap_decls): Enable nonlocalized variables
18420         when not optimizing.
18421
18422 2009-05-28  Alexandre Oliva  <aoliva@redhat.com>
18423
18424         * tree-ssa-live.c (remove_unused_locals): Skip when not optimizing.
18425         Simplify other tests involving optimize.
18426
18427 2009-05-27  Tom Tromey  <tromey@redhat.com>
18428
18429         * unwind-dw2.c (_Unwind_DebugHook): New function.
18430         (uw_install_context): Call _Unwind_DebugHook.
18431
18432 2009-05-27  Tom Tromey  <tromey@redhat.com>
18433
18434         * system.h (CONST_CAST2): Use C++ const_cast when compiled as C++
18435
18436 2009-05-27  Ian Lance Taylor  <iant@google.com>
18437
18438         * Makefile.in (LINKER, LINKER_FLAGS): Define.
18439         (LINKER_FOR_BUILD, BUILD_LINKERFLAGS): Define.
18440         (ALL_LINKERFLAGS): Define.
18441         (xgcc$(exeext)): Change $(COMPILER) to $(LINKER).
18442         (cpp$(exeext), cc1-dummy$(exeext), cc1$(exeext)): Likewise.
18443         (collect2$(exeext), mips-tfile, mips-tdump): Likewise.
18444         (gcov$(exeext), gcov-dump$(exeext)): Likewise.
18445         (build/gen%$(build_exeext)): Change $(COMPILER_FOR_BUILD) to
18446         $(LINKER_FOR_BUILD).
18447         (build/gcov-iov$(build_exeext)): Likewise.
18448
18449 2009-05-27  Julian Brown  <julian@codesourcery.com>
18450
18451         * gcse.c (target.h): Include.
18452         (can_assign_to_reg_without_clobbers_p): Check that the target allows
18453         copy of argument to a pseudo register.
18454
18455 2009-05-27  Diego Novillo  <dnovillo@google.com>
18456
18457         * tree-ssa-live.c (dump_scope_block): Document arguments.
18458         (dump_scope_blocks): Document.
18459         (debug_scope_blocks): New.
18460         * tree-flow.h (debug_scope_blocks): Declare.
18461
18462 2009-05-21  Denis Chertykov  <denisc@overta.ru>
18463
18464         * doc/contrib.texi (Contributors): Add myself to the list.
18465
18466 2009-05-27  Olivier Hainque  <hainque@adacore.com>
18467
18468         * expr.c (target_align): New function.  Alignment the TARGET of an
18469         assignment may be assume to have.
18470         (highest_pow2_factor_for_target): Use it instead of relying on
18471         immediate tree attributes of TARGET, not necessarily honored when
18472         intermediate bitfields are involved.
18473
18474 2009-05-27  H.J. Lu  <hongjiu.lu@intel.com>
18475
18476         PR target/40266
18477         * config/i386/driver-i386.c (host_detect_local_cpu): Support
18478         AVX, SSE4, AES, PCLMUL and POPCNT.
18479
18480 2009-05-27  Diego Novillo  <dnovillo@google.com>
18481
18482         * tree-pretty-print.c (dump_location): New.
18483         (dump_generic_node): Call it.
18484         Factor code to handle BLOCK nodes ...
18485         (dump_block_node): ... here.
18486
18487 2009-05-27  Rafael Avila de Espindola  <espindola@google.com>
18488
18489         * Makefile.in (GCC_PLUGIN_H): New. Replace all uses of gcc-plugin.h
18490         with it.
18491         * doc/plugins.texi: Document that gcc-plugin.h must be the first to be
18492         included.
18493         * gcc-plugin.h: Include config.h and system.h.
18494         (IN_GCC): Define if not defined.
18495
18496 2009-05-27  Hans-Peter Nilsson  <hp@axis.com>
18497
18498         PR middle-end/40249
18499         * Makefile.in (CRTSTUFF_CFLAGS): Replace -fno-inline-functions
18500         with -fno-inline.
18501
18502 2009-05-27  Shujing Zhao  <pearly.zhao@oracle.com>
18503
18504         * config/m32r/m32r.c: Use REG_P, MEM_P and CONST_INT_P where
18505         applicable.
18506         * config/m32r/m32r.h: Ditto.
18507         * config/m32r/m32r.md: Ditto.
18508         * config/m32r/predicates.md: Ditto.
18509
18510 2009-05-27  Alexandre Oliva  <aoliva@redhat.com>
18511
18512         * cgraph.c (dump_cgraph_node): Honor -fdump-noaddr.
18513
18514 2009-05-26  Basile Starynkevitch  <basile@starynkevitch.net>
18515
18516         * doc/plugins.texi
18517         (Loading plugins): typo.
18518         (Plugin callbacks): Documented PLUGIN_INFO, PLUGIN_GGC_START,
18519         PLUGIN_GGC_MARKING, PLUGIN_GGC_END, PLUGIN_REGISTER_GGC_ROOTS.
18520         (Interacting with the GCC Garbage Collector): Added new section.
18521         (Giving information about a plugin): Added new section for
18522         PLUGIN_INFO.
18523         * ggc.h (ggc_register_root_tab): Added declaration.
18524         * gcc-plugin.h (PLUGIN_GGC_START, PLUGIN_GGC_MARKING)
18525         (PLUGIN_GGC_END, PLUGIN_REGISTER_GGC_ROOTS): Added new events.
18526         (register_callback): Improved comment in declaration.
18527         * ggc-common.c (const_ggc_root_tab_t) Added new typedef for vectors.
18528         (extra_root_vec) Added static variable for dynamic roots registration.
18529         (ggc_register_root_tab) Added new routine.
18530         (ggc_mark_roots) Added iteration inside extra_root_vec, and invoke
18531         PLUGIN_GGC_MARKING event.
18532         * ggc-zone.c: Include plugin.h.
18533         (ggc_collect): Invoke PLUGIN_GGC_START & PLUGIN_GGC_END events.
18534         * ggc-page.c: Include plugin.h.
18535         (ggc_collect): Invoke PLUGIN_GGC_START & PLUGIN_GGC_END events.
18536         * plugin.c (plugin_event_name): added names of PLUGIN_GGC_START,
18537         PLUGIN_GGC_MARKING, PLUGIN_GGC_END, PLUGIN_REGISTER_GGC_ROOTS
18538         (register_callback): check lack of callbacks for
18539         pseudo-events. Added handling of PLUGIN_REGISTER_GGC_ROOTS,
18540         PLUGIN_GGC_START, PLUGIN_GGC_MARKING, PLUGIN_GGC_END.
18541         (invoke_plugin_callbacks): Handle PLUGIN_GGC_START,
18542         PLUGIN_GGC_MARKING, PLUGIN_GGC_END, PLUGIN_REGISTER_GGC_ROOTS.
18543         * Makefile.in (ggc-common.o, ggc-zone.o, ggc-page.o): Added
18544         dependency on plugin.h.
18545         (plugin.o): Added dependency on ggc.h...
18546
18547 2009-05-26  Richard Guenther  <rguenther@suse.de>
18548
18549         PR middle-end/40248
18550         Revert
18551         * expr.c (expand_expr_real_1): Avoid calling do_store_flag
18552         with mismatched comparison modes.
18553
18554         * expr.c (expand_expr_real_1): Expand the operand of a
18555         VIEW_CONVERT_EXPR in its natural mode.
18556
18557 2009-05-26  Ian Lance Taylor  <iant@google.com>
18558
18559         * Makefile.in (COMPILER, COMPILER_FLAGS): Define.
18560         (COMPILER_FOR_BUILD, BUILD_COMPILERFLAGS): Define.
18561         (ALL_COMPILERFLAGS): Define.
18562         (.c.o, xgcc$(exeext), cpp$(exeext)): Use $(COMPILER).
18563         (cc1-dummy$(exeext), cc1$(exeext)): Likewise.
18564         (collect2$(exeext), collect2.o): Likewise.
18565         (c-opts.o, c-cppbuiltin.o, c-pch.o, gcc.o, gccspec.o): Likewise.
18566         (gcc-options.o, version.o, prefix.o, toplev.o): Likewise.
18567         ($(out_object_file), mips-tfile, mips-tdump): Likewise.
18568         (libbackend.o, intl.o, cppdefault.o): Likewise.
18569         (gcov$(exeext), gcov-dump$(exeext)): Likewise.
18570         (build/%.o): Use $(COMPILER_FOR_BUILD).
18571         (build/gen%$(build_exeext)): Likewise.
18572         (build/gcov-iov$(build_exeext)): LIkewise.
18573         * config/t-darwin (darwin.o): Use $(COMPILER).
18574         (darwin-c.o, darwin-f.o, darwin-driver.o): Likewise.
18575         * config/t-sol2 (sol2-c.o): Likewise.
18576         (sol2.o): Likewise.
18577         * config/t-vxworks (vxworks.o): Likewise.
18578         * config/x-darwin (host-darwin.o): Likewise.
18579         * config/x-hpux (host-hpux.o): Likewise.
18580         * config/x-linux (host-linux.o): Likewise.
18581         * config/x-solaris (host-solaris.o): Likewise.
18582         * config/alpha/x-alpha (driver-alpha.o): Likewise.
18583         * config/arm/t-arm (arm-c.o): Likewise.
18584         * config/arm/t-pe (pe.o): Likewise.
18585         * config/arm/t-wince-pe (pe.o): Likewise.
18586         * config/i386/t-cygming (winnt.o): Likewise.
18587         (winnt-cxx.o, winnt-stubs.o, msformat-c.o): Likewise.
18588         * config/i386/t-cygwin (cygwin1.o): Likewise.
18589         (cygwin2.o): Likewise.
18590         * config/i386/t-i386 (i386-c.o): Likewise.
18591         * config/i386/t-interix (winnt.o): Likewise.
18592         * config/i386/t-netware (netware.o): Likewise.
18593         * config/i386/t-nwld (nwld.o): Likewise.
18594         * config/i386/x-darwin (host-i386-darwin.o): Likewise.
18595         * config/i386/x-i386 (driver-i386.o): Likewise.
18596         * config/i386/x-cygwin (host-cygwin.o): Likewise.
18597         * config/i386/x-mingw32 (host-mingw32.o): Likewise.
18598         * config/ia64/t-ia64 (ia64-c.o): Likewise.
18599         * config/m32c/t-m32c (m32c-pragma.o): Likewise.
18600         * config/mips/x-native (driver-native.o): Likewise.
18601         * config/rs6000/t-rs6000 (rs6000-c.o): Likewise.
18602         * config/rs6000/x-darwin (host-ppc-darwin.o): Likewise.
18603         * config/rs6000/x-darwin64 (host-ppc64-darwin.o): Likewise.
18604         * config/rs6000/x-rs6000 (driver-rs6000.o): Likewise.
18605         * config/score/t-score-elf (score7.o): Likewise.
18606         (score3.o): Likewise.
18607         * config/sh/t-sh (sh-c.o): Likewise.
18608         * config/sh/t-symbian (sh-c.o): Likewise.
18609         (symbian.o): Likewise.
18610         * config/spu/t-spu-elf (spu-c.o): Likewise.
18611         * config/v850/t-v850 (v850-c.o): Likewise.
18612         * config/v850/t-v850e (v850-c.o): Likewise.
18613
18614 2009-05-26  Richard Guenther  <rguenther@suse.de>
18615
18616         PR tree-optimization/40122
18617         * tree-ssa-ccp.c (ccp_fold): Fold vector CONSTRUCTORs to
18618         VECTOR_CSTs if possible.
18619         (fold_gimple_assign): Likewise.
18620
18621 2009-05-26  Richard Guenther  <rguenther@suse.de>
18622
18623         PR middle-end/40252
18624         * fold-const.c (fold_binary): Use the correct types for building
18625         rotates.
18626
18627 2009-05-26  Richard Guenther  <rguenther@suse.de>
18628
18629         * tree-vect-data-refs.c (vect_create_data_ref_ptr): Remove
18630         redundant calls to merge_alias_info.
18631         (bump_vector_ptr): Likewise.
18632         * tree-ssa-copy.c (merge_alias_info): Remove.
18633         (replace_exp_1): Remove call to merge_alias_info.
18634         (propagate_tree_value): Likewise.
18635         (fini_copy_prop): Propagate points-to info.
18636         * tree-flow.h (merge_alias_info): Remove.
18637
18638 2009-05-07  Hariharan Sandanagobalane <hariharan@picochip.com>
18639
18640         * config/picochip/picochip.C (PARAM_INLINE_CALL_COST): Remove.
18641
18642 2009-05-25  Jan Hubicka  <jh@suse.cz>
18643
18644         * cgraph.c (dump_cgraph_node): Dump size/time/benefit.
18645         * cgraph.h (struct inline_summary): New filed self_wize,
18646         size_inlining_benefit, self_time and time_inlining_benefit.
18647         (struct cgraph_global_info): Replace insns by time ans size fields.
18648         * ipa-cp (ipcp_cloning_candidate_p): Base estimate on size
18649         (ipcp_estimate_growth, ipcp_insert_stage): Likewise.
18650         (ipcp_update_callgraph): Do not touch function bodies.
18651         * ipa-inline.c: Include except.h
18652         (MAX_TIME): New constant.
18653         (overall_insns): Remove.
18654         (leaf_node_p): New.
18655         (overall_size, max_benefit): New static variables.
18656         (cgraph_estimate_time_after_inlining): New function.
18657         (cgraph_estimate_size_after_inlining): Rewrite using benefits.
18658         (cgraph_clone_inlined_nodes): Update size.
18659         (cgraph_mark_inline_edge): Update size.
18660         (cgraph_estimate_growth): Use size info.
18661         (cgraph_check_inline_limits): Check size.
18662         (cgraph_default_inline_p): Likewise.
18663         (cgraph_edge_badness): Compute badness based on benefit and size cost.
18664         (cgraph_decide_recursive_inlining): Check size.
18665         (cgraph_decide_inlining_of_small_function): Update size; dump sizes
18666         and times.
18667         (cgraph_decide_inlining): Likewise.
18668         (cgraph_decide_inlining_incrementally): Likewise; honor
18669         PARAM_EARLY_INLINING_INSNS.
18670         (likely_eliminated_by_inlining_p): New predicate.
18671         (estimate_function_body_sizes): New function.
18672         (compute_inline_parameters): Use it.
18673         * except.c (must_not_throw_labels): New function.
18674         * except.h (must_not_throw_labels): Declare.
18675         * tree-inline.c (init_inline_once): Kill inlining_weigths
18676         * tree-ssa-structalias.c: Avoid uninitialized warning.
18677         * params.def (PARAM_MAX_INLINE_INSNS_SINGLE): Reduce to 300.
18678         (PARAM_MAX_INLINE_INSNS_AUTO): Reduce to 60.
18679         (PARAM_INLINE_CALL_COST): Remove.
18680         (PARAM_EARLY_INLINING_INSNS): New.
18681
18682 2009-05-25  Richard Guenther  <rguenther@suse.de>
18683
18684         PR tree-optimization/36327
18685         * tree-ssa-alias.c (walk_non_aliased_vuses): Add second walker
18686         callback for reference translation or lookup at the point of may-defs.
18687         * tree-ssa-alias.h (walk_non_aliased_vuses): Adjust prototype.
18688         * tree-ssa-sccvn.c (get_ref_from_reference_ops): Bail out
18689         for union COMPONENT_REFs.
18690         (vn_reference_lookup_3): New callback.  Lookup from memset
18691         and CONSTRUCTOR assignment, translate through struct copies.
18692         (vn_reference_lookup_pieces): Make sure to not free the
18693         passed operands array.  Adjust walk_non_aliased_vuses call.
18694         (vn_reference_lookup): Adjust walk_non_aliased_vuses call,
18695         make sure we do not leak memory.
18696
18697 2009-05-25  Richard Guenther  <rguenther@suse.de>
18698
18699         * tree-ssa-alias.h (dump_points_to_solution): Declare.
18700         * tree-inline.c (expand_call_inline): Reset the escaped and
18701         callused solutions.
18702         * tree-ssa-structalias.c (pass_build_ealias): New.
18703         * tree-pass.h (pass_build_ealias): Declare.
18704         * passes.c (init_optimization_passes): Add PTA during
18705         early optimizations.
18706         * tree-ssa-alias.c (dump_alias_info): Dump the ESCAPED
18707         and CALLUSED solutions.
18708         (dump_points_to_solution): New function, split out from ...
18709         (dump_points_to_info_for): ... here.
18710         * tree-parloops.c (parallelize_loops): Reset the escaped and
18711         callused solutions.
18712
18713 2009-05-25  Rainer Orth  <ro@TechFak.Uni-Bielefeld.DE>
18714
18715         PR bootstrap/40027
18716         * config/i386/i386.c (USE_HIDDEN_LINKONCE): Only define if missing.
18717         * config/i386/sol2.h [!TARGET_GNU_LD] (USE_HIDDEN_LINKONCE): Define.
18718
18719 2009-05-25  Ira Rosen  <irar@il.ibm.com>
18720
18721         PR tree-optimization/40238
18722         * tree-vect-stmts.c (vect_init_vector): Insert initialization
18723         statements after basic block's labels.
18724         * tree-vect-slp.c (vect_slp_transform_bb): Call destroy_bb_vec_info()
18725         to free the allocated memory.
18726
18727 2009-05-24  Kaz Kojima  <kkojima@gcc.gnu.org>
18728
18729         * gcc/config/sh/sh.c (sh_set_return_address): Mark store of
18730         return address with a USE.
18731
18732 2009-05-24  Richard Guenther  <rguenther@suse.de>
18733
18734         PR middle-end/40233
18735         * tree.c (make_vector_type): Build the TYPE_DEBUG_REPRESENTATION_TYPEs
18736         array type from the main variant of the inner type.
18737
18738 2009-05-24  Jan-Benedict Glaw  <jbglaw@lug-owl.de>
18739
18740         * config/vax/vax-protos.h (legitimate_constant_address_p): Change
18741         definition to bool (from int) to un-break build.
18742         (legitimate_constant_p, vax_mode_dependent_address_p): Likewise.
18743
18744 2009-05-24  Paolo Bonzini  <bonzini@gnu.org>
18745
18746         * tree-ssa-operands.h (push_stmt_changes, pop_stmt_changes,
18747         discard_stmt_changes): Delete.
18748         * tree-ssa-operands.c (scb_stack): Delete.
18749         (init_ssa_operands): Do not initialize it.
18750         (fini_ssa_operands): Do not free it.
18751         (push_stmt_changes, pop_stmt_changes, discard_stmt_changes): Delete.
18752
18753         * tree-cfg.c (replace_uses_by): Replace pop_stmt_changes with
18754         update_stmt, remove the others.  Fix comments.
18755         * tree-dfa.c (optimize_stack_restore): Likewise.
18756         * tree-ssa-forwprop.c (forward_propagate_addr_expr): Likewise.
18757         * tree-ssa-loop-ivopts.c (rewrite_use): Likewise.
18758         * tree-ssa-dce.c (eliminate_unnecessary_stmts): Likewise.
18759         * tree-ssa-ccp.c (optimize_stack_restore, execute_fold_all_builtins):
18760         Likewise.
18761         * tree-ssa-propagate.c (substitute_and_fold): Likewise.
18762         * tree-ssa-dom.c (propagate_rhs_into_lhs): Likewise.
18763         (dom_opt_finalize_block): Likewise, adjusting access to
18764         stmts_to_rescan.
18765         (optimize_stmt): Likewise, adjusting access to stmts_to_rescan.
18766         (stmts_to_rescan): Change item type to gimple.
18767         (tree_ssa_dominator_optimize): Change type of stmts_to_rescan.
18768
18769 2009-05-24  Ira Rosen  <irar@il.ibm.com>
18770
18771         * doc/passes.texi (Tree-SSA passes): Document SLP pass.
18772         * tree-pass.h (pass_slp_vectorize): New pass.
18773         * params.h (SLP_MAX_INSNS_IN_BB): Define.
18774         * timevar.def (TV_TREE_SLP_VECTORIZATION): Define.
18775         * tree-vectorizer.c (timevar.h): Include.
18776         (user_vect_verbosity_level): Declare.
18777         (vect_location): Fix comment.
18778         (vect_set_verbosity_level): Update user_vect_verbosity_level
18779         instead of vect_verbosity_level.
18780         (vect_set_dump_settings): Add an argument. Ignore user defined
18781         verbosity if dump flags require higher level of verbosity. Print to
18782         stderr only for loop vectorization.
18783         (vectorize_loops): Update call to vect_set_dump_settings.
18784         (execute_vect_slp): New function.
18785         (gate_vect_slp): Likewise.
18786         (struct gimple_opt_pass pass_slp_vectorize): New.
18787         * tree-vectorizer.h (struct _bb_vec_info): Define along macros to
18788         access its members.
18789         (vec_info_for_bb): New function.
18790         (struct _stmt_vec_info): Add bb_vinfo and a macro for its access.
18791         (VECTORIZATION_ENABLED): New macro.
18792         (SLP_ENABLED, SLP_DISABLED): Likewise.
18793         (vect_is_simple_use): Add bb_vec_info argument.
18794         (new_stmt_vec_info, vect_analyze_data_ref_dependences,
18795         vect_analyze_data_refs_alignment, vect_verify_datarefs_alignment,
18796         vect_analyze_data_ref_accesses, vect_analyze_data_refs,
18797         vect_schedule_slp, vect_analyze_slp): Likewise.
18798         (vect_analyze_stmt): Add slp_tree argument.
18799         (find_bb_location): Declare.
18800         (vect_slp_analyze_bb, vect_slp_transform_bb): Likewise.
18801         * tree-vect-loop.c (new_loop_vec_info): Adjust function calls.
18802         (vect_analyze_loop_operations, vect_analyze_loop,
18803         get_initial_def_for_induction, vect_create_epilog_for_reduction,
18804         vect_finalize_reduction, vectorizable_reduction,
18805         vectorizable_live_operation, vect_transform_loop): Likewise.
18806         * tree-data-ref.c (dr_analyze_innermost): Update comment,
18807         skip evolution analysis if analyzing a basic block.
18808         (dr_analyze_indices): Likewise.
18809         (initialize_data_dependence_relation): Skip the test whether the
18810         object is invariant for basic blocks.
18811         (compute_all_dependences): Skip dependence analysis for data
18812         references in basic blocks.
18813         (find_data_references_in_stmt): Don't fail in case of invariant
18814         access in basic block.
18815         (find_data_references_in_bb): New function.
18816         (find_data_references_in_loop): Move code to
18817         find_data_references_in_bb and add a call to it.
18818         (compute_data_dependences_for_bb): New function.
18819         * tree-data-ref.h (compute_data_dependences_for_bb): Declare.
18820         * tree-vect-data-refs.c (vect_check_interleaving): Adjust to the case
18821         that STEP is 0.
18822         (vect_analyze_data_ref_dependence): Check for interleaving in case of
18823         unknown dependence in basic block and fail in case of dependence in
18824         basic block.
18825         (vect_analyze_data_ref_dependences): Add bb_vinfo argument, get data
18826         dependence instances from either loop or basic block vectorization
18827         info.
18828         (vect_compute_data_ref_alignment): Check if it is loop vectorization
18829         before calling nested_in_vect_loop_p.
18830         (vect_compute_data_refs_alignment): Add bb_vinfo argument, get data
18831         dependence instances from either loop or basic block vectorization
18832         info.
18833         (vect_verify_datarefs_alignment): Likewise.
18834         (vect_enhance_data_refs_alignment): Adjust function calls.
18835         (vect_analyze_data_refs_alignment): Likewise.
18836         (vect_analyze_group_access): Fix printing. Skip different checks if
18837         DR_STEP is 0. Keep strided stores either in loop or basic block
18838         vectorization data structure. Fix indentation.
18839         (vect_analyze_data_ref_access): Fix comments, allow zero step in
18840         basic blocks.
18841         (vect_analyze_data_ref_accesses): Add bb_vinfo argument, get data
18842         dependence instances from either loop or basic block vectorization
18843         info.
18844         (vect_analyze_data_refs): Update comment. Call
18845         compute_data_dependences_for_bb to analyze basic blocks.
18846         (vect_create_addr_base_for_vector_ref): Check for outer loop only in
18847         case of loop vectorization. In case of basic block vectorization use
18848         data-ref itself as a base.
18849         (vect_create_data_ref_ptr): In case of basic block vectorization:
18850         don't advance the pointer, add new statements before the current
18851         statement.  Adjust function calls.
18852         (vect_supportable_dr_alignment): Support only aligned accesses in
18853         basic block vectorization.
18854         * common.opt (ftree-slp-vectorize): New flag.
18855         * tree-vect-patterns.c (widened_name_p): Adjust function calls.
18856         (vect_pattern_recog_1): Likewise.
18857         * tree-vect-stmts.c (process_use): Likewise.
18858         (vect_init_vector): Add new statements in the beginning of the basic
18859         block in case of basic block SLP.
18860         (vect_get_vec_def_for_operand): Adjust function calls.
18861         (vect_finish_stmt_generation): Likewise.
18862         (vectorizable_call): Add assert that it is loop vectorization, adjust
18863         function calls.
18864         (vectorizable_conversion, vectorizable_assignment): Likewise.
18865         (vectorizable_operation): In case of basic block SLP, take
18866         vectorization factor from statement's type and skip the relevance
18867         check. Adjust function calls.
18868         (vectorizable_type_demotion): Add assert that it is loop
18869         vectorization, adjust function calls.
18870         (vectorizable_type_promotion): Likewise.
18871         (vectorizable_store): Check for outer loop only in case of loop
18872         vectorization. Adjust function calls. For basic blocks, skip the
18873         relevance check and don't advance pointers.
18874         (vectorizable_load): Likewise.
18875         (vectorizable_condition): Add assert that it is loop vectorization,
18876         adjust function calls.
18877         (vect_analyze_stmt): Add argument. In case of basic block SLP, check
18878         that it is not reduction, get vector type, call only supported
18879         functions, skip loop specific parts.
18880         (vect_transform_stmt): Check for outer loop only in case of loop
18881         vectorization.
18882         (new_stmt_vec_info): Add new argument and initialize bb_vinfo.
18883         (vect_is_simple_use): Fix comment, add new argument, fix conditions
18884         for external definition.
18885         * passes.c (pass_slp_vectorize): New pass.
18886         * tree-vect-slp.c (find_bb_location): New function.
18887         (vect_get_and_check_slp_defs): Add argument, adjust function calls,
18888         check for patterns only in loops.
18889         (vect_build_slp_tree): Add argument, adjust function calls, fail in
18890         case of multiple types in basic block SLP.
18891         (vect_mark_slp_stmts_relevant): New function.
18892         (vect_supported_load_permutation_p): Fix comment.
18893         (vect_analyze_slp_instance): Add argument. In case of basic block
18894         SLP, take vectorization factor from statement's type, check that
18895         unrolling factor is 1. Adjust function call. Save SLP instance in
18896         either loop or basic block vectorization structure. Return FALSE,
18897         if SLP failed.
18898         (vect_analyze_slp): Add argument. Get strided stores groups from
18899         either loop or basic block vectorization structure. Return FALSE
18900         if basic block SLP failed.
18901         (new_bb_vec_info): New function.
18902         (destroy_bb_vec_info, vect_slp_analyze_node_operations,
18903         vect_slp_analyze_operations, vect_slp_analyze_bb): Likewise.
18904         (vect_schedule_slp): Add argument. Get SLP instances from either
18905         loop or basic block vectorization structure. Set vectorization factor
18906         to be 1 for basic block SLP.
18907         (vect_slp_transform_bb): New function.
18908         * params.def (PARAM_SLP_MAX_INSNS_IN_BB): Define.
18909
18910 2009-05-23  Mark Mitchell  <mark@codesourcery.com>
18911
18912         * final.c (shorten_branches): Do not align labels for jump tables.
18913         (final_scan_insn): Use JUMP_TABLE_DATA_P.
18914
18915 2009-05-23  Eric Botcazou  <ebotcazou@adacore.com>
18916
18917         * doc/passes.texi: Standardize spelling of RTL, Tree and Tree SSA.
18918         Remove outdated reference to flow.c and fix nits.
18919         * doc/gccint.texi: Tweak RTL description.
18920         * doc/rtl.texi: Likewise.
18921
18922 2009-05-23  Denis Chertykov  <chertykov@gmail.com>
18923
18924         * config/avr/avr.c: Change my email address.
18925         * config/avr/avr.h: Likewise.
18926         * config/avr/avr.md: Likewise.
18927         * config/avr/avr-protos.h: Likewise.
18928         * config/avr/libgcc.S: Likewise.
18929
18930 2009-05-22  Trevor Smigiel <Trevor_Smigiel@playstation.sony.com>
18931
18932         * config/spu/spu-protos.h (aligned_mem_p, spu_valid_mov): Remove.
18933         (spu_split_load, spu_split_store): Change return type to int.
18934         (spu_split_convert): Declare.
18935         * config/spu/predicates.md (spu_mem_operand): Remove.
18936         (spu_mov_operand): Update.
18937         (spu_dest_operand, shiftrt_operator, extend_operator): Define.
18938         * config/spu/spu.c (regno_aligned_for_load): Remove.
18939         (reg_aligned_for_addr, spu_expand_load): Define.
18940         (spu_expand_extv): Reimplement and handle MEM.
18941         (spu_expand_insv): Handle MEM.
18942         (spu_sched_reorder): Handle insn's with length 0.
18943         (spu_legitimate_address_p): Reimplement.
18944         (store_with_one_insn_p): Return TRUE for any mode with size
18945         larger than 16 bytes.
18946         (address_needs_split): Define.
18947         (spu_expand_mov): Call spu_split_load and spu_split_store for MEM
18948         operands.
18949         (spu_convert_move): Define.
18950         (spu_split_load): Use spu_expand_load and change all MEM's to TImode.
18951         (spu_split_store): Change all MEM's to TImode.
18952         (spu_init_expanders): Preallocate registers that correspond to
18953         LAST_VIRTUAL_REG+1 and LAST_VIRTUAL_REG+2 and set them with
18954         mark_reg_pointer.
18955         (spu_split_convert): Define.
18956         * config/spu/spu.md (QHSI, QHSDI): New mode iterators.
18957         (_move<mode>, _movdi, _movti): Update predicate and condition.
18958         (load, store): Change to define_split.
18959         (extendqiti2, extendhiti2, extendsiti2, extendditi2): Simplify to
18960         extend<mode>ti2.
18961         (zero_extendqiti2, zero_extendhiti2, <v>lshr<mode>3_imm): Define.
18962         (lshr<mode>3, lshr<mode>3_imm, lshr<mode>3_re): Simplify to one
18963         define_insn_and_split of lshr<mode>3.
18964         (shrqbybi_<mode>, shrqby_<mode>): Simplify to define_expand.
18965         (<v>ashr<mode>3_imm): Define.
18966         (extv, extzv, insv): Allow MEM operands.
18967         (trunc_shr_ti<mode>, trunc_shr_tidi, shl_ext_<mode>ti,
18968         shl_ext_diti, sext_trunc_lshr_tiqisi, zext_trunc_lshr_tiqisi,
18969         sext_trunc_lshr_tihisi, zext_trunc_lshr_tihisi): Define for combine.
18970         (_spu_convert2): Change to define_insn_and_split and remove the
18971         corresponding define_peephole2.
18972         (stack_protect_set, stack_protect_test, stack_protect_test_si):
18973         Change predicates to memory_operand.
18974
18975 2009-05-22  Mark Mitchell  <mark@codesourcery.com>
18976
18977         * config/arm/thumb2.md: Add 16-bit multiply instructions.
18978
18979 2009-05-21  Michael Meissner  <meissner@linux.vnet.ibm.com>
18980
18981         PR tree-optimization/40219
18982         * tree.c (iterative_hash_expr): Make sure the builtin function is
18983         a normal builtin function and not a front end or back end builtin
18984         before indexing into the built_in_decls array.
18985
18986 2009-05-22  Richard Guenther  <rguenther@suse.de>
18987
18988         PR middle-end/38964
18989         * alias.c (write_dependence_p): Do not use TBAA for answering
18990         anti-dependence or output-dependence.
18991         * tree-ssa-structalias.c (set_uids_in_ptset): Remove TBAA pruning code.
18992         (emit_pointer_definition): Remove.
18993         (emit_alias_warning): Likewise.
18994         (find_what_var_points_to): Remove TBAA pruning code.
18995         (find_what_p_points_to): Likewise.  Do not warn about strict-aliasing
18996         violations.
18997         (compute_points_to_sets): Remove code computing the set of
18998         dereferenced pointers.
18999         * tree-data-ref.c (dr_may_alias_p): Properly use the split
19000         oracle for querying anti and output dependencies.
19001         * tree-ssa-alias.c (refs_may_alias_p_1): Add argument specifying
19002         if TBAA may be applied.
19003         (refs_anti_dependent_p): New function.
19004         (refs_output_dependent_p): Likewise.
19005         * tree-ssa-alias.h (refs_anti_dependent_p): Declare.
19006         (refs_output_dependent_p): Likewise.
19007         * doc/tree-ssa.texi (Memory model): New section.
19008         * doc/c-tree.texi (CHANGE_DYNAMIC_TYPE_EXPR): Remove.
19009         * doc/gimple.texi (GIMPLE_CHANGE_DYNAMIC_TYPE): Remove.
19010         * cfgexpand.c (expand_gimple_basic_block): Do not handle
19011         GIMPLE_CHANGE_DYNAMIC_TYPE or CHANGE_DYNAMIC_TYPE_EXPR.
19012         * expr.c (expand_expr_real_1): Likewise.
19013         * gimple-low.c (lower_stmt): Likewise.
19014         * gimple-pretty-print.c (dump_gimple_stmt): Likewise.
19015         (dump_gimple_cdt): Remove.
19016         * gimple.c (gss_for_code): Do not handle GIMPLE_CHANGE_DYNAMIC_TYPE.
19017         (gimple_size): Likewise.
19018         (walk_gimple_op): Likewise.
19019         (is_gimple_stmt): Likewise.
19020         (walk_stmt_load_store_addr_ops): Likewise.
19021         (gimple_build_cdt): Remove.
19022         * gimple.def (GIMPLE_CHANGE_DYNAMIC_TYPE): Remove.
19023         * gimple.h (gimple_cdt_new_type): Remove.
19024         (gimple_cdt_new_type_ptr): Likewise.
19025         (gimple_cdt_set_new_type): Likewise.
19026         (gimple_cdt_location): Likewise.
19027         (gimple_cdt_location_ptr): Likewise.
19028         (gimple_cdt_set_location): Likewise.
19029         * gimplify.c (gimplify_expr): Do not handle CHANGE_DYNAMIC_TYPE_EXPR.
19030         * tree-cfg.c (remove_useless_stmts_1): Do not handle
19031         GIMPLE_CHANGE_DYNAMIC_TYPE.
19032         (verify_types_in_gimple_stmt): Likewise.
19033         * tree-inline.c (estimate_num_insns): Likewise.
19034         (expand_call_inline): Do not copy DECL_NO_TBAA_P.
19035         (copy_decl_to_var): Likewise.
19036         (copy_result_decl_to_var): Likewise.
19037         * tree-pretty-print.c (dump_generic_node): Do not handle
19038         CHANGE_DYNAMIC_TYPE_EXPR.
19039         * tree-ssa-dce.c (mark_stmt_if_obviously_necessary): Likewise.
19040         * tree-ssa-operands.c (get_expr_operands): Likewise.
19041         * tree-ssa-structalias.c (struct variable_info): Remove
19042         no_tbaa_pruning member.
19043         (new_var_info): Do not set it based on DECL_NO_TBAA_P.
19044         (unify_nodes): Do not copy it.
19045         (find_func_aliases): Do not handle GIMPLE_CHANGE_DYNAMIC_TYPE.
19046         (dump_solution_for_var): Do not dump no_tbaa_pruning state.
19047         (set_uids_in_ptset): Do not check it.
19048         (find_what_var_points_to): Likewise.
19049         (compute_tbaa_pruning): Remove.
19050         (compute_points_to_sets): Do not call it.
19051         * tree.c (walk_tree_1): Do not handle CHANGE_DYNAMIC_TYPE_EXPR.
19052         * tree.def (CHANGE_DYNAMIC_TYPE_EXPR): Remove.
19053         * tree.h (CHANGE_DYNAMIC_TYPE_NEW_TYPE): Remove.
19054         (CHANGE_DYNAMIC_TYPE_LOCATION): Likewise.
19055         (DECL_NO_TBAA_P): Likewise.
19056         (struct tree_decl_common): Move no_tbaa_flag to unused flags section.
19057         * omp-low.c (copy_var_decl): Do not copy DECL_NO_TBAA_P.
19058         (expand_omp_atomic_pipeline): Do not set it.
19059         * print-tree.c (print_node): Do not dump it.
19060         * tree-ssa-copyrename.c (copy_rename_partition_coalesce): Remove
19061         redundant check.
19062
19063 2009-05-22 Vladimir Makarov <vmakarov@redhat.com>
19064
19065         PR target/39856
19066         * reg-stack.c (subst_stack_regs_pat): Remove gcc_assert for note
19067         for clobber.
19068
19069 2009-05-22  Mark Mitchell  <mark@codesourcery.com>
19070
19071         * tree.c (handle_dll_attribute): Mark dllexport'd inlines as
19072         non-external.
19073
19074 2009-05-22  Ben Elliston  <bje@au.ibm.com>
19075
19076         * Makefile.in (bversion.h, s-bversion): New targets.
19077         (TOPLEV_H): Add bversion.h.
19078         * toplev.h: Include "bversion.h".
19079         (ATTRIBUTE_GCC_DIAG): When building with checking disabled, use
19080         the __format__ attribute only if compiling with the same version
19081         of GCC as the sources (the "build version").
19082
19083 2009-05-22  Ben Elliston  <bje@au.ibm.com>
19084
19085         * c-format.c (handle_format_attribute): Fix comment typo.
19086
19087 2009-05-21  Steve Ellcey  <sje@cup.hp.com>
19088
19089         PR target/37846
19090         * config/ia64/ia64.opt (mfused-madd): New.
19091         * config/ia64/ia64.h (TARGET_DEFAULT): Set MASK_FUSED_MADD.
19092         * config/ia64/hpux.h (TARGET_DEFAULT): Ditto.
19093         * config/ia64/ia64.md (maddsf4, msubsf4, nmaddsf4,
19094         madddf4, madddf4_trunc, msubdf4, msubdf4_trunc, nmadddf4,
19095         nmadddf4_truncsf, maddxf4, maddxf4_truncsf, maddxf4_truncdf,
19096         msubxf4, msubxf4_truncsf msubxf4_truncdf, nmaddxf4,
19097         nmaddxf4_truncsf, nmaddxf4_truncdf): Check TARGET_FUSED_MADD.
19098         * config/ia64/vect.md (addv2sf3, subv2sf3): Force fpma/fpms
19099         instruction if !TARGET_FUSED_MADD.
19100         (fpma, fpms): Remove colon from name.
19101
19102 2009-05-22  Richard Guenther  <rguenther@suse.de>
19103
19104         * tree-ssa-sccvn.c (copy_reference_ops_from_ref): Record
19105         TMR_ORIGINAL.  Always either record TMR_SYMBOL or TMR_BASE.
19106         * tree-ssa-pre.c (create_component_ref_by_pieces_1): Handle
19107         TARGET_MEM_REF.
19108         (create_expression_by_pieces): Only convert if necessary.
19109         * gimplify.c (gimplify_expr): Handle TARGET_MEM_REF.
19110         * tree-ssa-loop-im.c (gen_lsm_tmp_name): Handle INTEGER_CST.
19111
19112 2009-05-21  Adam Nemet  <anemet@caviumnetworks.com>
19113
19114         * config/mips/mips.md (*extzv_trunc<mode>_exts): Turn into a
19115         regular pattern from a template and rename it ...
19116         (*extzv_truncsi_exts): ... to this.
19117
19118 2009-05-21  Richard Guenther  <rguenther@suse.de>
19119
19120         * cgraph.h (struct cgraph_node): Remove inline_decl member.
19121         * ipa-inline.c (cgraph_mark_inline_edge): Do not check it.
19122         (cgraph_default_inline_p): Likewise.
19123         (cgraph_decide_inlining_incrementally): Likewise.
19124
19125 2009-05-21  H.J. Lu  <hongjiu.lu@intel.com>
19126             Uros Bizjak  <ubizjak@gmail.com>
19127
19128         * config/i386/cpuid.h (bit_MOVBE): New.
19129
19130         * config/i386/driver-i386.c (host_detect_local_cpu): Check movbe.
19131
19132         * config/i386/i386.c (OPTION_MASK_ISA_MOVBE_SET): New.
19133         (OPTION_MASK_ISA_MOVBE_UNSET): Likewise.
19134         (ix86_handle_option): Handle OPT_mmovbe.
19135         (ix86_target_string): Add -mmovbe.
19136         (pta_flags): Add PTA_MOVBE.
19137         (processor_alias_table): Add PTA_MOVBE to "atom".
19138         (override_options): Handle PTA_MOVBE.
19139
19140         * config/i386/i386.h (TARGET_MOVBE): New.
19141
19142         * config/i386/i386.md (bswapsi2): Check TARGET_MOVBE.
19143         (*bswapsi_movbe): New.
19144         (*bswapdi_movbe): Likewise.
19145         (bswapdi2): Renamed to ...
19146         (*bswapdi_1): This.
19147         (bswapdi2): New expander.
19148
19149         * config/i386/i386.opt (mmovbe): New.
19150
19151         * doc/invoke.texi: Document -mmovbe.
19152
19153 2009-05-21  Taras Glek  <tglek@mozilla.com>
19154
19155         * plugin.c (try_init_one_plugin): Updated to new plugin_init API.
19156         * gcc-plugin.h (plugin_init): Updated signature.
19157         * gcc-plugin.h (plugin_name_args): Moved to this header.
19158         * doc/plugins.texi (plugin_init): Updated documention to reflect
19159         API change.
19160         * doc/plugins.texi (plugin_name_args): Added to documention.
19161
19162 2009-05-21  Mark Mitchell  <mark@codesourcery.com>
19163
19164         * config/arm/neon.md (*mul<mode>3add<mode>_neon): New pattern.
19165         (*mul<mode>3neg<mode>add<mode>_neon): Likewise.
19166
19167 2009-05-21  Shujing Zhao  <pearly.zhao@oracle.com>
19168
19169         * config/i386/i386.c: Use REG_P, MEM_P, CONST_INT_P, LABEL_P and
19170         JUMP_TABLE_DATA_P predicates where applicable.
19171         * config/i386/predicates.md: Ditto.
19172         * config/i386/sse.md: Ditto.
19173
19174 2009-05-21  Jakub Jelinek  <jakub@redhat.com>
19175
19176         * config/i386/i386.md (adddi_4_rex64, addsi_4, addhi_4): For
19177         operand2 -128 override length_immediate attribute to 1.
19178         * config/i386/predicates.md (constm128_operand): New predicate.
19179
19180         * config/i386/i386.c (memory_address_length): Handle %r12
19181         the same as %rsp and %r13 the same as %rbp.  For %rsp and %rbp
19182         also check REGNO.
19183         (ix86_attr_length_address_default): For MODE_SI lea in 64-bit
19184         mode look through optional ZERO_EXTEND and SUBREG.
19185         * config/i386/i386.md (R12_REG): New define_constant.
19186         (prefix_data16): For sse unit set also for MODE_TI insns.
19187         (prefix_rex): For -m32 always return 0.  For TYPE_IMOVX
19188         insns set if operand 1 is ext_QIreg_operand.
19189         (modrm): For TYPE_IMOV clear only if not MODE_DI.  For
19190         TYPE_{ALU{,1},ICMP,TEST} insn clear if there is non-shortened
19191         immediate.
19192         (*movdi_extzv_1, zero_extendhidi2, zero_extendqidi2): Change
19193         mode from MODE_DI to MODE_SI.
19194         (movdi_1_rex64): Override modrm and length_immediate attributes
19195         only for movabs (TYPE_IMOV, alternative 2).
19196         (zero_extendsidi2_rex64): Clear prefix_0f attribute if TYPE_IMOVX.
19197         (*float<SSEMODEI24:mode><MODEF:mode>2_mixed_interunit,
19198         *float<SSEMODEI24:mode><MODEF:mode>2_mixed_nointerunit,
19199         *float<SSEMODEI24:mode><MODEF:mode>2_sse_interunit,
19200         *float<SSEMODEI24:mode><MODEF:mode>2_sse_nointerunit): Set
19201         prefix_rex attribute if DImode.
19202         (*adddi_1_rex64, *adddi_2_rex64, *adddi_3_rex64, *adddi_5_rex64,
19203         *addsi_1, *addsi_1_zext, *addsi_2, *addsi_2_zext, *addsi_3,
19204         *addsi_3_zext, *addsi_5, *addhi_1_lea, *addhi_1, *addhi_2, *addhi_3,
19205         *addhi_5, *addqi_1_lea, *addqi_1): Override length_immediate
19206         attribute to 1 if TYPE_ALU and operand 2 is const128_operand.
19207         (pro_epilogue_adjust_stack_1, pro_epilogue_adjust_stack_rex64):
19208         Likewise.  For TYPE_IMOV clear length_immediate attribute.
19209         (*ashldi3_1_rex64, *ashldi3_cmp_rex64, *ashldi3_cconly_rex64,
19210         *ashlsi3_1, *ashlsi3_1_zext, *ashlsi3_cmp, **ashlsi3_cconly,
19211         *ashlsi3_cmp_zext, *ashlhi3_1_lea, *ashlhi3_1, *ashlhi3_cmp,
19212         *ashlhi3_cconly, *ashlqi3_1_lea, *ashlqi3_1, *ashlqi3_cmp,
19213         *ashlqi3_cconly): Override length_immediate attribute to 0 if TYPE_ALU
19214         or one operand TYPE_ISHIFT.
19215         (*ashrdi3_1_one_bit_rex64, *ashrdi3_one_bit_cmp_rex64,
19216         *ashrdi3_one_bit_cconly_rex64, *ashrsi3_1_one_bit,
19217         *ashrsi3_1_one_bit_zext, *ashrsi3_one_bit_cmp,
19218         *ashrsi3_one_bit_cconly, *ashrsi3_one_bit_cmp_zext,
19219         *ashrhi3_1_one_bit, *ashrhi3_one_bit_cmp, *ashrhi3_one_bit_cconly,
19220         *ashrqi3_1_one_bit, *ashrqi3_1_one_bit_slp, *ashrqi3_one_bit_cmp,
19221         *ashrqi3_one_bit_cconly, *lshrdi3_1_one_bit_rex64,
19222         *lshrdi3_cmp_one_bit_rex64, *lshrdi3_cconly_one_bit_rex64,
19223         *lshrsi3_1_one_bit, *lshrsi3_1_one_bit_zext, *lshrsi3_one_bit_cmp,
19224         *lshrsi3_one_bit_cconly, *lshrsi3_cmp_one_bit_zext,
19225         *lshrhi3_1_one_bit, *lshrhi3_one_bit_cmp, *lshrhi3_one_bit_cconly,
19226         *lshrqi3_1_one_bit, *lshrqi3_1_one_bit_slp, *lshrqi2_one_bit_cmp,
19227         *lshrqi2_one_bit_cconly, *rotlsi3_1_one_bit_rex64, *rotlsi3_1_one_bit,
19228         *rotlsi3_1_one_bit_zext, *rotlhi3_1_one_bit, *rotlqi3_1_one_bit_slp,
19229         *rotlqi3_1_one_bit, *rotrdi3_1_one_bit_rex64, *rotrsi3_1_one_bit,
19230         *rotrsi3_1_one_bit_zext, *rotrhi3_one_bit, *rotrqi3_1_one_bit,
19231         *rotrqi3_1_one_bit_slp): Override length_immediate attribute to 0,
19232         set mode attribute, don't override length attribute.
19233         (*btsq, *btrq, *btcq, *btdi_rex64, *btsi): Set prefix_0f attribute
19234         to 1.
19235         (return_internal_long): Set length attribute to 2 instead of 1.
19236         (*strmovqi_rex_1, *strsetqi_rex_1, *rep_stosqi_rex64,
19237         *cmpstrnqi_nz_rex_1, *cmpstrnqi_rex_1, *strlenqi_rex_1): Clear
19238         prefix_rex attribute.
19239         * config/i386/predicates.md (ext_QIreg_operand, const128_operand):
19240         New predicates.
19241         (memory_displacement_only_operand): Always return 0 for TARGET_64BIT.
19242
19243 2009-05-21  Ramana Radhakrishnan  <ramana.radhakrishnan@arm.com>
19244
19245         * config/arm/thumb2.md (orsi_notsi_si): Fix typo in pattern.
19246
19247 2009-05-20  Ian Lance Taylor  <iant@google.com>
19248
19249         * tree.c (build_tree_list_vec_stat): New function.
19250         (ctor_to_vec): New function.
19251         (build_nt_call_vec): New function.
19252         (build_call_array): Change args to be a const pointer.
19253         (build_call_vec): New function.
19254         * tree.h (build_nt_call_vec): Declare.
19255         (build_tree_list_vec_stat): Declare.
19256         (build_tree_list_vec): Define.
19257         (build_call_array): Update declaration.
19258         (build_call_vec): Declare.
19259         (ctor_to_vec): Declare.
19260         * c-common.c (tree_vector_cache): New static variable.
19261         (make_tree_vector): New function.
19262         (release_tree_vector): New function.
19263         (make_tree_vector_single): New function.
19264         (make_tree_vector_copy): New function.
19265         * c-common.h (tree_vector_cache, make_tree_vector): Declare.
19266         (make_tree_vector_single, make_tree_vector_copy): Declare.
19267         * c-parser.c (cached_expr_list_1, cached_expr_list_2): Remove.
19268         (c_parser_expr_list): Don't manage cache here, instead call
19269         make_tree_vector.
19270         (c_parser_release_expr_list): Remove static function.
19271         (c_parser_vec_to_tree_list): Remove static function.
19272         (c_parser_attributes): Call build_tree_list_vec instead of
19273         c_parser_vec_to_tree_list.  Call release_tree_vector instead of
19274         c_parser_release_expr_list.
19275         (c_parser_postfix_expression_after_primary): Likewise.
19276         (c_parser_objc_keywordexpr): Likewise.
19277
19278 2009-05-20  Sandra Loosemore  <sandra@codesourcery.com>
19279
19280         * doc/tm.texi (Misc): Document TARGET_INVALID_PARAMETER_TYPE,
19281         TARGET_INVALID_RETURN_TYPE, TARGET_PROMOTED_TYPE, and
19282         TARGET_CONVERT_TO_TYPE.
19283         * hooks.c (hook_tree_const_tree_null): Define.
19284         * hooks.h (hook_tree_const_tree_null): Declare.
19285         * target.h (struct gcc_target):  Add invalid_parameter_type,
19286         invalid_return_type, promoted_type, and convert_to_type fields.
19287         * target-def.h (TARGET_INVALID_PARAMETER_TYPE): Define.
19288         (TARGET_INVALID_RETURN_TYPE): Define.
19289         (TARGET_PROMOTED_TYPE): Define.
19290         (TARGET_CONVERT_TO_TYPE): Define.
19291         (TARGET_INITIALIZER): Update for new fields.
19292         * c-decl.c (grokdeclarator): Check targetm.invalid_return_type.
19293         (grokparms): Check targetm.invalid_parameter_type.
19294         * c-typeck.c (default_conversion): Check targetm.promoted_type.
19295         * c-convert.c (convert): Check targetm.convert_to_type.
19296
19297 2009-05-20  Adam Nemet  <anemet@caviumnetworks.com>
19298
19299         * config/mips/mips.md (*extenddi_truncate<mode>,
19300         *extendsi_truncate<mode>): Emit exts if supported.  Add attribute
19301         defintions.
19302         (*extendhi_truncateqi): New define_insn_and_sptit.
19303
19304 2009-05-20  Jakub Jelinek  <jakub@redhat.com>
19305
19306         PR middle-end/40204
19307         * fold-const.c (fold_binary) <case BIT_AND_EXPR>: Avoid infinite
19308         recursion if build_int_cst_type returns the same INTEGER_CST as arg1.
19309
19310 2009-05-20  Eric Botcazou  <ebotcazou@adacore.com>
19311
19312         * fold-const.c (build_fold_addr_expr_with_type): Take the address of
19313         the operand of VIEW_CONVERT_EXPR.
19314
19315 2009-05-20  H.J. Lu  <hongjiu.lu@intel.com>
19316
19317         * config/i386/driver-i386.c (host_detect_local_cpu): Check
19318         extended family and model for Intel processors.  Support Intel Atom.
19319
19320 2009-05-20  Olivier Hainque  <hainque@adacore.com>
19321
19322         * gstab.h (stab_code_type): Define, to be used instead of the
19323         __stab_debug_code enum, made anonymous.  Add 2009 to the copyright
19324         notice.
19325         * dbxout.c (STAB_CODE_TYPE): Remove #define and replace use
19326         occurrences by stab_code_type.
19327         * mips-tfile.c (STAB_CODE_TYPE): Remove #define, unused.
19328
19329 2009-05-20  Martin Jambor  <mjambor@suse.cz>
19330
19331         * tree-flow.h (insert_edge_copies_seq): Undeclare.
19332         (sra_insert_before): Likewise.
19333         (sra_insert_after): Likewise.
19334         (sra_init_cache): Likewise.
19335         (sra_type_can_be_decomposed_p): Likewise.
19336         * tree-mudflap.c (insert_edge_copies_seq): Copied here from tree-sra.c
19337         * tree-sra.c (sra_type_can_be_decomposed_p): Made static.
19338         (sra_insert_before): Likewise.
19339         (sra_insert_after): Likewise.
19340         (sra_init_cache): Likewise.
19341         (insert_edge_copies_seq): Made static and moved upwards.
19342
19343         * tree-complex.c (extract_component): Added VIEW_CONVERT_EXPR switch
19344         case.
19345
19346         * tree-flow-inline.h (contains_view_convert_expr_p): New function.
19347
19348         * ipa-prop.c (get_ssa_def_if_simple_copy): New function.
19349         (determine_cst_member_ptr): Call get_ssa_def_if_simple_copy to skip
19350         simple copies.
19351
19352 2009-05-20  Richard Guenther  <rguenther@suse.de>
19353
19354         * expr.c (expand_expr_real_1): Avoid calling do_store_flag
19355         with mismatched comparison modes.
19356
19357 2009-05-20  Ramana Radhakrishnan  <ramana.radhakrishnan@arm.com>
19358
19359         * config/arm/arm.md (*arm_iorsi3): Refactored for only ARM.
19360         (peephole ior (reg, int) -> mov, ior): Refactored for only ARM.
19361         * config/arm/thumb2.md (*thumb_andsi_not_shiftsi_si): Allow bic
19362         with shifts for Thumb2.
19363         (orsi_notsi): New for orn.
19364         (*thumb_orsi_notshiftsi_si): Allow orn with shifts.
19365         (*thumb2_iorsi3): Rewrite support for iorsi for Thumb2.
19366         * config/arm/arm.c (const_ok_for_op): Split case for IOR for Thumb2.
19367         (arm_gen_constant): Set can_invert for IOR and Thumb2, Add comments.
19368         Don't invert remainder for IOR.
19369
19370 2009-05-19  Zdenek Dvorak  <ook@ucw.cz>
19371
19372         PR tree-optimization/40087
19373         * tree-ssa-loop-niter.c (number_of_iterations_ne_max,
19374         number_of_iterations_ne): Rename never_infinite argument.
19375         (number_of_iterations_lt_to_ne, number_of_iterations_lt,
19376         number_of_iterations_le): Handle pointer-type ivs when
19377         exit_must_be_taken is false.
19378         (number_of_iterations_cond):  Do not always assume that
19379         exit_must_be_taken if the control variable is a pointer.
19380
19381 2009-05-19  Andrew Pinski  <andrew_pinski@playstation.sony.com>
19382
19383         * c-typeck.c (build_binary_op): Allow % on integal vectors.
19384         * doc/extend.texi (Vector Extension): Document that % is allowed too.
19385
19386 2009-05-19  H.J. Lu  <hongjiu.lu@intel.com>
19387
19388         * config/i386/i386.c (ix86_avoid_jump_mispredicts): Check
19389         ASM_OUTPUT_MAX_SKIP_PAD instead of ASM_OUTPUT_MAX_SKIP_ALIGN.
19390
19391 2009-05-19  Manuel López-Ibáñez  <manu@gcc.gnu.org>
19392
19393         PR c/40172
19394         * c.opt (Wlogical-op): Disabled by default.
19395         * c-opt (c_common_post_options): Do not enable Wlogical-op with
19396         Wextra.
19397         * doc/invoke.texi (Wlogical-op): Likewise.
19398
19399 2009-05-19  Eric Botcazou  <ebotcazou@adacore.com>
19400
19401         * tree-scalar-evolution.c (follow_ssa_edge_expr) <NOP_EXPR>: Turn
19402         into CASE_CONVERT.
19403         <PLUS_EXPR>: Strip useless type conversions instead of type nops.
19404         Propagate the type of the first operand.
19405         <ASSERT_EXPR>: Simplify.
19406         (follow_ssa_edge_in_rhs): Use gimple_expr_type to get the type.
19407         Rewrite using the RHS code as discriminant.
19408         <NOP_EXPR>: Turn into CASE_CONVERT.
19409         <PLUS_EXPR>: Propagate the type of the first operand.
19410
19411 2009-05-19  Steve Ellcey  <sje@cup.hp.com>
19412
19413         * config/ia64/ia64-protos.h (ia64_dconst_0_5): New.
19414         (ia64_dconst_0_375): New.
19415         * config/ia64/ia64.c (ia64_override_options): Remove
19416         -minline-sqrt-min-latency warning.
19417         (ia64_dconst_0_5_rtx, ia64_dconst_0_5): New.
19418         (ia64_dconst_0_375_rtx, ia64_dconst_0_375): New
19419         * config/ia64/ia64.md (*sqrt_approx): Remove.
19420         (sqrtsf2): Remove #if 0.
19421         (sqrtsf2_internal_thr): Rewrite and move to div.md.
19422         (sqrtdf): Remove assert.
19423         (sqrtdf2_internal_thr): Rewrite and move to div.md.
19424         (sqrtxf2): Remove #if 0.
19425         (sqrtxf2_internal_thr): Rewrite and move to div.md.
19426         * div.md (sqrt_approx_rf): New.
19427         (sqrtsf2_internal_thr): New implementation.
19428         (sqrtsf2_internal_lat): New.
19429         (sqrtdf2_internal_thr: New implementation.
19430         (sqrtxf2_internal): New implementation.
19431
19432 2009-05-19  Francois-Xavier Coudert  <fxcoudert@gmail.com>
19433             Hans-Peter Nilsson  <hp@axis.com>
19434
19435         * defaults.h (UINT_FAST64_TYPE, INTPTR_TYPE, UINTPTR_TYPE)
19436         (WCHAR_TYPE, MODIFIED_WCHAR_TYPE, PTRDIFF_TYPE, WINT_TYPE)
19437         (INTMAX_TYPE, UINTMAX_TYPE, SIG_ATOMIC_TYPE, INT8_TYPE, INT16_TYPE)
19438         (INT32_TYPE, INT64_TYPE, UINT8_TYPE, UINT16_TYPE, UINT32_TYPE)
19439         (UINT64_TYPE, INT_LEAST8_TYPE, INT_LEAST16_TYPE, INT_LEAST32_TYPE)
19440         (INT_LEAST64_TYPE, UINT_LEAST8_TYPE, UINT_LEAST16_TYPE)
19441         (UINT_LEAST32_TYPE, UINT_LEAST64_TYPE, INT_FAST8_TYPE)
19442         (INT_FAST16_TYPE, INT_FAST32_TYPE, INT_FAST64_TYPE)
19443         (UINT_FAST8_TYPE, UINT_FAST16_TYPE, UINT_FAST32_TYPE)
19444         (SIZE_TYPE, PID_TYPE, CHAR16_TYPE, CHAR32_TYPE): Move defaults here...
19445         * c-common.c: ...from here.
19446
19447 2009-05-19  Manuel López-Ibáñez  <manu@gcc.gnu.org>
19448
19449         * c-common.c (warn_logical_operator): Remove unnecessary conditionals.
19450
19451 2009-05-19  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
19452
19453         * builtins.c (do_mpc_arg1): Separate MPFR/MPC C rounding types.
19454
19455 2009-05-19  Ben Elliston  <bje@au.ibm.com>
19456
19457         * unwind-dw2-fde.c (fde_unencoded_compare): Replace type punning
19458         assignments with memcpy calls.
19459         (add_fdes): Likewise.
19460         (binary_search_unencoded_fdes): Likewise.
19461         (linear_search_fdes): Eliminate type puns.
19462
19463 2009-05-19  Richard Guenther  <rguenther@suse.de>
19464
19465         * tree-ssa-forwprop.c (forward_propagate_addr_expr_1): Do
19466         not falsely claim to have propagated into all uses.
19467
19468 2009-05-19  Ben Elliston  <bje@au.ibm.com>
19469
19470         * doc/invoke.texi (C Dialect Options): Update OpenMP specification
19471         version to v3.0.
19472
19473 2009-05-18  Kaz Kojima  <kkojima@gcc.gnu.org>
19474
19475         * config/sh/sh-protos.h (sh_legitimate_address_p): Remove.
19476         * config/sh/sh.c (sh_legitimate_address_p): Make static.
19477         (TARGET_LEGITIMATE_ADDRESS_P): New.
19478         * config/sh/sh.h (GO_IF_LEGITIMATE_ADDRESS): Delete.
19479         * config/sh/sh.md: Clean up references to GO_IF_LEGITIMATE_ADDRESS.
19480
19481 2009-05-18  Dodji Seketeli  <dodji@redhat.com>
19482
19483         PR debug/40109
19484         * dwarf2out.c (gen_type_die_with_usage): Generate the DIE as a
19485         child of the containing namespace's DIE.
19486
19487 2009-05-18  Adam Nemet  <anemet@caviumnetworks.com>
19488
19489         * config/mips/mips.md (*zero_extend<GPR:mode>_trunc<SHORT:mode>,
19490         *zero_extendhi_truncqi):  Move after the zero_extend patterns.
19491         (*extenddi_truncate<mode>, *extendsi_truncate<mode>): Move after the
19492         extend patterns.
19493
19494 2009-05-18  H.J. Lu  <hongjiu.lu@intel.com>
19495
19496         PR target/39942
19497         * config/i386/i386.c (ix86_avoid_jump_misspredicts): Replace
19498         gen_align with gen_pad.
19499         (ix86_reorg): Check ASM_OUTPUT_MAX_SKIP_PAD instead of
19500         #ifdef ASM_OUTPUT_MAX_SKIP_ALIGN.
19501
19502         * config/i386/i386.h (ASM_OUTPUT_MAX_SKIP_PAD): New.
19503         * config/i386/x86-64.h (ASM_OUTPUT_MAX_SKIP_PAD): Likewise.
19504
19505         * config/i386/i386.md (align): Renamed to ...
19506         (pad): This.  Replace ASM_OUTPUT_MAX_SKIP_ALIGN with
19507         ASM_OUTPUT_MAX_SKIP_PAD.
19508
19509 2009-05-18  Andreas Schwab  <schwab@linux-m68k.org>
19510
19511         * config.gcc: Fix variable syntax.
19512
19513         PR target/39531
19514         * config/m68k/m68k.c (output_andsi3): Mask off sign bit copies
19515         before calling exact_log2.
19516         (output_iorsi3): Likewise.
19517         (output_xorsi3): Likewise.
19518
19519 2009-05-18  Kaz Kojima  <kkojima@gcc.gnu.org>
19520
19521         * config/sh/sh.c (expand_cbranchdi4): Use a scratch register
19522         for the none zero constant operand except for EQ and NE
19523         comprisons even when the first operand is R0.
19524
19525 2009-05-18  Andreas Krebbel  <krebbel1@de.ibm.com>
19526
19527         * config/s390/2064.md: Remove trailing whitespaces.
19528         * config/s390/2084.md: Likewise.
19529         * config/s390/constraints.md: Likewise.
19530         * config/s390/fixdfdi.h: Likewise.
19531         * config/s390/libgcc-glibc.ver: Likewise.
19532         * config/s390/s390-modes.def: Likewise.
19533         * config/s390/s390-protos.h: Likewise.
19534         * config/s390/s390.c: Likewise.
19535         * config/s390/s390.h: Likewise.
19536         * config/s390/s390.md: Likewise.
19537         * config/s390/tpf-unwind.h: Likewise.
19538
19539 2009-05-18  Maxim Kuvyrkov  <maxim@codesourcery.com>
19540
19541         * config/m68k/m68k.c (m68k_legitimize_address): Fix typo in signature.
19542
19543 2009-05-18  Maxim Kuvyrkov  <maxim@codesourcery.com>
19544
19545         M68K TLS support.
19546         * configure.ac (m68k-*-*): Check if binutils support TLS.
19547         * configure: Regenerate.
19548         * config/m68k/predicates.md (symbolic_operand): Extend comment.
19549         * config/m68k/constraints.md (Cu): New constraint.
19550         * config/m68k/m68k.md (UNSPEC_GOTOFF): Remove.
19551         (UNSPEC_RELOC16, UNSPEC_RELOC32): New constants.
19552         (movsi): Handle TLS symbols.
19553         (addsi3_5200): Handle XTLS symbols, indent.
19554         * config/m68k/m68k-protos.h (m68k_legitimize_tls_address): Declare.
19555         (m68k_tls_reference_p): Declare.
19556         (m68k_legitimize_address): Declare.
19557         (m68k_unwrap_symbol): Declare.
19558         * config/m68k/m68k.opt (mxtls): New option.
19559         * config/m68k/m68k.c (ggc.h): Include.
19560         (m68k_output_dwarf_dtprel): Implement hook.
19561         (TARGET_HAVE_TLS, TARGET_ASM_OUTPUT_DWARF_DTPREL): Define.
19562         (m68k_expand_prologue): Load GOT pointer when function needs it.
19563         (m68k_illegitimate_symbolic_constant_p): Handle TLS symbols.
19564         (m68k_legitimate_constant_address_p): Same.
19565         (m68k_decompose_address): Handle TLS references.
19566         (m68k_get_gp): New static function.
19567         (enum m68k_reloc): New contants.
19568         (TLS_RELOC_P): New macro.
19569         (m68k_wrap_symbol): New static function.
19570         (m68k_unwrap_symbol): New function.
19571         (m68k_final_prescan_insn_1): New static function.
19572         (m68k_final_prescan_insn): New function.
19573         (m68k_move_to_reg, m68k_wrap_symbol_into_got_ref): New static
19574         functions.
19575         (legitimize_pic_address): Handle TLS references..
19576         (m68k_tls_get_addr, m68k_get_tls_get_addr)
19577         (m68k_libcall_value_in_a0_p)
19578         (m68k_call_tls_get_addr, m68k_read_tp, m68k_get_m68k_read_tp)
19579         (m68k_call_m68k_read_tp): Helper variables and functions for ...
19580         (m68k_legitimize_tls_address): Handle TLS references.
19581         (m68k_tls_symbol_p, m68k_tls_reference_p_1, m68k_tls_reference_p):
19582         New functions.
19583         (m68k_legitimize_address): Handle TLS symbols.
19584         (m68k_get_reloc_decoration): New static function.
19585         (m68k_output_addr_const_extra): Handle UNSPEC_RELOC16 and
19586         UNSPEC_RELOC32.
19587         (m68k_output_dwarf_dtprel): Implement hook.
19588         (print_operand_address): Handle UNSPEC_RELOC16 adn UNSPEC_RELOC32.
19589         (m68k_libcall_value): Return result in A0 instead of D0 when asked by
19590         m68k_call_* routines.
19591         (sched_attr_op_type): Handle TLS symbols.
19592         (gt-m68k.h): Include.
19593         * config/m68k/m68k.h (FINAL_PRESCAN_INSN): Define.
19594         (LEGITIMATE_PIC_OPERAND_P): Support TLS.
19595
19596 2009-05-18  Martin Jambor  <mjambor@suse.cz>
19597
19598         * ipa-prop.c (ipa_check_stmt_modifications): Removed.
19599         (visit_store_addr_for_mod_analysis): New function.
19600         (ipa_detect_param_modifications): Use walk_stmt_load_store_addr_ops.
19601         (determine_cst_member_ptr): Use gimple_assign_single_p.
19602         (ipa_get_stmt_member_ptr_load_param): Use gimple_assign_single_p.
19603         (ipa_analyze_call_uses): Use !gimple_assign_rhs2 rather than number of
19604         operands.  Don't check number of operands of a NOP_EXPR.
19605
19606 2009-05-18  Eric Fisher  <joefoxreal@gmail.com>
19607
19608         * doc/tree-ssa.texi (SSA Operands): Fix a mistake.
19609
19610 2009-05-17  Manuel López-Ibáñez  <manu@gcc.gnu.org>
19611
19612         PR c/40172
19613         * c-common.c (warn_logical_operator): Don't warn if one of
19614         expression isn't always true or false.
19615
19616 2009-05-17  Kai Tietz  <kai.tietz@onevision.com>
19617
19618         * config/i386/biarch32.h: New file.
19619         * config.gcc: Add for target i386-w64-* the biarch32.h to tm_file.
19620
19621 2009-05-17  Adam Nemet  <anemet@caviumnetworks.com>
19622
19623         * config/mips/mips.md (*zero_extend<mode>_trunchi,
19624         *zero_extend<mode>_truncqi): Merge these into ...
19625         (*zero_extend<GPR:mode>_trunc<SHORT:mode>): ... this new pattern.
19626         Name the pattern following this as *zero_extendhi_truncqi.
19627
19628 2009-05-16  Brad Lucier  <lucier@math.purdue.edu>
19629
19630         PR middle-end/39301
19631         * hwint.h: Add macro HOST_WIDEST_INT_PRINT.
19632         * bitmap.c (bitmap_descriptor): Make fields HOST_WIDEST_INT.
19633         (output_info): Make field HOST_WIDEST_INT.
19634         (print_statistics): Use HOST_WIDEST_INT_PRINT.
19635         (dump_bitmat_statistics): Same.
19636
19637 2009-05-16  Francois-Xavier Coudert  <fxcoudert@gmail.com>
19638
19639         * config.gcc (use_gcc_stdint):  Set to wrap.
19640         * config/darwin.h (SIG_ATOMIC_TYPE, INT8_TYPE, INT16_TYPE,
19641         INT32_TYPE, INT64_TYPE, UINT8_TYPE, UINT16_TYPE, UINT32_TYPE,
19642         UINT64_TYPE, INT_LEAST8_TYPE, INT_LEAST16_TYPE, INT_LEAST32_TYPE,
19643         INT_LEAST64_TYPE, UINT_LEAST8_TYPE, UINT_LEAST16_TYPE,
19644         UINT_LEAST32_TYPE, UINT_LEAST64_TYPE, INT_FAST8_TYPE,
19645         INT_FAST16_TYPE, INT_FAST32_TYPE, INT_FAST64_TYPE,
19646         UINT_FAST8_TYPE, UINT_FAST16_TYPE, UINT_FAST32_TYPE,
19647         UINT_FAST64_TYPE, INTPTR_TYPE, UINTPTR_TYPE): Define.
19648
19649 2009-05-16  Joseph Myers  <joseph@codesourcery.com>
19650
19651         * config.gcc (mips*-*-*): Support arch_32, arch_64, tune_32 and
19652         tune_64.
19653         * config/mips/mips.h (MIPS_ABI_DEFAULT, MULTILIB_ABI_DEFAULT):
19654         Move definitions earlier.
19655         (OPT_ARCH64, OPT_ARCH32): Define.
19656         (OPTION_DEFAULT_SPECS): Add entries for arch_32, arch_64, tune_32
19657         and tune_64.
19658
19659 2009-05-16  Richard Earnshaw  <rearnsha@arm.com>
19660
19661         PR target/40153
19662         * arm.md (cstoresi_nltu_thumb1): Use a neg of ltu as the pattern name
19663         implies.
19664
19665 2009-05-16  Richard Earnshaw  <rearnsha@arm.com>
19666
19667         * arm.md (movdi2): Copy non-reg values to DImode registers.
19668
19669 2009-05-16  Jakub Jelinek  <jakub@redhat.com>
19670
19671         PR target/39942
19672         * final.c (label_to_max_skip): New function.
19673         (label_to_alignment): Only use LABEL_TO_ALIGNMENT if
19674         CODE_LABEL_NUMBER <= max_labelno.
19675         * output.h (label_to_max_skip): New prototype.
19676         * config/i386/i386.c (ix86_avoid_jump_misspredicts): Renamed to...
19677         (ix86_avoid_jump_mispredicts): ... this.  Don't define if
19678         ASM_OUTPUT_MAX_SKIP_ALIGN isn't defined.  Update comment.
19679         Handle CODE_LABELs with >= 16 byte alignment or with
19680         max_skip == (1 << align) - 1.
19681         (ix86_reorg): Don't call ix86_avoid_jump_mispredicts if
19682         ASM_OUTPUT_MAX_SKIP_ALIGN isn't defined.
19683
19684         PR target/39942
19685         * config/i386/x86-64.h (ASM_OUTPUT_MAX_SKIP_ALIGN): Don't emit second
19686         .p2align 3 if MAX_SKIP is smaller than 7.
19687         * config/i386/linux.h (ASM_OUTPUT_MAX_SKIP_ALIGN): Likewise.
19688
19689 2009-05-15  Ian Lance Taylor  <iant@google.com>
19690
19691         * alias.c (struct alias_set_entry_d): Rename from struct
19692         alias_set_entry.  Change all uses.
19693         * except.c (struct call_site_record_d): Rename from struct
19694         call_site_record.  Change all uses.
19695         * except.h (struct eh_region_d): Rename from struct eh_region.
19696         Change all uses.
19697         * gcse.c (struct hash_table_d): Rename from struct hash_table.
19698         Change all uses.
19699         * graphite.c (struct ivtype_map_elt_d): Rename fromstruct
19700         ivtype_map_elt.  Change all uses.
19701         (struct rename_map_elt_d): Rename fromstruct rename_map_elt.
19702         Change all uses.
19703         (struct ifsese_d): Rename fromstruct ifsese.  Change all uses.
19704         * graphite.h (struct name_tree_d): Rename from struct name_tree.
19705         Change all uses.
19706         (struct sese_d): Rename from struct sese.  Change all uses.
19707         * omega.h (struct eqn_d): Rename from struct eqn.  Change all uses.
19708         (struct omega_pb_d): Rename from struct omega_pb.  Change all uses.
19709         * optabs.h (struct optab_d): Rename from struct optab.  Change all
19710         uses.
19711         (struct convert_optab_d): Rename from struct convert_optab.
19712         Change all uses.
19713         * tree-pass.h (struct ipa_opt_pass_d): Rename fromstruct
19714         ipa_opt_pass.  Change all uses.
19715         * tree-predcom.c (struct dref_d): Rename from struct dref.  Change
19716         all uses.
19717
19718         * c-decl.c (pushtag): If -Wc++-compat, warn if the tag is already
19719         defined as a typedef.
19720         (grokdeclarator): If -Wc++-compat, warn if a typedef is already
19721         defined as a tag.
19722
19723 2009-05-15  Manuel López-Ibáñez  <manu@gcc.gnu.org>
19724
19725         PR 16302
19726         * fold-const.c (make_range,build_range_check,merge_ranges): Move
19727         declaration to...
19728         (merge_ranges): Returns bool.
19729         * tree.h (make_range): .. to here.
19730         (build_range_check): Likewise.
19731         (merge_ranges): Likewise. Renamed from merge_ranges.
19732         * c-typeck.c (parser_build_binary_op): Update calls to
19733         warn_logical_operator.
19734         * c-common.c (warn_logical_operator): Add new warning.
19735         * c-common.h (warn_logical_operator): Update declaration.
19736
19737 2009-05-15  Manuel López-Ibáñez  <manu@gcc.gnu.org>
19738
19739         * ira-conflicts.c (add_insn_allocno_copies): Fix wrong conditional.
19740
19741 2009-05-15  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
19742
19743         * doc/install.texi: Document MPC requirements, flags etc.
19744
19745         * builtins.c (do_mpc_arg1, fold_builtin_ccos): New.
19746         (fold_builtin_cexp): Ensure we get a complex REAL_TYPE.
19747         Evaluate constant arguments.
19748         (fold_builtin_carg): Ensure we get a complex REAL_TYPE.
19749         (fold_builtin_1): Likewise, also evaluate constant arguments.
19750         Remove superfluous break.
19751         (do_mpc_ckconv): New.
19752         * real.h: Include mpc.h.
19753         * toplev.c (print_version): Output MPC version info if available.
19754
19755 2009-05-15  Sandra Loosemore  <sandra@codesourcery.com>
19756
19757         * fold-const.c (fold_convert_const_real_from_real): Check for overflow.
19758
19759 2009-05-15  H.J. Lu  <hongjiu.lu@intel.com>
19760
19761         * config/i386/i386.c (ix86_reorg): Call optimize_function_for_speed_p
19762         only once.
19763
19764 2009-05-15  Jan Hubicka  <jh@suse.cz>
19765
19766         * doc/invoke.texi (max-early-inliner-iterations): New flag.
19767         * ipa-inline.c (enum inlining_mode): New INLINE_SIZE_NORECURSIVE.
19768         (try_inline): Fix return value.
19769         (cgraph_decide_inlining_incrementally): Honor new value.
19770         (cgraph_early_inlining): Handle indirect inlining.
19771         * params.def (PARAM_EARLY_INLINER_MAX_ITERATIONS): New.
19772
19773 2009-05-15  Jan Hubicka  <jh@suse.cz>
19774
19775         * cgraph.h (struct cgraph_node): Add finalized_by_frotnend flag.
19776         * cgraphunit.c (cgraph_finalize_function): Set it.
19777         (cgraph_expand_function): Use it.
19778
19779 2009-05-15  Sandra Loosemore  <sandra@codesourcery.com>
19780
19781         * real.c (encode_ieee_half): Define.
19782         (decode_ieee_half): Define.
19783         (ieee_half_format): Define.
19784         (arm_half_format): Define.
19785         * real.h (ieee_half_format): Declare.
19786         (arm_half_format): Declare.
19787
19788 2009-05-15  Sandra Loosemore  <sandra@codesourcery.com>
19789
19790         * optabs.c (prepare_float_lib_cmp):  Test that the comparison,
19791         swapped, and reversed optabs exist before trying to use them.
19792
19793 2009-05-15  Paul Brook  <paul@codesourcery.com>
19794             Sandra Loosemore  <sandra@codesourcery.com>
19795
19796         * config/arm/arm.c (neon_vector_mem_operand): Handle element/structure
19797         loads.  Allow PRE_DEC.
19798         (output_move_neon): Handle PRE_DEC.
19799         (arm_print_operand): Add 'A' for neon structure loads.
19800         * config/arm/arm-protos.h (neon_vector_mem_operand): Update prototype.
19801         * config/arm/neon.md (neon_mov): Update comment.
19802         * config/arm/constraints.md (Un, Us): Update neon_vector_mem_operand
19803         calls.
19804         (Um): New constraint.
19805
19806 2009-05-15  Jan Hubicka  <jh@suse.cz>
19807
19808         Revert the following patch until testsuite fallout is fixed:
19809         * cgraph.c (dump_cgraph_node): Dump size/time/benefit.
19810         * cgraph.h (struct inline_summary): New filed self_wize,
19811         size_inlining_benefit, self_time and time_inlining_benefit.
19812         (struct cgraph_global_info): Replace insns by time ans size fields.
19813         * ipa-cp (ipcp_cloning_candidate_p): Base estimate on size
19814         (ipcp_estimate_growth, ipcp_insert_stage): Likewise.
19815         (ipcp_update_callgraph): Do not touch function bodies.
19816         * ipa-inline.c: Include except.h
19817         (MAX_TIME): New constant.
19818         (overall_insns): Remove
19819         (overall_size, max_benefit): New static variables.
19820         (cgraph_estimate_time_after_inlining): New function.
19821         (cgraph_estimate_size_after_inlining): Rewrite using benefits.
19822         (cgraph_clone_inlined_nodes): Update size.
19823         (cgraph_mark_inline_edge): Update size.
19824         (cgraph_estimate_growth): Use size info.
19825         (cgraph_check_inline_limits): Check size.
19826         (cgraph_default_inline_p): Likewise.
19827         (cgraph_edge_badness): Compute badness based on benefit and size cost.
19828         (cgraph_decide_recursive_inlining): Check size.
19829         (cgraph_decide_inlining_of_small_function): Update size; dump sizes
19830         and times.
19831         (cgraph_decide_inlining): Likewise.
19832         (cgraph_decide_inlining_incrementally): Likewise; honor
19833         PARAM_EARLY_INLINING_INSNS.
19834         (likely_eliminated_by_inlining_p): New predicate.
19835         (estimate_function_body_sizes): New function.
19836         (compute_inline_parameters): Use it.
19837         * except.c (must_not_throw_labels): New function.
19838         * except.h (must_not_throw_labels): Declare.
19839         * tree-inline.c (init_inline_once): Kill inlining_weigths
19840         * tree-ssa-structalias.c: Avoid uninitialized warning.
19841         * params.def (PARAM_MAX_INLINE_INSNS_SINGLE): Reduce to 300.
19842         (PARAM_MAX_INLINE_INSNS_AUTO): Reduce to 60.
19843         (PARAM_INLINE_CALL_COST): Remove.
19844         (PARAM_EARLY_INLINING_INSNS): New.
19845
19846 2009-05-15  Richard Guenther  <rguenther@suse.de>
19847
19848         * tree-ssa-pre.c (eliminate): Use TODO_update_ssa_only_virtuals,
19849         not TODO_update_ssa.
19850
19851 2009-05-15  Richard Guenther  <rguenther@suse.de>
19852
19853         PR tree-optimization/39999
19854         * gimple.h (gimple_expr_type): Use the expression type looking
19855         through useless conversions.
19856         * tree-ssa-sccvn.c (vn_nary_op_lookup_stmt): Use gimple_expr_type.
19857         (vn_nary_op_insert_stmt): Likewise.
19858         (simplify_binary_expression): Likewise.
19859
19860 2009-05-15  Richard Guenther  <rguenther@suse.de>
19861
19862         * common.opt (-ftree-forwprop, -ftree-phiprop, -ftree-pta):
19863         New options, enabled by default.
19864         * doc/invoke.texi (-ftree-forwprop, -ftree-phiprop, -ftree-pta):
19865         Document.
19866         * tree-ssa-forwprop.c (gate_forwprop): Use flag_tree_forwprop.
19867         * tree-ssa-phiprop.c (gate_phiprop): Use flag_tree_phiprop.
19868         * tree-ssa-structalias.c (gate_tree_pta): New function.
19869         (pass_build_alias): Use it.
19870
19871 2009-05-15  Joseph Myers  <joseph@codesourcery.com>
19872
19873         * tree-ssa-forwprop.c (forward_propagate_addr_expr_1): Also
19874         recurse on an invariant address if a conversion from a pointer
19875         type to a wider integer type is involved.
19876
19877 2009-05-15  Jan Hubicka  <jh@suse.cz>
19878
19879         * cgraph.c (dump_cgraph_node): Dump size/time/benefit.
19880         * cgraph.h (struct inline_summary): New filed self_wize,
19881         size_inlining_benefit, self_time and time_inlining_benefit.
19882         (struct cgraph_global_info): Replace insns by time ans size fields.
19883         * ipa-cp (ipcp_cloning_candidate_p): Base estimate on size
19884         (ipcp_estimate_growth, ipcp_insert_stage): Likewise.
19885         (ipcp_update_callgraph): Do not touch function bodies.
19886         * ipa-inline.c: Include except.h
19887         (MAX_TIME): New constant.
19888         (overall_insns): Remove
19889         (overall_size, max_benefit): New static variables.
19890         (cgraph_estimate_time_after_inlining): New function.
19891         (cgraph_estimate_size_after_inlining): Rewrite using benefits.
19892         (cgraph_clone_inlined_nodes): Update size.
19893         (cgraph_mark_inline_edge): Update size.
19894         (cgraph_estimate_growth): Use size info.
19895         (cgraph_check_inline_limits): Check size.
19896         (cgraph_default_inline_p): Likewise.
19897         (cgraph_edge_badness): Compute badness based on benefit and size cost.
19898         (cgraph_decide_recursive_inlining): Check size.
19899         (cgraph_decide_inlining_of_small_function): Update size; dump sizes
19900         and times.
19901         (cgraph_decide_inlining): Likewise.
19902         (cgraph_decide_inlining_incrementally): Likewise; honor
19903         PARAM_EARLY_INLINING_INSNS.
19904         (likely_eliminated_by_inlining_p): New predicate.
19905         (estimate_function_body_sizes): New function.
19906         (compute_inline_parameters): Use it.
19907         * except.c (must_not_throw_labels): New function.
19908         * except.h (must_not_throw_labels): Declare.
19909         * tree-inline.c (init_inline_once): Kill inlining_weigths
19910         * tree-ssa-structalias.c: Avoid uninitialized warning.
19911         * params.def (PARAM_MAX_INLINE_INSNS_SINGLE): Reduce to 300.
19912         (PARAM_MAX_INLINE_INSNS_AUTO): Reduce to 60.
19913         (PARAM_INLINE_CALL_COST): Remove.
19914         (PARAM_EARLY_INLINING_INSNS): New.
19915         doc/invoke.texi (max-inline-insns-auto, early-inlining-insns): Update.
19916         (inline-call-cost): Remove.
19917         (early-inlining-insns): New.
19918
19919 2009-05-15  Eric Botcazou  <ebotcazou@adacore.com>
19920
19921         * dbxout.c (dbxout_range_type): Add LOW and HIGH parameters.  Use them
19922         for bounds.
19923         (print_int_cst_bounds_in_octal_p): Likewise.
19924         (dbxout_type): Adjust calls to above functions.  Be prepared to deal
19925         with subtypes.
19926         * dwarf2out.c (base_type_die): Likewise.
19927         (is_subrange_type): Delete.
19928         (subrange_type_die): Add LOW and HIGH parameters.  Use them for bounds.
19929         (modified_type_die): Call subrange_type_for_debug_p on subtypes.
19930         * fold-const.c (fold_truth_not_expr) <CONVERT_EXPR>: Do not strip it
19931         if the destination type is boolean.
19932         (build_range_check): Do not special-case subtypes.
19933         (fold_sign_changed_comparison): Likewise.
19934         (fold_unary): Likewise.
19935         * langhooks-def.h (LANG_HOOKS_GET_SUBRANGE_BOUNDS): Define.
19936         (LANG_HOOKS_FOR_TYPES_INITIALIZER): Add LANG_HOOKS_GET_SUBRANGE_BOUNDS.
19937         * langhooks.h (lang_hooks_for_types): Add get_subrange_bounds.
19938         * tree.c (subrange_type_for_debug_p): New predicate based on the
19939         former is_subrange_type.
19940         * tree.h (subrange_type_for_debug_p): Declare.
19941         * tree-chrec.c (avoid_arithmetics_in_type_p): Delete.
19942         (convert_affine_scev): Remove call to above function.
19943         (chrec_convert_aggressive): Likewise.
19944         * tree-ssa.c (useless_type_conversion_p_1): Do not specifically return
19945         false for conversions involving subtypes.
19946         * tree-vrp.c (vrp_val_max): Do not special-case subtypes.
19947         (vrp_val_min): Likewise.
19948         (needs_overflow_infinity): Likewise.
19949         (extract_range_from_unary_expr): Likewise.
19950
19951 2009-05-15  Paolo Bonzini  <bonzini@gnu.org>
19952
19953         * config/frv/frv.h: Clean up references to GO_IF_LEGITIMATE_ADDRESS.
19954         * config/frv/frv.c: Likewise.
19955         * config/s390/s390.c: Likewise.
19956         * config/sparc/sparc.h: Likewise.
19957         * config/i386/i386.h: Likewise.
19958         * config/i386/i386.c: Likewise.
19959         * config/crx/crx.c: Likewise.
19960         * config/m68hc11/m68hc11.h: Likewise.
19961         * config/iq2000/iq2000.c: Likewise.
19962         * config/mn10300/mn10300.h: Likewise.
19963         * config/mn10300/mn10300.c: Likewise.
19964         * config/m68k/m68k.c: Likewise.
19965         * config/rs6000/rs6000.c: Likewise.
19966         * config/rs6000/xcoff.h: Likewise.
19967         * config/rs6000/linux64.h: Likewise.
19968         * config/rs6000/sysv4.h: Likewise.
19969         * config/score/score3.c: Likewise.
19970         * config/score/score7.c: Likewise.
19971         * config/score/score.c: Likewise.
19972         * config/arm/arm.md: Likewise.
19973         * config/mips/mips.c: Likewise.
19974         * config/mips/mips.md: Likewise.
19975         * config/bfin/bfin.h: Likewise.
19976         * config/pa/pa.c: Likewise.
19977         * config/pa/constraints.md: Likewise.
19978
19979         * config/pdp11/pdp11-protos.h (legitimate_address_p): Delete.
19980         * config/pdp11/pdp11.c (legitimate_address_p): Delete.
19981         * config/pdp11/pdp11.h: Use memory_address_p instead.
19982
19983 2009-05-14  Ian Lance Taylor  <iant@google.com>
19984
19985         * passes.c (finish_optimization_passes): Change i to int.
19986         * plugin.c (plugins_active_p): Change event to int.
19987         (dump_active_plugins): Likewise.
19988         * reginfo.c (invalid_mode_change_p): Change to to unsigned int.
19989         Add cast.
19990         * tree.c (tree_range_check_failed): Change c to unsigned int.
19991         (omp_clause_range_check_failed): Likewise.
19992         (build_common_builtin_nodes): Change mode to int.  Add cast.
19993         * config/ia64/ia64.c (is_emitted): Change r to unsigned int.
19994         (ia64_hard_regno_rename_ok, ia64_eh_uses): Likewise.
19995
19996         * c-typeck.c (build_unary_op): If -Wc++-compat, warn about using
19997         ++ or -- with a variable of enum type.
19998
19999 2009-05-14  Steven Bosscher  <steven@gcc.gnu.org>
20000
20001         PR driver/40144
20002         * opts.c (common_handle_option): Add OPT_fcse_skip_blocks as a no-op.
20003
20004 2009-05-14  Steven Bosscher  <steven@gcc.gnu.org>
20005
20006         * store-motion.c: Do not include params.h
20007         * Makefile.in: Fix dependencies for various files.
20008
20009 2009-05-14  Steven Bosscher  <steven@gcc.gnu.org>
20010
20011         * auto-inc-dec.c: Fix pass description, remove apparent
20012         accidental duplication.
20013
20014 2009-05-14  H.J. Lu  <hongjiu.lu@intel.com>
20015
20016         PR middle-end/40147
20017         * ipa-utils.h (memory_identifier_string): Moved to ...
20018         * tree.h (memory_identifier_string): Here.  Add GTY(()).
20019
20020 2009-05-14  Paolo Bonzini  <bonzini@gnu.org>
20021
20022         * doc/tm.texi (TARGET_LEGITIMATE_ADDRESS_P): Refer mainly to this
20023         in the former documentation of...
20024         (GO_IF_LEGITIMATE_ADDRESS): ... this.
20025         * ira-conflicts.c (get_dup_num): Use address_operand.
20026         * targhooks.c (default_legitimate_address_p): New.
20027         * targhooks.h (default_legitimate_address_p): New.
20028         * reload.c (strict_memory_address_p) [!GO_IF_LEGITIMATE_ADDRESS]:
20029         Call hook.
20030         * recog.c (memory_address_p) [!GO_IF_LEGITIMATE_ADDRESS]: Call hook.
20031         * target.h (struct target): Add legitimate_address_p.
20032         * target-def.h (TARGET_LEGITIMATE_ADDRESS_P): New.
20033         (TARGET_INITIALIZER): Include it.
20034
20035         * config/alpha/alpha.h (GO_IF_LEGITIMATE_ADDRESS): Delete.
20036         * config/alpha/alpha-protos.h (alpha_legitimate_address_p): Remove.
20037         * config/alpha/alpha.c (alpha_legitimate_address_p): Make static.
20038         (TARGET_LEGITIMATE_ADDRESS_P): New.
20039
20040         * config/frv/frv.h (GO_IF_LEGITIMATE_ADDRESS): Delete.
20041         (REG_OK_STRICT_P): Delete.
20042         * config/frv/frv-protos.h (frv_legitimate_address_p): Rename to...
20043         (frv_legitimate_address_p_1): ... this.
20044         * config/frv/frv.c (frv_legitimate_address_p): Forward to...
20045         (frv_legitimate_address_p_1): ... the renamed old
20046         frv_legitimate_address_p.
20047         * config/frv/predicates.md: Adjust calls to frv_legitimate_address_p.
20048         (TARGET_LEGITIMATE_ADDRESS_P): New.
20049
20050         * config/s390/s390.h (GO_IF_LEGITIMATE_ADDRESS): Delete.
20051         * config/s390/s390-protos.h (legitimate_address_p): Remove.
20052         * config/s390/s390.c (legitimate_address_p): Rename to...
20053         (s390_legitimate_address_p): ... this, make static.
20054         (legitimize_address): Adjust call.
20055         (TARGET_LEGITIMATE_ADDRESS_P): New.
20056         * config/s390/constraints.md ("e"): Call strict_memory_address_p.
20057
20058         * config/m32c/m32c.h (GO_IF_LEGITIMATE_ADDRESS): Delete.
20059         * config/m32c/m32c-protos.h (m32c_legitimate_address_p): Remove.
20060         * config/m32c/m32c.c (m32c_legitimate_address_p): Make static.
20061         (TARGET_LEGITIMATE_ADDRESS_P): New.
20062
20063         * config/spu/spu.h (GO_IF_LEGITIMATE_ADDRESS): Delete.
20064         * config/spu/spu-protos.h (spu_legitimate_address): Remove.
20065         * config/spu/spu.c (spu_legitimate_address): Rename to...
20066         (spu_legitimate_address_p): ... this, make static.
20067         (TARGET_LEGITIMATE_ADDRESS_P): New.
20068
20069         * config/sparc/sparc.h (GO_IF_LEGITIMATE_ADDRESS): Delete.
20070         * config/sparc/sparc-protos.h (legitimate_address_p): Remove.
20071         * config/sparc/sparc.c (legitimate_address_p): Rename to...
20072         (sparc_legitimate_address_p): ... this, make static and return bool.
20073         (legitimize_address): Adjust call.
20074         (TARGET_LEGITIMATE_ADDRESS_P): New.
20075
20076         * config/i386/i386.h (GO_IF_LEGITIMATE_ADDRESS): Delete.
20077         * config/i386/i386-protos.h (legitimate_address_p): Remove.
20078         * config/i386/i386.c (legitimate_address_p): Rename to...
20079         (ix86_legitimate_address_p): ... this, make static.
20080         (constant_address_p): Move after it, adjust call.
20081         (TARGET_LEGITIMATE_ADDRESS_P): New.
20082
20083         * config/avr/avr.h (GO_IF_LEGITIMATE_ADDRESS): Delete.
20084         * config/avr/avr-protos.h (legitimate_address_p): Remove.
20085         * config/avr/avr.c (legitimate_address_p): Rename to...
20086         (avr_legitimate_address_p): ... this, make static.
20087         (legitimize_address): Adjust call.
20088         (TARGET_LEGITIMATE_ADDRESS_P): New.
20089
20090         * config/crx/crx.h (GO_IF_LEGITIMATE_ADDRESS): Delete.
20091         * config/crx/crx-protos.h (crx_legitimate_address_p): Remove.
20092         * config/crx/crx.c (crx_legitimate_address_p): Make static.
20093         (TARGET_LEGITIMATE_ADDRESS_P): New.
20094
20095         * config/xtensa/xtensa.h (GO_IF_LEGITIMATE_ADDRESS): Delete.
20096         * config/xtensa/xtensa-protos.h (xtensa_legitimate_address_p): Remove.
20097         * config/xtensa/xtensa.c (xtensa_legitimate_address_p): Make static.
20098         (TARGET_LEGITIMATE_ADDRESS_P): New.
20099
20100         * config/stormy16/stormy16.h (GO_IF_LEGITIMATE_ADDRESS): Delete.
20101         * config/stormy16/stormy16-protos.h (xstormy16_legitimate_address_p):
20102         Remove.
20103         * config/stormy16/stormy16.c (xstormy16_legitimate_address_p):
20104         Make static.
20105         (TARGET_LEGITIMATE_ADDRESS_P): New.
20106
20107         * config/m68hc11/m68hc11.h (GO_IF_LEGITIMATE_ADDRESS): Delete.
20108         * config/m68hc11/m68hc11-protos.h (m68hc11_go_if_legitimate_address):
20109         Remove.
20110         * config/m68hc11/m68hc11.c (m68hc11_go_if_legitimate_address):
20111         Rename to...
20112         (m68hc11_legitimate_address_p): ... this, make static.
20113         (go_if_legitimate_address_internal): Rename to...
20114         (m68hc11_legitimate_address_p_1): ... this.
20115         (legitimize_address): Adjust call.
20116         (TARGET_LEGITIMATE_ADDRESS_P): New.
20117
20118         * config/iq2000/iq2000.h (GO_IF_LEGITIMATE_ADDRESS): Delete.
20119         * config/iq2000/iq2000-protos.h (iq2000_legitimate_address_p): Remove.
20120         * config/iq2000/iq2000.c (iq2000_legitimate_address_p): Make static.
20121         (TARGET_LEGITIMATE_ADDRESS_P): New.
20122
20123         * config/mn10300/mn10300.h (GO_IF_LEGITIMATE_ADDRESS): Delete.
20124         * config/mn10300/mn10300-protos.h (legitimate_address_p): Remove.
20125         * config/mn10300/mn10300.c (legitimate_address_p): Rename to...
20126         (mn10300_legitimate_address_p): ... this, make static.
20127         (TARGET_LEGITIMATE_ADDRESS_P): New.
20128
20129         * config/m68k/m68k.h (GO_IF_LEGITIMATE_ADDRESS): Delete.
20130         * config/m68k/m68k-protos.h (m68k_legitimate_address_p): Remove.
20131         * config/m68k/m68k.c (m68k_legitimate_address_p): Make static.
20132         (TARGET_LEGITIMATE_ADDRESS_P): New.
20133
20134         * config/rs6000/rs6000.h (GO_IF_LEGITIMATE_ADDRESS): Delete.
20135         (REG_OK_STRICT_FLAG, REG_OK_FOR_BASE_P, REG_OK_FOR_INDEX_P): Delete.
20136         (INT_REG_OK_FOR_BASE_P, INT_REG_OK_FOR_INDEX_P): Move above.
20137         * config/rs6000/rs6000.h (GO_IF_LEGITIMATE_ADDRESS): Delete.
20138         * config/rs6000/rs6000-protos.h (rs6000_legitimate_address): Remove.
20139         * config/rs6000/rs6000.c (rs6000_legitimate_address): Rename to...
20140         (rs6000_legitimate_address_p): ... this, make static.
20141         (TARGET_LEGITIMATE_ADDRESS_P): New.
20142         (REG_MODE_OK_FOR_BASE_P): Delete.
20143         (rs6000_legitimize_reload_address): Use INT_REG_OK_FOR_BASE_P.
20144
20145         * config/picochip/picochip.h (GO_IF_LEGITIMATE_ADDRESS): Delete.
20146         * config/picochip/picochip-protos.h (picochip_legitimate_address_p):
20147         Delete.
20148         * config/picochip/picochip.c (picochip_legitimate_address_p): Make
20149         static, adjust types.
20150         (TARGET_LEGITIMATE_ADDRESS_P): New.
20151
20152         * config/score/score.h (GO_IF_LEGITIMATE_ADDRESS): Delete.
20153         * config/score/score.c (score_address_p): Rename to...
20154         (score_legitimate_address_p): ... this.
20155         (TARGET_LEGITIMATE_ADDRESS_P): New.
20156         * config/score/score3.c (score3_address_p): Rename to...
20157         (score3_legitimate_address_p): ... this.
20158         * config/score/score7.c (score7_address_p): Rename to...
20159         (score7_legitimate_address_p): ... this.
20160
20161         * config/arm/arm.h (ARM_GO_IF_LEGITIMATE_ADDRESS,
20162         THUMB2_GO_IF_LEGITIMATE_ADDRESS, THUMB1_GO_IF_LEGITIMATE_ADDRESS,
20163         GO_IF_LEGITIMATE_ADDRESS): Delete.
20164         * config/arm/arm-protos.h (thumb1_legitimate_address_p,
20165         thumb2_legitimate_address_p): Delete.
20166         (arm_legitimate_address_p): Rename to...
20167         (arm_legitimate_address_outer_p): ... this.
20168         * config/arm/constraints.md ("Uq"): Adjust call.
20169         * config/arm/predicates.md (arm_extendqisi_mem_op): Likewise.
20170         * config/arm/arm.c (arm_legitimate_address_p): New, rename old one
20171         to...
20172         (arm_legitimate_address_outer_p): ... this.
20173         (thumb1_legitimate_address_p, thumb2_legitimate_address_p): Make
20174         static.
20175         (TARGET_LEGITIMATE_ADDRESS_P): New.
20176
20177         * config/mips/mips.h (GO_IF_LEGITIMATE_ADDRESS): Delete.
20178         * config/mips/mips-protos.h (mips_legitimate_address_p): Remove.
20179         * config/mips/mips.c (mips_legitimate_address_p): ... Make static.
20180         (TARGET_LEGITIMATE_ADDRESS_P): New.
20181
20182         * config/vax/vax.h (GO_IF_LEGITIMATE_ADDRESS): Delete.
20183         * config/vax/vax-protos.h (legitimate_address_p): Remove.
20184         * config/vax/vax.c (legitimate_address_p): Rename to...
20185         (vax_legitimate_address_p): ... this, make static.
20186         (TARGET_LEGITIMATE_ADDRESS_P): New.
20187
20188         * config/h8300/h8300.h (GO_IF_LEGITIMATE_ADDRESS): Delete.
20189         * config/h8300/h8300-protos.h (h8300_legitimate_address_p): Remove.
20190         * config/h8300/h8300.c (h8300_legitimate_address_p): ... Make static.
20191         (TARGET_LEGITIMATE_ADDRESS_P): New.
20192
20193         * config/mmix/mmix.h (GO_IF_LEGITIMATE_ADDRESS): Delete.
20194         * config/mmix/mmix-protos.h (mmix_legitimize_address): Remove.
20195         * config/mmix/mmix.c (mmix_legitimate_address): Rename to...
20196         (mmix_legitimate_address_p): ... this, make static.
20197         (TARGET_LEGITIMATE_ADDRESS_P): New.
20198
20199         * config/bfin/bfin.h (GO_IF_LEGITIMATE_ADDRESS): Delete.
20200         * config/bfin/bfin-protos.h (bfin_legitimate_address_p): Remove.
20201         * config/bfin/bfin.c (bfin_legitimate_address_p): ... Make static.
20202         (TARGET_LEGITIMATE_ADDRESS_P): New.
20203
20204 2009-05-14  Paolo Bonzini  <bonzini@gnu.org>
20205
20206         * config/arm/arm.h (PROMOTE_FUNCTION_MODE): Remove handling
20207         of MODE_COMPLEX_INT.
20208
20209 2009-05-14  Rainer Orth  <ro@TechFak.Uni-Bielefeld.DE>
20210
20211         * config/alpha/alpha.c (alpha_initialize_trampoline): Change 0 to
20212         LCT_NORMAL in function call.
20213         * mips-tdump.c (print_file_desc): Add cast to enum type.
20214         * mips-tfile.c (add_ext_symbol): Add casts to enum types.
20215         (mark_stabs): Add casts to enum types.
20216         (parse_stabs_common): Add casts to enum types.
20217
20218 2009-05-13  Adam Nemet  <anemet@caviumnetworks.com>
20219
20220         * config/mips/mips.c (mips_print_operand) <REG, MEM, default>:
20221         Check for invalid values of LETTER.
20222
20223 2009-05-13  Taras Glek  <tglek@mozilla.com>
20224
20225         * attribs.c (register_attribute): moved out attribute registration
20226         into register_attribute.
20227         * doc/plugins.texi: Documented register_attribute and
20228         PLUGIN_ATTRIBUTES.
20229         * gcc-plugin.h: Added forward decl for register_attribute.
20230         * gcc-plugin.h (plugins_event): Added PLUGIN_ATTRIBUTES.
20231         * plugin.c (register_callback, invoke_plugin_callbacks): Added
20232         PLUGIN_ATTRIBUTES boilerplate.
20233
20234 2009-05-14  Dave Korn  <dave.korn.cygwin@gmail.com>
20235
20236         * config/i386/msformat-c.c (ms_printf_length_specs):  Use enumeration
20237         values even in sentinel and empty entries.
20238         (ms_printf_flag_specs):  Likewise.
20239         (ms_scanf_flag_specs):  Likewise.
20240         (ms_strftime_flag_specs):  Likewise.
20241         (ms_print_char_table):  Likewise.
20242         (ms_scan_char_table):  Likewise.
20243         (ms_time_char_table):  Likewise.
20244
20245 2009-05-13  Doug Kwan  <dougkwan@google.com>
20246
20247         * tree-ssa-sccvn.c (compare_ops): Stabilize qsort.
20248
20249 2009-05-13  Adam Nemet  <anemet@caviumnetworks.com>
20250
20251         * config/mips/mips.md (store): Add attributes for QI and HI.
20252         Update comment.
20253         (truncdisi2, truncdihi2, truncdiqi2): Merge these into ...
20254         (truncdi<mode>2): ... this new pattern.
20255
20256 2009-05-13  Brad Hards  <bradh@kde.org>
20257
20258         * Makefile.in (TEXI_GCCINT_FILES): Add plugins.texi.
20259
20260 2009-05-14  Jakub Jelinek  <jakub@redhat.com>
20261             Ben Elliston <bje@au.ibm.com>
20262
20263         PR middle-end/40035
20264         * dse.c (check_mem_read_rtx): Guard against width == -1.
20265
20266 2009-05-13  Michael Matz  <matz@suse.de>
20267
20268         PR middle-end/39976
20269         * tree-outof-ssa.c (maybe_renumber_stmts_bb): New function.
20270         (trivially_conflicts_p): New function.
20271         (insert_backedge_copies): Use it.
20272
20273 2009-05-13  Janis Johnson  <janis187@us.ibm.com>
20274
20275         * c-pragma.c (enum pragma_switch_t): Prefix constants with PRAGMA_.
20276         (handle_stdc_pragma): Use new enum constant names.
20277         (handle_pragma_float_const_decimal64): Ditto.
20278
20279 2009-05-13  Ian Lance Taylor  <iant@google.com>
20280
20281         * Makefile.in (build/gencheck.o): Depend upon all-tree.def, not
20282         tree.def.
20283
20284 2009-05-13  Nathan Sidwell  <nathan@codesourcery.com>
20285
20286         * config/m68k/t-uclinux (M68K_MLIB_CPU): Check for FL_UCLINUX.
20287         * config/m68k/m68k-devices.def: Add FL_UCLINUX to 68020 and 54455
20288         multilibs.
20289         * config/m68k/m68k.h (FL_UCLINUX): Define.
20290
20291 2009-05-13  Jan Hubicka  <jh@suse.cz>
20292
20293         * options.c (gfc_post_options): -fwhole-program imply -fwhole-file.
20294
20295 2009-05-12  Kaz Kojima  <kkojima@gcc.gnu.org>
20296
20297         * config/sh/sh.h (OVERRIDE_OPTIONS): Clear flag_schedule_insns
20298         unless -fschedule-insns is specified.
20299
20300 2009-05-12  Kaz Kojima  <kkojima@gcc.gnu.org>
20301
20302         PR target/39561
20303         * config/sh/sh.h (OPTIMIZATION_OPTIONS): Don't set
20304         TARGET_EXPAND_CBRANCHDI4.
20305         * config/sh/sh.md (cbranchdi4): Don't check TARGET_EXPAND_CBRANCHDI4.
20306         * config/sh/sh.opt (mexpand-cbranchdi): Remove.
20307         (cmpeqdi): Fix comment.
20308
20309 2009-05-12  Kaz Kojima  <kkojima@gcc.gnu.org>
20310
20311         * config/sh/sh-protos.h (sh_legitimate_index_p): Declare.
20312         (sh_legitimate_address_p): Likewise.
20313         * config/sh/sh.c (sh_legitimate_index_p): New.
20314         (sh_legitimate_address_p): Likewise.
20315         * config/sh/sh.h (REG_OK_FOR_BASE_P): Add STRICT parameter.
20316         (REG_OK_FOR_INDEX_P, SUBREG_OK_FOR_INDEX_P): Likewise.
20317         (MODE_DISP_OK_4, MODE_DISP_OK_8): Remove.
20318         (MAYBE_BASE_REGISTER_RTX_P): New macro.
20319         (MAYBE_INDEX_REGISTER_RTX_P): Likewise.
20320         (BASE_REGISTER_RTX_P): Use MAYBE_BASE_REGISTER_RTX_P.
20321         (INDEX_REGISTER_RTX_P): Use MAYBE_INDEX_REGISTER_RTX_P.
20322         (GO_IF_LEGITIMATE_INDEX): Use sh_legitimate_index_p.
20323         (GO_IF_LEGITIMATE_ADDRESS): Use sh_legitimate_address_p.
20324
20325 2009-05-12  Jan Hubicka  <jh@suse.cz>
20326
20327         * tree-inline.c (estimate_operator_cost): Add operands;
20328         when division happens by constant, it is cheap.
20329         (estimate_num_insns): Loads and stores are not having cost of 0;
20330         EH magic stuff is cheap; when computing runtime cost of switch,
20331         use log2 base of amount of its cases; builtin_expect has cost of 0;
20332         compute cost for moving return value of call.
20333         (init_inline_once): Initialize time_based flags.
20334         * tree-inline.h (eni_weights_d): Add time_based flag.
20335
20336 2009-05-12  Paolo Bonzini  <bonzini@gnu.org>
20337
20338         * df-core.c: Update head documentation.
20339
20340 2009-05-12  Michael Meissner  <meissner@linux.vnet.ibm.com>
20341
20342         PR bootstrap/40118
20343         * rs6000.c (rs6000_generate_compare): Use op1b instead of
20344         shadowing exisiting variable op1.
20345
20346 2009-05-12  Uros Bizjak  <ubizjak@gmail.com>
20347
20348         PR target/37179
20349         * config/i386/driver-i386.c (processor_signatures): New enum.
20350         (SIG_GEODE): Move from vendor_signatures to processor_signatures.
20351         (host_detect_local_cpu): For SIG_AMD vendor, check for SIG_GEODE
20352         processor signature to detect geode processor.
20353
20354 2009-05-12  Paolo Bonzini  <bonzini@gnu.org>
20355
20356         Revert:
20357
20358         2009-05-12  Paolo Bonzini  <bonzini@gnu.org>
20359
20360         * optabs.c (prepare_cmp_insn): Temporarily disable test that
20361         causes spurious differences between trunk and cond-optab branch.
20362
20363 2009-05-12  Paolo Bonzini  <bonzini@gnu.org>
20364
20365         * dojump.c (compare_from_rtx): Delete.
20366         * expmed.c (emit_store_flag): Only try cstore_optab.  Canonicalize
20367         any MODE_CC mode to the cstorecc4 pattern.  Use prepare_operand, fail
20368         if the comparison does not satisfy the predicate; test predicates for
20369         operands 2 and 3 of a cstore pattern.  Don't try cstore optab
20370         further if one existing pattern fails.
20371         * expr.h (compare_from_rtx): Delete.
20372         (prepare_operand): Declare it.
20373         * optabs.c: Change "lib call" to "libcall" throughout.
20374         (bcc_gen_fctn, setcc_gen_code, trap_rtx,
20375         HAVE_conditional_trap, emit_cmp_insn): Delete.
20376         (can_compare_p): Delete cmp_optab case.
20377         (prepare_float_lib_cmp): Return an rtx and a machine mode.
20378         Accept other parameters by value.
20379         (prepare_operand): Make non-static.
20380         (prepare_cmp_insn): Return an rtx and a machine mode.  Accept
20381         other parameters by value.  Try to widen operands here based on
20382         an optab_methods argument and looking at cbranch_optab.
20383         (emit_cmp_and_jump_insn_1): Accept test and mode, remove widening
20384         loop.  Use cbranch_optab directly.
20385         (emit_cmp_and_jump_insns): Fix comment.  Adjust call to
20386         prepare_cmp_insn and emit_cmp_and_jump_insn_1, remove obsolete
20387         assertion.
20388         (emit_conditional_move, emit_conditional_add): Inline what's needed
20389         of compare_from_rtx, using new prepare_cmp_insn for the rest.
20390         (init_optabs): Init cmp_optab with UNKNOWN, cbranch_optab
20391         with COMPARE.  Move cmov_optab and cstore_optab above
20392         with cbranch_optab, move cmp_optab down with ucmp_optab,
20393         remove tst_otpab.  Do not initialize trap_rtx.
20394         (gen_cond_trap): Do it here.  Use ctrap_optab.  Test predicate
20395         for trap code.  Do not check HAVE_conditional_trap.  Use
20396         prepare_cmp_insn.  Accept no predicate for operand 3.
20397         * optabs.h (OTI_cmp): Mark as used only for libcalls.
20398         (OTI_ctrap, ctrap_optab): New.
20399         (tst_optab): Delete.
20400         (bcc_gen_fctn, setcc_gen_code, emit_cmp_insn): Delete.
20401         * ifcvt.c (find_if_header): Replace HAVE_conditional_trap
20402         with lookup of ctrap_optab.
20403         * genopinit.c (cmp_optab, tst_optab, bcc_gen_fctn, setcc_gen_code):
20404         Delete.
20405         (ctrap_optab): New.
20406
20407         * combine.c (combine_simplify_rtx, simplify_set): Do not
20408         special case comparing against zero for cc0 machines.
20409         * simplify-rtx.c (simplify_binary_operation_1): Never remove
20410         COMPARE on cc0 machines.
20411         (simplify_relational_operation): Return a new expression when
20412         a COMPARE could be removed.
20413         * final.c (final_scan_insn): Compare cc_status values
20414         against LHS of a (compare FOO (const_int 0)) cc0 source.
20415         Also check if cc_status.value is the full compare.
20416
20417         * doc/md.texi (bCC, sCC, tstMM, cmpMM): Delete.
20418         (cstoreMM4): Document.
20419         (conditional_trap): Document ctrapMM4 instead.
20420         (sync_compare_and_swapMM): Refer to cbranchcc4.
20421         (Dependent Patterns): Eliminate obsolete information referring to
20422         the old jump optimization phase.
20423         (Canonicalization): Include cbranchcc4 case, omit canonicalization
20424         of compares with 0 on cc0 machines.
20425         (Jump Patterns): Refer to MODE_CC jump patterns preferably,
20426         avoiding references to cc0.  Remove text about storing operands
20427         in cmpMM.
20428         * doc/tm.texi (Condition Codes): Include blurb on different
20429         condition code representations, separate into subsections for
20430         CC0, MODE_CC and conditional execution.
20431
20432         * config/alpha/alpha-protos.h (alpha_emit_conditional_branch,
20433         alpha_emit_setcc): Accept operands and a machine mode.
20434         * config/alpha/alpha.c (alpha_emit_conditional_branch):
20435         Get code/op0/op1 from operands, use machine mode argument
20436         instead of alpha_compare.fp_p.  Emit the branch here.
20437         (alpha_emit_setcc): Likewise, and return boolean.
20438         (alpha_emit_conditional_move): Likewise.  Assert that
20439         cmp_op_mode == cmp_mode, and simplify accordingly.
20440         * config/alpha/alpha.h (struct alpha_compare, alpha_compare): Delete.
20441         * config/alpha/alpha.md (cmpdf, cmptf, cmpdi, bCC, sCC): Delete.
20442         (cbranchdf4, cbranchtf4, cbranchdi4, cstoredf4, cstoretf4,cstoredi4):
20443         Delete.
20444         (stack probe test): Use cbranchdi4.
20445         * config/alpha/predicates.md (alpha_cbranch_operator): New.
20446
20447         * config/arc/arc.c (gen_compare_reg): Do not emit cmp.
20448         * config/arc/arc.h (movsicc, movsfcc): Use it.
20449         (movdicc, *movdicc_insn, movdfcc, *movdfcc_insn): Remove.
20450         (cbranchsi4, cstoresi4): New.
20451         (cmpsi, bCC and sCC expanders): Remove.
20452
20453         * config/arm/arm.c (arm_compare_op0, arm_compare_op1): Delete.
20454         * config/arm/arm.h (arm_compare_op0, arm_compare_op1): Delete.
20455         * config/arm/predicates.md (arm_comparison_operator): Only include
20456         floating-point operators if there is a hardware floating-point unit.
20457         * config/arm/arm.md (cbranchsi4, cstoresi4): Enable for TARGET_32BIT,
20458         deferring to cbranch_cc and cstore_cc respectively.
20459         (cbranchsf4, cbranchdf4, cbranchdi4, cstoresf4, cstoredf4, cstoredi4,
20460         cbranch_cc, cstore_cc): New.
20461         (movsicc, movsfcc, movdfcc): Do not use arm_compare_op0 and
20462         arm_compare_op1.
20463         (bCC, sCC, cmpsi, cmpsf, cmpdf, cmpdi): Delete.
20464
20465         * config/avr/avr-protos.h (out_tstsi, out_tsthi): Adjust prototype.
20466         * config/avr/avr.c (out_tstsi, out_tsthi): Get the tested operand
20467         as an argument.
20468         (adjust_insn_length): Adjust calls.
20469         (avr_reorg): Handle (compare (foo) (const_int 0)).
20470         * config/avr/avr.md (tstqi, tsthi, tstsi): Remove.
20471         (*negated_tstqi, *negated_tsthi, *negated_tstsi): Unmacroize.
20472         (*reversed_tsthi, *reversed_tstsi): Add a scratch for simplicity.
20473         (cmpqi, cmphi, cmpsi): Prepend asterisk, fuse tst[qhs]i here.
20474         (bCC): Remove.
20475         (cbranchqi4, cbranchhi4, cbranchsi4): New.
20476         (tst -> sbrc/sbrs peephole2, cpse peephole): Wrap RHS with COMPARE.
20477
20478         * config/bfin/bfin.md (cmpbi, cmpsi, bCC, sCC): Delete.
20479         (cbranchsi4, cstorebi4, cstoresi4): New.
20480         (movbisi): This insn is duplicate, split it to zero_extend.
20481         * config/bfin/bfin.c (bfin_compare_op0, bfin_compare_op1): Delete
20482         (bfin_gen_compare): Do not use them.  Emit VOIDmode SET, not BImode.
20483         (bfin_optimize_loop): Use cbranch expander.
20484         * config/bfin/bfin.h (bfin_compare_op0, bfin_compare_op1): Delete.
20485         * config/bfin/predicates.md (bfin_cbranch_operator): Rename to...
20486         (bfin_bimode_comparison_operator): ... this.
20487         (bfin_direct_comparison_operator): New.
20488
20489         * config/cris/cris.c (cris_normal_notice_update_cc): Look
20490         inside (compare FOO (const_int 0)).
20491         (cris_rtx_costs): Handle ZERO_EXTRACT.
20492         * config/cris/cris.md (tstdi, tst<mode>, cmpdi): Delete.
20493         (*tstdi_non_v32): Fold in *cmpdi_non_v32.
20494         (*tstdi_v32): Delete.
20495         (*cmpdi_non_v32): Add M alternative for operand 1.
20496         (cmpsi, cmp<mode>): Make private.
20497         (*tstsi, *tst<mode>_cmp, *tst<mode>_non_cmp, *btst): Wrap LHS
20498         with COMPARE.
20499         (cbranch<mode>4, cbranchdi4, cstore<mode>4): New.
20500
20501         * config/crx/crx.md (cstore<mode>4, cbranchcc4): New.
20502         (cmp<mode>, bCOND_internal, b<code>, s<code>): Delete.
20503         (cbranch<mode>4, sCOND_internal): Use ordered_comparison_operator.
20504         (cc_reg_operand): New.
20505         (any_cond): Delete.
20506         * config/crx/crx.c (crx_compare_op0, crx_compare_op1,
20507         crx_expand_compare, crx_expand_branch, crx_expand_scond): Delete.
20508         * config/crx/crx.h (crx_compare_op0, crx_compare_op1): Delete.
20509         * config/crx/crx-protos.h (crx_expand_compare, crx_expand_branch,
20510         crx_expand_scond): Delete.
20511
20512         * config/fr30/fr30.md (cmp<mode>, bCC): Delete.
20513         (cbranchsi4): New.
20514         * config/fr30/fr30.c (fr30_compare_op0, fr30_compare_op1): Delete
20515         * config/fr30/fr30.h (fr30_compare_op0, fr30_compare_op1): Delete.
20516
20517         * config/frv/frv.md (cbranchsi4, cbranchsf4, cbranchdf4,
20518         cstoresi4, cstoresf4, cstoredf4): New.
20519         (cmpdi, cmpsi, cmpsf, cmpdf, bCC, sCC): Remove.
20520         * config/frv/frv-protos.h (frv_emit_cbranch, frv_emit_scc):
20521         Receive the entire operands array.
20522         * config/frv/frv.h (frv_compare_op0, frv_compare_op1): Delete.
20523         * config/frv/frv.c (frv_compare_op0, frv_compare_op1): Delete.
20524         * config/frv/frv-protos.h (frv_emit_cbranch, frv_emit_scc):
20525         Get test/op0/op1 from the operands array.
20526         (frv_emit_cond_move): Get test/op0/op1 from the test_rtx.
20527
20528         * config/h8300/h8300-protos.h (h8300_expand_branch): Accept operands.
20529         (h8300_expand_store): New.
20530         * config/h8300/h8300.c (h8300_rtx_costs): Handle (compare FOO
20531         (const_int 0)).
20532         (h8300_expand_branch): Emit compare here.  Adjust for new arguments.
20533         (h8300_expand_store): New.
20534         * config/h8300/h8300.md (btst combine patterns): Wrap with COMPARE
20535         or do not try to produce (set (cc0) REG).
20536         (peepholes): Wrap arguments with COMPARE.  Add a peephole to
20537         change a compare into a move to a scratch register.  Disable some
20538         peepholes when comparing with zero.
20539         (tstsi, tsthi, tstsi, cmpqi): Make private.
20540         (cmphi): Delete.
20541         (bCC, sCC): Delete.
20542         (cbranchqi4, cbranchhi4, cbranchsi4, cstoreqi4, cstorehi4,
20543         cstoresi4): New.
20544
20545         * config/i386/i386.c (ix86_expand_int_movcc, ix86_expand_int_addcc,
20546         ix86_expand_fp_movcc): Set ix86_compare_op0 and ix86_compare_op1.
20547         (ix86_emit_i387_log1p): Use gen_cbranchxf4.
20548         (ix86_emit_i387_log1p): Use cbranchxf2.
20549         (ix86_expand_setcc): Return void.
20550         * config/i386/i386-protos.h (ix86_expand_setcc): Return void.
20551         * config/i386/i386.md (cmpti, cmpdi, cmpsi, cmphi, cmpqi, cmpxf,
20552         cmp<MODEF>, cmpcc): Remove.
20553         (cbranchti4, cbranchdi4, cbranchsi4, cbranchhi4, cbranchqi4,
20554         cbranchxf4, cbranch<MODEF>4, cbranchcc4, cstoredi4, cstoresi4,
20555         cstorehi4, cstoreqi4, cstorexf4, cstore<MODEF>4, cstorecc): New.
20556         (sCC and bCC expanders): Remove.
20557         (stack_protect_test): Use cbranchcc4.
20558
20559         * config/ia64/ia64-protos.h (ia64_compare_op0, ia64_compare_op1):
20560         Delete.
20561         (ia64_expand_compare): Accept three rtx by reference and return void.
20562         * config/ia64/ia64.c (ia64_compare_op0, ia64_compare_op1): Delete.
20563         (ia64_expand_compare): Replace op0/op1 with *op0/*op1.  Get code
20564         from *expr.  Update *expr with the BImode comparison to do.
20565         * config/ia64/ia64.md (cmpbi, cmpsi, cmpdi, cmpsf, cmpdf, cmpxf,
20566         cmptf, bCC, sCC, conditional_trap): Delete.
20567         (cbranchbi4, cbranchsi4, cbranchdi4, cbranchsf4, cbranchdf4,
20568         cbranchxf4, cbranchtf4, cstorebi4, cstoresi4, cstoredi4, cstoresf4,
20569         cstoredf4, cstorexf4, cstoretf4, ctrapbi4, ctrapsi4, ctrapdi4,
20570         ctrapsf4, ctrapdf4, ctrapxf4, ctraptf4): New.
20571         * config/ia64/predicates.md (ia64_cbranch_operator): New.
20572
20573         * config/iq2000/iq2000-protos.h (gen_conditional_branch): Change
20574         type of last argument.
20575         * config/iq2000/iq2000.c (branch_cmp, branch_type): Remove.
20576         (gen_conditional_branch): Get code/cmp0/cmp1 from operands,
20577         use machine mode argument instead of branch_type.  Remove dead
20578         code for floating-point comparisons.
20579         * config/iq2000/iq2000.h (branch_cmp, branch_type): Remove.
20580         * config/iq2000/iq2000.md (cmpsi, cmpdi, cmpsf, cmpdf, tstsi, bCC):
20581         Remove.
20582         (cbranchsi4, cstoresi4): New.
20583         * config/iq2000/predicates.md (reg_or_const_operand): New.
20584
20585         * config/m32c/m32c.md (cbranch splitter): Use match_op_dup.
20586         * config/m32c/m32c.md (any_cond, gl_cond): Delete.
20587         (b<code>_op): Rewrite to...
20588         (bcc_op): ... this, using match_operator.
20589         (s<code>_op): Rewrite to...
20590         (scc_op): ... this, using match_operator.
20591         (s<code>_24_op): Rewrite to...
20592         (scc_op_24): ... this, using match_operator.
20593         (s<code>_<mode>): Rewrite to...
20594         (cstore<mode>4): ... this, using match_operator.
20595         (s<code>_<mode>_24): Rewrite to...
20596         (cstore<mode>4_24): ... this, using match_operator.
20597         * config/m32c/m32c-protos.h (m32c_cmp_flg_0, m32c_pend_compare,
20598         m32c_unpend_compare, m32c_expand_scc): Delete.
20599         * config/m32c/m32c.c (compare_op0, compare_op1, m32c_cmp_flg_0,
20600         m32c_pend_compare, m32c_unpend_compare, m32c_expand_scc): Delete.
20601         (m32c_expand_movcc): Change NE to EQ if necessary.
20602         (m32c_init_libfuncs): Modify cstore optab instead of setcc_gen_code.
20603
20604         * config/m32r/m32r-protos.h (gen_cond_store): New.
20605         * config/m32r/m32r.c (m32r_compare_op0, m32r_compare_op1): Delete.
20606         (gen_cond_store): New, from sCC patterns.
20607         (m32r_expand_block_move): Use cbranchsi4.
20608         * config/m32r/m32r.h (m32r_compare_op0, m32r_compare_op1): Delete.
20609         * config/m32r/m32r.md (cmpsi, bCC, sCC): Delete.
20610         (cbranchsi4, cstoresi4): New.
20611
20612         * config/m68hc11/m68hc11.c (m68hc11_compare_op0, m68hc11_compare_op1):
20613         Delete.
20614         (m68hc11_rtx_costs_1, m68hc11_rtx_costs): Handle ZERO_EXTRACT.
20615         (m68hc11_notice_update_cc): Look into a compare with 0.
20616         * config/m68hc11/m68hc11.h (m68hc11_compare_op0, m68hc11_compare_op1):
20617         Delete.
20618         * config/m68hc11/m68hc11.md (tstsi, tsthi, tstqi, cmpsi,
20619         cmphi, cmpqi, bCC): Delete.
20620         (cbranchsi4, cbranchhi4, cbranchqi4): New.
20621         (tstqi_1, tstqi_z_used, tstqi_1, bitcmpqi, bitcmpqi_z_used,
20622         bitcmpqi_12, bitcmphi, various splits and peephole2s): Wrap cc0<-reg
20623         sets with COMPARE.
20624
20625         * config/m68k/predicates.md (m68k_cstore_comparison_operator,
20626         const0_operand, const1_operand, m68k_subword_comparison_operand): New.
20627         * config/m68k/constraints.md (H): New.
20628         * config/m68k/m68k.md (tstdi): Remove define_expand, use name for
20629         the define_insn below.
20630         (tstsi, tsthi, tst<FP:mode>, cmphi, cmpqi, cmp<FP:mode>): Delete.
20631         (*tstsi_internal_68020_cf, *tstsi_internal, *tsthi_internal,
20632         *tstqi_internal, tst<mode>_6881, tst<mode>_cf, many unnamed
20633         patterns): Wrap RHS with COMPARE.
20634         (tst<FP>_68881, tst<FP>_cf): Use const0_operand.
20635         (*cmpdi_internal): Name this pattern.
20636         (cmpdi): Change to define_insn.
20637         (cbranchdi4, cstoredi4, cbranchsi4, cstoresi4, cbranchhi4, cstorehi4,
20638         cbranchqi4, cstoreqi4, cbranch<FP:mode>4, cstore<FP:mode>4): New.
20639         (scc0_di, scc0_di_5200, scc_di): Use the ordered_comparison_operator
20640         predicate.
20641         (seq, sne, sgt, sgtu, slt, sltu, sge, sgeu, sle, sleu, sordered,
20642         sunordered, suneq, sunge, sungt, sunle, sunlt, sltgt): Delete
20643         (conditional_trap): Change to...
20644         (ctrapdi4, ctrapsi4, ctraphi4, ctrapqi4): ... these.
20645         (*conditional_trap): Use the ordered_comparison_operator and
20646         const1_operand predicates.
20647         * config/m68k/m68k.c (m68k_last_compare_had_fp_operands): Delete.
20648         (m68k_expand_prologue): Use ctrapsi4 instead of cmpsi+conditional_trap.
20649         (m68k_rtx_costs): Look for ZERO_EXTRACT in a COMPARE.
20650         * config/m68k/m68k.h (m68k_last_compare_had_fp_operands): Delete.
20651
20652         * config/mcore/mcore-protos.h (arch_compare_op0, arch_compare_op1,
20653         mcore_modify_comparison, mcore_gen_compare_reg): Remove.
20654         (mcore_gen_compare): New.
20655         * config/mcore/mcore.c (arch_compare_op0, arch_compare_op1): Delete.
20656         (mcore_modify_comparison, mcore_gen_compare_reg): Fold into...
20657         (mcore_gen_compare): ... this.
20658         * config/mcore/mcore.md (cmpsi, bCC, sCC): Remove.
20659         (cbranchsi4, cstoresi4): New, using mcore_gen_compare.
20660         (stack probe pattern): Use cbranchsi4.
20661
20662         * config/mips/predicates.md (mips_cstore_operator): New.
20663         * config/mips/mips-ps-3d.md (movv2sfcc): Do not use cmp_operands.
20664         * config/mips/mips.md (any_cond): Delete.
20665         (conditional_trap): Rename to ctrap<GPR:mode>4.  Adjust predicates,
20666         always succeed.
20667         (fixuns_truncdfsi2, fixuns_truncdfdi2, fixuns_truncsfsi2,
20668         fixuns_truncsfdi2): Use cbranch patterns.
20669         (cmp<GPR:mode>, cmp<SCALARF:mode>): Delete.
20670         (b<code>): Change to cbranch<GPR:mode>4 and cbranch<SCALARF:mode>4.
20671         Adjust call to mips_expand_conditional_branch.
20672         (seq, sne, slt<u>, sle<u>, sgt<u>, sge<u>): Change to
20673         cstore<GPR:mode>4.
20674         * config/mips/mips-protos.h (mips_expand_conditional_branch,
20675         mips_expand_scc, mips_expand_conditional_trap): Adjust prototypes.
20676         * config/mips/mips.c (cmp_operands): Delete.
20677         (mips_emit_compare): Get comparison operands from *op0/*op1.
20678         (mips_expand_scc): Get code/op0/op1/target from operands.  Assert
20679         that it succeeds.  Use op0/op1 instead of cmp_operands.
20680         (mips_expand_conditional_branch, mips_expand_conditional_move,
20681         mips_expand_conditional_trap): Likewise.
20682         (mips_block_move_loop): Use cbranch patterns.
20683         * config/mips/mips.h (cmp_operands): Delete.
20684
20685         * config/mmix/mmix.c (mmix_valid_comparison): Delete.
20686         (mmix_gen_compare_reg): Just return a register in the right CC mode.
20687         * config/mmix/mmix.h (mmix_compare_op0, mmix_compare_op1): New.
20688         * config/mmix/mmix.md (cmpdi, cmpdf): Remove.
20689         (*cmpcc_folded): Rename to...
20690         (*cmpdi_folded): this.
20691         (*cmpcc): Rename to...
20692         (*cmps): ... this.
20693         (movdfcc, movdicc): Adjust for new semantics of mmix_gen_compare_reg.
20694         (bCC): Remove.
20695         (cbranchdi4): New.
20696         (cbranchdf4): New.  Handle invalid comparisons here.
20697         * config/mmix/predicates.md (float_comparison_operator): New.
20698
20699         * config/mn10300/mn10300.c (mn10300_rtx_costs): Consider 0 and
20700         zero_extract to be cheap in (compare (zero_extract) (const_int 0).
20701         * config/mn10300/mn10300.md (tst): Delete.
20702         (*tst_extqisi_am33, *tst_extqisi, *tst_exthisi_am33, *tst_exthisi):
20703         Name these patterns and wrap RHS in a compare.
20704         (*cmpsi): Make this pattern private.  Include tst.
20705         (*cmpsf): Make this pattern private.
20706         (and and zero_extract cc0 set): Wrap RHS in a COMPARE.
20707         (compare with zero peepholes): Likewise.
20708         (bCC): Remove.
20709         (cbranchsi4, cbranchsf4): New.
20710         (casesi): Use cbranchsi4.
20711
20712         * config/pa/pa.c (hppa_compare_op0, hppa_compare_op1,
20713         hppa_branch_type): Delete.
20714         (return_addr_rtx): Use cbranchsi4.
20715         (emit_bcond_fp): Accept all operands.  Replace CODE with NE.
20716         Emit CCFPmode comparison here.
20717         (gen_cmp_fp): Delete, now part of emit_bcond_fp.
20718         * config/pa/pa.h (enum cmp_type, hppa_compare_op0, hppa_compare_op1,
20719         hppa_branch_type): Delete.
20720         * config/pa/pa.md (cmpdi, cmpsi, cmpsf, cmpdf, sCC, bCC): Delete.
20721         (movsicc, movdicc): Remove references to hppa_compare_op0,
20722         hppa_compare_op1 and compare_from_rtx.
20723         (cbranchdi4, cbranchsi4, cbranchsf4, cbranchdf4, cstoresi4): New.
20724         (casesi): Use cbranchsi4.
20725
20726         * config/pdp11/pdp11-protos.h (output_jump): Change prototype.
20727         * config/pdp11/pdp11.c (output_jump): Embed opcodes here.
20728         * config/pdp11/pdp11.md (register_or_const0_operand): New.
20729         (cmpdf, cmphi, cmpqi): Make private.  Add tst alternatives.
20730         (cmpsi, tstsi, tstdf, tsthi, tstqi): Delete.
20731         (bCC): Delete.
20732         (cbranchdf4, cbranchhi4, cbranchqi4): New.
20733         (*branch, *branch_inverted): New.
20734
20735         * config/picochip/picochip.md (cbranchhi4): Use
20736         ordered_comparison_operator.
20737         (cmphi, bCC): Remove.
20738
20739         * config/rs6000/predicates.md (rs6000_cbranch_operator): New.
20740         (trap_comparison_operator): Delete.
20741         * config/rs6000/rs6000-protos.h (rs6000_emit_sCOND,
20742         rs6000_emit_cbranch): Accept mode and operands.
20743         * config/rs6000/rs6000.c (rs6000_compare_op0, rs6000_compare_op1,
20744         rs6000_compare_fp_p): Delete.
20745         (rs6000_generate_compare): Accept mode and comparison.  Extract code
20746         and op0/op1 from there.  Replace references to rs6000_compare_op0
20747         and rs6000_compare_op1.
20748         (rs6000_emit_sCOND): Adjust call to rs6000_generate_compare and
20749         extract result from passed operands.
20750         (rs6000_emit_cbranch): Adjust call to rs6000_generate_compare and
20751         extract loc from passed operands.
20752         (rs6000_emit_cmove): Likewise.
20753         * config/rs6000/rs6000.h (rs6000_compare_op0, rs6000_compare_op1,
20754         rs6000_compare_fp_p): Delete.
20755         * config/rs6000/rs6000.md (cmp<GPR>, cmp<FP>, bCC, sCC): Delete.
20756         (cbranch<GPR>4, cbranch<FP>4): New.
20757         (cstore<mode>4): New.  Consolidate here all choices about when to use
20758         portable or specialized sCC sequences.
20759         (stack_protect_test): Use cbranchsi4.
20760         (conditional_trap): Replace with ctrap<GPR>4.
20761         (conditional trap insn): Replace trap_comparison_operator with
20762         ordered_comparison_operator.
20763
20764         * config/s390/s390.c (s390_compare_op0, s390_compare_op1): Delete.
20765         (s390_emit_prologue): Use ctrap.
20766         * config/s390/s390.h (s390_compare_op0, s390_compare_op1): Delete.
20767         * config/s390/predicates.md (s390_eqne_operator, s390_scond_operator):
20768         New predicates replacing...
20769         * config/s390/s390.md (COMPARE, SCOND): ... these iterators.
20770         (cmp<GPR>, cmp<FP>, cmpcc): Delete.
20771         (trunc patterns): Use emit_cmp_and_jump_insns instead of cmp/branch.
20772         (add<mode>cc): Do not use s390_compare_op0/op1.
20773         (s<code>): Change to...
20774         (cstore<mode>4): ... this. Do not use s390_compare_op0/op1.
20775         (seq): Change to...
20776         (cstorecc4): ... this.  Handle EQ or NE equally.
20777         (*sne): Un-privatize for use in cstorecc4.
20778         (b<code>): Change to...
20779         (cbranch<GPR>4, cbranch<FP>4, cbranchcc4): ... these.
20780         (conditional_trap): Replace with...
20781         (ctrap<GPR>4, ctrap<FP>4): ... these.
20782         (stack_protect): Use cbranchcc4.
20783
20784         * config/score/score-conv.h (cmp_op0, cmp_op1): Delete.
20785         * config/score/score-protos.h (score_gen_cmp): Delete.
20786         * config/score/score.c (cmp_op0, cmp_op1, score_gen_cmp): Delete.
20787         (score_block_move-loop): Use cbranchsi4.
20788         * config/score/score.md (cbranchsi4): New.
20789         (cmpsi, bCC): Delete.
20790         * config/score/score3.c (cmp_op0, cmp_op1, score3_gen_cmp): Delete.
20791         (score3_movsicc): Use ops[1] operands instead of cmp_op0/cmp_op1.
20792         * config/score/score7.c (cmp_op0, cmp_op1, score7_gen_cmp): Delete.
20793         (score7_movsicc): Use ops[1] operands instead of cmp_op0/cmp_op1.
20794         * config/score/score3.h (score3_gen_cmp): Delete.
20795         * config/score/score7.h (score7_gen_cmp): Delete.
20796
20797         * config/sh/sh-protos.h (prepare_scc_operands): Rename to...
20798         (sh_emit_scc_to_t): ... this.  Return void.
20799         (from_compare): Rename to...
20800         (sh_emit_compare_and_branch): ... this.
20801         (sh_emit_compare_and_set): New.
20802         (sh_expand_t_scc): Accept operands.
20803         * config/sh/predicates.md (sh_float_comparison_operator): New.
20804         * config/sh/sh.c (sh_compare_op0, sh_compare_op1): Delete.
20805         (prepare_scc_operands): Rename to...
20806         (sh_emit_scc_to_t): ... this.  Return void.  Get op0/op1 from
20807         arguments.
20808         (sh_emit_cheap_store_flag): New.
20809         (sh_emit_set_t_insn): New.
20810         (from_compare): Rename to...
20811         (sh_emit_compare_and_branch): ... this.  Accept mode.  Rewrite
20812         handling of TARGET_SH2E floating point to avoid recursive call.
20813         Generate branch here.
20814         (sh_emit_compare_and_set): New.
20815         (sh_expand_t_scc): Get op0/op1 from arguments.
20816         (sh_emit_cheap_store_flag): New.
20817         * config/sh/sh.md (cbranchdi4, cbranchsi4): Include -mno-cbranchdi
20818         cases.
20819         (cbranchdi4_i): Use an "I08" constraint instead of an "i" constraint.
20820         (cmpsi, cmpdi, cmpsf, cmpdf): Delete.
20821         (movsicc, movdicc): Do nothing when it recreated operands from
20822         sh_compare_*. Use sh_emit_cheap_store_flag.  Adjust call to
20823         prepare_scc_operands (now sh_emit_scc_to_t).
20824         (udivdi3): Use cstoresi4.
20825         (beq_media, bne_media, bge_media, bgtu_media, bgeu_media, beq,
20826         bne, bgt, blt, ble, bge, bgtu, bltu, bgeu, bleu, bunordered): Delete.
20827         (cbranchint4_media, cbranchfp4_media): New.
20828         (casesi): Use cbranchdi4.
20829         (seq, slt, sle, sgt, sge, sgtu, sltu, sgeu, sne, sleu, sunordered):
20830         Delete.
20831         (cstore4_media, cstoresi4, cstoredi4, cstoresf4, cstoredf4): New.
20832         (movnegt): Remove second operand.
20833         (cbranchsf4, cbranchdf4): New.
20834         (stack_protect): Use cbranchdi4/cbranchsi4.
20835
20836         * config/sparc/sparc.c (sparc_compare_op0, sparc_compare_op1): Delete.
20837         (gen_compare_reg): Accept comparison, extract part of it to...
20838         (gen_compare_reg_1): ... this.
20839         (gen_compare_operator): Delete.
20840         (gen_v9_scc): Accept separate destination, comparison code and arms.
20841         Do not use sparc_compare_op0/sparc_compare_op1.
20842         (emit_scc_insn, emit_conditional_branch_insn): New.
20843         (emit_v9_brxx): Make static.  Remove useless assertion.
20844         (sparc_emit_float_lib_cmp): Return RTL instead of calling
20845         emit_cmp_insn.
20846         (sparc_expand_compare_and_swap_12): Use gen_compare_reg_1+cbranchcc4.
20847         * config/sparc/sparc-protos.h (gen_compare_reg,
20848         sparc_emit_float_lib_cmp): Adjust prototype.
20849         (emit_scc_insn, emit_conditional_branch_insn): New.
20850         (gen_v9_scc, emit_v9_brxx_insn, gen_compare_operator): Delete.
20851         * config/sparc/sparc.h (sparc_compare_op0, sparc_compare_op1): Delete.
20852         * config/sparc/sparc.md (P, I, F, V32, V32I, V64, V64I): Move all
20853         iterators to the top.
20854         (cmpsi, cmpdi, cmpsf, cmpdf, cmptf, seqsi_special_extend,
20855         snesi_special_extend, sCC, bCC, seqdi_special_trunc,
20856         snedi_special_trunc): Delete.
20857         (seqdi_special, snedi_special): Use expansion of seqdi_special_trunc
20858         and snedi_special_trunc.
20859         (cstoresi4, cstoredi4, cstore<F:mode>4, cbranchcc4, cbranchsi4,
20860         cbranchdi4, cbranch<F:mode>4): New.
20861         (mov<I:mode>cc, mov<F:mode>cc): Handle sparc_emit_float_lib_cmp
20862         here.  Use gen_compare_reg instead of gen_compare_operator.
20863         (conditional_trap): Replace with...
20864         (ctrapsi4, ctrapdi4): ... this.
20865         (stack_protect_test): Use cbranchcc4.
20866
20867         * config/spu/spu-protos.h (spu_emit_branch_or_set): Change second
20868         argument to rtx.
20869         * config/spu/spu.c (spu_compare_op0, spu_compare_op1): Remove.
20870         (spu_emit_branch_or_set): Get code/op0/op1 from second argument.
20871         Change spu_compare_op0/op1 to op0/op1 throughout.  Get target
20872         from operands[0] or operands[3] depending on is_set.
20873         * config/spu/spu.h (spu_compare_op0, spu_compare_op1): Remove.
20874         * config/spu/spu.md (cmp<mode:VQHSI>, cmp<mode:DTI>, cmp<mode:VSF>,
20875         cmpdf, bCC), sCC: Remove.
20876         (cbranch<mode:VQHSI>4, cbranch<mode:DTI>, cbranch<mode:VSF>4,
20877         cbranchdf4, cstore<mode:VQHSI>4, cstore<mode:DTI>, cstore<mode:VSF>4,
20878         cstoredf4): New.
20879         (mov<mode>cc): Accept ordered_comparison_operator, adjust call to
20880         spu_emit_branch_or_set.
20881
20882         * config/stormy16/stormy16-protos.h (xstormy16_emit_cbranch):
20883         Add two arguments.
20884         * config/stormy16/stormy16.h (xstormy16_compare_op0,
20885         xstormy16_compare_op1): Delete.
20886         * config/stormy16/stormy16.c (xstormy16_compare_op0,
20887         xstormy16_compare_op1): Delete.
20888         (xstormy16_emit_cbranch): Get op0/op1 from the new arguments.
20889         Adjust calls.
20890         * config/stormy16/stormy16.md (cbranchsi4, cbranchhi4): New.
20891         (cmphi, cmpsi, bCC): Remove.
20892
20893         * config/v850/v850.md (tstsi, cmpsi): Fold into...
20894         (*cmpsi): ... this one.
20895         (cbranchsi4, cstoresi4): New.
20896         (bCC expanders): Delete.
20897         (sCC insns): Fold into...
20898         (*setcc): ... this one.
20899         (casesi): Do not use gen_cmpsi and gen_bgtu.
20900         (various splits): Wrap "naked" RHS of a cc0 set with COMPARE.
20901         (movsicc): Simplify.
20902         * config/v850/v850.c (v850_rtx_costs): Handle ZERO_EXTRACT in COMPARE.
20903
20904         * config/vax/vax-protos.h (cond_name): New.
20905         (vax_output_conditional_branch): Remove.
20906         * config/vax/vax.c (cond_name): New.
20907         (vax_output_conditional_branch): Remove.
20908         * config/vax/vax.h (PRINT_OPERAND): Dispatch %c to cond_name.
20909         * config/vax/vax.md (tst<VAXint>, tst<VAXfp>): Remove.
20910         (cmp<VAXint>, cmp<VAXfp>): Privatize.  Add constraints for tst.
20911         (bit<VAXint>): Wrap source with (compare).
20912         (b<code> and following unnamed pattern): Rename to *branch and
20913         *branch_reversed.  Change macroization to match_operator.
20914         (cbranch<VAXint>4, cbranch<VAXfp>4): New.
20915
20916         * config/xtensa/predicates.md (xtensa_cstoresi_operator): New.
20917         * config/xtensa/xtensa-protos.h (xtensa_expand_conditional_branch):
20918         Change last argument to machine_mode.
20919         (xtensa_expand_scc): Add machine_mode argument.
20920         * config/xtensa/xtensa.c (branch_cmp, branch_type): Remove.
20921         (gen_conditional_move, xtensa_expand_conditional_branch,
20922         xtensa_expand_scc, xtensa_expand_conditional_move): Use mode
20923         instead of branch_type, fetch cmp0/cmp1/test_code from operands[].
20924         Adjust operand numbers.
20925         * config/xtensa/xtensa.h (enum cmp_type, branch_cmp, branch_type):
20926         Delete.
20927         * config/xtensa/xtensa.md (any_cond, any_scc): Delete.
20928         (cmpsi, cmpsf, b<code>, s<code>): Delete.
20929         (cbranchsi4, cbranchsf4, cstoresi4, cstoresf4): New.
20930
20931 2009-05-12  Paolo Bonzini  <bonzini@gnu.org>
20932
20933         * optabs.c (prepare_cmp_insn): Temporarily disable test that
20934         causes spurious differences between trunk and cond-optab branch.
20935
20936 2009-05-12  Alexandre Oliva  <aoliva@redhat.com>
20937
20938         PR target/37137
20939         * doc/install.texi (STAGE1_TFLAGS, BUILD_CONFIG): Document.
20940
20941 2009-05-12  Alexandre Oliva  <aoliva@redhat.com>
20942
20943         * tree.c (iterative_hash_pointer): Delete.
20944         (iterative_hash_expr): Short-circuit handling of NULL pointer.
20945         Hash UIDs and versions of SSA names.  Don't special-case built-in
20946         function declarations.
20947
20948 2009-05-11  Ian Lance Taylor  <iant@google.com>
20949
20950         PR bootstrap/40103
20951         * graphite.c: Force -Wc++-compat to only be a warning before
20952         #including "cloog/cloog.h".
20953
20954 2009-05-11  Martin Jambor  <mjambor@suse.cz>
20955
20956         * ipa-cp.c (ipcp_cloning_candidate_p): Add missing return false.
20957
20958 2009-05-11  Jan Hubicka  <jh@suse.cz>
20959
20960         * tree-ssa-loop-ivcanon.c: Include target.h
20961         (struct loop_size): new structure.
20962         (constant_after_peeling): New predicate.
20963         (tree_estimate_loop_size): New function.
20964         (estimated_unrolled_size): Rewrite for new estimates.
20965         (try_unroll_loop_completely): Use new estimates.
20966         * Makefile.in (tree-ssa-loop-ivcanon.o): Add dependenc on target.h
20967
20968 2009-05-11  Andrew Pinski  <andrew_pinski@playstation.sony.com>
20969
20970         * config/spu/spu-c.c (spu_categorize_keyword): Update for recent
20971         libcpp interface change.
20972         (spu_macro_to_expand): Likewise.
20973
20974 2009-05-11  Paolo Bonzini  <bonzini@gnu.org>
20975
20976         PR tree-optimization/40026
20977         * gimplify.c (gimplify_init_constructor): Change initial conditional
20978         to assertion.  Rewrite TREE_OPERAND (*expr_p, 1) after
20979         optimize_compound_literals_in_ctor.
20980
20981 2009-05-11  Nathan Sidwell  <nathan@codesourcery.com>
20982
20983         * config/m68k/m68k-devices.def (52274, 52277, 5301x, 5225x, 51xx):
20984         New devices.
20985         * doc/invoke.texi (M680x0 Options): Document new coldfire cpus.
20986
20987 2009-05-11  H.J. Lu  <hongjiu.lu@intel.com>
20988
20989         * tree-vect-data-refs.c (vect_analyze_group_access): Use
20990         HOST_WIDE_INT for gap.
20991
20992 2009-05-11  Ira Rosen  <irar@il.ibm.com>
20993
20994         PR tree-optimization/40074
20995         * tree-vect-data-refs.c (vect_analyze_group_access): Take gaps into
20996         account in group size and step comparison.
20997
20998 2009-05-11  Richard Guenther  <rguenther@suse.de>
20999
21000         * passes.c (init_optimization_passes): Strip now incorrect comment.
21001         (execute_function_todo): Do not set PROP_alias.
21002         * tree-pass.h (PROP_alias): Remove.
21003         * tree-ssa-structalias.c (pass_build_alias): Do not provide PROP_alias.
21004         * tree-if-conv.c (pass_if_conversion): Do not require PROP_alias.
21005         * tree-nrv.c (pass_return_slot): Likewise.
21006         * tree-object-size.c (pass_object_sizes): Likewise.
21007         * tree-ssa-dom.c (pass_dominator): Likewise.
21008         (pass_phi_only_cprop): Likewise.
21009         * tree-ssa-dse.c (pass_dse): Likewise.
21010         * tree-ssa-phiopt.c (pass_phiopt): Likewise.
21011         (pass_cselim): Likewise.
21012         * tree-ssa-pre.c (pass_pre): Likewise.
21013         (pass_fre): Likewise.
21014         * tree-ssa-reassoc.c (pass_reassoc): Likewise.
21015         * tree-ssa-sink.c (pass_sink_code): Likewise.
21016         * tree-stdarg.c (pass_stdarg): Likewise.
21017         * tree-tailcall.c (pass_tail_calls): Likewise.
21018         * tree-vrp.c (pass_vrp): Likewise.
21019
21020 2009-05-10  Ian Lance Taylor  <iant@google.com>
21021
21022         * basic-block.h (enum profile_status): Break out of struct
21023         control_flow_graph.
21024         * cgraph.h (struct inline_summary): Break out of struct
21025         cgraph_local_info.
21026         * cgraphunit.c (enum cgraph_order_sort_kind): New enum, broken out
21027         of struct cgraph_order_sort.
21028         * combine.c (enum undo_kind): New enum, broken out of struct undo.
21029         * cse.c (struct branch_path): Break out of struct
21030         cse_basic_block_data.
21031         * except.h (enum eh_region_type): Break out of struct eh_region.
21032         * gcc.c (enum add_del): Break out of struct modify_target.
21033         * genrecog.c (enum decision_type): Break out of struct decision_test.
21034         * ggc-page.c (struct ggc_pch_ondisk): Break out of struct
21035         ggc_pch_data.
21036         * matrix-reorg.c (struct free_info): Break out of struct matrix_info.
21037         * regmove.c (enum match_use): New enum, broken out of struct match.
21038         * sched-int.h (enum post_call_group): New enum, broken out of
21039         struct deps.
21040         (struct deps_reg): Break out of struct deps.
21041         * target.h (struct asm_int_op): Break out of struct gcc_target.
21042         * tree-eh.c (struct goto_queue_node): Break out of struct
21043         leh_tf_state.
21044         * tree-inline.h (enum copy_body_cge_which): Break out of
21045         copy_body_data.
21046         * tree-pass.h (enum opt_pass_type): Break out of struct opt_pass.
21047
21048         * c-decl.c (in_struct, struct_types): New static variables.
21049         (pushtag): Add loc parameter.  Change all callers.
21050         (lookup_tag): Add ploc parameter.  Change all callers.
21051         (check_compound_literal_type): New function.
21052         (parser_xref_tag): Add loc parameter.  Change all callers.  If
21053         -Wc++-compat, warn about struct/union/enum types defined within a
21054         struct or union.
21055         (start_struct): Add enclosing_in_struct, enclosing_struct_types,
21056         and loc parameters.  Change all callers.  Change error calls to
21057         error_at, using loc.  For a redefinition, if the location of the
21058         original definition is known, report it.  Set in_struct and
21059         struct_types.  If -Wc++-compat warn if in sizeof, typeof, or alignof.
21060         (finish_struct): Add new parameters enclosing_in_struct and
21061         enclosing_struct_types.  Change all callers.  Set
21062         C_TYPE_DEFINED_IN_STRUCT for all struct/union/enum types defined
21063         in the struct.  If in a struct, add this struct to struct_types.
21064         (start_enum): Add loc parameter.  Change all callers.  Use
21065         error_at for errors, using loc.  For a redefinition, if the
21066         location of the original definition is known, report it.  If in a
21067         struct, add this enum type to struct_types.  If -Wc++-compat warn
21068         if in sizeof, typeof, or alignof.
21069         * c-parser.c (disable_extension_diagnostics): Disable -Wc++-compat.
21070         (enable_extension_diagnostics): Reenable -Wc++-compat if appropriate.
21071         (c_parser_enum_specifier): Get enum location for start_enum.
21072         (c_parser_struct_or_union_specifier): Get struct location for
21073         start_struct.  Save in_struct and struct_types status between
21074         start_struct and finish_struct.
21075         (c_parser_cast_expression): Get location of cast.
21076         (c_parser_alignof_expression): Get location of type.
21077         (c_parser_postfix_expression): Likewise.
21078         (c_parser_postfix_expression_after_paren_type): Add type_loc
21079         parameter.  Change all callers.  Call check_compound_literal_type.
21080         Use type_loc for error about variable size type.
21081         * c-typeck.c (build_external_ref): If -Wc++-compat, warn about a use
21082         of an enum constant from an enum type defined in a struct or union.
21083         (c_cast_expr): Add loc parameter.  Change all callers.  If
21084         -Wc++-compat, warn about defining a type in a cast.
21085         * c-tree.h (C_TYPE_DEFINED_IN_STRUCT): Define.
21086         (start_enum, start_struct, finish_struct): Update declarations.
21087         (parser_xref_tag, c_cast_expr): Update declarations.
21088         (check_compound_literal_type): Declare.
21089
21090 2009-05-11  Ben Elliston  <bje@au.ibm.com>
21091
21092         * config/rs6000/rs6000-c.c (altivec_categorize_keyword): Update
21093         for recent libcpp interface change.
21094         (rs6000_macro_to_expand): Likewise.
21095
21096 2009-05-10  Michael Matz  <matz@suse.de>
21097
21098         PR target/40031
21099         * config/arm/arm.c (require_pic_register): Emit on entry edge,
21100         not at entry of function.
21101
21102 2009-05-10  Richard Guenther  <rguenther@suse.de>
21103
21104         PR tree-optimization/40081
21105         Revert
21106         * tree-sra.c (instantiate_element): Instantiate scalar replacements
21107         using the main variant of the element type.  Do not fiddle with
21108         TREE_THIS_VOLATILE or TREE_SIDE_EFFECTS.
21109
21110         * tree-sra.c (sra_type_can_be_decomposed_p): Do not decompose
21111         structs with volatile fields.
21112
21113 2009-05-10  Jan Hubicka  <jh@suse.cz>
21114
21115         * tree-inline.c (delete_unreachable_blocks_update_callgraph): Declare.
21116         (estimate_move_cost): Assert that it does not get called for
21117         VOID_TYPE_P.
21118         (estimate_num_insns): Skip VOID types in argument handling.
21119         (optimize_inline_calls): Delete unreachable blocks and verify that
21120         callgraph is valid.
21121
21122 2009-05-10  Jan Hubicka  <jh@suse.cz>
21123
21124         * cgraphbuild.c (record_reference): Use cgraph_mark_address_taken_node.
21125         * cgraph.c (cgraph_mark_address_taken_node): New function.
21126         (dump_cgraph_node): Dump new flag.
21127         * cgraph.h (struct cgraph_node): Add address_taken.
21128         (cgraph_mark_address_taken_node): New function.
21129         * ipa.c (cgraph_postorder): Prioritize functions with address taken
21130         since new direct calls can be born.
21131
21132 2009-05-10  Joseph Myers  <joseph@codesourcery.com>
21133
21134         * c-lex.c (c_lex_with_flags): Expect cpp_hashnode in
21135         tok->val.node.node.
21136
21137 2009-05-10  Jan Hubicka  <jh@suse.cz>
21138
21139         PR middle-end/40084
21140         * cgraph.c (cgraph_update_edges_for_call_stmt_node): Take old_call
21141         argument; rewrite.
21142         (cgraph_update_edges_for_call_stmt): Take old_decl argument.
21143         * cgraph.h (cgraph_update_edges_for_call_stmt): Update prototype.
21144         * tree-inline.c (copy_bb): Set frequency correctly.
21145         (fold_marked_statements): Update call to
21146         cgraph_update_edges_for_call_stmt.
21147
21148 2009-05-10  Joseph Myers  <joseph@codesourcery.com>
21149
21150         * config/arc/arc.c (arc_handle_interrupt_attribute): Use %qE for
21151         identifiers in diagnostics.
21152         * config/arm/arm.c (arm_handle_fndecl_attribute,
21153         arm_handle_isr_attribute): Likewise.
21154         * config/avr/avr.c (avr_handle_progmem_attribute,
21155         avr_handle_fndecl_attribute, avr_handle_fntype_attribute): Likewise.
21156         * config/bfin/bfin.c (handle_int_attribute,
21157         bfin_handle_longcall_attribute, bfin_handle_l1_text_attribute,
21158         bfin_handle_l1_data_attribute, bfin_handle_longcall_attribute,
21159         bfin_handle_l1_text_attribute, bfin_handle_l1_data_attribute):
21160         Likewise.
21161         * config/darwin.c (darwin_handle_kext_attribute,
21162         darwin_handle_weak_import_attribute): Likewise.
21163         * config/h8300/h8300.c (h8300_handle_fndecl_attribute,
21164         h8300_handle_eightbit_data_attribute,
21165         h8300_handle_tiny_data_attribute): Likewise.
21166         * config/i386/i386.c (ix86_handle_cconv_attribute,
21167         ix86_handle_abi_attribute, ix86_handle_struct_attribute): Likewise.
21168         * config/i386/winnt.c (ix86_handle_shared_attribute,
21169         ix86_handle_selectany_attribute): Likewise.
21170         * config/ia64/ia64.c (ia64_handle_model_attribute): Likewise.
21171         * config/m32c/m32c.c (function_vector_handler): Likewise.
21172         * config/m68hc11/m68hc11.c (m68hc11_handle_page0_attribute,
21173         m68hc11_handle_fntype_attribute): Likewise.
21174         * config/m68k/m68k.c (m68k_handle_fndecl_attribute): Likewise.
21175         * config/mcore/mcore.c (mcore_handle_naked_attribute): Likewise.
21176         * config/mips/mips.c (mips_insert_attributes,
21177         mips_merge_decl_attributes, mips_expand_builtin): Likewise.
21178         * config/rs6000/rs6000.c (rs6000_handle_longcall_attribute,
21179         rs6000_handle_struct_attribute): Likewise.
21180         * config/sh/sh.c (sh_insert_attributes,
21181         sh_handle_resbank_handler_attribute,
21182         sh_handle_interrupt_handler_attribute,
21183         sh2a_handle_function_vector_handler_attribute,
21184         sh_handle_sp_switch_attribute, sh_handle_trap_exit_attribute):
21185         Likewise.
21186         * config/sh/symbian.c (sh_symbian_mark_dllimport): Likewise.
21187         * config/spu/spu.c (spu_handle_fndecl_attribute,
21188         spu_handle_vector_attribute): Likewise.
21189         * config/stormy16/stormy16.c
21190         (xstormy16_handle_interrupt_attribute): Likewise.
21191         * config/v850/v850-c.c (ghs_pragma_section): Likewise.
21192         * config/v850/v850.c (v850_handle_interrupt_attribute): Likewise.
21193
21194 2009-05-10  Joseph Myers  <joseph@codesourcery.com>
21195
21196         * pretty-print.h (struct pretty_print_info): Add translate_identifiers.
21197         (pp_translate_identifiers): New.
21198         (pp_identifier): Only conditionally translate identifier to locale
21199         character set.
21200         * pretty-print.c (pp_construct): Set pp_translate_identifiers.
21201         (pp_base_tree_identifier): Only conditionally translate identifier
21202         to locale character set.
21203         * c-pretty-print.c (M_): Define.
21204         (pp_c_type_specifier, pp_c_primary_expression): Mark English
21205         fragments for conditional translation with M_.
21206         * tree-pretty-print.c (maybe_init_pretty_print): Disable
21207         identifier translation.
21208
21209 2009-05-10  Richard Guenther  <rguenther@suse.de>
21210
21211         PR tree-optimization/40081
21212         * tree-sra.c (instantiate_element): Instantiate scalar replacements
21213         using the main variant of the element type.  Do not fiddle with
21214         TREE_THIS_VOLATILE or TREE_SIDE_EFFECTS.
21215
21216 2009-05-09  Jan Hubicka  <jh@suse.cz>
21217
21218         PR middle-end/40080
21219         * cgraphunit.c (cgraph_materialize_all_clones): Do not redirect
21220         indirect calls; verify cgraph afterwards.
21221
21222 2009-05-09  Jan Hubicka  <jh@suse.cz>
21223
21224         PR bootstrap/40082
21225         * ipa.c (update_inlined_to_pointer): New function.
21226         (cgraph_remove_unreachable_nodes): Use it.
21227
21228 2009-05-09  Jan Hubicka  <jh@suse.cz>
21229
21230         * tree-eh.c (struct leh_state): Remove prev_try.
21231         (lower_try_finally, lower_catch, lower_eh_filter, lower_cleanup): Do
21232         not track prev_try.
21233         * except.c (gen_eh_region_cleanup, duplicate_eh_regions,
21234         copy_eh_region_1, copy_eh_region, redirect_eh_edge_to_label,
21235         remove_eh_handler_and_replace, foreach_reachable_handler,
21236         verify_eh_region, verify_eh_tree): Remove tracking of prev_try pointer.
21237         * except.h (struct eh_region): Remove eh_region_u_cleanup.
21238         (gen_eh_region_cleanup): Update prototype.
21239
21240 2009-05-09  Jan Hubicka  <jh@suse.cz>
21241
21242         PR middle-end/40043
21243         * except.c (copy_eh_region): Always set prev_try.
21244         (redirect_eh_edge_to_label): Find outer try.
21245         (foreach_reachable_handler): When looking for prev try
21246         handle case where previous try is not going to be taken.
21247
21248 2009-05-07  Michael Meissner  <meissner@linux.vnet.ibm.com>
21249
21250         PR tree-optimization/40049
21251         * tree-vect-stmts.c (vectorizable_operation): If the machine has
21252         only vector/vector shifts, convert the type of the constant to the
21253         appropriate type to avoid building incorrect trees, which
21254         eventually have problems with garbage collection.
21255
21256 2009-05-08  Joseph Myers  <joseph@codesourcery.com>
21257
21258         * fold-const.c (fold_binary): Do not fold multiplication by 1 or
21259         -1 for complex floating-point types if honoring signed zeros.
21260
21261 2009-05-08  Jan Hubicka  <jh@suse.cz>
21262
21263         * cgraphbuild.c (compute_call_stmt_bb_frequency): Accept function
21264         argument; handle correctly when profile is absent.
21265         (build_cgraph_edges): Update.
21266         (rebuild_cgraph_edges): Update.
21267         * cgraph.c: Do not include varray.h.
21268         (cgraph_set_call_stmt_including_clones): New function.
21269         (cgraph_create_edge_including_clones): Likewise
21270         (cgraph_update_edges_for_call_stmt_node): New static cfunction.
21271         (cgraph_update_edges_for_call_stmt): Handle clones.
21272         (cgraph_remove_node): Handle clone tree.
21273         (cgraph_remove_node_and_inline_clones): New function.
21274         (dump_cgraph_node): Dump clone tree.
21275         (cgraph_clone_node): Handle clone tree.
21276         (clone_function_name): Bring here from tree-inline.c.
21277         (cgraph_create_virtual_clone): New function.
21278         * cgraph.h (ipa_replace_map): Move here from ipa.h.
21279         (cgraph_clone_info): New function.
21280         (strut cgraph_node): Add clone_info and new clone tree pointers.
21281         (cgraph_remove_node_and_inline_clones,
21282         cgraph_set_call_stmt_including_clones,
21283         cgraph_create_edge_including_clones,
21284         cgraph_create_virtual_clone): Declare.
21285         (cgraph_function_versioning): Use VEC argument.
21286         (compute_call_stmt_bb_frequency): Update prototype.
21287         (cgraph_materialize_all_clones): New function.
21288         * ipa-cp.c (ipcp_update_cloned_node): Remove.
21289         (ipcp_create_replace_map): Update to VECtors.
21290         (ipcp_update_callgraph): Use virtual clones.
21291         (ipcp_update_bb_counts, ipcp_update_edges_counts): Remove.
21292         (ipcp_update_profiling): Do not update local profiling.
21293         (ipcp_insert_stage): Use VECtors and virtual clones.
21294         * cgraphunit.c (verify_cgraph_node): Verify clone tree.
21295         (clone_of_p): New function.
21296         (cgraph_preserve_function_body_p): Use clone tree.
21297         (cgraph_optimize): Materialize clones.
21298         (cgraph_function_versioning): Update for VECtors.
21299         (save_inline_function_body): Use clone tree.
21300         (cgraph_materialize_clone): New function.
21301         (cgraph_materialize_all_clones): Likewise.
21302         * ipa-inline.c (cgraph_default_inline_p): Use analyzed flags.
21303         * ipa.c: Include gimple.h.
21304         (cgraph_remove_unreachable_nodes): Use clone tree.
21305         * ipa-prop.c (ipa_note_param_call): Update call to
21306         compute_call_stmt_bb_frequencycall.
21307         * ipa-prop.h (ipa_replace_map): Move to cgraph.h.
21308         * tree-inline.c: Do not include varray.h or gt-tree-inline.h.
21309         (copy_bb): Handle updating of clone tree; add new edge when new call
21310         appears.
21311         (expand_call_inline): Be strict about every call having edge.
21312         (clone_fn_id_num, clone_function_name): Move to cgraph.c.
21313         (delete_unreachable_blocks_update_callgraph): New function.
21314         (tree_function_versioning): Use VECtors; always remove unreachable
21315         blocks and fold conditionals.
21316         * tree-inline.h: Do not include varray.h.
21317         (tree_function_versioning): Remove.
21318         * Makefile.in (GTFILES): Remove tree-inline.c
21319         * passes.c (do_per_function): Do only functions having body.
21320         * ipa-struct-reorg.c (do_reorg_1, collect_data_accesses): Handle clone
21321         tree.
21322
21323 2009-05-08  H.J. Lu  <hongjiu.lu@intel.com>
21324             Andrew Morrow  <acm@google.com>
21325
21326         PR c/36892
21327         * c-common.c (c_common_attribute_table): Permit deprecated
21328         attribute to take an optional argument.
21329         (handle_deprecated_attribute): If the optional argument to
21330         __attribute__((deprecated)) is not a string ignore the attribute
21331         and emit a warning.
21332
21333         * c-decl.c (grokdeclarator): Updated warn_deprecated_use call.
21334         * c-typeck.c (build_component_ref): Likewise.
21335         (build_external_ref): Likewise.
21336
21337         * toplev.c (warn_deprecated_use): Add an attribute argument.
21338         Emit the message associated with __attribute__((deprecated)).
21339
21340         * toplev.h (warn_deprecated_use): Updated.
21341
21342         * doc/extend.texi: Document new optional parameter to
21343         __attribute__((deprecated))
21344
21345 2009-05-08  Michael Eager <eager@eagercon.com>
21346
21347         * config/rs6000/rs6000.md (*movdf_softfloat32): replace
21348         !TARGET_DOUBLE_FLOAT with TARGET_SINGLE_FLOAT.
21349
21350 2009-05-08  Richard Guenther  <rguenther@suse.de>
21351
21352         PR tree-optimization/40062
21353         * tree-scalar-evolution.c (follow_ssa_edge_in_condition_phi):
21354         Avoid exponential behavior.
21355
21356 2009-05-08  Paolo Bonzini  <bonzini@gnu.org>
21357
21358         PR rtl-optimization/33928
21359         PR 26854
21360         * fwprop.c (use_def_ref, get_def_for_use, bitmap_only_bit_bitween,
21361         process_uses, build_single_def_use_links): New.
21362         (update_df): Update use_def_ref.
21363         (forward_propagate_into): Use get_def_for_use instead of use-def
21364         chains.
21365         (fwprop_init): Call build_single_def_use_links and let it initialize
21366         dataflow.
21367         (fwprop_done): Free use_def_ref.
21368         (fwprop_addr): Eliminate duplicate call to df_set_flags.
21369         * df-problems.c (df_rd_simulate_artificial_defs_at_top,
21370         df_rd_simulate_one_insn): New.
21371         (df_rd_bb_local_compute_process_def): Update head comment.
21372         (df_chain_create_bb): Use the new RD simulation functions.
21373         * df.h (df_rd_simulate_artificial_defs_at_top,
21374         df_rd_simulate_one_insn): New.
21375         * opts.c (decode_options): Enable fwprop at -O1.
21376         * doc/invoke.texi (-fforward-propagate): Document this.
21377
21378 2009-05-08  Joseph Myers  <joseph@codesourcery.com>
21379
21380         PR c/24581
21381         * c-typeck.c (build_binary_op): Handle arithmetic between one real
21382         and one complex operand specially.
21383         * tree-complex.c (some_nonzerop): Do not identify a real value as
21384         zero if flag_signed_zeros.
21385
21386 2009-05-08  Paolo Bonzini  <bonzini@gnu.org>
21387
21388         PR rtl-optimization/33928
21389         * loop-invariant.c (record_use): Fix && vs. || mishap.
21390
21391 2009-05-08  Paolo Bonzini  <bonzini@gnu.org>
21392
21393         PR rtl-optimization/33928
21394         * loop-invariant.c (struct use): Add addr_use_p.
21395         (struct def): Add n_addr_uses.
21396         (struct invariant): Add cheap_address.
21397         (create_new_invariant): Set cheap_address.
21398         (record_use): Accept df_ref.  Set addr_use_p and update n_addr_uses.
21399         (record_uses): Pass df_ref to record_use.
21400         (get_inv_cost): Do not add inv->cost to comp_cost for cheap addresses
21401         used only as such.
21402
21403 2009-05-08  Kaz Kojima  <kkojima@gcc.gnu.org>
21404
21405         * config/sh/sh.c: Do not include c-pragma.h.
21406
21407 2009-05-07  Andrew Pinski  <andrew_pinski@playstation.sony.com>
21408
21409         * config/spu/spu.c: Remove include of c-common.h.
21410
21411 2009-05-07  Janis Johnson  <janis187@us.ibm.com>
21412
21413         PR c/39037
21414         * c-common.h (mark_valid_location_for_stdc_pragma,
21415         valid_location_for_stdc_pragma_p, set_float_const_decimal64,
21416         clear_float_const_decimal64, float_const_decimal64_p): New.
21417         * c.opt (Wunsuffixed-float-constants): New.
21418         * c-lex.c (interpret_float): Use pragma FLOAT_CONST_DECIMAL64 for
21419         unsuffixed float constant, handle new warning.
21420         * c-cppbuiltin.c (c_cpp_builtins): Use cast for double constants.
21421         * c-decl.c (c_scope): New flag float_const_decimal64.
21422         (set_float_const_decimal64, clear_float_const_decimal64,
21423         float_const_decimal64_p): New.
21424         (push_scope): Set new flag.
21425         * c-parser.c (c_parser_translation_unit): Mark when it's valid
21426         to use STDC pragmas.
21427         (c_parser_external_declaration): Ditto.
21428         (c_parser_compound_statement_nostart): Ditto.
21429         * c-pragma.c (valid_location_for_stdc_pragma,
21430         mark_valid_location_for_stdc_pragma,
21431         valid_location_for_stdc_pragma_p, handle_stdc_pragma,
21432         handle_pragma_float_const_decimal64): New.
21433         (init_pragma): Register new pragma FLOAT_CONST_DECIMAL64.
21434         * cp/semantics.c (valid_location_for_stdc_pragma_p,
21435         set_float_const_decimal64, clear_float_const_decimal64,
21436         float_const_decimal64_p): New dummy functions.
21437         * doc/extend.texi (Decimal Float): Remove statement that the
21438         pragma, and suffix for double constants, are not supported.
21439         * doc/invoke.texi (Warning Options): List new option.
21440         (-Wunsuffixed-float-constants): New.
21441
21442 2009-05-08  Steven Bosscher  <steven@gcc.gnu.org>
21443
21444         * config/i386/i386.c: Do not include c-common.h.
21445
21446 2009-05-07  Mark Heffernan  <meheff@google.com>
21447
21448         * doc/invoke.texi (Debugging Options): Document change of debugging
21449         dump location.
21450         * opts.c (decode_options): Make dump_base_name relative to
21451         aux_base_name directory.
21452
21453 2009-05-07  Hariharan Sandanagobalane <hariharan@picochip.com>
21454
21455         * config/picochip/picochip.h (NO_DOLLAR_IN_LABEL): Added.
21456         * config/picochip/libgccExtras/divmod15.asm : Removed redefiniton.
21457
21458 2009-05-07  Rafael Avila de Espindola  <espindola@google.com>
21459
21460         * Makefile.in (install-plugin): Simplify a bit.
21461
21462 2009-05-07  Paolo Bonzini  <bonzini@gnu.org>
21463
21464         * Makefile.in (OBJS-common): Add regcprop.o.
21465         (regcprop.o): New.
21466         * timevar.def (TV_CPROP_REGISTERS): New.
21467         * regrename.c (regrename_optimize): Return 0.
21468         (rest_of_handle_regrename): Delete.
21469         (pass_rename_registers): Point to regrename_optimize.
21470         (struct value_data_entry, struct value_data,
21471         kill_value_one_regno, kill_value_regno, kill_value,
21472         set_value_regno, init_value_data, kill_clobbered_value,
21473         kill_set_value, kill_autoinc_value, copy_value,
21474         mode_change_ok, maybe_mode_change, find_oldest_value_reg,
21475         replace_oldest_value_reg, replace_oldest_value_addr,
21476         replace_oldest_value_mem, copyprop_hardreg_forward_1,
21477         debug_value_data, validate_value_data): Move...
21478         * regcprop.c: ... here.
21479         (rest_of_handle_cprop): Delete.
21480         (pass_cprop_hardreg): Point to copyprop_hardreg_forward.
21481
21482 2009-05-07  Jakub Jelinek  <jakub@redhat.com>
21483
21484         PR middle-end/40057
21485         * dojump.c (prefer_and_bit_test): Use immed_double_const instead of
21486         GEN_INT for 1 << bitnum.
21487         (do_jump) <case BIT_AND_EXPR>: Use build_int_cst_wide_type instead of
21488         build_int_cst_type.
21489
21490 2009-05-07  Uros Bizjak  <ubizjak@gmail.com>
21491
21492         * doc/md.texi (Standard Pattern Names For Generation) [sync_nand]:
21493         Remove wrong description of "nand" operation.
21494
21495 2009-05-06  Richard Guenther  <rguenther@suse.de>
21496             Adam Nemet  <anemet@caviumnetworks.com>
21497
21498         * gimple.def (GIMPLE_ASSIGN): Fix incorrect information in the
21499         comment.  Add that if LHS is not a gimple register, then RHS1 has
21500         to be a single object (GIMPLE_SINGLE_RHS).
21501
21502 2009-05-06  Adam Nemet  <anemet@caviumnetworks.com>
21503
21504         * expr.c (get_def_for_expr): Move it up in the file.
21505         (store_field): When expanding a bit-field store, look at the
21506         defining gimple stmt for the masking conversion.
21507
21508 2009-05-06  Janis Johnson  <janis187@us.ibm.com>
21509
21510         PR middle-end/39986
21511         * dfp.c (encode_decimal32, decode_decimal32, encode_decimal64,
21512         decode_decimal64, encode_decimal128, decode_decimal128): Avoid
21513         32-bit memcpy into long.
21514
21515 2009-05-06  Jakub Jelinek  <jakub@redhat.com>
21516
21517         * dwarf2out.c (new_reg_loc_descr): Don't ever create DW_OP_regX.
21518         (one_reg_loc_descriptor): Create DW_OP_regX here instead of calling
21519         new_reg_loc_descr.
21520         (loc_by_reference): If loc is DW_OP_regX, change it into DW_OP_bregX 0
21521         instead of appending DW_OP_deref*.
21522
21523 2009-05-06  Michael Matz  <matz@suse.de>
21524
21525         PR middle-end/40021
21526         * cfgexpand.c (maybe_cleanup_end_of_block): New static function.
21527         (expand_gimple_cond): Use it to cleanup CFG and superfluous jumps.
21528
21529 2009-05-06  Rafael Avila de Espindola  <espindola@google.com>
21530
21531         * Makefile.in (install-plugin): Fix srcdir handling.
21532
21533 2009-05-06  Andrey Belevantsev  <abel@ispras.ru>
21534
21535         * tree-ssa.c (execute_update_address_taken): Handle TARGET_MEM_REF
21536         when processing for not_regs_needed bitmap.
21537         * gimple.c (walk_stmt_load_store_addr_ops): When visiting address,
21538         handle TARGET_MEM_REF in lhs.  Check TMR_BASE for NULL while
21539         handling it for rhs.
21540
21541 2009-05-06  H.J. Lu  <hongjiu.lu@intel.com>
21542
21543         * config/i386/i386.md (unnamed inc/dec peephole): Use
21544         optimize_insn_for_size_p instead of optimize_size.
21545         * config/i386/predicates.md (incdec_operand): Likewise.
21546         (aligned_operand): Likewise.
21547         * config/i386/sse.md (divv8sf3): Likewise.
21548         (sqrtv8sf2): Likewise.
21549
21550 2009-05-06  H.J. Lu  <hongjiu.lu@intel.com>
21551
21552         * config/i386/i386.c (ix86_build_signbit_mask): Make it static.
21553
21554         * config/i386/i386-protos.h (ix86_build_signbit_mask): Removed.
21555
21556 2009-05-06  H.J. Lu  <hongjiu.lu@intel.com>
21557
21558         * config/i386/i386.md (*avx_<code><mode>3_finite): Replace
21559         ssemodesuffixf2c with avxmodesuffixf2c.
21560
21561 2009-05-06  Joseph Myers  <joseph@codesourcery.com>
21562
21563         PR c/40032
21564         * c-decl.c (grokdeclarator): Handle incomplete type of unnamed field.
21565
21566 2009-05-05  Jakub Jelinek  <jakub@redhat.com>
21567
21568         * tree.h: Remove DECL_BY_REFERENCE from private_flag comment.
21569         (struct tree_base): Adjust spacing for 8 bit boundaries.
21570         (struct tree_decl_common): Add decl_by_reference_flag bit.
21571         (DECL_BY_REFERENCE): Adjust.
21572         * print-tree.c (print_node): For VAR_DECL, PARM_DECL or RESULT_DECL,
21573         print DECL_BY_REFERENCE bit.
21574         * dbxout.c (DECL_ACCESSIBILITY_CHAR): Revert last change.
21575         * dwarf2out.c (loc_by_reference, gen_decl_die): Check
21576         DECL_BY_REFERENCE for all VAR_DECLs, not just non-static ones.
21577         (gen_variable_die): Likewise.  Check TREE_PRIVATE/TREE_PROTECTED
21578         unconditionally.
21579
21580         PR middle-end/39666
21581         * gimplify.c (gimplify_switch_expr): If case labels cover the whole
21582         range of the type, but default label is missing, add it with one
21583         of the existing labels instead of adding a new label for it.
21584
21585 2009-05-05  Joseph Myers  <joseph@codesourcery.com>
21586
21587         * dwarf.h: Remove.
21588
21589 2009-05-05  Rafael Avila de Espindola  <espindola@google.com>
21590
21591         * Makefile.in (enable_plugin, plugin_includedir): New.
21592         (install): Depend on install-plugin.
21593         (PLUGIN_HEADERS): New.
21594         (install-plugin): New.
21595         * config.gcc: Add vxworks-dummy.h to tm_file for x86 and x86-64.
21596
21597 2009-05-05  Richard Guenther  <rguenther@suse.de>
21598
21599         PR tree-optimization/40022
21600         * tree-ssa-phiprop.c (struct phiprop_d): Exchange vop_stmt for
21601         the only vuse.
21602         (phivn_valid_p): Fix tuplification error, simplify.
21603         (phiprop_insert_phi): Add dumps.
21604         (propagate_with_phi): Simplify.
21605
21606 2009-05-05  Richard Guenther  <rguenther@suse.de>
21607
21608         PR middle-end/40023
21609         * builtins.c (gimplify_va_arg_expr): Properly build the address.
21610
21611 2009-05-05  Shujing Zhao  <pearly.zhao@oracle.com>
21612
21613         * tree.h (strip_float_extensions): Remove duplicate declaration.
21614         (build_low_bits_mask, debug_fold_checksum, expand_function_end,
21615         expand_function_start, stack_protect_prologue, stack_protect_epilogue,
21616         block_ultimate_origin): Rearrange the declarations line to match the
21617         comment that indicates the .c file which the functions are defined.
21618         (dwarf2out_*, set_decl_rtl): Add comment.
21619         (get_base_address): Adjust comment.
21620         (change_decl_assembler_name, maybe_fold_*, build_addr): Rearrange the
21621         declarations line and add comment.
21622         (is_builtin_name): Add blank after function name, for clarity.
21623
21624 2009-05-04  Joseph Myers  <joseph@codesourcery.com>
21625
21626         * attribs.c (decl_attributes): Use %qE for identifiers in
21627         diagnostics.
21628         * cgraphunit.c (verify_cgraph_node): Translate function names to
21629         locale character set in diagnostics.
21630         * coverage.c (get_coverage_counts): Use %qE for identifiers in
21631         diagnostics.
21632         * doc/invoke.texi (-finstrument-functions-exclude-function-list):
21633         Document that functions are named in UTF-8.
21634         * expr.c (expand_expr_real_1): Translate function names to locale
21635         character set in diagnostics.
21636         * gimplify.c (omp_notice_variable, omp_is_private,
21637         gimplify_scan_omp_clauses): Use %qE for identifiers in
21638         diagnostics.
21639         * langhooks.c (lhd_print_error_function): Translate function names
21640         to locale character set.
21641         * langhooks.h (decl_printable_name): Document that return value is
21642         in internal character set.
21643         * stmt.c: Include pretty-print.h
21644         (tree_conflicts_with_clobbers_p): Use %qE for identifiers in
21645         diagnostics.
21646         (resolve_operand_name_1): Translate named operand name to locale
21647         character set.
21648         * stor-layout.c (finalize_record_size): Use %qE for identifiers in
21649         diagnostics.
21650         * toplev.c (announce_function): Translate function names to locale
21651         character set.
21652         (warn_deprecated_use): Use %qE for identifiers in diagnostics.
21653         (default_tree_printer): Use pp_identifier or translate identifiers
21654         to locale character set.  Mark "<anonymous>" for translation.
21655         * tree-mudflap.c (mx_register_decls, mudflap_finish_file): Use %qE
21656         for identifiers in diagnostics.
21657         * tree.c (handle_dll_attribute): Use %qE for identifiers in
21658         diagnostics.
21659         * varasm.c (output_constructor): Use %qE for identifiers in
21660         diagnostics.
21661
21662 2009-05-04  Rafael Avila de Espindola  <espindola@google.com>
21663
21664         * configure.ac: use ` ` instead of $()
21665         * configure: Regenerate.
21666
21667 2009-05-05  Ben Elliston  <bje@au.ibm.com>
21668
21669         * config/pa/linux-atomic.c: Eliminate conditional include of
21670         errno.h on non-LP64 systems to simplify build requirements.
21671
21672 2009-05-04  Joseph Myers  <joseph@codesourcery.com>
21673
21674         * c-common.c (handle_mode_attribute): Use %qE for identifiers in
21675         diagnostics.
21676         * c-decl.c (check_bitfield_type_and_width): Make orig_name a tree
21677         and pass value to identifier_to_locale.
21678         (warn_variable_length_array): Make name a tree.
21679         (grokdeclarator): Separate diagnostic texts for named and unnamed
21680         declarators.  Use %qE for named declarators.
21681         * c-parser.c (c_lex_one_token): Use %qE for identifiers in
21682         diagnostics.
21683         * c-pragma.c (pop_alignment, handle_pragma_pack): Use %qE for
21684         identifiers in diagnostics.
21685         * c-typeck.c (push_member_name, start_init): Pass identifiers to
21686         identifier_to_locale.  Mark "anonymous" strings for translation.
21687
21688 2009-05-04  Michael Eager <eager@eagercon.com>
21689
21690         * config/rs6000/rs6000.c (rs6000_legitimate_address): Allow
21691         address for DImode/DFmode only if double-precision FP regs.
21692
21693 2009-05-04  Michael Eager <eager@eagercon.com>
21694
21695         * config/rs6000/rs6000.c (rs6000_libcall_value): Add
21696         TARGET_SINGLE_FLOAT check.
21697
21698 2009-05-04  Michael Eager <eager@eagercon.com>
21699
21700         * config/rs6000/xilinx.h: Add CPP_SPEC for -mxilinx-fpu options.
21701
21702 2009-05-04  Michael Eager <eager@eagercon.com>
21703
21704         * gcc/config.gcc (powerpc-xilinx-eabi*): Add tm t-xilinx
21705         * config/rs6000/t-xilinx: New
21706
21707 2009-05-04  Paolo Bonzini  <bonzini@gnu.org>
21708
21709         * doc/tm.texi (LEGITIMIZE_ADDRESS): Revise documentation.
21710         * gcc/defaults.h (LEGITIMIZE_ADDRESS): Delete.
21711         * gcc/explow.c (memory_address): Use target hook.
21712         * gcc/targhooks.c (default_legitimize_address): New.
21713         * gcc/targhooks.h (default_legitimize_address): New.
21714         * gcc/target.h (legitimize_address): New.
21715         * gcc/target-def.h (TARGET_LEGITIMIZE_ADDRESS): New.
21716         (TARGET_INITIALIZER): Include it.
21717         * gcc/system.h (LEGITIMIZE_ADDRESS): Poison.
21718
21719         * config/bfin/bfin-protos.h (legitimize_address): Remove.
21720         * config/bfin/bfin.c (legitimize_address): Remove.
21721         * config/bfin/bfin.h (LEGITIMIZE_ADDRESS): Remove.
21722         * config/m68hc11/m68hc11-protos.h (m68hc11_legitimize_address):
21723         Remove.
21724         * config/m68hc11/m68hc11.c (m68hc11_legitimize_address): Remove.
21725         * config/m68hc11/m68hc11.h (LEGITIMIZE_ADDRESS): Remove.
21726
21727         * gcc/config/arm/arm.h (LEGITIMIZE_ADDRESS, ARM_LEGITIMIZE_ADDRESS,
21728         THUMB_LEGITIMIZE_ADDRESS, THUMB2_LEGITIMIZE_ADDRESS): Delete.
21729         * gcc/config/s390/s390.h (LEGITIMIZE_ADDRESS): Delete.
21730         * gcc/config/m32c/m32c.h (LEGITIMIZE_ADDRESS): Delete.
21731         * gcc/config/sparc/sparc.h (LEGITIMIZE_ADDRESS): Delete.
21732         * gcc/config/m32r/m32r.h (LEGITIMIZE_ADDRESS): Delete.
21733         * gcc/config/i386/i386.h (LEGITIMIZE_ADDRESS): Delete.
21734         * gcc/config/sh/sh.h (LEGITIMIZE_ADDRESS): Delete.
21735         * gcc/config/avr/avr.h (LEGITIMIZE_ADDRESS): Delete.
21736         * gcc/config/m68hc11/m68hc11.h (LEGITIMIZE_ADDRESS): Delete.
21737         * gcc/config/iq2000/iq2000.h (LEGITIMIZE_ADDRESS): Delete.
21738         * gcc/config/mn10300/mn10300.h (LEGITIMIZE_ADDRESS): Delete.
21739         * gcc/config/m68k/m68k.h (LEGITIMIZE_ADDRESS): Delete.
21740         * gcc/config/score/score.h (LEGITIMIZE_ADDRESS): Delete.
21741         * gcc/config/pa/pa.h (LEGITIMIZE_ADDRESS): Delete.
21742         * gcc/config/mips/mips.h (LEGITIMIZE_ADDRESS): Delete.
21743         * gcc/config/alpha/alpha.h (LEGITIMIZE_ADDRESS): Delete.
21744         * gcc/config/frv/frv.h (LEGITIMIZE_ADDRESS): Delete.
21745         * gcc/config/spu/spu.h (LEGITIMIZE_ADDRESS): Delete.
21746         * gcc/config/xtensa/xtensa.h (LEGITIMIZE_ADDRESS): Delete.
21747         * gcc/config/cris/cris.h (LEGITIMIZE_ADDRESS): Delete.
21748         * gcc/config/rs6000/rs6000.h (LEGITIMIZE_ADDRESS): Delete.
21749         * gcc/config/picochip/picochip.h (LEGITIMIZE_ADDRESS): Delete.
21750
21751         * gcc/config/s390/s390-protos.h (legitimize_address): Delete.
21752         * gcc/config/m32c/m32c-protos.h (m32c_legitimize_address): Delete.
21753         * gcc/config/sparc/sparc-protos.h (legitimize_address): Delete.
21754         * gcc/config/i386/i386-protos.h (legitimize_address): Delete.
21755         * gcc/config/avr/avr-protos.h (legitimize_address): Delete.
21756         * gcc/config/mn10300/mn10300-protos.h (legitimize_address): Delete.
21757         * gcc/config/score/score-protos.h (score_legitimize_address): Delete.
21758         * gcc/config/arm/arm-protos.h (arm_legitimize_address,
21759         (thumb_legitimize_address): Delete.
21760         * gcc/config/pa/pa-protos.h (hppa_legitimize_address): Delete.
21761         * gcc/config/mips/mips-protos.h (mips_legitimize_address): Delete.
21762         * gcc/config/alpha/alpha-protos.h (alpha_legitimize_address): Delete.
21763         * gcc/config/frv/frv-protos.h (frv_legitimize_address): Delete.
21764         * gcc/config/spu/spu-protos.h (spu_legitimize_address): Delete.
21765         * gcc/config/xtensa/xtensa-protos.h (xtensa_legitimize_address):
21766         Delete.
21767         * gcc/config/rs6000/rs6000-protos.h (rs6000_legitimize_address):
21768         Delete.
21769
21770         * config/arm/arm.c (arm_legitimize_address): Maybe call Thumb version.
21771         * config/m32c/m32c.c (m32c_legitimize_address): Standardize.
21772         * config/m32r/m32r.c (m32r_legitimize_address): New.
21773         * config/m68k/m68k.c (m68k_legitimize_address): New.
21774         * config/score/score.c (score_legitimize_address): Standardize.
21775         * config/score/score3.c (score3_legitimize_address): Standardize.
21776         * config/score/score3.h (score3_legitimize_address): Adjust.
21777         * config/score/score7.c (score7_legitimize_address): Standardize.
21778         * config/score/score7.h (score7_legitimize_address): Adjust.
21779         * config/sh/sh.c (sh_legitimize_address): New.
21780         * config/iq2000/iq2000.c (iq2000_legitimize_address): New.
21781
21782         * gcc/config/s390/s390.c (legitimize_address): Rename to...
21783         (s390_legitimize_address): ... this.
21784         * gcc/config/sparc/sparc.c (legitimize_address): Rename to...
21785         (sparc_legitimize_address): ... this.
21786         * gcc/config/i386/i386.c (legitimize_address): Rename to...
21787         (ix86_legitimize_address): ... this.
21788         * gcc/config/avr/avr.c (legitimize_address): Rename to...
21789         (avr_legitimize_address): ... this.
21790         * gcc/config/mn10300/mn10300.c (legitimize_address): Rename to...
21791         (mn10300_legitimize_address): ... this.
21792         * config/alpha/alpha.c (alpha_legitimize_address): Wrap...
21793         (alpha_legitimize_address_1): ... the old alpha_legitimize_address.
21794         (alpha_expand_mov): Adjust call.
21795
21796         * config/frv/frv.c (frv_legitimize_address): Return x on failure.
21797         * config/spu/spu.c (spu_legitimize_address): Likewise.
21798         * config/xtensa/xtensa.c (xtensa_legitimize_address): Likewise.
21799         * config/rs6000/rs6000.c (rs6000_legitimize_address): Likewise.
21800
21801 2009-05-04  Joseph Myers  <joseph@codesourcery.com>
21802
21803         * intl.c (locale_encoding, locale_utf8): New.
21804         (gcc_init_libintl): Initialize locale_encoding and locale_utf8.
21805         * intl.h (locale_encoding, locale_utf8): Declare.
21806         * pretty-print.c: Include ggc.h.  Include iconv.h if HAVE_ICONV.
21807         (pp_base_tree_identifier, decode_utf8_char, identifier_to_locale):
21808         New.
21809         * pretty-print.h (pp_identifier): Call identifier_to_locale on ID
21810         argument.
21811         (pp_tree_identifier): Define to call pp_base_tree_identifier.
21812         (pp_base_tree_identifier): Declare as function.
21813         (identifier_to_locale): Declare.
21814         * Makefile.in (pretty-print.o): Update dependencies.
21815         * varasm.c (finish_aliases_1): Use %qE for identifiers in diagnostics.
21816
21817 2009-05-04  Richard Guenther  <rguenther@suse.de>
21818
21819         PR middle-end/40015
21820         * builtins.c (fold_builtin_memory_op): Do not decay to element
21821         type if the size matches the whole array.
21822
21823 2009-05-04  Kazu Hirata  <kazu@codesourcery.com>
21824
21825         * expmed.c (synth_mult): When trying out a shift, pass the result
21826         of a signed shift.
21827
21828 2009-05-04  Kazu Hirata  <kazu@codesourcery.com>
21829
21830         * expmed.c (shiftsub_cost): Rename to shiftsub0_cost.
21831         (shiftsub1_cost): New.
21832         (init_expmed): Compute shiftsub1_cost.
21833         (synth_mult): Optimize multiplications by constants of the form
21834         -(2^^m-1) for some constant positive integer m.
21835
21836 2009-05-03  Richard Guenther  <rguenther@suse.de>
21837
21838         PR c/39983
21839         * c-typeck.c (array_to_pointer_conversion): Do not built
21840         ADDR_EXPRs of arrays of pointer-to-element type.
21841         * c-gimplify.c (c_gimplify_expr): Revert change fixing
21842         up wrong ADDR_EXPRs after-the-fact.
21843         * c-common.c (strict_aliasing_warning): Strip pointer
21844         conversions for obtaining the original type.
21845         * builtins.c (fold_builtin_memset): Handle array types.
21846         (fold_builtin_memory_op): Handle folded POINTER_PLUS_EXPRs
21847         and array types
21848
21849 2009-05-03  Richard Guenther  <rguenther@suse.de>
21850
21851         PR middle-end/23329
21852         * tree-ssa.c (useless_type_conversion_p_1): Use get_deref_alias_set.
21853         Do not lose casts from array types with unknown extent to array
21854         types with known extent.
21855         * tree-ssa-copy.c (may_propagate_copy): Remove hack checking for
21856         alias set compatibility.
21857
21858 2009-05-03  Manuel López-Ibáñez  <manu@gcc.gnu.org>
21859
21860         * flags.h (extra_warnings): Delete.
21861         * toplev.c (process_options): Handle Wuninitialized here.
21862         * opts.c (extra_warnings): Delete.
21863         (set_Wextra): Delete.
21864         (common_handle_option): -Wextra can be handled automatically.
21865         * c-opts.c (c_common_handle_option): Delete obsolete code.
21866         (c_common_post_options): Simplify comment.
21867         * common.opt (W): Add Var.
21868         (Wextra): Add Var.
21869         (Wuninitialized): Initialize to -1.
21870
21871 2009-05-03  Adam Nemet  <anemet@caviumnetworks.com>
21872             Richard Guenther  <rguenther@suse.de>
21873
21874         * expr.c (get_def_for_expr): New function.
21875         (expand_expr_real_1) <PLUS_EXPR, MINUS_EXPR>: Adjust to work with
21876         SSA rather than trees.
21877         <MULT_EXPR>: Likewise.  Use subexp0 and subexp1 instead of
21878         TREE_OPERAND (exp, 0) and TREE_OPERAND (exp, 1).
21879
21880 2009-05-03  Joseph Myers  <joseph@codesourcery.com>
21881
21882         * c-common.c (reswords): Add _Imaginary.
21883         * c-common.c (enum rid): Add RID_IMAGINARY.
21884
21885 2009-05-03  Paolo Bonzini  <bonzini@gnu.org>
21886
21887         * tree.h (TYPE_VECTOR_OPAQUE): Fix documentation.
21888         Patch by Richard Guenther.
21889
21890 2009-05-03  Anatoly Sokolov  <aesok@post.ru>
21891
21892         * defaults.h (FRAME_POINTER_REQUIRED): Provide default.
21893         * doc/tm.texi (FRAME_POINTER_REQUIRED): Revise documentation.
21894         * config/alpha/alpha.h (FRAME_POINTER_REQUIRED): Delete.
21895         * config/s390/s390.h (FRAME_POINTER_REQUIRED): Delete.
21896         * config/spu/spu.h (FRAME_POINTER_REQUIRED): Delete.
21897         * config/sh/sh.h (FRAME_POINTER_REQUIRED): Delete.
21898         * config/pdp11/pdp11.h (FRAME_POINTER_REQUIRED): Delete.
21899         * config/stormy16/stormy16.h (FRAME_POINTER_REQUIRED): Delete.
21900         * config/m68hc11/m68hc11.h (FRAME_POINTER_REQUIRED): Delete.
21901         * config/iq2000/iq2000.h (FRAME_POINTER_REQUIRED): Delete.
21902         * config/mn10300/mn10300.h (FRAME_POINTER_REQUIRED): Delete.
21903         * config/ia64/ia64.h (FRAME_POINTER_REQUIRED): Delete.
21904         * config/m68k/m68k.h (FRAME_POINTER_REQUIRED): Delete.
21905         * config/rs6000/rs6000.h (FRAME_POINTER_REQUIRED): Delete.
21906         * config/picochip/picochip.h (FRAME_POINTER_REQUIRED): Delete.
21907         * config/mcore/mcore.h (FRAME_POINTER_REQUIRED): Delete.
21908         * config/h8300/h8300.h (FRAME_POINTER_REQUIRED): Delete.
21909         * config/v850/v850.h (FRAME_POINTER_REQUIRED): Delete.
21910
21911 2009-05-02  Richard Guenther  <rguenther@suse.de>
21912
21913         PR tree-optimization/39940
21914         * tree-ssa-pre.c (eliminate): Make sure we may propagate before
21915         doing so.
21916
21917 2009-05-02  Richard Guenther  <rguenther@suse.de>
21918
21919         PR middle-end/40001
21920         * tree-ssa.c (execute_update_addresses_taken): Properly check
21921         if we can mark a variable DECL_GIMPLE_REG_P.
21922         * gimple.c (is_gimple_reg): Re-order check for DECL_GIMPLE_REG_P
21923         back to the end of the function.
21924         (is_gimple_reg_type): Remove complex type special casing.
21925         * gimplify.c (gimplify_bind_expr): Do not set DECL_GIMPLE_REG_P
21926         if not optimizing.
21927
21928 2009-05-02  Ben Elliston  <bje@au.ibm.com>
21929
21930         * doc/collect2.texi (Collect2): Document search path behaviour
21931         when configured with --with-ld.
21932
21933 2009-05-02  Jan Hubicka  <jh@suse.cz>
21934
21935         * tree-ssa-coalesce.c (coalesce_cost): Do not take ciritical
21936         parameter; update callers.
21937         (coalesce_cost_edge): EH edges are costier because they needs
21938         splitting even if not critical and even more costier when there are
21939         multiple EH predecestors.
21940
21941 2009-05-02  Jan Hubicka  <jh@suse.cz>
21942
21943         * except.c (remove_eh_handler_and_replace): Handle updating after
21944         removing TRY blocks.
21945
21946 2009-05-02  Eric Botcazou  <ebotcazou@adacore.com>
21947
21948         * store-motion.c (compute_store_table): Add ENABLE_CHECKING guard.
21949
21950 2009-05-02  Steven Bosscher  <steven@gcc.gnu.org>
21951
21952         * varasm.c: Do not include c-pragma.h.
21953         * attribs.c: Do not incude c-common.h.
21954
21955 2009-05-01  Michael Matz  <matz@suse.de>
21956
21957         * calls.c (initialize_argument_information): Handle SSA names like
21958         decls with a non MEM_P DECL_RTL.
21959
21960 2009-05-01  Steven Bosscher  <steven@gcc.gnu.org>
21961
21962         * ipa-reference.c: Do not include c-common.h, include splay-tree.h.
21963         * ipa-utils.c: Likewise.
21964         * ipa-type-escape.c: Likewise.
21965         * cgraphunit.c Do not include c-common.h.
21966         * ipa-pure-const.c: Likewise.
21967         * tree-if-conv.c: Likewise.
21968         * matrix-reorg.c: Do not include c-common.h and c-tree.h.
21969         * ipa-struct-reorg.c: Likewise.
21970         * tree-nomudflap.c: Likewise.
21971         * tree-ssa-structalias.c: Likewise.
21972
21973 2009-05-01  Steven Bosscher  <steven@gcc.gnu.org>
21974
21975         * store-motion.c: Many cleanups to make this pass a first-class
21976         citizen instead of an appendix to gcse load motion.  Add TODO list
21977         to make this pass faster/cleaner/better.
21978
21979         (struct ls_expr): Post gcse.c-split cleanups.
21980         Rename to st_expr.  Rename "loads" field to "antic_stores".  Rename
21981         "stores" field to "avail_stores".
21982         (pre_ldst_mems): Rename to store_motion_mems.
21983         (pre_ldst_table): Rename to store_motion_mems_table.
21984         (pre_ldst_expr_hash): Rename to pre_st_expr_hash, update users.
21985         (pre_ldst_expr_eq): Rename to pre_st_expr_eq, update users.
21986         (ldst_entry): Rename to st_expr_entry, update users.
21987         (free_ldst_entry): Rename to free_st_expr_entry, update users.
21988         (free_ldst_mems): Rename to free_store_motion_mems, update users.
21989         (enumerate_ldsts): Rename to enumerate_store_motion_mems,
21990         update caller.
21991         (first_ls_expr): Rename to first_st_expr, update users.
21992         (next_ls_expr): Rename to next_st_expr, update users.
21993         (print_ldst_list): Rename to print_store_motion_mems.  Print names of
21994         fields properly for store motion instead of names inherited from load
21995         motion in gcse.c.
21996         (ANTIC_STORE_LIST, AVAIL_STORE_LIST): Remove.
21997         (LAST_AVAIL_CHECK_FAILURE): Explain what this is.  Undefine when we
21998         are done with it.
21999
22000         (ae_kill): Rename to st_kill, update users.
22001         (ae_gen): Rename to st_avloc, update users.
22002         (transp): Rename to st_transp, update users.
22003         (pre_insert_map): Rename to st_insert_map, update users.
22004         (pre_delete_map): Rename to st_delete_map, update users.
22005         (insert_store, build_store_vectors, free_store_memory,
22006         one_store_motion_pass): Update for abovementioned changes.
22007
22008         (gcse_subst_count, gcse_create_count): Remove.
22009         (one_store_motion_pass): New statistics counters "n_stores_deleted"
22010         and "n_stores_created", local variables.
22011
22012         (extract_mentioned_regs, extract_mentioned_regs_1): Rewrite to
22013         use for_each_rtx.
22014
22015         (regvec, compute_store_table_current_insn): Remove.
22016         (reg_set_info, reg_clear_last_set): Remove.
22017         (compute_store_table): Use DF caches instead of local dataflow
22018         solvers.
22019
22020 2009-05-01  Joseph Myers  <joseph@codesourcery.com>
22021
22022         * c-objc-common.c (c_tree_printer): Print identifiers with
22023         pp_identifier, not pp_string.  Mark "({anonymous})" for
22024         translation.
22025         * c-pretty-print.c (pp_c_ws_string): New.
22026         (pp_c_cv_qualifier, pp_c_type_specifier,
22027         pp_c_specifier_qualifier_list, pp_c_parameter_type_list,
22028         pp_c_storage_class_specifier, pp_c_function_specifier,
22029         pp_c_attributes, pp_c_bool_constant, pp_c_constant,
22030         pp_c_primary_expression, pp_c_postfix_expression,
22031         pp_c_unary_expression, pp_c_shift_expression,
22032         pp_c_relational_expression, pp_c_equality_expression,
22033         pp_c_logical_and_expression, pp_c_logical_or_expression): Mostly
22034         use pp_string and pp_c_ws_string in place of pp_identifier and
22035         pp_c_identifier for non-identifiers.  Mark English strings for
22036         translation.
22037         * c-pretty-print.h (pp_c_ws_string): Declare.
22038
22039 2009-04-30  Paul Pluzhnikov  <ppluzhnikov@google.com>
22040             Roland McGrath <roland@redhat.com>
22041
22042         * configure.ac (HAVE_LD_BUILDID): New check for ld --build-id support.
22043         (ENABLE_LD_BUILDID): New configuration option.
22044         * gcc.c [HAVE_LD_BUILDID and ENABLE_LD_BUILDID]
22045         (LINK_BUILDID_SPEC): New macro.
22046         (init_spec): If defined, prepend it between LINK_EH_SPEC and
22047         link_spec.
22048         * doc/install.texi: Document --enable-linker-build-id option.
22049         * configure: Rebuild.
22050         * config.in: Rebuild.
22051
22052 2009-04-30  Adam Nemet  <anemet@caviumnetworks.com>
22053
22054         * config/mips/mips.h (FRAME_GROWS_DOWNWARD,
22055         MIPS_GP_SAVE_AREA_SIZE): Define new macros.
22056         (STARTING_FRAME_OFFSET): Return 0 if FRAME_GROWS_DOWNWARD.  Use
22057         MIPS_GP_SAVE_AREA_SIZE.
22058         * config/mips/mips.c (struct mips_frame_info): Update comment
22059         before arg_pointer_offset and hard_frame_pointer_offset.
22060         (mips_compute_frame_info): Update diagram before function: to
22061         correctly use stack_pointer_rtx for fp_sp_offset and gp_sp_offset, to
22062         indicate the position of frame_pointer_rtx with -fstack-protector and
22063         to show args_size.  Don't allocate cprestore area for leaf functions
22064         if FRAME_GROWS_DOWNWARD.  Use MIPS_GP_SAVE_AREA_SIZE to set
22065         cprestore_size.
22066         (mips_initial_elimination_offset): Update for FRAME_GROWS_DOWNWARD.
22067
22068 2009-04-30  Michael Matz  <matz@suse.de>
22069
22070         PR tree-optimization/39955
22071         * config/rs6000/rs6000.c (rs6000_check_sdmode): Also check SSA_NAMEs.
22072
22073 2009-04-30  Dave Korn  <dave.korn.cygwin@gmail.com>
22074
22075         * ira.c (setup_cover_and_important_classes):  Use safe macro
22076         REG_CLASS_FOR_CONSTRAINT instead of calling regclass_for_constraint
22077         directly.
22078         * genpreds.c (write_tm_preds_h):  Output suitable definition of
22079         REG_CLASS_FOR_CONSTRAINT.
22080
22081 2009-04-30  Rafael Avila de Espindola  <espindola@google.com>
22082
22083         * alloc-pool.c (alloc_pool_descriptor): Use an insert_opion value
22084         instead of an int.
22085         * bitmap.c (bitmap_descriptor): Likewise.
22086         * ggc-common.c (loc_descriptor): Likewise.
22087         * varray.c (varray_descriptor): Likewise.
22088         * vec.c (vec_descriptor): Likewise.
22089
22090 2009-04-30  Eric Botcazou  <ebotcazou@adacore.com>
22091
22092         * Makefile.in (dce.o): Add $(EXCEPT_H).
22093         * dce.c: Include except.h and delete redundant vector definitions.
22094         (deletable_insn_p): Return false for non-call insns that can throw
22095         if DF is running.
22096
22097 2009-04-30  Steven Bosscher  <steven@gcc.gnu.org>
22098
22099         * gcse.c (ae_gen): Remove.
22100         (can_assign_to_reg_p): Rename to can_assign_to_reg_without_clobbers_p
22101         and make non-static function to make it available in store-motion.c.
22102         Update call sites with search-and-replace.
22103         (enumerate_ldsts, reg_set_info, reg_clear_last_set, store_ops_ok,
22104         extract_mentioned_regs, extract_mentioned_regs_helper,
22105         find_moveable_store, compute_store_table, load_kills_store, find_loads,
22106         store_killed_in_insn, store_killed_after, store_killed_before,
22107         build_store_vectors, insert_insn_start_basic_block, insert-store,
22108         remove_reachable_equiv_notes, replace_store_insn, delete_store,
22109         free_store_memory, one_store_motion_pass, gate_rtl_store_motion,
22110         execute_rtl_store_motion, pass_rtl_store_motion): Move to...
22111         * store-motion.c: ...new file.  Also copy data structures from gcse.c
22112         and clean up to remove parts not used by store motion.
22113         * rtl.h (can_assign_to_reg_without_clobbers_p): Add prototype.
22114         * Makefile.in (store-motion.o): New rule. Add to OBJS-common.
22115
22116 2009-04-30  Ramana Radhakrishnan  <ramana.radhakrishnan@arm.com>
22117
22118         PR target/38571
22119         * config/arm/arm.h (FUNCTION_BOUNDARY): Set to 16 for thumb
22120         when optimizing for size.
22121
22122 2009-04-30  Hans-Peter Nilsson  <hp@axis.com>
22123
22124         * gcse.c (gcse_constant_p): Fix typo in last change.
22125
22126 2009-04-30  Rafael Avila de Espindola  <espindola@google.com>
22127
22128         * plugin.c: Include plugin-version.h only if ENABLE_PLUGIN is defined.
22129
22130 2009-04-30  Andreas Krebbel  <krebbel1@de.ibm.com>
22131
22132         * gcse.c (gcse_constant_p): Make sure the constant is sharable.
22133
22134 2009-04-29  James E. Wilson  <wilson@codesourcery.com>
22135
22136         * config/mips/mips.c (mips_add_offset): Use gen_int_mode for
22137         CONST_HIGH_PART result.
22138
22139 2009-04-29  Anatoly Sokolov  <aesok@post.ru>
22140
22141         * config/avr/avr.c (initial_elimination_offset): Rename to
22142         avr_initial_elimination_offset.
22143         (frame_pointer_required_p): Rename to avr_frame_pointer_required_p,
22144         change return type to bool.
22145         (avr_can_eliminate): New function.
22146         * config/avr/avr.h (CAN_ELIMINATE): Use avr_can_eliminate.
22147         (FRAME_POINTER_REQUIRED): Use avr_frame_pointer_required_p.
22148         (INITIAL_ELIMINATION_OFFSET): Use avr_initial_elimination_offset.
22149         * config/avr/avr-protos.h (initial_elimination_offset): Rename to
22150         avr_initial_elimination_offset.
22151         (frame_pointer_required_p): Rename to avr_frame_pointer_required_p.
22152         (avr_initial_elimination_offset): Define.
22153
22154 2009-04-29  Eric Botcazou  <ebotcazou@adacore.com>
22155             Steven Bosscher  <steven@gcc.gnu.org>
22156
22157         PR rtl-optimization/39938
22158         * Makefile.in (cfgrtl.o): Add $(INSN_ATTR_H).
22159         * cfgrtl.c: Include insn-attr.h.
22160         (rest_of_pass_free_cfg): New function.
22161         (pass_free_cfg): Use rest_of_pass_free_cfg as execute function.
22162         * resource.c (init_resource_info): Remove call to df_analyze.
22163
22164 2009-04-29  Richard Guenther  <rguenther@suse.de>
22165
22166         PR target/39943
22167         * config/i386/i386.c (ix86_vectorize_builtin_conversion): Only
22168         allow conversion to signed integers.
22169
22170 2009-04-29  Richard Guenther  <rguenther@suse.de>
22171
22172         * tree-cfg.c (verify_gimple_assign_binary): Allow vector
22173         shifts of floating point vectors if the shift amount is
22174         a constant multiple of the element size.
22175
22176 2009-04-29  Andreas Krebbel  <krebbel1@de.ibm.com>
22177             Michael Matz  <matz@suse.de>
22178
22179         PR middle-end/39927
22180         PR bootstrap/39929
22181         * tree-outof-ssa.c (emit_partition_copy): New function.
22182         (insert_partition_copy_on_edge, insert_rtx_to_part_on_edge,
22183         insert_part_to_rtx_on_edge): Perform the partition base var
22184         copy using emit_partition_copy.
22185         (insert_value_copy_on_edge): Convert constants to the right mode.
22186         (insert_rtx_to_part_on_edge): Add UNSIGNEDSRCP parameter.
22187         (elim_create): Pass the sign of the src to insert_rtx_to_part_on_edge.
22188
22189 2009-04-29  Bernd Schmidt  <bernd.schmidt@analog.com>
22190
22191         * config/bfin/bfin.c (bfin_optimize_loop): If we need a scratch reg,
22192         scan backwards to try to find a constant to initialize it.
22193
22194         * config/bfin/bfin.c (bfin_optimize_loop): When looking for the last
22195         insn before the loop_end instruction, don't look past labels.
22196
22197 2009-04-29  Richard Guenther  <rguenther@suse.de>
22198
22199         PR middle-end/39937
22200         * tree-ssa-forwprop.c (forward_propagate_addr_expr_1): Do not
22201         loose type conversions.
22202         (forward_propagate_addr_expr): Fix tuplification bug.  Remove
22203         stmts only if there are no uses of its definition.
22204
22205 2009-04-29  Bernd Schmidt  <bernd.schmidt@analog.com>
22206
22207         * config/bfin/bfin.h (splitting_loops): Declare.
22208         * config/bfin/bfin-protos.h (WA_05000257, WA_05000283, WA_05000315):
22209         Reorder bit definitions to be ascending.
22210         (WA_LOAD_LCREGS, ENABLE_WA_LOAD_LCREGS): New macros.
22211         * config/bfin/bfin.c (splitting_loops): New variable.
22212         (bfin_cpus): Add WA_LOAD_LCREGS as needed.
22213         (struct loop_info): Remove members INIT and LOOP_INIT.
22214         (bfin_optimize_loop): Don't set them.  Reorder the code that generates
22215         the LSETUP sequence.  Allow LC to be loaded from any register, but
22216         also add a case to push/pop a PREG scratch if ENABLE_WA_LOAD_LCREGS.
22217         (bfin_reorg_loops): When done, split all BB_ENDs with splitting_loops
22218         set to 1.
22219         * config/bfin/bfin.md (loop_end splitter): Use splitting_loops instead
22220         of reload_completed.
22221
22222         From Jie Zhang:
22223         * config/bfin/bfin.md (movsi_insn): Refine constraints.
22224
22225 2009-04-29  Rafael Avila de Espindola  <espindola@google.com>
22226
22227         * Makefile.in (PLUGIN_VERSION_H): New.
22228         (OBJS-common): Remove plugin-version.o.
22229         (plugin.o): Depend on (PLUGIN_VERSION_H).
22230         (plugin-version.o): Remove.
22231         * configure: Regenerate
22232         * configure.ac: Create plugin-version.h.
22233         * gcc-plugin.h (plugin_gcc_version): Remove.
22234         (plugin_default_version_check): Change signature.
22235         * plugin-version.c: Remove.
22236         * plugin.c: Include plugin-version.h.
22237         (str_plugin_gcc_version_name): Remove.
22238         (try_init_one_plugin): Pass gcc version to plugin_init.
22239         (plugin_default_version_check): Both gcc and plugin versions are now
22240         arguments.
22241
22242 2009-04-29  Bernd Schmidt  <bernd.schmidt@analog.com>
22243
22244         * config/bfin/bfin.c (bfin_optimize_loop): Unify handling of
22245         problematic last insns.  Test for TYPE_CALL rather than CALL_P.
22246         Remove special case testing for last insn of inner loops. Don't fail
22247         if the loop ends with a jump, emit an extra nop instead.
22248
22249         * config/bfin/bfin.c (bfin_register_move_cost): Test for subsets of
22250         DREGS rather than comparing directly.  Remove code that tries to
22251         account for latencies.
22252
22253 2009-04-29  Richard Guenther  <rguenther@suse.de>
22254
22255         PR tree-optimization/39941
22256         * tree-ssa-pre.c (eliminate): Schedule update-ssa after
22257         eliminating an indirect call.
22258
22259 2009-04-29  Richard Guenther  <rguenther@suse.de>
22260
22261         * tree-cfg.c (verify_types_in_gimple_reference): Add require_lvalue
22262         parameter.  Allow invariants as base if !require_lvalue.
22263         (verify_gimple_assign_single): Adjust.
22264
22265 2009-04-29  Bernd Schmidt  <bernd.schmidt@analog.com>
22266
22267         * config/bfin/bfin.md (sp_or_sm, spm_string, spm_name): New macro.
22268         (ss<spm_name>hi3, ss<spm_name>hi3_parts, ss<spm_name>hi3_low_parts,
22269         ss<spm_name_hi3_high_parts): New patterns, replacing ssaddhi3,
22270         ssubhi3, ssaddhi3_parts and sssubhi3_parts.
22271         (flag_mulhi3_parts): Produce a HImode output rather than trying to set
22272         a VEC_SELECT.
22273         * config/bfin/bfin.c (bfin_expand_builtin,
22274         case BFIN_BUILTIN_CPLX_SQU): Adjust accordingly.
22275
22276 2009-04-28  Richard Guenther  <rguenther@suse.de>
22277
22278         * tree-vect-loop.c (get_initial_def_for_induction): Use
22279         correct types for pointer increment.
22280
22281 2009-04-29  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
22282
22283         * toplev.c (print_version): Update GMP version string calculation.
22284
22285 2009-04-28  Eric Botcazou  <ebotcazou@adacore.com>
22286
22287         PR rtl-optimization/39938
22288         * resource.c (init_resource_info): Add call to df_analyze.
22289
22290 2009-04-28  Uros Bizjak  <ubizjak@gmail.com>
22291
22292         * config/alpha/alpha.md (usegp): Cast the result of
22293         alpha_find_lo_sum_using_gp to enum attr_usegp.
22294         * config/alpha/alpha.c (override_options): Remove end-of-structure
22295         marker element from cpu_table.  Use array size of cpu_table to handle
22296         -mcpu and -mtune options.
22297         (tls_symbolic_operand_type): Change 0 to TLS_MODEL_NONE.
22298
22299 2009-04-28  Joseph Myers  <joseph@codesourcery.com>
22300
22301         * config.gcc (powerpc*-*-* | rs6000-*-*): Add
22302         rs6000/option-defaults.h to tm_file.  Support cpu_32, cpu_64,
22303         tune_32 and tune_64.
22304         * doc/install.texi (--with-cpu-32, --with-cpu-64): Document
22305         support on PowerPC.
22306         * config/rs6000/rs6000.h (OPTION_DEFAULT_SPECS): Move to ...
22307         * config/rs6000/option-defaults.h: ... here.  New file.
22308         (OPT_64, OPT_32): Define.
22309         (MASK_64BIT): Define to 0 if not already defined.
22310         (OPT_ARCH64, OPT_ARCH32): Define.
22311         (OPTION_DEFAULT_SPECS): Add entries for cpu_32, cpu_64, tune_32
22312         and tune_64.
22313
22314 2009-04-28  Ramana Radhakrishnan  <ramana.radhakrishnan@arm.com>
22315
22316         * config/arm/arm.c (arm_override_options): Emit error on using
22317         fpa with AAPCS.
22318
22319 2009-04-28  Uros Bizjak  <ubizjak@gmail.com>
22320
22321         PR rtl-optimization/39914
22322         * ira-conflicts.c (ira_build_conflicts): Prohibit call used
22323         registers for allocnos created from user-defined variables only
22324         when not optimizing.
22325
22326 2009-04-28  Richard Guenther  <rguenther@suse.de>
22327
22328         PR middle-end/39937
22329         * fold-const.c (fold_binary): Use distribute_real_division only
22330         on float types.
22331
22332 2009-04-28  Steve Ellcey  <sje@cup.hp.com>
22333
22334         * config.gcc (hppa*64*-*-hpux11*): Set use_gcc_stdint and
22335         add hpux-stdint.h to tm_file.
22336         (hppa[12]*-*-hpux11*): Ditto.
22337         (ia64*-*-hpux*): Ditto.
22338         * config/hpux-stdint.h: New.
22339         * config/ia64/hpux.h (TARGET_OS_CPP_BUILTINS): Set
22340         __STDC_EXT__ for all compiles.
22341         * config/pa/pa-hpux.h: Ditto.
22342         * config/pa/pa-hpux10.h: Ditto.
22343         * config/pa/pa-hpux11.h: Ditto.
22344
22345 2009-04-28  Catherine Moore  <clm@codesourcery.com>
22346
22347         * debug.h (set_name): Add comment.
22348
22349 2009-04-28  Andrew Pinski  <pinskia@gmail.com>
22350
22351         PR target/39929
22352         * config/darwin.c (machopic_gen_offset): Check
22353         currently_expanding_to_rtl if current_ir_type returns IR_GIMPLE.
22354         * config/arm/arm.c (require_pic_register): Likewise.
22355
22356 2009-04-28  Paolo Bonzini  <bonzini@gnu.org>
22357
22358         * config/m32c/m32c.c (TARGET_PROMOTE_FUNCTION_RETURN,
22359         m32c_promote_function_return, TARGET_PROMOTE_PROTOTYPES,
22360         m32c_promote_prototypes): Delete.
22361
22362 2009-04-28  Michael Matz  <matz@suse.de>
22363
22364         PR middle-end/39922
22365         * tree-outof-ssa.c (insert_value_copy_on_edge): Don't convert
22366         constants.
22367
22368 2009-04-28  Richard Guenther  <rguenther@suse.de>
22369
22370         * tree-vect-stmts.c (vect_get_vec_def_for_operand): Fix type error.
22371
22372 2009-04-28  Ramana Radhakrishnan  <ramana.radhakrishnan@arm.com>
22373
22374         * config/arm/arm-cores.def: Add support for arm1156t2f-s.
22375         * doc/invoke.texi (ARM Options): Document support for arm1156t2f-s.
22376         * config/arm/arm-tune.md: Regenerate.
22377
22378 2009-04-28  Alexander Monakov  <amonakov@ispras.ru>
22379
22380         * sel-sched-ir.c (maybe_tidy_empty_bb): Do not attempt to delete a
22381         block if there are complex incoming edges.
22382         (sel_merge_blocks): Remove useless assert.
22383         (sel_redirect_edge_and_branch): Check that edge was redirected.
22384         * sel-sched-ir.h (_eligible_successor_edge_p): Remove assert.
22385         (sel_find_rgns): Delete declaration.
22386         * sel-sched.c (purge_empty_blocks): Attempt to remove first block of
22387         the region when it is not a preheader.
22388
22389 2009-04-28  Uros Bizjak  <ubizjak@gmail.com>
22390
22391         PR c/39323
22392         * config/alpha/elf.h (MAX_OFILE_ALIGNMENT): Sync with elfos.h
22393
22394 2009-04-28  Richard Guenther  <rguenther@suse.de>
22395
22396         * tree.h (SSA_NAME_VALUE): Remove.
22397         (struct tree_ssa_name): Remove value_handle member.
22398         * tree-vrp.c (execute_vrp): Initialize/free the value-handle
22399         array for jump threading.
22400         * tree-ssa-propagate.c (ssa_prop_init): Do not initialize
22401         SSA_NAME_VALUEs.
22402         * print-tree.c (print_node): Do not dump SSA_NAME_VALUEs.
22403         * tree-flow.h (threadedge_initialize_values): Declare.
22404         (threadedge_finalize_values): Likewise.
22405         * tree-ssa-threadedge.c (ssa_name_values): New global variable.
22406         (SSA_NAME_VALUE): Define.
22407         (threadedge_initialize_values): New function.
22408         (threadedge_finalize_values): Likewise.
22409         * tree-ssa-dom.c (ssa_name_values): New global variable.
22410         (SSA_NAME_VALUE): Define.
22411         (tree_ssa_dominator_optimize): Initialize/free the value-handle array.
22412
22413 2009-04-28  Ira Rosen  <irar@il.ibm.com>
22414
22415         * tree-vect-loop-manip.c (vect_create_cond_for_alias_checks):
22416         Use REPORT_VECTORIZED_LOCATIONS instead
22417         REPORT_VECTORIZED_LOOPS.
22418         * tree-vectorizer.c (vect_verbosity_level): Make static.
22419         (vect_loop_location): Rename to vect_location.
22420         (vect_set_verbosity_level): Update comment.
22421         (vect_set_dump_settings): Use REPORT_VECTORIZED_LOCATIONS
22422         and vect_location.
22423         (vectorize_loops): Fix comment. Use REPORT_VECTORIZED_LOCATIONS
22424         and vect_location. Use REPORT_UNVECTORIZED_LOCATIONS
22425         instead REPORT_UNVECTORIZED_LOOPS.
22426         * tree-vectorizer.h (enum vect_def_type): Rename vect_invariant_def
22427         and vect_loop_def to vect_external_def and vect_internal_def.
22428         (enum verbosity_levels): Rename REPORT_VECTORIZED_LOOPS
22429         and REPORT_UNVECTORIZED_LOOPS to REPORT_VECTORIZED_LOCATIONS and
22430         REPORT_UNVECTORIZED_LOCATIONS.
22431         (enum vect_relevant): Update comment. Rename vect_unused_in_loop
22432         and vect_used_in_loop and to vect_unused_in_scope and
22433         vect_used_in_scope.
22434         (STMT_VINFO_RELEVANT_P): Use vect_unused_in_scope.
22435         (vect_verbosity_level): Remove declaration.
22436         (vect_analyze_operations): Likewise.
22437         (vect_analyze_stmt): Declare.
22438         * tree-vect-loop.c (vect_determine_vectorization_factor): Use
22439         REPORT_UNVECTORIZED_LOCATIONS.
22440         (vect_get_loop_niters): Fix indentation.
22441         (vect_analyze_loop_form): Use REPORT_UNVECTORIZED_LOCATIONS.
22442         (vect_analyze_loop_operations): New function.
22443         (vect_analyze_loop): Call vect_analyze_loop_operations instead of
22444         vect_analyze_operations.
22445         (vect_is_simple_reduction): Use new names.
22446         (vectorizable_live_operation, vect_transform_loop): Likewise.
22447         * tree-vect-data-refs.c (vect_check_interleaving): Add a return value
22448         to specify whether the data references can be a part of interleaving
22449         chain.
22450         (vect_analyze_data_ref_dependence): Use new names.
22451         (vect_analyze_data_refs_alignment, vect_analyze_data_refs): Likewise.
22452         (vect_create_addr_base_for_vector_ref): Remove redundant code.
22453         * tree-vect-patterns.c (widened_name_p): Use new names.
22454         (vect_recog_dot_prod_pattern): Likewise.
22455         * tree-vect-stmts.c (vect_stmt_relevant_p): Use new names.
22456         (process_use, vect_mark_stmts_to_be_vectorized,
22457         vect_model_simple_cost, vect_model_store_cost,
22458         vect_get_vec_def_for_operand, vect_get_vec_def_for_stmt_copy,
22459         vectorizable_call, vectorizable_conversion, vectorizable_assignment,
22460         vectorizable_operation, vectorizable_type_demotion,
22461         vectorizable_type_promotion, vectorizable_store, vectorizable_load,
22462         vectorizable_condition): Likewise.
22463         (vect_analyze_operations): Split into vect_analyze_loop_operations
22464         and ...
22465         (vect_analyze_stmt): ... new function.
22466         (new_stmt_vec_info): Use new names.
22467         (vect_is_simple_use): Use new names and fix comment.
22468         * tree-vect-slp.c (vect_get_and_check_slp_defs): Use new names.
22469         (vect_build_slp_tree, vect_analyze_slp, vect_schedule_slp): Likewise.
22470
22471 2009-04-28  Uros Bizjak  <ubizjak@gmail.com>
22472
22473         PR target/39911
22474         * config/i386/i386.c (print_operand) ['Z']: Handle floating point
22475         and integer modes for x87 operands.  Do not ICE for unsupported size,
22476         generate error instead.  Generate error for unsupported operand types.
22477         ['z']: Do not handle HImode memory operands specially.  Warning
22478         for floating-point operands.  Fallthru to 'Z' for unsupported operand
22479         types.  Do not ICE for unsupported size, generate error instead.
22480         (output_387_binary_op): Use %Z to output operands.
22481         (output_fp_compare): Ditto.
22482         (output_387_reg_move): Ditto.
22483
22484 2009-04-28  Ben Elliston  <bje@au.ibm.com>
22485
22486         PR c++/35652
22487         Revert:
22488
22489         2009-03-27  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
22490
22491         * builtins.c (c_strlen): Do not warn here.
22492         * c-typeck.c (build_binary_op): Adjust calls to pointer_int_sum.
22493         * c-common.c (pointer_int_sum): Take an explicit location.
22494         Warn about offsets out of bounds.
22495         * c-common.h (pointer_int_sum): Adjust declaration.
22496
22497 2009-04-27  Ian Lance Taylor  <iant@google.com>
22498
22499         * collect2.c (is_ctor_dtor): Change type of ret field in struct
22500         names to symkind.
22501         * dce.c (run_fast_df_dce): Change type of old_flags to int.
22502         * df-core.c (df_set_flags): Change return type to int.  Change
22503         type of old_flags to int.
22504         (df_clear_flags): Likewise.
22505         * df-scan.c (df_def_record_1): Change 0 to VOIDmode.
22506         (df_get_conditional_uses): Likewise.
22507         * df.h (df_set_flags, df_clear_flags): Update declarations.
22508         * dwarf2out.c (struct indirect_string_node): Change type of form
22509         field to enum dwarf_form.
22510         (AT_string_form): Change return type to enum dwarf_form.
22511         * fixed-value.c (fixed_compare): Add cast to enum type.
22512         * fwprop.c (update_df): Change 0 to VOIDmode.
22513         * gensupport.c: Change 0 to UNKNOWN.
22514         * gimple.h (gimple_cond_code): Add cast to enum type.
22515         * haifa-sched.c (reemit_notes): Add cast to enum type.
22516         * hooks.c (hook_int_void_no_regs): Remove function.
22517         * hooks.h (hook_int_void_no_regs): Remove declaration.
22518         * optabs.c (expand_widen_pattern_expr): Change 0 to VOIDmode.
22519         * predict.c (combine_predictions_for_insn): Add casts to enum type.
22520         * real.c (real_arithmetic): Add cast to enum type.
22521         (real_compare): Likewise.
22522         * target.h (struct gcc_target): Change return type of
22523         branch_target_register_class to enum reg_class.
22524         * target-def.h (TARGET_BRANCH_TARGET_REGISTER_CLASS): Define as
22525         default_branch_target_register_class.
22526         * targhooks.c (default_branch_target_register_class): New function.
22527         * targhooks.h (default_branch_target_register_class): Declare.
22528         * tree-data-ref.c (print_direction_vector): Add cast to enum type.
22529         * tree-vect-data-refs.c (vect_supportable_dr_alignment): Remove
22530         cast to int.
22531         * tree-vect-loop.c (vect_create_epilog_for_reduction): Change 0 to
22532         ERROR_MARK.
22533         * tree-vect-slp.c (vect_build_slp_tree): Change 0 to
22534         vect_uninitialized_def.  Change 0 to ERROR_MARK.
22535         * tree-vect-stmts.c (supportable_widening_operation): Don't
22536         initialize icode1 and icode2.
22537         * tree-vectorizer.h (enum vect_def_type): Add vect_uninitialized_def.
22538         * config/sol2-c.c (cmn_err_length_specs): Change 0 to FMT_LEN_none
22539         and to STD_C89.
22540         (cmn_err_flag_specs): Change 0 to STD_C89.
22541         (cmn_err_char_table): Likewise.
22542         * config/arm/arm.c (get_arm_condition_code): Change type of code
22543         to enum arm_cond_code.
22544         (IWMMXT_BUILTIN): Change 0 to UNKNOWN.
22545         (IWMMXT_BUILTIN2): Likewise.
22546         (neon_builtin_type_bits): Don't define typedef.
22547         (neon_builtin_datum): Change type of bits field to int.
22548         (arm_expand_neon_args): Add cast to enum type.
22549         * config/ia64/ia64.c (tls_symbolic_operand_type): Change 0 to
22550         TLS_MODEL_NONE.
22551         * config/i386/i386.c (bdesc_multi_arg): Change 0 to UNKNOWN.  Add
22552         casts to enum type.
22553         * config/mips/mips.c (LOONGSON_BUILTIN_ALIAS): Change 0 to
22554         MIPS_FP_COND_f.
22555         * config/mips/mips.md (jal_macro): Return enum constant.
22556         (single_insn): Likewise.
22557         * config/rs6000/rs6000.c (bdesc_altivec_preds): Change 0 to
22558         CODE_FOR_nothing.
22559         * config/rs6000/rs6000-c.c (altivec_overloaded_builtins): Add
22560         casts to enum type.
22561         * config/s390/s390.c (s390_tune_flags): Change type to int.
22562         (s390_arch_flags): Likewise.
22563         (s390_handle_arch_option): Change flags field of struct pta to int.
22564         * config/s390/s390.h (s390_tune_flags): Update declaration.
22565         (s390_arch_flags): Likewise.
22566         * config/sh/sh.c (prepare_move_operands): Compare
22567         tls_symbolic_operand result with enum constant.
22568         (sh_reorg): Change PUT_MODE to PUT_REG_NOTE_KIND.
22569         (sh_expand_prologue): Add cast to enum type.
22570         (sh_expand_epilogue): Likewise.
22571         (tls_symbolic_operand): Change return type to enum tls_model.
22572         (fpscr_set_from_mem): Add cast to enum type.
22573         (legitimize_pic_address): Compare tls_symbolic_operand result with
22574         enum constant.
22575         (sh_target_reg_class): Change return type to enum reg_class.
22576         * config/sh/sh.h (OVERRIDE_OPTIONS): Change CPU_xxx to
22577         PROCESSOR_xxx.
22578         * config/sh/sh-protos.h (tls_symbolic_operand): Update declaration.
22579         * config/sparc/sparc.c (sparc_override_options): Add cast to enum type.
22580         * config/sparc/sparc.md (empty_delay_slot): Return enum constant.
22581         (pic, calls_alloca, calls_eh_return, leaf_function): Likewise.
22582         (delayed_branch, tls_call_delay): Likewise.
22583         (eligible_for_sibcall_delay): Likewise.
22584         (eligible_for_return_delay): Likewise.
22585         * config/spu/spu.c (expand_builtin_args): Add cast to enum type.
22586         (spu_expand_builtin_1): Likewise.
22587
22588         * c-typeck.c (convert_for_assignment): Issue -Wc++-compat warnings
22589         for all types of conversions.
22590         (output_init_element): Issue -Wc++-compat warning if needed when
22591         initializing a bitfield with enum type.
22592         * c-parser.c (c_parser_expression): Set original_type to
22593         original_type of right hand operand of comma operator.
22594
22595 2009-04-27  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
22596
22597         * doc/c-tree.texi (Types, Functions, Expression trees): Fix
22598         grammar nits.
22599         * doc/cfg.texi (Maintaining the CFG, Liveness information): Likewise.
22600         * doc/cpp.texi (Standard Predefined Macros)
22601         (Implementation-defined behavior): Likewise.
22602         * doc/extend.texi (Function Attributes, Type Attributes): Likewise.
22603         * doc/gimple.texi (GIMPLE Exception Handling)
22604         (@code{GIMPLE_ASSIGN}): Likewise.
22605         * doc/install.texi (Prerequisites, Configuration, Specific): Likewise.
22606         * doc/invoke.texi (Warning Options, Optimize Options)
22607         (AVR Options, Darwin Options): Likewise.
22608         (Optimize Options): Reformulate -fwhole-program description.
22609         * doc/loop.texi (Lambda): Likewise.
22610         * doc/md.texi (Output Template, Define Constraints)
22611         (Standard Names, Insn Splitting): Likewise.
22612         * doc/options.texi (Option properties): Likewise.
22613         * doc/passes.texi (Tree-SSA passes): Likewise.
22614         * doc/rtl.texi (Side Effects, Assembler, Insns): Likewise.
22615         * doc/tm.texi (Register Classes, Old Constraints, Scalar Return)
22616         (File Names and DBX): Likewise.
22617         * doc/trouble.texi (Incompatibilities): Likewise.
22618
22619 2009-04-27  Trevor Smigiel  <trevor_smigiel@playstation.sony.com>
22620
22621         * spu.c (spu_machine_dependent_reorg): Make sure branch label on hint
22622         instruction is correct.
22623
22624 2009-04-27  Trevor Smigiel  <trevor_smigiel@playstation.sony.com>
22625
22626         Allow non-constant arguments to conversion intrinsics.
22627         * spu-protos.h (exp2_immediate_p, spu_gen_exp2): Declare.
22628         * predicates.md (spu_inv_exp2_operand, spu_exp2_operand): New.
22629         * spu.c (print_operand): Handle 'v' and 'w'.
22630         (exp2_immediate_p, spu_gen_exp2): Define.
22631         * spu-builtins.def (spu_convts, spu_convtu, spu_convtf_0,
22632         spu_convtf_1): Update parameter descriptions.
22633         * spu-builtins.md (spu_csflt, spu_cuflt, spu_cflts, spu_cfltu): Update.
22634         * constraints.md ('v', 'w'): New.
22635         * spu.md (UNSPEC_CSFLT, UNSPEC_CFLTS, UNSPEC_CUFLT, UNSPEC_CFLTU):
22636         Remove.
22637         (i2f, I2F): New define_mode_attr.
22638         (floatsisf2, floatv4siv4sf2, fix_truncsfsi2, fix_truncv4sfv4si2,
22639         floatunssisf2, floatunsv4siv4sf2, fixuns_truncsfsi2,
22640         fixuns_truncv4sfv4si2):  Update to use mode attribute.
22641         (float<mode><i2f>2_mul, float<mode><i2f>2_div,
22642         fix_trunc<mode><f2i>2_mul, floatuns<mode><i2f>2_mul,
22643         floatuns<mode><i2f>2_div, fixuns_trunc<mode><f2i>2_mul): New
22644         patterns for combine.
22645
22646 2009-04-27  Steven Bosscher  <steven@gcc.gnu.org>
22647
22648         * dbgcnt.def (cprop1, cprop2, gcse, jump_bypass): Remove
22649         (cprop, hoist, pre, store_motion): New debug counters.
22650         * tree-pass.h (pass_tracer): Move to list of gimple passes, it
22651         is not an RTL pass anymore.
22652         (pass_profiling): Remove extern decl for pass removed in 2005.
22653         (pass_gcse, pass_jump_bypass): Remove.
22654         * final.c (rest_of_clean_state): Set flag_rerun_cse_after_global_opts
22655         to 0 for clean state.
22656         * toplev.h (flag_rerun_cse_after_global_opts): Add extern declaration.
22657         * cse.c (gate_handle_cse_after_global_opts,
22658         rest_of_handle_cse_after_global_opts): New functions.
22659         (pass_cse_after_global_opts): New pass, does local CSE.
22660         * timevar.def (TV_GCSE, TV_CPROP1, TV_CPROP2, TV_BYPASS): Remove.
22661         (TV_CPROP): New timevar.
22662         * gcse.c (flag_rerun_cse_after_global_opts): New global variable.
22663         (run_jump_opt_after_gcse, max_gcse_regno): Remove global vars.
22664         (gcse_main, recompute_all_luids): Remove.
22665         (compute_hash_table_work): Call max_reg_num instead of reading
22666         max_gcse_regno.
22667         (cprop_jump): Don't set run_jump_opt_after_gcse.
22668         (constprop_register): Always allow to alter jumps.
22669         (cprop_insn): Likewise.
22670         (do_local_cprop): Likewise.
22671         (local_cprop_pass): Likewise.  Return non-zero if something changed.
22672         (cprop): Remove function, fold interesting bits into one_cprop_pass.
22673         (find_implicit_sets): Add note about missed optimization opportunity.
22674         (one_cprop_pass): Rewrite to be "the" CPROP pass, called from the
22675         pass_rtl_cprop execute function.
22676         Don't bother tracking the pass number, each pass gets its own dumpfile
22677         now anyway.
22678         Always allow to alter jumpsand bypass jumps.
22679         (bypass_block): Don't ignore regno >= max_gcse_regno, find_bypass_set
22680         will just find no suitable set.
22681         (pre_edge_insert): Fix dumping, this function is for PRE only.
22682         (one_pre_gcse_pass): Rewrite to be "the" PRE pass, called from the
22683         pass_rtl_pre execute function.
22684         (hoist_code): Return non-zero if something changed.  Keep track of
22685         substitutions and insertions for statistics gathering similar to PRE.
22686         (one_code_hoisting_pass): Rewrite to be "the" code hoisting pass,
22687         called from the pass_rtl_hoist execute function.  Show pass statistics.
22688         (compute_store_table): Use max_reg_num directly instead of using the
22689         formerly global max_gcse_regno.
22690         (build_store_vectors): Likewise.
22691         (replace_store_insn): Fix dumping.
22692         (store_motion): Rename to ...
22693         (one_store_motion_pass): ... this.  Rewrite to be "the" STORE_MOTION
22694         pass, called from the pass_rtl_store_motion execute function.  Keep
22695         track of substitutions and insertions for statistics gathering similar
22696         to PRE.
22697         (bypass_jumps): Remove, fold interesting bits into ...
22698         (one_cprop_pass): ... this.  Rewrite to be "the" CPROP pass, called
22699         from the pass_rtl_cprop execute function.
22700         (gate_handle_jump_bypass, rest_of_handle_jump_bypass,
22701         pass_jump_bypass): Remove.
22702         (gate_handle_gcse, rest_of_handle_gcse): Remove.
22703         (gate_rtl_cprop, execute_rtl_cprop, pass_rtl_cprop): New.
22704         (gate_rtl_pre, execute_rtl_pre, pass_rtl_pre): New.
22705         (gate_rtl_hoist, execute_rtl_hoist, pass_rtl_hoist): New.
22706         (gate_rtl_store_motion, execute_rtl_store_motion,
22707         pass_rtl_store_motion): New.
22708         * common.opt: Remove flag_cse_skip_blocks, adjust documentation to
22709         make it clear that -fcse-skip-blocks is a no-op for backward compat.
22710         * passes.c (init_optimization_passes): Remove pass_gcse and
22711         pass_jump_bypass.  Schedule cprop, pre, hoist, cprop, store_motion,
22712         and cse_after_global_opts in place of pass_gcse.  Schedule cprop
22713         instead of pass_jump_bypass.
22714
22715 2009-04-27  Richard Guenther  <rguenther@suse.de>
22716
22717         PR middle-end/39928
22718         * gimplify.c (gimplify_expr): If we are required to create
22719         a temporary make sure it ends up as register.
22720
22721 2009-04-27  H.J. Lu  <hongjiu.lu@intel.com>
22722
22723         PR target/39903
22724         * config/i386/i386.c (construct_container): Don't call
22725         gen_reg_or_parallel with BLKmode on X86_64_SSE_CLASS,
22726         X86_64_SSESF_CLASS and X86_64_SSEDF_CLASS.
22727
22728 2009-04-27  Michael Matz  <matz@suse.de>
22729
22730         * ssaexpand.h (struct ssaexpand): Member 'values' is a bitmap.
22731         (get_gimple_for_ssa_name): Adjust, lookup using SSA_NAME_DEF_STMT.
22732         * tree-ssa-live.h (find_replaceable_exprs): Return a bitmap.
22733         (dump_replaceable_exprs): Take a bitmap.
22734         * cfgexpand.c (gimple_cond_pred_to_tree): Handle bitmap instead of
22735         array.
22736         (expand_gimple_basic_block): Likewise.
22737         * tree-ssa-ter.c (struct temp_expr_table_d): Make
22738         replaceable_expressions member a bitmap.
22739         (free_temp_expr_table): Pass back and deal with bitmap, not gimple*.
22740         (mark_replaceable): Likewise.
22741         (find_replaceable_in_bb, dump_replaceable_exprs): Likewise.
22742         * tree-outof-ssa.c (remove_ssa_form): 'values' is a bitmap.
22743
22744 2009-04-27  Richard Guenther  <rguenther@suse.de>
22745
22746         * tree-cfg.c (remove_useless_stmts): Verify stmts afterwards.
22747         (verify_stmts): Dispatch to gimple/type verification code.
22748         * tree-inline.c (remap_gimple_op_r): Work around C++ FE
22749         issue with call argument types.
22750
22751 2009-04-27  Michael Matz  <matz@suse.de>
22752
22753         * tree-into-ssa.c (regs_to_rename, mem_syms_to_rename): Remove.
22754         (init_update_ssa, delete_update_ssa, update_ssa): Remove references
22755         to above.
22756
22757 2009-04-27  Richard Sandiford  <rdsandiford@googlemail.com>
22758             Eric Botcazou  <ebotcazou@adacore.com>
22759
22760         * resource.c (find_basic_block): Use BLOCK_FOR_INSN to look up
22761         a label's basic block.
22762         (mark_target_live_regs): Tidy and rework obsolete comments.
22763         Change back DF problem to LIVE.  If a label starts a basic block,
22764         assume that all registers that used to be live then still are.
22765         (init_resource_info): If a label starts a basic block, set its
22766         BLOCK_FOR_INSN accordingly.
22767         (fini_resource_info): Undo the setting of BLOCK_FOR_INSN.
22768
22769 2009-04-27  Richard Guenther  <rguenther@suse.de>
22770
22771         * tree-flow-inline.h (function_ann): Remove.
22772         (get_function_ann): Likewise.
22773         * tree-dfa.c (create_function_ann): Remove.
22774         * tree-flow.h (struct static_var_ann_d): Remove.
22775         (struct function_ann_d): Likewise.
22776         (union tree_ann_d): Remove fdecl member.
22777         (function_ann_t): Remove.
22778         (function_ann, get_function_ann, create_function_ann): Remove
22779         declarations.
22780
22781 2009-04-27  Uros Bizjak  <ubizjak@gmail.com>
22782
22783         * config/alpha/alpha.c (code_for_builtin): Declare as enum insn_code.
22784
22785 2009-04-27  Jan Hubicka  <jh@suse.cz>
22786
22787         * ipa-pure-const.c (struct funct_state_d): New fields
22788         state_previously_known, looping_previously_known; remove
22789         state_set_in_source.
22790         (analyze_function): Use new fields.
22791         (propagate): Avoid assumption that state_set_in_source imply
22792         nonlooping.
22793
22794         * tree-ssa-loop-niter.c (finite_loop_p): New function.
22795         * tree-ssa-loop-ivcanon.c (empty_loop_p): Use it.
22796         * cfgloop.h (finite_loop_p): Declare.
22797
22798 2009-04-26  Michael Matz  <matz@suse.de>
22799
22800         * tree-flow.h (tree_ann_common_d): Remove aux and value_handle members.
22801
22802 2009-04-26  Michael Matz  <matz@suse.de>
22803
22804         * tree-pass.h (pass_del_ssa, pass_mark_used_blocks,
22805         pass_free_cfg_annotations, pass_free_datastructures): Remove decls.
22806         * gimple-low.c (mark_blocks_with_used_vars, mark_used_blocks,
22807         pass_mark_used_blocks): Remove.
22808         * tree-optimize.c (pass_free_datastructures,
22809         execute_free_cfg_annotations, pass_free_cfg_annotations): Remove.
22810         * passes.c (init_optimization_passes): Don't call
22811         pass_mark_used_blocks, remove dead code.
22812
22813 2009-04-26  H.J. Lu  <hongjiu.lu@intel.com>
22814
22815         * tree-outof-ssa.c (rewrite_trees): Add ATTRIBUTE_UNUSED.
22816         * tree-ssa-live.h (register_ssa_partition): Likewise.
22817
22818 2009-04-26  Michael Matz  <matz@suse.de>
22819
22820         Expand from SSA.
22821         * builtins.c (fold_builtin_next_arg): Handle SSA names.
22822         * tree-ssa-copyrename.c (rename_ssa_copies): Use ssa_name() directly.
22823         * tree-ssa-coalesce.c (create_outofssa_var_map): Mark only useful
22824         SSA names.
22825         (compare_pairs): Swap cost comparison.
22826         (coalesce_ssa_name): Don't use change_partition_var.
22827         * tree-nrv.c (struct nrv_data): Add modified member.
22828         (finalize_nrv_r): Set it.
22829         (tree_nrv): Use it to update statements.
22830         (pass_nrv): Require PROP_ssa.
22831         * tree-mudflap.c (mf_decl_cache_locals,
22832         mf_build_check_statement_for): Use make_rename_temp.
22833         (pass_mudflap_2): Require PROP_ssa, run ssa update at finish.
22834         * alias.c (find_base_decl): Handle SSA names.
22835         * emit-rtl (set_reg_attrs_for_parm): Make non-static.
22836         (component_ref_for_mem_expr): Don't leak SSA names into RTL.
22837         * rtl.h (set_reg_attrs_for_parm): Declare.
22838         * tree-optimize.c (pass_cleanup_cfg_post_optimizing): Rename
22839         to "optimized", remove unused locals at finish.
22840         (execute_free_datastructures): Make global, call
22841         delete_tree_cfg_annotations.
22842         (execute_free_cfg_annotations): Don't call
22843         delete_tree_cfg_annotations.
22844
22845         * ssaexpand.h: New file.
22846         * expr.c (toplevel): Include ssaexpand.h.
22847         (expand_assignment): Handle SSA names the same as register variables.
22848         (expand_expr_real_1): Expand SSA names.
22849         * cfgexpand.c (toplevel): Include ssaexpand.h.
22850         (SA): New global variable.
22851         (gimple_cond_pred_to_tree): Fold TERed comparisons into predicates.
22852         (SSAVAR): New macro.
22853         (set_rtl): New helper function.
22854         (add_stack_var): Deal with SSA names, use set_rtl.
22855         (expand_one_stack_var_at): Likewise.
22856         (expand_one_stack_var): Deal with SSA names.
22857         (stack_var_size_cmp): Use code (SSA_NAME / DECL) as tie breaker
22858         before unique numbers.
22859         (expand_stack_vars): Use set_rtl.
22860         (expand_one_var): Accept SSA names, add asserts for them, feed them
22861         to above subroutines.
22862         (expand_used_vars): Expand all partitions (without default defs),
22863         then only the local decls (ignoring those expanded already).
22864         (expand_gimple_cond): Remove edges when jumpif() expands an
22865         unconditional jump.
22866         (expand_gimple_basic_block): Don't clear EDGE_EXECUTABLE here,
22867         or remove abnormal edges.  Ignore insns setting the LHS of a TERed
22868         SSA name.
22869         (gimple_expand_cfg): Call into rewrite_out_of_ssa, initialize
22870         members of SA; deal with PARM_DECL partitions here; expand
22871         all PHI nodes, free tree datastructures and SA.  Commit instructions
22872         on edges, clear EDGE_EXECUTABLE and remove abnormal edges here.
22873         (pass_expand): Require and destroy PROP_ssa, verify SSA form, flow
22874         info and statements at start, collect garbage at finish.
22875         * tree-ssa-live.h (struct _var_map): Remove partition_to_var member.
22876         (VAR_ANN_PARTITION) Remove.
22877         (change_partition_var): Don't declare.
22878         (partition_to_var): Always return SSA names.
22879         (var_to_partition): Only accept SSA names.
22880         (register_ssa_partition): Only check argument.
22881         * tree-ssa-live.c (init_var_map): Don't allocate partition_to_var
22882         member.
22883         (delete_var_map): Don't free it.
22884         (var_union): Only accept SSA names, simplify.
22885         (partition_view_init): Mark only useful SSA names as used.
22886         (partition_view_fini): Only deal with SSA names.
22887         (change_partition_var): Remove.
22888         (dump_var_map): Use ssa_name instead of partition_to_var member.
22889         * tree-ssa.c (delete_tree_ssa): Don't remove PHI nodes on RTL
22890         basic blocks.
22891         * tree-outof-ssa.c (toplevel): Include ssaexpand.h and expr.h.
22892         (struct _elim_graph): New member const_dests; nodes member vector of
22893         ints.
22894         (set_location_for_edge): New static helper.
22895         (create_temp): Remove.
22896         (insert_partition_copy_on_edge, insert_part_to_rtx_on_edge,
22897         insert_value_copy_on_edge, insert_rtx_to_part_on_edge): New functions.
22898         (new_elim_graph): Allocate const_dests member.
22899         (clean_elim_graph): Truncate const_dests member.
22900         (delete_elim_graph): Free const_dests member.
22901         (elim_graph_size): Adapt to new type of nodes member.
22902         (elim_graph_add_node): Likewise.
22903         (eliminate_name): Likewise.
22904         (eliminate_build): Don't take basic block argument, deal only with
22905         partition numbers, not variables.
22906         (get_temp_reg): New static helper.
22907         (elim_create): Use it, deal with RTL temporaries instead of trees.
22908         (eliminate_phi): Adjust all calls to new signature.
22909         (assign_vars, replace_use_variable, replace_def_variable): Remove.
22910         (rewrite_trees): Only do checking.
22911         (edge_leader, stmt_list, leader_has_match, leader_match): Remove.
22912         (same_stmt_list_p, identical_copies_p, identical_stmt_lists_p,
22913         init_analyze_edges_for_bb, fini_analyze_edges_for_bb,
22914         contains_tree_r, MAX_STMTS_IN_LATCH,
22915         process_single_block_loop_latch, analyze_edges_for_bb,
22916         perform_edge_inserts): Remove.
22917         (expand_phi_nodes): New global function.
22918         (remove_ssa_form): Take ssaexpand parameter.  Don't call removed
22919         functions, initialize new parameter, remember partitions having a
22920         default def.
22921         (finish_out_of_ssa): New global function.
22922         (rewrite_out_of_ssa): Make global.  Adjust call to remove_ssa_form,
22923         don't reset in_ssa_p here, don't disable TER when mudflap.
22924         (pass_del_ssa): Remove.
22925         * tree-flow.h (struct var_ann_d): Remove out_of_ssa_tag and
22926         partition members.
22927         (execute_free_datastructures): Declare.
22928         * Makefile.in (SSAEXPAND_H): New variable.
22929         (tree-outof-ssa.o, expr.o, cfgexpand.o): Depend on SSAEXPAND_H.
22930         * basic-block.h (commit_one_edge_insertion): Declare.
22931         * passes.c (init_optimization_passes): Move pass_nrv and
22932         pass_mudflap2 before pass_cleanup_cfg_post_optimizing, remove
22933         pass_del_ssa, pass_free_datastructures, pass_free_cfg_annotations.
22934         * cfgrtl.c (commit_one_edge_insertion): Make global, don't declare.
22935         (redirect_branch_edge): Deal with super block when expanding, split
22936         out jump patching itself into ...
22937         (patch_jump_insn): ... here, new static helper.
22938
22939 2009-04-26  Michael Matz  <matz@suse.de>
22940
22941         * tree-ssa-copyrename.c (rename_ssa_copies): Don't iterate
22942         beyond num_ssa_names.
22943         * tree-ssa-ter.c (free_temp_expr_table): Likewise.
22944         * tree-ssa-coalesce.c (create_outofssa_var_map): Likewise.
22945
22946 2009-04-26  Jakub Jelinek  <jakub@redhat.com>
22947
22948         PR inline-asm/39543
22949         * fwprop.c (forward_propagate_asm): New function.
22950         (forward_propagate_and_simplify): Propagate also into __asm, if it
22951         doesn't increase the number of referenced registers.
22952
22953         PR c/39889
22954         * stmt.c (warn_if_unused_value): Look through NON_LVALUE_EXPR.
22955
22956 2009-04-26  Jakub Jelinek  <jakub@redhat.com>
22957
22958         * tree-nested.c (get_nonlocal_vla_type): If not optimizing, call
22959         note_nonlocal_vla_type for nonlocal VLAs.
22960         (note_nonlocal_vla_type, note_nonlocal_block_vlas,
22961         contains_remapped_vars, remap_vla_decls): New functions.
22962         (convert_nonlocal_reference_stmt): If not optimizing, call
22963         note_nonlocal_block_vlas on GIMPLE_BIND block vars.
22964         (nesting_copy_decl): Return {VAR,PARM,RESULT}_DECL unmodified
22965         if it wasn't found in var_map.
22966         (finalize_nesting_tree_1): Call remap_vla_decls.  If outermost
22967         GIMPLE_BIND doesn't have gimple_bind_block, chain debug_var_chain
22968         to BLOCK_VARS (DECL_INITIAL (root->context)) instead of calling
22969         declare_vars.
22970         * gimplify.c (nonlocal_vlas): New variable.
22971         (gimplify_var_or_parm_decl): Add debug VAR_DECLs for non-local
22972         referenced VLAs.
22973         (gimplify_body): Create and destroy nonlocal_vlas.
22974
22975         * dwarf2out.c (loc_descr_plus_const): New function.
22976         (build_cfa_aligned_loc, tls_mem_loc_descriptor,
22977         mem_loc_descriptor, loc_descriptor_from_tree_1,
22978         descr_info_loc, gen_variable_die): Use it.
22979
22980         * tree.h (DECL_BY_REFERENCE): Note that it is also valid for
22981         !TREE_STATIC VAR_DECLs.
22982         * dwarf2out.c (loc_by_reference, gen_decl_die): Handle
22983         DECL_BY_REFERENCE on !TREE_STATIC VAR_DECLs.
22984         (gen_variable_die): Likewise.  Don't look at TREE_PRIVATE if
22985         DECL_BY_REFERENCE is valid.
22986         * dbxout.c (DECL_ACCESSIBILITY_CHAR): Don't look at TREE_PRIVATE
22987         for PARM_DECLs, RESULT_DECLs or !TREE_STATIC VAR_DECLs.
22988         * tree-nested.c (get_nonlocal_debug_decl, get_local_debug_decl):
22989         Copy DECL_BY_REFERENCE.
22990         (struct nesting_copy_body_data): New type.
22991         (nesting_copy_decl): New function.
22992         (finalize_nesting_tree_1): Remap types of debug_var_chain variables,
22993         if they have variable length.
22994
22995 2009-04-26  Michael Matz  <matz@suse.de>
22996
22997         * tree-sra.c (sra_build_assignment): Don't use into_ssa mode,
22998         mark new temporaries for renaming.
22999
23000 2009-04-26  Joseph Myers  <joseph@codesourcery.com>
23001
23002         PR c/39581
23003         * c-decl.c (global_bindings_p): Return negative value.
23004         (c_variable_size): New.  Based on variable_size from
23005         stor-layout.c.
23006         (grokdeclarator): Call c_variable_size not variable_size.
23007
23008 2009-04-26  Uros Bizjak  <ubizjak@gmail.com>
23009
23010         * config/i386/i386.c (print_operand) ['z']: Fix typo.
23011
23012 2009-04-26  Kai Tietz  <kai.tietz@onevision.com>
23013
23014         * config/i386/mingw-w64.h (STANDARD_INCLUDE_DIR):
23015         Redefine it to just use mingw/include.
23016         (ASM_SPEC): Rules for -m32 and -m64.
23017         (LINK_SPEC): Use Likewise.
23018         (SPEC_32): New define.
23019         (SPEC_64): Likewise.
23020         (SUB_LINK_SPEC): Likewise.
23021         (MULTILIB_DEFAULTS): New define.
23022         * config/i386/t-mingw-w64 (MULTILIB_OPTIONS):
23023         Add multilib options.
23024         (MULTILIB_DIRNAMES): Likewise.
23025         (MULTILIB_OSDIRNAMES): Likewise.
23026         (LIBGCC): Likewise.
23027         (INSTALL_LIBGCC): Likewise.
23028
23029 2009-04-26  Joseph Myers  <joseph@codesourcery.com>
23030
23031         PR c/39556
23032         * c-tree.h (enum c_inline_static_type): New.
23033         (record_inline_static): Declare.
23034         * c-decl.c (struct c_inline_static, c_inline_statics,
23035         record_inline_static, check_inline_statics): New.
23036         (pop_file_scope): Call check_inline_statics.
23037         (start_decl): Call record_inline_static instead of pedwarning
23038         directly for static in inline function.
23039         * c-typeck.c (build_external_ref): Call record_inline_static
23040         instead of pedwarning directly for static referenced in inline
23041         function.
23042
23043 2009-04-26  Steven Bosscher  <steven@gcc.gnu.org>
23044
23045         * df-scan.c (df_insn_rescan): Salvage insn's LUID if the insn is
23046         not new but only being rescanned.
23047         * gcse.c (uid_cuid, max_uid, INSN_CUID, max_cuid, struct reg_set,
23048         reg_set_table, REG_SET_TABLE_SLOP, reg_set_in_block,
23049         alloc_reg_set_mem, free_reg_set_mem, record_one_set,
23050         record_set_info, compute_set, grealloc): Remove.
23051         (recompute_all_luids): New function.
23052         (gcse_main): Don't compute sets, and don't do related memory
23053         allocations/free-ing.  If something changed before the end of the
23054         pass, update LUIDs using recompute_all_luids.
23055         (alloc_gcse_mem): Don't compute LUIDs.  Don't allocate reg_set memory.
23056         (free_gcse_mem): Don't free it either.
23057         (oprs_unchanged_p, load_killed_in_block, record_last_reg_set_info):
23058         Use the df insn LUIDs.
23059         (load_killed_in_block): Likewise.
23060         (compute_hash_table_work): Don't compute reg_set_in_block.
23061         (compute_transp): Use DF_REG_DEF_CHAINs.
23062         (local_cprop_pass): Don't use compute_sets and related functions.
23063         (one_cprop_pass, pre_gcse, one_pre_gcse_pass, one_code_hoisting_pass):
23064         Use get_max_uid() instead of max_cuid.
23065         (insert_insn_end_basic_block, pre_insert_copy_insn,
23066         update_ld_motion_stores): Don't try to
23067         keep reg_set tables up to date.
23068         (pre_insert_copies): Use df insn LUIDs.
23069         (sbitmap pre_redundant_insns): Replace with uses of INSN_DELETED_P.
23070         (reg_set_info): Don't use extra bitmap argument.
23071         (compute_store_table): Don't compute reg_set_in_block.  Use DF scan
23072         information to compute regs_set_in_block.
23073         (free_store_memory, store_motion): Don't nullify reg_set_in_block.
23074         (bypass_jumps): Don't use compute_sets and friends.
23075
23076 2009-04-26  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
23077
23078         PR testsuite/39710
23079         * opts.c (undocumented_msg): Do not leave blank even with
23080         ENABLE_CHECKING.
23081
23082 2009-04-25  Joseph Myers  <joseph@codesourcery.com>
23083
23084         * c-decl.c (build_enumerator): Allow values folding to integer
23085         constants but not integer constant expressions with a pedwarn if
23086         pedantic.
23087
23088 2009-04-25  Joseph Myers  <joseph@codesourcery.com>
23089
23090         PR c/39582
23091         * c-typeck.c (c_expr_sizeof_type): Create a C_MAYBE_CONST_EXPR
23092         with non-null C_MAYBE_CONST_EXPR_PRE if size of a variable-length
23093         type is an integer constant.
23094
23095 2009-04-25  Uros Bizjak  <ubizjak@gmail.com>
23096
23097         PR target/39897
23098         * config/i386/i386.c (print_operand) ['z']: Revert handling of
23099         HImode operands.
23100
23101 2009-04-25  Joseph Myers  <joseph@codesourcery.com>
23102
23103         PR c/39564
23104         * c-decl.c (grokdeclarator): Diagnose declarations of functions
23105         with variably modified return type and no storage class
23106         specifiers, except for the case of nested functions.  Distinguish
23107         extern declarations of functions with variably modified return
23108         types from those of objects with variably modified types.
23109
23110 2009-04-25  Jan Hubicka  <jh@suse.cz>
23111
23112         * tree.c (list_equal_p): New function.
23113         * tree.h (list_equal_p): Declare.
23114         * coretypes.h (edge_def, edge, const_edge, basic_block_def
23115         basic_block_def, basic_block, const_basic_block): New.
23116         * tree-eh.c (make_eh_edge): EH edges are not abnormal.
23117         (redirect_eh_edge): New function.
23118         (make_eh_edge_update_phi): EH edges are not abnormal.
23119         * except.c: Include tree-flow.h.
23120         (list_match): New function.
23121         (eh_region_replaceable_by_p): New function.
23122         (replace_region): New function.
23123         (hash_type_list): New function.
23124         (hash_eh_region): New function.
23125         (eh_regions_equal_p): New function.
23126         (merge_peers): New function.
23127         (remove_unreachable_regions): Verify EH tree when checking;
23128         merge peers.
23129         (copy_eh_region_1): New function.
23130         (copy_eh_region): New function.
23131         (push_reachable_handler): New function.
23132         (build_post_landing_pads, dw2_build_landing_pads): Be ready for
23133         regions without label but with live RESX.
23134         * except.h (redirect_eh_edge_to_label): New.
23135         * tree-flow.h (redirect_eh_edge): New.
23136         * coretypes.h (edge_def, edge, const_edge, basic_block_def
23137         basic_block_def, basic_block, const_basic_block): Remove.
23138         * Makefile.in (except.o): Add dependency on tree-flow.h
23139         * tree-cfg.c (gimple_redirect_edge_and_branch): Handle EH edges.
23140         * basic-block.h (edge, const_edge, basic_block, const_basic_block):
23141         Remove.
23142
23143 2009-04-25  Eric Botcazou  <ebotcazou@adacore.com>
23144
23145         PR bootstrap/39645
23146         * config/sparc/sparc.c (sparc_gimplify_va_arg): Set TREE_ADDRESSABLE
23147         on the destination of memcpy.
23148
23149 2009-04-25  Paolo Bonzini  <bonzini@gnu.org>
23150
23151         * doc/tm.texi (REGNO_OK_FOR_BASE_P, REGNO_MODE_OK_FOR_BASE_P,
23152         REGNO_MODE_OK_FOR_REG_BASE_P, REGNO_MODE_CODE_OK_FOR_BASE_P,
23153         REGNO_OK_FOR_INDEX_P): Mention strict/nonstrict difference.
23154
23155 2009-04-25  Jan Hubicka  <jh@suse.cz>
23156
23157         * tree-eh.c (tree_remove_unreachable_handlers): Handle shared labels.
23158         (tree_empty_eh_handler_p): Allow non-EH predecestors; allow region
23159         to be reached by different label than left.
23160         (update_eh_edges): Update comment; remove edge_to_remove if possible
23161         and return true if suceeded.
23162         (cleanup_empty_eh): Accept sharing map; handle shared regions.
23163         (cleanup_eh): Compute sharing map.
23164         * except.c (remove_eh_handler_and_replace): Add argument if we should
23165         update regions.
23166         (remove_unreachable_regions): Update for label sharing.
23167         (label_to_region_map): Likewise.
23168         (get_next_region_sharing_label): New function.
23169         (remove_eh_handler_and_replace): Add update_catch_try parameter; update
23170         prev_try pointers.
23171         (remove_eh_handler): Update.
23172         (remove_eh_region_and_replace_by_outer_of): New function.
23173         * except.h (struct eh_region): Add next_region_sharing_label.
23174         (remove_eh_region_and_replace_by_outer_of,
23175         get_next_region_sharing_label): Declare.
23176         * tree-cfgcleanup.c (tree_forwarder_block_p): Simplify.
23177
23178 2009-04-25  Jan Hubicka  <jh@suse.cz>
23179
23180         * tree-cfg.c (split_critical_edges): Split also edges where we can't
23181         insert code even if they are not critical.
23182
23183 2009-04-25  Jan Hubicka  <jh@suse.cz>
23184
23185         * tree-cfg.c (gimple_can_merge_blocks_p): EH edges are unmergable.
23186         (gimple_can_remove_branch_p): EH edges won't remove branch by
23187         redirection.
23188         * tree-inline.c (update_ssa_across_abnormal_edges): Do handle
23189         updating of non-abnormal EH edges.
23190         * tree-cfg.c (gimple_can_merge_blocks_p): EH edges are unmergable.
23191         (gimple_can_remove_branch_p): EH edges are unremovable by redirection.
23192         (split_critical_edges): Split also edges where emitting code on them
23193         will lead to splitting later.
23194
23195 2009-04-25  Uros Bizjak  <ubizjak@gmail.com>
23196             H.J. Lu  <hongjiu.lu@intel.com>
23197
23198         PR target/39590
23199         * configure.ac (HAVE_AS_IX86_FILDQ): On x86 targets check whether
23200         the configured assembler supports fildq and fistpq mnemonics.
23201         (HAVE_AS_IX86_FILDS): Rename from HAVE_GAS_FILDS_FISTS.
23202         * configure: Regenerated.
23203         * config.in: Ditto.
23204
23205         * config/i386/i386.c (print_operand): Handle 'Z'.
23206         ['z']: Remove handling of special fild/fist suffixes.
23207         (output_fix_trunc): Use '%Z' to output suffix of fist{,p,tp} insn.
23208         * config/i386/i386.md (*floathi<mode>2_i387): Use '%Z' to output
23209         suffix of fild insn.
23210         (*floatsi<mode>2_vector_mixed): Ditto.
23211         (*float<SSEMODEI24:mode><MODEF:mode>2_mixed_interunit): Ditto.
23212         (*float<SSEMODEI24:mode><MODEF:mode>2_mixed_nointerunit): Ditto.
23213         (*float<SSEMODEI24:mode><X87MODEF:mode>2_i387_with_temp): Ditto.
23214         (*float<SSEMODEI24:mode><X87MODEF:mode>2_i387): Ditto.
23215         * config/i386/gas.h (GAS_MNEMONICS): Remove.
23216
23217 2009-04-25  Ben Elliston  <bje@au.ibm.com>
23218
23219         * genrecog.c (validate_pattern): Do not warn for VOIDmode CALLs as
23220         the source of a set operation.
23221
23222 2009-04-25  Anatoly Sokolov  <aesok@post.ru>
23223
23224         * target.h (struct gcc_target): Add case_values_threshold field.
23225         * target-def.h (TARGET_CASE_VALUES_THRESHOLD): New.
23226         (TARGET_INITIALIZER): Use TARGET_CASE_VALUES_THRESHOLD.
23227         * targhooks.c (default_case_values_threshold): New function.
23228         * targhooks.h (default_case_values_threshold): Declare function.
23229         * stmt.c (expand_case): Use case_values_threshold target hook.
23230         * expr.h (case_values_threshold): Remove declartation.
23231         * expr.c (case_values_threshold): Remove function.
23232         * doc/tm.texi (CASE_VALUES_THRESHOLD): Revise documentation.
23233
23234         * config/avr/avr.h (CASE_VALUES_THRESHOLD): Remove macro.
23235         * config/avr/avr.c (TARGET_CASE_VALUES_THRESHOLD): Define macro.
23236         (avr_case_values_threshold): Declare as static.
23237         * config/avr/avr-protos.h (avr_case_values_threshold): Remove.
23238
23239         * config/avr/mn10300.h (CASE_VALUES_THRESHOLD): Remove macro.
23240         * config/avr/mn10300.c (TARGET_CASE_VALUES_THRESHOLD): Define macro.
23241         (mn10300_case_values_threshold): New function.
23242
23243 2009-04-24  H.J. Lu  <hongjiu.lu@intel.com>
23244
23245         * ira.c (setup_cover_and_important_classes): Add enum cast.
23246
23247 2009-04-24  Vladimir Makarov  <vmakarov@redhat.com>
23248
23249         * genpreds.c (write_enum_constraint_num): Output definition of
23250         CONSTRAINT_NUM_DEFINED_P macro.
23251         * ira.c (setup_cover_and_important_classes): Use
23252         CONSTRAINT_NUM_DEFINED_P instead of CONSTRAINT__LIMIT in #ifdef.
23253
23254 2009-04-24  DJ Delorie  <dj@redhat.com>
23255
23256         * config/sh/sh.h (LIBGCC2_DOUBLE_TYPE_SIZE): Test
23257         __SH2A_SINGLE_ONLY__ also.
23258
23259 2009-04-24  Steve Ellcey  <sje@cup.hp.com>
23260
23261         * config/ia64/ia64.md (movfs_internal): Allow flt constants.
23262         (movdf_internal): Ditto.
23263         * config/ia64/ia64.c (ia64_legitimate_constant_p): Allow
23264         SFmode and DFmode constants.
23265         (ia64_print_operand): Add 'G' format for printing
23266         floating point constants.
23267
23268 2009-04-24  Richard Guenther  <rguenther@suse.de>
23269
23270         * tree-vrp.c (extract_range_from_binary_expr): Handle overflow
23271         from unsigned additions.
23272
23273 2009-04-24  Joseph Myers  <joseph@codesourcery.com>
23274
23275         * c-typeck.c (set_init_index): Allow array designators that are
23276         not integer constant expressions with a pedwarn if pedantic.
23277
23278 2009-04-24  Bernd Schmidt  <bernd.schmidt@analog.com>
23279
23280         * simplify-rtx.c (simplify_binary_operation_1, case AND): Result is
23281         zero if no overlap in nonzero bits between the operands.
23282
23283 2009-04-24  Ian Lance Taylor  <iant@google.com>
23284
23285         * combine.c (record_value_for_reg): Change 0 to VOIDmode, twice.
23286         (record_dead_and_set_regs): Likewise.
23287         * df.h (struct df_mw_hardreg): Change flags field to int.
23288         (struct df_base_ref): Likewise.
23289         (struct df): Change changeable_flags field to int.
23290         * df-scan.c (df_defs_record): Change clobber_flags to int.
23291         * dwarf2.h (enum dwarf_tag): Make lo_user and hi_user values enum
23292         constants rather than #define macros.
23293         (enum dwarf_attribute, enum dwarf_location_atom): Likewise.
23294         (enum dwarf_type, enum dwarf_endianity_encoding): Likewise.
23295         (enum dwarf_calling_convention): Likewise.
23296         (enum dwarf_line_number_x_ops): Likewise.
23297         (enum dwarf_call_frame_info): Likewise.
23298         (enum dwarf_source_language): Likewise.
23299         * dwarf2out.c (int_loc_descriptor): Add cast to enum type.
23300         (add_calling_convention_attribute): Likewise.
23301         * fold-const.c (fold_undefer_overflow_warnings): Add cast to enum type.
23302         (combine_comparisons): Change compcode to int.  Add cast to enum type.
23303         * genrecog.c (maybe_both_true_2): Change c to int.
23304         (write_switch): Likewise.  Add cast to enum type.
23305         * gimplify.c (gimplify_omp_for): Handle return values from
23306         gimplify_expr using MIN rather than bitwise or.
23307         (gimplify_expr): Add cast to enum type.
23308         * ipa-prop.c (update_jump_functions_after_inlining): Change
23309         IPA_BOTTOM to IPA_JF_UNKNOWN.
23310         * ira.c (setup_class_subset_and_memory_move_costs): Change mode to int.
23311         Add casts to enum type.
23312         (setup_cover_and_important_classes): Change cl to int.  Add casts
23313         to enum type.
23314         (setup_class_translate): Change cl and mode to int.
23315         (ira_init_once): Change mode to int.
23316         (free_register_move_costs): Likewise.
23317         (setup_prohibited_mode_move_regs): Add casts to enum type.
23318         * langhooks.c (add_builtin_function_common): Rework assertion that
23319         value fits bitfield.
23320         * mcf.c (add_fixup_edge): Change type parameter to edge_type.
23321         * omega.c (omega_do_elimination): Avoid math on enum types.
23322         * optabs.c (expand_vec_shift_expr): Remove casts to int.
23323         * opts.c (set_debug_level): Change 2 to enum constant.  Use new
23324         int local to handle integral_argment value.
23325         * regmove.c (try_auto_increment): Change PUT_MODE to
23326         PUT_REG_NOTE_KIND.
23327         * reload.c (push_secondary_reload): Add casts to enum type.
23328         (secondary_reload_class, find_valid_class): Likewise.
23329         * reload1.c (emit_input_reload_insns): Likewise.
23330         * rtl.h (NOTE_VAR_LOCATION_STATUS): Likewise.
23331         * sel-sched.c (init_hard_regs_data): Change cur_mode to int.
23332         * sel-sched-ir.c (hash_with_unspec_callback): Change 0 to enum
23333         constant.
23334         * tree.c (build_common_builtin_nodes): Add casts to enum type.
23335         * tree-complex.c (complex_lattice_t): Typedef to int rather than
23336         enum type.
23337         (expand_complex_libcall): Add casts to enum type.
23338         * tree-into-ssa.c (get_ssa_name_ann): Change 0 to enum constant.
23339         * tree-vect-loop.c (vect_model_reduction_cost): Compare reduc_code
23340         with ERROR_MARK, not NUM_TREE_CODES.
23341         (vect_create_epilog_for_reduction): Likewise.
23342         (vectorizable_reduction): Don't initialize epiloc_reduc_code.
23343         When not using it, set it to ERROR_MARK rather than NUM_TREE_CODES.
23344         * tree-vect-patterns.c (vect_pattern_recog_1): Change vec_mode to
23345         enum machine_mode.
23346         * tree-vect-stmts.c (new_stmt_vec_info): Change 0 to
23347         vect_unused_in_loop.  Change 0 to loop_vect.
23348         * tree-vectorizer.c (vect_set_verbosity_level): Add casts to enum type.
23349         * var-tracking.c (get_init_value): Change return type to enum
23350         var_init_status.
23351         * vec.h (DEF_VEC_FUNC_P) [iterate]: Cast 0 to type T.
23352         * config/arm/arm.c (fp_model_for_fpu): Change to array to enum
23353         arm_fp_model.
23354         (arm_override_options): Add casts to enum type.
23355         (arm_emit_tls_decoration): Likewise.
23356         * config/i386/i386.c (ix86_function_specific_restore): Add casts
23357         to enum type.
23358         * config/i386/i386-c.c (ix86_pragma_target_parse): Likewise.
23359         * config/ia64/ia64.c (ia64_expand_compare): Change magic to int.
23360         * config/rs6000/rs6000.c (rs6000_override_options): Add casts to
23361         enum type.
23362         * config/s390/s390.c (code_for_builtin_64): Change to array of
23363         enum insn_code.
23364         (code_for_builtin_31): Likewise.
23365         (s390_expand_builtin): Change code_for_builtin to enum insn_code
23366         const *.
23367         * config/sparc/sparc.c (sparc_override_options): Change value
23368         field in struct code_model to enum cmodel.  In initializer change
23369         0 to NULL and add cast to enum type.
23370
23371         * c-typeck.c (build_modify_expr): Add lhs_origtype parameter.
23372         Change all callers.  Issue a -Wc++-compat warning using
23373         lhs_origtype if necessary.
23374         (convert_for_assignment): Issue -Wc++-compat warnings about
23375         invalid conversions to enum type on assignment.
23376         * c-common.h (build_modify_expr): Update declaration.
23377
23378 2009-04-24  Nick Clifton  <nickc@redhat.com>
23379
23380         * config/iq2000/iq2000.c (function_arg): Handle TImode values.
23381         (function_arg_advance): Likewise.
23382         * config/iq2000/iq2000.md (movsi_internal2): Fix the length of the
23383         5th alternative.
23384
23385 2009-04-24  Andreas Krebbel  <krebbel1@de.ibm.com>
23386
23387         * config/s390/constraints.md ('I', 'J'): Fix condition.
23388
23389 2009-04-24  Diego Novillo  <dnovillo@google.com>
23390
23391         * gengtype-parse.c (parse_error): Add newline after message.
23392
23393 2009-04-24  H.J. Lu  <hongjiu.lu@intel.com>
23394
23395         * config/i386/sse.md (avxmodesuffixs): Removed.
23396         (*avx_pinsr<avxmodesuffixs>): Renamed to ...
23397         (*avx_pinsr<ssevecsize>): This.
23398
23399 2009-04-24  Bernd Schmidt  <bernd.schmidt@analog.com>
23400
23401         * loop-iv.c (replace_single_def_regs): Look for REG_EQUAL notes;
23402         follow chains of regs with a single definition, and allow expressions
23403         that are function_invariant_p.
23404         (simple_rhs_p): Allow expressions that are function_invariant_p.
23405
23406 2009-04-24  Paolo Bonzini  <bonzini@gnu.org>
23407
23408         PR middle-end/39867
23409         * fold-const.c (fold_cond_expr_with_comparison): When folding
23410         > and >= to MAX, make sure the MAX uses the same type as the
23411         comparison's operands.
23412
23413 2009-04-24  Nick Clifton  <nickc@redhat.com>
23414
23415         * config/frv/frv.c (frv_frame_access): Do not use reg+reg
23416         addressing for DImode accesses.
23417         (frv_print_operand_address): Handle PLUS case.
23418         * config/frv/frv.h (FIXED_REGISTERS): Mark link register as fixed.
23419
23420 2009-04-24  Jakub Jelinek  <jakub@redhat.com>
23421
23422         PR rtl-optimization/39794
23423         * alias.c (canon_true_dependence): Add x_addr argument.
23424         * rtl.h (canon_true_dependence): Adjust prototype.
23425         * cse.c (check_dependence): Adjust canon_true_dependence callers.
23426         * cselib.c (cselib_invalidate_mem): Likewise.
23427         * gcse.c (compute_transp): Likewise.
23428         * dse.c (scan_reads_nospill): Likewise.
23429         (record_store, check_mem_read_rtx): Likewise.  For non-const-or-frame
23430         addresses pass base->val_rtx as mem_addr, for const-or-frame addresses
23431         canon_base_addr of the group, plus optional offset.
23432         (struct group_info): Rename canon_base_mem to
23433         canon_base_addr.
23434         (get_group_info): Set canon_base_addr to canon_rtx of base, not
23435         canon_rtx of base_mem.
23436
23437 2009-04-23  Paolo Bonzini  <bonzini@gnu.org>
23438
23439         * config/sh/sh.c (sh_expand_prologue, sh_expand_epilogue):
23440         Use memory_address_p instead of GO_IF_LEGITIMATE_ADDRESS.
23441
23442 2009-04-23  Ulrich Weigand  <Ulrich.Weigand@de.ibm.com>
23443
23444         * config/spu/spu-builtins.h: Delete file.
23445
23446         * config/spu/spu.h (enum spu_builtin_type): Move here from
23447         spu-builtins.h.
23448         (struct spu_builtin_description): Likewise.  Add GTY marker.
23449         Do not use enum spu_function_code or enum insn_code.
23450         (spu_builtins): Add extern declaration.
23451
23452         * config/spu/spu.c: Do not include "spu-builtins.h".
23453         (enum spu_function_code, enum spu_builtin_type_index,
23454         V16QI_type_node, V8HI_type_node, V4SI_type_node, V2DI_type_node,
23455         V4SF_type_node, V2DF_type_node, unsigned_V16QI_type_node,
23456         unsigned_V8HI_type_node, unsigned_V4SI_type_node,
23457         unsigned_V2DI_type_node): Move here from spu-builtins.h.
23458         (spu_builtin_types): Make static.  Add GTY marker.
23459         (spu_builtins): Add extern declaration with GTY marker.
23460         Include "gt-spu.h".
23461
23462         * config/spu/spu-c.c: Do not include "spu-builtins.h".
23463         (spu_resolve_overloaded_builtin): Do not use spu_function_code.
23464         Check programmatically whether all parameters are scalar.
23465
23466         * config/spu/t-spu-elf (spu.o, spu-c.o): Update dependencies.
23467
23468 2009-04-23  Eric Botcazou  <ebotcazou@adacore.com>
23469
23470         * gimplify.c (gimplify_modify_expr_rhs) <VAR_DECL>: Do not do a direct
23471         assignment from the constructor either if the target is volatile.
23472
23473 2009-04-23  Daniel Jacobowitz  <dan@codesourcery.com>
23474
23475         * config/arm/arm.md (insv): Do not share operands[0].
23476
23477 2009-04-23  Nathan Sidwell  <nathan@codesourcery.com>
23478
23479         * config/vxlib-tls.c (active_tls_threads): Delete.
23480         (delete_hook_installed): New.
23481         (tls_delete_hook): Don't delete the delete hook.
23482         (tls_destructor): Delete it here.
23483         (__gthread_set_specific): Adjust installing the delete hook.
23484         (tls_delete_hook): Use __gthread_enter_tsd_dtor_context and
23485         __gthread_leave_tsd_dtor_context.
23486
23487 2009-04-23  Rafael Avila de Espindola  <espindola@google.com>
23488
23489         * c-format.c (gcc_tdiag_char_table): Add support for %E.
23490
23491 2009-04-23  Uros Bizjak  <ubizjak@gmail.com>
23492
23493         * config/alpha/alpha.c (alpha_legitimize_reload_address): Add cast to
23494         enum type.
23495         (alpha_rtx_costs): Ditto.
23496         (emit_unlikely_jump): Use add_reg_note.
23497         (emit_frame_store_1): Ditto.
23498         (alpha_expand_prologue): Ditto.
23499         (alpha_expand_builtin): Change 0 to EXPAND_NORMAL in function call.
23500         * config/alpha/alpha.c (Unicos/Mk address splitter): Use add_reg_note.
23501
23502 2009-04-23  Nick Clifton  <nickc@redhat.com>
23503
23504         * config/v850/v850.md (epilogue): Remove suppressed code.
23505         (return): Rename to return_simple and remove test of frame size.
23506         * config/v850/v850.c (expand_epilogue): Rename call to gen_return
23507         to gen_return_simple.
23508
23509 2009-04-22  Jing Yu  <jingyu@google.com>
23510
23511         PR testsuite/39781
23512         * config/arm/arm.h: Define HANDLE_PRAGMA_PACK_PUSH_POP.
23513
23514 2009-04-22  Andrew Pinski  <andrew_pinski@playstation.sony.com>
23515
23516         PR C/31499
23517         * c-typeck.c (process_init_element): Treat VECTOR_TYPE like ARRAY_TYPE
23518         and RECORD_TYPE/UNION_TYPE.  When outputing the actual element and the
23519         value is a VECTOR_CST, the element type is the element type of the
23520         vector.
23521
23522 2009-04-22  DJ Delorie  <dj@redhat.com>
23523
23524         * config/m32c/m32c.h: Update GTY annotations to new syntax.
23525
23526 2009-04-22  Jakub Jelinek  <jakub@redhat.com>
23527
23528         * alias.c (find_base_term): Move around LO_SUM case, so that
23529         CONST falls through into PLUS/MINUS handling.
23530
23531         PR c/39855
23532         * fold-const.c (fold_binary) <case LSHIFT_EXPR>: When optimizing
23533         into 0, use omit_one_operand.
23534
23535 2009-04-23  Ben Elliston  <bje@au.ibm.com>
23536
23537         * config/rs6000/linux-unwind.h (get_regs): Remove type
23538         puns. Change the type of `pc' to an array of unsigned ints and
23539         update all users.  Constify frame24.
23540
23541 2009-04-22  DJ Delorie  <dj@redhat.com>
23542
23543         * config/m32c/m32c.c (m32c_special_page_vector_p): Move
23544         declarations before code.
23545         (current_function_special_page_vector): Likewise.
23546         (m32c_expand_insv): Silence a warning.
23547
23548 2009-04-21  Taras Glek  <tglek@mozilla.com>
23549
23550         * alias.c: Update GTY annotations to new syntax.
23551         * basic-block.h: Likewise.
23552         * bitmap.h: Likewise.
23553         * c-common.h: Likewise.
23554         * c-decl.c: Likewise.
23555         * c-parser.c: Likewise.
23556         * c-pragma.c: Likewise.
23557         * c-tree.h: Likewise.
23558         * cfgloop.h: Likewise.
23559         * cgraph.h: Likewise.
23560         * config/alpha/alpha.c: Likewise.
23561         * config/arm/arm.h: Likewise.
23562         * config/avr/avr.h: Likewise.
23563         * config/bfin/bfin.c: Likewise.
23564         * config/cris/cris.c: Likewise.
23565         * config/darwin.c: Likewise.
23566         * config/frv/frv.c: Likewise.
23567         * config/i386/i386.c: Likewise.
23568         * config/i386/i386.h: Likewise.
23569         * config/i386/winnt.c: Likewise.
23570         * config/ia64/ia64.h: Likewise.
23571         * config/iq2000/iq2000.c: Likewise.
23572         * config/mips/mips.c: Likewise.
23573         * config/mmix/mmix.h: Likewise.
23574         * config/pa/pa.c: Likewise.
23575         * config/pa/pa.h: Likewise.
23576         * config/rs6000/rs6000.c: Likewise.
23577         * config/s390/s390.c: Likewise.
23578         * config/sparc/sparc.c: Likewise.
23579         * config/xtensa/xtensa.c: Likewise.
23580         * cselib.h: Likewise.
23581         * dbxout.c: Likewise.
23582         * dwarf2out.c: Likewise.
23583         * except.c: Likewise.
23584         * except.h: Likewise.
23585         * fixed-value.h: Likewise.
23586         * function.c: Likewise.
23587         * function.h: Likewise.
23588         * gimple.h: Likewise.
23589         * integrate.c: Likewise.
23590         * optabs.c: Likewise.
23591         * output.h: Likewise.
23592         * real.h: Likewise.
23593         * rtl.h: Likewise.
23594         * stringpool.c: Likewise.
23595         * tree-data-ref.c: Likewise.
23596         * tree-flow.h: Likewise.
23597         * tree-scalar-evolution.c: Likewise.
23598         * tree-ssa-address.c: Likewise.
23599         * tree-ssa-alias.h: Likewise.
23600         * tree-ssa-operands.h: Likewise.
23601         * tree.c: Likewise.
23602         * tree.h: Likewise.
23603         * varasm.c: Likewise.
23604         * varray.h: Likewise.
23605         * vec.h: Likewise.
23606         * coretypes.h: Do not define GTY macro if it is already defined.
23607         * doc/gty.texi: Update GTY documentation to new syntax.
23608         * gengtype-lex.l: Enforce attribute-like syntax for GTY
23609         annotations on structs.
23610         * gengtype-parse.c: Likewise.
23611
23612 2009-04-22  Mark Heffernan  <meheff@google.com>
23613
23614         * gcc.c (LINK_COMMAND_SPEC): Link with gcov with -fprofile-generate=.
23615
23616 2009-04-22  Kazu Hirata  <kazu@codesourcery.com>
23617
23618         * config/arm/arm.c (arm_rtx_costs_1): Use power_of_two_operand
23619         where appropriate.
23620
23621 2009-04-22  Kazu Hirata  <kazu@codesourcery.com>
23622
23623         * config/arm/arm.c (arm_size_rtx_costs): Treat a PLUS with a shift
23624         the same as a PLUS without a shift.  Increase the cost of a
23625         CONST_INT in MULT.
23626
23627 2009-04-22  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
23628
23629         * Makefile.in: Update dependencies.
23630         * errors.c (warning): Remove unused parameter 'opt'. Returns 'void'.
23631         * errors.h: Remove bogus comment about compatibility.
23632         (warning): Update declaration.
23633         * genautomata.c: Update all calls to warning.
23634         * gimple.c: Do not include errors.h. Include toplev.h.
23635         * tree-ssa-structalias.c: Do not include errors.h.
23636         * omega.c: Likewise.
23637         * tree-ssa-reassoc.c: Likewise.
23638         * config/spu/spu-c.c: Likewise.
23639         * config/spu/t-spu-elf: Update dependencies.
23640
23641 2009-04-22  Richard Guenther  <rguenther@suse.de>
23642
23643         PR tree-optimization/39824
23644         * tree-ssa-ccp.c (fold_const_aggregate_ref): For INDIRECT_REFs
23645         make sure the types are compatible.
23646
23647 2009-04-22  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
23648
23649         PR c++/14875
23650         * c-common.c (c_parse_error): Take a token_flags parameter.
23651         Use token_type for the token type instead.
23652         Pass token_flags to cpp_type2name.
23653         * c-common.h (c_parse_error): Update declaration.
23654         * c-parser.c (c_parser_error): Pass 0 as token flags.
23655
23656 2009-04-22  Andrey Belevantsev  <abel@ispras.ru>
23657
23658         PR rtl-optimization/39580
23659         * sel-sched-ir.c (insert_in_history_vect): Remove incorrect gcc_assert.
23660
23661 2009-04-22  Ulrich Weigand  <Ulrich.Weigand@de.ibm.com>
23662
23663         * function.c (expand_function_end): Do not emit a jump to the "naked"
23664         return label for fall-through returns.
23665         * except.c (sjlj_emit_function_exit): Always place the call to the
23666         unregister function at the location installed by expand_function_end.
23667
23668 2009-04-22  Richard Guenther  <rguenther@suse.de>
23669
23670         PR tree-optimization/39845
23671         * tree-switch-conversion.c (build_arrays): Add new referenced vars.
23672         (gen_inbound_check): Likewise.
23673
23674 2009-04-22  Nathan Sidwell  <nathan@codesourcery.com>
23675
23676         * gthr-vxworks.h (struct __gthread_once_t): Add alignment and
23677         padding for PPC.
23678         (__GTHREAD_ONCE_INIT): Adjust ppc initializer.
23679         * config/vxlib.c (__gthread_once): Add race guard for PPC.
23680
23681 2009-04-22  Paolo Bonzini  <bonzini@gnu.org>
23682
23683         * config/sh/sh.c (shift_insns_rtx, shiftcosts, gen_shifty_op,
23684         sh_dynamicalize_shift_p, shl_and_scr_length): Truncate
23685         shift counts to avoid out-of-bounds array accesses.
23686
23687 2009-04-22  Paolo Bonzini  <bonzini@gnu.org>
23688
23689         * config/sparc/sparc.h (POINTER_SIZE): Fix comment.
23690         (Pmode): Move above.
23691
23692 2009-04-22  Uros Bizjak  <ubizjak@gmail.com>
23693
23694         * config/alpha/alpha.c: Use REG_P, MEM_P, CONST_INT_P, JUMP_P,
23695         NONJUMP_INSN_P, CALL_P, LABEL_P and NOTE_P predicates instead of
23696         GET_CODE macro.  Use IN_RANGE macro where appropriate.
23697         * config/alpha/alpha.h: Ditto.
23698         * config/alpha/alpha.md: Ditto.
23699         * config/alpha/constraints.md: Ditto.
23700         * config/alpha/predicates.md: Ditto.
23701
23702 2009-04-22  Paolo Bonzini  <bonzini@gnu.org>
23703
23704         * defaults.h (GO_IF_MODE_DEPENDENT_ADDRESS): Provide empty default.
23705         * config/frv/frv.h (GO_IF_MODE_DEPENDENT_ADDRESS): Delete.
23706         * config/s390/s390.h (GO_IF_MODE_DEPENDENT_ADDRESS): Delete.
23707         * config/m32c/m32c.h (GO_IF_MODE_DEPENDENT_ADDRESS): Delete.
23708         * config/spu/spu.h (GO_IF_MODE_DEPENDENT_ADDRESS): Delete.
23709         * config/i386/i386.h (GO_IF_MODE_DEPENDENT_ADDRESS): Delete.
23710         * config/sh/sh.h (GO_IF_MODE_DEPENDENT_ADDRESS): Delete.
23711         * config/pdp11/pdp11.h (GO_IF_MODE_DEPENDENT_ADDRESS): Delete.
23712         * config/avr/avr.h (GO_IF_MODE_DEPENDENT_ADDRESS): Delete.
23713         * config/crx/crx.h (GO_IF_MODE_DEPENDENT_ADDRESS): Delete.
23714         * config/fr30/fr30.h (GO_IF_MODE_DEPENDENT_ADDRESS): Delete.
23715         * config/m68hc11/m68hc11.h (GO_IF_MODE_DEPENDENT_ADDRESS): Delete.
23716         * config/cris/cris.h (GO_IF_MODE_DEPENDENT_ADDRESS): Delete.
23717         * config/iq2000/iq2000.h (GO_IF_MODE_DEPENDENT_ADDRESS): Delete.
23718         * config/mn10300/mn10300.h (GO_IF_MODE_DEPENDENT_ADDRESS): Delete.
23719         * config/ia64/ia64.h (GO_IF_MODE_DEPENDENT_ADDRESS): Delete.
23720         * config/m68k/m68k.h (GO_IF_MODE_DEPENDENT_ADDRESS): Delete.
23721         * config/picochip/picochip.h (GO_IF_MODE_DEPENDENT_ADDRESS): Delete.
23722         * config/arc/arc.h (GO_IF_MODE_DEPENDENT_ADDRESS): Delete.
23723         * config/mcore/mcore.h (GO_IF_MODE_DEPENDENT_ADDRESS): Delete.
23724         * config/score/score.h (GO_IF_MODE_DEPENDENT_ADDRESS): Delete.
23725         * config/arm/arm.h (GO_IF_MODE_DEPENDENT_ADDRESS): Delete.
23726         * config/pa/pa.h (GO_IF_MODE_DEPENDENT_ADDRESS): Delete.
23727         * config/mips/mips.h (GO_IF_MODE_DEPENDENT_ADDRESS): Delete.
23728         * config/v850/v850.h (GO_IF_MODE_DEPENDENT_ADDRESS): Delete.
23729         * config/mmix/mmix.h (GO_IF_MODE_DEPENDENT_ADDRESS): Delete.
23730         * config/bfin/bfin.h (GO_IF_MODE_DEPENDENT_ADDRESS): Delete.
23731
23732 2009-04-22  Laurynas Biveinis  <laurynas.biveinis@gmail.com>
23733
23734         * cfghooks.c (tidy_fallthru_edges): Remove find_basic_blocks
23735         references from comments.
23736         * cfgbuild.c (count_basic_blocks): Delete.
23737         (find_basic_blocks_1): Delete.
23738         (find_basic_blocks): Delete.
23739         * except.c (finish_eh_generation): Make static.  Move comment from
23740         except.h here.  Remove find_basic_blocks references from comments.
23741         * except.h (finish_eh_generation): Delete.
23742         * basic-block.h (find_basic_blocks): Delete.
23743         * config/sh/sh.c (sh_output_mi_thunk): Delete a "#if 0" block.
23744
23745 2009-04-22  Dave Korn  <dave.korn.cygwin@gmail.com>
23746
23747         * sdbout.c (sdbout_symbol):  Pass VOIDmode to eliminate_regs.
23748         (sdbout_parms):  Likewise.
23749
23750 2009-04-21  Kaz Kojima  <kkojima@gcc.gnu.org>
23751
23752         * config/sh/sh.c (prepare_cbranch_operands): Use
23753         LAST_AND_UNUSED_RTX_CODE instead of CODE_FOR_nothing.
23754         (expand_cbranchdi4): Likewise.
23755         (from_compare): Add cast to enum type.
23756         (expand_cbranchsi4): Use add_reg_note.
23757         (output_stack_adjust, push, pop, sh_expand_prologue): Likewise.
23758         (sh_insn_length_adjustment): Use sh_cpu_attr instead of sh_cpu.
23759         (sh_initialize_trampoline): Change 0 to LCT_NORMAL in function call.
23760         (sh_expand_builtin): Change 0 to EXPAND_NORMAL in function call.
23761         * config/sh/sh.md (cbranchsi4): Use LAST_AND_UNUSED_RTX_CODE
23762         instead of CODE_FOR_nothing.
23763         (cbranchdi4): Likewise.  Fix the order of arguments for
23764         gen_rtx_fmt_ee.
23765         (push_fpscr): Use add_reg_note.
23766         (pop_fpscr, movdf_i4+1, reload_outdf__RnFRm+3, reload_outdf__RnFRm+4,
23767         reload_outdf__RnFRm+5, fpu_switch+1, fpu_switch+2): Likewise.
23768
23769 2009-04-21  Joseph Myers  <joseph@codesourcery.com>
23770
23771         * ABOUT-GCC-NLS, ChangeLog, ChangeLog-1997, ChangeLog-1998,
23772         ChangeLog-1999, ChangeLog-2000, ChangeLog-2001, ChangeLog-2002,
23773         ChangeLog-2003, ChangeLog-2004, ChangeLog-2005, ChangeLog-2006,
23774         ChangeLog-2007, ChangeLog-2008, ChangeLog.dataflow, ChangeLog.lib,
23775         ChangeLog.ptr, ChangeLog.tree-ssa, ChangeLog.tuples, FSFChangeLog,
23776         FSFChangeLog.10, FSFChangeLog.11, LANGUAGES, ONEWS, acinclude.m4,
23777         config/alpha/gnu.h, config/alpha/libgcc-alpha-ldbl.ver,
23778         config/alpha/t-osf4, config/alpha/t-vms, config/alpha/va_list.h,
23779         config/alpha/x-vms, config/arc/t-arc,
23780         config/arm/README-interworking, config/arm/arm-c.c,
23781         config/arm/gentune.sh, config/arm/libgcc-bpabi.ver,
23782         config/arm/t-arm, config/arm/t-arm-elf, config/arm/t-arm-softfp,
23783         config/arm/t-bpabi, config/arm/t-linux, config/arm/t-linux-eabi,
23784         config/arm/t-netbsd, config/arm/t-pe, config/arm/t-strongarm-elf,
23785         config/arm/t-symbian, config/arm/t-vxworks, config/arm/t-wince-pe,
23786         config/avr/t-avr, config/bfin/elf.h, config/bfin/libgcc-bfin.ver,
23787         config/bfin/linux.h, config/bfin/t-bfin, config/bfin/t-bfin-elf,
23788         config/bfin/t-bfin-linux, config/bfin/t-bfin-uclinux,
23789         config/bfin/uclinux.h, config/cris/mulsi3.asm, config/cris/t-cris,
23790         config/cris/t-elfmulti, config/crx/t-crx,
23791         config/darwin-ppc-ldouble-patch.def, config/darwin-sections.def,
23792         config/divmod.c, config/fr30/t-fr30, config/frv/libgcc-frv.ver,
23793         config/frv/t-frv, config/frv/t-linux, config/h8300/genmova.sh,
23794         config/h8300/t-h8300, config/i386/athlon.md,
23795         config/i386/darwin-libgcc.10.4.ver,
23796         config/i386/darwin-libgcc.10.5.ver, config/i386/libgcc-glibc.ver,
23797         config/i386/mach.h, config/i386/netbsd.h, config/i386/t-crtpc,
23798         config/i386/t-cygming, config/i386/t-cygwin, config/i386/t-i386,
23799         config/i386/t-linux64, config/i386/t-nwld,
23800         config/i386/t-rtems-i386, config/i386/t-sol2-10,
23801         config/i386/x-mingw32, config/ia64/div.md, config/ia64/elf.h,
23802         config/ia64/ia64.opt, config/ia64/libgcc-glibc.ver,
23803         config/ia64/libgcc-ia64.ver, config/ia64/linux.h,
23804         config/ia64/sysv4.h, config/ia64/t-hpux, config/ia64/t-ia64,
23805         config/iq2000/abi, config/iq2000/lib2extra-funcs.c,
23806         config/iq2000/t-iq2000, config/libgcc-glibc.ver,
23807         config/m32r/libgcc-glibc.ver, config/m32r/t-linux,
23808         config/m32r/t-m32r, config/m68hc11/t-m68hc11,
23809         config/m68k/t-floatlib, config/m68k/t-linux, config/m68k/t-mlibs,
23810         config/m68k/t-uclinux, config/mcore/t-mcore,
23811         config/mcore/t-mcore-pe, config/mips/20kc.md, config/mips/4130.md,
23812         config/mips/5400.md, config/mips/5500.md, config/mips/crti.asm,
23813         config/mips/crtn.asm, config/mips/irix-crti.asm,
23814         config/mips/irix-crtn.asm, config/mips/libgcc-mips16.ver,
23815         config/mips/mips-dsp.md, config/mips/mips-dspr2.md,
23816         config/mips/mips-fixed.md, config/mips/sb1.md,
23817         config/mips/sr71k.md, config/mips/t-elf, config/mips/t-gofast,
23818         config/mips/t-iris6, config/mips/t-isa3264,
23819         config/mips/t-libgcc-mips16, config/mips/t-linux64,
23820         config/mips/t-mips, config/mips/t-r3900, config/mips/t-rtems,
23821         config/mips/t-sb1, config/mips/t-sde, config/mips/t-sdemtk,
23822         config/mips/t-slibgcc-irix, config/mips/t-sr71k, config/mips/t-st,
23823         config/mips/t-vr, config/mips/t-vxworks, config/mmix/t-mmix,
23824         config/mn10300/t-linux, config/mn10300/t-mn10300,
23825         config/pa/pa32-regs.h, config/pa/t-hpux-shlib, config/pa/t-linux,
23826         config/pa/t-linux64, config/pa/t-pa64, config/pdp11/t-pdp11,
23827         config/picochip/libgccExtras/clzsi2.asm,
23828         config/picochip/t-picochip, config/rs6000/darwin-ldouble-format,
23829         config/rs6000/darwin-libgcc.10.4.ver,
23830         config/rs6000/darwin-libgcc.10.5.ver,
23831         config/rs6000/libgcc-ppc-glibc.ver, config/rs6000/ppc-asm.h,
23832         config/rs6000/t-aix43, config/rs6000/t-aix52,
23833         config/rs6000/t-darwin, config/rs6000/t-fprules,
23834         config/rs6000/t-fprules-fpbit, config/rs6000/t-linux64,
23835         config/rs6000/t-lynx, config/rs6000/t-netbsd,
23836         config/rs6000/t-ppccomm, config/rs6000/t-ppcendian,
23837         config/rs6000/t-ppcgas, config/rs6000/t-rs6000,
23838         config/rs6000/t-rtems, config/rs6000/t-spe,
23839         config/rs6000/t-vxworks, config/s390/libgcc-glibc.ver,
23840         config/score/t-score-elf, config/sh/divcost-analysis,
23841         config/sh/libgcc-glibc.ver, config/sh/t-netbsd, config/sh/t-sh,
23842         config/sh/t-sh64, config/sh/t-superh, config/sh/t-symbian,
23843         config/sparc/libgcc-sparc-glibc.ver, config/sparc/sol2-bi.h,
23844         config/sparc/sol2-gas.h, config/sparc/sol2-gld-bi.h,
23845         config/sparc/t-elf, config/sparc/t-linux64, config/sparc/t-sol2,
23846         config/stormy16/stormy-abi, config/stormy16/t-stormy16,
23847         config/t-darwin, config/t-libunwind, config/t-libunwind-elf,
23848         config/t-linux, config/t-lynx, config/t-slibgcc-elf-ver,
23849         config/t-slibgcc-sld, config/t-sol2, config/t-vxworks,
23850         config/udivmod.c, config/udivmodsi4.c, config/v850/t-v850,
23851         config/v850/t-v850e, config/xtensa/t-xtensa, diagnostic.def,
23852         gdbinit.in, glimits.h, gstab.h, gsyms.h, java/ChangeLog,
23853         java/ChangeLog.ptr, java/ChangeLog.tree-ssa, libgcc-std.ver,
23854         limitx.h, version.c, xcoff.h: Add copyright and license notices.
23855         * config/h8300/genmova.sh: Include copyright and license notices
23856         in generated output.
23857         * config/h8300/mova.md: Regenerate.
23858         * doc/install.texi2html: Include word "Copyright" in copyright
23859         notice and use name "Free Software Foundation, Inc.".
23860         * ChangeLog, ChangeLog-2000, ChangeLog-2001, ChangeLog-2002,
23861         ChangeLog-2003, ChangeLog-2004, ChangeLog-2005, ChangeLog-2006,
23862         ChangeLog-2007, ChangeLog-2008: Correct dates.
23863
23864 2009-04-21  Eric Botcazou  <ebotcazou@adacore.com>
23865
23866         * c-common.c (c_common_truthvalue_conversion): Use LOCATION to build
23867         NE_EXPR operations as well.
23868         * c-parser.c (c_parser_condition): Do not set location information on
23869         the condition.
23870         (c_parser_conditional_expression): Likewise.
23871         (c_parser_binary_expression): Set location information on operators.
23872         * c-typeck.c (build_unary_op) <TRUTH_NOT_EXPR>: Reset the location if
23873         TRUTH_NOT_EXPR has been folded.
23874         * fold-const.c (fold_truth_not_expr): Copy location information from
23875         the incoming expression to the outgoing one.
23876         * gimplify.c (shortcut_cond_r): Add locus parameter.  Pass it to
23877         recursive calls on the LHS of the operator but pass that of the
23878         operator to recursive calls on the RHS of the operator.  Set it
23879         on the COND_EXPR.
23880         (shortcut_cond_expr): Set the locus of the operator on the second
23881         COND_EXPR and that of the expression on the first in degenerate cases.
23882         Pass the locus of the expression to calls to shortcut_cond_r.
23883         Set the locus of the 'then' block on the associated jump, if any.
23884         (gimplify_boolean_expr): Add locus parameter.  Set it on the COND_EXPR.
23885         (gimplify_expr) <TRUTH_ANDIF_EXPR>: Pass the locus of the outer
23886         expression to call to gimplify_boolean_expr.
23887
23888 2009-04-21  Kai Tietz  <kai.tietz@onevision.com>
23889
23890         * config.gcc: Add additional configuration for
23891         i686-w64-mingw* and x86_64-w64-mingw* triplet.
23892         * config/i386/mingw-w64.h: New mingw-w64 specific header.
23893         (CPP_SPEC): Redefine for allowing -municode option.
23894         (STARTFILE_SPEC): Likewise.
23895         * config/i386/t-mingw-w64: New.
23896         * config/i386/mingw-w64.opt: New.
23897         (municode): Add new target option.
23898         * doc/invoke.texi (municode): Add documentation for new option.
23899
23900 2009-04-21  Ian Lance Taylor  <iant@google.com>
23901
23902         * config/rs6000/rs6000-c.c (altivec_resolve_overloaded_builtin):
23903         Correct test for number of arguments.
23904         * config/spu/spu-c.c (spu_resolve_overloaded_builtin): Likewise.
23905
23906 2009-04-21  Andreas Schwab  <schwab@linux-m68k.org>
23907
23908         * config/m68k/linux.h (FINALIZE_TRAMPOLINE): Use enum for second
23909         argument of emit_library_call.
23910
23911 2009-04-21  Richard Guenther  <rguenther@suse.de>
23912
23913         PR middle-end/39829
23914         * gimple.c (walk_stmt_load_store_addr_ops): Catch addresses
23915         inside VIEW_CONVERT_EXPRs.
23916
23917 2009-04-21  Martin Jambor  <mjambor@suse.cz>
23918
23919         * tree-switch-conversion.c (build_constructors): Split a long line.
23920         (constructor_contains_same_values_p): New function.
23921         (build_one_array): Create assigns of constants if possible, do not
23922         call mark_sym_for_renaming, call update_stmt.
23923         (build_arrays): Call make_ssa_name (create_tmp_var ()) instead of
23924         make_rename_temp.  Do not call mark_symbols_for_renaming, call
23925         update_stmt.
23926         (gen_def_assigns): Do not call mark_symbols_for_renaming or
23927         find_new_referenced_vars, call update_stmt.
23928         (gen_inbound_check): Use create_tmp_var and create ssa names manually
23929         instead of calling make_rename_temp.  Do not call
23930         find_new_referenced_vars or mark_symbols_for_renaming, call
23931         update_stmt.
23932
23933 2009-04-21  Richard Guenther  <rguenther@suse.de>
23934
23935         PR tree-optimization/39827
23936         * tree-ssa-phiprop.c (propagate_with_phi): Check SSA_NAME is in range.
23937         (tree_ssa_phiprop): Pass the correct array size.
23938
23939 2009-04-21  Uros Bizjak  <ubizjak@gmail.com>
23940
23941         * config/alpha/alpha.md (tune): Add cast to enum attr_tune.
23942
23943 2009-04-21  Manuel López-Ibáñez  <manu@gcc.gnu.org>
23944
23945         PR 16202
23946         * c-typeck.c (lvalue_p): Move declaration ...
23947         * c-common.h (lvalue_p): ... to here.
23948         * c-common.c (candidate_equal_p): New.
23949         (add_tlist): Use it.
23950         (merge_tlist): Use it.
23951         (warn_for_collisions_1): Likewise.
23952         (warning_candidate_p): Accept more candidates.
23953         (verify_tree): A warning candidate can be an expression. Use
23954         candidate_equal_p.
23955
23956 2009-04-21  Ben Elliston  <bje@au.ibm.com>
23957
23958         PR target/5267
23959         * doc/invoke.texi (RS/6000 and PowerPC Options): Add documentation
23960         for -mcall-eabi, -mcall-aixdesc, -mcall-freebsd and -mcall-openbsd
23961         options.  Remove -mcall-solaris documentation.
23962
23963 2009-04-21  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
23964
23965         PR c++/13358
23966         * doc/invoke.texi (-Wlong-long): Update description.
23967         * c-lex (interpret_integer): Only warn if there was no previous
23968         overflow and -Wlong-long is enabled.
23969         * c-decl.c (declspecs_add_type): Drop redundant flags.
23970         * c.opt (Wlong-long): Init to -1.
23971         * c-opts.c (sanitize_cpp_opts): Synchronize cpp's warn_long_long
23972         and front-end warn_long_long. Wlong-long only depends on other
23973         flags if it is uninitialized.
23974         * c-parser.c (disable_extension_diagnostics): warn_long_long is
23975         the same for CPP and FE.
23976         (restore_extension_diagnostics): Likewise.
23977
23978 2009-04-20  Ian Lance Taylor  <iant@google.com>
23979
23980         Fix enum conversions which are invalid in C++:
23981         * auto-inc-dec.c (attempt_change): Change 0 to SET in function call.
23982         * calls.c (store_one_arg): Change 0 to EXPAND_NORMAL in function call.
23983         * cse.c (hash_rtx_cb): Change 0 to VOIDmode in function call.
23984         * dbgcnt.c (dbg_cnt_set_limit_by_name): Add cast to enum type.
23985         * dbxout.c (dbxout_symbol): Change 0 to VOIDmode in function call.
23986         (dbxout_parms): Likewise.
23987         * df-core.c (df_set_flags): Change changeable_flags parameter to int.
23988         (df_clear_flags): Likewise.
23989         * df-problems.c (df_rd_bb_local_compute_process_def): Change
23990         top_flag parameter to int.
23991         (df_chain_create_bb_process_use): Likewise.
23992         (df_chain_add_problem): Change chain_flags parameter to unsigned int.
23993         Remove cast.
23994         * df-scan.c (df_ref_create): Change ref_flags parameter to int.
23995         (df_ref_create_structure, df_def_record_1): Likewise.
23996         (df_defs_record, df_uses_record, df_get_call_refs): Likewise.
23997         (df_notes_rescan): Change 0 to VOIDmode in function call.
23998         (df_get_call_refs, df_insn_refs_collect): Likewise.
23999         (df_bb_regs_collect): Likewise.
24000         (df_entry_block_defs_collect): Likewise.
24001         (df_exit_block_uses_collect): Likewise.
24002         * df.h: Update declarations.
24003         * double-int.c (double_int_divmod): Add cast to enum type.
24004         * dse.c (replace_inc_dec): Reverse parameters to gen_int_mode.
24005         * dwarf2out.c (new_reg_loc_descr): Add casts to enum type.
24006         (based_loc_descr): Likewise.
24007         (loc_descriptor_from_tree_1): Change first_op and second_op to
24008         enum dwarf_location_atom.  Add cast to enum type.
24009         * expmed.c (init_expmed): Change 0 to SET in function call.
24010         * expr.c (init_expr_target): Change 0 to VOIDmode in function call.
24011         (expand_expr_real_1): Change 0 to EXPAND_NORMAL in function call.
24012         (do_store_flag): Likewise.
24013         * fixed-value.h (struct fixed_value): Change mode to enum
24014         machine_mode.
24015         * function.c (assign_parms): Change 0 to VOIDmode in function call.
24016         * genautomata.c (insert_automaton_decl): Change 1 to INSERT in
24017         function call.
24018         (insert_insn_decl, insert_decl, insert_state): Likewise.
24019         (automata_list_finish): Likewise.
24020         * genrecog.c (process_define_predicate): Add cast to enum type.
24021         * gensupport.c (init_predicate_table): Add cast to enum type.
24022         * gimple.c (gimple_build_return): Change 0 to ERROR_MARK in
24023         function call.
24024         (gimple_build_call_1, gimple_build_label): Likewise.
24025         (gimple_build_goto, gimple_build_asm_1): Likewise.
24026         (gimple_build_switch_1, gimple_build_cdt): Likewise.
24027         * gimple.h (GIMPLE_CHECK): Change 0 to ERROR_MARK in function call.
24028         (enum fallback): Rename from enum fallback_t.
24029         (fallback_t): Typedef as int.
24030         * gimple-low.c (lower_builtin_setjmp): Change TSI_SAME_STMT to
24031         GSI_SAME_STMT in function call.
24032         * ira.c (setup_class_subset_and_memory_move_costs): Add casts to
24033         enum type.
24034         (setup_reg_class_relations): Likewise.
24035         (setup_reg_class_nregs): Change cl to int.  Add casts to enum type.
24036         (setup_prohibited_class_mode_regs): Add cast to enum type.
24037         (setup_prohibited_mode_move_regs): Likewise.
24038         * ira-costs.c (record_reg_classes): Change rclass to enum reg_class.
24039         (record_address_regs): Change i to enum reg_class.
24040         * lists.c (alloc_EXPR_LIST): Add cast to enum type.
24041         * machmode.h (GET_MODE_CLASS): Cast value to enum mode_class.
24042         (GET_MODE_WIDER_MODE): Cast value to enum machine_mode.
24043         (GET_MODE_2XWIDER_MODE): Likewise.
24044         (GET_CLASS_NARROWEST_MODE): Likewise.
24045         * omp-low.c (expand_omp_for): Add cast to enum type.
24046         * optabs.c (debug_optab_libfuncs): Add casts to enum type.
24047         * opts.c (enable_warning_as_error): Change kind to diagostic_t.
24048         * postreload.c (reload_cse_simplify_operands): Change rclass local
24049         to enum reg_class.
24050         * predict.c (combine_predictions_for_insn): Change best_predictor
24051         and predictor to enum br_predictor.
24052         (combine_predictions_for_bb): Likewise.
24053         (build_predict_expr): Change assignment to PREDICT_EXPR_OUTCOME to
24054         use SET_PREDICT_EXPR_OUTCOME.
24055         * real.c (real_arithmetic): Change icode to code in function call.
24056         * reginfo.c (init_move_cost): Add casts to enum type.
24057         (init_reg_sets_1, init_fake_stack_mems): Likewise.
24058         * regmove.c (regclass_compatible_p): Change class0 and class1 to
24059         enum reg_class.
24060         * reload.c (find_valid_class): Add casts to enum type.
24061         (push_reload): Change 0 to NO_REGS in function call.
24062         (find_reloads): Change this_alternative to array of enum
24063         reg_class.  Remove some now-unnecessary casts.
24064         (make_memloc): Change 0 to VOIDmode in function call.
24065         * reload1.c (reload): Change 0 to VOIDmode in function call.
24066         (eliminate_regs_1, elimination_effects): Likewise.
24067         (eliminate_regs_in_insn): Likewise.
24068         (emit_input_reload_insns): Add cast to enum type.
24069         (delete_output_reload): Change 0 to VOIDmode in function call.
24070         * reorg.c (insn_sets_resource_p): Convert include_delayed_effects
24071         to enum type in function call.
24072         * tree.h (PREDICT_EXPR_OUTCOME): Add cast to enum type.
24073         (SET_PREDICT_EXPR_OUTCOME): Define.
24074         * tree-dump.c (get_dump_file_info): Change phase parameter to int.
24075         (get_dump_file_name, dump_begin, dump_enabled_p): Likewise.
24076         (dump_initialized_p, dump_flag_name, dump_end): Likewise.
24077         (dump_function): Likewise.
24078         * tree-dump.h: Update declarations.
24079         * tree-pass.h: Update declarations.
24080         * varasm.c (assemble_integer): Change mclass to enum mode_class.
24081         * config/arm/arm.c (thumb_legitimize_reload_address): Add cast to
24082         enum type.
24083         (arm_rtx_costs_1): Correct parenthesization.
24084         (arm_rtx_costs): Add casts to enum type.
24085         (adjacent_mem_locations): Reverse arguments to const_ok_for_op.
24086         (vfp_emit_fstmd): Use add_rg_note.
24087         (emit_multi_reg_push, emit_sfm): Likewise.
24088         (thumb_set_frame_pointer): Likewise.
24089         (arm_expand_prologue): Likewise.
24090         (arm_regno_class): Change return type to enum reg_class.
24091         (thumb1_expand_prologue): Use add_reg_note.
24092         * config/arm/arm-protos.h (arm_regno_class): Update declaration.
24093         * config/arm/arm.h (INITIALIZE_TRAMPOLINE): Change 0 to LCT_NORMAL
24094         in function call.
24095         * config/arm/gentune.sh: Add cast to enum type.
24096         * config/arm/arm-tune.md: Rebuild.
24097         * config/i386/i386.c (ix86_expand_prologue): Use add_reg_note.
24098         (ix86_split_fp_branch, predict_jump): Likewise.
24099         (ix86_expand_multi_arg_builtin): Change sub_code from enum
24100         insn_code to enum rtx_code.
24101         (ix86_builtin_vectorized_function): Add cast to enum type.
24102         * config/i386/i386.md (truncdfsf2): Change slot to enum
24103         ix86_stack_slot.
24104         (truncxf<mode>2, isinf<mode>2): Likewise.
24105         * config/i386/i386-c.c (ix86_pragma_target_parse): Add cast to
24106         enum type.
24107         * config/ia64/ia64.c (ia64_split_tmode_move): Use add_reg_note.
24108         (spill_restore_mem, do_spill, ia64_expand_prologue): Likewise.
24109         (insert_bundle_state): Change 1 to INSERT in function call.
24110         (ia64_add_bundle_selector_before): Likewise.
24111         * config/ia64/ia64.md (cpu attr): Add cast to enum type.
24112         (save_stack_nonlocal): Change 0 to LCT_NORMAL in function call.
24113         (restore_stack_nonlocal): Likewise.
24114         * config/mips/mips.h (MIPS_ICACHE_SYNC): Change 0 to LCT_NORMAL in
24115         function call.
24116         * config/mips/mips.c (mips_binary_cost): Change 0 to SET in
24117         function call.
24118         (mips_rtx_costs): Likewise.
24119         (mips_override_options): Add casts to enum type.
24120         * config/mips/sdemtk.h (MIPS_ICACHE_SYNC): Change 0 to LCT_NORMAL
24121         in function call.
24122         * config/pa/pa.c (legitimize_pic_address): Use add_reg_note.
24123         (store_reg, set_reg_plus_d): Likewise.
24124         (hppa_expand_prologue, hppa_profile_hook): Likewise.
24125         * config/rs6000/rs6000.c (rs6000_init_hard_regno_mode_ok): Add
24126         cast to enum type.
24127         (altivec_expand_vec_set_builtin): Change 0 to EXPAND_NORMAL in
24128         function call.
24129         (emit_unlikely_jump): Use add_reg_note.
24130         (rs6000_emit_allocate_stack): Likewise.
24131         (rs6000_frame_related, rs6000_emit_prologue): Likewise.
24132         (output_toc): Change 1 to INSERT in function call.
24133         (output_profile_hook): Change 0 to LCT_NORMAL in function call.
24134         (rs6000_initialize_trampoline): Likewise.
24135         (rs6000_init_dwarf_reg_sizes_extra): Change 0 to EXPAND_NORMAL in
24136         function call.
24137         * config/s390/s390.c (s390_rtx_costs): Add cast to enum type.
24138         (s390_expand_movmem): Change 0 to OPTAB_DIRECT in function call.
24139         (s390_expand_setmem, s390_expand_cmpmem): Likewise.
24140         (save_gprs): Use add_reg_note.
24141         (s390_emit_prologue): Likewise.
24142         (s390_expand_builtin): Change 0 to EXPAND_NORMAL in function call.
24143         * config/sparc/sparc.c (sparc_expand_prologue): Use add_reg_note.
24144         (sparc_fold_builtin): Add cast to enum type.
24145         * config/spu/spu.c (spu_emit_branch_or_set): Change ior_code to
24146         enum insn_code.
24147         (spu_expand_prologue): Use add_reg_note.
24148         (expand_builtin_args): Change 0 to EXPAND_NORMAL in function call.
24149
24150 2009-04-20  Ian Lance Taylor  <iant@google.com>
24151
24152         * c-parser.c (c_parser_attributes): Change VEC back to tree list.
24153         (c_parser_postfix_expression_after_primary): Get VEC for list of
24154         arguments.  Get original types of arguments.  Call
24155         build_function_call_vec.
24156         (cached_expr_list_1, cached_expr_list_2): New static variables.
24157         (c_parser_expr_list): Change return type to VEC *.  Add
24158         p_orig_types parameter.  Change all callers.
24159         (c_parser_release_expr): New static function.
24160         (c_parser_vec_to_tree_list): New static function.
24161         * c-typeck.c (build_function_call): Rewrite to build a VEC and
24162         call build_function_call_vec.
24163         (build_function_call_vec): New function, based on old
24164         build_function_call.
24165         (convert_arguments): Remove nargs and argarray parameters.  Change
24166         values to a VEC.  Add origtypes parameter.
24167         (build_modify_expr): Add rhs_origtype parameter.  Change all callers.
24168         (convert_for_assignment): Add origtype parameter.  Change all
24169         callers.  If warn_cxx_compat, check for conversion to an enum
24170         type when calling a function.
24171         (store_init_value): Add origtype parameter.  Change all callers.
24172         (digest_init): Likewise.
24173         (struct init_node): Add origtype field.
24174         (add_pending_init): Add origtype parameter.  Change all callers.
24175         (output_init_element): Likewise.
24176         (output_pending_init_elements): Pass origtype from init_node to
24177         output_init_element.
24178         (process_init_element): Pass origtype from c_expr to
24179         output_init_element.
24180         (c_finish_return): Add origtype parameter.  Change all callers.
24181         * c-common.c (sync_resolve_size): Change params to VEC *.  Change
24182         caller.
24183         (sync_resolve_params): Likewise.
24184         (sync_resolve_return): Change params to first_param.  Change caller.
24185         (resolve_overloaded_builtins): Change params to VEC *.  Change
24186         callers.  Save first parameter around call to build_function_call_vec.
24187         * c-decl.c (finish_decl): Add origtype parameter.  Change all
24188         callers.  Call build_function_call_vec rather than
24189         build_function_call for cleanup.
24190         * c-tree.h: Update declarations.
24191         * c-common.h: Update declarations.
24192         * stub-objc.c (objc_rewrite_function_call): Change parameter from
24193         params to first_param.
24194         * target.h (struct gcc_target): Change resolve_overloaded_builtin
24195         params parameter from tree to void *.
24196         * config/rs6000/rs6000-c.c (altivec_resolve_overloaded_builtin):
24197         Change arglist parameter to have type void *, and to be a pointer
24198         to a VEC.
24199         * config/rs6000/rs6000-protos.h
24200         (altivec_resolve_overloaded_builtin): Update declaration.
24201         * config/spu/spu-c.c (spu_resolved_overloaded_builtin): Change
24202         fnargs parameter to have type void *, and to be a pointer to a
24203         VEC.  Call build_function_call_vec instead of
24204         build_function_call.
24205         * config/spu/spu-protos.h (spu_expand_builtin): Update declaration.
24206
24207 2009-04-20  Joey Ye  <joey.ye@intel.com>
24208             Xuepeng Guo  <xuepeng.guo@intel.com>
24209             H.J. Lu  <hongjiu.lu@intel.com>
24210
24211         * config/i386/atom.md: Add bypasses with ix86_dep_by_shift_count.
24212
24213         * config/i386/i386.c (LEA_SEARCH_THRESHOLD): New macro.
24214         (IX86_LEA_PRIORITY): Likewise.
24215         (distance_non_agu_define): New function.
24216         (distance_agu_use): Likewise.
24217         (ix86_lea_for_add_ok): Likewise.
24218         (ix86_dep_by_shift_count): Likewise.
24219
24220         * config/i386/i386.md: Call ix86_lea_for_add_ok to decide we
24221         should split for LEA.
24222
24223         * config/i386/i386-protos.h (ix86_lea_for_add_ok): Declare new
24224         function.
24225         (ix86_dep_by_shift_count): Likewise.
24226
24227 2009-04-20  Richard Guenther  <rguenther@suse.de>
24228
24229         * expr.c (handled_component_p): Move ...
24230         * tree.h (handled_component_p): ... here.
24231         * tree.def: Re-order BIT_FIELD_REF, COMPONENT_REF,
24232         ARRAY_REF, ARRAY_RANGE_REF, VIEW_CONVERT_EXPR, IMAGPART_EXPR
24233         and REALPART_EXPR to be in one group.
24234
24235 2009-04-20  Richard Guenther  <rguenther@suse.de>
24236
24237         * basic-block.h (get_all_dominated_blocks): Declare.
24238         * dominance.c (get_all_dominated_blocks): New function.
24239         * tree-cfg.c (get_all_dominated_blocks): Remove.
24240         (remove_edge_and_dominated_blocks): Adjust.
24241         * tree-ssa-phiprop.c (tree_ssa_phiprop_1): Fold in ...
24242         (tree_ssa_phiprop): ... here.  Use get_all_dominated_blocks
24243         instead of recursing.
24244
24245 2009-04-20  Doug Kwan  <dougkwan@google.com>
24246
24247         * cgraph.h (cgraph_node_ptr): New type for vector functions.
24248         (struct cgraph_node_set_def): New type.
24249         (cgraph_node_set) New type. Also declare vector functions.
24250         (struct cgraph_node_set_element_def): New type.
24251         (cgraph_node_set_element): Ditto.
24252         (cgraph_node_set_iterator): New iterator type.
24253         (cgraph_node_set_new, cgraph_node_set_find, cgraph_node_set_add,
24254         cgraph_node_set_remove, dump_cgraph_node_set,
24255         debug_cgraph_node_set): New prototypes.
24256         (csi_end_p, csi_next, csi_node, csi_start, cgraph_node_in_set_p,
24257         cgraph_node_set_size): New inlines.
24258         * tree-pass.h (struct cgraph_node_set_def): New decl to avoid
24259         including cgraph.h.
24260         (struct ipa_opt_pass): Add struct cgraph_node_set_def
24261         argument to function 'write_summary'.
24262         * ipa.c: Include ggc.h.
24263         (hash_cgraph_node_set_element,
24264         eq_cgraph_node_set_element, cgraph_node_set_new,
24265         cgraph_node_set_add, cgraph_node_set_remove,
24266         cgraph_node_set_find, dump_cgraph_node_set,
24267         debug_cgraph_node_set): New functions.
24268         * Makefile.in (ipa.o): Add dependency on GGC_H.
24269
24270 2009-04-20  Ira Rosen  <irar@il.ibm.com>
24271
24272         PR tree-optimization/39675
24273         * tree-vect-loop.c (vect_transform_loop): Remove currently redundant
24274         check of the return code of vect_schedule_slp. Check that
24275         stmt_vec_info still exists for the statement, before checking its
24276         vectorization type.
24277
24278 2009-04-20  Michael Matz  <matz@suse.de>
24279
24280         * Makefile.in (generated_files): Take out $(simple_generated_c).
24281
24282 2009-04-19  Dave Korn  <dave.korn.cygwin@gmail.com>
24283
24284         * config/i386/cygwin-stdint.h (INTPTR_TYPE):  Remove "long".
24285         (UINTPTR_TYPE):  Likewise.
24286
24287 2009-04-19  Joseph Myers  <joseph@codesourcery.com>
24288
24289         PR c/37481
24290         * c-typeck.c (digest_init): Check for initializing an array with a
24291         string literal.
24292
24293 2009-04-19  Joseph Myers  <joseph@codesourcery.com>
24294
24295         PR c/19771
24296         * c-semantics.c (pop_stmt_list): Propagate
24297         STATEMENT_LIST_HAS_LABEL to parent statement list.
24298
24299 2009-04-19  Adam Nemet  <anemet@caviumnetworks.com>
24300
24301         * config/mips/mips.h (mips_tune_attr): New macro.
24302         * config/mips/mips.md (cpu): Use it.
24303
24304 2009-04-19  Joseph Myers  <joseph@codesourcery.com>
24305
24306         PR c/38243
24307         * c-decl.c (shadow_tag_warned): Diagnose use of restrict when
24308         declaring a tag.
24309
24310 2009-04-19  Diego Novillo  <dnovillo@google.com>
24311
24312         * toplev.c (compile_file): Move call to coverage_finish ...
24313         * cgraphunit.c (ipa_passes): ... here.
24314         Call cgraph_process_new_functions.
24315         * ipa-utils.c (get_base_var): Handle CONSTRUCTOR.
24316         * Makefile.in (cgraphunit.o): Add dependency on COVERAGE_H.
24317
24318 2009-04-19  Jan Hubicka  <jh@suse.cz>
24319
24320         * cgraph.c (cgraph_create_edge, cgraph_set_call_stmt): Set proper
24321         cfun.
24322         (dump_cgraph_node): Dump can throw external flag.
24323         * ipa-pure-const.c (propagate): Fix propagation of nothrow flags.
24324
24325 2009-04-19  Manuel López-Ibáñez  <manu@gcc.gnu.org>
24326
24327         PR c/32061
24328         PR c++/36954
24329         * doc/invoke.texi: Add -Wlogical-op to -Wextra.
24330         * common.opt (Wlogical-op): Move from here...
24331         * c.opt (Wlogical-op): ... to here.
24332         * c-typeck.c (parser_build_binary_op): Update call to
24333         warn_logical_operator.
24334         * c-opts.c (c_common_post_options): Enable warn_logical_op with
24335         extra_warnings.
24336         * c-common.c (warn_logical_op): Update.
24337         * c-common.h (warn_logical_op): Update declaration.
24338
24339 2009-04-19  Eric Botcazou  <ebotcazou@adacore.com>
24340
24341         * tree.c (protected_set_expr_location): Fix formatting.
24342
24343 2009-04-18  Joseph Myers  <joseph@codesourcery.com>
24344
24345         PR c/27676
24346         * c-typeck.c (readonly_warning): new.
24347         (build_unary_op, build_modify_expr): Use readonly_warning for
24348         storing into something readonly but not const-qualified.
24349
24350 2009-04-18  Joseph Myers  <joseph@codesourcery.com>
24351
24352         PR c/22367
24353         * c-typeck.c (build_unary_op): Check for taking address of
24354         expression of type void.
24355
24356 2009-04-18  Joseph Myers  <joseph@codesourcery.com>
24357
24358         PR c/35210
24359         * c-typeck.c (build_function_call): Check for calling a function
24360         with qualified void return types.  Call require_complete_type when
24361         generating a trap.
24362
24363 2009-04-18  Jan Hubicka  <jh@suse.cz>
24364
24365         * cgraph.c (cgraph_make_edge, dump_cgraph_node, cgraph_set_call_stmt):
24366         Set nothrow flag.
24367         * cgraph.h (struct function): Reduce loop_nest to 30 bits; add
24368         can_throw_external flag.
24369         * ipa-reference.c (ipa_utils_reduced_inorder): Update call.
24370         * ipa-pure-const.c (ignore_edge): New function.
24371         (propagate): Compute order for NOTHROW computation; set NOTHROWs
24372         only over can_throw_external edges.
24373         (local_pure_const): Add nothrow flag.
24374         * ipa-utils.c (searchc): Add ignore_edge callback.
24375         (ipa_utils_reduced_inorder): Add ignore_edge callback.
24376         * ipa-utils.h (ipa_utils_reduced_inorder): Update prototype.
24377         (set_nothrow_function_flags): Update cgraph.
24378         * tree-cfg.c (verify_stmt): Relax nothrow checking when in IPA mode.
24379
24380 2009-04-18  Richard Guenther  <rguenther@suse.de>
24381
24382         PR middle-end/39804
24383         * tree-ssa-ccp.c (fold_stmt_1): New function factored from ...
24384         (fold_stmt): ... this and ...
24385         (fold_stmt_inplace): ... this.
24386         (fold_stmt_1): Fold references in calls and asms.
24387         * tree-cfg.c (remove_useless_stmts_cond): Use fold_stmt.
24388
24389 2009-04-18  Kazu Hirata  <kazu@codesourcery.com>
24390
24391         * tree-vrp.c (ssa_name_nonzero_p): Remove.
24392         * tree.h: Remove the prototype for ssa_name_nonzero_p.
24393
24394 2009-04-18  Kazu Hirata  <kazu@codesourcery.com>
24395
24396         * tree.c (function_args_count): Remove.
24397         * tree.h: Remove the prototype for function_args_count.
24398
24399 2009-04-18  Kazu Hirata  <kazu@codesourcery.com>
24400
24401         * tree-iterator.c (expr_only): Remove.
24402         * tree.h: Remove the prototype for expr_only.
24403
24404 2009-04-18  Kazu Hirata  <kazu@codesourcery.com>
24405
24406         * reginfo.c (cannot_change_mode_set_regs): Remove.
24407         * rtl.h: Remove the prototype for cannot_change_mode_set_regs.
24408
24409 2009-04-08  Anatoly Sokolov  <aesok@post.ru>
24410
24411         * config/avr/avr.md (*rotlsi3_8, *rotlsi3_16, *rotlsi3_24 ): Check
24412         whether operands 0 and 1 overlaps.
24413
24414 2009-04-18  Manuel López-Ibáñez  <manu@gcc.gnu.org>
24415
24416         PR middle-end/36902
24417         * tree-vrp.c (check_array_ref): Pass a location_t instead of a
24418         pointer. Use warning_at instead of warning.
24419         (search_for_addr_array): Likewise.
24420         (check_array_bounds): Likewise.
24421         (check_all_array_refs): Check that the incoming edge is not in the
24422         list of edges to be removed.
24423         (check_all_array_refs): Avoid the temporal pointer.
24424         (vrp_visit_cond_stmt): Fix typo.
24425         (simplify_switch_using_ranges): Handle the case where the switch
24426         index is an integer constant.
24427
24428 2009-04-18  Adam Nemet  <anemet@caviumnetworks.com>
24429
24430         * config/mips/mips.c (mips_final_postscan_insn): Make it static.
24431
24432 2009-04-18  Kazu Hirata  <kazu@codesourcery.com>
24433
24434         * doc/extend.texi, doc/invoke.texi: Fix typos.
24435
24436 2009-04-17  Cary Coutant  <ccoutant@google.com>
24437
24438         * tree-flow-inline.h (get_lineno): Fix inverted test.
24439
24440 2009-04-17  Diego Novillo  <dnovillo@google.com>
24441
24442         * tree-ssa-pre.c (create_expression_by_pieces): Remove
24443         assertion for AVAIL_OUT.
24444
24445 2009-04-17  Mike Frysinger  <vapier@gentoo.org>
24446
24447         PR target/38627
24448         * config/sh/lib1funcs.asm [__ELF__ && __linux__]: Add .note.GNU-stack.
24449         * config/sh/linux-atomic.asm: Likewise.
24450
24451 2009-04-17  Diego Novillo  <dnovillo@google.com>
24452
24453         * except.c (debug_eh_tree): New.
24454         (struct eh_region, struct eh_status): Move ...
24455         * except.h: ... here.
24456         (add_type_for_runtime): Declare extern.
24457         (lookup_type_for_runtime): Likewise.
24458         (debug_eh_tree): Declare.
24459         * Makefile.in (GTFILES): List except.h before except.c
24460
24461 2009-04-17  Diego Novillo  <dnovillo@google.com>
24462
24463         * omp-low.c (create_omp_child_function): Set DECL_CONTEXT for DECL.
24464         * cgraphunit.c (cgraph_build_static_cdtor): Likewise.
24465         * tree-dfa.c (find_referenced_vars_in): Factor out of ...
24466         (find_vars_r): ... here.
24467         * tree-flow.h (find_referenced_vars_in): Declare.
24468         * tree-ssa-pre.c (create_expression_by_pieces): Assert
24469         that AVAIL_OUT exists for BLOCK.
24470         * Makefile.in (CGRAPH_H): Add dependency on cif-code.def
24471         (tree-loop-distribution.o): Fix dependency on TREE_VECTORIZER_H.
24472         (tree-parloops.o): Likewise.
24473
24474 2009-04-17  Simon Baldwin  <simonb@google.com>
24475
24476         * toplev.c (default_tree_printer): Add handling for %E format.
24477
24478 2009-04-17  Diego Novillo  <dnovillo@google.com>
24479
24480         * tree-pretty-print.c (dump_generic_node): Add break after
24481         TREE_BINFO handler.  Handle COMPLEX_TYPE, REAL_TYPE and
24482         FIXED_POINT_TYPE.  Handle NULL TREE_TYPEs.  Handle METHOD_TYPE and
24483         FUNCTION_TYPE together.  Call print_struct_decl when printing
24484         structures and TDF_SLIM is not given.
24485         (print_struct_decl): Fix logic for detecting recursion.
24486
24487 2009-04-17  Rafael Avila de Espindola  <espindola@google.com>
24488
24489         PR 31567
24490         * gcc.c (create_at_file): New.
24491         (compile_input_file_p): New.
24492         (do_spec_1): Use @args files for %i. Use create_at_file for %o.
24493         * main.c (main): Update call to toplev_main.
24494         * toplev.c (toplev_main): Change signature. Call expandargv.
24495         * toplev.h (toplev_main): Change signature.
24496
24497 2009-04-17  Eric Botcazou  <ebotcazou@adacore.com>
24498
24499         * dwarf2out.c (field_byte_offset): Use the type size as the field size
24500         if the latter is not constant.
24501
24502 2009-04-17  David Edelsohn  <edelsohn@gnu.org>
24503
24504         * dbxout.c (xcoff_debug_hooks): Add set_name_debug_nothing.
24505
24506 2009-04-17  Eric Botcazou  <ebotcazou@adacore.com>
24507
24508         * dbxout.c (dbxout_block): Reinstate test on TREE_USED.
24509         * tree-ssa-live.c (remove_unused_scope_block_p): Update TREE_USED bit.
24510
24511 2009-04-17  Richard Guenther  <rguenther@suse.de>
24512
24513         * tree-ssa-structalias.c (get_constraint_for_component_ref):
24514         Handle component references view-converting an invariant address.
24515
24516 2009-04-17  Adam Nemet  <anemet@caviumnetworks.com>
24517
24518         * doc/tm.texi (TARGET_DEFAULT_TARGET_FLAGS,
24519         TARGET_MIN_ANCHOR_OFFSET, TARGET_MAX_ANCHOR_OFFSET,
24520         TARGET_HAVE_SRODATA_SECTION, TARGET_HAVE_TLS,
24521         TARGET_UNWIND_TABLES_DEFAULT, TARGET_TERMINATE_DW2_EH_FRAME_INFO):
24522         Use @deftypevr rather than @deftypevar.
24523
24524 2009-04-17  Richard Guenther  <rguenther@suse.de>
24525
24526         * tree-ssa-forwprop.c (get_prop_dest_stmt): Clean up tuplification.
24527         (get_prop_source_stmt): Likewise.
24528         (can_propagate_from): Likewise.
24529
24530 2009-04-17  Andrew Stubbs  <ams@codesourcery.com>
24531
24532         * configure.ac: Add new AC_SUBST for TM_ENDIAN_CONFIG,
24533         TM_MULTILIB_CONFIG and TM_MULTILIB_EXCEPTIONS_CONFIG.
24534         (--with-multilib-list): Add default value.
24535         * configure: Regenerate.
24536         * Makefile.in (TM_ENDIAN_CONFIG): Define.
24537         (TM_MULTILIB_CONFIG, TM_MULTILIB_EXCEPTIONS_CONFIG): Define.
24538         * config.gcc (sh-*-*): Switch to using TM_ENDIAN_CONFIG,
24539         TM_MULTILIB_CONFIG, and TM_MULTILIB_EXCEPTIONS_CONFIG.
24540         Don't add default cpu to multilib list unnecessarily, but do enable
24541         the relevant compiler option..
24542         Add support for --with-multilib-list=<blank> and
24543         --with-multilib-list=!<somelib> to supress unwanted multilibs.
24544         * config/sh/t-sh (DEFAULT_ENDIAN, OTHER_ENDIAN): New variables.
24545         (MULTILIB_ENDIAN, MULTILIB_CPUS): Delete variables.
24546         (MULTILIB_OPTIONS): Redefine using OTHER_ENDIAN and
24547         TM_MULTILIB_CONFIG.
24548         (MULTILIB_EXCEPTIONS): Add TM_MULTILIB_EXCEPTIONS_CONFIG.
24549         (MULTILIB_OSDIRNAMES): New variable.
24550         * config/sh/t-1e: Delete file.
24551         * config/sh/t-mlib-sh1: Delete file.
24552         * config/sh/t-mlib-sh2: Delete file.
24553         * config/sh/t-mlib-sh2a: Delete file.
24554         * config/sh/t-mlib-sh2a-nofpu: Delete file.
24555         * config/sh/t-mlib-sh2a-single: Delete file.
24556         * config/sh/t-mlib-sh2a-single-only: Delete file.
24557         * config/sh/t-mlib-sh2e: Delete file.
24558         * config/sh/t-mlib-sh3e: Delete file.
24559         * config/sh/t-mlib-sh4: Delete file.
24560         * config/sh/t-mlib-sh4-nofpu: Delete file.
24561         * config/sh/t-mlib-sh4-single: Delete file.
24562         * config/sh/t-mlib-sh4-single-only: Delete file.
24563         * config/sh/t-mlib-sh4a: Delete file.
24564         * config/sh/t-mlib-sh4a-nofpu: Delete file.
24565         * config/sh/t-mlib-sh4a-single: Delete file.
24566         * config/sh/t-mlib-sh4a-single-only: Delete file.
24567         * config/sh/t-mlib-sh4al: Delete file.
24568         * config/sh/t-mlib-sh5-32media: Delete file.
24569         * config/sh/t-mlib-sh5-32media-nofpu: Delete file.
24570         * config/sh/t-mlib-sh5-64media: Delete file.
24571         * config/sh/t-mlib-sh5-64media-nofpu: Delete file.
24572         * config/sh/t-mlib-sh5-compact: Delete file.
24573         * config/sh/t-mlib-sh5-compact-nofpu: Delete file.
24574         * config/sh/t-linux: Don't override MULTILIB_EXCEPTIONS.
24575         * doc/install.texi (Options specification): Add
24576         --with-multilib-list and --with-endian.
24577
24578 2009-04-17  Rafael Avila de Espindola  <espindola@google.com>
24579
24580         * Makefile.in (REVISION_s): Always include quotes. Change ifdef to use
24581         REVISION_c.
24582         (OBJS-common): Add plugin-version.o.
24583         (plugin-version.o): New.
24584         * gcc-plugin.h (plugin_gcc_version): New.
24585         (plugin_default_version_check): New.
24586         (plugin_init_func, plugin_init): Add version argument.
24587         * plugin-version.c: New.
24588         * plugin.c (str_plugin_gcc_version_name): New.
24589         (try_init_one_plugin): Read plugin_gcc_version from the plugin and
24590         pass it to the init function.
24591         (plugin_default_version_check): New.
24592
24593 2009-04-17  Richard Guenther  <rguenther@suse.de>
24594
24595         * tree-ssa-alias.c (refs_may_alias_p_1): Do not use TBAA
24596         for decl-vs-decl disambiguation.
24597
24598 2009-04-17  Andreas Krebbel  <krebbel1@de.ibm.com>
24599
24600         * config/s390/s390.h (s390_tune_attr): New macro definition.
24601         * config/s390/s390.md (cpu attribute): Map to s390_tune_attr.
24602
24603 2009-04-17  Richard Guenther  <rguenther@suse.de>
24604
24605         * tree-ssa-ccp.c (struct fold_stmt_r_data): Remove.
24606         (fold_stmt_r): Likewise.
24607         (maybe_fold_reference): New function.
24608         (fold_gimple_assign): Handle cases fold_stmt_r did.
24609         (fold_stmt): Do not use fold_stmt_r.
24610         (fold_stmt_inplace): Likewise.
24611
24612 2009-04-17  Richard Guenther  <rguenther@suse.de>
24613
24614         * tree-ssa-dom.c (gimple_assign_unary_useless_conversion_p): Remove.
24615         (record_equivalences_from_stmt): Remove useless checks and
24616         simplifications.
24617         * tree-ssa-pre.c (eliminate): Avoid converting a constant if
24618         the type is already suitable.
24619
24620 2009-04-17  Paolo Bonzini  <bonzini@gnu.org>
24621
24622         * config/sh/sh.h (FUNCTION_VALUE): Fix call to sh_promote_prototypes.
24623
24624 2009-04-17  Uros Bizjak  <ubizjak@gmail.com>
24625
24626         * config/arm/sfp-machine.h (__gcc_CMPtype): New typedef.
24627         (CMPtype): Define as __gcc_CMPtype.
24628
24629 2009-04-17  Aurelien Jarno  <aurelien@aurel32.net>
24630
24631         * config.gcc: Add soft-fp/t-softfp and i386/t-linux to tmake_file
24632         for i[34567]86-*-kfreebsd*-gnu*, x86_64-*-kfreebsd*-gnu*.
24633
24634 2009-04-17  Richard Guenther  <rguenther@suse.de>
24635
24636         PR tree-optimization/39746
24637         * tree-ssa-alias.c (ref_maybe_used_by_call_p_1): Remove
24638         special-casing for builtins and static variable use/def.
24639         (call_may_clobber_ref_p_1): Likewise.
24640
24641 2009-04-16  Ian Lance Taylor  <iant@google.com>
24642
24643         * df.h: Include "timevar.h".
24644         (struct df_problem): Change tv_id field to timevar_id_t.
24645         * tree-pass.h: Include "timevar.h".
24646         (struct opt_pass): Change tv_id field to timevar_id_t.
24647         * timevar.h (timevar_id_t): Define TV_NONE.
24648         * passes.c (execute_one_ipa_transform_pass): Check for tv_id !=
24649         TV_NONE rather than tv_id != 0.
24650         (execute_one_pass): Likewise.
24651         * Makefile.in (DF_H): Add $(TIMEVAR_H).
24652         (TREE_PASS_H): Define.  Change all instances of tree-pass.h in
24653         dependencies to $(TREE_PASS_H).
24654         * bt-load.c (pass_branch_target_load_optimize1): Set tv_id field
24655         to TV_NONE.
24656         (pass_branch_target_load_optimize2): Likewise.
24657         * cfglayout.c (pass_into_cfg_layout_mode): Likewise.
24658         (pass_outof_cfg_layout_mode): Likewise.
24659         * cgraphbuild.c (pass_remove_cgraph_callee_edges): Likewise.
24660         (pass_rebuild_cgraph_edges): Likewise.
24661         (pass_remove_cgraph_callee_edges): Likewise.
24662         * df-core.c (pass_df_initialize_opt): Likewise.
24663         (pass_df_initialize_no_opt): Likewise.
24664         (pass_df_finish): Likewise.
24665         * emit-rtl.c (pass_unshare_all_rtl): Likewise.
24666         * except.c (pass_set_nothrow_function_flags): Likewise.
24667         (pass_convert_to_eh_region_ranges): Likewise.
24668         * final.c (pass_compute_alignments): Likewise.
24669         * function.c (pass_instantiate_virtual_regs): Likewise.
24670         (pass_init_function): Likewise.
24671         (pass_leaf_regs): Likewise.
24672         (pass_match_asm_constraints): Likewise.
24673         * gimple-low.c (pass_lower_cf): Likewise.
24674         (pass_mark_used_blocks): Likewise.
24675         * init-regs.c (pass_initialize_regs): Likewise.
24676         * integrate.c (pass_initial_value_sets): Likewise.
24677         * ira.c (pass_ira): Likewise.
24678         * jump.c (pass_cleanup_barriers): Likewise.
24679         * omp-low.c (pass_expand_omp): Likewise.
24680         (pass_lower_omp): Likewise.
24681         * matrix-reorg.c (pass_ipa_matrix_reorg): Likewise.
24682         * recog.c (pass_split_all_insns): Likewise.
24683         (pass_split_after_reload): Likewise.
24684         (pass_split_before_regstack): Likewise.
24685         (pass_split_before_sched2): Likewise.
24686         (pass_split_for_shorten_branches): Likewise.
24687         * reginfo.c (pass_reginfo_init): Likewise.
24688         (pass_subregs_of_mode_init): Likewise.
24689         (pass_subregs_of_mode_finish): Likewise.
24690         * passes.c (pass_postreload): Likewise.
24691         * stack-ptr-mod.c (pass_stack_ptr_mod): Likewise.
24692         * tree-cfg.c (pass_remove_useless_stmts): Likewise.
24693         (pass_warn_function_return): Likewise.
24694         (pass_warn_function_noreturn): Likewise.
24695         * tree-complex.c (pass_lower_complex): Likewise.
24696         (pass_lower_complex_O0): Likewise.
24697         * tree-if-conv.c (pass_if_conversion): Likewise.
24698         * tree-into-ssa.c (pass_build_ssa): Likewise.
24699         * tree-mudflap.c (pass_mudflap_1): Likewise.
24700         (pass_mudflap_2): Likewise.
24701         * tree-nomudflap.c (pass_mudflap_1): Likewise.
24702         (pass_mudflap_2): Likewise.
24703         * tree-nrv.c (pass_return_slot): Likewise.
24704         * tree-object-size.c (pass_object_sizes): Likewise.
24705         * tree-optimize.c (pass_all_optimizations): Likewise.
24706         (pass_early_local_passes): Likewise.
24707         (pass_all_early_optimizations): Likewise.
24708         (pass_cleanup_cfg): Likewise.
24709         (pass_cleanup_cfg_post_optimizing): Likewise.
24710         (pass_free_datastructures): Likewise.
24711         (pass_free_cfg_annotations): Likewise.
24712         (pass_fixup_cfg): Likewise.
24713         (pass_init_datastructures): Likewise.
24714         * tree-ssa.c (pass_early_warn_uninitialized): Likewise.
24715         (pass_late_warn_uninitialized): Likewise.
24716         (pass_update_address_taken): Likewise.
24717         * tree-ssa-ccp.c (pass_fold_builtins): Likewise.
24718         * tree-ssa-math-opts.c (pass_cse_reciprocals): Likewise.
24719         (pass_cse_sincos): Likewise.
24720         (pass_convert_to_rsqrt): Likewise.
24721         * tree-ssa-structalias.c (pass_build_alias): Likewise.
24722         * tree-stdarg.c (pass_stdarg): Likewise.
24723         * tree-tailcall.c (pass_tail_recursion): Likewise.
24724         (pass_tail_calls): Likewise.
24725         * tree-vect-generic.c (pass_lower_vector): Likewise.
24726         (pass_lower_vector_ssa): Likewise.
24727         * tree-vectorizer.c (pass_ipa_increase_alignment): Likewise.
24728
24729 2009-04-16  Joseph Myers  <joseph@codesourcery.com>
24730
24731         * config/mips/mips.c (mips_rtx_cost_data): Use SOFT_FP_COSTS in
24732         XLR entry.
24733         * config/mips/mips.h (MIPS_ISA_LEVEL_SPEC, MIPS_ARCH_FLOAT_SPEC):
24734         Handle -march=xlr.
24735         * config/mips/xlr.md (ir_xlr_alu): Also accept insn types move,
24736         logical and signext.
24737
24738 2009-04-16  Kaz Kojima  <kkojima@gcc.gnu.org>
24739
24740         PR target/39767
24741         * config/sh/predicates.md (arith_operand): Check if the operand
24742         of TRUNCATE is a REG.
24743
24744 2009-04-16  Kazu Hirata  <kazu@codesourcery.com>
24745
24746         * cfgrtl.c (delete_insn_chain_and_edges): Remove.
24747         * rtl.h: Remove the prototype for delete_insn_chain_and_edges.
24748
24749 2009-04-16  Kazu Hirata  <kazu@codesourcery.com>
24750
24751         * tree-iterator.c (tsi_split_statement_list_after,
24752         tsi_split_statement_list_before): Remove.
24753         * tree-iterator.h: Remove the prototypes for
24754         tsi_split_statement_list_after and tsi_split_statement_list_before.
24755
24756 2009-04-16  Kazu Hirata  <kazu@codesourcery.com>
24757
24758         * tree-ssa-propagate.c (stmt_makes_single_load): Remove.
24759         * tree-ssa-propagate.h: Remove the prototype for
24760         stmt_makes_single_load.
24761
24762 2009-04-16  Kazu Hirata  <kazu@codesourcery.com>
24763
24764         * emit-rtl.c (set_mem_attrs_from_reg): Remove.
24765         * rtl.h: Remove the prototype for set_mem_attrs_from_reg.
24766
24767 2009-04-16  Kazu Hirata  <kazu@codesourcery.com>
24768
24769         * tree-iterator.c (EXPR_LAST_BODY): Remove.
24770
24771 2009-04-16  Kazu Hirata  <kazu@codesourcery.com>
24772
24773         * except.c (eh_region_outer_p): Remove.
24774         * except.h: Remove the prototype for eh_region_outer_p.
24775
24776 2009-04-16  Kazu Hirata  <kazu@codesourcery.com>
24777
24778         * function.c (current_function_assembler_name): Remove.
24779         * function.h: Remove the prototype for
24780         current_function_assembler_name.
24781
24782 2009-04-16  Ian Lance Taylor  <iant@google.com>
24783
24784         * rtlanal.c (alloc_reg_note): New function, broken out of add_reg_note.
24785         (add_reg_note): Call alloc_reg_note.
24786         * rtl.h (alloc_reg_note): Declare.
24787         * combine.c (try_combine): Use alloc_reg_note.
24788         (recog_for_combine, move_deaths): Likewise.
24789         (distribute_notes): Use alloc_reg_note and add_reg_note.
24790         * haifa-sched.c (sched_create_recovery_edges): Use add_reg_note.
24791         * combine-stack-adj.c (adjust_frame_related_expr): Likewise.
24792         * reload1.c (eliminate_regs_1): Use alloc_reg_note.
24793
24794 2009-04-16  Vladimir Makarov  <vmakarov@redhat.com>
24795
24796         PR rtl-optimization/39762
24797         * ira-int.h (ira_register_move_cost, ira_may_move_in_cost,
24798         ira_may_move_out_cost): Add comments about way of their usage.
24799         (ira_get_register_move_cost, ira_get_may_move_cost): New functions.
24800
24801         * ira-conflicts.c (process_regs_for_copy): Use function
24802         ira_get_register_move_cost instead of global
24803         ira_register_move_cost.
24804
24805         * ira-color.c (update_copy_costs, calculate_allocno_spill_cost,
24806         color_pass, move_spill_restore, update_curr_costs): Ditto.
24807
24808         * ira-lives.c (process_single_reg_class_operands): Ditto.
24809
24810         * ira-emit.c (emit_move_list): Ditto.
24811
24812         * ira-costs.c (copy_cost): Don't call ira_init_register_move_cost.
24813         (record_reg_classes): Ditto.  Use functions
24814         ira_get_register_move_cost and ira_get_may_move_cost instead of
24815         global vars ira_register_move_cost, ira_may_move_out_cost and
24816         ira_may_move_in_cost.
24817         (record_address_regs): Don't call ira_init_register_move_cost.
24818         Use function ira_get_may_move_cost instead of global
24819         ira_may_move_in_cost.
24820         (process_bb_node_for_hard_reg_moves): Use function
24821         ira_get_register_move_cost instead of global ira_register_move_cost.
24822         (ira_costs): Don't call ira_init_register_move_cost.
24823
24824 2009-04-16  Richard Guenther  <rguenther@suse.de>
24825
24826         * tree-cfg.c (verify_gimple_assign_binary):
24827         Allow POINTER_PLUS_EXPR-like PLUS_EXPR for vectors.
24828         * ipa-struct-reorg.c (gen_size): Fold the built expressions.
24829         (create_general_new_stmt): Note that this function is broken.
24830
24831 2009-04-16  Rafael Avila de Espindola  <espindola@google.com>
24832
24833         * common.opt (fhelp): Add Var(help_flag).
24834         * gcc-plugin.h (plugin_info): Add help.
24835         * plugin.c (plugin_name_args): Add help.
24836         (register_plugin_info): Set plugin->help.
24837         (print_help_one_plugin): New.
24838         (print_plugins_help): New.
24839         * plugin.h (print_plugins_help): New.
24840         * toplev.c (toplev_main): Call print_plugins_help if needed.
24841
24842 2009-04-16  Richard Guenther  <rguenther@suse.de>
24843
24844         * gimple.c (gimple_copy): Do not clear addresses_taken bitmap.
24845         (gimple_ior_addresses_taken_1): New function.
24846         (gimple_ior_addresses_taken): Likewise.
24847         * gimple.h (struct gimple_statement_with_ops_base): Remove
24848         addresses_taken member.
24849         (gimple_ior_addresses_taken): Declare.
24850         (gimple_addresses_taken, gimple_addresses_taken_ptr,
24851         gimple_set_addresses_taken): Remove.
24852         * ipa-reference.c (mark_address): New function.
24853         (scan_stmt_for_static_refs): Use it for marking addresses taken.
24854         * tree-ssa-operands.c (add_to_addressable_set): Rename to ...
24855         (mark_address_taken): ... this.  Just set TREE_ADDRESSABLE.
24856         (gimple_add_to_addresses_taken): Remove.
24857         (get_tmr_operands): Call mark_address_taken.
24858         (get_asm_expr_operands): Likewise.
24859         (get_expr_operands): Likewise.
24860         (build_ssa_operands): Do not clear the addresses_taken bitmap.
24861         (free_stmt_operands): Do not free it.
24862         * tree-ssa.c (delete_tree_ssa): Likewise.
24863         (execute_update_addresses_taken): Use gimple_ior_addresses_taken.
24864
24865 2009-04-16  Richard Guenther  <rguenther@suse.de>
24866
24867         * gimple.h (walk_stmt_load_store_addr_ops): Declare.
24868         (walk_stmt_load_store_ops): Likewise.
24869         * gimple.c (get_base_loadstore): New function.
24870         (walk_stmt_load_store_addr_ops): Likewise.
24871         (walk_stmt_load_store_ops): Likewise.
24872         * ipa-pure-const.c (check_op): Simplify.
24873         (check_load, check_store): New functions.
24874         (check_stmt): Use walk_stmt_load_store_ops.
24875         * ipa-reference.c (mark_load): Adjust signature.
24876         (mark_store): Likewise.
24877         (scan_stmt_for_static_refs): Use walk_stmt_load_store_addr_ops.
24878
24879 2009-04-16  Rafael Avila de Espindola  <espindola@google.com>
24880
24881         * gcc-plugin.h (plugin_event): Add PLUGIN_INFO.
24882         (plugin_info): New.
24883         * opts.c (common_handle_option): Don't call print_version.
24884         * plugin.c (plugin_name_args): Add version.
24885         (register_plugin_info): New.
24886         (register_callback): Handle PLUGIN_INFO.
24887         (try_init_one_plugin): New.
24888         (init_one_plugin): Use try_init_one_plugin. Only free plugin_name_args
24889         if failed to init.
24890         (finalize_one_plugin): New.
24891         (finalize_plugins): New.
24892         (print_one_plugin): New.
24893         (print_plugins_versions): New.
24894         * plugin.h (print_plugins_versions): New.
24895         (finalize_plugins): New.
24896         * toplev.c (compile_file): Don't call initialize_plugins.
24897         (print_version): Call print_plugins_versions.
24898         (toplev_main): Call initialize_plugins. Print version if needed.
24899         Call finalize_plugins.
24900
24901 2009-04-16  Rafael Avila de Espindola  <espindola@google.com>
24902
24903         * common.opt (fversion): New.
24904         * gcc.c (print_version): New.
24905         (process_command): Don't print the version. Just set print_version.
24906         (main): Print version. Call subprocesses if print_version and
24907         verbose_flag are set.
24908         * opts.c (common_handle_option): Handle OPT_fversion.
24909
24910 2009-04-16  Richard Guenther  <rguenther@suse.de>
24911             Ira Rosen  <irar@il.ibm.com>
24912
24913         PR tree-optimization/39698
24914         * tree-vect-loop.c (get_initial_def_for_reduction): Use the
24915         type of the reduction variable.  Only generate the def if
24916         it is needed.
24917
24918         * omp-low.c (expand_omp_for_generic): When converting to a pointer
24919         make sure to first convert to an integer of the same precision.
24920         * tree-vect-loop-manip.c (vect_update_ivs_after_vectorizer): Retain
24921         the type of the evolution correctly in computing the new
24922         induction variable base.
24923
24924 2009-04-16  Richard Guenther  <rguenther@suse.de>
24925
24926         PR middle-end/39625
24927         * tree-cfg.c (make_blocks): Split statements with to-be
24928         abnormal SSA names on the lhs.
24929
24930 2009-04-16  Paolo Bonzini  <bonzini@gnu.org>
24931
24932         * c-common.c (vector_targets_convertible_p, vector_types_convertible_p):
24933         Use TYPE_VECTOR_OPAQUE instead of targetm.vector_opaque_p.
24934         * c-typeck.c (really_start_incremental_init): Likewise.
24935         * target-def.h (TARGET_VECTOR_OPAQUE_P): Remove.
24936         (TARGET_INITIALIZER): Remove it.
24937         * target.h (struct target): Remove vector_opaque_p.
24938         * tree.c (build_opaque_vector_type): New.
24939         * tree.h (TYPE_VECTOR_OPAQUE): New.
24940         (build_opaque_vector_type): Declare.
24941         * doc/tm.texi (TARGET_VECTOR_OPAQUE_P): Remove.
24942         * config/rs6000/rs6000.c (build_opaque_vector_type,
24943         rs6000_is_vector_type, TARGET_VECTOR_OPAQUE_P): Remove.
24944         (rs6000_init_builtins): Use build_opaque_vector_type for
24945         opaque_V4SI_type_node.
24946
24947 2009-04-15  Catherine Moore  <clm@codesourcery.com>
24948
24949         * debug.h (set_name):  Declare.
24950         * dwarf2out.c (dwarf2out_set_name): Declare.
24951         (dwarf2_debug_hooks): Add set_name.
24952         (find_AT_string): New.
24953         (add_AT_string): Call find_AT_string.
24954         (dwarf2out_set_name): New.
24955         * cp/decl.c (grokdeclarator): Call set_name.
24956         * vmsdbgout.c (vmsdbg_debug_hooks): Add set_name_debug_nothing.
24957         * debug.c (do_nothing_debug_hooks):  Likewise.
24958         * dbxout.c (dbx_debug_hooks): Likewise.
24959         * sdbout.c (sdb_debug_hooks): Likewise.
24960
24961 2009-04-15  Michael Eager  <eager@eagercon.com>
24962
24963         * config/rs6000/rs6000.c (rs6000_function_value): Set function return
24964         reg for single-precision FPU.
24965         * config/rs6000/rs6000.md (movsi_internal1): Only for
24966         !TARGET_SINGLE_FPU.
24967         (movsi_internal1_single): New. Add pattern to move SI values to/from
24968         single-precision FP regs.
24969
24970 2009-04-15  Richard Guenther  <rguenther@suse.de>
24971
24972         * omp-low.c (lower_rec_input_clauses): Build correct address
24973         expressions.
24974         (expand_omp_for_generic): Fix multiplication type.
24975         * tree-loop-distribution.c (build_size_arg): Build a size_t argument.
24976         (generate_memset_zero): Fix types.
24977         * tree-profile.c (prepare_instrumented_value): Correctly
24978         widen a pointer.
24979
24980 2009-04-15  Ian Lance Taylor  <iant@google.com>
24981
24982         * c.opt (Wenum-compare): Enable for C and Objc.  Initialize to -1.
24983         * c-opts.c (c_common_handle_option): For C, set warn_enum_compare
24984         for -Wall and for -Wc++-compat.
24985         (c_common_post_options): For C++, set warn_enum_compare if not
24986         already set.
24987         * c-tree.h (struct c_expr): Add field original_type.
24988         (build_external_ref): Update declaration.
24989         * c-parser.c (c_parser_braced_init): Set original_type.
24990         (c_parser_initelt): Likewise.
24991         (c_parser_expr_no_commas): Likewise.
24992         (c_parser_conditional_expression): Likewise.
24993         (c_parser_cast_expression): Likewise.
24994         (c_parser_unary_expression): Likewise.  Pull setting of
24995         original_code to top of function.
24996         (c_parser_sizeof_expression): Set original_type.
24997         (c_parser_alignof_expression): Likewise.
24998         (c_parser_postfix_expression): Likewise.  Pull setting of
24999         original_code to top of function.
25000         (c_parser_postfix_expression_after_paren_type): Set original_type.
25001         (c_parser_postfix_expression_after_primary): Likewise.
25002         (c_parser_expression): Likewise.
25003         * c-typeck.c (build_external_ref): Add type parameter.  Change all
25004         callers.
25005         (c_expr_sizeof_expr): Set original_type field.
25006         (parser_build_unary_op): Likewise.
25007         (parser_build_binary_op): Likewise.  Optionally warn about
25008         comparisons of enums of different types.
25009         (digest_init): Set original_type field.
25010         (really_start_incremental_init): Likewise.
25011         (push_init_level, pop_init_level): Likewise.
25012         * doc/invoke.texi (Warning Options): -Wenum-compare now
25013         supported in C.
25014
25015 2009-04-15  Richard Guenther  <rguenther@suse.de>
25016
25017         * tree-ssa-pre.c (eliminate): When replacing a PHI node carry
25018         out a necessary conversion.
25019         * tree-ssa-sccvn.c (run_scc_vn): Also assign value-ids to
25020         names we didn't value number.
25021         * tree-mudflap.c (mf_build_check_statement_for): Use correct types.
25022
25023 2009-04-15  Richard Guenther  <rguenther@suse.de>
25024
25025         PR tree-optimization/39764
25026         * tree-ssa-ccp.c (get_value): Canonicalize value with
25027         canonicalize_float_value.
25028
25029 2009-04-15  Jan Hubicka  <jh@suse.cz>
25030
25031         * builtins.def (va_start, va_end, va_copy): Fix my previous commit.
25032         Wrong version of patch.
25033
25034 2009-04-15  Jan Hubicka  <jh@suse.cz>
25035
25036         * builtins.def (va_start, va_end, va_copy): Mark nothrow.
25037
25038 2009-04-15  Nathan Sidwell  <nathan@codesourcery.com>
25039
25040         * config/rs6000/rs6000.c (rs6000_init_builtins): Set TYPE_NAME of
25041         our distinct integral and vector types.
25042
25043 2009-04-15  Rafael Avila de Espindola  <espindola@google.com>
25044
25045         * class.c (build_vtbl_ref_1): Remove call to assemble_external.
25046         * init.c (build_vtbl_address): Remove call to assemble_external.
25047
25048 2009-04-14  Daniel Jacobowitz  <dan@codesourcery.com>
25049
25050         * config/rs6000/rs6000.c (rs6000_dwarf_register_span): Fix debug
25051         output for other floating point modes.
25052
25053 2009-04-14  Diego Novillo  <dnovillo@google.com>
25054
25055         * diagnostic.c (diagnostic_report_diagnostic): Do not
25056         warn about loaded plugins for DK_ERROR and DK_WARNING.
25057         * c-decl.c (declspecs_add_type): Move call to
25058         invoke_plugin_callbacks ...
25059         * c-parser.c (c_parser_declspecs): ... here.
25060         * plugin.c (dump_active_plugins): Tidy output.
25061
25062 2009-04-14  Diego Novillo  <dnovillo@google.com>
25063             Le-Chun Wu  <lcwu@google.com>
25064
25065         * configure.ac: Add --enable-plugin support.
25066         Define ENABLE_PLUGIN and PLUGINLIBS when specified.
25067         * Makefile.in (PLUGIN_H): Define.
25068         Export ENABLE_PLUGIN and GMPINC to site.exp.
25069         Add PLUGINLIBS to link command.
25070         Add/modify dependencies for plugin.o and files including plugin.h.
25071         (plugin.o): New.
25072         * config.in: Regenerate.
25073
25074         * opts.c (common_handle_option): Handle OPT_fplugin_ and
25075         OPT_fplugin_arg_.
25076
25077 2009-04-14  Le-Chun Wu  <lcwu@google.com>
25078
25079         * tree-pass.h (register_one_dump_file): Add a prototype for
25080         register_one_dump_file.
25081         * toplev.c (compile_file): Call initialize_plugins.
25082         (do_compile): Call invoke_plugin_callbacks.
25083         (toplev_main): Call invoke_plugin_callbacks.
25084         * common.opt: Add -fplugin= and -fplugin-arg-.
25085         * gcc-plugin.h: New public header file for plugins to include.
25086         * plugin.c: New source file.
25087         * plugin.h: New internal header file.
25088         * passes.c (register_one_dump_file): Make it external.
25089
25090         * c-parser.c (c_parser_declspecs): Call invoke_plugin_callbacks.
25091
25092 2009-04-14  Diego Novillo  <dnovillo@google.com>
25093
25094         * doc/plugins.texi: New.
25095         * doc/gccint.texi: Add reference to Plugins chapter.
25096         * doc/invoke.texi: Document -fplugin and -fplugin-arg
25097         * diagnostic.c (diagnostic_report_diagnostic): Warn about
25098         loaded plugins, if any.
25099         * timevar.def (TV_PLUGIN_INIT): Define.
25100         (TV_PLUGIN_RUN): Define.
25101         * plugin.c: Include timevar.h
25102         (plugins_active_p): New.
25103         (dump_active_plugins): New.
25104         (debug_active_plugins): New.
25105
25106 2009-04-14  Joseph Myers  <joseph@codesourcery.com>
25107
25108         * config/sol2.h (LINK_ARCH32_SPEC_BASE): Use %R with absolute
25109         library paths.
25110         * config/sparc/sol2-bi.h (LINK_ARCH64_SPEC_BASE): Likewise.
25111
25112 2009-04-14  Kazu Hirata  <kazu@codesourcery.com>
25113
25114         * config/arm/arm.c (arm_rtx_costs_1): Treat a minus with a shift
25115         the same as a minus without a shift.
25116
25117 2009-04-14  Nick Clifton  <nickc@redhat.com>
25118
25119         * config/stormy16/stormy16.md (ineqbranch_1): Do not assume that
25120         comparisons with small integers will always produce a short
25121         branch.
25122
25123 2009-04-14  Rafael Avila de Espindola  <espindola@google.com>
25124
25125         Merge:
25126         2008-12-19  Diego Novillo  <dnovillo@google.com>
25127
25128         * cgraph.c (dump_cgraph_node): Show memory address of NODE.
25129
25130 2009-04-14  Richard Guenther  <rguenther@suse.de>
25131
25132         * tree-cfg.c (verify_gimple_assign_unary): Adjust vector code
25133         verification.
25134         (verify_gimple_assign_binary): Likewise.  Handle shifts and
25135         rotates correctly.
25136         (verify_gimple_phi): Print the mismatched argument position.
25137         * tree-vect-loop-manip.c (vect_update_ivs_after_vectorizer):
25138         Fix types.
25139         (vect_update_init_of_dr): Likewise.
25140         * matrix-reorg.c (transform_access_sites): Do what the
25141         comment suggests.
25142         * omp-low.c (expand_omp_atomic_pipeline): Use the correct types.
25143
25144 2009-04-13  Michael Eager  <eager@eagercon.com>
25145
25146         * config/rs6000/rs6000-c.c: generate defines if rs6000_xilinx_fpu:
25147         _XFPU, _XFPU_SP_LITE, _XFPU_SP_FULL, _XFPU_DP_LITE, _XFPU_DP_FULL
25148         * config/rs6000/xilinx.h: New.  Spec for powerpc-xilinx-eabi
25149         * config.gcc (powerpc-xilinx-eabi): add xilinx.h to tm_file,
25150         remove duplicate config
25151
25152 2009-04-13  Dwarakanath Rajagopal  <dwarak.rajagopal@amd.com>
25153
25154         * ipa-inline.c (cgraph_decide_inlining_of_small_function): Dump
25155         file_name:line_number type locator of the call site.
25156
25157 2009-04-13  Vladimir Makarov  <vmakarov@redhat.com>
25158
25159         * genautomata.c: Put blank after comma.
25160         (automaton_decls): New.
25161         (struct unit_usage): Add comments to member next.
25162         (store_alt_unit_usage): Keep the list ordered.
25163         (unit_present_on_list_p, equal_alternatives_p): New.
25164         (check_regexp_units_distribution): Check units distribution
25165         correctness correctly.
25166         (main): Don't write automata if error is found.  Return correct
25167         exit code.
25168
25169         * config/m68k/cf.md (cfv4_ds): Remove.
25170         (cfv4_pOEP1, cfv4_sOEP1, cfv4_pOEP2,cfv4_sOEP2, cfv4_pOEP3,
25171         cfv4_sOEP3): Assign to cfv4_oep instead of cfv4_ds.
25172
25173         * config/rs6000/power4.md (lsuq_power4, iq_power4, fpq_power4,
25174         power4-load-ext, power4-store, power4-store-update,
25175         power4-fpstore, power4-fpstore-update, power4-two, power4-three,
25176         power4-insert, power4-compare, power4-lmul-cmp, power4-imul-cmp,
25177         power4-lmul, , power4-imul, power4-imul3, power4-sdiv,
25178         power4-sqrt, power4-isync): Modify reservation to make correct
25179         unit distribution to automata.
25180
25181         * config/rs6000/power5.md (iq_power5, fpq_power5, power5-store,
25182         power5-store-update, power5-two, power5-three, power5-lmul,
25183         power5-imul, power5-imul3, power5-sdiv, power5-sqrt): Ditto.
25184
25185 2009-04-13  Adam Nemet  <anemet@caviumnetworks.com>
25186
25187         * except.c (pass_set_nothrow_function_flags): Set name and add
25188         TODO_dump_func.
25189         (set_nothrow_function_flags): Mention in the dump file when
25190         changing a function to nothrow.
25191
25192 2009-04-13  Ozkan Sezer  <sezeroz@gmail.com>
25193
25194         PR/39066
25195         * gbl-ctors.h (DO_GLOBAL_CTORS_BODY): Use __SIZE_TYPE__
25196         instead of unsigned long.
25197
25198 2009-04-13  Ramana Radhakrishnan  <ramana.radhakrishnan@arm.com>
25199
25200         * config/arm/arm.c (return_used_this_function): Remove.
25201         (arm_output_function_prologue): Remove use of
25202         return_used_this_function.
25203         (output_return_instruction): Replace use of
25204         return_used_this_function
25205         by cfun->machine->return_used_this_function.
25206         (arm_output_epilogue): Likewise.
25207         (arm_output_function_epilogue): Likewise.
25208         (thumb_unexpanded_epilogue): Likewise.
25209         * config/arm/arm.h (struct machine_function):
25210         New member return_used_this_function.
25211
25212 2009-04-12  Mark Mitchell  <mark@codesourcery.com>
25213
25214         * doc/install.texi: Correct description of default directory for
25215         --with-gxx-include-dir.
25216
25217 2009-04-12  Eric Botcazou  <ebotcazou@adacore.com>
25218
25219         * fold-const.c (build_range_check): Properly deal with enumeral and
25220         boolean base types.
25221
25222 2009-04-12  Steven Bosscher  <steven@gcc.gnu.org>
25223
25224         * doc/invoke.texi (max_gcse_passes): Remove documentation.
25225         * params.def (PARAM_MAX_GCSE_PASSES): Remove.
25226         * params.h (MAX_GCSE_PASSES): Remove.
25227         * gcse.c (gcse_main): Run CPROP1, PRE or HOIST, and CPROP2
25228         in sequence.  Remove ability to run multiple passes.
25229         (bypass_jumps): Report run as third CPROP pass.
25230
25231 2009-04-12  Adam Nemet  <anemet@caviumnetworks.com>
25232
25233         PR middle-end/39651
25234         * except.c (can_throw_external): Look at each insn in a SEQUENCE
25235         when deciding whether the whole SEQUENCE can throw.
25236
25237 2009-04-12  Uros Bizjak  <ubizjak@gmail.com>
25238
25239         PR target/39740
25240         * config/alpha/predicates.md (local_symbolic_operand): Return 1 for
25241         offseted label references.
25242
25243 2009-04-11  Jan Hubicka  <jh@suse.cz>
25244
25245         * tree-ssa-pre.c (eliminate): Fix call of update_stmt.
25246
25247 2009-04-11  Richard Guenther  <rguenther@suse.de>
25248
25249         PR middle-end/39732
25250         * tree-inline.c (declare_return_variable): Mark DECL_BY_REFERENCE
25251         return variables as TREE_ADDRESSABLE.
25252
25253 2009-04-11  Richard Guenther  <rguenther@suse.de>
25254
25255         PR tree-optimization/39713
25256         * tree-ssa-sccvn.c (vn_get_expr_for): Make sure built
25257         reference trees have SSA_NAME operands.
25258
25259 2009-04-11  Richard Guenther  <rguenther@suse.de>
25260
25261         PR c/39712
25262         * c-gimplify.c (c_gimplify_expr): Adjust check for mismatched
25263         address expressions.
25264
25265 2009-04-11  Dave Korn  <dave.korn.cygwin@gmail.com>
25266
25267         * config/i386/cygwin-stdint.h (INT_LEAST32_TYPE):  Update to
25268         match changes in Cygwin 1.7
25269         (UINT_LEAST32_TYPE, INT_FAST16_TYPE, INT_FAST32_TYPE,
25270         UINT_FAST16_TYPE, UINT_FAST32_TYPE):  Likewise.
25271
25272 2009-04-10  Paolo Bonzini  <bonzini@gnu.org>
25273
25274         PR tree-optimization/39701
25275         * doc/invoke.texi (Optimization Options): Document change in
25276         meaning and initialization of -fdelete-null-pointer-checks.
25277
25278 2009-04-10  H.J. Lu  <hongjiu.lu@intel.com>
25279
25280         PR middle-end/39701
25281         * common.opt (-fdelete-null-pointer-checks): Initialize to 1.
25282
25283         * opts.c (decode_options): Don't set flag_delete_null_pointer_checks
25284         here.
25285
25286         * doc/invoke.texi: Update -fdelete-null-pointer-checks.
25287
25288 2009-04-10  Chao-ying Fu  <fu@mips.com>
25289
25290         * doc/tm.texi (Instruction Output): Document
25291         TARGET_ASM_FINAL_POSTSCAN_INSN.
25292         * target.h (final_postscan_insn): New field in asm_out.
25293         * target-def.h (TARGET_ASM_FINAL_POSTSCAN_INSN): New define.
25294         (TARGET_ASM_OUT): Add TARGET_ASM_FINAL_POSTSCAN_INSN.
25295         * final.c (final_scan_insn): Call
25296         targetm.asm_out.final_postscan_insn after outputting
25297         an asm macro and a normal instruction.
25298
25299         * config/mips/mips.h (FINAL_PRESCAN_INSN): New define.
25300         * config/mips/mips-protos.h (mips_final_prescan_insn): Declare.
25301         * config/mips/mips.c (mips_at_reg_p): New for_each_rtx callback.
25302         (mips_final_prescan_insn, mips_final_postscan_insn): New functions.
25303         (TARGET_ASM_FINAL_POSTSCAN_INSN): New define.
25304
25305 2009-04-10  Paolo Bonzini  <bonzini@gnu.org>
25306
25307         PR middle-end/39701
25308         * fold-const.c (tree_single_nonzero_warnv_p): Pass non-static
25309         variables as non-NULL even with -fdelete-null-pointer-checks.
25310
25311 2009-04-10  H.J. Lu  <hongjiu.lu@intel.com>
25312
25313         * config/rs6000/darwin-vecsave.asm: Remove extra "*/".
25314
25315 2009-04-09  H.J. Lu  <hongjiu.lu@intel.com>
25316
25317         PR target/39678
25318         * config/i386/i386.c (classify_argument): Handle SCmode with
25319         (bit_offset % 64) != 0.
25320
25321 2009-04-09  Sandra Loosemore  <sandra@codesourcery.com>
25322
25323         * doc/invoke.texi (Optimize Options): Add cross-reference to
25324         -Q --help=optimizers examples.
25325
25326 2009-04-10  Ben Elliston  <bje@au.ibm.com>
25327
25328         PR target/36800
25329         * config/rs6000/rs6000.c (rs6000_gimplify_va_arg): Do not set
25330         regalign for the reg == fpr and TDmode case.
25331
25332 2009-04-09  David Ayers  <ayers@fsfe.org>
25333
25334         PR objc/29200
25335         * objc/objc-act.c (warn_with_method): Remove helper function.
25336         (check_duplicates): Call warning and inform directly.
25337         (really_start_method): Likewise.
25338
25339 2009-04-09  Paolo Bonzini  <bonzini@gnu.org>
25340
25341         * expmed.c (expand_divmod): Always use a comparison for a division
25342         by a large unsigned integer.
25343
25344         * fold-const.c (tree_single_nonzero_warnv_p): Always treat decls
25345         for things others than variables or functions as nonzero.
25346
25347 2009-04-09  Nick Clifton  <nickc@redhat.com>
25348
25349         * unwind-compat.c: Change copyright header to refer to version
25350         3 of the GNU General Public License with version 3.1 of the
25351         GCC Runtime Library Exception and to point readers at the
25352         COPYING3 and COPYING3.RUNTIME files and the FSF's license web page.
25353         * config/alpha/crtfastmath.c: Likewise.
25354         * config/alpha/linux-unwind.h: Likewise.
25355         * config/alpha/qrnnd.asm: Likewise.
25356         * config/alpha/vms-crt0-64.c: Likewise.
25357         * config/alpha/vms-crt0.c: Likewise.
25358         * config/alpha/vms-dwarf2.asm: Likewise.
25359         * config/alpha/vms-dwarf2eh.asm: Likewise.
25360         * config/alpha/vms-psxcrt0-64.c: Likewise.
25361         * config/alpha/vms-psxcrt0.c: Likewise.
25362         * config/alpha/vms_tramp.asm: Likewise.
25363         * config/arc/initfini.c: Likewise.
25364         * config/arc/lib1funcs.asm: Likewise.
25365         * config/arm/bpabi-v6m.S: Likewise.
25366         * config/arm/bpabi.S: Likewise.
25367         * config/arm/bpabi.c: Likewise.
25368         * config/arm/crti.asm: Likewise.
25369         * config/arm/crtn.asm: Likewise.
25370         * config/arm/ieee754-df.S: Likewise.
25371         * config/arm/ieee754-sf.S: Likewise.
25372         * config/arm/lib1funcs.asm: Likewise.
25373         * config/arm/libunwind.S: Likewise.
25374         * config/arm/linux-atomic.c: Likewise.
25375         * config/arm/mmintrin.h: Likewise.
25376         * config/arm/pr-support.c: Likewise.
25377         * config/arm/unaligned-funcs.c: Likewise.
25378         * config/arm/unwind-arm.c: Likewise.
25379         * config/arm/unwind-arm.h: Likewise.
25380         * config/avr/libgcc.S: Likewise.
25381         * config/bfin/crti.s: Likewise.
25382         * config/bfin/crtlibid.s: Likewise.
25383         * config/bfin/crtn.s: Likewise.
25384         * config/bfin/lib1funcs.asm: Likewise.
25385         * config/bfin/linux-unwind.h: Likewise.
25386         * config/cris/arit.c: Likewise.
25387         * config/cris/cris_abi_symbol.c: Likewise.
25388         * config/darwin-64.c: Likewise.
25389         * config/darwin-crt2.c: Likewise.
25390         * config/darwin-crt3.c: Likewise.
25391         * config/darwin.h: Likewise.
25392         * config/dbxelf.h: Likewise.
25393         * config/dfp-bit.c: Likewise.
25394         * config/dfp-bit.h: Likewise.
25395         * config/elfos.h: Likewise.
25396         * config/fixed-bit.c: Likewise.
25397         * config/fixed-bit.h: Likewise.
25398         * config/fp-bit.c: Likewise.
25399         * config/fp-bit.h: Likewise.
25400         * config/fr30/crti.asm: Likewise.
25401         * config/fr30/crtn.asm: Likewise.
25402         * config/fr30/lib1funcs.asm: Likewise.
25403         * config/freebsd-spec.h: Likewise.
25404         * config/frv/cmovd.c: Likewise.
25405         * config/frv/cmovh.c: Likewise.
25406         * config/frv/cmovw.c: Likewise.
25407         * config/frv/frvbegin.c: Likewise.
25408         * config/frv/frvend.c: Likewise.
25409         * config/frv/lib1funcs.asm: Likewise.
25410         * config/glibc-stdint.h: Likewise.
25411         * config/h8300/clzhi2.c: Likewise.
25412         * config/h8300/crti.asm: Likewise.
25413         * config/h8300/crtn.asm: Likewise.
25414         * config/h8300/ctzhi2.c: Likewise.
25415         * config/h8300/fixunssfsi.c: Likewise.
25416         * config/h8300/lib1funcs.asm: Likewise.
25417         * config/h8300/parityhi2.c: Likewise.
25418         * config/h8300/popcounthi2.c: Likewise.
25419         * config/i386/ammintrin.h: Likewise.
25420         * config/i386/att.h: Likewise.
25421         * config/i386/avxintrin.h: Likewise.
25422         * config/i386/biarch64.h: Likewise.
25423         * config/i386/bmmintrin.h: Likewise.
25424         * config/i386/cpuid.h: Likewise.
25425         * config/i386/cross-stdarg.h: Likewise.
25426         * config/i386/crtfastmath.c: Likewise.
25427         * config/i386/crtprec.c: Likewise.
25428         * config/i386/cygming-crtbegin.c: Likewise.
25429         * config/i386/cygming-crtend.c: Likewise.
25430         * config/i386/cygwin.asm: Likewise.
25431         * config/i386/emmintrin.h: Likewise.
25432         * config/i386/gmm_malloc.h: Likewise.
25433         * config/i386/gthr-win32.c: Likewise.
25434         * config/i386/i386.h: Likewise.
25435         * config/i386/immintrin.h: Likewise.
25436         * config/i386/linux-unwind.h: Likewise.
25437         * config/i386/linux64.h: Likewise.
25438         * config/i386/mm3dnow.h: Likewise.
25439         * config/i386/mmintrin-common.h: Likewise.
25440         * config/i386/mmintrin.h: Likewise.
25441         * config/i386/nmmintrin.h: Likewise.
25442         * config/i386/pmm_malloc.h: Likewise.
25443         * config/i386/pmmintrin.h: Likewise.
25444         * config/i386/smmintrin.h: Likewise.
25445         * config/i386/sol2-c1.asm: Likewise.
25446         * config/i386/sol2-ci.asm: Likewise.
25447         * config/i386/sol2-cn.asm: Likewise.
25448         * config/i386/sol2-gc1.asm: Likewise.
25449         * config/i386/tmmintrin.h: Likewise.
25450         * config/i386/unix.h: Likewise.
25451         * config/i386/w32-unwind.h: Likewise.
25452         * config/i386/wmmintrin.h: Likewise.
25453         * config/i386/x86-64.h: Likewise.
25454         * config/i386/x86intrin.h: Likewise.
25455         * config/i386/xmmintrin.h: Likewise.
25456         * config/ia64/crtbegin.asm: Likewise.
25457         * config/ia64/crtend.asm: Likewise.
25458         * config/ia64/crtfastmath.c: Likewise.
25459         * config/ia64/crti.asm: Likewise.
25460         * config/ia64/crtn.asm: Likewise.
25461         * config/ia64/fde-glibc.c: Likewise.
25462         * config/ia64/lib1funcs.asm: Likewise.
25463         * config/ia64/linux-unwind.h: Likewise.
25464         * config/ia64/quadlib.c: Likewise.
25465         * config/ia64/unwind-ia64.c: Likewise.
25466         * config/linux.h: Likewise.
25467         * config/m32c/m32c-lib1.S: Likewise.
25468         * config/m32c/m32c-lib2-trapv.c: Likewise.
25469         * config/m32c/m32c-lib2.c: Likewise.
25470         * config/m32r/initfini.c: Likewise.
25471         * config/m68hc11/larith.asm: Likewise.
25472         * config/m68hc11/m68hc11-crt0.S: Likewise.
25473         * config/m68k/cf.md: Likewise.
25474         * config/m68k/crti.s: Likewise.
25475         * config/m68k/crtn.s: Likewise.
25476         * config/m68k/lb1sf68.asm: Likewise.
25477         * config/m68k/linux-unwind.h: Likewise.
25478         * config/mcore/crti.asm: Likewise.
25479         * config/mcore/crtn.asm: Likewise.
25480         * config/mcore/lib1.asm: Likewise.
25481         * config/mips/linux-unwind.h: Likewise.
25482         * config/mips/loongson.h: Likewise.
25483         * config/mips/mips16.S: Likewise.
25484         * config/mmix/crti.asm: Likewise.
25485         * config/mmix/crtn.asm: Likewise.
25486         * config/pa/fptr.c: Likewise.
25487         * config/pa/hpux-unwind.h: Likewise.
25488         * config/pa/lib2funcs.asm: Likewise.
25489         * config/pa/linux-atomic.c: Likewise.
25490         * config/pa/linux-unwind.h: Likewise.
25491         * config/pa/milli64.S: Likewise.
25492         * config/pa/quadlib.c: Likewise.
25493         * config/pa/stublib.c: Likewise.
25494         * config/picochip/libgccExtras/adddi3.asm: Likewise.
25495         * config/picochip/libgccExtras/ashlsi3.asm: Likewise.
25496         * config/picochip/libgccExtras/ashlsi3.c: Likewise.
25497         * config/picochip/libgccExtras/ashrsi3.asm: Likewise.
25498         * config/picochip/libgccExtras/ashrsi3.c: Likewise.
25499         * config/picochip/libgccExtras/cmpsi2.asm: Likewise.
25500         * config/picochip/libgccExtras/divmod15.asm: Likewise.
25501         * config/picochip/libgccExtras/divmodhi4.asm: Likewise.
25502         * config/picochip/libgccExtras/divmodsi4.asm: Likewise.
25503         * config/picochip/libgccExtras/longjmp.asm: Likewise.
25504         * config/picochip/libgccExtras/lshrsi3.asm: Likewise.
25505         * config/picochip/libgccExtras/lshrsi3.c: Likewise.
25506         * config/picochip/libgccExtras/parityhi2.asm: Likewise.
25507         * config/picochip/libgccExtras/popcounthi2.asm: Likewise.
25508         * config/picochip/libgccExtras/setjmp.asm: Likewise.
25509         * config/picochip/libgccExtras/subdi3.asm: Likewise.
25510         * config/picochip/libgccExtras/ucmpsi2.asm: Likewise.
25511         * config/picochip/libgccExtras/udivmodhi4.asm: Likewise.
25512         * config/picochip/libgccExtras/udivmodsi4.asm: Likewise.
25513         * config/rs6000/750cl.h: Likewise.
25514         * config/rs6000/altivec.h: Likewise.
25515         * config/rs6000/biarch64.h: Likewise.
25516         * config/rs6000/crtresfpr.asm: Likewise.
25517         * config/rs6000/crtresgpr.asm: Likewise.
25518         * config/rs6000/crtresxfpr.asm: Likewise.
25519         * config/rs6000/crtresxgpr.asm: Likewise.
25520         * config/rs6000/crtsavfpr.asm: Likewise.
25521         * config/rs6000/crtsavgpr.asm: Likewise.
25522         * config/rs6000/darwin-asm.h: Likewise.
25523         * config/rs6000/darwin-fallback.c: Likewise.
25524         * config/rs6000/darwin-fpsave.asm: Likewise.
25525         * config/rs6000/darwin-ldouble.c: Likewise.
25526         * config/rs6000/darwin-tramp.asm: Likewise.
25527         * config/rs6000/darwin-unwind.h: Likewise.
25528         * config/rs6000/darwin-vecsave.asm: Likewise.
25529         * config/rs6000/darwin-world.asm: Likewise.
25530         * config/rs6000/e500crtres32gpr.asm: Likewise.
25531         * config/rs6000/e500crtres64gpr.asm: Likewise.
25532         * config/rs6000/e500crtres64gprctr.asm: Likewise.
25533         * config/rs6000/e500crtrest32gpr.asm: Likewise.
25534         * config/rs6000/e500crtrest64gpr.asm: Likewise.
25535         * config/rs6000/e500crtresx32gpr.asm: Likewise.
25536         * config/rs6000/e500crtresx64gpr.asm: Likewise.
25537         * config/rs6000/e500crtsav32gpr.asm: Likewise.
25538         * config/rs6000/e500crtsav64gpr.asm: Likewise.
25539         * config/rs6000/e500crtsav64gprctr.asm: Likewise.
25540         * config/rs6000/e500crtsavg32gpr.asm: Likewise.
25541         * config/rs6000/e500crtsavg64gpr.asm: Likewise.
25542         * config/rs6000/e500crtsavg64gprctr.asm: Likewise.
25543         * config/rs6000/eabi-ci.asm: Likewise.
25544         * config/rs6000/eabi-cn.asm: Likewise.
25545         * config/rs6000/eabi.asm: Likewise.
25546         * config/rs6000/linux-unwind.h: Likewise.
25547         * config/rs6000/linux64.h: Likewise.
25548         * config/rs6000/paired.h: Likewise.
25549         * config/rs6000/paired.md: Likewise.
25550         * config/rs6000/ppc64-fp.c: Likewise.
25551         * config/rs6000/ppu_intrinsics.h: Likewise.
25552         * config/rs6000/rs6000.h: Likewise.
25553         * config/rs6000/si2vmx.h: Likewise.
25554         * config/rs6000/sol-ci.asm: Likewise.
25555         * config/rs6000/sol-cn.asm: Likewise.
25556         * config/rs6000/spe.h: Likewise.
25557         * config/rs6000/spu2vmx.h: Likewise.
25558         * config/rs6000/sysv4.h: Likewise.
25559         * config/rs6000/tramp.asm: Likewise.
25560         * config/rs6000/vec_types.h: Likewise.
25561         * config/s390/linux-unwind.h: Likewise.
25562         * config/s390/tpf-unwind.h: Likewise.
25563         * config/score/crti.asm: Likewise.
25564         * config/score/crtn.asm: Likewise.
25565         * config/sh/crt1.asm: Likewise.
25566         * config/sh/crti.asm: Likewise.
25567         * config/sh/crtn.asm: Likewise.
25568         * config/sh/divtab-sh4-300.c: Likewise.
25569         * config/sh/divtab-sh4.c: Likewise.
25570         * config/sh/divtab.c: Likewise.
25571         * config/sh/lib1funcs-4-300.asm: Likewise.
25572         * config/sh/lib1funcs-Os-4-200.asm: Likewise.
25573         * config/sh/lib1funcs.asm: Likewise.
25574         * config/sh/lib1funcs.h: Likewise.
25575         * config/sh/linux-atomic.asm: Likewise.
25576         * config/sh/linux-unwind.h: Likewise.
25577         * config/sh/shmedia.h: Likewise.
25578         * config/sh/sshmedia.h: Likewise.
25579         * config/sh/ushmedia.h: Likewise.
25580         * config/sparc/crtfastmath.c: Likewise.
25581         * config/sparc/linux-unwind.h: Likewise.
25582         * config/sparc/sol2-c1.asm: Likewise.
25583         * config/sparc/sol2-ci.asm: Likewise.
25584         * config/sparc/sol2-cn.asm: Likewise.
25585         * config/spu/divmodti4.c: Likewise.
25586         * config/spu/divv2df3.c: Likewise.
25587         * config/spu/float_disf.c: Likewise.
25588         * config/spu/float_unsdidf.c: Likewise.
25589         * config/spu/float_unsdisf.c: Likewise.
25590         * config/spu/float_unssidf.c: Likewise.
25591         * config/spu/mfc_multi_tag_release.c: Likewise.
25592         * config/spu/mfc_multi_tag_reserve.c: Likewise.
25593         * config/spu/mfc_tag_release.c: Likewise.
25594         * config/spu/mfc_tag_reserve.c: Likewise.
25595         * config/spu/mfc_tag_table.c: Likewise.
25596         * config/spu/multi3.c: Likewise.
25597         * config/spu/spu_internals.h: Likewise.
25598         * config/spu/spu_intrinsics.h: Likewise.
25599         * config/spu/spu_mfcio.h: Likewise.
25600         * config/spu/vec_types.h: Likewise.
25601         * config/spu/vmx2spu.h: Likewise.
25602         * config/stormy16/stormy16-lib2.c: Likewise.
25603         * config/svr4.h: Likewise.
25604         * config/sync.c: Likewise.
25605         * config/v850/lib1funcs.asm: Likewise.
25606         * config/vxlib-tls.c: Likewise.
25607         * config/vxlib.c: Likewise.
25608         * config/vxworks-dummy.h: Likewise.
25609         * config/xtensa/crti.asm: Likewise.
25610         * config/xtensa/crtn.asm: Likewise.
25611         * config/xtensa/ieee754-df.S: Likewise.
25612         * config/xtensa/ieee754-sf.S: Likewise.
25613         * config/xtensa/lib1funcs.asm: Likewise.
25614         * config/xtensa/lib2funcs.S: Likewise.
25615         * config/xtensa/linux-unwind.h: Likewise.
25616         * config/xtensa/unwind-dw2-xtensa.c: Likewise.
25617         * config/xtensa/unwind-dw2-xtensa.h: Likewise.
25618         * coretypes.h: Likewise.
25619         * crtstuff.c: Likewise.
25620         * defaults.h: Likewise.
25621         * dwarf2.h: Likewise.
25622         * emutls.c: Likewise.
25623         * gbl-ctors.h: Likewise.
25624         * gcov-io.h: Likewise.
25625         * ginclude/float.h: Likewise.
25626         * ginclude/iso646.h: Likewise.
25627         * ginclude/stdarg.h: Likewise.
25628         * ginclude/stdbool.h: Likewise.
25629         * ginclude/stddef.h: Likewise.
25630         * ginclude/stdfix.h: Likewise.
25631         * ginclude/stdint-gcc.h: Likewise.
25632         * ginclude/tgmath.h: Likewise.
25633         * gthr-aix.h: Likewise.
25634         * gthr-dce.h: Likewise.
25635         * gthr-gnat.c: Likewise.
25636         * gthr-gnat.h: Likewise.
25637         * gthr-lynx.h: Likewise.
25638         * gthr-mipssde.h: Likewise.
25639         * gthr-nks.h: Likewise.
25640         * gthr-posix.c: Likewise.
25641         * gthr-posix.h: Likewise.
25642         * gthr-posix95.h: Likewise.
25643         * gthr-rtems.h: Likewise.
25644         * gthr-single.h: Likewise.
25645         * gthr-solaris.h: Likewise.
25646         * gthr-tpf.h: Likewise.
25647         * gthr-vxworks.h: Likewise.
25648         * gthr-win32.h: Likewise.
25649         * gthr.h: Likewise.
25650         * libgcc2.c: Likewise.
25651         * libgcc2.h: Likewise.
25652         * libgcov.c: Likewise.
25653         * tsystem.h: Likewise.
25654         * typeclass.h: Likewise.
25655         * unwind-c.c: Likewise.
25656         * unwind-compat.h: Likewise.
25657         * unwind-dw2-fde-compat.c: Likewise.
25658         * unwind-dw2-fde-darwin.c: Likewise.
25659         * unwind-dw2-fde-glibc.c: Likewise.
25660         * unwind-dw2-fde.c: Likewise.
25661         * unwind-dw2-fde.h: Likewise.
25662         * unwind-dw2.c: Likewise.
25663         * unwind-dw2.h: Likewise.
25664         * unwind-generic.h: Likewise.
25665         * unwind-pe.h: Likewise.
25666         * unwind-sjlj.c: Likewise.
25667         * unwind.inc: Likewise.
25668         * config/arm/neon-gen.ml: Change generated copyright header to
25669         refer to version 3 of the GNU General Public License with
25670         version 3.1 of the GCC Runtime Library Exception and to point
25671         readers at the COPYING3 and COPYING3.RUNTIME files and the
25672         FSF's license web page.
25673         * config/arm/arm_neon.h: Regenerate.
25674
25675 2009-04-09  Jakub Jelinek  <jakub@redhat.com>
25676
25677         * config/cris/cris.md: Change copyright header to refer to version
25678         3 of the GNU General Public License.
25679         * doc/install.texi2html: Change copyright header to refer to version
25680         3 of the GNU General Public License and to point readers at the
25681         COPYING3 file and the FSF's license web page.
25682         * config/vax/linux.h: Likewise.
25683
25684 2009-04-09  Paolo Bonzini  <bonzini@gnu.org>
25685
25686         * config/i386/i386.md (cmpcc): New.
25687         * config/i386/sync.md (sync_compare_and_swap*): Set FLAGS_REG.
25688         (sync_compare_and_swap_cc*): Delete.
25689
25690         * config/s390/s390.c (s390_compare_emitted): Remove.
25691         (s390_emit_compare): Handle MODE_CC s390_compare_op0 like
25692         s390_compare_emitted used to be handled.  Assert that modes match.
25693         (s390_emit_compare_and_swap): Use s390_emit_compare, do not
25694         refer to sync_compare_and_swap_ccsi.
25695         * config/s390/s390.h (s390_compare_emitted): Remove.
25696         * config/s390/s390.md (seq): Look for MODE_CC s390_compare_op0
25697         instead of s390_compare_emitted.
25698         (stack_protect_test, sync_compare_and_swap_cc): Set s390_compare_op0
25699         instead of s390_compare_emitted.
25700         * config/s390/s390.md (cmpcc): New.
25701         (sync_compare_and_swapqi, sync_compare_and_swaphi): Clobber
25702         CC_REGNUM, do not pretend it's set.
25703         (sync_compare_and_swap_cc*): Delete.
25704         * config/s390/predicates.md (cc_reg_operand): New.
25705
25706         * expr.c (sync_compare_and_swap_cc): Delete.
25707         * optabs.h (sync_compare_and_swap_cc): Delete.
25708         * optabs.c (prepare_cmp_insn): Ignore which specific CCmode
25709         is being used with can_compare_p.
25710         (emit_cmp_and_jump_insn_1): Likewise when looking in the optab.
25711         (find_cc_set): New.
25712         (expand_bool_compare_and_swap): Do not use sync_compare_and_swap_cc,
25713         look for a MODE_CC set instead.  Use emit_store_flag.
25714         (expand_compare_and_swap_loop): Likewise, with some additional
25715         complication to avoid a force_reg when useless.  Use
25716         emit_cmp_and_jump_insns.
25717         * genopinit.c (optabs): Delete sync_compare_and_swap_cc.
25718         * doc/md.texi (sync_compare_and_swap_cc): Merge with
25719         sync_compare_and_swap documentation.
25720
25721 2009-04-09  Jan Hubicka  <jh@suse.cz>
25722
25723         * except.c (find_prev_try): Break out from ....
25724         (duplicate_eh_regions): ... here; properly update prev_try pointers
25725         when duplication part of tree.
25726         (dump_eh_tree): Improve dumping.
25727         (verify_eh_region): New.
25728         (verify_eh_tree): Use it.
25729
25730 2009-04-06  Richard Guenther  <rguenther@suse.de>
25731
25732         * c-gimplify.c (c_gimplify_expr): Fix the invalid GENERIC
25733         &ARRAY addresses by adjusting their types and prepending
25734         a conversion.
25735         * tree-cfg.c (verify_gimple_assign_single): Verify that
25736         addresses are correct.
25737
25738 2009-04-09  Richard Guenther  <rguenther@suse.de>
25739
25740         * tree-ssa-ccp.c (maybe_fold_stmt_addition): Move non-constant
25741         indices into an array reference if possible.
25742         * tree-ssa-forwprop.c (tree_ssa_forward_propagate_single_use_vars):
25743         Fold POINTER_PLUS_EXPR statements with invariant address.
25744
25745 2009-04-09  Alan Modra  <amodra@bigpond.net.au>
25746
25747         PR target/39634
25748         * config.gcc (powerpc64-*-linux*): Always build biarch.
25749
25750 2009-04-09  Joseph Myers  <joseph@codesourcery.com>
25751
25752         PR c/39613
25753         * c-typeck.c (do_case): If case label is not an INTEGER_CST, fold
25754         it and pedwarn if this results in an INTEGER_CST.
25755
25756 2009-04-08  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
25757
25758         * doc/install.texi: Update minimum GMP version.  Remove obsolete
25759         text in MPFR section.
25760
25761 2009-04-08  Jakub Jelinek  <jakub@redhat.com>
25762
25763         * dwarf2out.c (class_scope_p): New static inline.
25764         (class_or_namespace_scope_p): Use it.
25765         (gen_variable_die): Use DW_TAG_member tag for static data member
25766         declarations instead of DW_TAG_variable.
25767
25768         PR middle-end/39573
25769         * omp-low.c (expand_omp_taskreg): Finalize taskreg static local_decls
25770         variables.
25771
25772 2009-04-08  Richard Guenther  <rguenther@suse.de>
25773
25774         * tree-ssa-sccvn.c (valueize_refs): Do not continue to
25775         valueize random data.
25776
25777 2009-04-08  David Edelsohn  <edelsohn@gnu.org>
25778
25779         * config.gcc (aix tm_file):  Add aix-stdint.h.
25780         (aix tm clause use_gcc_stdint):  Set to wrap.
25781         * config/rs6000/aix-stdint.h:  New file.
25782
25783 2009-04-08  Richard Guenther  <rguenther@suse.de>
25784
25785         PR middle-end/36291
25786         * tree-dfa.c (add_referenced_var): Do not recurse into
25787         global initializers.
25788         * tree-ssa-ccp.c (get_symbol_constant_value): Add newly
25789         exposed variables.
25790         (fold_const_aggregate_ref): Likewise.
25791
25792 2009-04-08  Paolo Bonzini  <bonzini@gnu.org>
25793
25794         * recog.c (ordered_comparison_operator): New.
25795         * gensupport.c (std_preds): Add it.
25796         * doc/md.texi (Machine-Independent Predicates): Document it.
25797
25798 2009-04-08  Jan Hubicka  <jh@suse.cz>
25799
25800         * tree-eh.c (cleanup_eh): When not optimizing, do not try EH merging.
25801         * function.h (rtl_eh): Remove exception_handler_label_map.
25802         * except.c (ehl_hash, ehl_eq, add_ehl_entry,
25803         remove_exception_handler_label, for_each_eh_label_1): Remove.
25804         (rtl_remove_unreachable_regions): Remove.
25805         (convert_from_eh_region_ranges): Do not remove unreachable regions.
25806         (find_exception_handler_labels): Don't build the hashtable.
25807         (maybe_remove_eh_handler): Remove.
25808         (for_each_eh_label): Rewrite to walk the tree.
25809         (rest_of_handle_eh): Do not cleanup cfg prior EH construction.
25810         * except.h (maybe_remove_eh_handler): Remove.
25811         * passes.c (init_optimization_passes): Schedule second EH cleanup
25812         before out-of-ssa.
25813         * cfgrtl.c (rtl_delete_block, rtl_merge_blocks,
25814         cfg_layout_merge_blocks): Do not call maybe_remove_eh_handler.
25815
25816 2009-04-08  Paolo Bonzini  <bonzini@gnu.org>
25817
25818         * genoutput.c (validate_optab_operands): New.
25819         (gen_insn, gen_expand): Call it.
25820
25821         * genflags.c (gen_insn): Detect misused iterators.
25822         (main): Pass line_no to gen_insn, exit with status 1 on error.
25823
25824         * genextract.c (line_no): Make global.
25825         (VEC_safe_set_locstr): Change assertion to error message.
25826         (main): Exit with status 1 on error.
25827
25828 2009-04-08  Joseph Myers  <joseph@codesourcery.com>
25829
25830         PR c/39614
25831         PR c/39673
25832         * c-common.h (C_MAYBE_CONST_EXPR_PRE, C_MAYBE_CONST_EXPR_EXPR,
25833         C_MAYBE_CONST_EXPR_INT_OPERANDS, C_MAYBE_CONST_EXPR_NON_CONST,
25834         EXPR_INT_CONST_OPERANDS): Remove duplicate definitions.
25835         * c-convert.c (convert): Do not call fold on results of conversion
25836         functions when the result is a C_MAYBE_CONST_EXPR.
25837         * c-parser.c (c_parser_postfix_expression): Do not fold condition
25838         of __builtin_choose_expr.
25839         * c-typeck.c (remove_c_maybe_const_expr): New.
25840         (build_unary_op, build_conditional_expr, build_compound_expr,
25841         build_binary_op, c_objc_common_truthvalue_conversion): Call
25842         remove_c_maybe_const_expr on any input C_MAYBE_CONST_EXPR with
25843         integer operands.
25844
25845 2009-04-08  Bingfeng Mei  <bmei@broadcom.com>
25846
25847         * fold-const.c (const_binop): Combine two VECTOR_CST under operation
25848         CODE to produce a new one. Add a prototype to use fold_convert_const
25849
25850 2009-04-08  Danny Smith  <dannysmith@users.sourceforge.net>
25851
25852         PR bootstrap/39660
25853         * config/i386/host-mingw32.c (mingw32_gt_pch_use_address): Don't
25854         mix declarations and code.
25855
25856 2009-04-08  Ben Elliston  <bje@au.ibm.com>
25857
25858         * gcc.c: Replace `CC' with `GCC' throughout.
25859
25860 2009-04-07  H.J. Lu  <hongjiu.lu@intel.com>
25861
25862         * doc/invoke.texi: Document Atom support.
25863
25864 2009-04-07  Jason Merrill  <jason@redhat.com>
25865
25866         PR c++/25185
25867         * c-common.h, c-common.c: Add flag_pretty_templates.
25868         * c-opts.c (c_common_handle_option): Set it.
25869         * c.opt: Add -fno-pretty-templates.
25870         * doc/invoke.texi (C++ Dialect Options): Likewise.
25871
25872 2009-04-07  Uros Bizjak  <ubizjak@gmail.com>
25873
25874         * config/ia64/ia64.c (ia64_builtins): Add IA64_BUILTIN_HUGE_VALQ.
25875         (ia64_init_builtins): Handle IA64_BUILTIN_HUGE_VALQ.
25876         (ia64_expand_builtin): Likewise.
25877
25878 2009-04-07  Martin Jambor  <mjambor@suse.cz>
25879
25880         * tree-ssa-alias.c (refs_may_alias_p_1): Check for
25881         is_gimple_min_invariant rather than CONSTANT_CLASS_P so that invariant
25882         ADDR_EXPRS are include too.
25883
25884 2009-04-07  Richard Guenther  <rguenther@suse.de>
25885
25886         * tree-ssa-alias.c (ref_maybe_used_by_call_p_1): Non-aliased
25887         decls are only used if passes as parameters or if they are
25888         local statics and the call is not to a builtin.
25889         (call_may_clobber_ref_p_1): Likewise.
25890
25891 2009-04-07  Paolo Bonzini  <bonzini@gnu.org>
25892
25893         * expr.c (do_store_flag): Remove last argument.  Simplify code
25894         to avoid duplication of tests already done by can_compare_p.
25895         (expand_expr_real_1): Adjust caller.
25896
25897 2009-04-07  Paolo Bonzini  <bonzini@gnu.org>
25898
25899         * optabs.c (can_compare_p): Test the predicate of a
25900         cbranch and cstore pattern.
25901
25902 2009-04-07  Paolo Bonzini  <bonzini@gnu.org>
25903
25904         * expr.c (convert_move): Use emit_store_flag instead of
25905         "emulating" it.
25906
25907 2009-04-07  Paolo Bonzini  <bonzini@gnu.org>
25908
25909         * config/i386/i386.c (ix86_compare_emitted): Remove.
25910         (ix86_expand_compare, ix86_expand_branch): Handle MODE_CC
25911         ix86_compare_op0 like ix86_compare_emitted used to be handled.
25912         * config/i386/i386.h (ix86_compare_emitted): Remove.
25913         * config/i386/i386.md (stack_protect_test): Set ix86_compare_op0
25914         instead of ix86_compare_emitted.
25915         * config/i386/sync.md (sync_compare_and_swap_cc): Likewise.
25916
25917 2009-04-07  Andrew Stubbs  <ams@codesourcery.com>
25918
25919         * config.gcc (sh-*-*): Add sysroot-suffix.h to tm_file.
25920         Add t-sysroot-suffix to tmake_file.
25921         * config/print-sysroot-suffix.sh: New file.
25922         * config/t-sysroot-suffix: New file.
25923
25924 2009-04-07  Ben Elliston  <bje@au.ibm.com>
25925
25926         * libgcc2.c (INFINITY): Use __builtin_huge_val, not __builtin_inf,
25927         as the latter produces a warning when the target does not support
25928         infinity.
25929
25930 2009-04-07  Ben Elliston  <bje@au.ibm.com>
25931
25932         * dfp.c: Replace type punning assignments with memcpy throughout.
25933         * Makefile.in (dfp.o-warn): Remove.
25934
25935 2009-04-07  Alan Modra  <amodra@bigpond.net.au>
25936
25937         PR target/39634
25938         * config.gcc: Merge powerpc-*-linux* and powerpc64-*-linux*.
25939         Include soft-fp/t-softfp after rs6000/t-linux64.
25940
25941 2009-04-06  Eric Botcazou  <ebotcazou@adacore.com>
25942
25943         * stor-layout.c (set_sizetype): Use the full precision of their
25944         machine mode for bitsize types.
25945
25946 2009-04-06  H.J. Lu  <hongjiu.lu@intel.com>
25947
25948         * config/i386/i386.md: Revert 2 accidental checkins.
25949
25950 2009-04-06  Joey Ye  <joey.ye@intel.com>
25951             Xuepeng Guo  <xuepeng.guo@intel.com>
25952             H.J. Lu  <hongjiu.lu@intel.com>
25953
25954         Atom pipeline model, tuning and insn selection.
25955         * config.gcc (atom): Add atom config options and target.
25956
25957         * config/i386/atom.md: New.
25958
25959         * config/i386/i386.c (atom_cost): New cost.
25960         (m_ATOM): New macro flag.
25961         (initial_ix86_tune_features): Set m_ATOM.
25962         (x86_accumulate_outgoing_args): Likewise.
25963         (x86_arch_always_fancy_math_387): Likewise.
25964         (processor_target): Add Atom cost.
25965         (cpu_names): Add Atom cpu name.
25966         (override_options): Set Atom ISA.
25967         (ix86_issue_rate): New case PROCESSOR_ATOM.
25968         (ix86_adjust_cost): Likewise.
25969
25970         * config/i386/i386.h (TARGET_ATOM): New target macro.
25971         (ix86_tune_indices): Add X86_TUNE_OPT_AGU.
25972         (TARGET_OPT_AGU): New target option.
25973         (target_cpu_default): Add TARGET_CPU_DEFAULT_atom.
25974         (processor_type): Add PROCESSOR_ATOM.
25975
25976         * config/i386/i386.md (cpu): Add new value "atom".
25977         (use_carry, movu): New attr.
25978         (atom.md): Include atom.md.
25979         (adddi3_carry_rex64): Set attr "use_carry".
25980         (addqi3_carry): Likewise.
25981         (addhi3_carry): Likewise.
25982         (addsi3_carry): Likewise.
25983         (*addsi3_carry_zext): Likewise.
25984         (subdi3_carry_rex64): Likewise.
25985         (subqi3_carry): Likewise.
25986         (subhi3_carry): Likewise.
25987         (subsi3_carry): Likewise.
25988         (x86_movdicc_0_m1_rex64): Likewise.
25989         (*x86_movdicc_0_m1_se): Likewise.
25990         (x86_movsicc_0_m1): Likewise.
25991         (*x86_movsicc_0_m1_se): Likewise.
25992         (*adddi_1_rex64): Emit add insn as much as possible.
25993         (*addsi_1): Likewise.
25994         (return_internal): Set atom_unit.
25995         (return_internal_long): Likewise.
25996         (return_pop_internal): Likewise.
25997         (*rcpsf2_sse): Set atom_sse_attr attr.
25998         (*qrt<mode>2_sse): Likewise.
25999         (*prefetch_sse): Likewise.
26000
26001         * config/i386/i386-c.c (ix86_target_macros_internal): New case
26002         PROCESSOR_ATOM.
26003         (ix86_target_macros_internal): Likewise.
26004
26005         * config/i386/sse.md (cpu): Set attr "atom_sse_attr".
26006         (*prefetch_sse_rex): Likewise.
26007         (sse_rcpv4sf2): Likewise.
26008         (sse_vmrcpv4sf2): Likewise.
26009         (sse_sqrtv4sf2): Likewise.
26010         (<sse>_vmsqrt<mode>2): Likewise.
26011         (sse_ldmxcsr): Likewise.
26012         (sse_stmxcsr): Likewise.
26013         (*sse_sfence): Likewise.
26014         (sse2_clflush): Likewise.
26015         (*sse2_mfence): Likewise.
26016         (*sse2_lfence): Likewise.
26017         (avx_movup<avxmodesuffixf2c><avxmodesuffix>): Set attr "movu".
26018         (<sse>_movup<ssemodesuffixf2c>): Likewise.
26019         (avx_movdqu<avxmodesuffix>): Likewise.
26020         (avx_lddqu<avxmodesuffix>): Likewise.
26021         (sse2_movntv2di): Change attr "type" to "ssemov".
26022         (sse2_movntsi): Likewise.
26023         (rsqrtv8sf2): Change attr "type" to "sseadd".
26024         (sse3_addsubv2df3): Set attr "atom_unit".
26025         (sse3_h<plusminus_insn>v4sf3): Likewise.
26026         (*sse2_pmaddwd): Likewise.
26027         (*vec_extractv2di_1_rex64): Likewise.
26028         (*vec_extractv2di_1_avx): Likewise.
26029         (sse2_psadbw): Likewise.
26030         (ssse3_phaddwv8hi3): Likewise.
26031         (ssse3_phaddwv4hi3): Likewise.
26032         (ssse3_phadddv4si3): Likewise.
26033         (ssse3_phadddv2si3): Likewise.
26034         (ssse3_phaddswv8hi3): Likewise.
26035         (ssse3_phaddswv4hi3): Likewise.
26036         (ssse3_phsubwv8hi3): Likewise.
26037         (ssse3_phsubwv4hi3): Likewise.
26038         (ssse3_phsubdv4si3): Likewise.
26039         (ssse3_phsubdv2si3): Likewise.
26040         (ssse3_phsubswv8hi3): Likewise.
26041         (ssse3_phsubswv4hi3): Likewise.
26042         (ssse3_pmaddubsw128): Likewise.
26043         (sse3_pmaddubsw: Likewise.
26044         (ssse3_palignrti): Likewise.
26045         (ssse3_palignrdi): Likewise.
26046
26047 2009-04-06  Gerald Pfeifer  <gerald@pfeifer.com>
26048
26049         * doc/install.texi (Specific): Fix two cross-references to MinGW.
26050
26051 2009-04-06  Richard Guenther  <rguenther@suse.de>
26052
26053         PR tree-optimization/28868
26054         * tree-ssa-pre.c (inserted_phi_names): New bitmap to keep track
26055         of which PHI results we inserted.
26056         (insert_into_preds_of_block): Record inserted PHIs.
26057         (eliminate): Eliminate redundant PHI nodes.
26058         (init_pre): Init inserted_phi_names.
26059
26060 2009-04-06  Richard Guenther  <rguenther@suse.de>
26061
26062         PR tree-optimization/39643
26063         * tree-ssa-ccp.c (ccp_fold): Fold REALPART_EXPRs and
26064         IMAGPART_EXPRs of complex constants.
26065         (execute_fold_all_builtins): If we folded a call queue
26066         TODO_update_address_taken.
26067
26068 2009-04-06  Jan Hubicka  <jh@suse.cz>
26069
26070         PR middle-end/39659
26071         * except.c (remove_unreachable_regions): Propagate may_contain_throw
26072         flag.
26073
26074 2009-04-06  Andrew Stubbs  <ams@codesourcery.com>
26075
26076         * config/sh/lib1funcs.asm (ic_invalidate): Move ICBI out of the
26077         delay slot.
26078         (ic_invalidate_array): Likewise.
26079
26080 2009-04-06  Hariharan Sandanagobalane  <hariharan@picochip.com>
26081
26082         * calls.c (emit_library_call_value_1): Fix a problem with parameter
26083         alignment for library calls.
26084
26085 2009-04-06  Danny Smith  <dannysmith@users.sourceforge.net>
26086
26087         * config.gcc (mingw32 tm_file):  Add mingw-stdint.h.
26088         (mingw32 tm clause use_gcc_stdint):  Set to wrap.
26089         * config/i386/mingw-stdint.h:  New file.
26090
26091 2009-04-05  Richard Guenther  <rguenther@suse.de>
26092
26093         PR tree-optimization/39648
26094         * tree-ssa-sccvn.c (vn_reference_fold_indirect): Work around
26095         our &A vs. &A[0] IL deficiencies.
26096
26097 2009-04-04  Jan Hubicka  <jh@suse.cz>
26098
26099         * except.c (sjlj_find_directly_reachable_regions): Be ready for
26100         removed toplevel regions.
26101         (sjlj_mark_call_sites): Likewise.
26102
26103 2009-04-04  Dave Korn  <dave.korn.cygwin@gmail.com>
26104
26105         * config.gcc (cygwin tm_file):  Add cygwin-stdint.h.
26106         (cygwin tm clause use_gcc_stdint):  Set to wrap.
26107         * config/i386/cygwin-stdint.h:  New file.
26108
26109 2009-04-04  Richard Guenther  <rguenther@suse.de>
26110
26111         * Makefile.in (tree-ssa-copy.o): Add $(CFGLOOP_H) dependency.
26112         * tree-ssa-copy.c (init_copy_prop): Do not propagate through
26113         single-argument PHIs if we are in loop-closed SSA form.
26114         * tree-vect-loop-manip.c (slpeel_add_loop_guard): Pass extra guards
26115         for the pre-condition.
26116         (slpeel_tree_peel_loop_to_edge): Likewise.
26117         (vect_build_loop_niters): Take an optional sequence to append stmts.
26118         (vect_generate_tmps_on_preheader): Likewise.
26119         (vect_do_peeling_for_loop_bound): Take extra guards for the
26120         pre-condition.
26121         (vect_do_peeling_for_alignment): Adjust.  Unconditionally apply
26122         the cost model check.
26123         (vect_loop_versioning): Take stmt and stmt list to put pre-condition
26124         guards if we are going to peel.  Do not apply versioning in that case.
26125         * tree-vectorizer.h (vect_loop_versioning): Adjust declaration.
26126         (vect_do_peeling_for_loop_bound): Likewise.
26127         * tree-vect-loop.c (vect_transform_loop): If we are peeling for
26128         loop bound only record extra pre-conditions, do not apply loop
26129         versioning.
26130
26131 2009-04-04  Richard Guenther  <rguenther@suse.de>
26132
26133         * tree-ssa-operands.c (pop_stmt_changes): Remove automatic
26134         renaming code.
26135
26136 2009-04-04  Jan Hubicka  <jh@suse.cz>
26137
26138         * tree-ssa-uncprop.c (associate_equivalences_with_edges): Use
26139         last_basic_block for size of bb->index indexed array.
26140         * bt-load.c (compute_defs_uses_and_gen, compute_kill,
26141         compute_out, link_btr_uses, build_btr_def_use_webs,
26142         build_btr_def_use_webs, migrate_btr_defs): Likewise.
26143
26144 2009-04-04  Jan Hubicka  <jh@suse.cz>
26145
26146         * except.c (remove_eh_handler_and_replace): Break out from ...
26147         (remove_eh_handler): ... here.
26148         (bring_to_root): New function.
26149         (remove_unreachable_regions): Collect MUST_NOT_THROW, unify runtime
26150         handled ones, bring others to root of tree.
26151
26152 2009-04-04  Jan Hubicka  <jh@suse.cz>
26153
26154         * tree-eh.c (tree_empty_eh_handler_p): Pattern match more curefully.
26155         (all_phis_safe_to_merge): New function.
26156         (update_info): New structure.
26157         (make_eh_edge_and_update_phi, update_eh_edges): New functions.
26158         (cleanup_empty_eh): Update SSA if possible.
26159
26160 2009-04-04  Richard Guenther  <rguenther@suse.de>
26161
26162         * tree-ssa.c (verify_ssa): With -O0 we do not need VOPs.
26163         * tree-ssa-operands.c (append_vdef): Do not append VOPs at -O0.
26164         (append_vuse): Likewise.
26165
26166 2009-04-04  Jakub Jelinek  <jakub@redhat.com>
26167
26168         * unwind-dw2.h (_Unwind_FrameState): Add REG_UNDEFINED enum value.
26169         * unwind-dw2.c (execute_cfa_program): Set how to REG_UNDEFINED
26170         instead of REG_UNSAVED for DW_CFA_undefined.
26171         (uw_update_context_1): Handle REG_UNDEFINED the same as REG_UNSAVED.
26172         (uw_update_context): If RA column is REG_UNDEFINED, mark it as
26173         outermost frame.
26174
26175 2009-04-04  Richard Earnshaw  <rearnsha@arm.com>
26176
26177         PR target/39501
26178         * arm.md (movsfcc): Disable if not TARGET_HARD_FLOAT.
26179
26180 2009-04-04  Richard Guenther  <rguenther@suse.de>
26181
26182         PR tree-optimization/8781
26183         PR tree-optimization/37892
26184         * tree-ssa-sccvn.h (vn_reference_fold_indirect): Declare.
26185         * tree-ssa-sccvn.c (vn_reference_fold_indirect): New function.
26186         (valueize_refs): Call it for *& valueizations.
26187         (shared_reference_ops_from_ref): Rename to ...
26188         (valueize_shared_reference_ops_from_ref): ... this and valueize.
26189         (shared_reference_ops_from_call): Rename to ...
26190         (valueize_shared_reference_ops_from_call): ... this and valueize.
26191         (vn_reference_lookup): Update.
26192         (visit_reference_op_call): Likewise.
26193         * tree-ssa-pre.c (phi_translate_1): Fold *&.
26194         (eliminate): Value-replace the call address in call statements.
26195
26196 2009-04-04  Richard Guenther  <rguenther@suse.de>
26197
26198         PR tree-optimization/39636
26199         * tree-ssa-forwprop.c
26200         (forward_propagate_addr_into_variable_array_index): Check for
26201         GIMPLE_ASSIGN before accessing the rhs code.
26202
26203 2009-04-03  Jason Merrill  <jason@redhat.com>
26204
26205         * stor-layout.c (set_sizetype): Set TYPE_CANONICAL.
26206
26207 2009-04-03  Steve Ellcey  <sje@cup.hp.com>
26208
26209         * config/ia64/ia64.md (extendsfdf2, extendsfxf2, extenddfxf2,
26210         truncdfsf2, truncxfsf2, truncxfdf2, floatdixf2, fix_truncsfdi2,
26211         fix_truncdfdi2, fix_truncxfdi2, fix_truncxfdi2_alts, floatunsdisf2,
26212         floatunsdidf2, floatunsdixf2, fixuns_truncsfdi2, fixuns_truncdfdi2,
26213         fixuns_truncxfdi2, fixuns_truncxfdi2_alts, divsi3_internal,
26214         smuldi3_highpart, umuldi3_highpart, ctzdi2, *getf_exp_xf,
26215         divdi3_internal_lat, divdi3_internal_thr, mulditi3, *mulditi3_internal,
26216         umulditi3, *umulditi3_internal, addsf3, mulsf3, abssf2, negsf2,
26217         *nabssf2, sminsf3, smaxsf3, *maddsf4, *msubsf4, *nmulsf3, *nmaddsf4,
26218         *nmaddsf4_alts, divsf3, *sqrt_approx, sqrtsf2, sqrtsf2_internal_thr,
26219         adddf3, *adddf3_trunc, muldf3, *muldf3_trunc, absdf2, negdf2, *nabsdf2,
26220         smindf3, smaxdf3, *madddf4, *madddf4_trunc, *msubdf4, *msubdf4_trunc,
26221         *nmuldf3, *nmuldf3_trunc, *nmadddf4, *nmadddf4_alts, *nmadddf4_truncsf,
26222         *nmadddf4_truncsf_alts, divdf3, sqrtdf2, sqrtdf2_internal_thr, divxf3,
26223         sqrtxf2, sqrtxf2_internal_thr, *recip_approx):
26224         Use fr_reg_or_fp01_operand instead of fr_register_operand
26225
26226         * config/ia64/div.md (extend<mode>rf2, truncrf<mode>2,
26227         recip_approx_rf, divsf3_internal_thr, divsf3_internal_lat,
26228         divdf3_internal_thr, divdf3_internal_lat divxf3_internal): Ditto.
26229
26230 2009-04-03  Vladimir Makarov  <vmakarov@redhat.com>
26231
26232         PR rtl-optimization/39607
26233         PR rtl-optimization/39631
26234
26235         Revert:
26236
26237         2009-03-30  Vladimir Makarov  <vmakarov@redhat.com>
26238         * reload.c (push_reload, find_dummy_reload): Use df_get_live_out
26239         instead of DF_LR_OUT.
26240         * ira-lives.c (process_bb_node_lives): Ditto.
26241         * ira-color.c (ira_loop_edge_freq): Use df_get_live_{out,in}
26242         instead of DF_LR_{OUT,IN}.
26243         * ira-emit.c (generate_edge_moves, add_ranges_and_copies): Ditto.
26244         * ira-build.c (create_bb_allocnos, create_loop_allocnos): Ditto.
26245
26246 2009-04-03  Steven Bosscher  <steven@gcc.gnu.org>
26247
26248         * omp-low.c (pass_expand_omp): Don't claim to provide PROP_gimple_lomp.
26249         (execute_lower_omp): Always run but take the short way out if -fopenmp
26250         is not given.
26251         (gate_lower_omp): Remove, forcing the pass manager to always run the
26252         pass and always set PROP_gimple_lomp.
26253         (pass_lower_omp): Remove gate function.
26254         * matrix-reorg.c (pass_ipa_matrix_reorg): Don't claim to provide
26255         PROP_trees.  Instead, require it.
26256         * ipa-cp.c (pass_ipa_cp): Likewise.
26257         * ipa-inline.c (pass_early_inline): Don't claim to provide PROP_cfg.
26258         (pass_ipa_early_inline, pass_inline_parameters, pass_ipa_inline): Idem.
26259         * tree-profile.c (pass_tree_profile): Don't claim to provide PROP_cfg
26260         and PROP_gimple_leh.
26261
26262 2009-04-03  Richard Guenther  <rguenther@suse.de>
26263
26264         PR middle-end/13146
26265         PR tree-optimization/23940
26266         PR tree-optimization/33237
26267         PR middle-end/33974
26268         PR middle-end/34093
26269         PR tree-optimization/36201
26270         PR tree-optimization/36230
26271         PR tree-optimization/38049
26272         PR tree-optimization/38207
26273         PR tree-optimization/38230
26274         PR tree-optimization/38301
26275         PR tree-optimization/38585
26276         PR middle-end/38895
26277         PR tree-optimization/38985
26278         PR tree-optimization/39299
26279         * tree-ssa-structalias.h: Remove.
26280         * tree-ssa-operands.h (NULL_USE_OPERAND_P): Make of type use_operand_p.
26281         (NULL_DEF_OPERAND_P): Make of type def_operand_p.
26282         (struct vuse_element_d): Remove.
26283         (struct vuse_vec_d): Likewise.
26284         (VUSE_VECT_NUM_ELEM, VUSE_VECT_ELEMENT_NC, VUSE_ELEMENT_PTR_NC,
26285         VUSE_ELEMENT_VAR_NC, VUSE_VECT_ELEMENT, VUSE_ELEMENT_PTR,
26286         SET_VUSE_VECT_ELEMENT, SET_VUSE_ELEMENT_VAR, SET_VUSE_ELEMENT_PTR,
26287         VUSE_ELEMENT_VAR): Likewise.
26288         (struct voptype_d): Likewise.
26289         (NUM_VOP_FREE_BUCKETS): Likewise.
26290         (struct ssa_operands): Remove vop_free_buckets and mpt_table fields.
26291         (struct stmt_operands_d): Remove.
26292         (VUSE_OP_PTR, VUSE_OP, SET_VUSE_OP, VUSE_NUM, VUSE_VECT,
26293         VDEF_RESULT_PTR, VDEF_RESULT, VDEF_OP_PTR, VDEF_OP, SET_VDEF_OP,
26294         VDEF_NUM, VDEF_VECT): Likewise.
26295         (copy_virtual_operands): Remove.
26296         (operand_build_cmp): Likewise.
26297         (create_ssa_artificial_load_stmt): Likewise.
26298         (enum ssa_op_iter_type): Remove ssa_op_iter_vdef.
26299         (struct ssa_operand_iterator_d): Remove vuses, vdefs, mayusesm
26300         vuse_index and mayuse_index members.  Pack and move done and iter_type
26301         members to the front.
26302         (SSA_OP_VMAYUSE): Remove.
26303         (SSA_OP_VIRTUAL_USES): Adjust.
26304         (FOR_EACH_SSA_VDEF_OPERAND): Remove.
26305         (unlink_stmt_vdef): Declare.
26306         (add_to_addressable_set): Remove.
26307         * tree-vrp.c (stmt_interesting_for_vrp): Adjust.
26308         (vrp_visit_stmt): Likewise.
26309         * doc/tree-ssa.texi (Alias analysis): Update.
26310         * doc/invoke.texi (max-aliased-vops): Remove docs.
26311         (avg-aliased-vops): Likewise.
26312         * tree-into-ssa.c (syms_to_rename): Remove.
26313         (need_to_update_vops_p): Likewise.
26314         (need_to_initialize_update_ssa_p): Rename to ...
26315         (update_ssa_initialized_fn): ... this.  Track function we are
26316         initialized for.
26317         (symbol_marked_for_renaming): Simplify.
26318         (add_new_name_mapping): Do not set need_to_update_vops_p.
26319         (dump_currdefs): Use SYMS_TO_RENAME.
26320         (rewrite_update_stmt): Always walk all uses/defs.
26321         (dump_update_ssa): Adjust.
26322         (init_update_ssa): Take function argument.  Track what we are
26323         initialized for.
26324         (delete_update_ssa): Reset SYMS_TO_RENAME and update_ssa_initialized_fn.
26325         (create_new_def_for): Initialize for cfun, assert we are initialized
26326         for cfun.
26327         (mark_sym_for_renaming): Simplify.
26328         (mark_set_for_renaming): Do not initialize update-ssa.
26329         (need_ssa_update_p): Simplify.  Take function argument.
26330         (name_mappings_registered_p): Assert we ask for the correct function.
26331         (name_registered_for_update_p): Likewise.
26332         (ssa_names_to_replace): Likewise.
26333         (release_ssa_name_after_update_ssa): Likewise.
26334         (update_ssa): Likewise.  Use SYMS_TO_RENAME.
26335         (dump_decl_set): Do not print a newline.
26336         (debug_decl_set): Do it here.
26337         (dump_update_ssa): And here.
26338         * tree-ssa-loop-im.c (move_computations): Adjust.
26339         (movement_possibility): Likewise.
26340         (determine_max_movement): Likewise.
26341         (gather_mem_refs_stmt): Likewise.
26342         * tree-dump.c (dequeue_and_dump): Do not handle SYMBOL_MEMORY_TAG
26343         or NAME_MEMORY_TAG.
26344         * tree-complex.c (update_all_vops): Remove.
26345         (expand_complex_move): Adjust.
26346         * tree-ssa-loop-niter.c (chain_of_csts_start): Use NULL_TREE.
26347         Simplify test for memory referencing statement.  Exclude
26348         non-invariant ADDR_EXPRs.
26349         * tree-pretty-print.c (dump_generic_node): Do not handle memory tags.
26350         * tree-loop-distribution.c (generate_memset_zero): Adjust.
26351         (rdg_flag_uses): Likewise.
26352         * tree-tailcall.c (suitable_for_tail_opt_p): Remove memory-tag
26353         related code.
26354         (tree_optimize_tail_calls_1): Also split the
26355         edge from the entry block if we have degenerate PHI nodes in
26356         the first basic block.
26357         * tree.c (init_ttree): Remove memory-tag related code.
26358         (tree_code_size): Likewise.
26359         (tree_node_structure): Likewise.
26360         (build7_stat): Re-write to be build6_stat.
26361         * tree.h (MTAG_P, TREE_MEMORY_TAG_CHECK, TMR_TAG): Remove.
26362         (SSA_VAR_P): Adjust.
26363         (struct tree_memory_tag): Remove.
26364         (struct tree_memory_partition_tag): Likewise.
26365         (union tree_node): Adjust.
26366         (build7): Re-write to be build6.
26367         * tree-pass.h (pass_reset_cc_flags): Remove.
26368         (TODO_update_address_taken): New flag.
26369         (pass_simple_dse): Remove.
26370         * ipa-cp.c (ipcp_update_callgraph): Update SSA form.
26371         * params.h (MAX_ALIASED_VOPS): Remove.
26372         (AVG_ALIASED_VOPS): Likewise.
26373         * omp-low.c (expand_omp_taskreg): Update SSA form.
26374         * tree-ssa-dse.c (dse_optimize_stmt): Properly query if the rhs
26375         aliases the lhs in a copy stmt.
26376         * tree-ssa-dse.c (struct address_walk_data): Remove.
26377         (memory_ssa_name_same): Likewise.
26378         (memory_address_same): Likewise.
26379         (get_kill_of_stmt_lhs): Likewise.
26380         (dse_possible_dead_store_p): Simplify, use the oracle.  Handle
26381         unused stores.  Look through PHI nodes into post-dominated regions.
26382         (dse_optimize_stmt): Simplify.  Properly remove stores.
26383         (tree_ssa_dse): Compute dominators.
26384         (execute_simple_dse): Remove.
26385         (pass_simple_dse): Likewise.
26386         * ipa-reference.c (scan_stmt_for_static_refs): Open-code
26387         gimple_loaded_syms and gimple_stored_syms computation.
26388         * toplev.c (dump_memory_report): Dump alias and pta stats.
26389         * tree-ssa-sccvn.c (vn_reference_compute_hash): Simplify.
26390         (vn_reference_eq): Likewise.
26391         (vuses_to_vec, copy_vuses_from_stmt, vdefs_to_vec,
26392         copy_vdefs_from_stmt, shared_lookup_vops, shared_vuses_from_stmt,
26393         valueize_vuses): Remove.
26394         (get_def_ref_stmt_vuses): Simplify.  Rename to ...
26395         (get_def_ref_stmt_vuse): ... this.
26396         (vn_reference_lookup_2): New function.
26397         (vn_reference_lookup_pieces): Use walk_non_aliased_vuses for
26398         walking equivalent vuses.  Simplify.
26399         (vn_reference_lookup): Likewise.
26400         (vn_reference_insert): Likewise.
26401         (vn_reference_insert_pieces): Likewise.
26402         (visit_reference_op_call): Simplify.
26403         (visit_reference_op_load): Likewise.
26404         (visit_reference_op_store): Likewise.
26405         (init_scc_vn): Remove shared_lookup_vuses initialization.
26406         (free_scc_vn): Remove shared_lookup_vuses freeing.
26407         (sort_vuses, sort_vuses_heap): Remove.
26408         (get_ref_from_reference_ops): Export.
26409         * tree-ssa-sccvn.h (struct vn_reference_s): Replace vuses
26410         vector with single vuse pointer.
26411         (vn_reference_lookup_pieces, vn_reference_lookup,
26412         vn_reference_insert, vn_reference_insert_pieces): Adjust prototypes.
26413         (shared_vuses_from_stmt): Remove.
26414         (get_ref_from_reference_ops): Declare.
26415         * tree-ssa-loop-manip.c (slpeel_can_duplicate_loop_p): Adjust.
26416         * tree-ssa-copyrename.c (copy_rename_partition_coalesce): Remove
26417         memory-tag related code.
26418         * tree-ssa-ccp.c (get_symbol_constant_value): Remove memory-tag code.
26419         (likely_value): Add comment, skip static-chain of call statements.
26420         (surely_varying_stmt_p): Adjust.
26421         (gimplify_and_update_call_from_tree): Likewise.
26422         (execute_fold_all_builtins): Do not rebuild alias info.
26423         (gimplify_and_update_call_from_tree): Properly update VOPs.
26424         * tree-ssa-loop-ivopts.c (get_ref_tag): Remove.
26425         (copy_ref_info): Remove memory-tag related code.
26426         * tree-call-cdce.c (tree_call_cdce): Rename the VOP.
26427         * ipa-pure-const.c (check_decl): Remove memory-tag related code.
26428         (check_stmt): Open-code gimple_loaded_syms and gimple_stored_syms
26429         computation.
26430         * tree-ssa-dom.c (gimple_p): Remove typedef.
26431         (eliminate_redundant_computations): Adjust.
26432         (record_equivalences_from_stmt): Likewise.
26433         (avail_expr_hash): Likewise.
26434         (avail_expr_eq): Likewise.
26435         * tree-ssa-propagate.c (update_call_from_tree): Properly update VOPs.
26436         (stmt_makes_single_load): Likewise.
26437         (stmt_makes_single_store): Likewise.
26438         * tree-ssa-alias.c: Rewrite completely.
26439         (debug_memory_partitions, dump_mem_ref_stats, debug_mem_ref_stats,
26440         debug_mem_sym_stats, dump_mem_sym_stats_for_var,
26441         debug_all_mem_sym_stats, debug_mp_info, update_mem_sym_stats_from_stmt,
26442         delete_mem_ref_stats, create_tag_raw, dump_points_to_info,
26443         dump_may_aliases_for, debug_may_aliases_for, new_type_alias):
26444         Remove public functions.
26445         (pass_reset_cc_flags): Remove.
26446         (pass_build_alias): Move ...
26447         * tree-ssa-structalias.c (pass_build_alias): ... here.
26448         * tree-ssa-alias.c (may_be_aliased): Move ...
26449         * tree-flow-inline.h (may_be_aliased): ... here.
26450         tree-ssa-alias.c (struct count_ptr_d, count_ptr_derefs,
26451         count_uses_and_derefs): Move ...
26452         * gimple.c: ... here.
26453         * gimple.h (count_uses_and_derefs): Declare.
26454         * tree-ssa-alias.c (dump_alias_stats, ptr_deref_may_alias_global_p,
26455         ptr_deref_may_alias_decl_p, ptr_derefs_may_alias_p,
26456         same_type_for_tbaa, nonaliasing_component_refs_p, decl_refs_may_alias_p,
26457         indirect_ref_may_alias_decl_p, indirect_refs_may_alias_p,
26458         ref_maybe_used_by_call_p, ref_maybe_used_by_stmt_p,
26459         call_may_clobber_ref_p, stmt_may_clobber_ref_p, maybe_skip_until,
26460         get_continuation_for_phi, walk_non_aliased_vuses, walk_aliased_vdefs):
26461         New functions.
26462         * tree-dfa.c (refs_may_alias_p): Move ...
26463         * tree-ssa-alias.c (refs_may_alias_p): ... here.  Extend.
26464         * tree-ssa-alias.h: New file.
26465         * tree-ssa-sink.c (is_hidden_global_store): Adjust.
26466         (statement_sink_location): Likewise.
26467         * opts.c (decode_options): Do not adjust max-aliased-vops or
26468         avg-aliased-vops values.
26469         * timevar.def (TV_TREE_MAY_ALIAS): Remove.
26470         (TV_CALL_CLOBBER): Likewise.
26471         (TV_FLOW_SENSITIVE): Likewise.
26472         (TV_FLOW_INSENSITIVE): Likewise.
26473         (TV_MEMORY_PARTITIONING): Likewise.
26474         (TV_ALIAS_STMT_WALK): New timevar.
26475         * tree-ssa-loop-ivcanon.c (empty_loop_p): Adjust.
26476         * tree-ssa-address.c (create_mem_ref_raw): Use build6.
26477         (get_address_description): Remove memory-tag related code.
26478         * tree-ssa-ifcombine.c (bb_no_side_effects_p): Adjust.
26479         * treestruct.def (TS_MEMORY_TAG, TS_MEMORY_PARTITION_TAG): Remove.
26480         * tree-eh.c (cleanup_empty_eh): Do not leave stale SSA_NAMEs
26481         and immediate uses in statements.  Document.
26482         * gimple-pretty-print.c (dump_gimple_mem_ops): Adjust.
26483         (dump_symbols): Remove.
26484         (dump_gimple_mem_ops): Do not dump loaded or stored syms.
26485         * alias.c (get_deref_alias_set): New function split out from ...
26486         (get_alias_set): ... here.
26487         * alias.h (get_deref_alias_set): Declare.
26488         * tree-vect-data-refs.c (vect_create_data_ref_ptr): Remove unused
26489         type parameter.  Remove restrict pointer handling.  Create a
26490         ref-all pointer in case type-based alias sets do not conflict.
26491         (vect_analyze_data_refs): Remove SMT related code.
26492         * tree-vect-stmts.c (vectorizable_store): Re-instantiate TBAA assert.
26493         (vectorizable_load): Likewise.
26494         * tree-data-ref.h (struct dr_alias): Remove symbol_tag field.
26495         (DR_SYMBOL_TAG, DR_VOPS): Remove.
26496         * tree-data-ref.c (dr_may_alias_p): Use the alias-oracle.
26497         Ignore vops and SMTs.
26498         (dr_analyze_alias): Likewise..
26499         (free_data_ref): Likewise.
26500         (create_data_ref): Likewise.
26501         (analyze_all_data_dependences): Likewise.
26502         (get_references_in_stmt): Adjust.
26503         * tree-flow-inline.h (gimple_aliases_computed_p,
26504         gimple_addressable_vars, gimple_call_clobbered_vars,
26505         gimple_call_used_vars, gimple_global_var, may_aliases, memory_partition,
26506         factoring_name_p, mark_call_clobbered, clear_call_clobbered,
26507         compare_ssa_operands_equal, symbol_mem_tag, set_symbol_mem_tag,
26508         gimple_mem_ref_stats): Remove.
26509         (gimple_vop): New function.
26510         (op_iter_next_use): Remove vuses and mayuses cases.
26511         (op_iter_next_def): Remove vdefs case.
26512         (op_iter_next_tree): Remove vuses, mayuses and vdefs cases.
26513         (clear_and_done_ssa_iter): Do not set removed fields.
26514         (op_iter_init): Likewise.  Skip vuse and/or vdef if requested.
26515         Assert we are not iterating over vuses or vdefs if not also
26516         iterating over uses or defs.
26517         (op_iter_init_use): Likewise.
26518         (op_iter_init_def): Likewise.
26519         (op_iter_next_vdef): Remove.
26520         (op_iter_next_mustdef): Likewise.
26521         (op_iter_init_vdef): Likewise.
26522         (compare_ssa_operands_equal): Likewise.
26523         (link_use_stmts_after): Handle vuse operand.
26524         (is_call_used): Use is_call_clobbered.
26525         (is_call_clobbered): Global variables are always call clobbered,
26526         query the call-clobbers bitmap.
26527         (mark_call_clobbered): Ignore global variables.
26528         (clear_call_clobbered): Likewise.
26529         * tree-ssa-coalesce.c (create_outofssa_var_map): Adjust
26530         virtual operands sanity check.
26531         * tree.def (NAME_MEMORY_TAG, SYMBOL_MEMORY_TAG, MEMORY_PARTITION_TAG):
26532         Remove.
26533         (TARGET_MEM_REF): Remove TMR_TAG operand.
26534         * tree-dfa.c (add_referenced_var): Initialize call-clobber state.
26535         Remove call-clobber related code.
26536         (remove_referenced_var): Likewise.  Do not clear mpt or symbol_mem_tag.
26537         (dump_variable): Do not dump SMTs, memory stats, may-aliases or
26538         partitions or escape reason.
26539         (get_single_def_stmt, get_single_def_stmt_from_phi,
26540         get_single_def_stmt_with_phi): Remove.
26541         (dump_referenced_vars): Tidy.
26542         (get_ref_base_and_extent): Allow bare decls.
26543         (collect_dfa_stats): Adjust.
26544         * graphite.c (rename_variables_in_stmt): Adjust.
26545         (graphite_copy_stmts_from_block): Likewise.
26546         (translate_clast): Likewise.
26547         * tree-ssa-pre.c (struct bb_bitmap_sets): Add expr_dies bitmap.
26548         (EXPR_DIES): New.
26549         (translate_vuse_through_block): Use the oracle.
26550         (phi_translate_1): Adjust.
26551         (value_dies_in_block_x): Use the oracle.  Cache the outcome
26552         in EXPR_DIES.
26553         (valid_in_sets): Check if the VUSE for
26554         a REFERENCE is available.
26555         (eliminate): Do not remove stmts during elimination,
26556         instead queue and remove them afterwards.
26557         (do_pre): Do not rebuild alias info.
26558         (pass_pre): Run TODO_rebuild_alias before PRE.
26559         * tree-ssa-live.c (remove_unused_locals): Remove memory-tag code.
26560         * tree-sra.c (sra_walk_function): Use gimple_references_memory_p.
26561         (mark_all_v_defs_stmt): Remove.
26562         (mark_all_v_defs_seq): Adjust.
26563         (sra_replace): Likewise.
26564         (scalarize_use): Likewise.
26565         (scalarize_copy): Likewise.
26566         (scalarize_init): Likewise.
26567         (scalarize_ldst): Likewise.
26568         (todoflags): Remove.
26569         (tree_sra): Do not rebuild alias info.
26570         (tree_sra_early): Adjust.
26571         (pass_sra): Run TODO_update_address_taken before SRA.
26572         * tree-predcom.c (set_alias_info): Remove.
26573         (prepare_initializers_chain): Do not call it.
26574         (mark_virtual_ops_for_renaming): Adjust.
26575         (mark_virtual_ops_for_renaming_list): Remove.
26576         (initialize_root_vars): Adjust.
26577         (initialize_root_vars_lm): Likewise.
26578         (prepare_initializers_chain): Likewise.
26579         * tree-ssa-copy.c (may_propagate_copy): Remove memory-tag related code.
26580         (may_propagate_copy_into_stmt): Likewise.
26581         (merge_alias_info): Do nothing for now.
26582         (propagate_tree_value_into_stmt): Adjust.
26583         (stmt_may_generate_copy): Likewise.
26584         * tree-ssa-forwprop.c (tidy_after_forward_propagate_addr): Do
26585         not mark symbols for renaming.
26586         (forward_propagate_addr_expr): Match up push/pop_stmt_changes
26587         with the same statement, make sure to update the new pointed-to one.
26588         * tree-ssa-dce.c (eliminate_unnecessary_stmts): Do not copy
26589         call statements, do not mark symbols for renaming.
26590         (mark_operand_necessary): Dump something.
26591         (ref_may_be_aliased): New function.
26592         (mark_aliased_reaching_defs_necessary_1): New helper function.
26593         (mark_aliased_reaching_defs_necessary): Likewise.
26594         (mark_all_reaching_defs_necessary_1): Likewise.
26595         (mark_all_reaching_defs_necessary): Likewise.
26596         (propagate_necessity): Do not process virtual PHIs.  For
26597         non-aliased loads mark all reaching definitions as necessary.
26598         For aliased loads and stores mark the immediate dominating
26599         aliased clobbers as necessary.
26600         (visited): New global static.
26601         (perform_tree_ssa_dce): Free visited bitmap after propagating
26602         necessity.
26603         (remove_dead_phis): Perform simple dead virtual PHI removal.
26604         (remove_dead_stmt): Properly unlink virtual operands when
26605         removing stores.
26606         (eliminate_unnecessary_stmts): Schedule PHI removal after
26607         stmt removal.
26608         * tree-ssa-ter.c (is_replaceable_p): Adjust.
26609         (process_replaceable): Likewise.
26610         (find_replaceable_in_bb): Likewise.
26611         * tree-ssa.c (verify_ssa_name): Verify all VOPs are
26612         based on the single gimple vop.
26613         (verify_flow_insensitive_alias_info): Remove.
26614         (verify_flow_sensitive_alias_info): Likewise.
26615         (verify_call_clobbering): Likewise.
26616         (verify_memory_partitions): Likewise.
26617         (verify_alias_info): Likewise.
26618         (verify_ssa): Adjust..
26619         (execute_update_addresses_taken): Export.  Update SSA
26620         manually.  Optimize only when optimizing.  Use a local bitmap.
26621         (pass_update_address_taken): Remove TODO_update_ssa, add
26622         TODO_dump_func.
26623         (pass_update_address_taken): Just use TODO_update_address_taken.
26624         (init_tree_ssa): Do not initialize addressable_vars.
26625         (verify_ssa): Verify new VUSE / VDEF properties.
26626         Verify that all stmts definitions have the stmt as SSA_NAME_DEF_STMT.
26627         Do not call verify_alias_info.
26628         (delete_tree_ssa): Clear the VUSE, VDEF operands.
26629         Do not free the loaded and stored syms bitmaps.  Reset the escaped
26630         and callused solutions.  Do not free addressable_vars.
26631         Remove memory-tag related code.
26632         (warn_uninitialized_var): Aliases are always available.
26633         * tree-ssa-loop-prefetch.c (gather_memory_references): Adjust.
26634         * lambda-code.c (can_put_in_inner_loop): Adjust.
26635         (can_put_after_inner_loop): Likewise.
26636         (perfect_nestify): Likewise.
26637         * tree-vect-stmts.c (vect_stmt_relevant_p): Adjust.
26638         (vect_gen_widened_results_half): Remove CALL_EXPR handling.
26639         (vectorizable_conversion): Do not mark symbols for renaming.
26640         * tree-inline.c (remap_gimple_stmt): Clear VUSE/VDEF.
26641         (expand_call_inline): Unlink the calls virtual operands before
26642         replacing it.
26643         (tree_function_versioning): Do not call update_ssa if we are not
26644         updating clones.  Simplify.
26645         * tree-ssa-phiprop.c (phivn_valid_p): Adjust.
26646         (propagate_with_phi): Likewise..
26647         * tree-outof-ssa.c (create_temp): Remove memory tag and call
26648         clobber code.  Assert we are not aliased or global.
26649         * tree-flow.h: Include tree-ssa-alias.h
26650         (enum escape_type): Remove.
26651         (struct mem_sym_stats_d): Likewise.
26652         (struct mem_ref_stats_d): Likewise.
26653         (struct gimple_df): Add vop member.  Remove global_var,
26654         call_clobbered_vars, call_used_vars, addressable_vars,
26655         aliases_compted_p and mem_ref_stats members.  Add syms_to_rename,
26656         escaped and callused members.
26657         (struct ptr_info_def): Remove all members, add points-to solution
26658         member pt.
26659         (struct var_ann_d): Remove in_vuse_list, in_vdef_list,
26660         call_clobbered, escape_mask, mpt and symbol_mem_tag members.
26661         * Makefile.in (TREE_FLOW_H): Add tree-ssa-alias.h.
26662         (tree-ssa-structalias.o): Remove tree-ssa-structalias.h.
26663         (tree-ssa-alias.o): Likewise.
26664         (toplev.o): Add tree-ssa-alias.h
26665         (GTFILES): Remove tree-ssa-structalias.h, add tree-ssa-alias.h.
26666         * gimple.c (gimple_set_bb): Fix off-by-one error.
26667         (is_gimple_reg): Do not handle memory tags.
26668         (gimple_copy): Also copy virtual operands.
26669         Delay updating the statement.  Do not reset loaded and stored syms.
26670         (gimple_set_stored_syms): Remove.
26671         (gimple_set_loaded_syms): Likewise.
26672         (gimple_call_copy_skip_args): Copy the virtual operands
26673         and mark the new statement modified.
26674         * tree-ssa-structalias.c (may_alias_p): Remove.
26675         (set_uids_in_ptset): Take the alias set to prune with as
26676         parameter.  Fold in the alias test of may_alias_p.
26677         (compute_points_to_sets): Compute whether a ptr is dereferenced
26678         in a local sbitmap.
26679         (process_constraint): Deal with &ANYTHING on the lhs, reject all
26680         other ADDRESSOF constraints on the lhs.
26681         (get_constraint_for_component_ref): Assert that we don't get
26682         ADDRESSOF constraints from the base of the reference.
26683         Properly generate UNKNOWN_OFFSET for DEREF if needed.
26684         (struct variable_info): Remove collapsed_to member.
26685         (get_varinfo_fc): Remove.
26686         (new_var_info): Do not set collapsed_to.
26687         (dump_constraint): Do not follow cycles.
26688         (dump_constraint_graph): Likewise.
26689         (build_pred_graph): Likewise.
26690         (build_succ_graph): Likewise.
26691         (rewrite_constraints): Likewise.
26692         (do_simple_structure_copy): Remove.
26693         (do_rhs_deref_structure_copy): Remove.
26694         (do_lhs_deref_structure_copy): Remove.
26695         (collapse_rest_of_var): Remove.
26696         (do_structure_copy): Re-implement.
26697         (pta_stats): New global variable.
26698         (dump_pta_stats): New function.
26699         (struct constraint_expr): Make offset signed.
26700         (UNKNOWN_OFFSET): Define special value.
26701         (dump_constraint): Dump UNKNOWN_OFFSET as UNKNOWN.
26702         (solution_set_expand): New helper function split out from ...
26703         (do_sd_constraint): ... here.
26704         (solution_set_add): Handle UNKNOWN_OFFSET.  Handle negative offsets.
26705         (do_ds_constraint): Likewise.
26706         (do_sd_constraint): Likewise.  Do not special-case ESCAPED = *ESCAPED
26707         and CALLUSED = *CALLUSED.
26708         (set_union_with_increment): Make inc argument signed.
26709         (type_safe): Remove.
26710         (get_constraint_for_ptr_offset): Handle unknown and negative
26711         constant offsets.
26712         (first_vi_for_offset): Handle offsets before start.  Bail
26713         out early for offsets beyond the variable extent.
26714         (first_or_preceding_vi_for_offset): New function.
26715         (init_base_vars): Add ESCAPED = ESCAPED + UNKNOWN_OFFSET constraint.
26716         Together with ESCAPED = *ESCAPED this properly computes reachability.
26717         (find_what_var_points_to): New function.
26718         (find_what_p_points_to): Implement in terms of find_what_var_points_to.
26719         (pt_solution_reset, pt_solution_empty_p, pt_solution_includes_global,
26720         pt_solution_includes_1, pt_solution_includes, pt_solutions_intersect_1,
26721         pt_solutions_intersect): New functions.
26722         (compute_call_used_vars): Remove.
26723         (compute_may_aliases): New main entry into PTA computation.
26724         * gimple.h (gimple_p): New typedef.
26725         (struct gimple_statement_base): Remove references_memory_p.
26726         (struct gimple_statement_with_memory_ops_base): Remove
26727         vdef_ops, vuse_ops, stores and loads members.  Add vdef and vuse
26728         members.
26729         (gimple_vuse_ops, gimple_set_vuse_ops, gimple_vdef_ops,
26730         gimple_set_vdef_ops, gimple_loaded_syms, gimple_stored_syms,
26731         gimple_set_references_memory): Remove.
26732         (gimple_vuse_op, gimple_vdef_op, gimple_vuse, gimple_vdef,
26733         gimple_vuse_ptr, gimple_vdef_ptri, gimple_set_vuse, gimple_set_vdef):
26734         New functions.
26735         * tree-cfg.c (move_block_to_fn): Fix off-by-one error.
26736         (verify_expr): Allow RESULT_DECL.
26737         (gimple_duplicate_bb): Do not copy virtual operands.
26738         (gimple_duplicate_sese_region): Adjust.
26739         (gimple_duplicate_sese_tail): Likewise.
26740         (mark_virtual_ops_in_region): Remove.
26741         (move_sese_region_to_fn): Do not call it.
26742         * passes.c (init_optimization_passes): Remove pass_reset_cc_flags
26743         and pass_simple_dse.
26744         (execute_function_todo): Handle TODO_update_address_taken,
26745         call execute_update_addresses_taken for TODO_rebuild_alias.
26746         (execute_todo): Adjust.
26747         (execute_one_pass): Init dump files early.
26748         * ipa-struct-reorg.c (finalize_var_creation): Do not mark vars
26749         call-clobbered.
26750         (create_general_new_stmt): Clear vops.
26751         * tree-ssa-reassoc.c (get_rank): Adjust.
26752         * tree-vect-slp.c (vect_create_mask_and_perm): Do not mark
26753         symbols for renaming.
26754         * params.def (PARAM_MAX_ALIASED_VOPS): Remove.
26755         (PARAM_AVG_ALIASED_VOPS): Likewise.
26756         * tree-ssanames.c (init_ssanames): Allocate SYMS_TO_RENAME.
26757         (duplicate_ssa_name_ptr_info): No need to copy the shared bitmaps.
26758         * tree-ssa-operands.c: Simplify for new virtual operand representation.
26759         (operand_build_cmp, copy_virtual_operands,
26760         create_ssa_artificial_load_stmt, add_to_addressable_set,
26761         gimple_add_to_addresses_taken): Remove public functions.
26762         (unlink_stmt_vdef): New function.
26763
26764 2009-04-03  Alan Modra  <amodra@bigpond.net.au>
26765
26766         * config.gcc (powerpc-*-linux*): Merge variants.
26767
26768 2009-04-02  Chao-ying Fu  <fu@mips.com>
26769             James Grosbach  <james.grosbach@microchip.com>
26770
26771         * config/mips/mips.c (mips_frame_info): Add acc_mask, num_acc,
26772         num_cop0_regs, acc_save_offset, cop0_save_offset, acc_sp_offset,
26773         cop0_sp_offset.
26774         (machine_function): Add interrupt_handler_p, use_shadow_register_set_p,
26775         keep_interrupts_masked_p, use_debug_exception_return_p.
26776         (mips_attribute_table): Add interrupt, use_shadow_register_set,
26777         keep_interrupts_masked, use_debug_exception_return.
26778         (mips_interrupt_type_p, mips_use_shadow_register_set_p,
26779         mips_keep_interrupts_masked_p, mips_use_debug_exception_return_p):
26780         New functions.
26781         (mips_function_ok_for_sibcall): Return false for interrupt handlers.
26782         (mips_print_operand): Process COP0 registers to print $0 .. $31
26783         correctly for GAS to process.
26784         (mips_interrupt_extra_call_saved_reg_p): New function.
26785         (mips_cfun_call_saved_reg_p): For interrupt handlers, we need to check
26786         extra registers.
26787         (mips_cfun_might_clobber_call_saved_reg_p): Likewise.
26788         (mips_compute_frame_info): Add supports for interrupt context that
26789         includes doubleword accumulators and COP0 registers.
26790         (mips_for_each_saved_acc): New function.
26791         (mips_for_each_saved_gpr_and_fpr): Change the function name from
26792         mips_for_each_saved_reg.
26793         (mips_save_reg): Save accumulators.
26794         (mips_kernel_reg_p): A new for_each_rtx callback.
26795         (mips_expand_prologue): Support interrupt handlers.
26796         (mips_restore_reg): Restore accumulators.
26797         (mips_expand_epilogue): Support interrupt handlers.
26798         (mips_can_use_return_insn): Return false for interrupt handlers.
26799         (mips_epilogue_uses): New function.
26800         * config/mips/mips.md (UNSPEC_ERET, UNSPEC_DERET, UNSPEC_DI,
26801         UNSPEC_EHB, UNSPEC_RDPGPR, UNSPEC_COP0): New UNSPEC.
26802         (mips_eret, mips_deret, mips_di, mips_ehb, mips_rdpgpr,
26803         cop0_move): New instructions.
26804         * config/mips/mips-protos.h (mips_epilogue_uses): Declare.
26805         * config/mips/mips.h (K0_REG_NUM, K1_REG_NUM, KERNEL_REG_P): New
26806         defines.
26807         (COP0_STATUS_REG_NUM, COP0_CAUSE_REG_NUM, COP0_EPC_REG_NUM):
26808         New defines.
26809         (CAUSE_IPL, SR_IPL, SR_EXL, SR_IE): New defines.
26810         (MIPS_PROLOGUE_TEMP_REGNUM, MIPS_EPILOGUE_TEMP_REGNUM): For
26811         interrupt handlers, we use K0 as the temporary register.
26812         (EPILOGUE_USES): Change to a function call.
26813         * config/mips/sde.h (MIPS_EPILOGUE_TEMP_REGNUM): For interrupt
26814         handlers, we use K0 as the temporary register.
26815
26816         * doc/extend.texi (Function Attributes): Document interrupt,
26817         use_shadow_register_set, keep_interrupts_masked,
26818         use_debug_exception_return for MIPS attributes.
26819
26820 2009-04-03  Alan Modra  <amodra@bigpond.net.au>
26821
26822         * config.gcc (powerpc64-*-gnu*): Add rs6000/default64.h to tm_file.
26823         Remove a number of t-files from tmake_file.
26824         * config/rs6000/sysv4.opt (mprototype): Name variable target_prototype.
26825         * config/rs6000/sysv4.h (TARGET_PROTOTYPE): Define.
26826         * config/rs6000/linux64.h (SUBSUBTARGET_OVERRIDE_OPTIONS): Set
26827         target_prototype, not TARGET_PROTOTYPE.
26828         (LINK_OS_GNU_SPEC): Define.
26829         * config/rs6000/t-linux64 (LIB2FUNCS_EXTRA): Delete tramp.S
26830         and darwin-ldoubdle.c.
26831
26832 2009-04-02  Michael Meissner  <meissner@linux.vnet.ibm.com>
26833
26834         PR driver/39293
26835         * gcc.c (save_temps_flag): Add support for -save-temps=obj.
26836         (cpp_options): Ditto.
26837         (default_compilers): Ditto.
26838         (display_help): Ditto.
26839         (process_command): Ditto.
26840         (do_spec_1): Ditto.
26841         (set_input): Use lbasename instead of duplicate code.
26842         (save_temps_prefix): New static for -save-temps=obj.
26843         (save_temps_length): Ditto.
26844
26845         * doc/invoke.texi (-save-temps=obj): Document new variant to
26846         -save-temps switch.
26847
26848 2009-04-02  Jeff Law  <law@redhat.com>
26849
26850         * reload1.c (fixup_eh_region_notes): Remove write-only "trap_count"
26851         variable.
26852
26853 2009-04-02  H.J. Lu  <hongjiu.lu@intel.com>
26854
26855         * configure.ac: Support -Bstatic/-Bdynamic for linker version > 2.
26856         * configure: Regenerated.
26857
26858 2009-04-02  Rafael Avila de Espindola  <espindola@google.com>
26859
26860         * c-decl.c (merge_decls): Make sure newdecl and olddecl don't
26861         share the argument list.
26862
26863 2009-04-02  Rafael Avila de Espindola  <espindola@google.com>
26864
26865         Merge
26866
26867         2009-02-12  Diego Novillo  <dnovillo@google.com>
26868
26869         * varpool.c (debug_varpool): New.
26870         * cgraph.h (debug_varpool): Declare.
26871
26872 2009-04-02  Jan Hubicka  <jh@suse.cz>
26873
26874         * passes.c (init_optimization_passes): Remove two copies of ehcleanup
26875         pass.
26876
26877 2009-04-02  H.J. Lu  <hongjiu.lu@intel.com>
26878
26879         * config/i386/i386.c (ix86_abi): Move initialization to ...
26880         (override_options): Here.
26881
26882 2009-04-02  Christian Bruel  <christian.bruel@st.com>
26883
26884         * config/sh/sh.c (sh_dwarf_register_span): New function.
26885         (TARGET_DWARF_REGISTER_SPAN): Define.
26886         * config/sh/sh-protos.h (sh_dwarf_register_span): Declare.
26887
26888 2009-04-02  Ira Rosen  <irar@il.ibm.com>
26889
26890         PR tree-optimization/39595
26891         * tree-vect-slp.c (vect_build_slp_tree): Check that the size of
26892         interleaved loads group is not  greater than the SLP group size.
26893
26894 2009-04-02  Rafael Avila de Espindola  <espindola@google.com>
26895
26896         * builtins.c (is_builtin_name): New.
26897         (called_as_built_in): Use is_builtin_name.
26898         * tree.h (is_builtin_name): New.
26899         * varasm.c (incorporeal_function_p): Use is_builtin_name
26900
26901 2009-04-02  Andrew Stubbs  <ams@codesourcery.com>
26902
26903         * config/sh/linux-unwind.h: Disable when inhibit_libc is defined.
26904
26905 2009-04-02  Dodji Seketeli  <dodji@redhat.com>
26906
26907         PR c++/26693
26908         * c-decl.c (clone_underlying_type): Move this ...
26909         * c-common.c (set_underlying_type): ... here.
26910         Also, make sure the function properly sets TYPE_STUB_DECL() on
26911         the newly created typedef variant type.
26912         * c-common.h (is_typedef_decl, set_underlying_type): Declare ...
26913         * c-common.c (is_typedef_decl, set_underlying_type): ... new entry
26914         points.
26915
26916 2009-04-02  Richard Guenther  <rguenther@suse.de>
26917
26918         PR tree-optimization/37221
26919         * tree-flow.h (degenerate_phi_result): Declare.
26920         * tree-ssa-dom.c (degenerate_phi_result): Export.
26921         * tree-scalar-evolution.c (analyze_initial_condition): If
26922         the initial condition is defined by a degenerate PHI node
26923         use the degenerate value.
26924
26925 2009-04-01  Eric Botcazou  <ebotcazou@adacore.com>
26926
26927         PR rtl-optimization/39588
26928         * combine.c (merge_outer_ops): Do not set the constant when this
26929         is not necessary.
26930         (simplify_shift_const_1): Do not modify it either in this case.
26931
26932 2009-04-01  Steven Bosscher  <steven@gcc.gnu.org>
26933
26934         * config/ia64/ia64.c (ia64_handle_option): Inform user that Itanium1
26935         tuning is deprecated if -mtune value is set to an Itanium1 variant.
26936
26937 2009-04-01  Janis Johnson  <janis187@us.ibm.com>
26938
26939         PR c/29027
26940         * c-lex.c (interpret_float): Default (no suffix) is double.
26941
26942 2009-04-1  Xinliang David Li  <davidxl@google.com>
26943
26944         * config/i386/i386.c (legitimate_constant_p): Recognize
26945         all one vector constant.
26946
26947 2009-04-01  Jan-Benedict Glaw  <jbglaw@jbglaw-dev.homezone.telefonica.de>
26948
26949         * config/vax/vax.c: Add #includes to silence warnings.
26950         Change #include order to silence two warnings.
26951
26952 2009-04-01  Jan-Benedict Glaw  <jbglaw@jbglaw-dev.homezone.telefonica.de>
26953
26954         * config/vax/linux.h (TARGET_DEFAULT): Add the MASK_QMATH flag bit.
26955         (ASM_SPEC): Pass -k to the assembler for PIC code.
26956
26957 2009-04-01  Jan-Benedict Glaw  <jbglaw@jbglaw-dev.homezone.telefonica.de>
26958
26959         * config.gcc: Add vax-*-linux* to the switch.
26960         * config/vax/linux.h: New file. (TARGET_VERSION,
26961         TARGET_OS_CPP_BUILTINS, TARGET_DEFAULT, CPP_SPEC, LINK_SPEC): Define.
26962
26963 2009-04-01  Jan-Benedict Glaw  <jbglaw@jbglaw-dev.homezone.telefonica.de>
26964
26965         * config/vax/vax.c (vax_output_int_move, adjacent_operands_p):
26966         Use predicate macros instead of GET_CODE() == foo.
26967         * config/vax/vax.md (movsi_2, movstrictqi, and<mode>3, ashrsi3,
26968         ashlsi3, rotrsi3, <unnamed>): Likewise.
26969
26970 2009-04-01  Jan-Benedict Glaw  <jbglaw@jbglaw-dev.homezone.telefonica.de>
26971
26972         * config/vax/builtins.md (jbbssiqi, jbbssihi, jbbssisi, jbbcciqi,
26973         jbbccihi, jbbccisi): Remova trailing whitespace.
26974         * config/vax/constraints.md: Likewise.
26975         * config/vax/elf.h (ASM_PREFERRED_EH_DATA_FORMAT): Likewise.
26976         * config/vax/openbsd1.h (OBSD_OLD_GAS): Likewise.
26977         * config/vax/predicates.md: Likewise.
26978         * config/vax/vax.c (print_operand_address, vax_output_int_move,
26979         vax_expand_addsub_di_operands, adjacent_operands_p): Likewise.
26980         * config/vax/vax.h: Likewise.
26981         * config/vax/vax.md (nonlocal_goto): Likewise.
26982
26983 2009-04-01  Jan-Benedict Glaw  <jbglaw@jbglaw-dev.homezone.telefonica.de>
26984
26985         * config/vax/vax.c (vax_float_literal, vax_output_int_move)
26986         (indirectable_address_p, adjacent_operands_p): Add spaces around
26987         braces.
26988         * config/vax/vax-protos.h (adjacent_operands_p): Likewise.
26989
26990 2009-04-01  Jan-Benedict Glaw  <jbglaw@jbglaw-dev.homezone.telefonica.de>
26991
26992         * config/vax/vax.c (legitimate_constant_address_p,
26993         legitimate_constant_p, indirectable_address_p, nonindexed_address_p,
26994         index_term_p, reg_plus_index_p, legitimate_address_p,
26995         vax_mode_dependent_address_p): Update comments to match functions
26996         modified by the recent int->bool conversion.
26997
26998 2009-04-01  Jan-Benedict Glaw  <jbglaw@jbglaw-dev.homezone.telefonica.de>
26999
27000         * config/vax/builtins.md: Update copyright message.
27001         * config/vax/constraints.md: Likewise.
27002         * config/vax/netbsd-elf.h: Likewise.
27003         * config/vax/predicates.md: Likewise.
27004         * config/vax/vax-protos.h: Likewise.
27005         * config/vax/vax.c: Likewise.
27006         * config/vax/vax.h: Likewise.
27007         * config/vax/vax.md: Likewise.
27008         * config/vax/vax.opt: Likewise.
27009
27010 2009-04-01  Jan-Benedict Glaw  <jbglaw@jbglaw-dev.homezone.telefonica.de>
27011
27012         * config/vax/builtins.md (ffssi2, ffssi2_internal,
27013         sync_lock_test_and_set<mode>, sync_lock_release<mode>): Fix indention.
27014         * config/vax/constraints.md (B, R): Likewise.
27015         * config/vax/predicates.md (external_memory_operand,
27016         nonimmediate_addsub_di_operand): Likewise.
27017         * config/vax/vax.c (vax_output_int_add): Likewise.
27018         * config/vax/vax.md (movsi, movsi_2, mov<mode>, call_value,
27019         untyped_call): Likewise.
27020
27021 2009-04-01  Matt Thomas  <matt@3am-software.com>
27022
27023         * config/vax/predicates.md: New file.
27024         (symbolic_operand, local_symbolic_operand, external_symbolic_operand,
27025         external_const_operand, nonsymbolic_operand, external_memory_operand,
27026         indirect_memory_operand, indexed_memory_operand,
27027         illegal_blk_memory_operand, illegal_addsub_di_memory_operand,
27028         nonimmediate_addsub_di_operand, general_addsub_di_operand): New
27029         predicate.
27030         * config/vax/constraints.md: New file.
27031         (Z0, U06,  U08, U16, CN6, S08, S16, I, J, K, L, M, N, O, G, Q, B, R, T):
27032         New constraint.
27033         * config/vax/builtins.md: New file.
27034         (ffssi2, ffssi2_internal, sync_lock_test_and_set<mode>, jbbssiqi,
27035         jbbssihi, jbbssisi, sync_lock_release<mode>, jbbcciqi, jbbccihi,
27036         jbbccisi): Define.
27037         * config/vax/vax.opt (mqmath): Add option.
27038         * config/vax/vax.md (isfx): Extend with DI.
27039         (VAXintQH, VAXintQHSD): Define.
27040         (tst<mode>, cmp<mode>, *bit<mode>, movmemhi1, truncsiqi2, truncsihi2,
27041         mulsidi3, add<mode>3, sub<mode>, mul<mode>3, div<mode>3, and<mode>,
27042         and<mode>_const_int, ior<mode>3, xor<mode>3, neg<mode>2,
27043         one_cmpl<mode>2, ashlsi3, lshrsi3, rotlsi3): Update constraints.
27044         (movdi): Update constraints and use vax_output_int_move().
27045         (movsi, movsi_2, pushlclsymreg, pushextsymreg, movlclsymreg,
27046         movextsymreg, adddi3, adcdi3, subdi3, sbcdi3, pushextsym, movextsym,
27047         pushlclsym, movlclsym, movaddr<mode>, pushaddr<mode>,
27048         nonlocal_goto): New.
27049         (mov<mode>): Extend accepted operand types.
27050         (subdi3_old): Rename from subdi3, change update constraints and use
27051         a new implementation.
27052         * config/vax/vax.h (PCC_BITFIELD_TYPE_MATTERS): Add space.
27053         (FRAME_POINTER_CFA_OFFSET, IRA_COVER_CLASSES, CLASS_MAX_NREGS,
27054         MOVE_RATIO, CLEAR_RATIO): Define.
27055         (REG_CLASS_FROM_LETTER, CONST_OK_FOR_LETTER_P,
27056         CONST_DOUBLE_OK_FOR_LETTER_P, EXTRA_CONSTRAINT): Delete.
27057         (PRINT_OPERAND): Redefine using a function instead of inlined code.
27058         * config/vax/vax.c (TARGET_BUILTIN_SETJMP_FRAME_VALUE): Define.
27059         (split_quadword_operands): Make static and really allow variable
27060         splitting.
27061         (print_operand_address): Update for PIC generation.
27062         (print_operand, vax_builtin_setjmp_frame_value, vax_output_int_subtract,
27063         indexable_address_p, fixup_mathdi_operand,
27064         vax_expand_addsub_di_operands, adjacent_operands_p): New.
27065         (vax_float_literal, legitimate_constant_p,
27066         indirectable_constant_address_p, index_term_p,
27067         reg_plus_index_p): Return bool instead of int.
27068         (vax_rtx_costs): Fix cost for CONST_INT, indent and use HOST_WIDE_INT
27069         where needed.
27070         (vax_output_int_move, vax_output_int_add): Extend to allow PIC
27071         generation.
27072         (vax_output_conditional_branch): Indent.
27073         (legitimate_constant_address_p, indirectable_constant_address_p,
27074         indirectable_address_p, nonindexed_address_p, legitimate_address_p,
27075         vax_mode_dependent_address_p): Return bool instead of int, update for
27076         PIC generation.
27077         * config/vax/vax-protos.h (legitimate_constant_address_p,
27078         legitimate_constant_p, legitimate_address_p,
27079         vax_mode_dependent_address_p): Change declaration to bool.
27080         (legitimate_pic_operand_p, adjacent_operands_p, print_operand,
27081         vax_expand_addsub_di_operands, vax_output_int_subtract,
27082         vax_output_movmemsi): Declare.
27083         (split_quadword_operands, vax_float_literal): Delete declaration.
27084         * config/vax/netbsd-elf.h (CC1_SPEC, CC1PLUS_SPEC) Define.
27085         * config/vax/elf.h (NO_EXTERNAL_INDIRECT_ADDRESS,
27086         VAX_CC1_AND_CC1PLUS_SPEC, ASM_PREFERRED_EH_DATA_FORMAT,
27087         ASM_OUTPUT_DWARF_PCREL): Define.
27088         (ASM_SPEC): Change definition to allow PIC generation.
27089
27090 2009-04-01  Steve Ellcey  <sje@cup.hp.com>
27091
27092         * doc/sourcebuild.texi: Update front-end requirements.
27093
27094 2009-04-01  Jakub Jelinek  <jakub@redhat.com>
27095
27096         PR target/39226
27097         * config/rs6000/rs6000.md (andsi3_internal5_nomc,
27098         anddi3_internal2_nomc, anddi3_internal3_nomc): Removed.
27099         (booldi3_internal3): Use boolean_or_operator instead of
27100         boolean_operator.
27101
27102 2009-04-01  Joseph Myers  <joseph@codesourcery.com>
27103
27104         PR c/39605
27105         * c-decl.c (grokdeclarator): Pedwarn for file-scope array
27106         declarator whose size is not an integer constant expression but
27107         folds to an integer constant, then treat it as a constant
27108         subsequently.
27109
27110 2009-04-01  Richard Guenther  <rguenther@suse.de>
27111
27112         * fold-const.c (fold_plusminus_mult_expr): Do not fold
27113         i * 4 + 2 to (i * 2 + 1) * 2.
27114
27115 2009-04-01  Jakub Jelinek  <jakub@redhat.com>
27116
27117         PR c/37772
27118         * c-parser.c (c_parser_asm_statement): Skip until close paren and
27119         return if c_parser_asm_string_literal returned NULL.
27120
27121 2009-04-01  Nick Clifton  <nickc@redhat.com>
27122
27123         * config/m32c/m32c.h (LIBGCC2_UNITS_PER_WORD): Define if not
27124         already defined.
27125         * config/m32c/t-m32c (LIB2FUNCS_EXTRA): Add m32c-lib2-trapv.c.
27126         * config/m32c/m32c-lib2.c: Remove unused typedefs.  Rename the
27127         other typedefs to avoid conflicts with libgcc2.c.  Define labels
27128         to gain 16-bit bit-manipulation functions from libgcc2.c and then
27129         include it.
27130         * config/m32c/m32c-lib2-trapv.c: New file.  Define labels
27131         to gain 16-bit trapping arithmetic functions from libgcc2.c and
27132         then include it.
27133
27134 2009-04-01  Rafael Avila de Espindola  <espindola@google.com>
27135
27136         * varasm.c (default_function_rodata_section): Declare DOT as
27137         const char*.
27138
27139 2009-04-01  Kai Tietz  <kai.tietz@onevision.com>
27140             Andrey Galkin  <agalkin@hypercom.com>
27141
27142         PR/39492
27143         * config/i386/host-mingw32.c (mingw32_gt_pch_use_address):
27144         Make object_name unique for each process.
27145
27146 2009-04-01  Jakub Jelinek  <jakub@redhat.com>
27147
27148         PR other/39591
27149         * omp-low.c (remove_exit_barrier): Don't optimize if there are any
27150         addressable variables in the parallel that could go out of scope while
27151         running queued tasks.
27152
27153 2009-04-01  Anatoly Sokolov  <aesok@post.ru>
27154
27155         * config/avr/avr.h (avr_case_values_threshold): Remove declaration.
27156         (CASE_VALUES_THRESHOLD): Redefine.
27157         * config/avr/avr.c (avr_override_options): Remove initialization of
27158         avr_case_values_threshold variable.
27159         (avr_case_values_threshold): Remove variable. Add new function.
27160         * config/avr/avr-protos.h (avr_case_values_threshold): Declare.
27161         * config/avr/avr.opt (mno-tablejump): Remove option.
27162         * doc/invoke.texi (AVR Options): Remove -mno-tablejump.
27163
27164 2009-04-01  DJ Delorie  <dj@redhat.com>
27165
27166         * varasm.c (default_function_rodata_section): Don't assume
27167         anything about where the first '.' in the section name is.
27168
27169 2009-04-01  Alan Modra  <amodra@bigpond.net.au>
27170
27171         * config/rs6000/rs6000.c (rs6000_emit_stack_reset): Delete redundant
27172         rs6000_emit_stack_tie.
27173
27174 2009-03-31  Ian Lance Taylor  <iant@google.com>
27175
27176         * tree-eh.c (tree_remove_unreachable_handlers): Compare
27177         gimple_code with GIMPLE_RESX, not RESX.
27178
27179 2009-03-31  Joseph Myers  <joseph@codesourcery.com>
27180
27181         * c-common.c (c_get_ident): New.
27182         (c_common_nodes_and_builtins): Call it for type names that may be NULL.
27183
27184 2009-04-01  Ben Elliston  <bje@au.ibm.com>
27185
27186         * config/rs6000/sysv4.opt (msdata): Improve option description.
27187
27188 2009-03-31  Steve Ellcey  <sje@cup.hp.com>
27189
27190         * config/ia64/ia64.md (divsf3_internal_lat): Remove.
27191         (divdf3_internal_lat): Remove.
27192         (divxf3_internal_lat): Remove.
27193         (divxf3_internal_thr): Remove.
27194         (divxf): Use divxf3_internal.
27195         * config/ia64/div.md (divsf3_internal_lat): New.
27196         (divdf3_internal_lat): New.
27197         (divxf3_internal): New.
27198
27199 2009-03-31  Joseph Myers  <joseph@codesourcery.com>
27200
27201         PR c/448
27202         * Makefile.in (USE_GCC_STDINT): Define.
27203         (stmp-int-hdrs): Install stdint.h if applicable.
27204         * c-common.c (CHAR16_TYPE): Define in terms of UINT_LEAST16_TYPE
27205         if known.
27206         (CHAR32_TYPE): Define in terms of UINT_LEAST32_TYPE if known.
27207         (SIG_ATOMIC_TYPE, INT8_TYPE, INT16_TYPE, INT32_TYPE, INT64_TYPE,
27208         UINT8_TYPE, UINT16_TYPE, UINT32_TYPE, UINT64_TYPE,
27209         INT_LEAST8_TYPE, INT_LEAST16_TYPE, INT_LEAST32_TYPE,
27210         INT_LEAST64_TYPE, UINT_LEAST8_TYPE, UINT_LEAST16_TYPE,
27211         UINT_LEAST32_TYPE, UINT_LEAST64_TYPE, INT_FAST8_TYPE,
27212         INT_FAST16_TYPE, INT_FAST32_TYPE, INT_FAST64_TYPE,
27213         UINT_FAST8_TYPE, UINT_FAST16_TYPE, UINT_FAST32_TYPE,
27214         UINT_FAST64_TYPE, INTPTR_TYPE, UINTPTR_TYPE): Define.
27215         (c_common_nodes_and_builtins): Initialize
27216         underlying_wchar_type_node.  Do not initialize
27217         signed_wchar_type_node or unsigned_wchar_type_node.  Initialize
27218         nodes for new types.
27219         (c_stddef_cpp_builtins): Define macros for new types.
27220         * c-common.h (CTI_SIGNED_WCHAR_TYPE, CTI_UNSIGNED_WCHAR_TYPE):
27221         Remove.
27222         (CTI_UNDERLYING_WCHAR_TYPE, CTI_SIG_ATOMIC_TYPE, CTI_INT8_TYPE,
27223         CTI_INT16_TYPE, CTI_INT32_TYPE, CTI_INT64_TYPE, CTI_UINT8_TYPE,
27224         CTI_UINT16_TYPE, CTI_UINT32_TYPE, CTI_UINT64_TYPE,
27225         CTI_INT_LEAST8_TYPE, CTI_INT_LEAST16_TYPE, CTI_INT_LEAST32_TYPE,
27226         CTI_INT_LEAST64_TYPE, CTI_UINT_LEAST8_TYPE, CTI_UINT_LEAST16_TYPE,
27227         CTI_UINT_LEAST32_TYPE, CTI_UINT_LEAST64_TYPE, CTI_INT_FAST8_TYPE,
27228         CTI_INT_FAST16_TYPE, CTI_INT_FAST32_TYPE, CTI_INT_FAST64_TYPE,
27229         CTI_UINT_FAST8_TYPE, CTI_UINT_FAST16_TYPE, CTI_UINT_FAST32_TYPE,
27230         CTI_UINT_FAST64_TYPE, CTI_INTPTR_TYPE, CTI_UINTPTR_TYPE): Define.
27231         (signed_wchar_type_node, unsigned_wchar_type_node): Remove.
27232         (underlying_wchar_type_node, sig_atomic_type_node, int8_type_node,
27233         int16_type_node, int32_type_node, int64_type_node,
27234         uint8_type_node, uint16_type_node, c_uint32_type_node,
27235         c_uint64_type_node, int_least8_type_node, int_least16_type_node,
27236         int_least32_type_node, int_least64_type_node,
27237         uint_least8_type_node, uint_least16_type_node,
27238         uint_least32_type_node, uint_least64_type_node,
27239         int_fast8_type_node, int_fast16_type_node, int_fast32_type_node,
27240         int_fast64_type_node, uint_fast8_type_node, uint_fast16_type_node,
27241         uint_fast32_type_node, uint_fast64_type_node, intptr_type_node,
27242         uintptr_type_node): Define.
27243         * c-cppbuiltin.c (builtin_define_constants,
27244         builtin_define_type_minmax): New.
27245         (builtin_define_stdint_macros): Define more macros.
27246         (c_cpp_builtins): Define more limit macros.
27247         (type_suffix): New.
27248         (builtin_define_type_max): Define in terms of
27249         builtin_define_type_minmax.  Remove is_long parameter.  All
27250         callers changed.
27251         * config.gcc (use_gcc_stdint): Define.
27252         (tm_file): Add glibc-stdint.h for targets using glibc or uClibc.
27253         Add newlib-stdint.h for generic targets.
27254         * config/glibc-stdint.h, config/newlib-stdint.h,
27255         ginclude/stdint-gcc.h, ginclude/stdint-wrap.h: New.
27256         * config/m32c/m32c.h (UINTPTR_TYPE): Define.
27257         * config/score/score.h (UINTPTR_TYPE): Define.
27258         * config/sol2.h (SIG_ATOMIC_TYPE, INT8_TYPE, INT16_TYPE,
27259         INT32_TYPE, INT64_TYPE, UINT8_TYPE, UINT16_TYPE, UINT32_TYPE,
27260         UINT64_TYPE, INT_LEAST8_TYPE, INT_LEAST16_TYPE, INT_LEAST32_TYPE,
27261         INT_LEAST64_TYPE, UINT_LEAST8_TYPE, UINT_LEAST16_TYPE,
27262         UINT_LEAST32_TYPE, UINT_LEAST64_TYPE, INT_FAST8_TYPE,
27263         INT_FAST16_TYPE, INT_FAST32_TYPE, INT_FAST64_TYPE,
27264         UINT_FAST8_TYPE, UINT_FAST16_TYPE, UINT_FAST32_TYPE,
27265         UINT_FAST64_TYPE, INTPTR_TYPE, UINTPTR_TYPE): Define.
27266         * config/spu/spu.h (STDINT_LONG32): Define.
27267         * configure.ac (use_gcc_stdint): Substitute.
27268         * configure: Regenerate.
27269         * doc/cpp.texi (__SIG_ATOMIC_TYPE__, __INT8_TYPE__,
27270         __INT16_TYPE__, __INT32_TYPE__, __INT64_TYPE__, __UINT8_TYPE__,
27271         __UINT16_TYPE__, __UINT32_TYPE__, __UINT64_TYPE__,
27272         __INT_LEAST8_TYPE__, __INT_LEAST16_TYPE__, __INT_LEAST32_TYPE__,
27273         __INT_LEAST64_TYPE__, __UINT_LEAST8_TYPE__, __UINT_LEAST16_TYPE__,
27274         __UINT_LEAST32_TYPE_, __UINT_LEAST64_TYPE__, __INT_FAST8_TYPE__,
27275         __INT_FAST16_TYPE__, __INT_FAST32_TYPE__, __INT_FAST64_TYPE__,
27276         __UINT_FAST8_TYPE__, __UINT_FAST16_TYPE__, __UINT_FAST32_TYPE__,
27277         __UINT_FAST64_TYPE__, __INTPTR_TYPE__, __UINTPTR_TYPE__,
27278         __WINT_MAX__, __SIZE_MAX__, __PTRDIFF_MAX__, __UINTMAX_MAX__,
27279         __SIG_ATOMIC_MAX__, __INT8_MAX__, __INT16_MAX__, __INT32_MAX__,
27280         __INT64_MAX__, __UINT8_MAX__, __UINT16_MAX__, __UINT32_MAX__,
27281         __UINT64_MAX__, __INT_LEAST8_MAX__, __INT_LEAST16_MAX__,
27282         __INT_LEAST32_MAX__, __INT_LEAST64_MAX__, __UINT_LEAST8_MAX__,
27283         __UINT_LEAST16_MAX__, __UINT_LEAST32_MAX__, __UINT_LEAST64_MAX__,
27284         __INT_FAST8_MAX__, __INT_FAST16_MAX__, __INT_FAST32_MAX__,
27285         __INT_FAST64_MAX__, __UINT_FAST8_MAX__, __UINT_FAST16_MAX__,
27286         __UINT_FAST32_MAX__, __UINT_FAST64_MAX__, __INTPTR_MAX__,
27287         __UINTPTR_MAX__, __WCHAR_MIN__, __WINT_MIN__, __SIG_ATOMIC_MIN__,
27288         __INT8_C, __INT16_C, __INT32_C, __INT64_C, __UINT8_C, __UINT16_C,
27289         __UINT32_C, __UINT64_C, __INTMAX_C, __UINTMAX_C): Document.
27290         * doc/tm.texi (SIG_ATOMIC_TYPE, INT8_TYPE, INT16_TYPE, INT32_TYPE,
27291         INT64_TYPE, UINT8_TYPE, UINT16_TYPE, UINT32_TYPE, UINT64_TYPE,
27292         INT_LEAST8_TYPE, INT_LEAST16_TYPE, INT_LEAST32_TYPE,
27293         INT_LEAST64_TYPE, UINT_LEAST8_TYPE, UINT_LEAST16_TYPE,
27294         UINT_LEAST32_TYPE, UINT_LEAST64_TYPE, INT_FAST8_TYPE,
27295         INT_FAST16_TYPE, INT_FAST32_TYPE, INT_FAST64_TYPE,
27296         UINT_FAST8_TYPE, UINT_FAST16_TYPE, UINT_FAST32_TYPE,
27297         UINT_FAST64_TYPE, INTPTR_TYPE, UINTPTR_TYPE): Document.
27298
27299 2009-03-31  Bernd Schmidt  <bernd.schmidt@analog.com>
27300
27301         * loop-iv.c (suitable_set_for_replacement): Renamed from
27302         simplify_using_assignment; changed to return bool and to accept new
27303         args DEST and SRC.  Return true iff we find a source/destination pair
27304         that can be used to make a replacement, and fill SRC and DEST if so.
27305         Remove arg ALTERED.  Don't deal with altered regs here.  All callers
27306         changed.
27307         (simplify_using_initial_values): Deal with altered regs here and track
27308         more precisely the effect they have on the validity of our expression.
27309
27310         * loop-iv.c (simplify_using_condition): A condition of the form
27311         (EQ REG CONST) can be used to simply make a substitution.
27312         (simplify_using_initial_values): Keep track of conditions we have seen
27313         and keep using them to simplify new expressions, while applying the
27314         same substitutions to them as to the expression.
27315
27316         * simplify-rtx.c (simplify_relational_operation_1): Simplify
27317         (LTU (PLUS a C) C) or (LTU (PLUS a C) a) to (GEU a -C); likewise with
27318         GEU/LTU reversed.
27319
27320         * loop-iv.c (determine_max_iter): New arg OLD_NITER.  All callers
27321         changed.  Use this when trying to improve the upper bound.
27322         Generate the comparison by using simplify_gen_relational.
27323
27324         * loop-iv.c (simple_rhs_p): Allow more kinds of expressions.
27325
27326         * loop-iv.c (replace_single_def_regs, replace_in_expr): New static
27327         functions.
27328         (simplify_using_assignment, simplify_using_initial_values): Call
27329         replace_in_expr to make replacements.  Call replace_single_def_regs
27330         once on the initial version of the expression.
27331
27332 2009-03-31  Ramana Radhakrishnan  <ramana.radhakrishnan@arm.com>
27333
27334         PR target/27237
27335         * doc/invoke.texi (ARM Options): Update documentation for -mthumb.
27336
27337 2009-03-31  Richard Guenther  <rguenther@suse.de>
27338
27339         PR middle-end/31029
27340         * fold-const.c (fold_binary): Fold X +- Y CMP X to Y CMP 0 for
27341         equality comparisons.  Fold C - X CMP X if C % 2 == 1.
27342
27343 2009-03-31  Richard Guenther  <rguenther@suse.de>
27344
27345         * tree.h (div_if_zero_remainder): Declare.
27346         * fold-const.c (div_if_zero_remainder): Export.
27347         * tree-ssa-forwprop.c
27348         (forward_propagate_addr_into_variable_array_index): Handle
27349         constant array index addition outside of the variable index.
27350
27351 2009-03-31  Joseph Myers  <joseph@codesourcery.com>
27352
27353         PR target/39592
27354         * config/i386/i386.md (*floatunssi<mode>2_1, two unnamed
27355         define_splits, floatunssi<mode>2): Require x87 conversions from
27356         DImode to be permitted.
27357
27358 2009-03-31  Joseph Myers  <joseph@codesourcery.com>
27359
27360         PR preprocessor/15638
27361         * c-common.c (c_cpp_error): Handle CPP_DL_FATAL.
27362
27363 2009-03-31  Richard Guenther  <rguenther@suse.de>
27364
27365         PR middle-end/23401
27366         PR middle-end/27810
27367         * tree.h (DECL_GIMPLE_FORMAL_TEMP_P): Remove.
27368         (struct tree_decl_with_vis): Remove gimple_formal_temp member.
27369         * tree-eh.c (lower_eh_constructs_2): Move LHS assignment to
27370         a separate statement.
27371         * gimplify.c (pop_gimplify_context): Remove formal temp handling.
27372         (lookup_tmp_var): Likewise.
27373         (is_gimple_formal_tmp_or_call_rhs): Remove.
27374         (is_gimple_reg_or_call_rhs): Rename to ...
27375         (is_gimple_reg_rhs_or_call): ... this.
27376         (is_gimple_mem_or_call_rhs): Rename to ...
27377         (is_gimple_mem_rhs_or_call): ... this.
27378         (internal_get_tmp_var): Use is_gimple_reg_rhs_or_call.  Set
27379         DECL_GIMPLE_REG_P only if is_formal is true.
27380         (gimplify_compound_lval): Use is_gimple_reg.  Remove workaround
27381         for non-proper post-modify expression gimplification.
27382         (gimplify_self_mod_expr): For post-modify expressions gimplify
27383         the lvalue to a minimal lvalue.
27384         (rhs_predicate_for): Remove formal temp case.
27385         (gimplify_modify_expr_rhs): Likewise.
27386         (gimplify_addr_expr): Use is_gimple_reg.
27387         (gimplify_expr): Remove formal temp cases.
27388         (gimple_regimplify_operands): Likewise.
27389         * tree-ssa-pre.c (get_or_alloc_expr_for): Treat EXC_PTR_EXPR
27390         and FILTER_EXPR like constants.
27391         * gimple.c (walk_gimple_op): Fix val_only initialization, use
27392         is_gimple_reg.
27393         (is_gimple_formal_tmp_rhs): Remove.
27394         (is_gimple_reg_rhs): Remove special casing.
27395         (is_gimple_mem_rhs): Fix.
27396         (is_gimple_reg): Move DECL_GIMPLE_REG_P handling earlier.
27397         (is_gimple_formal_tmp_var): Remove.
27398         (is_gimple_formal_tmp_reg): Likewise.
27399         (is_gimple_min_lval): Allow invariant component ref parts.
27400         * gimple.h (is_gimple_formal_tmp_rhs, is_gimple_formal_tmp_var,
27401         is_gimple_formal_tmp_reg): Remove declarations.
27402         * tree-cfg.c (verify_expr): Verify that variables with address
27403         taken do not have DECL_GIMPLE_REG_P set.
27404         * tree-mudflap.c (mf_build_check_statement_for): Use
27405         force_gimple_operand instead of gimplify_expr.
27406
27407 2009-03-31  Ayal Zaks  <zaks@il.ibm.com>
27408
27409         * modulo-sched.c (sms_schedule_by_order): Pass the actual
27410         schedulable rows to compute_split_row.
27411
27412 2009-03-31  Ben Elliston  <bje@au.ibm.com>
27413
27414         PR target/31635
27415         * config/rs6000/rs6000.c (rs6000_handle_option): Handle
27416         OPT_mvrsave.
27417
27418 2009-03-31  Alan Modra  <amodra@bigpond.net.au>
27419
27420         * doc/invoke.texi (RS/6000 and PowerPC Options):Document mtls-markers.
27421         * configure.ac (HAVE_AS_TLS_MARKERS): New gas feature check.
27422         * configure: Regenerate.
27423         * config.in: Regenerate.
27424         * config/rs6000/rs6000.opt (mtls-markers): Add.
27425         * config/rs6000/rs6000.h (TARGET_TLS_MARKERS): Define.
27426         * config/rs6000/rs6000.md (tls_gd_aix, tls_gd_sysv): Add splitter.
27427         (tls_ld_aix, tls_ld_sysv): Likewise.
27428         (tls_gd, tls_gd_call_aix, tls_gd_call_sysv): New insns.
27429         (tls_ld, tls_ld_call_aix, tls_ld_call_sysv): Likewise.
27430
27431 2009-03-31  Alan Modra  <amodra@bigpond.net.au>
27432
27433         * config/spu/spu.c (spu_expand_prologue): Delete redundant code.
27434
27435 2009-03-30  Jan Hubicka  <jh@suse.cz>
27436
27437         * tree-eh.c (make_eh_edges): Set probability 100% to first edge
27438         out of RESX.
27439         (tree_remove_unreachable_handlers): Cleanup EH predecestor
27440         detection and label handling.
27441
27442 2009-03-30  Vladimir Makarov  <vmakarov@redhat.com>
27443
27444         * ira-int.h (ira_allocno): Rename left_conflicts_num to
27445         left_conflicts_size.
27446         (ALLOCNO_LEFT_CONFLICTS_NUM): Rename to
27447         ALLOCNO_LEFT_CONFLICTS_SIZE.
27448
27449         * ira-color.c (allocno_spill_priority, push_allocno_to_stack,
27450         remove_allocno_from_bucket_and_push,
27451         allocno_spill_priority_compare, push_allocnos_to_stack,
27452         setup_allocno_available_regs_num): Use ALLOCNO_LEFT_CONFLICTS_SIZE
27453         instead of ALLOCNO_LEFT_CONFLICTS_NUM.
27454         (setup_allocno_left_conflicts_num): Ditto.  Rename to
27455         setup_allocno_left_conflicts_size.
27456         (put_allocno_into_bucket): Use ALLOCNO_LEFT_CONFLICTS_SIZE
27457         instead of ALLOCNO_LEFT_CONFLICTS_NUM and
27458         setup_allocno_left_conflicts_size instead of
27459         setup_allocno_left_conflicts_num.
27460
27461         * ira-build.c (ira_create_allocno): Use
27462         ALLOCNO_LEFT_CONFLICTS_SIZE instead of
27463         ALLOCNO_LEFT_CONFLICTS_NUM.
27464
27465 2009-03-30  Vladimir Makarov  <vmakarov@redhat.com>
27466
27467         * reload.c (push_reload, find_dummy_reload): Use df_get_live_out
27468         instead of DF_LR_OUT.
27469
27470         * ira-lives.c (process_bb_node_lives): Ditto.
27471
27472         * ira-color.c (ira_loop_edge_freq): Use df_get_live_{out,in}
27473         instead of DF_LR_{OUT,IN}.
27474
27475         * ira-emit.c (generate_edge_moves, add_ranges_and_copies): Ditto.
27476
27477         * ira-build.c (create_bb_allocnos, create_loop_allocnos): Ditto.
27478
27479 2009-03-30  Jan Hubicka  <jh@suse.cz>
27480
27481         * except.c (label_to_region_map): Fix thinko.
27482
27483 2009-03-30  Steve Ellcey  <sje@cup.hp.com>
27484
27485         PR middle-end/38237
27486         * tree.h (tree_find_value): New declaration.
27487         * tree.c (tree_find_value): New function.
27488         * varasm.c (assemble_external): Avoid duplicate entries on lists.
27489
27490 2009-03-30  Jakub Jelinek  <jakub@redhat.com>
27491
27492         PR debug/39563
27493         * c-decl.c (struct c_binding): Add locus field.
27494         (bind): Add locus argument, set locus field from it.
27495         (pop_scope): For b->nested VAR_DECL or FUNCTION_DECL,
27496         add a DECL_EXTERNAL copy of b->decl to current BLOCK_VARS.
27497         (push_file_scope, pushtag, pushdecl, pushdecl_top_level,
27498         implicitly_declare, undeclared_variable, lookup_label,
27499         declare_label, c_make_fname_decl, c_builtin_function,
27500         c_builtin_function_ext_scope, store_parm_decls_newstyle): Adjust
27501         bind callers.
27502
27503 2009-03-30  H.J. Lu  <hongjiu.lu@intel.com>
27504
27505         PR target/38781
27506         * config/i386/i386.c (classify_argument): Check total size of
27507         structure.
27508
27509 2009-03-30  Martin Jambor  <mjambor@suse.cz>
27510
27511         * ipa-prop.h (jump_func_type): Rename IPA_UNKNOWN, IPA_CONST,
27512         IPA_CONST_MEMBER_PTR, and IPA_PASS_THROUGH to IPA_JF_UNKNOWN,
27513         IPA_JF_CONST, IPA_JF_CONST_MEMBER_PTR, and IPA_JF_PASS_THROUGH
27514         respectively.
27515
27516         * tree-dfa.c (get_ref_base_and_extent): Return -1 maxsize if
27517         seen_variable_array_ref while also traversing a union.
27518
27519         * tree-inline.c (optimize_inline_calls): Do not call
27520         cgraph_node_remove_callees.
27521         * cgraphbuild.c (remove_cgraph_callee_edges): New function.
27522         (pass_remove_cgraph_callee_edges): New variable.
27523         * passes.c (init_optimization_passes): Add
27524         pass_remove_cgraph_callee_edges after early inlining and before all
27525         late intraprocedural passes.
27526
27527         * omp-low.c (expand_omp_taskreg): Always set current_function_decl.
27528
27529 2009-03-30  Paolo Bonzini  <bonzini@gnu.org>
27530
27531         * config/sparc/sparc.md (*nand<V64mode>_vis, *nand<V32mode>_vis):
27532         Fix typos in names.
27533
27534 2009-03-30  Paolo Bonzini  <bonzini@gnu.org>
27535
27536         * combine.c (simplify_comparison): Use have_insn_for.
27537         * dojump.c (do_jump): Likewise.
27538
27539 2009-03-30  Paolo Bonzini  <bonzini@gnu.org>
27540
27541         * config/sparc/sparc.c (sparc_compare_emitted): Remove.
27542         (gen_compare_reg, emit_v9_brxx_insn): Handle MODE_CC
27543         sparc_compare_op0 like sparc_compare_emitted used to be handled.
27544         (sparc_expand_compare_and_swap_12): Set sparc_compare_op0
27545         instead of sparc_compare_emitted.
27546         * config/sparc/sparc.h (sparc_compare_emitted): Remove.
27547         * config/sparc/sparc.md (stack_protect_test): Set sparc_compare_op0
27548         instead of sparc_compare_emitted.
27549
27550 2009-03-30  Paolo Bonzini  <bonzini@gnu.org>
27551
27552         * bb-reorder.c (partition_hot_cold_basic_blocks): Do not
27553         enter/exit cfglayout mode.
27554         (pass_partition_block): Require it.
27555         * combine.c (find_single_use, reg_dead_at_p): Use CFG.
27556         (combine_instructions): Track basic blocks instead of labels.
27557         (update_cfg_for_uncondjump): New.
27558         (try_combine): Use it.  Update jumps after rescanning.
27559         (pass_combine): Require PROP_cfglayout.
27560         * passes.c (pass_outof_cfg_layout_mode): Move after regmove.
27561
27562 2009-03-30  Paolo Bonzini  <bonzini@gnu.org>
27563
27564         * cfglayout.c (pass_into_cfg_layout_mode, pass_outof_cfg_layout_mode):
27565         Provide/destroy PROP_cfglayout respectively.
27566         * gcse.c (pass_jump_bypass, pass_gcse): Require it.
27567         * tree-pass.h (PROP_cfglayout): New.
27568
27569 2009-03-30  Paolo Bonzini  <bonzini@gnu.org>
27570
27571         * fold-const.c (const_binop, fold_convert_const_real_from_fixed,
27572         fold_convert_const_fixed_from_fixed,
27573         fold_convert_const_fixed_from_int,
27574         fold_convert_const_fixed_from_real, fold_negate_const): Do not
27575         set TREE_CONSTANT_OVERFLOW.
27576         * tree.def: Remove mention of TREE_CONSTANT_OVERFLOW.
27577         * tree.h (TREE_CONSTANT_OVERFLOW): Delete.
27578
27579 2009-03-30  Ira Rosen  <irar@il.ibm.com>
27580
27581         * tree-vect-loop-manip.c: New file.
27582         * tree-vectorizer.c: Update documentation and included files.
27583         (vect_loop_location): Make extern.
27584         (rename_use_op): Move to tree-vect-loop-manip.c
27585         (rename_variables_in_bb, rename_variables_in_loop,
27586         slpeel_update_phis_for_duplicate_loop,
27587         slpeel_update_phi_nodes_for_guard1,
27588         slpeel_update_phi_nodes_for_guard2, slpeel_make_loop_iterate_ntimes,
27589         slpeel_tree_duplicate_loop_to_edge_cfg, slpeel_add_loop_guard,
27590         slpeel_can_duplicate_loop_p, slpeel_verify_cfg_after_peeling,
27591         set_prologue_iterations, slpeel_tree_peel_loop_to_edge,
27592         find_loop_location): Likewise.
27593         (new_stmt_vec_info): Move to tree-vect-stmts.c.
27594         (init_stmt_vec_info_vec, free_stmt_vec_info_vec, free_stmt_vec_info,
27595         get_vectype_for_scalar_type, vect_is_simple_use,
27596         supportable_widening_operation, supportable_narrowing_operation):
27597         Likewise.
27598         (bb_in_loop_p): Move to tree-vect-loop.c.
27599         (new_loop_vec_info, destroy_loop_vec_info,
27600         reduction_code_for_scalar_code, report_vect_op,
27601         vect_is_simple_reduction, vect_is_simple_iv_evolution): Likewise.
27602         (vect_can_force_dr_alignment_p): Move to tree-vect-data-refs.c.
27603         (vect_supportable_dr_alignment): Likewise.
27604         * tree-vectorizer.h (tree-data-ref.h): Include.
27605         (vect_loop_location): Declare.
27606         Reorganize function declarations according to the new file structure.
27607         * tree-vect-loop.c: New file.
27608         * tree-vect-analyze.c: Remove. Move functions to tree-vect-data-refs.c,
27609         tree-vect-stmts.c, tree-vect-slp.c, tree-vect-loop.c.
27610         * tree-vect-data-refs.c: New file.
27611         * tree-vect-patterns.c (timevar.h): Don't include.
27612         * tree-vect-stmts.c: New file.
27613         * tree-vect-transform.c: Remove. Move functions to tree-vect-stmts.c,
27614         tree-vect-slp.c, tree-vect-loop.c.
27615         * Makefile.in (OBJS-common): Remove tree-vect-analyze.o and
27616         tree-vect-transform.o. Add tree-vect-data-refs.o, tree-vect-stmts.o,
27617         tree-vect-loop.o, tree-vect-loop-manip.o, tree-vect-slp.o.
27618         (tree-vect-analyze.o): Remove.
27619         (tree-vect-transform.o): Likewise.
27620         (tree-vect-data-refs.o): Add rule.
27621         (tree-vect-stmts.o, tree-vect-loop.o, tree-vect-loop-manip.o,
27622         tree-vect-slp.o): Likewise.
27623         (tree-vect-patterns.o): Remove redundant dependencies.
27624         (tree-vectorizer.o): Likewise.
27625         * tree-vect-slp.c: New file.
27626
27627 2009-03-30  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
27628
27629         * optc-gen.awk: Warn if an option flag has multiple different
27630         help strings.
27631
27632 2009-03-30  Sebastian Pop  <sebastian.pop@amd.com>
27633
27634         * doc/invoke.texi (-floop-interchange, -floop-strip-mine,
27635         -floop-block): Document dependences on PPL, CLooG and Graphite.
27636
27637 2009-03-30  Joseph Myers  <joseph@codesourcery.com>
27638
27639         PR rtl-optimization/323
27640         * c-common.c (c_fully_fold, convert_and_check,
27641         c_common_truthvalue_conversion): Handle EXCESS_PRECISION_EXPR.
27642         (c_fully_fold_internal): Disallow EXCESS_PRECISION_EXPR.
27643         * c-common.def (EXCESS_PRECISION_EXPR): New.
27644         * c-cppbuiltin.c (builtin_define_float_constants): Define
27645         constants with enough digits for long double.
27646         * c-lex.c (interpret_float): Interpret constant with excess
27647         precision where appropriate.
27648         * c-opts.c (c_common_post_options): Set
27649         flag_excess_precision_cmdline.  Give an error for
27650         -fexcess-precision=standard for C++ for processors where the
27651         option is significant.
27652         * c-parser.c (c_parser_conditional_expression): Handle excess
27653         precision in condition.
27654         * c-typeck.c (convert_arguments): Handle arguments with excess
27655         precision.
27656         (build_unary_op): Move excess precision outside operation.
27657         (build_conditional_expr): Likewise.
27658         (build_compound_expr): Likewise.
27659         (build_c_cast): Do cast on operand of EXCESS_PRECISION_EXPR.
27660         (build_modify_expr): Handle excess precision in RHS.
27661         (convert_for_assignment): Handle excess precision in converted
27662         value.
27663         (digest_init, output_init_element, process_init_element): Handle
27664         excess precision in initializer.
27665         (c_finish_return): Handle excess precision in return value.
27666         (build_binary_op): Handle excess precision in operands and add
27667         excess precision as needed for operation.
27668         * common.opt (-fexcess-precision=): New option.
27669         * config/i386/i386.h (X87_ENABLE_ARITH, X87_ENABLE_FLOAT): New.
27670         * config/i386/i386.md (float<SSEMODEI24:mode><X87MODEF:mode>2):
27671         For standard excess precision, output explicit conversion to and
27672         truncation from XFmode.
27673         (*float<SSEMODEI24:mode><X87MODEF:mode>2_1,
27674         *float<SSEMODEI24:mode><X87MODEF:mode>2_i387_with_temp,
27675         *float<SSEMODEI24:mode><X87MODEF:mode>2_i387, two unnamed
27676         define_splits, floatdi<X87MODEF:mode>2_i387_with_xmm, two unnamed
27677         define_splits, *floatunssi<mode>2_1, two unnamed define_splits,
27678         floatunssi<mode>2, add<mode>3, sub<mode>3, mul<mode>3, divdf3,
27679         divsf3, *fop_<mode>_comm_i387, *fop_<mode>_1_i387,
27680         *fop_<MODEF:mode>_2_i387, *fop_<MODEF:mode>_3_i387,
27681         *fop_df_4_i387, *fop_df_5_i387, *fop_df_6_i387, two unnamed
27682         define_splits, sqrt<mode>2): Disable where appropriate for
27683         standard excess precision.
27684         * convert.c (convert_to_real): Do not shorten arithmetic to type
27685         for which excess precision would be used.
27686         * defaults.h (TARGET_FLT_EVAL_METHOD_NON_DEFAULT): Define.
27687         * doc/invoke.texi (-fexcess-precision=): Document option.
27688         (-mfpmath=): Correct index entry.
27689         * flags.h (enum excess_precision, flag_excess_precision_cmdline,
27690         flag_excess_precision): New.
27691         * langhooks.c (lhd_post_options): Set
27692         flag_excess_precision_cmdline.
27693         * opts.c (common_handle_option): Handle -fexcess-precision=.
27694         * toplev.c (flag_excess_precision_cmdline, flag_excess_precision,
27695         init_excess_precision): New.
27696         (lang_dependent_init_target): Call init_excess_precision.
27697         * tree.c (excess_precision_type): New.
27698         * tree.h (excess_precision_type): Declare.
27699
27700 2009-03-30  Joseph Myers  <joseph@codesourcery.com>
27701
27702         PR c/35235
27703         * c-typeck.c (build_component_ref): Do not copy qualifiers from
27704         non-lvalue to component.
27705
27706 2009-03-29  Joseph Myers  <joseph@codesourcery.com>
27707
27708         PR preprocessor/34695
27709         * Makefile.in (c-opts.o): Depend on c-tree.h.
27710         * c-common.c: Move down include of diagnostic.h.
27711         (done_lexing, c_cpp_error): New.
27712         * c-common.h (done_lexing): Declare.
27713         * c-decl.c (c_write_global_declarations): Don't check cpp_errors
27714         (parse_in).
27715         * c-opts.c: Include c-tree.h.
27716         (c_common_init_options): Set preprocessor error callback.
27717         (c_common_handle_option): Do not set preprocessor
27718         inhibit_warnings, warnings_are_errors, warn_system_headers,
27719         pedantic_errors or inhibit_warnings flags.
27720         (c_common_post_options): Do not check cpp_errors (parse_in).
27721         (c_common_finish): Do not output dependencies if there were
27722         errors.  Do not check return value of cpp_finish.
27723         * c-ppoutput.c (pp_file_change): Set input_location.
27724         * c-tree.h (c_cpp_error): Declare.
27725         * diagnostic.c (diagnostic_set_info_translated): Also initialize
27726         override_column.
27727         (diagnostic_build_prefix): Check override_column.
27728         * diagnostic.h (diagnostic_info): Add override_column field.
27729         (diagnostic_override_column): Define.
27730
27731 2009-03-28  Paolo Bonzini  <bonzini@gnu.org>
27732
27733         * c-common.c (c_expand_expr, c_staticp): Remove.
27734         * c-common.def (COMPOUND_LITERAL_EXPR): Delete.
27735         * c-common.h (emit_local_var, c_staticp, COMPOUND_LITERAL_EXPR_DECL,
27736         COMPOUND_LITERAL_EXPR_DECL_EXPR): Remove.
27737         * c-gimplify.c (gimplify_compound_literal_expr,
27738         optimize_compound_literals_in_ctor): Remove.
27739         (c_gimplify_expr): Remove COMPOUND_LITERAL_EXPR handling.
27740         * c-objc-common.h (LANG_HOOKS_STATICP): Remove.
27741         * c-semantics.c (emit_local_var): Remove.
27742
27743         * langhooks-def.h (lhd_expand_expr): Remove.
27744         * langhooks.c (lhd_expand_expr): Remove.
27745         * langhooks.h (LANG_HOOKS_DEF): Remove LANG_HOOKS_EXPAND_EXPR.
27746
27747         * expr.c (expand_expr_real_1): Move COMPOUND_LITERAL_EXPR
27748         handling from c-semantics.c; don't call into langhook.
27749         (expand_expr_addr_expr_1): Check that we don't get non-GENERIC trees.
27750         * gimplify.c (gimplify_compound_literal_expr,
27751         optimize_compound_literals_in_ctor): Move from c-gimplify.c.
27752         (gimplify_init_constructor): Call optimize_compound_literals_in_ctor.
27753         (gimplify_modify_expr_rhs, gimplify_expr): Handle COMPOUND_LITERAL_EXPR
27754         as was done in c-gimplify.c.
27755         * tree.c (staticp): Move COMPOUND_LITERAL_EXPR handling from c_staticp.
27756         * tree.h (COMPOUND_LITERAL_EXPR_DECL, COMPOUND_LITERAL_EXPR_DECL_EXPR):
27757         Move from c-common.h.
27758         * tree.def (COMPOUND_LITERAL_EXPR): Move from c-common.def.
27759
27760         * tree.c (staticp): Do not call langhook.
27761         * langhooks.c (lhd_staticp): Delete.
27762         * langhooks-def.h (lhd_staticp): Delete prototype.
27763         (LANG_HOOKS_STATICP): Delete.
27764         (LANG_HOOKS_INITIALIZER): Delete LANG_HOOKS_STATICP.
27765
27766         * doc/c-tree.texi (Expression nodes): Refer to DECL_EXPRs
27767         instead of DECL_STMTs.
27768
27769 2009-03-29  Joseph Myers  <joseph@codesourcery.com>
27770
27771         PR c/456
27772         PR c/5675
27773         PR c/19976
27774         PR c/29116
27775         PR c/31871
27776         PR c/35198
27777         * builtins.c (fold_builtin_sincos): Build COMPOUND_EXPR in
27778         void_type_node.
27779         (fold_call_expr): Return a NOP_EXPR from folding rather than the
27780         contained expression.
27781         * c-common.c (c_fully_fold, c_fully_fold_internal, c_save_expr): New.
27782         (c_common_truthvalue_conversion): Use c_save_expr.  Do not fold
27783         conditional expressions for C.
27784         (decl_constant_value_for_optimization): Move from
27785         decl_constant_value_for_broken_optimization in c-typeck.c.  Check
27786         whether optimizing and that the expression is a VAR_DECL not of
27787         array type instead of doing such checks in the caller.  Do not
27788         check pedantic.  Call gcc_unreachable for C++.
27789         * c-common.def (C_MAYBE_CONST_EXPR): New.
27790         * c-common.h (c_fully_fold, c_save_expr,
27791         decl_constant_value_for_optimization): New prototypes.
27792         (C_MAYBE_CONST_EXPR_PRE, C_MAYBE_CONST_EXPR_EXPR,
27793         C_MAYBE_CONST_EXPR_INT_OPERANDS, C_MAYBE_CONST_EXPR_NON_CONST,
27794         EXPR_INT_CONST_OPERANDS): Define.
27795         * c-convert.c (convert): Strip nops from expression.
27796         * c-decl.c (groktypename): Take extra parameters expr and
27797         expr_const_operands.  Update call to grokdeclarator.
27798         (start_decl): Update call to grokdeclarator.  Add statement for
27799         expressions used in type of decl.
27800         (grokparm): Update call to grokdeclarator.
27801         (push_parm_decl): Update call to grokdeclarator.
27802         (build_compound_literal): Add parameter non_const and build a
27803         C_MAYBE_COSNT_EXPR if applicable.
27804         (grokdeclarator): Take extra parameters expr and
27805         expr_const_operands.  Track expressions used in declaration
27806         specifiers and declarators.  Fold array sizes and track whether
27807         they are constant expressions and whether they are integer
27808         constant expressions.
27809         (parser_xref_tag): Set expr and expr_const_operands fields in
27810         return value.
27811         (grokfield): Update call to grokdeclarator.
27812         (start_function): Update call to grokdeclarator.
27813         (build_null_declspecs): Set expr and expr_const_operands fields in
27814         return value.
27815         (declspecs_add_type): Handle expressions in typeof specifiers.
27816         * c-parser.c (c_parser_declspecs): Set expr and
27817         expr_const_operands fields for declaration specifiers.
27818         (c_parser_enum_specifier): Likewise.
27819         (c_parser_struct_or_union_specifier): Likewise.
27820         (c_parser_typeof_specifier): Likewise.  Update call to
27821         groktypename.  Fold expression as needed.  Return expressions with
27822         type instead of adding statements.
27823         (c_parser_attributes): Update calls to c_parser_expr_list.
27824         (c_parser_statement_after_labels): Fold expression before passing
27825         to objc_build_throw_stmt.
27826         (c_parser_condition): Fold expression.
27827         (c_parser_asm_operands): Fold expression.
27828         (c_parser_conditional_expression): Use c_save_expr.  Update call
27829         to build_conditional_expr.
27830         (c_parser_alignof_expression): Update call to groktypename.
27831         (c_parser_postfix_expression): Preserve C_MAYBE_CONST_EXPR as
27832         original_code.  Fold expression argument of va_arg.  Create
27833         C_MAYBE_CONST_EXPR to preserve side effects of expressions in type
27834         argument to va_arg.  Update calls to groktypename.  Fold array
27835         index for offsetof.  Verify that first argument to
27836         __builtin_choose_expr has integer type.
27837         (c_parser_postfix_expression_after_paren_type): Update calls to
27838         groktypename and build_compound_literal.  Handle expressions with
27839         side effects in type name.
27840         (c_parser_postfix_expression_after_primary): Update call to
27841         c_parser_expr_list.  Set original_code for calls to
27842         __builtin_constant_p.
27843         (c_parser_expr_list): Take extra parameter fold_p.  Fold
27844         expressions if requested.
27845         (c_parser_objc_type_name): Update call to groktypename.
27846         (c_parser_objc_synchronized_statement): Fold expression.
27847         (c_parser_objc_receiver): Fold expression.
27848         (c_parser_objc_keywordexpr): Update call to c_parser_expr_list.
27849         (c_parser_omp_clause_num_threads, c_parser_omp_clause_schedule,
27850         c_parser_omp_atomic, c_parser_omp_for_loop): Fold expressions.
27851         * c-tree.h (CONSTRUCTOR_NON_CONST): Define.
27852         (struct c_typespec): Add elements expr and expr_const_operands.
27853         (struct c_declspecs): Add elements expr and expr_const_operands.
27854         (groktypename, build_conditional_expr, build_compound_literal):
27855         Update prototypes.
27856         (in_late_binary_op): Declare.
27857         * c-typeck.c (note_integer_operands): New function.
27858         (in_late_binary_op): New variable.
27859         (decl_constant_value_for_broken_optimization): Move to c-common.c
27860         and rename to decl_constant_value_for_optimization.
27861         (default_function_array_conversion): Do not strip nops.
27862         (default_conversion): Do not call
27863         decl_constant_value_for_broken_optimization.
27864         (build_array_ref): Do not fold result.
27865         (c_expr_sizeof_expr): Fold operand.  Use C_MAYBE_CONST_EXPR for
27866         result when operand is a VLA.
27867         (c_expr_sizeof_type): Update call to groktypename.  Handle
27868         expressions included in type name.  Use C_MAYBE_CONST_EXPR for
27869         result when operand names a VLA type.
27870         (build_function_call): Update call to build_compound_literal.
27871         Only fold result for calls to __builtin_* functions.  Strip
27872         NOP_EXPR from INTEGER_CST returned from such functions.  Fold
27873         the function designator.
27874         (convert_arguments): Fold arguments.  Update call to
27875         convert_for_assignment.
27876         (build_unary_op): Handle increment and decrement of
27877         C_MAYBE_CONST_EXPR.  Move lvalue checks for increment and
27878         decrement earlier.  Fold operand of increment and decrement.
27879         Handle address of C_MAYBE_CONST_EXPR.  Only fold expression being
27880         built for integer operand.  Wrap returns that are INTEGER_CSTs
27881         without being integer constant expressions or that have integer
27882         constant operands without being INTEGER_CSTs.
27883         (lvalue_p): Handle C_MAYBE_CONST_EXPR.
27884         (build_conditional_expr): Add operand ifexp_bcp.  Track whether
27885         result is an integer constant expression or can be used in
27886         unevaluated parts of one and avoid folding and wrap as
27887         appropriate.  Fold operands before possibly doing -Wsign-compare
27888         warnings.
27889         (build_compound_expr): Wrap result for C99 if operands can be used
27890         in integer constant expressions.
27891         (build_c_cast): Update call to digest_init.  Do not ignore
27892         overflow from casting floating-point constants to integers.  Wrap
27893         results that could be confused with integer constant expressions,
27894         null pointer constants or floating-point constants.
27895         (c_cast_expr): Update call to groktypename.  Handle expressions
27896         included in type name.
27897         (build_modify_expr): Handle modifying a C_MAYBE_CONST_EXPR.  Fold
27898         lhs inside possible SAVE_EXPR.  Fold RHS before assignment.
27899         Update calls to convert_for_assignment.
27900         (convert_for_assignment): Take new parameter
27901         null_pointer_constant.  Do not strip nops or call
27902         decl_constant_value_for_broken_optimization.  Set
27903         in_late_binary_op for conversions to boolean.
27904         (store_init_value): Update call to digest_init.
27905         (digest_init): Take new parameter null_pointer_constant.  Do not
27906         call decl_constant_value_for_broken_optimization.  pedwarn for
27907         initializers not constant expressions.  Update calls to
27908         convert_for_assignment.
27909         (constructor_nonconst): New.
27910         (struct constructor_stack): Add nonconst element.
27911         (really_start_incremental_init, push_init_level, pop_init_level):
27912         Handle constructor_nonconst and nonconst element.
27913         (set_init_index): Call constant_expression_warning for array
27914         designators.
27915         (output_init_element): Fold value.  Set constructor_nonconst as
27916         applicable.  pedwarn for initializers not constant expressions.
27917         Update call to digest_init.  Call constant_expression_warning
27918         where constant initializers are required.
27919         (process_init_element): Use c_save_expr.
27920         (c_finish_goto_ptr): Fold expression.
27921         (c_finish_return): Fold return value.  Update call to
27922         convert_for_assignment.
27923         (c_start_case): Fold switch expression.
27924         (c_process_expr_stmt): Fold expression.
27925         (c_finish_stmt_expr): Create C_MAYBE_CONST_EXPR as needed to
27926         ensure statement expression is not evaluated in constant expression.
27927         (build_binary_op): Track whether results are integer constant
27928         expressions or may occur in such, disable folding and wrap results
27929         as applicable.  Fold operands for -Wsign-compare warnings unless
27930         in_late_binary_op.
27931         (c_objc_common_truthvalue_conversion): Handle results folded to
27932         integer constants that are not integer constant expressions.
27933         * doc/extend.texi: Document when typeof operands are evaluated,
27934         that condition of __builtin_choose_expr is an integer constant
27935         expression, and more about use of __builtin_constant_p in
27936         initializers.
27937
27938 2009-03-29  Richard Guenther  <rguenther@suse.de>
27939
27940         * tree-ssa-forwprop.c (forward_propagate_addr_expr_1): Properly
27941         propagate addresses of array references.
27942
27943 2009-03-29  Steven Bosscher  <steven@gcc.gnu.org>
27944
27945         * regmove.c (perhaps_ends_bb_p): Remove.
27946         (optimize_reg_copy_1): Don't call perhaps_ends_bb_p.  Get basic block
27947         from INSN and check that the main loop stays within that basic block.
27948         (optimize_reg_copy_1, optimize_reg_copy_3, fixup_match_2): Likewise.
27949         (regmove_forward_pass): Split out from regmove_optimize.  Use
27950         FOR_EACH_BB and FOR_BB_INSNS instead of traversing the insns stream.
27951         (regmove_backward_pass): Split out from regmove_optimize.  Use
27952         FOR_EACH_BB_REVERSE and FOR_BB_INSNS_REVERS_SAFE.
27953         (regmove_optimize): Simplify.
27954
27955 2009-03-29  H.J. Lu  <hongjiu.lu@intel.com>
27956
27957         PR target/39545
27958         * config/i386/i386.c (classify_argument): Ignore flexible array
27959         member in struct and warn ABI change.
27960
27961 2009-03-29  H.J. Lu  <hongjiu.lu@intel.com>
27962
27963         * config/i386/i386-protos.h (ix86_agi_dependent): New.
27964
27965         * config/i386/i386.c (ix86_agi_dependent): Rewrite.
27966         (ix86_adjust_cost): Updated.
27967
27968 2009-03-29  Jan Hubicka  <jh@suse.cz>
27969
27970         PR middle-end/28850
27971         * tree-pass.h (pass_cleanup_eh): New function.
27972         (remove_unreachable_regions): Break code handling RTL
27973         to rtl_remove_unreachable_regions; remove ERT_MUST_NOT_THROW
27974         that can not be reached by runtime.
27975         (can_be_reached_by_runtime): New function.
27976         (label_to_region_map): New function.
27977         (num_eh_regions): New function.
27978         (rtl_remove_unreachable_regions): New function.
27979         (convert_from_eh_region_ranges): Call rtl_remove_unreachable_regions.
27980         (remove_eh_region): New function.
27981         * except.h: Include sbitmap and vecprim.
27982         (remove_eh_region, remove_unreachable_regions, label_to_region_map,
27983         num_eh_regions): Declare.
27984         * passes.c (init_optimization_passes): Schedule cleanup_eh.
27985         * Makefile.in (EXCEPT_H): New; replace all uses of except.h by it.
27986         * tree-eh.c (tree_remove_unreachable_handlers): New function.
27987         (tree_empty_eh_handler_p): New function.
27988         (cleanup_empty_eh): New function.
27989         (cleanup_eh): New function.
27990         (pass_cleanup_eh): New function.
27991
27992 2009-03-29  Jan Hubicka  <jh@suse.cz>
27993
27994         * except.c (verify_eh_tree): Fix handling of fun!=cfun; be ready
27995         for removed regions.
27996
27997 2009-03-29  Jan Hubicka  <jh@suse.cz>
27998
27999         * except.c (dump_eh_tree): Dump all datastructures.
28000
28001 2009-03-29  Jan Hubicka  <jh@suse.cz>
28002
28003         * except.c (duplicate_eh_regions_0): Handle AKA bitmap.
28004         (duplicate_eh_regions_1): Likewise.
28005         (duplicate_eh_regions): Likewise; cleanup code gorwing the region
28006         vector; call EH verification.
28007         (foreach_reachable_handler, can_throw_internal_1, can_throw_external_1):
28008         Be ready for region being removed.
28009
28010 2009-03-29  Jan Hubicka  <jh@suse.cz>
28011
28012         * bitmap.c (bitmap_last_set_bit): New function.
28013         * bitmap.h (bitmap_last_set_bit): Declare.
28014
28015 2009-03-29  David Ayers  <ayers@fsfe.org>
28016
28017         PR objc/27377
28018         * c-typeck.c (build_conditional_expr): Emit ObjC warnings
28019         by calling objc_compare_types and surpress warnings about
28020         incompatible C pointers that are compatible ObjC pointers.
28021
28022 2009-03-29  Adam Nemet  <anemet@caviumnetworks.com>
28023
28024         * cgraphbuild.c (build_cgraph_edges, rebuild_cgraph_edges): Don't
28025         call initialize_inline_failed.
28026         (initialize_inline_failed): Move it from here ...
28027         * cgraph.c (initialize_inline_failed): ... to here.
28028         (cgraph_create_edge): Call initialize_inline_failed rather than
28029         setting inline_failed directly.
28030
28031 2009-03-29  Ben Elliston  <bje@au.ibm.com>
28032
28033         PR target/32542
28034         * sysv4.opt (msdata): Improve comment.
28035         * linux64.h (ASM_SPEC32): Do not pass -memb when -msdata is given.
28036         * sysv4.h (SVR4_ASM_SPEC): Likewise.
28037
28038 2009-03-29  Ben Elliston  <bje@au.ibm.com>
28039
28040         PR target/30451
28041         * config/rs6000/rs6000.md (*movti_ppc64): Correct the order of
28042         load and store attributes.
28043
28044 2009-03-29  Ben Elliston  <bje@au.ibm.com>
28045
28046         * config/i386/i386.c (enum ix86_builtins): Add IX86_BUILTIN_HUGE_VALQ.
28047         (ix86_init_builtins): Add built-in function __builtin_huge_valq.
28048         (ix86_expand_builtin): Handle IX86_BUILTIN_HUGE_VALQ.
28049         * doc/extend.texi (X86 Built-in Functions): Add index entries for
28050         __builtin_infq and __builtin_huge_valq.
28051
28052 2009-03-28  Anatoly Sokolov  <aesok@post.ru>
28053
28054         * config/avr/avr.c (avr_mcu_t): Add atmega8c1, atmega16c1 and
28055         atmega8m1 devices.
28056         * config/avr/avr.h (LINK_SPEC, CRT_BINUTILS_SPECS): (Ditto.).
28057         * config/avr/t-avr (MULTILIB_MATCHES): (Ditto.)
28058
28059 2009-03-28  Xinliang David Li  <davidxl@google.com>
28060
28061         * tree-ssa-ccp.c (ccp_finalize): Add dbg_count support.
28062         (do_dbg_cnt): New function.
28063
28064 2009-03-28  Jan Hubicka  <jh@suse.cz>
28065
28066         Merge from pretty-ipa:
28067
28068         2009-03-27  Jan Hubicka  <jh@suse.cz>
28069
28070         * cgraph.c (dump_cgraph_node): Add replace output flag by process.
28071         * tree-pass.h (function_called_by_processed_nodes_p): Declare.
28072         * passes.c (function_called_by_processed_nodes_p): New.
28073         * ipa-pure-const.c (check_call): Fix handling of operands.
28074         (analyze_function): Dump debug output for skipped bodies.
28075         (local_pure_const): Use function_called_by_processed_nodes_p.
28076         * dwarf2out.c (reference_to_unused): Use output.
28077         * passes.c (do_per_function_toporder): Likewise.
28078
28079         2008-11-12  Jan Hubicka  <jh@suse.cz>
28080
28081         * tree-pass.h (pass_fixup_cfg, pass_local_pure_const): Declare.
28082         * ipa-pure-const.c (funct_state_d): Add can throw field; make
28083         state_set_in_source enum
28084         (check_decl): Ignore memory tags; do not set fake looping flags;
28085         dump diagnostics.
28086         (check_operand, check_tree, check_rhs_var, check_lhs_var,
28087         get_asm_expr_operands, scan_function_op, scan_function_stmt): Remove.
28088         (check_call, analyze_function): Rewrite.
28089         (check_stmt): New.
28090         (add_new_function): Update call of analyze_function.
28091         (generate_summary): Add call of analyze_function.
28092         (propagate): Propagate can_throw; handle state_set_in_source correctly.
28093         (local_pure_const): New function.
28094         (pass_local_pure_const): New pass.
28095         * ipa-inline.c (inline_transform): Set after_inlining.
28096         * tree-eh.c (stmt_can_throw_external): New.
28097         * tree-optimize.c (execute_fixup_cfg): Do not set after_inlining;
28098         work with aliasing built.
28099         * tree-flow.h (stmt_can_throw_external): New.
28100         * passes.c (init_optimization_passes): Schedule fixup_cfg pass early;
28101         and local pure/const pass in early and late optimization queue.
28102
28103 2009-03-28  Martin Jambor  <mjambor@suse.cz>
28104
28105         * fold-const.c (get_pointer_modulus_and_residue): New parameter
28106         allow_func_align.
28107         (fold_binary): Allow function decl aligment consideration is the
28108         second argument is integer constant one.
28109         * tree-ssa-forwprop.c (simplify_bitwise_and): New function.
28110         (tree_ssa_forward_propagate_single_use_vars): Handle assing statements
28111         with BIT_AND_EXPR on the RHS by calling simplify_bitwise_and.
28112
28113 2009-03-28  Jan Hubicka  <jh@suse.cz>
28114
28115         * dwarf2out.c (dwarf2out_begin_prologue): Use crtl->nothrow
28116         * tree-eh.c (stmt_could_throw_p): Remove check for WEAK decls.
28117         * function.h (rtl_data): Add nothrow flag.
28118         * except.c (set_nothrow_function_flags): Use crtl->nothrow;
28119         set DECL_NOTHROW for AVAILABLE functions.
28120
28121 2009-03-28  Jakub Jelinek  <jakub@redhat.com>
28122
28123         * config/rs6000/rs6000-c.c (rs6000_macro_to_expand): If macro
28124         following vector keyword has expansion starting with pixel or bool
28125         keyword, expand vector to __vector and pixel or bool to __pixel or
28126         __bool.
28127
28128         PR c++/39554
28129         * opts.c (warning_disallowed_functions, warn_disallowed_functions,
28130         warn_if_disallowed_function_p): Removed.
28131         (common_handle_option): Don't handle OPT_Wdisallowed_function_list_.
28132         * c-parser.c (c_parser_postfix_expression_after_primary): Don't call
28133         warning_if_disallowed_function_p.
28134         * flags.h (warn_if_disallowed_function_p,
28135         warn_disallowed_functions): Removed.
28136         * common.opt (Wdisallowed-function-list=): Removed.
28137         * doc/invoke.texi (-Wdisallowed-function-list=): Removed.
28138
28139 2009-03-28  Richard Guenther  <rguenther@suse.de>
28140
28141         PR tree-optimization/38723
28142         * tree-ssa-pre.c (compute_avail): Add all default definitions to
28143         the entry block.
28144
28145 2009-03-28  Jan Hubicka  <jh@suse.cz>
28146
28147         * tree-ssa-structalias.c (ipa_pta_execute): Fix bogus node->analyzed
28148         test introduced by my previous patch.
28149
28150 2009-03-28  Richard Guenther  <rguenther@suse.de>
28151
28152         * tree-ssa-copy.c (copy_prop_visit_phi_node): Do not leave
28153         the PHIs value undefined.
28154
28155 2009-03-28  Jan Hubicka  <jh@suse.cz>
28156
28157         * tree-pass.h (pass_fixup_cfg): New pass.
28158         * ipa-inline.c (inline_transform): Set
28159         always_inline_functions_inlined/after_inlining.
28160         * tree-optimize.c (execute_fixup_cfg): Do not set them here.
28161         (pass_fixup_cfg): New pass.
28162         * passes.c (init_optimization_passes): Add fixup_cfg.
28163
28164 2009-03-28  Richard Guenther  <rguenther@suse.de>
28165
28166         PR tree-optimization/38458
28167         * tree-ssa-copy.c (copy_prop_visit_phi_node): For the first
28168         argument use the arguments copy-of value.
28169
28170 2009-03-28  Richard Guenther  <rguenther@suse.de>
28171
28172         PR tree-optimization/38180
28173         * tree-ssa-ccp.c (get_default_value): Simplify.
28174         (likely_value): Likewise.
28175         (surely_varying_stmt_p): Properly handle VOP case.
28176         (ccp_initialize): Likewise.
28177         (ccp_fold): Handle propagating through *&.
28178         (fold_const_aggregate_ref): Also handle decls.
28179
28180 2009-03-28  Jan Hubicka  <jh@suse.cz>
28181
28182         * cgraph.c (dump_cgraph_node): Add replace output flag by process.
28183         * cgraph.h (cgraph_node): Likewise.
28184         * cgraphunit.c (cgraph_process_new_functions): Set process flag.
28185         (cgraph_reset_node): Use process flag.
28186         (cgraph_mark_functions_to_output): Likewise.
28187         (cgraph_expand_function): Likewise.
28188         (cgraph_expand_all_functions): Likewise.
28189         (cgraph_output_in_order): Likewise.
28190         * dwarf2out.c (reference_to_unused): Likewise.
28191         * passes.c do_per_function_toporder): Likewise.
28192
28193 2009-03-28  Jan Hubicka  <jh@suse.cz>
28194
28195         Bring from lto-branch:
28196
28197         2008-09-03  Doug Kwan  <dougkwan@google.com>
28198
28199         * cgraphbuild.c (initialize_inline_failed): Use cgraph_inline_failed_t
28200         enums instead of reason strings.
28201         * cgraph.c (cgraph_create_edge): Same.
28202         (cgraph_inline_failed_string): New function.
28203         * cgraph.h (cgraph_inline_failed_t): New enum type.
28204         (cgraph_inline_failed_string): New prototype.
28205         (struct cgraph_edge): Change type of INLINED_FAILED from constant
28206         char pointer to cgraph_inline_failed_t.
28207         (cgraph_inline_p): Adjust prototype to use cgraph_inline_failed_t.
28208         (cgraph_default_inline_p): Ditto.
28209         * cgraphunit.c (cgraph_inline_p): Change type of parameter REASON
28210         to cgraph_inline_failed_t pointer.
28211         * cif-code.def: New file.
28212         * ipa-inline.c (cgraph_mark_inline_edge): Use an enum instead of a
28213         reason string.
28214         (cgraph_check_inline_limits): Change type of REASON to pointer to
28215         cgraph_inline_failed_t.  Replace reason strings with enums.
28216         (cgraph_default_inline_p): Ditto.
28217         (cgraph_recursive_inlining_p): Ditto.
28218         (update_caller_keys): Change type of FAILED_REASON to
28219         cgraph_inline_failed_t.
28220         (cgraph_set_inline_failed): Change type of REASON to pointer to
28221         cgraph_inline_failed_t.  Call cgraph_inline_failed_string to
28222         convert enums to strings for text output.
28223         (cgraph_decide_inlining_of_small_function): Change FAILED_REASON
28224         to be of type cgraph_inline_failed_t.  Replace reason strings with
28225         enums.  Call cgraph_inline_failed_string to covert enums
28226         to strings for text output.
28227         (cgraph_decide_inlining): Replace reason strings with enums.
28228         (cgraph_decide_inlining_incrementally): Change type of FAILED_REASON
28229         to cgraph_inline_failed_t type.  Call cgraph_inline_failed_string
28230         for text output.
28231         * tree-inline.c (expand_call_inline): Change type of REASON
28232         to cgraph_inline_failed_t.  Replace reason strings with enums.
28233         Call cgraph_inline_failed_string for text output.
28234         * Makefile.in (CGRAPH_H): Add cif-code.def to dependencies.
28235         (cgraph.o): Ditto.
28236
28237 2009-03-28  Jan Hubicka  <jh@suse.cz>
28238
28239         * cgraph.c (cgraph_node, cgraph_remove_node, dump_cgraph_node,
28240         cgraph_clone_node): Remove master clone handling.
28241         (cgraph_is_master_clone, cgraph_master_clone): Remove.
28242         * cgraph.h (master_clone): Remove.
28243         (cgraph_is_master_clone, cgraph_master_clone): Remove.
28244         * ipa-type-escape.c (type_escape_execute): Remove use of master clone.
28245         (tree-ssa-structalias.c (ipa_pta_execute): Likewise.
28246
28247 2009-03-28  Jan Hubicka  <jh@suse.cz>
28248
28249         * cgraph.c (cgraph_function_body_availability): Functions declared
28250         inline are always safe to assume that it is not going to be replaced.
28251
28252 2009-03-28  Richard Guenther  <rguenther@suse.de>
28253
28254         PR tree-optimization/38513
28255         * tree-ssa-pre.c (eliminate): Remove redundant stores.
28256         * tree-ssa-sccvn.c (copy_reference_ops_from_ref): Handle
28257         EXC_PTR_EXPR and FILTER_EXPR.
28258         (get_ref_from_reference_ops): Likewise.
28259
28260 2009-03-28  Richard Guenther  <rguenther@suse.de>
28261
28262         PR tree-optimization/38968
28263         * tree-vect-analyze.c (vect_compute_data_ref_alignment):
28264         Use FLOOR_MOD_EXPR to compute misalignment.
28265
28266 2009-03-28  Richard Guenther  <rguenther@suse.de>
28267
28268         PR tree-optimization/37795
28269         * tree.h (combine_comparisons): Declare.
28270         * fold-const.c (combine_comparisons): Export.
28271         * tree-ssa-ifcombine.c (ifcombine_ifandif): Optimize two successive
28272         comparisons.
28273         (ifcombine_iforif): Use combine_comparisons.
28274
28275 2009-03-28  Jan Hubicka  <jh@suse.cz>
28276
28277         * tree-eh.c (inlinable_call_p): New function.
28278         (make_eh_edges): Use it.
28279         (verify_eh_edges): Use it.
28280         (stmt_can_throw_external, stmt_can_throw_internal): Use it.
28281         * except.c (reachable_next_level): Add inlinable_function argument
28282         (sjlj_find_directly_reachable_regions): Update.
28283         (add_reachable_handler): Do not set saw_any_handlers.
28284         (reachable_next_level): Handle MUST_NOT_THROW more curefully.
28285         (foreach_reachable_handler, can_throw_internal_1, can_throw_external_1):
28286         Add new inlinable call parameter.
28287         (can_throw_internal, can_throw_external): Update.
28288         * except.h (can_throw_internal_1, can_throw_external_1,
28289         foreach_reachable_handler): Update declaration.
28290
28291 2009-03-28  Joseph Myers  <joseph@codesourcery.com>
28292
28293         * config/arm/t-arm-coff, config/h8300/coff.h,
28294         config/i386/i386-aout.h, config/i386/i386-coff.h,
28295         config/libgloss.h, config/m68k/coff.h, config/m68k/m68k-aout.h,
28296         config/pdp11/2bsd.h, config/rs6000/aix41.h,
28297         config/rs6000/aix41.opt, config/rs6000/t-newas, config/sh/coff.h,
28298         fix-header.c, fixproto, gen-protos.c, protoize.c, scan-decls.c,
28299         scan-types.sh, scan.c, scan.h, sort-protos, sys-protos.h,
28300         sys-types.h: Remove.
28301         * Makefile.in: Remove protoize and fixproto support and references
28302         in comments.
28303         (SYSCALLS.c.X-warn, TARGET_GETGROUPS_T, STMP_FIXPROTO,
28304         PROTOIZE_INSTALL_NAME, UNPROTOIZE_INSTALL_NAME, FIXPROTO_DEFINES):
28305         Remove.
28306         (ALL_HOST_OBJS): Remove $(PROTO_OBJS).
28307         (MOSTLYCLEANFILES): Remove protoize$(exeext) and
28308         unprotoize$(exeext).
28309         (rest.encap): Don't depend on $(STMP_FIXPROTO)
28310         (.PHONY): Don't depend on proto.
28311         (libgcc-support): Don't depend on $(STMP_FIXPROTO).
28312         (proto, PROTO_OBJS, protoize$(exeext), unprotoize$(exeext),
28313         protoize.o, unprotoize.o, SYSCALLS.c.X, test-protoize-simple,
28314         deduced.h, GEN_PROTOS_OBJS, build/gen-protos$(build_exeext),
28315         build/gen-protos.o, build/scan.o, xsys-protos.h,
28316         build/fix-header$(build_exeext), build/fix-header.o,
28317         build/scan-decls.o, fixhdr.ready, stmp-fixproto,
28318         stmp-install-fixproto): Remove.
28319         (mostlyclean): Don't remove xsys-protos.hT, SYSCALLS.c.X,
28320         SYSCALLS.c or fixproto files.
28321         (install-common): Don't install protoize.
28322         (install-headers-tar, install-headers-cpio, install-headers-cp):
28323         Don't depend on $(STMP_FIXPROTO).
28324         (install-mkheaders): Don't depend on $(STMP_FIXPROTO).  Don't
28325         install fixproto files or write out fixproto settings.
28326         (uninstall): Don't uninstall protoize.
28327         * config.gcc (use_fixproto): Remove.
28328         (arm-*-coff*, armel-*-coff*, h8300-*-*, i[34567]86-*-aout*,
28329         i[34567]86-*-coff*, m68k-*-aout*, m68k-*-coff*, pdp11-*-bsd,
28330         rs6000-ibm-aix4.[12]*, powerpc-ibm-aix4.[12]*, sh-*-*): Remove.
28331         * config/m32r/t-linux (STMP_FIXPROTO): Remove.
28332         * config/m68k/m68k.c: Remove M68K_TARGET_COFF-conditional code.
28333         * config/mips/t-iris (FIXPROTO_DEFINES): Remove.
28334         * config/pa/t-pa-hpux (FIXPROTO_DEFINES): Remove.
28335         * config/pdp11/pdp11.c: Remove TWO_BSD-conditional code.
28336         * config/t-svr4 (FIXPROTO_DEFINES): Remove.
28337         * config/t-vxworks (STMP_FIXPROTO): Remove.
28338         * configure.ac (AC_TYPE_GETGROUPS, TARGET_GETGROUPS_T,
28339         STMP_FIXPROTO): Remove.
28340         * config.in, configure: Regenerate.
28341         * crtstuff.c (gid_t, uid_t): Don't undefine.
28342         * doc/install.texi: Change m68k-coff to m68k-elf in example.
28343         (arm-*-coff, arm-*-aout: Remove target entries.
28344         (*-ibm-aix*): Mention removal of support for AIX 4.2 and older.
28345         Remove mention of AIX 4.1.
28346         (m68k-*-*): Remove mention of m68k-*-aout and m68k-*-coff*.
28347         * doc/invoke.texi (Running Protoize): Remove.
28348         * doc/trouble.texi (Actual Bugs): Remove mention of fixproto.
28349         (Protoize Caveats): Remove.
28350         * tsystem.h: Update comments on headers assumed to exist.
28351
28352 2009-03-27  Vladimir Makarov  <vmakarov@redhat.com>
28353
28354         * genautomata.c: Add a new year to the copyright.  Add a new
28355         reference.
28356         (struct insn_reserv_decl): Add comments for member bypass_list.
28357         (find_bypass): Remove.
28358         (insert_bypass): New.
28359         (process_decls): Use insert_bypass.
28360         (output_internal_insn_latency_func): Output all bypasses with the
28361         same input insn in one switch case.
28362
28363         * rtl.def (define_bypass): Describe bypass choice.
28364         * doc/md.texi (define_bypass): Ditto.
28365
28366 2009-03-27  Richard Guenther  <rguenther@suse.de>
28367
28368         * gimplify.c (mark_addressable): Export.
28369         * tree-flow.h (mark_addressable): Declare.
28370         * tree-ssa-loop-manip.c (create_iv): Mark the base addressable.
28371         * tree-ssa.c (verify_phi_args): Verify that address taken
28372         variables have TREE_ADDRESSABLE set.
28373
28374 2009-03-27  Richard Guenther  <rguenther@suse.de>
28375
28376         * fold-const.c (build_fold_addr_expr_with_type_1): Rename back to ...
28377         (build_fold_addr_expr_with_type): ... this.  Remove in_fold handling.
28378         Do not mark decls TREE_ADDRESSABLE.
28379         (build_fold_addr_expr): Adjust.
28380         (fold_addr_expr): Remove.
28381         (fold_unary): Use build_fold_addr_expr.
28382         (fold_comparison): Likewise.
28383         (split_address_to_core_and_offset): Likewise.
28384         * coverage.c (tree_coverage_counter_addr): Mark the array decl
28385         TREE_ADDRESSABLE.
28386         * gimplify.c (mark_addressable): Do not exclude RESULT_DECLs.
28387         (gimplify_modify_expr_to_memcpy): Mark source and destination
28388         addressable.
28389         * omp-low.c (create_omp_child_function): Mark the object decl
28390         TREE_ADDRESSABLE.
28391         (lower_rec_input_clauses): Mark the var we take the address of
28392         TREE_ADDRESSABLE.
28393         (lower_omp_taskreg): Mark the sender decl TREE_ADDRESSABLE.
28394
28395 2009-03-27  H.J. Lu  <hongjiu.lu@intel.com>
28396
28397         PR middle-end/39315
28398         * cfgexpand.c (expand_one_stack_var_at): Change alignment
28399         limit to MAX_SUPPORTED_STACK_ALIGNMENT.
28400
28401 2009-03-27  Richard Guenther  <rguenther@suse.de>
28402
28403         PR tree-optimization/39120
28404         * tree-ssa-structalias.c (handle_rhs_call): Fill out return
28405         constraints.
28406         (handle_lhs_call): Process return constraints.  Add escape
28407         constraints if necessary.
28408         (handle_const_call): Fill out return constraints.  Make nested
28409         case more precise.  Avoid consttmp if possible.
28410         (handle_pure_call): Fill out return constraints.  Avoid
28411         callused if possible.
28412         (find_func_aliases): Simplify call handling.
28413
28414 2009-03-27  Richard Guenther  <rguenther@suse.de>
28415
28416         PR tree-optimization/39120
28417         * tree-ssa-structalias.c (do_sd_constraint): Do not use CALLUSED
28418         as a representative.
28419         (solve_graph): Do propagate CALLUSED.
28420         (handle_pure_call): Use a scalar constraint from CALLUSED for
28421         the return value.
28422         (find_what_p_points_to): CALLUSED shall not appear in poins-to
28423         solutions.
28424
28425 2009-03-27  H.J. Lu  <hongjiu.lu@intel.com>
28426
28427         PR c/39323
28428         * c-common.c (handle_aligned_attribute): Properly check alignment
28429         overflow.  Use (1U << i) instead of (1 << i).
28430
28431         * emit-rtl.c (get_mem_align_offset): Use "unsigned int" for align.
28432
28433         * expr.h (get_mem_align_offset): Updated.
28434
28435         * tree.h (tree_decl_common): Change align to "unsigned int" and
28436         move it before pointer_alias_set.
28437
28438 2009-03-27  H.J. Lu  <hongjiu.lu@intel.com>
28439             Jakub Jelinek  <jakub@redhat.com>
28440
28441         PR target/38034
28442         * config/ia64/sync.md (cmpxchg_rel_<mode>): Replace input
28443         gr_register_operand with gr_reg_or_0_operand.
28444         (cmpxchg_rel_di): Likewise.
28445         (sync_lock_test_and_set<mode>): Likewise.
28446
28447 2009-03-27  H.J. Lu  <hongjiu.lu@intel.com>
28448
28449         * jump.c (rtx_renumbered_equal_p): Use subreg_get_info.
28450         (true_regnum): Likewise.
28451
28452         * rtlanal.c (subreg_info): Moved to ...
28453         * rtl.h (subreg_info): Here.  New.
28454         (subreg_get_info): New.
28455
28456         * rtlanal.c (subreg_get_info): Make it extern.
28457
28458 2009-03-27  H.J. Lu  <hongjiu.lu@intel.com>
28459
28460         PR target/39472
28461         * config/i386/i386.c (ix86_abi): New.
28462         (override_options): Handle -mabi=.
28463         (ix86_function_arg_regno_p): Replace DEFAULT_ABI with ix86_abi.
28464         (ix86_call_abi_override): Likewise.
28465         (init_cumulative_args): Likewise.
28466         (function_arg_advance): Likewise.
28467         (function_arg_64): Likewise.
28468         (function_arg): Likewise.
28469         (ix86_pass_by_reference): Likewise.
28470         (ix86_function_value_regno_p): Likewise.
28471         (ix86_build_builtin_va_list_abi): Likewise.
28472         (setup_incoming_varargs_64): Likewise.
28473         (is_va_list_char_pointer): Likewise.
28474         (ix86_init_machine_status): Likewise.
28475         (ix86_reg_parm_stack_space): Use enum calling_abi on call_abi.
28476         (ix86_function_type_abi): Return enum calling_abi.  Rewrite
28477         for 64bit.  Replace DEFAULT_ABI with ix86_abi.
28478         (ix86_function_abi): Make it static and return enum calling_abi.
28479         (ix86_cfun_abi): Return enum calling_abi.  Replace DEFAULT_ABI
28480         with ix86_abi.
28481         (ix86_fn_abi_va_list): Updated.
28482
28483         * config/i386/i386.h (ix86_abi): New.
28484         (STACK_BOUNDARY): Replace DEFAULT_ABI with ix86_abi.
28485         (CONDITIONAL_REGISTER_USAGE): Likewise.
28486         (CUMULATIVE_ARGS): Change call_abi type to enum calling_abi.
28487         (machine_function): Likewise.
28488
28489         * config/i386/i386.md (untyped_call): Replace DEFAULT_ABI
28490         with ix86_abi.
28491         * config/i386/cygming.h (TARGET_64BIT_MS_ABI): Likewise.
28492         (STACK_BOUNDARY): Likewise.
28493         * config/i386/mingw32.h (EXTRA_OS_CPP_BUILTINS): Likewise.
28494
28495         * config/i386/i386.opt (mabi=): New.
28496
28497         * config/i386/i386-protos.h (ix86_cfun_abi): Changed to
28498         return enum calling_abi.
28499         (ix86_function_type_abi): Likewise.
28500         (ix86_function_abi): Removed.
28501
28502         * doc/invoke.texi: Document -mabi= option for x86.
28503
28504 2009-03-27  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
28505
28506         * builtins.c (real_dconstp): Delete.
28507         (fold_builtin_logarithm): Remove inaccurate log(e) special case.
28508
28509 2009-03-27  Dodji Seketeli  <dodji@redhat.com>
28510             Jakub Jelinek  <jakub@redhat.com>
28511
28512         PR debug/37959
28513         * dwarf2out.c (dwarf_attr_name): Handle DW_AT_explicit attribute.
28514         (gen_subprogram_die): When a function is explicit, generate the
28515         DW_AT_explicit attribute.
28516         * langhooks.h (struct lang_hooks_for_decls): Add
28517         function_decl_explicit_p langhook.
28518         * langhooks-def.h (LANG_HOOKS_FUNCTION_DECL_EXPLICIT_P): Define.
28519         (LANG_HOOKS_DECLS): Add LANG_HOOKS_FUNCTION_DECL_EXPLICIT_P.
28520
28521 2009-03-27  Jakub Jelinek  <jakub@redhat.com>
28522
28523         * builtins.c (fold_builtin_memory_op): Optimize memmove
28524         into memcpy if we can prove source and destination don't overlap.
28525
28526         * tree-inline.c: Include gt-tree-inline.h.
28527         (clone_fn_id_num): New variable.
28528         (clone_function_name): New function.
28529         (tree_function_versioning): Use it.
28530         * Makefile.in (GTFILES): Add tree-inline.c.
28531
28532 2009-03-27  Mark Mitchell  <mark@codesourcery.com>
28533
28534         * BASE-VER: Change to 4.5.0.
28535
28536 2009-03-27  Xinliang David Li  <davidxl@google.com>
28537
28538         PR tree-optimization/39557
28539         * tree-ssa.c (warn_uninitialized_vars): free postdom info.
28540
28541 2009-03-27  Xinliang David Li  <davidxl@google.com>
28542
28543         PR tree-optimization/39548
28544         * tree-ssa-copy.c (copy_prop_visit_phi_node): Add copy
28545         candidate check.
28546
28547 2009-03-27  H.J. Lu  <hongjiu.lu@intel.com>
28548
28549         * c-common.c (pointer_int_sum): Use %wd on return from
28550         tree_low_cst.
28551
28552 2009-03-27  H.J. Lu  <hongjiu.lu@intel.com>
28553
28554         * c-common.c (pointer_int_sum): Use HOST_WIDE_INT_PRINT_DEC
28555         on return from tree_low_cst.
28556
28557 2009-03-27  Andrew Pinski  <andrew_pinski@playstation.sony.com>
28558
28559         PR c++/36799
28560         * ginclude/stdarg.h (va_copy): Define also for
28561         __GXX_EXPERIMENTAL_CXX0X__.
28562
28563 2009-03-27  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
28564
28565         PR c++/35652
28566         * builtins.h (c_strlen): Do not warn here.
28567         * c-typeck.c (build_binary_op): Adjust calls to pointer_int_sum.
28568         * c-common.c (pointer_int_sum): Take an explicit location.
28569         Warn about offsets out of bounds.
28570         * c-common.h (pointer_int_sum): Adjust declaration.
28571
28572 2009-03-26  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
28573
28574         * doc/invoke.texi (i386 and x86-64 Windows Options): Fix texinfo
28575         markup glitch.
28576
28577 2009-03-26  Jakub Jelinek  <jakub@redhat.com>
28578
28579         PR c++/39554
28580         * opts.c (warn_if_disallowed_function_p): Don't assume
28581         get_callee_fndecl must return non-NULL.
28582
28583 2009-03-26  Vladimir Makarov  <vmakarov@redhat.com>
28584
28585         PR rtl-optimization/39522
28586         * reload1.c (reload_as_needed): Invalidate reg_last_reload_reg too
28587         when reg_reloaded_valid is set.
28588
28589 2009-03-26  Ulrich Weigand  <Ulrich.Weigand@de.ibm.com>
28590
28591         * config/spu/divv2df3.c: New file.
28592         * config/spu/t-spu-elf (LIB2FUNCS_STATIC_EXTRA): Add it.
28593         (DPBIT_FUNCS): Filter out _div_df.
28594
28595 2009-03-26  Bernd Schmidt  <bernd.schmidt@analog.com>
28596
28597         * config/bfin/bfin.c (bfin_optimize_loop): If the LSETUP goes before
28598         a jump insn, count that jump in the distance to the loop start.
28599
28600 2009-03-25  Kaz Kojima  <kkojima@gcc.gnu.org>
28601
28602         PR target/39523
28603         * config/sh/sh.c (calc_live_regs): Fix condition for global
28604         registers except PIC_OFFSET_TABLE_REGNUM.
28605
28606 2009-03-25  Kai Tietz  <kai.tietz@onevision.com>
28607
28608         PR/39518
28609         * doc/invoke.texi (-mconsole): New.
28610         (-mcygwin): New.
28611         (-mno-cygwin): New.
28612         (-mdll): New.
28613         (-mnop-fun-dllimport): New.
28614         (-mthread): New.
28615         (-mwin32): New.
28616         (-mwindows): New.
28617         (sub section "i386 and x86-64 Windows Options"): New.
28618
28619 2009-03-25  Ralf Corsépius  <ralf.corsepius@rtems.org>
28620
28621         * config/arm/rtems-elf.h: Remove LINK_GCC_C_SEQUENCE_SPEC.
28622         * config/rs6000/t-rtems: Remove MULTILIB_EXTRA_OPTS.
28623
28624 2009-03-25  Richard Guenther  <rguenther@suse.de>
28625
28626         PR middle-end/39497
28627         * Makefile.in (dfp.o-warn): Use -fno-strict-aliasing instead
28628         of -Wno-error.
28629
28630 2009-03-25  Andrey Belevantsev  <abel@ispras.ru>
28631
28632         * config/ia64/ia64.c (ia64_set_sched_flags): Zero spec_info->mask when
28633         neither of haifa/selective schedulers are working.
28634
28635 2009-03-25  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
28636
28637         * doc/invoke.texi (Debugging Options): Fix description of
28638         -fno-merge-debug-strings.
28639
28640 2009-03-24  Hans-Peter Nilsson  <hp@axis.com>
28641
28642         * config/cris/libgcc.ver: New version-script.
28643         * config/cris/t-linux (SHLIB_MAPFILES): Use it.
28644
28645         * configure.ac <GAS features, nop mnemonic>: Add pattern
28646         crisv32-*-* for "nop".
28647         <GAS features, Thread-local storage>: Add item for CRIS and CRIS v32.
28648         * configure: Regenerate.
28649
28650 2009-03-24  Ira Rosen  <irar@il.ibm.com>
28651
28652         PR tree-optimization/39529
28653         * tree-vect-transform.c (vect_create_data_ref_ptr): Call
28654         mark_sym_for_renaming for the tag copied to the new vector
28655         pointer.
28656
28657 2009-03-24  Arthur Loiret  <aloiret@debian.org>
28658
28659         * config.host (alpha*-*-linux*): Use driver-alpha.o and alpha/x-alpha.
28660         * config/alpha/linux.h (host_detect_local_cpu): Declare, add to
28661         EXTRA_SPEC_FUNCTIONS.
28662         (MCPU_MTUNE_NATIVE_SPECS, DRIVER_SELF_SPECS): New macros.
28663         * config/alpha/driver-alpha.c, config/alpha/x-alpha: New.
28664         * doc/invoke.texi (DEC Alpha Options): Document 'native' value for
28665         -march and -mtune options.
28666
28667 2009-03-24  Ralf Corsépius  <ralf.corsepius@rtems.org>
28668
28669         * config/m68k/t-rtems: Add m5329 multilib.
28670
28671 2009-03-24  Dodji Seketeli  <dodji@redhat.com>
28672             Jakub Jelinek  <jakub@redhat.com>
28673
28674         PR debug/39524
28675         * dwarf2out.c (gen_variable_die): Avoid adding duplicate declaration
28676         nodes.
28677
28678 2009-03-23  Jakub Jelinek  <jakub@redhat.com>
28679
28680         PR c/39495
28681         * c-parser.c (c_parser_omp_for_loop): Call c_parser_binary_expression
28682         instead of c_parser_expression_conv, if original_code isn't one of the
28683         4 allowed comparison codes, fail.
28684
28685 2009-03-23  Richard Guenther  <rguenther@suse.de>
28686
28687         * cgraph.h (struct cgraph_node): Reorder fields for 64-bit hosts.
28688         * tree.h (struct tree_type): Likewise.
28689         * reload.h (struct insn_chain): Likewise.
28690         * dwarf2out.c (struct dw_loc_descr_struct): Likewise.
28691         * function.h (struct function): Likewise.
28692         * tree-ssa-structalias.c (struct equiv_class_label): Likewise.
28693
28694 2009-03-23  Jakub Jelinek  <jakub@redhat.com>
28695
28696         PR tree-optimization/39516
28697         * lambda-code.c (perfect_nestify): Fix type of the uboundvar variable.
28698
28699 2009-03-23  Bingfeng Mei  <bmei@broadcom.com>
28700
28701         * config.gcc (need_64bit_hwint): Make clear that need_64bit_hwint
28702         should be set true if BITS_PER_WORD of target is bigger than 32
28703
28704 2009-03-22  Hans-Peter Nilsson  <hp@axis.com>
28705
28706         * config/cris/linux.h (CRIS_LINK_SUBTARGET_SPEC):
28707         Translate -B-options to -rpath-link.  Correct existing
28708         rpath-link and conditionalize on !nostdlib.
28709
28710 2009-03-22  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
28711
28712         * doc/extend.texi (Function Attributes, Variable Attributes):
28713         Fix typos.
28714         * doc/invoke.texi (Debugging Options, Optimize Options)
28715         (i386 and x86-64 Options, MCore Options): Likewise.
28716
28717 2009-03-20  Jakub Jelinek  <jakub@redhat.com>
28718
28719         PR debug/37890
28720         * dwarf2out.c (gen_namespace_die): Add context_die argument and use
28721         it for block local namespace aliases.
28722         (gen_decl_die): Pass context_die to gen_namespace_die.
28723
28724 2009-03-19  Jakub Jelinek  <jakub@redhat.com>
28725
28726         PR c/39495
28727         * c-omp.c (c_finish_omp_for): Allow NE_EXPR with TREE_TYPE (decl)'s
28728         minimum or maximum value.
28729
28730 2009-03-19  Alexandre Oliva  <aoliva@redhat.com>
28731
28732         * reginfo.c (globalize_reg): Recompute derived reg sets.
28733
28734 2009-03-19  Ozkan Sezer  <sezeroz@gmail.com>
28735
28736         PR target/39063
28737         * libgcc2.c (mprotect): Do not use signed arguments for
28738         VirtualProtect, use DWORD arguments.  Also fix the 'may
28739         be used uninitialized' warning for the np variable.
28740
28741 2009-03-19  Jakub Jelinek  <jakub@redhat.com>
28742
28743         PR target/39496
28744         * config/i386/i386.c (ix86_function_regparm): Don't optimize local
28745         functions using regparm calling conventions when not optimizing.
28746         (ix86_function_sseregparm): Similarly for sseregparm calling
28747         conventions.
28748
28749 2009-03-19  Li Feng  <nemokingdom@gmail.com>
28750
28751         PR middle-end/39500
28752         * tree-data-ref.c (analyze_subscript_affine_affine): There is no
28753         dependence if the first conflict is after niter iterations.
28754
28755 2009-03-19  Hans-Peter Nilsson  <hp@axis.com>
28756
28757         PR middle-end/38609
28758         * config/cris/cris.h (FRAME_POINTER_REQUIRED): Force for all
28759         functions with dynamic stack-pointer adjustments.
28760
28761 2009-03-19  Ben Elliston  <bje@au.ibm.com>
28762
28763         * doc/invoke.texi (RS/6000 and PowerPC Options): Fix -msdata-data
28764         option; change to -msdata=data.
28765
28766 2009-03-18  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
28767
28768         * c.opt: Unify help texts for -Wdeprecated, -Wsystem-headers,
28769         and -fopenmp.
28770
28771 2009-03-18  Eric Botcazou  <ebotcazou@adacore.com>
28772
28773         PR target/35180
28774         * config/sparc/sparc.md (do_builtin_setjmp_setup): Prettify asm output.
28775
28776 2009-03-18  Sandra Loosemore  <sandra@codesourcery.com>
28777
28778         * doc/invoke.texi (Code Gen Options): Expand discussion of
28779         -fno-common.
28780
28781 2009-03-18  Jakub Jelinek  <jakub@redhat.com>
28782
28783         * dse.c (struct group_info): Reorder fields for 64-bit hosts.
28784         * matrix-reorg.c (struct matrix_info): Likewise.
28785         * tree-ssa-loop-ivopts.c (struct ivopts_data): Likewise.
28786         * rtl.h (struct mem_attrs): Likewise.
28787         * df.h (struct df): Likewise.
28788         * tree-data-ref.h (struct data_dependence_relation): Likewise.
28789         * ira-int.h (struct ira_allocno): Likewise.
28790         * df-scan.c (struct df_collection_rec): Likewise.
28791         * ira.c (struct equivalence): Likewise.
28792         * function.c (struct temp_slot): Likewise.
28793         * cfgloop.h (struct loop): Likewise.
28794
28795         PR debug/39485
28796         * function.c (use_register_for_decl): When not optimizing, disregard
28797         register keyword for variables with types containing methods.
28798
28799 2009-03-18  Sebastian Pop  <sebastian.pop@amd.com>
28800
28801         PR middle-end/39447
28802         * graphite.c (exclude_component_ref): Renamed contains_component_ref_p.
28803         (is_simple_operand): Call contains_component_ref_p before calling data
28804         reference analysis that would fail on COMPONENT_REFs.
28805
28806         * tree-vrp.c (search_for_addr_array): Fix formatting.
28807
28808 2009-03-18  Richard Guenther  <rguenther@suse.de>
28809
28810         * tree-vect-transform.c (vect_loop_versioning): Fold the
28811         generated comparisons.
28812         * tree-vectorizer.c (set_prologue_iterations): Likewise.
28813         (slpeel_tree_peel_loop_to_edge): Likewise.
28814
28815 2009-03-17  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
28816
28817         PR middle-end/37805
28818         * opts.c (print_specific_help): In addition to `undocumented',
28819         accept `separate' and `joined' flags if passed alone.  Describe
28820         output by the first matched one of those.
28821         (common_handle_option): Skip over empty strings.
28822         * gcc.c (display_help): Fix help string for `--help='.
28823         * doc/invoke.texi (Option Summary, Overall Options): With
28824         `--help=', classes and qualifiers can both be repeated, but
28825         only the latter can be negated.  One should not pass only
28826         negated qualifiers.  Fix markup and examples.
28827
28828         Revert
28829         2008-10-14  Jakub Jelinek  <jakub@redhat.com>
28830         PR middle-end/37805
28831         * opts.c (common_handle_option): Don't ICE on -fhelp=joined
28832         and -fhelp=separate.
28833
28834 2009-03-17  Jing Yu  <jingyu@google.com>
28835
28836         PR middle-end/39378
28837         * function.h (struct rtl_data): Move is_thunk from here...
28838         (struct function): ...to here.
28839         * cp/method.c (use_thunk): Change is_thunk from crtl to cfun.
28840         * varasm.c (assemble_start_function): Change is_thunk from crtl to
28841         cfun.
28842         * config/alpha/alpha.c (alpha_sa_mask): Change is_thunk from crtl to
28843         cfun.
28844         (alpha_does_function_need_gp, alpha_start_function): Likewise.
28845         (alpha_output_function_end_prologue): Likewise.
28846         (alpha_end_function, alpha_output_mi_thunk_osf): Likewise.
28847         * config/rs6000/rs6000.c (rs6000_ra_ever_killed): Likewise.
28848         (rs6000_output_function_epilogue): Likewise.
28849         * config/arm/arm.h (ARM_DECLARE_FUNCTION_NAME): Likewise.
28850
28851 2009-03-17  Uros Bizjak  <ubizjak@gmail.com>
28852
28853         PR target/39482
28854         * config/i386/i386.md (*truncdfsf_mixed): Avoid combining registers
28855         from different units in a single alternative.
28856         (*truncdfsf_i387): Ditto.
28857         (*truncxfsf2_mixed): Ditto.
28858         (*truncxfdf2_mixed): Ditto.
28859
28860 2009-03-17  Jakub Jelinek  <jakub@redhat.com>
28861
28862         * dwarf2out.c (dwarf2out_imported_module_or_decl_1): Allow
28863         non-NAMESPACE_DECL IMPORTED_DECL_ASSOCIATED_DECL.
28864
28865         PR debug/39474
28866         * tree-ssa-live.c (remove_unused_locals): Don't remove local
28867         unused non-artificial variables when not optimizing.
28868
28869         PR debug/39471
28870         * dwarf2out.c (dwarf2out_imported_module_or_decl_1): Emit
28871         DW_TAG_imported_module even if decl is IMPORTED_DECL with
28872         NAMESPACE_DECL in its DECL_INITIAL.
28873
28874         PR middle-end/39443
28875         * optabs.c (set_user_assembler_libfunc): New function.
28876         * expr.h (set_user_assembler_libfunc): New prototype.
28877         * c-common.c: Include libfuncs.h.
28878         (set_builtin_user_assembler_name): Call set_user_assembler_libfunc
28879         for memcmp, memset, memcpy, memmove and abort.
28880         * Makefile.in (c-common.o): Depend on libfuncs.h.
28881
28882         PR debug/39412
28883         * dwarf2out.c (gen_inlined_enumeration_type_die,
28884         gen_inlined_structure_type_die, gen_inlined_union_type_die,
28885         gen_tagged_type_instantiation_die): Removed.
28886         (gen_decl_die): For TYPE_DECL_IS_STUB with non-NULL decl_origin
28887         do nothing.
28888
28889 2009-03-17  Janis Johnson  <janis187@us.ibm.com>
28890
28891         PR testsuite/38526
28892         * Makefile.in (site.exp): Rename TEST_GCC_EXEC_PREFIX and comment
28893         its use.
28894         (check-%): Don't set GCC_EXEC_PREFIX when invoking runtest.
28895         (check-parallel-%): Ditto.
28896         (check-consistency): Ditto.
28897
28898 2009-03-17  Kai Tietz  <kai.tietz@onevision.com>
28899
28900         * ipa-struct-reorg.c (create_general_new_stmt): Initialize
28901         local variable rhs by NULL_TREE.
28902
28903 2009-03-17  H.J. Lu  <hongjiu.lu@intel.com>
28904
28905         PR target/39477
28906         * doc/extend.texi: Correct register behavior for regparm on Intel 386.
28907
28908 2009-03-17  H.J. Lu  <hongjiu.lu@intel.com>
28909
28910         PR target/39476
28911         * config/i386/i386.c (ix86_function_regparm): Rewrite for 64bit.
28912
28913 2009-03-17  H.J. Lu  <hongjiu.lu@intel.com>
28914
28915         PR target/39473
28916         * config/i386/i386.c (ix86_expand_call): Check extra clobbers
28917         for ms->sysv ABI calls only in 64bit mode.
28918
28919         * config/i386/i386.md (untyped_call): Support 32bit.
28920
28921 2009-03-16  H.J. Lu  <hongjiu.lu@intel.com>
28922
28923         * doc/extend.texi: Replace x86_65 with x86_64.
28924
28925 2009-03-16  Jakub Jelinek  <jakub@redhat.com>
28926
28927         PR tree-optimization/39455
28928         * tree-ssa-loop-niter.c (number_of_iterations_lt_to_ne): Fix types
28929         mismatches for POINTER_TYPE_P (type).
28930         (number_of_iterations_le): Likewise.
28931
28932 2009-03-16  Hariharan Sandanagobalane  <hariharan@picochip.com>
28933
28934         * config/picochip/picochip.c: Removed profiling support.
28935         * config/picochip/picochip.md: Removed profiling instruction.
28936         * config/picochip/picochip.h: Removed profiling builtin.
28937
28938 2009-03-16  Joseph Myers  <joseph@codesourcery.com>
28939
28940         * doc/install.texi (--with-host-libstdcxx): Document.
28941
28942 2009-03-14  Anatoly Sokolov  <aesok@post.ru>
28943
28944         PR target/34299
28945         * config/avr/avr.c (avr_handle_fndecl_attribute): Move code for
28946         generate a warning if the function name does not begin with
28947         "__vector" and the function has either the 'signal' or 'interrupt'
28948         attribute, from here to ...
28949         (avr_declare_function_name): ...here. New function.
28950         * config/avr/avr.h (ASM_DECLARE_FUNCTION_NAME): Redefine.
28951         * config/avr/avr-protos.h (avr_declare_function_name): Declare.
28952
28953 2009-03-14  Jakub Jelinek  <jakub@redhat.com>
28954
28955         PR bootstrap/39454
28956         * cse.c (fold_rtx): Don't modify original const_arg1 when
28957         canonicalizing SHIFT_COUNT_TRUNCATED shift count, do it on a
28958         separate variable instead.
28959         * rtlanal.c (nonzero_bits1) <case ASHIFTRT>: Don't assume anything
28960         from out of range shift counts.
28961         (num_sign_bit_copies1) <case ASHIFTRT, case ASHIFT>: Similarly.
28962
28963 2009-03-13  Catherine Moore  <clm@codesourcery.com>
28964
28965         * config/i386/x-mingw32 (host-mingw32.o): Replace
28966         diagnostic.h with $(DIAGNOSTIC_H).
28967
28968 2009-03-12  Jakub Jelinek  <jakub@redhat.com>
28969
28970         PR target/39431
28971         * config/i386/predicates.md (cmpxchg8b_pic_memory_operand): New
28972         predicate.
28973         * config/i386/sync.md (sync_compare_and_swap<mode>,
28974         sync_compare_and_swap_cc<mode>): For DImode with -m32 -fpic check
28975         if operands[1] is cmpxchg8b_pic_memory_operand, if not force address
28976         into a register.
28977         (sync_double_compare_and_swapdi_pic,
28978         sync_double_compare_and_swap_ccdi_pic): Require operand 1 to be
28979         cmpxchg8b_pic_memory_operand instead of just memory_operand.
28980
28981 2009-03-12  H.J. Lu  <hongjiu.lu@intel.com>
28982
28983         PR target/39445
28984         * config/i386/i386.c (ix86_expand_push): Don't set memory alignment.
28985
28986 2009-03-12  H.J. Lu  <hongjiu.lu@intel.com>
28987
28988         PR target/39327
28989         * config/i386/sse.md (avx_addsubv8sf3): Correct item bits.
28990         (avx_addsubv4df3): Likewise.
28991         (*avx_addsubv4sf3): Likewise.
28992         (sse3_addsubv4sf3): Likewise.
28993
28994 2009-03-12  H.J. Lu  <hongjiu.lu@intel.com>
28995
28996         PR target/38824
28997         * config/i386/i386.md: Compare REGNO on the new peephole2 patterns.
28998
28999 2009-03-12  Vladimir Makarov  <vmakarov@redhat.com>
29000
29001         PR debug/39432
29002         * ira-int.h (struct allocno): Fix comment for calls_crossed_num.
29003         * ira-conflicts.c (ira_build_conflicts): Prohibit call used
29004         registers for allocnos created from user-defined variables.
29005
29006 2009-03-11  Ulrich Weigand  <Ulrich.Weigand@de.ibm.com>
29007
29008         PR target/39181
29009         * config/spu/spu.c (spu_expand_mov): Handle invalid subregs
29010         of non-integer mode as well.
29011
29012 2009-03-11  Adam Nemet  <anemet@caviumnetworks.com>
29013
29014         * gimplify.c (gimplify_call_expr): Don't set CALL_CANNOT_INLINE_P
29015         for functions for which the parameter types are unknown.
29016
29017 2009-03-11  Jakub Jelinek  <jakub@redhat.com>
29018
29019         PR target/39137
29020         * cfgexpand.c (get_decl_align_unit): Use LOCAL_DECL_ALIGNMENT macro.
29021         * defaults.h (LOCAL_DECL_ALIGNMENT): Define if not yet defined.
29022         * config/i386/i386.h (LOCAL_DECL_ALIGNMENT): Define.
29023         * config/i386/i386.c (ix86_local_alignment): For
29024         -m32 -mpreferred-stack-boundary=2 use 32-bit alignment for
29025         long long variables on the stack to avoid dynamic realignment.
29026         Allow the first argument to be a decl rather than type.
29027         * doc/tm.texi (LOCAL_DECL_ALIGNMENT): Document.
29028
29029 2009-03-11  Nick Clifton  <nickc@redhat.com>
29030
29031         PR target/5362
29032         * config/mcore/mcore.opt: Remove deprecated m4align and m8align
29033         options.
29034         Add description to mno-lsim option.
29035         * config/mcore/mcore.h: Remove comment about deprecated m4align
29036         option.
29037         (TARGET_DEFAULT): Remove deprecated MASK_M8ALIGN.
29038         * doc/invoke.texi: Add description of mno-lsim and
29039         mstack-increment options.
29040
29041         * config/fr30/fr30.opt: Document the -mno-lsim option.
29042         * doc/invoke.texi: Add descriptions of the FR30's -msmall-model
29043         and -mno-lsim options.
29044
29045 2009-03-11  Ulrich Weigand  <Ulrich.Weigand@de.ibm.com>
29046
29047         * fold-const.c (fold_comparison): Only call fold_inf_compare
29048         if the mode supports infinities.
29049
29050 2009-03-11  Jason Merrill  <jason@redhat.com>
29051
29052         PR debug/39086
29053         * tree-nrv.c (tree_nrv): Don't do this optimization if the front
29054         end already did.  Notice GIMPLE_CALL modifications of the result.
29055         Don't copy debug information from an ignored decl or a decl from
29056         another function.
29057
29058 2009-03-10  Richard Guenther  <rguenther@suse.de>
29059             Nathan Froyd  <froydnj@codesourcery.com>
29060
29061         PR middle-end/37850
29062         * libgcc2.c (__mulMODE3): Use explicit assignments to form the result.
29063         (__divMODE3): Likewise.
29064
29065 2009-03-09  Jakub Jelinek  <jakub@redhat.com>
29066
29067         PR tree-optimization/39394
29068         * gimplify.c (gimplify_type_sizes): Gimplify DECL_SIZE and
29069         DECL_SIZE_UNIT of variable length FIELD_DECLs.
29070
29071 2009-03-09  Andreas Krebbel  <Andreas.Krebbel@de.ibm.com>
29072
29073         * recog.c (verfiy_changes): Disallow renaming of hard regs in
29074         inline asms for register asm ("") declarations.
29075
29076 2009-03-09  Eric Botcazou  <ebotcazou@adacore.com>
29077
29078         * fold-const.c (fold_unary): Fix comment.
29079
29080 2009-03-07  Jan Hubicka  <jh@suse.cz>
29081
29082         PR target/39361
29083         * tree-inline.c (setup_one_parameter): Do replacement of const
29084         argument by constant in SSA form.
29085
29086 2009-03-07  Ulrich Weigand  <Ulrich.Weigand@de.ibm.com>
29087
29088         PR middle-end/38028
29089         * function.c (assign_parm_setup_stack): Use STACK_SLOT_ALIGNMENT to
29090         determine alignment passed to assign_stack_local.
29091         (assign_parms_unsplit_complex): Likewise.
29092         * except.c (sjlj_build_landing_pads): Likewise.
29093
29094 2009-03-06  Jakub Jelinek  <jakub@redhat.com>
29095
29096         PR middle-end/39360
29097         * tree-flow.h (add_referenced_var): Return bool instead of void.
29098         * tree-dfa.c (add_referenced_var): Return result of
29099         referenced_var_check_and_insert call.
29100         * tree-inline.c (expand_call_inline): Call add_referenced_var instead
29101         of referenced_var_check_and_insert.
29102
29103         PR debug/39372
29104         * dwarf2out.c (add_abstract_origin_attribute): Return origin_die.
29105         (gen_variable_die): Emit DW_AT_location on abstract static variable's
29106         DIE, don't emit it if abstract origin already has it.
29107         * tree-cfg.c (remove_useless_stmts_bind): GIMPLE_BINDs with any
29108         BLOCK_NONLOCALIZED_VARS in its gimple_bind_block aren't useless.
29109
29110 2009-03-06  Jan-Benedict Glaw  <jbglaw@lug-owl.de>
29111
29112         * genpreds.c (needs_variable): Fix parentheses at variable name
29113         detection.
29114         (write_tm_constrs_h): Indent generated code.
29115
29116 2009-03-06  Ramana Radhakrishnan  <ramana.radhakrishnan@arm.com>
29117
29118         * doc/extend.texi (Function Attributes): Add documentation
29119         for isr attributes.
29120
29121 2009-03-06  Jakub Jelinek  <jakub@redhat.com>
29122
29123         PR debug/39387
29124         * dwarf2out.c (dwarf2out_imported_module_or_decl_1): For IMPORTED_DECL
29125         take locus from its DECL_SOURCE_LOCATION instead of input_location.
29126
29127 2009-03-05  Bernd Schmidt  <bernd.schmidt@analog.com>
29128
29129         * config/bfin/bfin.c (bfin_discover_loop): When retrying fails, mark
29130         the loop as bad.
29131
29132 2009-03-05  Jakub Jelinek  <jakub@redhat.com>
29133
29134         PR debug/39379
29135         * tree-cfg.c (remove_useless_stmts_bind): Don't remove GIMPLE_BINDs
29136         with blocks containing IMPORTED_DECLs in BLOCK_VARS.
29137
29138 2009-03-05  Uros Bizjak  <ubizjak@gmail.com>
29139
29140         * config/i386/i386.md (R8_REG, R9_REG): New constants.
29141         * config/i386/i386.h (CONDITIONAL_REGISTER_USAGE): Use named
29142         constants instead of magic numbers.
29143         (HARD_REGNO_CALLER_SAVE_MODE): Ditto.
29144         (QI_REG_P): Ditto.
29145         * config/i386/i386.c (x86_64_int_parameter_registers): Ditto.
29146         (x86_64_ms_abi_int_parameter_registers): Ditto.
29147         (x86_64_int_return_registers): Ditto.
29148         (ix86_maybe_switch_abi): Ditto.
29149         (ix86_expand_call): Ditto for clobbered_registers array.
29150         (ix86_hard_regno_mode_ok): Ditto.
29151         (x86_extended_QIreg_mentioned_p): Ditto.
29152
29153 2009-03-05  J"orn Rennecke  <joern.rennecke@arc.com>
29154
29155         PR tree-optimization/39349
29156         * cse.c (cse_insn): Fix loop to stop at VOIDmode.
29157
29158         * combine.c (gen_lowpart_for_combine): Use omode when generating
29159         clobber.
29160
29161 2009-03-04  J"orn Rennecke  <joern.rennecke@arc.com>
29162
29163         PR rtl-optimization/39235
29164         * loop-iv.c (get_simple_loop_desc): Use XCNEW.
29165
29166 2009-03-04  Zdenek Dvorak  <ook@ucw.cz>
29167
29168         * graphite.c (nb_reductions_in_loop): Update simple_iv arguments.
29169
29170 2009-03-04  Richard Guenther  <rguenther@suse.de>
29171
29172         PR tree-optimization/39362
29173         * tree-ssa-sccvn.c (visit_use): Stores and copies from SSA_NAMEs
29174         that occur in abnormal PHIs should be varying.
29175
29176 2009-03-04  Zdenek Dvorak  <ook@ucw.cz>
29177
29178         * tree-scalar-evolution.c (analyze_scalar_evolution_in_loop):
29179         Extend comments.
29180         (simple_iv):  Take loop as an argument instead of statement.
29181         * tree-scalar-evolution.h (simple_iv): Declaration changed.
29182         * tree-ssa-loop-niter.c (number_of_iterations_exit): Update calls
29183         to simple_iv.
29184         * tree-ssa-loop-ivopts.c (determine_biv_step, find_givs_in_stmt_scev):
29185         Ditto.
29186         * tree-parloops.c (loop_parallel_p, canonicalize_loop_ivs): Ditto.
29187         * matrix-reorg.c (analyze_transpose): Ditto.
29188         * tree-data-ref.c (dr_analyze_innermost): Ditto.
29189         * tree-vect-analyze.c (vect_analyze_data_refs): Ditto.
29190         * tree-predcom.c (ref_at_iteration): Ditto.
29191         * tree-ssa-loop-prefetch.c (idx_analyze_ref): Ditto.
29192
29193 2009-03-04  Richard Guenther  <rguenther@suse.de>
29194
29195         PR tree-optimization/39358
29196         * tree-ssa-structalias.c (do_sd_constraint): Fix check for
29197         escaped_id and callused_id.
29198         (solve_graph): Likewise.
29199
29200 2009-03-04  Richard Guenther  <rguenther@suse.de>
29201
29202         PR tree-optimization/39339
29203         * tree-sra.c (try_instantiate_multiple_fields): Make it
29204         no longer ICE on the above.
29205
29206 2009-03-03  Joseph Myers  <joseph@codesourcery.com>
29207
29208         * emit-rtl.c (adjust_address_1): Reduce offset to a signed value
29209         that fits within Pmode.
29210
29211 2009-03-03  Steve Ellcey  <sje@cup.hp.com>
29212
29213         PR middle-end/10109
29214         * tm.texi (LIBCALL_VALUE): Update description.
29215
29216 2009-03-03  Steve Ellcey  <sje@cup.hp.com>
29217
29218         PR middle-end/34443
29219         * doc/extend.texi (section): Update description.
29220
29221 2009-03-03  H.J. Lu  <hongjiu.lu@intel.com>
29222
29223         PR middle-end/39345
29224         * tree-inline.c (remapped_type): New.
29225         (can_be_nonlocal): Call remapped_type instead of remap_type.
29226
29227 2009-03-03  Jakub Jelinek  <jakub@redhat.com>
29228
29229         PR fortran/39354
29230         * gimplify.c (goa_stabilize_expr): Handle tcc_comparison,
29231         TRUTH_ANDIF_EXPR and TRUTH_ORIF_EXPR.
29232
29233 2009-03-03  Richard Guenther  <rguenther@suse.de>
29234
29235         PR middle-end/39272
29236         * tree.c (tree_nonartificial_location): New function.
29237         * tree.h (tree_nonartificial_location): Declare.
29238         * builtins.c (expand_builtin_memory_chk): Provide location
29239         of the call location for artificial function pieces.
29240         (maybe_emit_chk_warning): Likewise.
29241         (maybe_emit_sprintf_chk_warning): Likewise.
29242         (maybe_emit_free_warning): Likewise.
29243         * expr.c (expand_expr_real_1): Likewise.
29244
29245 2009-03-03  Jakub Jelinek  <jakub@redhat.com>
29246
29247         PR tree-optimization/39343
29248         * tree-ssa-ccp.c (maybe_fold_offset_to_address): Don't check if
29249         COMPONENT_REF t has ARRAY_TYPE.
29250
29251 2009-03-02  Sebastian Pop  <sebastian.pop@amd.com>
29252
29253         PR middle-end/39335
29254         * tree-parloops.c (canonicalize_loop_ivs): Call fold_convert
29255         when the type precision of the induction variable should be
29256         larger than the type precision of nit.
29257         (gen_parallel_loop): Update use of canonicalize_loop_ivs.
29258         * graphite.c (graphite_loop_normal_form): Same.
29259         * tree-flow.h (canonicalize_loop_ivs): Update declaration.
29260
29261 2009-03-02  Uros Bizjak  <ubizjak@gmail.com>
29262
29263         * config/i386/i386.md (ST?_REG, MM?_REG): New constants.
29264         (*call_1_rex64_ms_sysv): Use named constants instead of magic
29265         numbers to describe clobbered registers.
29266         (*call_value_0_rex64_ms_sysv): Ditto.
29267         * config/i386/mmx.md (mmx_emms): Ditto.
29268         (mmx_femms): Ditto.
29269
29270 2009-03-02  Richard Sandiford  <rdsandiford@googlemail.com>
29271
29272         * config/mips/mips.c (mips_mdebug_abi_name): Fix the handling
29273         of ABI_64.
29274
29275 2009-03-02  Ulrich Weigand  <Ulrich.Weigand@de.ibm.com>
29276
29277         * config/spu/spu.c (TARGET_SECTION_TYPE_FLAGS): Define.
29278         (spu_section_type_flags): New function.
29279
29280 2009-03-02  Uros Bizjak  <ubizjak@gmail.com>
29281
29282         * config/i386/i386.h (CONDITIONAL_REGISTER_USAGE): Do not copy
29283         reg_class_contents of FLOAT_REGS into a temporary.
29284
29285 2009-03-02  Richard Guenther  <rguenther@suse.de>
29286             Ira Rosen  <irar@il.ibm.com>
29287
29288         PR tree-optimization/39318
29289         * tree-vect-transform.c (vectorizable_call): Transfer the EH region
29290         information to the vectorized statement.
29291
29292 2009-03-01  Uros Bizjak  <ubizjak@gmail.com>
29293
29294         * config/i386/i386.h (CONDITIONAL_REGISTER_USAGE): Do not shadow "i"
29295         variable.  Use defined names instead of magic constants for REX SSE
29296         registers.
29297
29298 2009-03-01  Richard Guenther  <rguenther@suse.de>
29299
29300         PR tree-optimization/39331
29301         * omp-low.c (lower_send_shared_vars): Do not receive new
29302         values for the reference of DECL_BY_REFERENCE parms or results.
29303
29304 2009-03-01  Jan Hubicka  <jh@suse.cz>
29305
29306         PR debug/39267
29307         * tree.h (BLOCK_NONLOCALIZED_VARS, BLOCK_NUM_NONLOCALIZED_VARS,
29308         BLOCK_NONLOCALIZED_VAR): New macros.
29309         (tree_block): Add nonlocalized_vars.
29310         * dwarf2out.c (gen_formal_parameter_die, gen_variable_die,
29311         gen_decl_die): Add origin argument.  Allow generation of die with
29312         origin at hand only.
29313         (gen_member_die, gen_type_die_with_usage, force_decl_die,
29314         declare_in_namespace, gen_namescpace_die, dwarf2out_decl): Update use
29315         of gen_*.
29316         (gen_block_die): Fix checking for unused blocks.
29317         (process_scope_var): Break out from .... ; work with origins only.
29318         (decls_for_scope) ... here; process nonlocalized list.
29319         (dwarf2out_ignore_block): Look for nonlocalized vars.
29320         * tree-ssa-live.c (remove_unused_scope_block_p): Look for nonlocalized
29321         vars.
29322         (dump_scope_block): Dump them.
29323         * tree-inline.c (remap_decls): Handle nonlocalized vars.
29324         (remap_block): Likewise.
29325         (can_be_nonlocal): New predicate.
29326         (copy_bind_expr, copy_gimple_bind): Update use of remap_block.
29327
29328 2009-03-01  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
29329
29330         * configure: Regenerate.
29331
29332 2009-03-01  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
29333
29334         * optc-gen.awk: No need to duplicate option flags twice.
29335         Reuse help texts for duplicate options which do not have any.
29336
29337         * gcc.c (display_help): Document --version.
29338
29339         * gcc.c (main): If print_help_list and verbose_flag, ensure
29340         driver output comes before subprocess output.
29341
29342         * optc-gen.awk: Assign all remaining fields to help string,
29343         space-separated, for multi-line help in *.opt.
29344
29345         * doc/invoke.texi (Warning Options): -Wsync-nand is C/C++ only.
29346         -Wno-pedantic-ms-format is for MinGW targets only.
29347
29348         * doc/options.texi (Option file format): Fix bad indentation,
29349         restoring dropped sentence.
29350
29351 2009-02-28  Jan Hubicka  <jh@suse.cz>
29352
29353         * tree-inline.c (tree_function_versioning): Output debug info.
29354
29355 2009-02-28  Jan Hubicka  <jh@suse.cz>
29356
29357         PR debug/39267
29358         * tree-inline.c (setup_one_parameter): Do not copy propagate
29359         arguments when not optimizing.
29360
29361 2009-02-28  H.J. Lu  <hongjiu.lu@intel.com>
29362
29363         PR target/39327
29364         * config/i386/sse.md (avx_addsubv8sf3): Correct item bits.
29365         (avx_addsubv4df3): Likewise.
29366         (*avx_addsubv4sf3): Likewise.
29367         (sse3_addsubv4sf3): Likewise.
29368         (*avx_addsubv2df3): Likewise.
29369         (sse3_addsubv2df3): Likewise.
29370         (avx_unpckhps256): Correct item selectors.
29371         (avx_unpcklps256): Likewise.
29372         (avx_unpckhpd256): Likewise.
29373         (avx_unpcklpd256): Likewise.
29374
29375 2009-02-28  Jan Hubicka  <jh@suse.cz>
29376
29377         * tree-inline.c (expand_call_inline): Avoid duplicate declarations of
29378         static vars.
29379         (copy_arguments_for_versioning): If var is declared don't declare it.
29380         (tree_function_versioning): First setup substitutions and then copy
29381         args.
29382
29383 2009-02-27  Jan Hubicka  <jh@suse.cz>
29384
29385         PR debug/39267
29386         * cgraph.h (varpool_output_debug_info): Remove.
29387         * cgraphunit.c (varpool_output_debug_info): Remove.
29388         * dwarf2out.c (deferred_locations_struct): New struct
29389         (deferred_locations): New type.
29390         (deferred_locations_list): New static var.
29391         (deffer_location): New function.
29392         (gen_variable_die): Use it.
29393         (decls_for_scope): Output info on local static vars.
29394         (dwarf2out_finish): Process deferred locations.
29395         * varpool.c (varpool_output_debug_info): Remove.
29396
29397 2009-02-27  Jan Hubicka  <jh@suse.cz>
29398
29399         PR debug/39267
29400         * tree.h (TREE_PROTECTED): Fix comment.
29401         (BLOCK_HANDLER_BLOCK): Remove.
29402         (struct tree_block): Remove handler_block add body_block.
29403         (inlined_function_outer_scope_p): New.
29404         (is_body_block): Remove.
29405         * dbxout.c (dbxout_block): Remove BLOCK_HANDLER_BLOCK.
29406         * dwarf2out.c (is_inlined_entry_point): Remove.
29407         (add_high_low_attributes): Use inlined_function_outer_scope_p.
29408         (gen_block_die): Use is_inlined_entry_point check.  Remove body block
29409         code.
29410         * langhooks.h (struct lang_hooks): Remove no_bodu_blocks.
29411         * gimplify.c (gimplify_expr): Gimplify body blocks.
29412         * tree-ssa-live.c (remove_unused_scope_block_p): Allow removing wrapper
29413         block with multiple subblocks.
29414         (dump_scope_block): Prettier output; dump more flags and info.
29415         (dump_scope_blocks): New.
29416         (remove_unused_locals): Use dump_scope_blocks.
29417         * tree-flow.h (dump_scope_blocks): Declare.
29418         * tree-cfg.c (execute_build_cfg): Dump scope blocks.
29419         * stmt.c (is_body_block): Remove.
29420         * tree-inline.c (remap_block): Copy BODY_BLOCK info.
29421         * langhooks-def.h (LANG_HOOKS_NO_BODY_BLOCKS): Remove.
29422
29423 2009-02-27  Sebastian Pop  <sebastian.pop@amd.com>
29424
29425         PR middle-end/39308
29426         * graphite.c (graphite_loop_normal_form): Do not call
29427         number_of_iterations_exit from a gcc_assert.
29428
29429 2009-02-27  Andreas Krebbel  <Andreas.Krebbel@de.ibm.com>
29430
29431         * config/s390/s390.c (s390_swap_cmp): Look for conditional
29432         jumps if COND is NULL.
29433         (find_cond_jump): New function.
29434         (s390_z10_optimize_cmp): Handling for reg-reg compares added.
29435         * config/s390/s390.md: Remove z10_cobra attribute value.
29436
29437 2009-02-26  Uros Bizjak  <ubizjak@gmail.com>
29438
29439         * config/alpha/alpha.h (alpha_expand_mov): Return false if
29440         force_const_mem returns NULL_RTX.
29441
29442 2009-02-26  Jan Hubicka  <jh@suse.cz>
29443
29444         PR debug/39267
29445         * cgraph.h (varpool_output_debug_info): Remove.
29446         * cgraphunit.c (varpool_output_debug_info): Remove.
29447         * dwarf2out.c (deferred_locations_struct): New struct
29448         (deferred_locations): New type.
29449         (deferred_locations_list): New static var.
29450         (deffer_location): New function.
29451         (gen_variable_die): Use it.
29452         (decls_for_scope): Output info on local static vars.
29453         (dwarf2out_finish): Process deferred locations.
29454         * varpool.c (varpool_output_debug_info): Remove.
29455
29456 2009-02-25  H.J. Lu  <hongjiu.lu@intel.com>
29457
29458         PR rtl-optimization/39241
29459         * jump.c (rtx_renumbered_equal_p): Remove 2 superfluous calls
29460         to subreg_offset_representable_p.
29461
29462 2009-02-25  Paolo Bonzini  <bonzini@gnu.org>
29463
29464         * regmove.c (regmove_optimize): Conform to struct rtl_opt_pass
29465         execute function prototype.  Get f and nregs from max_reg_num
29466         and get_insns.  Remove the first backward pass as it's dead,
29467         guard the forward pass by flag_expensive_optimizations.
29468         (rest_of_handle_regmove): Delete.
29469         (pass_regmove): Replace it with regmove_optimize.
29470
29471 2009-02-25  Martin Jambor  <mjambor@suse.cz>
29472
29473         PR tree-optimization/39259
29474         * tree-inline.c (initialize_cfun): Remove asserts for calls_setjmp and
29475         calls_alloca function flags.
29476         (copy_bb): Set calls_setjmp and alls_alloca function flags if such
29477         calls are detected.
29478
29479 2009-02-25  Paolo Bonzini  <bonzini@gnu.org>
29480
29481         * regmove.c (discover_flags_reg, flags_set_1, mark_flags_life_zones,
29482         flags_set_1_rtx, flags_set_1_set): Delete.
29483         (regmove_optimize): Do not call mark_flags_life_zones.
29484
29485 2009-02-24  Julian Brown  <julian@codesourcery.com>
29486
29487         PR target/35965
29488         * config/arm/arm.c (require_pic_register): Only set
29489         cfun->machine->pic_reg once per function.
29490
29491 2009-02-24  Sandra Loosemore  <sandra@codesourcery.com>
29492
29493         * doc/invoke.texi (Link Options): Document an easier way to pass
29494         options that take arguments to the GNU linker using -Xlinker and -Wl.
29495
29496 2009-02-24  Steve Ellcey  <sje@cup.hp.com>
29497
29498         PR target/33785
29499         * doc/tm.texi (TARGET_C99_FUNCTIONS): Fix description.
29500
29501 2009-02-24  Richard Guenther  <rguenther@suse.de>
29502
29503         PR debug/39285
29504         * dwarf2out.c (gen_enumeration_type_die): Handle CONST_DECLs.
29505
29506 2009-02-24  Richard Guenther  <rguenther@suse.de>
29507             Zdenek Dvorak  <ook@ucw.cz>
29508
29509         PR tree-optimization/39233
29510         * tree-ssa-loop-ivopts.c (add_candidate_1): Do not except pointers
29511         from converting them to a generic type.
29512
29513 2009-02-23  Sebastian Pop  <sebastian.pop@amd.com>
29514
29515         PR tree-optimization/39260
29516         * graphite.c (harmful_stmt_in_bb): Stop a SCoP when the basic block
29517         contains a condition with a real type.
29518         (build_scop_conditions_1): Conditions are always last_stmt of a bb.
29519
29520 2009-02-23  Jason Merrill  <jason@redhat.com>
29521
29522         PR c++/38880
29523         * varasm.c (initializer_constant_valid_p) [PLUS_EXPR]: Check
29524         narrowing_initializer_constant_valid_p.
29525         (narrowing_initializer_constant_valid_p): Don't return
29526         null_pointer_node for adding a pointer to itself.
29527
29528 2009-02-23  Jan Hubicka  <jh@suse.cz>
29529
29530         PR c/12245
29531         * ggc.h (htab_create_ggc): Use ggc_free to free hashtable when
29532         resizing.
29533
29534 2009-02-23  Jan Hubicka  <jh@suse.cz>
29535
29536         PR tree-optimization/37709
29537         * tree.c (block_ultimate_origin): Move here from dwarf2out.
29538         * tree.h (block_ultimate_origin): Declare.
29539         * dwarf2out.c (block_ultimate_origin): Move to tree.c
29540         * tree-ssa-live.c (remove_unused_scope_block_p):
29541         Eliminate blocks containig no instructions nor live variables nor
29542         nested blocks.
29543         (dump_scope_block): New function.
29544         (remove_unused_locals): Enable removal of dead blocks by default;
29545         enable dumping at TDF_DETAILS.
29546
29547 2009-02-21  H.J. Lu  <hongjiu.lu@intel.com>
29548
29549         * config/i386/i386.c (classify_argument): Don't allow COImode
29550         and OImode.
29551         (function_arg_advance_32): Don't allow OImode.
29552         (function_arg_32): Likewise.
29553         (function_value_32): Likewise.
29554         (return_in_memory_32): Likewise.
29555         (function_arg_64): Remove OImode comment.
29556
29557 2009-02-21  H.J. Lu  <hongjiu.lu@intel.com>
29558
29559         PR target/39261
29560         * config/i386/i386.c (ix86_expand_vector_init_one_nonzero): Use
29561         ix86_expand_vector_set for V4DImode in 64bit mode only.
29562         (ix86_expand_vector_init_one_var): Likewise.
29563
29564 2009-02-21  Sebastian Pop  <sebastian.pop@amd.com>
29565
29566         * graphite.c (graphite_trans_loop_block): Adjust tile size to 51.
29567
29568 2009-02-21  Richard Sandiford  <rdsandiford@googlemail.com>
29569
29570         PR bootstrap/39257
29571         * loop-iv.c: Revert last change.
29572         * emit-rtl.c: Likewise.
29573
29574 2009-02-21  H.J. Lu  <hongjiu.lu@intel.com>
29575
29576         PR target/39256
29577         * config/i386/i386.c (type_natural_mode): Remove an extra
29578         space in the warning message.
29579         (function_value_32): Handle 32-byte vector modes.
29580         (return_in_memory_32): Likewise.
29581
29582 2009-02-21  Richard Sandiford  <rdsandiford@googlemail.com>
29583
29584         * loop-iv.c (truncate_value): New function.
29585         (iv_subreg, get_iv_value, iv_number_of_iterations): Use it instead
29586         of lowpart_subreg.
29587         (lowpart_subreg): Move to...
29588         * emit-rtl.c: ...here.
29589
29590 2009-02-21  Danny Smith  <dannysmith@users.sourceforge.net>
29591
29592         * config/i386/winnt.c (i386_pe_asm_output_aligned_decl_common): Revert
29593         accidental and undocumented change at revision 140860.
29594
29595 2009-02-21  Joseph Myers  <joseph@codesourcery.com>
29596
29597         * config/arm/arm.c (arm_gimplify_va_arg_expr): Update prototype to
29598         take gimple_seq * arguments.
29599         (arm_mangle_type): Use CONST_CAST_TREE on type argument passed to
29600         types_compatible_p langhook.
29601
29602 2009-02-20  Mark Mitchell  <mark@codesourcery.com>
29603             Joseph Myers  <joseph@codesourcery.com>
29604
29605         * config/arm/arm.c (arm_builtin_va_list): New function.
29606         (arm_expand_builtin_va_start): Likewise.
29607         (arm_gimplify_va_arg_expr): Likewise.
29608         (TARGET_BUILD_BUILTIN_VA_LIST): Define.
29609         (TARGET_BUILD_BUILTIN_VA_START): Likewise.
29610         (TARGET_BUILD_BUILTIN_VA_ARG_EXPR): Likewise.
29611         (va_list_type): New variable.
29612         (arm_mangle_type): Mangle va_list_type appropriately.
29613
29614 2009-02-20  Jakub Jelinek  <jakub@redhat.com>
29615
29616         PR middle-end/39157
29617         * Makefile.in (loop-invariant.o): Depend on $(PARAMS_H).
29618         * params.h (LOOP_INVARIANT_MAX_BBS_IN_LOOP): Define.
29619         * params.def (loop-invariant-max-bbs-in-loop): New parameter.
29620         * opts.c (decode_options): Set loop-invariant-max-bbs-in-loop
29621         parameter to 1000 for -O1 by default.
29622         * doc/invoke.texi (loop-invariant-max-bbs-in-loop): Document new
29623         parameter.
29624         * loop-invariant.c: Include params.h.
29625         (move_loop_invariants): Don't call move_single_loop_invariants on
29626         very large loops.
29627
29628 2009-02-20  Jaka Mocnik  <jaka@xlab.si>
29629
29630         * calls.c (emit_library_call_value_1): Use slot_offset instead of
29631         offset when calculating bounds for indexing stack_usage_map.  Fixes
29632         a buffer overflow with certain target setups.
29633
29634 2009-02-20  Jakub Jelinek  <jakub@redhat.com>
29635
29636         PR target/39240
29637         * calls.c (expand_call): Clear try_tail_call if caller and callee
29638         disagree in promotion of function return value.
29639
29640 2009-02-19  Jakub Jelinek  <jakub@redhat.com>
29641
29642         PR target/39175
29643         * c-common.c (c_determine_visibility): If visibility changed and
29644         DECL_RTL has been already set, call make_decl_rtl to update symbol
29645         flags.
29646
29647 2009-02-19  H.J. Lu  <hongjiu.lu@intel.com>
29648
29649         PR c++/39188
29650         * varasm.c (assemble_variable): Don't check DECL_NAME when
29651         globalizing a variable.
29652
29653 2009-02-19  Joseph Myers  <joseph@codesourcery.com>
29654
29655         PR c/38483
29656         * builtins.c (gimplify_va_arg_expr): Evaluate the va_list
29657         expression before any __builtin_trap call.
29658         * c-typeck.c (build_function_call): Convert and check function
29659         arguments before generating a call to a trap.  Evaluate the
29660         function arguments before the trap.
29661
29662 2009-02-19  Uros Bizjak  <ubizjak@gmail.com>
29663
29664         PR target/39228
29665         * config/i386/i386.md (isinfxf2): Split from isinf<mode>2.
29666         (UNSPEC_FXAM_MEM): New unspec.
29667         (fxam<mode>2_i387_with_temp): New insn and split pattern.
29668         (isinf<mode>2): Use MODEF mode iterator.  Force operand[1] through
29669         memory using fxam<mode>2_i387_with_temp to remove excess precision.
29670
29671 2009-02-19  Richard Guenther  <rguenther@suse.de>
29672
29673         PR tree-optimization/39207
29674         PR tree-optimization/39074
29675         * tree-ssa-structalias.c (storedanything_id, var_storedanything,
29676         storedanything_tree): New.
29677         (do_ds_constraint): Simplify ANYTHING shortcutting.  Update
29678         the STOREDANYTHING solution if the lhs solution contains ANYTHING.
29679         (build_succ_graph): Add edges from STOREDANYTHING to all
29680         non-direct nodes.
29681         (init_base_vars): Initialize STOREDANYTHING.
29682         (compute_points_to_sets): Free substitution info after
29683         building the succ graph.
29684         (ipa_pta_execute): Likewise.
29685
29686         * tree-ssa-structalias.c (struct variable_info): Add may_have_pointers
29687         field.
29688         (do_ds_constraint): Do not add to special var or non-pointer
29689         field solutions.
29690         (type_could_have_pointers): Split out from ...
29691         (could_have_pointers): ... here.  For arrays use the element type.
29692         (create_variable_info_for): Initialize may_have_pointers.
29693         (new_var_info): Likewise.
29694         (handle_lhs_call): Make the HEAP variable unknown-sized.
29695         (intra_create_variable_infos): Use a type with pointers for
29696         PARM_NOALIAS, make it unknown-sized.
29697
29698 2009-02-18  H.J. Lu  <hongjiu.lu@intel.com>
29699
29700         PR target/39224
29701         * config/i386/i386.c (ix86_return_in_memory): Properly check ABI.
29702
29703 2009-02-18  Jason Merrill  <jason@redhat.com>
29704
29705         PR target/39179
29706         * tree-ssa-ccp.c (get_symbol_constant_value): Don't assume zero
29707         value if DECL_EXTERNAL.
29708         * tree-sra.c (sra_walk_gimple_assign): Likewise.
29709         * target.h (gcc_target::binds_local_p): Clarify "module".
29710         * tree.h (TREE_PUBLIC): Clarify "module".
29711
29712 2009-02-17  Xuepeng Guo  <xuepeng.guo@intel.com>
29713
29714         PR target/38891
29715         * config/i386/i386.h (CONDITIONAL_REGISTER_USAGE): Move the hunk of
29716         initialization for MS_ABI prior to the hunk of !TARGET_MMX.
29717
29718 2009-02-17  H.J. Lu  <hongjiu.lu@intel.com>
29719
29720         PR target/39082
29721         * c.opt (Wabi): Support C and ObjC.
29722         (Wpsabi): New.
29723
29724         * c-opts.c (c_common_handle_option): Handle OPT_Wabi.
29725
29726         * config/i386/i386.c (classify_argument): Warn once about the ABI
29727         change when passing union with long double.
29728
29729         * doc/invoke.texi: Update -Wabi for warning psABI changes.
29730
29731 2009-02-18  Joseph Myers  <joseph@codesourcery.com>
29732
29733         PR c/35447
29734         * c-parser.c (c_parser_compound_statement): Always enter and leave
29735         a scope.
29736
29737 2009-02-17  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
29738
29739         PR target/34587
29740         * config/darwin.h (SUPPORTS_INIT_PRIORITY): Define.
29741
29742 2009-02-18  Jakub Jelinek  <jakub@redhat.com>
29743
29744         PR tree-optimization/36922
29745         * tree-data-ref.c (initialize_matrix_A): Handle BIT_NOT_EXPR.
29746         * tree-scalar-evolution.c (interpret_rhs_expr, instantiate_scev_1):
29747         Likewise.
29748
29749 2009-02-17  Richard Sandiford  <rdsandiford@googlemail.com>
29750
29751         * config/mips/mips.c (mips_override_options): Set flag_dwarf2_cfi_asm
29752         to 0 for EABI64.
29753
29754 2009-02-17  Richard Sandiford  <rdsandiford@googlemail.com>
29755
29756         * config/mips/mips.md (type): Reclassify lui_movf as "unknown".
29757
29758 2009-02-17  Richard Sandiford  <rdsandiford@googlemail.com>
29759
29760         * config/mips/mips.c (mips_gimplify_va_arg_expr): Fix invalid
29761         tree sharing.
29762
29763 2009-02-17  Ruan Beihong  <ruanbeihong@gmail.com>
29764             Richard Sandiford  <rdsandiford@googlemail.com>
29765
29766         * config/mips/mips.c (CODE_FOR_loongson_biadd): Delete.
29767         * config/mips/loongson.md (reduc_uplus_<mode>): Rename to...
29768         (loongson_biadd): ...this.
29769
29770 2009-02-17  Richard Guenther  <rguenther@suse.de>
29771
29772         PR tree-optimization/39202
29773         * tree-ssa-structalias.c (do_structure_copy): Before collapsing
29774         a var make sure to follow existing collapses.
29775
29776 2009-02-17  Richard Guenther  <rguenther@suse.de>
29777
29778         PR middle-end/39214
29779         * langhooks.c (lhd_print_error_function): Check for NULL block.
29780
29781 2009-02-17  Richard Guenther  <rguenther@suse.de>
29782
29783         PR tree-optimization/39204
29784         * tree-ssa-pre.c (phi_translate_1): Lookup the value-number
29785         of the PHI arg.
29786
29787 2009-02-17  Uros Bizjak  <ubizjak@gmail.com>
29788
29789         * config/soft-fp/double.h: Update from glibc CVS.
29790
29791 2009-02-17  Richard Guenther  <rguenther@suse.de>
29792
29793         PR tree-optimization/39207
29794         * tree-ssa-structalias.c (find_what_p_points_to): Do not emit
29795         strict-aliasing warnings for pointers pointing to NULL.
29796
29797 2009-02-16  Joseph Myers  <joseph@codesourcery.com>
29798
29799         PR c/35446
29800         * c-parser.c (c_parser_braced_init): Call pop_init_level when
29801         skipping until next close brace.
29802
29803 2009-02-16  H.J. Lu  <hongjiu.lu@intel.com>
29804
29805         PR target/37049
29806         * config/i386/i386.c (ix86_expand_push): Set memory alignment
29807         to function argument boundary.
29808
29809 2009-02-16  Hariharan Sandanagobalane  <hariharan@picochip.com>
29810
29811         * config/picochip/picochip.md (lea_add): Allow any nonimmediate
29812         in the lea_add. Reload eventually constraints it properly.
29813         * config/picochip/constraints.md: Remove the target constraint
29814         "b", since it is not needed anymore.
29815
29816 2009-02-16  Jakub Jelinek  <jakub@redhat.com>
29817
29818         * gthr-dce.h: Uglify function parameter and local variable names.
29819         * gthr-gnat.h: Likewise.
29820         * gthr-mipssde.h: Likewise.
29821         * gthr-nks.h: Likewise.
29822         * gthr-posix95.h: Likewise.
29823         * gthr-posix.h: Likewise.
29824         * gthr-rtems.h: Likewise.
29825         * gthr-single.h: Likewise.
29826         * gthr-solaris.h: Likewise.
29827         * gthr-tpf.h: Likewise.
29828         * gthr-vxworks.h: Likewise.
29829         * gthr-win32.h: Likewise.
29830
29831 2009-02-15  H.J. Lu  <hongjiu.lu@intel.com>
29832
29833         PR target/39196
29834         * config/i386/i386.md: Restrict the new peephole2 to move
29835         between MMX/SSE registers.
29836
29837 2009-02-15  Richard Guenther  <rguenther@suse.de>
29838
29839         Revert
29840         2009-02-13  Richard Guenther  <rguenther@suse.de>
29841
29842         * configure.ac: Enable LFS.
29843         * configure: Re-generate.
29844         * config.in: Likewise.
29845
29846 2009-02-13  Ulrich Weigand  <Ulrich.Weigand@de.ibm.com>
29847
29848         * config/spu/spu_internals.h (spu_sr, spu_sra, spu_srqw,
29849         spu_srqwbyte, spu_srqwbytebc): Define.
29850         * config/spu/spu-builtins.def (spu_sr, spu_sra, spu_srqw,
29851         spu_srqwbyte, spu_srqwbytebc): New overloaded builtins.
29852         * config/spu/spu.md ("shrqbybi_<mode>", "shrqbi_<mode>",
29853         "shrqby_<mode>"): New insn-and-split patterns.
29854         * config/spu/spu.c (expand_builtin_args): Determine and return
29855         number of operands using spu_builtin_description data.
29856         (spu_expand_builtin_1): Use it.
29857
29858 2009-02-13  Steve Ellcey  <sje@cup.hp.com>
29859
29860         PR target/38056
29861         * config/ia64/ia64.c (ia64_function_ok_for_sibcall): Check
29862         TARGET_CONST_GP.
29863
29864 2009-02-13  H.J. Lu  <hongjiu.lu@intel.com>
29865
29866         PR target/39149
29867         * config/i386/i386.c (override_options): Correct warning
29868         messages for -malign-loops, -malign-jumps and -malign-functions.
29869
29870 2009-02-13  H.J. Lu  <hongjiu.lu@intel.com>
29871
29872         PR target/39152
29873         * config/i386/i386.md: Restrict the new peephole2 to move
29874         between the general purpose registers.
29875
29876 2009-02-13  H.J. Lu  <hongjiu.lu@intel.com>
29877
29878         PR target/39162
29879         * config/i386/i386.c (type_natural_mode): Add a new argument.
29880         Return the original mode and warn ABI change if vector size is 32byte.
29881         (function_arg_advance): Updated.
29882         (function_arg): Likewise.
29883         (ix86_function_value): Likewise.
29884         (ix86_return_in_memory): Likewise.
29885         (ix86_sol10_return_in_memory): Likewise.
29886         (ix86_gimplify_va_arg): Likewise.
29887         (function_arg_32): Don't warn ABX ABI change here.
29888         (function_arg_64): Likewise.
29889
29890 2009-02-13  Bernd Schmidt  <bernd.schmidt@analog.com>
29891
29892         * loop-iv.c (implies_p): In the final case, test that operands 0
29893         of the two comparisons match.
29894
29895         * config/bfin/bfin.c (find_prev_insn_start): New function.
29896         (bfin_optimize_loop): Use it in some cases instead of PREV_INSN.
29897         (find_next_insn_start): Move.
29898
29899 2009-02-13  Richard Guenther  <rguenther@suse.de>
29900
29901         * configure.ac: Enable LFS.
29902         * configure: Re-generate.
29903         * config.in: Likewise.
29904
29905 2009-02-13  Joseph Myers  <joseph@codesourcery.com>
29906
29907         PR c/35444
29908         * c-parser.c (c_parser_parms_list_declarator): Discard pending
29909         sizes on syntax error after some arguments have been parsed.
29910
29911 2009-02-12  Jakub Jelinek  <jakub@redhat.com>
29912
29913         * doc/invoke.texi (-fira): Remove.
29914
29915 2009-02-12  H.J. Lu  <hongjiu.lu@intel.com>
29916
29917         * caller-save.c: Replace regclass.c with reginfo.c in comments.
29918         * recog.c: Likewise.
29919         * rtl.h: Likewise.
29920
29921 2009-02-12  Uros Bizjak  <ubizjak@gmail.com>
29922
29923         * longlong.h (sub_ddmmss): New for ia64. Ported from GMP 4.2.
29924         (umul_ppmm): Likewise.
29925         (count_leading_zeros): Likewise.
29926         (count_trailing_zeros): Likewise.
29927         (UMUL_TIME): Likewise.
29928
29929 2009-02-12  H.J. Lu  <hongjiu.lu@intel.com>
29930
29931         * config.gcc (ia64*-*-linux*): Add ia64/t-fprules-softfp and
29932         soft-fp/t-softfp to tmake_file.
29933
29934         * config/ia64/ia64.c (ia64_soft_fp_init_libfuncs): New.
29935         (ia64_expand_compare): Use HPUX library for TFmode only for HPUX.
29936         (ia64_builtins) [IA64_BUILTIN_COPYSIGNQ, IA64_BUILTIN_FABSQ,
29937         IA64_BUILTIN_INFQ]: New.
29938         (ia64_init_builtins): Initialize __builtin_infq,
29939         __builtin_fabsq and __builtin_copysignq if not HPUX.
29940         (ia64_expand_builtin): Handle IA64_BUILTIN_COPYSIGNQ,
29941         IA64_BUILTIN_FABSQ and IA64_BUILTIN_INFQ.
29942
29943         * config/ia64/lib1funcs.asm (__divtf3): Define only if
29944         SHARED is defined.
29945         (__fixtfti): Likewise.
29946         (__fixunstfti): Likewise.
29947         (__floattitf): Likewise.
29948
29949         * config/ia64/libgcc-glibc.ver: New.
29950         * config/ia64/t-fprules-softfp: Likewise.
29951         * config/ia64/sfp-machine.h: Likewise.
29952
29953         * config/ia64/linux.h (LIBGCC2_HAS_TF_MODE): New.
29954         (LIBGCC2_TF_CEXT): Likewise.
29955         (TF_SIZE): Likewise.
29956         (TARGET_INIT_LIBFUNCS): Likewise.
29957
29958         * config/ia64/t-glibc (SHLINB_MAPFILES):
29959         Add $(srcdir)/config/ia64/libgcc-glibc.ver.
29960
29961 2009-02-12  H.J. Lu  <hongjiu.lu@intel.com>
29962
29963         * config/i386/i386.c (construct_container): Rewrite processing
29964         BLKmode with X86_64_SSE_CLASS.
29965
29966 2009-02-12  Paolo Bonzini  <bonzini@gnu.org>
29967
29968         PR target/39152
29969         * config/i386/i386.md: Replace simplify_replace_rtx with
29970         replace_rtx in the new peephole2.
29971
29972 2009-02-12  Nathan Sidwell  <nathan@codesourcery.com>
29973
29974         * doc/invoke.texi (Optimize Options): Stop claiming inlining and
29975         loop unrolling do not happen at -O2.
29976
29977 2009-02-12  Michael Matz  <matz@suse.de>
29978
29979         * gcc.c (ASM_DEBUG_SPEC): Check for -g0.
29980
29981 2009-02-12  Jakub Jelinek  <jakub@redhat.com>
29982
29983         * dwarf2out.c (dwarf2out_finish): Force output of comp_unit_die
29984         for -g3.
29985
29986 2009-02-12  Ben Elliston  <bje@au.ibm.com>
29987
29988         * config/rs6000/rs6000.md (allocate_stack): Use _stack form of
29989         patterns when updating the back chain.  Missed in the 2009-02-10
29990         change.
29991
29992 2009-02-11  Janis Johnson  <janis187@us.ibm.com>
29993
29994         * doc/extend.texi (Decimal Floating Types): Update identifier of
29995         draft TR and list of missing support.
29996
29997 2009-02-11  Jakub Jelinek  <jakub@redhat.com>
29998
29999         PR middle-end/39154
30000         * gimplify.c (omp_notice_variable): If adding GOVD_SEEN
30001         bit to variable length decl's flags, add it also to its
30002         pointer replacement variable.
30003
30004 2009-02-11  Uros Bizjak  <ubizjak@gmail.com>
30005             Jakub Jelinek  <jakub@redhat.com>
30006
30007         PR target/39118
30008         * config/i386/i386.md (UNSPEC_MEMORY_BLOCKAGE): New constant.
30009         (memory_blockage): New expander.
30010         (*memory_blockage): New insn pattern.
30011         * config/i386/i386.c (ix86_expand_prologue): Use memory_blockage
30012         instead of general blockage at the end of function prologue when
30013         frame pointer is used to access red zone area.  Do not emit blockage
30014         when profiling, it is emitted in generic code.
30015         (ix86_expand_epilogue): Emit memory_blockage at the beginning of
30016         function epilogue when frame pointer is used to access red zone area.
30017
30018 2009-02-11  Paolo Bonzini  <bonzini@gnu.org>
30019
30020         PR target/38824
30021         * config/i386/i386.md: Add two new peephole2 to avoid mov followed
30022         by arithmetic with memory operands.
30023         * config/i386/predicates.md (commutative_operator): New.
30024
30025 2009-02-10  Janis Johnson  <janis187@us.ibm.com>
30026
30027         * doc/extend.texi (Fixed-Point Types): Break long paragraphs into
30028         bulleted lists.
30029
30030 2009-02-10  Eric Botcazou  <ebotcazou@adacore.com>
30031
30032         * alias.h (record_alias_subset): Declare.
30033         * alias.c (record_alias_subset): Make global.
30034
30035 2009-02-10  Nick Clifton  <nickc@redhat.com>
30036
30037         * tree-parloops.c: Change license to GPLv3.
30038         * ipa-struct-reorg.c: Change license to GPLv3.
30039         * ipa-struct-reorg.h: Change license to GPLv3.
30040
30041 2009-02-10  Steve Ellcey  <sje@cup.hp.com>
30042
30043         PR c/39084
30044         * c-decl.c (start_struct): Return NULL on error.
30045
30046 2009-02-10  Jakub Jelinek  <jakub@redhat.com>
30047
30048         PR middle-end/39124
30049         * cfgloopmanip.c (remove_path): Call remove_bbs after
30050         cancel_loop_tree, not before it.
30051
30052         PR target/39139
30053         * function.h (struct function): Add has_local_explicit_reg_vars bit.
30054         * gimplify.c (gimplify_bind_expr): Set it if local DECL_HARD_REGISTER
30055         VAR_DECLs were seen.
30056         * tree-ssa-live.c (remove_unused_locals): Recompute
30057         cfun->has_local_explicit_reg_vars.
30058         * tree-ssa-sink.c (statement_sink_location): Don't sink BLKmode
30059         copies or clearings if cfun->has_local_explicit_reg_vars.
30060
30061 2009-02-10  Uros Bizjak  <ubizjak@gmail.com>
30062
30063         PR target/39118
30064         * config/i386/i386.c (expand_prologue): Emit blockage at the end
30065         of function prologue when frame pointer is used to access
30066         red zone area.
30067
30068 2009-02-10  Richard Guenther  <rguenther@suse.de>
30069
30070         PR middle-end/39127
30071         * gimplify.c (gimple_regimplify_operands): Always look if
30072         we need to create a temporary.
30073
30074 2009-02-10  Richard Guenther  <rguenther@suse.de>
30075
30076         PR tree-optimization/39132
30077         * tree-loop-distribution.c (todo): New global var.
30078         (generate_memset_zero): Trigger TODO_rebuild_alias.
30079         (tree_loop_distribution): Return todo.
30080
30081 2009-02-10  H.J. Lu  <hongjiu.lu@intel.com>
30082
30083         PR target/39119
30084         * config/i386/i386.c (x86_64_reg_class): Remove X86_64_AVX_CLASS.
30085         (x86_64_reg_class_name): Removed.
30086         (classify_argument): Return 0 if bytes > 32.  Return 0 if the
30087         first one isn't X86_64_SSE_CLASS or any other ones aren't
30088         X86_64_SSEUP_CLASS when size > 16bytes.  Don't turn
30089         X86_64_SSEUP_CLASS into X86_64_SSE_CLASS if the preceded one
30090         is X86_64_SSEUP_CLASS.  Set AVX modes to 1 X86_64_SSE_CLASS
30091         and 3 X86_64_SSEUP_CLASS.
30092         (construct_container): Remove X86_64_AVX_CLASS.  Handle 4
30093         registers with 1 X86_64_SSE_CLASS and 3 X86_64_SSEUP_CLASS.
30094
30095 2009-02-10  Ben Elliston  <bje@au.ibm.com>
30096
30097         * config/rs6000/rs6000.md (allocate_stack): Always use an update
30098         form instruction to update the stack back chain word, even if the
30099         user has disabled the generation of update instructions.
30100         (movdi_<mode>_update_stack): New.
30101         (movsi_update_stack): Likewise.
30102         * config/rs6000/rs6000.c (rs6000_emit_allocate_stack): Likewise,
30103         always use an update form instruction to update the stack back
30104         chain word.
30105
30106 2009-02-09  Sebastian Pop  <sebastian.pop@amd.com>
30107
30108         PR middle-end/38953
30109         * graphite.c (if_region_set_false_region): After moving a region in
30110         the false branch of a condition, remove the empty dummy basic block.
30111         (gloog): Remove wrong fix for PR38953.
30112
30113 2009-02-09  Ulrich Weigand  <Ulrich.Weigand@de.ibm.com>
30114
30115         * config/spu/spu.c (array_to_constant): Fix (latent) wrong-code
30116         generation due to implicit sign extension.
30117
30118 2009-02-09  Eric Botcazou  <ebotcazou@adacore.com>
30119
30120         PR middle-end/38981
30121         * tree-ssa-coalesce.c (add_coalesce): Cap the costs of coalesce pairs
30122         at MUST_COALESCE_COST-1 instead of MUST_COALESCE_COST.
30123
30124 2009-02-09  Richard Guenther  <rguenther@suse.de>
30125
30126         PR middle-end/35202
30127         * convert.c (convert_to_real): Disable (float)fn((double)x)
30128         to fnf(x) conversion if errno differences may occur and
30129         -fmath-errno is set.
30130
30131 2009-02-07  Anatoly Sokolov  <aesok@post.ru>
30132
30133         * config/avr/avr.c (avr_mcu_t): Add ata6289 device.
30134         * config/avr/avr.h (LINK_SPEC, CRT_BINUTILS_SPECS): (Ditto.).
30135         * config/avr/t-avr (MULTILIB_MATCHES): (Ditto.).
30136
30137 2009-02-06  Joseph Myers  <joseph@codesourcery.com>
30138
30139         PR c/35434
30140         * c-common.c (handle_alias_attribute): Disallow attribute for
30141         anything not a FUNCTION_DECL or VAR_DECL.
30142
30143 2009-02-06  Janis Johnson  <janis187@us.ibm.com>
30144
30145         PR c/39035
30146         * real.c (do_compare): Special-case compare of zero against
30147         decimal float value.
30148
30149 2009-02-06  Joseph Myers  <joseph@codesourcery.com>
30150
30151         PR c/36432
30152         * c-decl.c (grokdeclarator): Don't treat [] declarators in fields
30153         as indicating flexible array members unless the field itself is
30154         being declarared as the incomplete array.
30155
30156 2009-02-06  Jan Hubicka  <jh@suse.cz>
30157
30158         PR tree-optimization/38844
30159         * ipa-inline.c (try_inline): Stop inlining recursion when edge
30160         is already inlined.
30161
30162 2009-02-06  Richard Guenther  <rguenther@suse.de>
30163
30164         PR middle-end/38977
30165         * tree-cfg.c (need_fake_edge_p): Force a fake edge for
30166         fork because we may expand it as __gcov_fork.
30167
30168 2009-02-06  Nick Clifton  <nickc@redhat.com>
30169
30170         * config/m32c/m32c.h (PCC_BITFIELD_TYPE_MATTERS): Define to zero.
30171
30172 2009-02-06  Paolo Bonzini  <bonzini@gnu.org>
30173
30174         PR tree-optimization/35659
30175         * tree-ssa-sccvn.c (vn_constant_eq, vn_reference_eq, vn_nary_op_eq
30176         vn_phi_eq): Shortcut if hashcode does not match.
30177         (vn_reference_op_compute_hash): Do not call iterative_hash_expr for
30178         NULL operands.
30179         * tree-ssa-pre.c (pre_expr_hash): Look at hashcode if available,
30180         and avoid iterative_hash_expr.
30181         (FOR_EACH_VALUE_ID_IN_SET): New.
30182         (value_id_compare): Remove.
30183         (sorted_array_from_bitmap_set): Use FOR_EACH_VALUE_ID_IN_SET to
30184         sort expressions by value id.
30185
30186 2009-02-05  Kaz Kojima  <kkojima@gcc.gnu.org>
30187
30188         PR target/38991
30189         * config/sh/predicates.md (general_movsrc_operand): Don't check
30190         the subreg of system registers here.
30191
30192 2009-02-05  Jakub Jelinek  <jakub@redhat.com>
30193
30194         PR c++/39106
30195         * cgraphunit.c (cgraph_function_versioning): Clear also DECL_VIRTUAL_P
30196         on the copied decl.
30197
30198 2009-02-05  Paolo Bonzini  <bonzini@gnu.org>
30199
30200         PR rtl-optimization/39110
30201         * rtlanal.c (rtx_addr_can_trap_p_1): Shortcut unaligned
30202         addresses, not aligned ones.
30203
30204 2009-02-05  Daniel Berlin  <dberlin@dberlin.org>
30205             Richard Guenther  <rguenther@suse.de>
30206
30207         PR tree-optimization/39100
30208         * tree-ssa-structalias.c (do_ds_constraint): Actually do what the
30209         comment says and add edges.
30210
30211 2009-02-05  Joseph Myers  <joseph@codesourcery.com>
30212
30213         PR c/35435
30214         * c-common.c (handle_tls_model_attribute): Ignore attribute for
30215         non-VAR_DECLs without checking DECL_THREAD_LOCAL_P.
30216
30217 2009-02-04  Tobias Grosser  <grosser@fim.uni-passau.de>
30218
30219         * graphite.c (bb_in_sese_p, sese_build_livein_liveouts_use,
30220         sese_build_livein_liveouts_bb, sese_build_livein_liveouts,
30221         register_bb_in_sese, new_sese, free_sese): Moved.
30222         (dot_scop_1, build_scop_loop_nests, build_loop_iteration_domains,
30223         outermost_loop_in_scop, build_scop_iteration_domain,
30224         expand_scalar_variables_ssa_name, get_vdef_before_scop,
30225         limit_scops): Use bb_in_sese_p instead of bb_in_scop_p.
30226         Use loop_in_sese_p instead of loop_in_scop_p.
30227         (new_graphite_bb, gloog): Do not initialize SCOP_BBS_B.
30228         (new_scop, free_scop): Remove SCOP_LOOP2CLOOG_LOOP and SCOP_BBS_B.
30229         (scopdet_basic_block_info): Fix bug in scop detection.
30230         (new_loop_to_cloog_loop_str, hash_loop_to_cloog_loop,
30231         eq_loop_to_cloog_loop): Remove.
30232         (nb_loops_around_loop_in_scop, nb_loop
30233         ref_nb_loops): Moved here...
30234         * graphite.h (ref_nb_loops): ... from here.
30235         (struct scop): Remove bbs_b bitmap and loop2cloog_loop.
30236         (loop_domain_dim, loop_iteration_vector_dim): Remove.
30237         (SCOP_BBS_B, bb_in_scop_p, loop_in_scop_p): Removed.
30238
30239 2009-02-04  Paolo Bonzini  <bonzini@gnu.org>
30240             Hans-Peter Nilsson  <hp@axis.com>
30241
30242         PR rtl-optimization/37889
30243         * rtlanal.c (rtx_addr_can_trap_p_1): Add offset and size arguments.
30244         Move offset handling from PLUS to before the switch.  Use new
30245         arguments when considering SYMBOL_REFs too.
30246         (rtx_addr_can_trap_p): Pass dummy offset and size.
30247         (enum may_trap_p_flags): Remove.
30248         (may_trap_p_1): Pass size from MEM_SIZE.
30249
30250         PR rtl-optimization/38921
30251         * loop-invariant.c (find_invariant_insn): Use may_trap_or_fault_p.
30252         * rtl.h (may_trap_after_code_motion_p): Delete prototype.
30253         * rtlanal.c (may_trap_after_code_motion_p): Delete.
30254         (may_trap_p, may_trap_or_fault_p): Pass 0/1 as flags.
30255
30256 2009-02-04  H.J. Lu  <hongjiu.lu@intel.com>
30257
30258         AVX Programming Reference (January, 2009)
30259         * config/i386/sse.md (*vpclmulqdq): New.
30260
30261 2009-02-04  Jakub Jelinek  <jakub@redhat.com>
30262
30263         PR tree-optimization/38977
30264         PR gcov-profile/38292
30265         * calls.c (special_function_p): Disregard __builtin_ prefix.
30266
30267 2009-02-04  Hariharan Sandanagobalane  <hariharan@picochip.com>
30268
30269         * config/picochip/picochip.c (GO_IF_LEGITIMATE_ADDRESS): Disallow
30270         non-indexable addresses even before reload.
30271
30272 2009-02-03  Joseph Myers  <joseph@codesourcery.com>
30273
30274         PR c/29129
30275         * c-decl.c (grokdeclarator): Mark [*] arrays in field declarators
30276         as having variable size.  Do not give an error for unnamed
30277         parameters with [*] declarators.  Give a warning for type names
30278         with [*] declarators and mark them as variable size.
30279         * c-parser.c (c_parser_sizeof_expression): Do not give an error
30280         for sizeof applied to [*] type names.
30281
30282 2009-02-03  Andrew Pinski  <andrew_pinski@playstation.sony.com>
30283
30284         PR C++/36607
30285         * convert.c (convert_to_integer): Treat OFFSET_TYPE like INTEGER_TYPE.
30286
30287 2009-02-03  Jakub Jelinek  <jakub@redhat.com>
30288
30289         * gcc.c (process_command): Update copyright notice dates.
30290         * gcov.c (print_version): Likewise.
30291         * gcov-dump.c (print_version): Likewise.
30292         * mips-tfile.c (main): Likewise.
30293         * mips-tdump.c (main): Likewise.
30294
30295 2009-02-03  Joseph Myers  <joseph@codesourcery.com>
30296
30297         PR c/35433
30298         * c-typeck.c (composite_type): Set TYPE_SIZE and TYPE_SIZE_UNIT
30299         for composite type involving a zero-length array type.
30300
30301 2009-02-03  Jakub Jelinek  <jakub@redhat.com>
30302
30303         PR target/35318
30304         * function.c (match_asm_constraints_1): Skip over
30305         initial optional % in the constraint.
30306
30307         PR inline-asm/39059
30308         * c-parser.c (c_parser_postfix_expression): If fixed point is not
30309         supported, don't accept FIXED_CSTs.
30310         * c-decl.c (finish_declspecs): Error if fixed point is not supported
30311         and _Sat is used without _Fract/_Accum.  Set specs->type to
30312         integer_type_node for cts_fract/cts_accum if fixed point is not
30313         supported.
30314
30315 2009-02-02  Catherine Moore  <clm@codesourcery.com>
30316
30317         * sde.h (SUBTARGET_ARM_SPEC): Don't assemble -fpic code as -mabicalls.
30318
30319 2009-02-02  Richard Sandiford  <rdsandiford@googlemail.com>
30320
30321         * config/mips/mips.h (FILE_HAS_64BIT_SYMBOLS): New macro.
30322         (ABI_HAS_64BIT_SYMBOLS): Use it.
30323         (DWARF2_ADDR_SIZE): Use it instead of ABI_HAS_64BIT_SYMBOLS.
30324
30325 2009-02-02  Paul Brook  <paul@codesourcery.com>
30326
30327         * config/arm/arm.md (arm_addsi3): Add r/r/k alternative.
30328
30329 2009-02-02  Jakub Jelinek  <jakub@redhat.com>
30330
30331         PR inline-asm/39058
30332         * recog.h (asm_operand_ok): Add constraints argument.
30333         * recog.c (asm_operand_ok): Likewise.  If it is set, for digits
30334         recurse on matching constraint.
30335         (check_asm_operands): Pass constraints as 3rd argument to
30336         asm_operand_ok.  Don't look up matching constraint here.
30337         * stmt.c (expand_asm_operands): Pass NULL as 3rd argument
30338         to asm_operand_ok.
30339
30340 2009-02-02  Ben Elliston  <bje@au.ibm.com>
30341
30342         * doc/tm.texi (Storage Layout): Fix TARGET_ALIGN_ANON_BITFIELD and
30343         TARGET_NARROW_VOLATILE_BITFIELD macro names.
30344
30345 2009-01-31  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
30346
30347         * doc/install.texi (hppa*-hp-hpux*): Update binutils and linker
30348         information.  Remove some obsolete information.  Reorganize.
30349
30350         * config/pa/fptr.c: Revert license to GPL 2.
30351         * config/pa/milli64.S: Likewise.
30352
30353 2009-01-31  Dave Korn  <dave.korn.cygwin@gmail.com>
30354
30355         PR target/38904
30356         * mkmap-flat.awk (END):  Use pe_dll command-line arg to pass
30357         LIBRARY name in, instead of hard-coding it.
30358         * config.gcc (i[34567]86-*-pe | i[34567]86-*-cygwin*):  Add an
30359         extra target make frag to tmake_files according to EH model.
30360         (i[34567]86-*-mingw* | x86_64-*-mingw*):  Likewise.
30361         * config/i386/t-dw2-eh, config/i386/t-sjlj-eh:  Add new target
30362         frags that define makefile variable EH_MODEL appropriately.
30363         * config/i386/cygming.h (DWARF2_UNWIND_INFO):  Add comment.
30364         * config/i386/cygwin.h (LIBGCC_EH_EXTN):  Define to nothing or
30365         to "-sjlj" according to type of EH configured.
30366         (LIBGCC_SONAME):  Concatenate it to shared library base name.
30367         * config/i386/mingw32.h (LIBGCC_EH_EXTN):  Define to "_dw2" or
30368         to "_sjlj" according to type of EH configured.
30369         (LIBGCC_SONAME):  Concatenate it to shared library base name.
30370         * config/i386/t-cygming (SHLIB_SONAME):  Use EH_MODEL.
30371         (SHLIB_LINK):  Add missing semicolon to if-else construct.
30372         (SHLIB_MKMAP_OPTS):  Pass library name to mkmap-flat.awk as
30373         string value of "pe_dll" command-line option.
30374         * config/i386/t-cygwin (SHLIB_EH_EXTENSION):  New helper.
30375         (SHLIB_SONAME):  Use it when overriding t-cygming default.
30376         (SHLIB_IMPLIB):  Override t-cygming default.
30377         (SHLIB_MKMAP_OPTS):  Pass library name to mkmap-flat.awk as
30378         string value of "pe_dll" command-line option.
30379
30380 2009-01-31  Dave Korn  <dave.korn.cygwin@gmail.com>
30381
30382         PR target/38952
30383         * config/i386/i386.c (ix86_builtin_setjmp_frame_value): New.
30384         (TARGET_BUILTIN_SETJMP_FRAME_VALUE): Override default to point at it.
30385
30386 2009-01-31  Richard Guenther  <rguenther@suse.de>
30387
30388         PR tree-optimization/38937
30389         * tree-ssa-structalias.c (do_sd_constraint): Do not shortcut
30390         computing the transitive closure.
30391
30392 2009-01-30  Richard Guenther  <rguenther@suse.de>
30393
30394         PR tree-optimization/39041
30395         * tree-ssa-forwprop.c (forward_propagate_addr_expr_1):
30396         Propagate variable indices only if the types match for this stmt.
30397
30398 2009-01-30  Jakub Jelinek  <jakub@redhat.com>
30399
30400         PR target/39013
30401         * c-decl.c (pop_scope): Set DECL_EXTERNAL for functions declared
30402         inline but never defined.
30403
30404 2009-01-30  Wolfgang Gellerich  <gellerich@de.ibm.com>
30405
30406         * config/s390/s390.md (*insv<mode>_reg_extimm): Removed.
30407         (*insv_h_di_reg_extimm): New insn.
30408         (*insv_l<mode>_reg_extimm): New insn.
30409
30410 2009-01-30  Hariharan Sandanagobalane  <hariharan@picochip.com>
30411
30412         * config/picochip/picochip.c (flag_conserve_stack): set
30413         PARAM_LARGE_STACK_FRAME and PARAM_STACK_FRAME_GROWTH to zero under
30414         fconserve-stack. Reduce call-overhead used by inliner.
30415
30416 2009-01-30  Hariharan Sandanagobalane  <hariharan@picochip.com>
30417
30418         PR/38157
30419         * common.opt (flag_conserve_stack): Initialised to zero.
30420
30421 2009-01-30  Kai Tietz  <kai.tietz@onevision.com>
30422
30423         PR/39002
30424         * config/i386/i386.c (ix86_can_use_return_insn_p): Check for nsseregs.
30425         (ix86_expand_epilogue): Take nsseregs in account to use proper restore
30426         method.
30427
30428 2009-01-29  H.J. Lu  <hongjiu.lu@intel.com>
30429
30430         * ira-color.c (allocno_reload_assign): Update comments.
30431         * regmove.c (regmove_optimize): Likewise.
30432
30433         * ra.h: Removed.
30434
30435 2009-01-29  Robert Millan  <rmh@aybabtu.com>
30436
30437         * config.gcc: Recognize GNU/kOpenSolaris (*-*-kopensolaris*-gnu).
30438         * config/i386/kopensolaris-gnu.h: New file.  Undefine
30439         `MD_UNWIND_SUPPORT'.
30440         * config/kopensolaris-gnu.h: New file (based on kfreebsd-gnu.h).
30441
30442 2009-01-29  Kazu Hirata  <kazu@codesourcery.com>
30443
30444         PR tree-optimization/39007
30445         * tree-loop-distribution.c (generate_builtin): Use
30446         recompute_dominator to compute the immediate dominator of the
30447         basic block just after the loop.
30448
30449 2009-01-29  Rainer Orth  <ro@TechFak.Uni-Bielefeld.DE>
30450
30451         * config/i386/sol2-10.h [!HAVE_AS_IX86_DIFF_SECT_DELTA]
30452         (ASM_OUTPUT_DWARF_PCREL): Define.
30453
30454 2009-01-29  Vladimir Makarov  <vmakarov@redhat.com>
30455
30456         * doc/tm.texi (TARGET_IRA_COVER_CLASSES): Modify description.
30457         * doc/passes.texi: Remove entries about regclass, local-alloc, and
30458         global.  Modify entries about regmove and IRA.
30459
30460         * ra-conflict.c: Remove the file.
30461
30462         * reload.c (push_reload, find_dummy_reload): Remove flag_ira.
30463
30464         * tree-pass.h (pass_local_alloc, pass_global_alloc): Remove.
30465         (pass_regclass_init): Rename to pass_reginfo_init.
30466
30467         * cfgloopanal.c (estimate_reg_pressure_cost): Remove flag_ira.
30468
30469         * toplev.h (flag_ira): Remove.
30470
30471         * caller-save.c (setup_save_areas): Remove flag_ira.
30472
30473         * ira-color.c (ira_reuse_stack_slot, ira_mark_new_stack_slot): Ditto.
30474
30475         * global.c: Remove the file.
30476
30477         * opts.c (decode_options): Remove flag_ira.
30478
30479         * hard-reg-set.h (losing_caller_save_reg_set): Remove.
30480
30481         * regmove.c: Modify file description.
30482         (find_use_as_address, try_auto_increment): Define them only if
30483         AUTO_INC_DEC is defined.
30484         (replacement_quality, replace_in_call_usage, fixup_match_1,
30485         stable_and_no_regs_but_for_p): Remove.
30486         (reg_set_in_bb): Make it static.
30487         (regmove_optimize): Remove flag_ira and code which worked for
30488         !flag_ira.
30489
30490         * local-alloc.c: Remove the file.
30491
30492         * common.opt (fira): Remove.
30493
30494         * ira.c: Include except.h.
30495         (eliminable_regset): Move from global.c.
30496         (mark_elimination): Ditto.  Remove flag_ira.
30497         (reg_renumber, struct equivalence, reg_equiv, equiv_mem,
30498         equiv_mem_modified, validate_equiv_mem_from_store,
30499         validate_equiv_mem, equiv_init_varies_p, equiv_init_movable_p,
30500         contains_replace_regs, memref_referenced_p, memref_used_between_p,
30501         no_equiv, recorded_label_ref): Move from local-alloc.c.
30502         (update_equiv_regs): Ditto.  Make it static.
30503         (print_insn_chain, print_insn_chains): Move it from global.c.
30504         (pseudo_for_reload_consideration_p): Ditto.  Remove flag_ira.
30505         (build_insn_chain): Ditto.  Make it static.
30506         (ra_init_live_subregs): Move from ra-conflict.c.  Make it static.
30507         Rename to init_live_subregs.
30508         (gate_ira): Remove flag_ira.
30509
30510         * regclass.c: Rename reginfo.c.  Change file description.
30511         (FORBIDDEN_INC_DEC_CLASSES): Remove.
30512         (reg_class_superclasses, forbidden_inc_dec_class, in_inc_dec): Remove.
30513         (init_reg_sets_1): Remove code for evaluation of
30514         reg_class_superclasses and losing_caller_save_reg_set.
30515         (init_regs): Remove init_reg_autoinc.
30516         (struct costs, costs, init_cost, ok_for_index_p_nonstrict,
30517         ok_for_base_p_nonstrict): Remove.
30518         (regclass_init): Rename to reginfo_init.  Don't initialize init_cost.
30519         (pass_regclass_init): Rename to pass_reginfo_init.  Modify
30520         corresponding entries.
30521         (dump_regclass, record_operand_costs, scan_one_insn,
30522         init_reg_autoinc, regclass, record_reg_classes, copy_cost,
30523         record_address_regs, auto_inc_dec_reg_p): Remove.
30524         (gt-regclass.h): Rename to gt-reginfo.h.
30525
30526         * rtl.h (dump_global_regs, retry_global_alloc,
30527         build_insn_chain, dump_local_alloc, update_equiv_regs): Remove.
30528
30529         * Makefile.in (RA_H): Remove.
30530         (OBJS-common): Remove global.o, local-alloc.o, and ra-conflict.o.
30531         Rename regclass.o to reginfo.o.
30532         (regclass.o): Rename to reginfo.o.  Rename gt-regclass.h to
30533         gt-reginfo.h.
30534         (global.o, local-alloc.o, ra-conflict.o): Remove entries.
30535         (GTFILES): Rename regclass.c to reginfo.c.
30536
30537         * passes.c (init_optimization_passes): Remove pass_local_alloc and
30538         pass_global_alloc.  Rename pass_regclass_init to pass_reginfo_init.
30539
30540         * reload1.c (compute_use_by_pseudos, reload, count_pseudo,
30541         count_spilled_pseudo, find_reg, alter_reg, delete_output_reload):
30542         Remove flag_ira.
30543         (finish_spills): Ditto.  Remove code for !flag_ira.
30544
30545 2009-01-29  Kenneth Zadeck  <zadeck@naturalbridge.com>
30546
30547         PR middle-end/35854
30548         * doc/invoke.texi (rtl debug options): Complete rewrite.
30549         * auto-inc-dec.c (pass_inc_dec): Rename pass from "auto-inc-dec"
30550         to auto_inc_dec".
30551         * mode-switching.c (pass_mode_switching): Rename pass from
30552         "mode-sw" to "mode_sw".
30553         * except.c (pass_convert_to_eh_ranges): Rename pass from
30554         "eh-ranges" to "eh_ranges".
30555         * lower-subreg.c (pass_lower_subreg): Renamed pass from "subreg"
30556         to "subreg1".
30557
30558
30559 2009-01-29  Andrey Belevantsev  <abel@ispras.ru>
30560             Alexander Monakov  <amonakov@ispras.ru>
30561
30562         PR middle-end/38857
30563         * sel-sched.c (count_occurrences_1): Check that *cur_rtx is a hard
30564         register.
30565         (move_exprs_to_boundary): Change return type and pass through
30566         should_move from move_op.  Relax assert.  Update usage ...
30567         (schedule_expr_on_boundary): ... here.  Use should_move instead of
30568         cant_move.
30569         (move_op_orig_expr_found): Indicate that insn was disconnected from
30570         stream.
30571         (code_motion_process_successors): Do not call after_merge_succs
30572         callback if original expression was not found when traversing any of
30573         the branches.
30574         (code_motion_path_driver): Change return type.  Update prototype.
30575         (move_op): Update comment.  Add a new parameter (should_move).  Update
30576         prototype.  Set *should_move based on indication provided by
30577         move_op_orig_expr_found.
30578
30579 2009-01-28  Pat Haugen  <pthaugen@us.ibm.com>
30580
30581         * doc/invoke.texi (avoid-indexed-addresses): Document new option.
30582         * config/rs6000/rs6000-protos.h (avoiding_indexed_address_p): Declare.
30583         * config/rs6000/rs6000.opt (avoid-indexed-addresses): New option.
30584         * config/rs6000/rs6000.c (rs6000_override_options): Default
30585         avoid-indexed-addresses on for Power6, off for everything else.
30586         (avoiding_indexed_address_p): New function.
30587         (rs6000_legitimize_address): Use it.
30588         (rs6000_legitimate_address): Likewise.
30589         * config/rs6000/rs6000.md (movXX_updateX): Likewise
30590
30591 2009-01-28  Kazu Hirata  <kazu@codesourcery.com>
30592
30593         PR tree-optimization/38997
30594         * tree-loop-distribution.c (generate_memset_zero): Use
30595         POINTER_PLUS_EXPR for a pointer addition.
30596
30597 2009-01-28  Andreas Krebbel  <krebbel1@de.ibm.com>
30598
30599         * config/s390/s390.md (bswap<mode>2): New pattern added.
30600
30601 2009-01-28  Wolfgang Gellerich  <gellerich@de.ibm.com>
30602
30603         * config/s390/s390.md (*tls_load_31): Added type attribute.
30604
30605 2009-01-28  Wolfgang Gellerich  <gellerich@de.ibm.com>
30606
30607         * config/s390/s390.md: Fix a few comments.
30608
30609 2009-01-28  Wolfgang Gellerich  <gellerich@de.ibm.com>
30610
30611         * config/s390/s390.md (*tmsi_reg): Fixed z10prop attribute.
30612         (*tm<mode>_full): Fixed z10prop attribute.
30613         (*tst<mode>_extimm): Fixed z10prop attribute.
30614         (*tst<mode>_cconly_extimm): Fixed z10prop attribute.
30615         (*tstqiCCT_cconly): Fixed z10prop attribute.
30616         (*cmpsi_ccu_zerohi_rlsi): Fixed z10prop attribute.
30617         (*movsi_larl): Fixed z10prop attribute.
30618         (*movsi_zarch): Fixed z10prop attribute.
30619         (*movsi_eas): Fixed z10prop attribute.
30620         (*movhi): Fixed z10prop attribute.
30621         (*movqi): Fixed z10prop attribute.
30622         (*movstrictqi): Fixed z10prop attribute.
30623         (*mov<mode>): Fixed z10prop attribute.
30624         (*movcc): Fixed z10prop attribute.
30625         (*sethighpartdi_64): Fixed z10prop attribute.
30626         (*zero_extendhi<mode>2_z10): Fixed z10prop attribute.
30627         (*negdi2_sign_cc): Fixed z10prop attribute.
30628         (*negdi2_sign): Fixed z10prop attribute.
30629         (*absdi2_sign_cc): Fixed z10prop attribute.
30630         (*absdi2_sign): Fixed z10prop attribute.
30631         (*negabsdi2_sign_cc): Fixed z10prop attribute.
30632         (*negabsdi2_sign): Fixed z10prop attribute.
30633         (*cmp_and_trap_signed_int<mode>): Fixed z10prop attribute.
30634         (*cmp_and_trap_unsigned_int<mode>): Fixed z10prop attribute.
30635         (doloop_si64): Fixed z10prop attribute.
30636         (doloop_si31): Fixed z10prop attribute.
30637         (doloop_long): Fixed z10prop attribute.
30638         (indirect_jump): Fixed z10prop attribute.
30639         (nop): Fixed z10prop attribute.
30640         (main_base_64): Fixed z10prop attribute.
30641         (reload_base_64): Fixed z10prop attribute.
30642
30643 2009-01-28  Jakub Jelinek  <jakub@redhat.com>
30644
30645         PR rtl-optimization/38740
30646         * reorg.c (gate_handle_delay_slots): Avoid dbr scheduling
30647         if !optimize.
30648         * config/mips/mips.c (mips_reorg): Likewise.
30649
30650 2009-01-28  Richard Guenther  <rguenther@suse.de>
30651
30652         PR tree-optimization/38926
30653         * tree-ssa-pre.c (add_to_value): Assert we add only expressions
30654         with the correct value id to a value.
30655         (do_regular_insertion): Use the value number of edoubleprime
30656         for the value number of the expr.
30657
30658         Revert
30659         2008-08-21  Richard Guenther  <rguenther@suse.de>
30660
30661         * tree-ssa-pre.c (insert_into_preds_of_block): Before inserting
30662         a PHI ask VN if it is already available.
30663         * tree-ssa-sccvn.h (vn_phi_lookup): Declare.
30664         * tree-ssa-sccvn.c (vn_phi_lookup): Export.
30665
30666 2009-01-28  Jakub Jelinek  <jakub@redhat.com>
30667
30668         PR middle-end/38934
30669         * tree-vrp.c (extract_range_from_assert): For LE_EXPR and LT_EXPR
30670         set to varying whenever max has TREE_OVERFLOW set, similarly
30671         for GE_EXPR and GT_EXPR and TREE_OVERFLOW min.
30672
30673 2009-01-28  Richard Guenther  <rguenther@suse.de>
30674
30675         PR middle-end/38908
30676         * tree-ssa.c (warn_uninitialized_var): Do not warn for seemingly
30677         uninitialized aggregate uses in call arguments.
30678
30679 2009-01-28  Paolo Bonzini  <bonzini@gnu.org>
30680
30681         PR tree-optimization/38984
30682         * tree-ssa-structalias.c (get_constraints_for_1): Do not use
30683         the nothing_id variable if -fno-delete-null-pointer-checks.
30684
30685 2009-01-28  Uros Bizjak  <ubizjak@gmail.com>
30686
30687         PR target/38988
30688         * config/i386/i386.md (set_rip_rex64): Wrap operand 1 in label_ref.
30689         (set_got_offset_rex64): Ditto.
30690
30691 2009-01-27  H.J. Lu  <hongjiu.lu@intel.com>
30692
30693         PR target/38941
30694         * doc/extend.texi: Improve local variable with asm reg.
30695
30696 2009-01-27  Adam Nemet  <anemet@caviumnetworks.com>
30697
30698         * c.opt (Wpacked-bitfield-compat): Change init value to -1.
30699         * c-opts.c (c_common_post_options): If -W*packed-bitfield-compat
30700         was not supplied then set warn_packed_bitfield_compat to the
30701         default value of 1.
30702         * stor-layout.c (place_field): Check warn_packed_bitfield_compat
30703         against 1.
30704
30705 2009-01-27  Richard Guenther  <rguenther@suse.de>
30706
30707         PR tree-optimization/38503
30708         * cfgexpand.c (expand_gimple_basic_block): Ignore
30709         GIMPLE_CHANGE_DYNAMIC_TYPE during expansion.
30710         * tree-ssa-structalias.c (set_uids_in_ptset): Do not prune
30711         variables that cannot have TBAA applied.
30712         (compute_points_to_sets): Do not remove GIMPLE_CHANGE_DYNAMIC_TYPE
30713         statements.
30714
30715 2009-01-27  Uros Bizjak  <ubizjak@gmail.com>
30716
30717         PR middle-end/38969
30718         * calls.c (initialize_argument_information): Do not wrap complex
30719         arguments in SAVE_EXPR.
30720
30721 2009-01-26  Andreas Tobler  <a.tobler@schweiz.org>
30722
30723         * config/t-vxworks (LIBGCC2_INCLUDES): Fix typo.
30724         (INSTALL_LIBGCC): Revert typo commit.
30725
30726 2009-01-26  Richard Guenther  <rguenther@suse.de>
30727
30728         PR tree-optimization/38745
30729         * tree-ssa-alias.c (update_alias_info_1): Exclude RESULT_DECL
30730         from special handling.
30731
30732 2009-01-26  Richard Guenther  <rguenther@suse.de>
30733
30734         PR tree-optimization/38745
30735         * tree-ssa.c (execute_update_addresses_taken): Do not include
30736         variables that cannot possibly be a register in not_reg_needs.
30737         Do not clear TREE_ADDRESSABLE on vars that may not become
30738         registers.
30739         * tree-ssa.c (update_alias_info_1): Include those in the set
30740         of addressable vars.
30741
30742 2009-01-26  Richard Guenther  <rguenther@suse.de>
30743
30744         PR middle-end/38851
30745         * Makefile.in (tree-ssa-dse.o): Add langhooks.h.
30746         * tree-ssa-dse.c: Include langhooks.h
30747         (execute_simple_dse): Remove stores with zero size.
30748
30749 2009-01-24  Jakub Jelinek  <jakub@redhat.com>
30750
30751         PR c/38957
30752         * c-typeck.c (c_finish_return): Handle POINTER_PLUS_EXPR the same way
30753         as PLUS_EXPR.
30754
30755 2009-01-24  Julian Brown  <julian@codesourcery.com>
30756
30757         * config/arm/t-linux-eabi (LIB2FUNCS_STATIC_EXTRA): Add
30758         config/arm/linux-atomic.c.
30759         * config/arm/linux-atomic.c: New.
30760
30761 2009-01-24  Eric Botcazou  <ebotcazou@adacore.com>
30762
30763         * config/sparc/linux.h (DBX_REGISTER_NUMBER): Delete.
30764         * config/sparc/linux64.h (DBX_REGISTER_NUMBER): Likewise.
30765         * config/sparc/sysv4.h (DBX_REGISTER_NUMBER): Likewise.
30766
30767 2009-01-24  H.J. Lu  <hongjiu.lu@intel.com>
30768
30769         PR c/38938
30770         * c-opts.c (c_common_handle_option): Update warn_pointer_sign
30771         properly.
30772
30773 2009-01-24  Sebastian Pop  <sebastian.pop@amd.com>
30774
30775         PR tree-optimization/38953
30776         * graphite.c (graphite_verify): Add a call to verify_loop_closed_ssa.
30777         (scop_adjust_phis_for_liveouts): Initialize false_i to zero.
30778         (gloog): Split the exit of the scop when the scop exit is a loop exit.
30779         (graphite_transform_loops): Only call cleanup_tree_cfg if gloog
30780         changed the CFG.
30781
30782 2009-01-24  Paul Brook  <paul@codesourcery.com>
30783
30784         * config/arm/neon.md (neon_type): Move to arm.md.
30785         (neon_mov<VSTRUCT>): Add neon_type attribute.
30786         * config/arm/arm.md (neon_type): Move to here.
30787         (conds): Add "unconditioal" and use as default for NEON insns.
30788
30789 2009-01-24  Ben Elliston  <bje@au.ibm.com>
30790
30791         * bitmap.h (BITMAP_FREE): Eliminate `implicit conversion from
30792         void *' warning from -Wc++-compat.
30793         * Makefile.in (dominance.o-warn): Remove.
30794
30795 2009-01-23  Paolo Bonzini  <bonzini@gnu.org>
30796
30797         PR tree-optimization/38932
30798         * fold-const.c (fold_unary_ignore_overflow): New.
30799         * tree.h (fold_unary_ignore_overflow): Declare.
30800         * tree-ssa-ccp.c (ccp_fold): Use fold_unary_ignore_overflow.
30801         * tree-ssa-sccvn.c (visit_reference_op_load,
30802         simplify_unary_expression): Likewise.
30803
30804 2009-01-22  Adam Nemet  <anemet@caviumnetworks.com>
30805
30806         * c-decl.c (finish_struct): Move code to set DECL_PACKED after
30807         DECL_BIT_FIELD is alreay known.  Also inherit packed for bitfields
30808         regardless of their type.
30809         * c-common.c (handle_packed_attribute): Don't ignore packed on
30810         bitfields.
30811         * c.opt (Wpacked-bitfield-compat): New warning option.
30812         * stor-layout.c (place_field): Warn if offset of a field changed.
30813         * doc/extend.texi (packed): Mention the ABI change.
30814         * doc/invoke.texi (-Wpacked-bitfield-compat): Document.
30815         (Warning Options): Add it to the list.
30816
30817 2009-01-22  H.J. Lu  <hongjiu.lu@intel.com>
30818
30819         * c-opts.c (c_common_post_options): Fix a typo in comments.
30820
30821 2009-01-22  Steve Ellcey  <sje@cup.hp.com>
30822
30823         PR middle-end/38615
30824         * gimplify.c (gimplify_init_constructor): Fix promotion of const
30825         variables to static.
30826         * doc/invoke.texi (-fmerge-all-constants): Update description.
30827
30828 2009-01-22  Uros Bizjak  <ubizjak@gmail.com>
30829
30830         PR target/38931
30831         * config/i386/i386.md (*movsi_1): Use type "mmx" for alternative 2.
30832         (*movdi_1_rex64): Use type "mmx" for alternative 5.
30833
30834 2009-01-22  Richard Earnshaw  <rearnsha@arm.com>
30835
30836         * arm.h (DATA_ALIGNMENT): Align structures, unions and arrays to
30837         a word boundary.
30838         (LOCAL_ALIGNMENT): Similarly.
30839
30840 2009-01-22  Mark Shinwell  <shinwell@codesourcery.com>
30841             Joseph Myers  <joseph@codesourcery.com>
30842
30843         * config/arm/arm.c (all_architectures): Add iWMMXt2 entry.
30844         * config/arm/arm-cores.def: New ARM_CORE entry for iWMMXt2.
30845         * config/arm/arm-tune.md: Regenerate.
30846         * doc/invoke.texi (ARM Options): Document -mcpu=iwmmxt2 and
30847         -march=iwmmxt2.
30848
30849 2009-01-22  Mark Shinwell  <shinwell@codesourcery.com>
30850
30851         * config/arm/bpabi.h (SUBTARGET_EXTRA_ASM_SPEC): Bump EABI
30852         version number to five.
30853
30854 2009-01-22  Dodji Seketeli  <dodji@redhat.com>
30855
30856         PR c++/38930
30857         * c-decl.c (clone_underlying_type): Revert PR c++/26693 changes.
30858         * c-common.c (set_underlying_type): Likewise.
30859         (is_typedef_decl ): Likewise
30860         * tree.h: Likewise
30861         (set_underlying_type): Likewise.
30862         (is_typedef_type): Likewise.
30863
30864 2009-01-21  Vladimir Makarov  <vmakarov@redhat.com>
30865
30866         PR middle-end/38587
30867         * ira-color.c (coalesce_spill_slots): Don't coalesce allocnos
30868         crossing setjmps.
30869
30870 2009-01-21  Dave Korn  <dave.korn.cygwin@gmail.com>
30871
30872         PR bootstrap/37660
30873         * config/i386/cygwin.h (SHARED_LIBGCC_SPEC):  New helper macro.
30874         (LIBGCC_SPEC):  Don't define.
30875         (REAL_LIBGCC_SPEC):  Define instead, using SHARED_LIBGCC_SPEC.
30876
30877 2009-01-21  Uros Bizjak  <ubizjak@gmail.com>
30878
30879         PR rtl-optimization/38879
30880         * alias.c (base_alias_check): Unaligned access via AND address can
30881         alias all surrounding object types except those with sizes equal
30882         or wider than the size of unaligned access.
30883
30884 2009-01-21  Dodji Seketeli  <dodji@redhat.com>
30885
30886         PR c++/26693
30887         * c-decl.c (clone_underlying_type): Move this ...
30888         * c-common.c (set_underlying_type): ... here.
30889         Also, make sure the function properly sets TYPE_STUB_DECL() on
30890         the newly created typedef variant type.
30891         (is_typedef_decl ): New entry point.
30892         * tree.h: Added a new member member_types_needing_access_check to
30893         struct tree_decl_non_common.
30894         (set_underlying_type): New entry point.
30895         (is_typedef_type): Likewise.
30896
30897 2009-01-21  Bingfeng Mei  <bmei@broadcom.com>
30898
30899         * alias.c (walk_mems_1, walk_mems_2, insn_alias_sets_conflict_p):
30900         Check whether two instructions have memory references that
30901         belong to conflicting alias sets.  walk_mems_1 and walk_mems_2
30902         are helper functions for traversing.
30903         * alias.h (insn_alias_sets_confilict_p): New prototypes.
30904         * ddg.c (add_inter_loop_mem_dep): Call insn_alias_sets_conflict_p
30905         not to draw dependency edge for instructions with non-conflicting
30906         alias sets.
30907
30908 2009-01-20  Joseph Myers  <joseph@codesourcery.com>
30909
30910         PR other/38758
30911         * longlong.h: Update copyright years.  Use soft-fp license notice.
30912         Sync __clz_tab declaration with glibc.
30913
30914 2009-01-20  Steve Ellcey  <sje@cup.hp.com>
30915
30916         PR target/30687
30917         * doc/extend.texi (syscall_linkage): New.
30918         (version_id): Modify.
30919
30920 2009-01-20  Andrew Pinski  <andrew_pinski@playstation.sony.com>
30921             Richard Guenther  <rguenther@suse.de>
30922
30923         PR tree-optimization/38747
30924         PR tree-optimization/38748
30925         * tree-ssa-forwprop.c (forward_propagate_addr_expr_1): Disable the VCE
30926         conversion if the base address is an indirect reference and the
30927         aliasing sets could cause issues.
30928
30929 2009-01-20  Sebastian Pop  <sebastian.pop@amd.com>
30930
30931         * common.opt (fgraphite, fgraphite-identity): Add comment for
30932         explaining why these options are not documented.
30933
30934 2009-01-20  Sebastian Pop  <sebastian.pop@amd.com>
30935
30936         * graphite.c (stmt_simple_for_scop_p): Also handle cases when
30937         gimple_call_lhs is NULL.
30938
30939 2009-01-20  Paolo Bonzini  <bonzini@gnu.org>
30940
30941         PR target/38868
30942         * emit-rtl.c (adjust_address_1): Make sure memref is never
30943         overwritten.
30944
30945 2009-01-20  Ben Elliston  <bje@au.ibm.com>
30946
30947         * libgcov.c (__gcov_execl, __gcov_execlp, __gcov_execle): Remove
30948         const qualifier from arg parameter. Remove unnecessary cast to char *.
30949         * gcov-io.h (__gcov_execl, __gcov_execlp, __gcov_execle): Remove
30950         const qualifier from arg 2.
30951
30952 2009-01-19  Iain Sandoe  <iain.sandoe@sandoe-acoustics.co.uk>
30953
30954         * config/darwin.h: Add static-libgfortran to LINK_SPEC.
30955
30956 2009-01-19  Vladimir Makarov  <vmakarov@redhat.com>
30957
30958         PR c/38869
30959         * rtl.h (reinit_regs): New prototype.
30960         * regclass.c: Include ira.h.
30961         (reinit_regs): New.
30962         * Makefile.in (regclass.o): Add ira.h.
30963         * config/i386/i386.c (ix86_maybe_switch_abi): Use reinit_regs.
30964
30965 2009-01-18  H.J. Lu  <hongjiu.lu@intel.com>
30966
30967         PR target/38736
30968         * c-common.c (handle_aligned_attribute): Use
30969         ATTRIBUTE_ALIGNED_VALUE instead of BIGGEST_ALIGNMENT for
30970         default alignment value.
30971
30972         * c-cppbuiltin.c (c_cpp_builtins): Define __BIGGEST_ALIGNMENT__.
30973
30974         * defaults.h (ATTRIBUTE_ALIGNED_VALUE): New.
30975         * config/i386/i386.h (ATTRIBUTE_ALIGNED_VALUE): Likewise.
30976
30977         * doc/extend.texi: Update __attribute__ ((aligned)).  Document
30978         __BIGGEST_ALIGNMENT__.
30979
30980         * doc/tm.texi: Document ATTRIBUTE_ALIGNED_VALUE.
30981
30982 2009-01-18  Richard Guenther  <rguenther@suse.de>
30983
30984         PR tree-optimization/38819
30985         * tree-flow.h (operation_could_trap_helper_p): Declare.
30986         * tree-eh.c (operation_could_trap_helper_p): Export.
30987         * tree-ssa-sccvn.h (vn_nary_may_trap): Declare.
30988         * tree-ssa-sccvn.c (vn_nary_may_trap): New function.
30989         * tree-ssa-pre.c (insert_into_preds_of_block): Check if we
30990         are about to insert a possibly trapping instruction and fail
30991         in this case.
30992
30993 2009-01-18  Andreas Schwab  <schwab@suse.de>
30994
30995         * doc/install.texi (Configuration): Remove obsolete paragraph
30996         about use of --with-gnu-ld with --with-gnu-as.
30997
30998 2009-01-18  Kazu Hirata  <kazu@codesourcery.com>
30999
31000         * doc/extend.texi, doc/gimple.texi, doc/invoke.texi,
31001         doc/md.texi, doc/sourcebuild.texi, doc/tm.texi: Fix typos.
31002         Follow spelling conventions.
31003
31004 2009-01-18  Ben Elliston  <bje@au.ibm.com>
31005
31006         * bitmap.c (bitmap_obstack_alloc_stat): Adjust cast to eliminate
31007         C++ warning about implicit conversion from void * to struct
31008         bitmap_head_def *.
31009         (bitmap_obstack_free): Likewise for bitmap_element *.
31010         * Makefile.in (bitmap.o-warn): Remove.
31011
31012 2009-01-17  Dave Korn  <dave.korn.cygwin@gmail.com>
31013
31014         * Makefile.in (BACKENDLIBS):  Reorder to match dependencies.
31015
31016 2009-01-17  Sebastian Pop  <sebastian.pop@amd.com>
31017             Tobias Grosser  <tobi.grosser@amd.com>
31018
31019         * graphite.c (graphite_trans_scop_block): Do not block single
31020         nested loops.
31021
31022 2009-01-16  Alexandre Oliva  <aoliva@redhat.com>
31023
31024         * ebitmap.h (ebitmap_iter_init): Initialize all fields.
31025         * ipa-struct-reorg.c (gen_struct_type): Replace known-true
31026         test with assertion.
31027
31028 2009-01-16  Richard Guenther  <rguenther@suse.de>
31029
31030         PR tree-optimization/38835
31031         PR middle-end/36227
31032         * fold-const.c (fold_binary): Remove PTR + INT -> (INT)(PTR p+ INT)
31033         and INT + PTR -> (INT)(PTR p+ INT) folding.
31034         * tree-ssa-address.c (create_mem_ref): Properly use POINTER_PLUS_EXPR.
31035
31036 2009-01-16  Adam Nemet  <anemet@caviumnetworks.com>
31037
31038         PR target/38554
31039         * expmed.c (expand_shift): With SHIFT_COUNT_TRUNCATED, don't lift
31040         the subreg from a lowpart subreg if it is also casting the value.
31041
31042 2009-01-16  Sebastian Pop  <sebastian.pop@amd.com>
31043             Tobias Grosser  <tobi.grosser@amd.com>
31044
31045         * graphite.c (compare_prefix_loops): New.
31046         (build_scop_canonical_schedules): Rewritten.
31047         (graphite_transform_loops): Move build_scop_canonical_schedules
31048         after build_scop_iteration_domain.
31049
31050 2009-01-16  Sebastian Pop  <sebastian.pop@amd.com>
31051             Tobias Grosser  <tobi.grosser@amd.com>
31052
31053         * graphite.c (add_conditions_to_domain): Add the loops to
31054         the dimension of the iteration domain.  Do copy the domain
31055         only when it exists.
31056         (build_scop_conditions_1): Do not call add_conditions_to_domain.
31057         (add_conditions_to_constraints): New.
31058         (can_generate_code_stmt, can_generate_code): Removed.
31059         (gloog): Do not call can_generate_code.
31060         (graphite_transform_loops): Call add_conditions_to_constraints
31061         after building the iteration domain.
31062
31063 2009-01-16  Jakub Jelinek  <jakub@redhat.com>
31064
31065         PR tree-optimization/38789
31066         * tree-ssa-threadedge.c
31067         (record_temporary_equivalences_from_stmts_at_dest): Ignore calls to
31068         __builtin_constant_p.
31069
31070 2009-01-16  Kenneth Zadeck  <zadeck@naturalbridge.com>
31071
31072         * dce.c (delete_unmarked_insns): Reversed the order that insns are
31073         examined before deleting them.
31074
31075 2009-01-16  Richard Earnshaw  <rearnsha@arm.com>
31076
31077         * function.c (aggregate_value_p): Correctly extract the function
31078         type from CALL_EXPR_FN lookup.
31079
31080 2009-01-16  Hariharan Sandanagobalane  <hariharan@picochip.com>
31081
31082         * config/picochip/picochip.c (picochip_override_options): Revert
31083         CFI asm flag disable commited previously.
31084
31085 2009-01-15  Sebastian Pop  <sebastian.pop@amd.com>
31086             Tobias Grosser  <tobi.grosser@amd.com>
31087             Jan Sjodin  <jan.sjodin@amd.com>
31088
31089         * graphite.c (scan_tree_for_params): On substractions negate
31090         all the coefficients of the term.
31091         (clast_to_gcc_expression_red): New.  Handle reduction expressions
31092         of more than two operands.
31093         (clast_to_gcc_expression): Call clast_to_gcc_expression_red.
31094         (get_vdef_before_scop): Handle also the case of default definitions.
31095
31096 2009-01-15  Richard Sandiford  <rdsandiford@googlemail.com>
31097
31098         * caller-save.c (add_used_regs_1, add_used_regs): New functions.
31099         (insert_one_insn): Use them instead of REG_DEAD and REG_INC notes.
31100         Also use them when walking CALL_INSN_FUNCTION_USAGE.
31101
31102 2009-01-15  H.J. Lu  <hongjiu.lu@intel.com>
31103             Joey Ye  <joey.ye@intel.com>
31104
31105         PR middle-end/37843
31106         * cfgexpand.c (expand_stack_alignment): Don't update stack
31107         boundary nor check incoming stack boundary here.
31108         (gimple_expand_cfg): Update stack boundary and check incoming
31109         stack boundary here.
31110
31111 2009-01-15  Kenneth Zadeck  <zadeck@naturalbridge.com>
31112
31113         * dce.c (find_call_stack_args, delete_unmarked_insns): Fixed comments.
31114
31115 2009-01-14  Jakub Jelinek  <jakub@redhat.com>
31116
31117         PR rtl-optimization/38245
31118         * calls.c (expand_call): Add stack arguments to
31119         CALL_INSN_FUNCTION_USAGE even for pure calls (when
31120         ACCUMULATE_OUTGOING_ARGS) and even for args partially passed
31121         in regs and partially in memory or BLKmode arguments.
31122         (emit_library_call_value_1): Add stack arguments to
31123         CALL_INSN_FUNCTION_USAGE even for pure calls (when
31124         ACCUMULATE_OUTGOING_ARGS).
31125         * dce.c: Include tm_p.h.
31126         (find_call_stack_args): New function.
31127         (deletable_insn_p): Call it for CALL_P insns.  Add ARG_STORES
31128         argument.
31129         (mark_insn): Call find_call_stack_args for CALL_Ps.
31130         (prescan_insns_for_dce): Walk insns backwards in bb rather than
31131         forwards.  Allocate and free arg_stores bitmap if needed, pass it
31132         down to deletable_insn_p, don't mark stores set in arg_stores
31133         bitmap, clear the bitmap at the beginning of each bb.
31134         * Makefile.in (dce.o): Depend on $(TM_P_H).
31135
31136 2009-01-14  Michael Meissner  <gnu@the-meissners.org>
31137
31138         PR target/22599
31139         * config/i386/i386.c (print_operand): Add tests for 'D', 'C', 'F', 'f'
31140         to make sure the insn is a conditional test (bug 22599).  Reformat a
31141         few long lines.
31142
31143 2009-01-14  Sebastian Pop  <sebastian.pop@amd.com>
31144
31145         PR middle-end/38431
31146         * graphite.c (get_vdef_before_scop, scop_adjust_vphi): New.
31147         (scop_adjust_phis_for_liveouts): Call scop_adjust_vphi.
31148         (gloog): Do not call cleanup_tree_cfg.
31149         (graphite_transform_loops): Call cleanup_tree_cfg after all
31150         scops have been code generated.
31151
31152 2009-01-14  Basile Starynkevitch  <basile@starynkevitch.net>
31153         * doc/gty.texi (Invoking the garbage collector): Added new node
31154         and section documenting ggc_collect.
31155
31156 2009-01-14  Richard Guenther  <rguenther@suse.de>
31157
31158         PR tree-optimization/38826
31159         PR middle-end/38477
31160         * tree-ssa-structalias.c (emit_alias_warning): Emit the pointer
31161         initialization notes only if we actually emitted a warning.
31162         (intra_create_variable_infos): Add constraints for a result decl
31163         that is passed by hidden reference.
31164         (build_pred_graph): Mark all related variables non-direct on
31165         address-taking.
31166
31167 2009-01-14  Nick Clifton  <nickc@redhat.com>
31168
31169         * ira-conflicts.c: Include addresses.h for the definition of
31170         base_reg_class.
31171         (ira_build_conflicts): Use base_reg_class instead of BASE_REG_CLASS.
31172         * Makefile.in: Add a dependency of ira-conflicts.o on addresses.h.
31173
31174 2009-01-13  Vladimir Makarov  <vmakarov@redhat.com>
31175
31176         PR target/38811
31177         * Makefile.in (ira-lives.o): Add except.h.
31178
31179         * ira-lives.c: Include except.h.
31180         (process_bb_node_lives): Process can_throw_internal.
31181
31182 2009-01-13  Jakub Jelinek  <jakub@redhat.com>
31183
31184         PR rtl-optimization/38774
31185         * combine.c (simplify_set): When undoing cc_use change, don't do
31186         PUT_CODE on the newly created comparison, but instead put back the
31187         old comparison.
31188
31189 2009-01-13  Joseph Myers  <joseph@codesourcery.com>
31190
31191         * doc/invoke.texi (ARM Options): Update lists of -mcpu and -march
31192         values.  Remove duplicate arm8 entry.
31193
31194 2009-01-13  Sebastian Pop  <sebastian.pop@amd.com>
31195
31196         PR tree-optimization/38786
31197         * graphite.c (expand_scalar_variables_ssa_name): New, outlined from
31198         the SSA_NAME case of expand_scalar_variables_expr.
31199         Set the type of an expression to the type of its assign statement.
31200         (expand_scalar_variables_expr): Also gather the scalar computation
31201         used to index the memory access.  Do not pass loop_p.
31202         Fix comment.  Stop recursion on tcc_constant or tcc_declaration.
31203         (expand_scalar_variables_stmt): Pass to expand_scalar_variables_expr
31204         the gimple_stmt_iterator where it inserts new code.
31205         Do not pass loop_p.
31206         (copy_bb_and_scalar_dependences): Do not pass loop_p.
31207         (translate_clast): Update call to copy_bb_and_scalar_dependences.
31208
31209 2009-01-13  Sebastian Pop  <sebastian.pop@amd.com>
31210
31211         * graphite.h (debug_value): Removed.
31212         * graphite.c (debug_value): Removed.
31213
31214 2009-01-13  Richard Earnshaw  <rearnsha@arm.com>
31215
31216         * config/arm/arm.c (output_move_double): Don't synthesize thumb-2
31217         ldrd/strd with two 32-bit instructions.
31218
31219 2009-01-13  Richard Earnshaw  <rearnsha@arm.com>
31220
31221         * config/arm/arm.c (struct processors): Pass for speed down into
31222         cost helper functions.
31223         (const_ok_for_op): Handle COMPARE and inequality nodes.
31224         (arm_rtx_costs_1): Rewrite.
31225         (arm_size_rtx_costs): Update prototype.
31226         (arm_rtx_costs): Pass speed down to helper functions.
31227         (arm_slowmul_rtx_costs): Rework cost calculations.
31228         (arm_fastmul_rtx_costs, arm_xscale_rtx_costs): Likewise.
31229         (arm_9e_rtx_costs): Likewise.
31230
31231 2009-01-13  Uros Bizjak  <ubizjak@gmail.com>
31232
31233         * config/alpha/alpha.c (alpha_legitimate_address_p): Explicit
31234         relocations of local symbols wider than UNITS_PER_WORD are not valid.
31235         (alpha_legitimize_address): Do not split local symbols wider than
31236         UNITS_PER_WORD into HIGH/LO_SUM parts.
31237
31238 2009-01-13  Danny Smith  <dannysmith@users.sourceforge.net>
31239
31240         PR bootstrap/38580
31241         * gcc.c (process_command): Replace call to execvp with calls
31242         to pex_one and exit.
31243
31244 2009-01-03  Anatoly Sokolov  <aesok@post.ru>
31245
31246         PR target/29141
31247         * config/avr/t-avr (LIB1ASMFUNCS): Add _tablejump_elpm.
31248         * config/avr/libgcc.S (__do_global_ctors, __do_global_dtors): Add
31249         variant for devices with 3-byte PC.
31250         (__tablejump_elpm__): New.
31251
31252 2009-01-12  Jakub Jelinek  <jakub@redhat.com>
31253
31254         PR c/32041
31255         * c-parser.c (c_parser_postfix_expression): Allow `->' in
31256         offsetof member-designator, handle it as `[0].'.
31257
31258 2009-01-12  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
31259
31260         * pa.c (pa_asm_output_mi_thunk): Use pc-relative branch to thunk
31261         function when not using named sections on targets with named sections
31262         if branch distance is less than 262132.
31263
31264 2009-01-12  Richard Earnshaw  <rearnsha@arm.com>
31265
31266         * combine.c (combine_instructions):  Recompute
31267         optimize_this_for_speed_p  for each BB in the main combine loop.
31268
31269 2009-01-12  Tomas Bily  <tbily@suse.cz>
31270
31271         PR middlend/38385
31272         * tree-loop-distribution.c (prop_phis): New function.
31273         (generate_builtin): Call prop_phis.
31274
31275 2009-01-12  Jakub Jelinek  <jakub@redhat.com>
31276
31277         PR tree-optimization/38807
31278         * tree-ssa-reassoc.c (remove_visited_stmt_chain): Don't look at
31279         gimple_visited_p unless stmt is GIMPLE_ASSIGN.
31280
31281 2009-01-11  Adam Nemet  <anemet@caviumnetworks.com>
31282
31283         * expmed.c (store_bit_field_1): Properly truncate the paradoxical
31284         subreg of op0 to the original op0.
31285
31286 2009-01-11  Laurent GUERBY  <laurent@guerby.net>
31287
31288         * doc/sourcebuild.texi (Source Tree): Move up intl and fixinc.
31289
31290 2009-01-11  Markus Schoepflin  <markus.schoepflin@comsoft.de>
31291
31292         PR debug/7055
31293         * mips-tfile.c (parse_def): Fix parsing of def strings
31294         starting with digits.
31295
31296 2009-01-10  Jakub Jelinek  <jakub@redhat.com>
31297
31298         PR target/38695
31299         * config/arm/arm.c (arm_is_long_call_p): Don't call
31300         arm_function_in_section_p if decl isn't a FUNCTION_DECL.
31301
31302 2009-01-09  Steven Bosscher  <steven@gcc.gnu.org>
31303
31304         * regrename.c (regrename_optimize): Fix dumping.
31305         (find_oldest_value_reg): Preserve REG_POINTER.
31306         (copy_hardreg_forward_1): Likewise.
31307
31308 2009-01-09  Diego Novillo  <dnovillo@google.com>
31309
31310         * gimple.h (struct gimple_statement_base) <uid>: Document
31311         the restrictions on its use.
31312         (gimple_uid): Tidy.
31313         (gimple_set_uid): Tidy.
31314
31315 2009-01-09  Jakub Jelinek  <jakub@redhat.com>
31316
31317         * config/i386/i386.c (ix86_expand_movmem, ix86_expand_setmem): Add
31318         zero guard even if align_bytes != 0 and count is smaller than
31319         size_needed.
31320
31321 2009-01-09  Vladimir Makarov  <vmakarov@redhat.com>
31322
31323         PR rtl-optimization/38495
31324         * ira-emit.c (print_move_list, ira_debug_move_list): New functions.
31325         (add_range_and_copies_from_move_list): Print all added ranges.
31326         Add ranges to memory optimized destination.
31327
31328 2009-01-09  Jakub Jelinek  <jakub@redhat.com>
31329
31330         PR target/38686
31331         PR target/38708
31332         * config/i386/i386.c (override_options): Reject
31333         -mstringop-strategy=rep_8byte with -m32.
31334         (ix86_expand_movmem): For size_needed == 1 set epilogue_size_needed
31335         to 1.  Do count comparison against epilogue_size_needed at compile
31336         time even when count_exp was constant forced into register.  For
31337         size_needed don't jump to epilogue, instead just avoid aligning
31338         and invoke the body algorithm.  If need_zero_guard, add zero guard
31339         even if count is non-zero, but smaller than size_needed + number of
31340         bytes that could be stored for alignment.
31341         (ix86_expand_setmem): For size_needed == 1 set epilogue_size_needed
31342         to 1.  If need_zero_guard, add zero guard even if count is non-zero,
31343         but smaller than size_needed + number of bytes that could be stored
31344         for alignment.  Compare size_needed with epilogue_size_needed instead
31345         of desired_align - align, don't adjust size_needed, pass
31346         epilogue_size_needed to the epilogue expanders.
31347
31348         PR c/35742
31349         * c-pretty-print.c (pp_c_expression): Handle GOTO_EXPR like BIND_EXPR.
31350
31351 2009-01-09  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
31352
31353         * pa.c (last_address): Change to unsigned.
31354         (update_total_code_bytes): Change argument to unsigned.  Don't
31355         check if insn addresses are set.
31356         (pa_output_function_epilogue): Set last_address to UINT_MAX if insn
31357         addresses are not set.
31358         (pa_asm_output_mi_thunk): Handle wrap when updating last_address.
31359
31360 2009-01-09  Nick Clifton  <nickc@redhat.com>
31361
31362         * config/sh/symbian.c: Replace uses of DECL_INLINE with
31363         DECL_DECLARED_INLINE_P.
31364
31365 2009-01-09  Jakub Jelinek  <jakub@redhat.com>
31366
31367         PR middle-end/38347
31368         * dojump.c (do_jump_by_parts_zero_rtx): Use mode instead of
31369         GET_MODE (op0) in operand_subword_force calls.
31370
31371         PR middle-end/38771
31372         * fold-const.c (fold_unary): For COMPOUND_EXPR and COND_EXPR,
31373         fold_convert arg0 operands to TREE_TYPE (op0) first.
31374
31375 2009-01-08  Vladimir Makarov  <vmakarov@redhat.com>
31376
31377         * params.def (ira-max-conflict-table-size): Decrease default value
31378         to 1000.
31379
31380 2009-01-08  Jakub Jelinek  <jakub@redhat.com>
31381
31382         PR tree-optimization/37031
31383         * lambda-code.c (lambda_collect_parameters): Call pointer_set_destroy
31384         on parameter_set.
31385         (build_access_matrix): Reserve correct size for AM_MATRIX vector,
31386         allocate it using gc instead of heap, use VEC_quick_push instead of
31387         VEC_safe_push.
31388         * graphite.c (build_access_matrix): Allocate AM_MATRIX vector using gc
31389         instead of heap, use VEC_quick_push instead of VEC_safe_push.
31390         * tree-data-ref.h (struct access_matrix): Change matrix to gc
31391         allocated vector from heap allocated.
31392         * lambda.h: Add DEF_VEC_ALLOC_P for gc allocated lambda_vector.
31393         * tree-loop-linear.c (linear_transform_loops): Allocate nest
31394         vector only after perfect_loop_nest_depth call.
31395
31396 2009-01-08  Sebastian Pop  <sebastian.pop@amd.com>
31397             Jan Sjodin  <jan.sjodin@amd.com>
31398
31399         PR tree-optimization/38559
31400         * graphite.c (debug_value, copy_constraint,
31401         swap_constraint_variables, scale_constraint_variable, ): New.
31402         (get_lower_bound, get_upper_bound): Removed.
31403         (graphite_trans_bb_strip_mine): Clean up this code that works
31404         only for constant number of iterations.  Fully copy upper and
31405         lower bound constraints, not only the constant part of them.
31406         * graphite.h (debug_value): Declared.
31407
31408 2009-01-08  Ira Rosen  <irar@il.ibm.com>
31409
31410         PR tree-optimization/37194
31411         * tree-vect-transform.c (vect_estimate_min_profitable_iters):
31412         Don't add the cost of cost model guard in prologue to scalar
31413         outside cost in case of known number of iterations.
31414
31415 2009-01-07  Nathan Froyd  <froydnj@codesourcery.com>
31416             Alan Modra  <amodra@bigpond.net.au>
31417
31418         * config/rs6000/rs6000.c (rs6000_legitimize_address): Check for
31419         non-word-aligned REG+CONST addressing.
31420
31421 2009-01-07  Uros Bizjak  <ubizjak@gmail.com>
31422
31423         PR target/38706
31424         * config/alpha/alpha.c (alpha_end_function): For TARGET_ABI_OSF, call
31425         free_after_compilation when outputting a thunk.
31426         (alpha_output_mi_thunk_osf): Assert that we are processing a thunk.
31427         Do not call free_after_compilation here.
31428
31429 2009-01-07  Uros Bizjak  <ubizjak@gmail.com>
31430
31431         * config/i386/i386.c (ix86_target_string): Use ARRAY_SIZE.
31432         (ix86_valid_target_attribute_inner_p): Ditto.
31433
31434 2009-01-07  Jan Sjodin  <jan.sjodin@amd.com>
31435
31436         PR tree-optimization/38492
31437         PR tree-optimization/38498
31438         * tree-check.c (operator_is_linear, scev_is_linear_expression): New.
31439         * tree-chrec.h (scev_is_linear_expression): Declared.
31440         * graphite.c (graphite_cannot_represent_loop_niter): New.
31441         (scopdet_basic_block_info): Call graphite_cannot_represent_loop_niter.
31442         (graphite_loop_normal_form): Use gcc_assert.
31443         (scan_tree_for_params): Use CASE_CONVERT.
31444         (phi_node_is_iv, bb_contains_non_iv_scalar_phi_nodes): New.
31445         (build_scop_conditions_1): Call bb_contains_non_iv_scalar_phi_nodes.
31446         Use gcc_assert.  Discard scops that contain unhandled cases.
31447         (build_scop_conditions): Return a boolean status for unhandled cases.
31448         (strip_mine_profitable_p): Print the loop number, not its depth.
31449         (is_interchange_valid): Pass the depth of the loop nest, don't
31450         recompute it wrongly.
31451         (graphite_trans_bb_block): Same.
31452         (graphite_trans_bb_block): Print tentative of loop blocking.
31453         (graphite_trans_scop_block): Do not print that the loop has been
31454         blocked.
31455         (graphite_transform_loops): Do not handle scops that contain condition
31456         scalar phi nodes.
31457
31458 2009-01-07  H.J. Lu  <hongjiu.lu@intel.com>
31459
31460         AVX Programming Reference (December, 2008)
31461         * config/i386/avxintrin.h (_mm256_stream_si256): New.
31462         (_mm256_stream_pd): Likewise.
31463         (_mm256_stream_ps): Likewise.
31464
31465         * config/i386/i386.c (ix86_builtins): Add IX86_BUILTIN_MOVNTDQ256,
31466         IX86_BUILTIN_MOVNTPD256 and IX86_BUILTIN_MOVNTPS256.
31467         (ix86_special_builtin_type): Add VOID_FTYPE_PV4DI_V4DI.
31468         (bdesc_special_args): Add __builtin_ia32_movntdq256,
31469         __builtin_ia32_movntpd256 and __builtin_ia32_movntps256.
31470         (ix86_init_mmx_sse_builtins): Handle VOID_FTYPE_PV4DI_V4DI.
31471         (ix86_expand_special_args_builtin): Likewise.
31472
31473         * config/i386/sse.md (AVXMODEDI): New.
31474         (avx_movnt<mode>): Likewise.
31475         (avx_movnt<mode>): Likewise.
31476         (<sse>_movnt<mode>): Remove AVX support.
31477         (sse2_movntv2di): Likewise.
31478
31479 2009-01-07  Richard Guenther  <rguenther@suse.de>
31480
31481         PR middle-end/38751
31482         * fold-const.c (extract_muldiv): Remove obsolete comment.
31483         (fold_plusminus_mult_expr): Undo MINUS_EXPR
31484         to PLUS_EXPR canonicalization for the canonicalization.
31485
31486 2009-01-07  Gerald Pfeifer  <gerald@pfeifer.com>
31487
31488         * doc/install.texi (alpha*-dec-osf*): Remove note on 32-bit
31489         hosted cross-compilers generating less efficient code.
31490
31491 2009-01-06  Richard Sandiford  <rdsandiford@googlemail.com>
31492
31493         * function.h (rtl_data): Add a dbr_scheduled_p field.
31494         * reorg.c (dbr_schedule): Set it.
31495         (gate_handle_delay_slots): Check it.
31496         * config/mips/mips.c (mips_base_delayed_branch): Delete.
31497         (mips_reorg): Check flag_delayed_branch instead of
31498         mips_base_delayed_branch.
31499         (mips_override_options): Don't set mips_base_delayed_branch
31500         or flag_delayed_branch.
31501
31502 2009-01-06  Richard Sandiford  <rdsandiford@googlemail.com>
31503
31504         PR rtl-optimization/38426.
31505         * ira.c (ira): Set current_function_is_leaf earlier.
31506
31507 2009-01-06  Jakub Jelinek  <jakub@redhat.com>
31508
31509         PR rtl-optimization/38722
31510         * combine.c (try_combine): Don't modify PATTERN (i3) and notes
31511         too early, only set a flag and modify after last possible
31512         undo_all point.
31513
31514 2009-01-06  Janis Johnson  <janis187@us.ibm.com>
31515
31516         PR c/34252
31517         * ginclude/float.h: Rename DECnn_DEN to DECnn_SUBNORMAL_MIN.
31518         * real.c (decimal_single_format): Correct values of emin and emax.
31519         (decimal_double_format): Ditto.
31520         (decimal_quad_format): Ditto.
31521         * c-cppbuiltin.c (builtin_define_decimal_float_constants): Adjust
31522         computation of DECnn_MIN and DECnn_MAX for corrected values of
31523         emin and emax.  Define __DECnn_SUBNORMAL_MIN__ instead of
31524         __DECnn_MIN__, and adjust its computation for the corrected value
31525         of emin.
31526
31527 2009-01-06  Jan Hubicka  <jh@suse.cz>
31528
31529         PR target/38744
31530         * config/i386/i386.c (ix86_expand_call): Use ARRAY_SIZE.
31531
31532 2009-01-06  Gerald Pfeifer  <gerald@pfeifer.com>
31533
31534         * doc/contrib.texi (Contributors): Slightly adjust the end note.
31535         Add Robert Clark to the list of testers.
31536
31537 2009-01-06  Jan Hubicka  <jh@suse.cz>
31538             Kai Tietz  <kai.tietz@onevision.com>
31539
31540         * config/i386/i386.md (*msabi_syvabi): Add SSE regs clobbers.
31541         * config/i386/i386.c (ix86_expand_call): Add clobbers.
31542
31543 2009-01-06  Jan Hubicka  <jh@suse.cz>
31544             Kai Tietz  <kai.tietz@onevision.com>
31545
31546         * config/i386/i386.h (CONDITIONAL_CALL_USAGE): SSE regs are not used
31547         for w64 ABI.
31548         * config/i386/i386.c (struct ix86_frame): Add padding0 and nsseregs.
31549         (ix86_nsaved_regs): Count only general purpose regs.
31550         (ix86_nsaved_sseregs): New.
31551         (ix86_compute_frame_layout): Update nsseregs; set preferred alignment
31552         to 16 for w64; compute padding and size of sse reg save area.
31553         (ix86_emit_save_regs, ix86_emit_save_regs_using_mov): Save only
31554         general purpose regs.
31555         (ix86_emit_save_sse_regs_using_mov): New.
31556         (ix86_expand_prologue): Save SSE regs if needed.
31557         (ix86_emit_restore_regs_using_mov): Use only general purpose regs.
31558         (ix86_emit_restore_sse_regs_using_mov): New.
31559         (ix86_expand_epilogue): Save SSE regs if needed.
31560
31561 2009-01-06  Jan Hubicka  <jh@suse.cz>
31562             Kai Tietz  <kai.tietz@onevision.com>
31563
31564         * config/i386/i386.h (ACCUMULATE_OUTGOING_ARGS): Enable for MSABI
31565         * config/i386/i386.c (init_cumulative_args): Disallow calls of MSABI
31566         functions when accumulate outgoing args is off.
31567
31568 2009-01-06  H.J. Lu  <hongjiu.lu@intel.com>
31569
31570         PR bootstrap/38742
31571         * ira-color.c (ira_reuse_stack_slot): Check ENABLE_IRA_CHECKING
31572         before using pseudos_have_intersected_live_ranges_p.
31573
31574         * ira-int.h (ira_assert): Always define.
31575
31576 2009-01-06  H.J. Lu  <hongjiu.lu@intel.com>
31577
31578         AVX Programming Reference (December, 2008)
31579         * config/i386/avxintrin.h (_mm_permute2_pd): Removed.
31580         (_mm256_permute2_pd): Likewise.
31581         (_mm_permute2_ps): Likewise.
31582         (_mm256_permute2_ps): Likewise.
31583         * config/i386/i386.md (UNSPEC_VPERMIL2): Likewise.
31584         * config/i386/sse.md (avx_vpermil2<mode>3): Likewise.
31585
31586         * config/i386/i386.c (ix86_builtins): Remove
31587         IX86_BUILTIN_VPERMIL2PD, IX86_BUILTIN_VPERMIL2PS,
31588         IX86_BUILTIN_VPERMIL2PD256 and IX86_BUILTIN_VPERMIL2PS256.
31589         (ix86_builtin_type): Remove V8SF_FTYPE_V8SF_V8SF_V8SI_INT,
31590         V4DF_FTYPE_V4DF_V4DF_V4DI_INT, V4SF_FTYPE_V4SF_V4SF_V4SI_INT
31591         and V2DF_FTYPE_V2DF_V2DF_V2DI_INT.
31592         (bdesc_args): Remove __builtin_ia32_vpermil2pd,
31593         __builtin_ia32_vpermil2ps, __builtin_ia32_vpermil2pd256 and
31594         __builtin_ia32_vpermil2ps256.
31595         (ix86_init_mmx_sse_builtins): Updated.
31596         (ix86_expand_args_builtin): Likewise.
31597
31598 2009-01-05  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
31599
31600         * pa.c (output_call): Relocate non-jump insns in the delay slot of
31601         long absolute calls when generating PA 2.0 code.
31602
31603 2009-01-05  Vladimir Makarov  <vmakarov@redhat.com>
31604
31605         PR rtl-optimization/38583
31606         * params.h (IRA_MAX_CONFLICT_TABLE_SIZE): New macro.
31607
31608         * params.def (ira-max-conflict-table-size): New.
31609
31610         * doc/invoke.texi (ira-max-conflict-table-size): Decribe.
31611
31612         * ira.h (ira_conflicts_p): New external definition.
31613
31614         * ira-conflicts.c (build_conflict_bit_table): Do not build too big
31615         table.  Report this.  Return result of building.
31616         (ira_build_conflicts): Use ira_conflicts_p.  Check result of
31617         building conflict table.
31618
31619         * ira-color.c (fast_allocation): Use num instead of ira_allocnos_num.
31620         (ira_color): Use ira_conflicts_p.
31621
31622         * global.c: Include ira.h.
31623         (pseudo_for_reload_consideration_p, build_insn_chain): Use
31624         ira_conflicts_p.
31625
31626         * Makefile.in (global.o): Add ira.h.
31627
31628         * ira-build.c (mark_all_loops_for_removal,
31629         propagate_some_info_from_allocno): New.
31630         (remove_unnecessary_allocnos): Call
31631         propagate_some_info_from_allocno.
31632         (remove_low_level_allocnos): New.
31633         (remove_unnecessary_regions): Add parameter.  Call
31634         mark_all_loops_for_removal and remove_low_level_allocnos.  Pass
31635         parameter to remove_unnecessary_regions.
31636         (ira_build): Remove all regions but root if the conflict table was
31637         not built.  Update conflict hard regs for allocnos crossing calls.
31638
31639         * ira.c (ira_conflicts_p): New global.
31640         (ira): Define and use ira_conflicts_p.
31641
31642         * reload1.c (compute_use_by_pseudos, reload, count_pseudo,
31643         count_spilled_pseudo, find_reg, alter_reg, finish_spills,
31644         emit_input_reload_insns, delete_output_reload): Use ira_conflicts_p.
31645
31646 2009-01-06  Ben Elliston  <bje@au.ibm.com>
31647
31648         * gengtype-lex.l (YY_NO_INPUT): Define.
31649
31650 2009-01-05  Andrew Pinski  <andrew_pinski@playstation.sony.com>
31651
31652         PR c/34911
31653         * c-common.c (handle_vector_size_attribute): Also reject
31654         BOOLEAN_TYPE types.
31655
31656 2009-01-05  Sebastian Pop  <sebastian.pop@amd.com>
31657
31658         PR tree-optimization/38492
31659         * graphite.c (rename_map_elt, debug_rename_elt,
31660         debug_rename_map_1, debug_rename_map, new_rename_map_elt,
31661         rename_map_elt_info, eq_rename_map_elts,
31662         get_new_name_from_old_name, bb_in_sese_p): Moved around.
31663         (sese_find_uses_to_rename_use): Renamed sese_build_livein_liveouts_use.
31664         (sese_find_uses_to_rename_bb): Renamed sese_build_livein_liveouts_bb.
31665         (sese_build_livein_liveouts): New.
31666         (new_sese, free_sese): New.
31667         (new_scop): Call new_sese.
31668         (free_scop): Call free_sese.
31669         (rename_variables_from_edge, rename_phis_end_scop): Removed.
31670         (register_old_new_names): Renamed register_old_and_new_names.
31671         (register_scop_liveout_renames, add_loop_exit_phis,
31672         insert_loop_close_phis, struct igp,
31673         default_liveout_before_guard, add_guard_exit_phis,
31674         insert_guard_phis, copy_renames): New.
31675         (translate_clast): Call insert_loop_close_phis and insert_guard_phis.
31676         (sese_add_exit_phis_edge): Renamed scop_add_exit_phis_edge.
31677         (rewrite_into_sese_closed_ssa): Renamed scop_insert_phis_for_liveouts.
31678         (scop_adjust_phis_for_liveouts): New.
31679         (gloog): Call scop_adjust_phis_for_liveouts.
31680
31681         * graphite.h (struct sese): Documented.  Added fields liveout,
31682         num_ver and livein.
31683         (SESE_LIVEOUT, SESE_LIVEIN, SESE_LIVEIN_VER, SESE_NUM_VER): New.
31684         (new_sese, free_sese, sese_build_livein_liveouts): Declared.
31685         (struct scop): Added field liveout_renames.
31686         (SCOP_LIVEOUT_RENAMES): New.
31687
31688 2009-01-05  Harsha Jagasia  <harsha.jagasia@amd.com>
31689
31690         PR tree-optimization/38510
31691         * graphite.c (recompute_all_dominators): Call mark_irreducible_loops.
31692         (translate_clast): Call recompute_all_dominators before
31693         graphite_verify.
31694         (gloog): Call recompute_all_dominators before graphite_verify.
31695
31696 2009-01-05  Harsha Jagasia  <harsha.jagasia@amd.com>
31697             Jan Sjodin  <jan.sjodin@amd.com>
31698
31699         PR tree-optimization/38500
31700         * graphite.c (create_sese_edges): Call fix_loop_structure after
31701         splitting blocks.
31702
31703 2009-01-05  Joel Sherrill  <joel.sherrill@oarcorp.com>
31704
31705         * config.gcc: Add m32r*-*-rtems*.
31706         * config/m32r/rtems.h: New file.
31707
31708 2009-01-05  Ben Elliston  <bje@au.ibm.com>
31709
31710         * Makefile.in (.po.gmo): Use mkinstalldirs, not test -d || mkdir.
31711         (.po.pox): Likewise.
31712         (po/gcc.pot): Likewise.
31713
31714 2009-01-04  David S. Miller  <davem@davemloft.net>
31715
31716         * config/sparc/sparc.h (SECONDARY_MEMORY_NEEDED_RTX): Delete.
31717         (STARTING_FRAME_OFFSET): Always set to zero.
31718
31719 2009-01-04  Richard Sandiford  <rdsandiford@googlemail.com>
31720
31721         * tree.def (LSHIFT_EXPR, RSHIFT_EXPR): Add commentary.
31722         * tree-cfg.c (verify_gimple_assign_binary): Allow shifts of
31723         fixed-point types, and vectors of the same.
31724
31725 2009-01-04  Richard Sandiford  <rdsandiford@googlemail.com>
31726
31727         * config/mips/sync.md (*mb_barrier): Rename to...
31728         (*memory_barrier): ...this.
31729
31730 2009-01-04  Jonathan Wakely  <jwakely.gcc@gmail.com>
31731
31732         * doc/extend.texi (Function Attributes): Move @cindex after @item
31733         for 'artificial' and 'flatten'. Fix grammar for 'externally_visible'
31734         and put in alphabetical order. Fix 'target' name and put in order.
31735         * doc/invoke.texi (-Wstrict-null-sentinel, -fipa-matrix-reorg): Fix
31736         typos.
31737
31738 2009-01-04  Uros Bizjak  <ubizjak@gmail.com>
31739
31740         * config/s390/s390.md (UNSPEC_MB): Rename from UNSPECV_MB.
31741         (memory_barrier): Expand as unspec instead of unspec_volatile.
31742         Remove mem:BLK from insn operands.  Use Pmode scratch register.
31743         (*memory_barrier): Define as unspec instead of unspec_volatile.
31744         Use (match_dup 0) as input operand.
31745
31746         * config/sparc/sparc.md (UNSPEC_MEMBAR): Rename from UNSPECV_MEMBAR.
31747         * config/sparc/sync.md (memory_barrier): Expand as unspec instead of
31748         unspec_volatile.  Remove mem:BLK from insn operands.  Use Pmode
31749         scratch register.  Remove operand 1.
31750         (*stbar): Define as unspec instead of unspec_volatile.
31751         Use (match_dup 0) as input operand, remove (const_int 8).
31752         (*membar): Define as unspec instead of unspec_volatile.
31753         Use (match_dup 0) as input operand, remove input operand 2.
31754
31755         * config/xtensa/xtensa.md (UNSPEC_MEMW): Rename from UNSPECV_MEMW.
31756         (memory_barrier): Expand as unspec instead of unspec_volatile.
31757         Remove mem:BLK from insn operands.  Use Pmode scratch register.
31758         (*memory_barrier): Define as unspec instead of unspec_volatile.
31759         Use (match_dup 0) as input operand.
31760
31761         * config/ia64/sync.md (memory_barrier): Redefine as expander pattern.
31762         Remove mem:BLK from insn operands.  Use Pmode scratch register.
31763         Set volatile flag on operand 0.
31764         (*memory_barrier): New insn pattern.
31765
31766         * config/rs6000/sync.md (memory_barrier): Remove mem:BLK from
31767         insn operands.
31768         (*memory_barrier): Use (match_dup 0) as input operand.
31769
31770         * config/mips/sync.md (memory_barrier): Redefine as expander pattern.
31771         Remove mem:BLK from insn operands.  Use Pmode scratch register.
31772         Set volatile flag on operand 0.
31773         (*mb_internal): New insn pattern.
31774
31775         * config/alpha/sync.md (*memory_barrier): Rename from *mb_internal.
31776
31777 2009-01-04  Steven Bosscher  <steven@gcc.gnu.org>
31778
31779         PR middle-end/38586
31780         * function.c (struct temp_slot): Move to the section of the file
31781         that deals with temp slots.  Remove field 'address'.
31782         (temp_slot_address_table): New hash table of address -> temp slot.
31783         (struct temp_slot_address_entry): New struct, items for the table.
31784         (temp_slot_address_compute_hash, temp_slot_address_hash,
31785         temp_slot_address_eq, insert_temp_slot_address): Support functions
31786         for the new table.
31787         (find_temp_slot_from_address): Rewrite to use the new hash table.
31788         (remove_unused_temp_slot_addresses): Remove addresses of temp
31789         slots that have been made available.
31790         (remove_unused_temp_slot_addresses_1): Call-back for htab_traverse,
31791         worker function for remove_unused_temp_slot_addresses.
31792         (assign_stack_temp_for_type): Don't clear the temp slot address list.
31793         Add the temp slot address to the address -> temp slot map.
31794         (update_temp_slot_address): Update via insert_temp_slot_address.
31795         (free_temp_slots): Call remove_unused_temp_slot_addresses.
31796         (pop_temp_slots): Likewise.
31797         (init_temp_slots): Allocate the address -> temp slot map, or empty
31798         the map if it is already allocated.
31799         (prepare_function_start): Initialize temp slot processing.
31800
31801 2009-01-04  Steven Bosscher  <steven@gcc.gnu.org>
31802
31803         PR middle-end/38584
31804         * cfgexpand.c (estimate_stack_frame_size): Simplify the estimate:
31805         Calculate the size of all stack vars assuming no packing of stack
31806         vars will happen, replacing a quadratic algorithm with a linear one.
31807
31808 2009-01-03  Jakub Jelinek  <jakub@redhat.com>
31809
31810         PR target/38707
31811         * expmed.c (store_bit_field_1): Don't modify op0 if movstrict insn
31812         can't be used.
31813
31814 2009-01-03  Diego Novillo  <dnovillo@google.com>
31815
31816         * doc/contrib.texi: Update contributions.
31817
31818 2009-01-03  Jakub Jelinek  <jakub@redhat.com>
31819
31820         PR c++/38705
31821         * builtins.c (fold_builtin_memory_op): Give up if either operand
31822         is volatile.  Set srctype or desttype to non-qualified version
31823         of the other type.
31824
31825         PR c/38700
31826         * builtins.c (fold_builtin_expect): Only check DECL_WEAK for VAR_DECLs
31827         and FUNCTION_DECLs.
31828
31829 2009-01-02  Kenneth Zadeck  <zadeck@naturalbridge.com>
31830
31831         PR rtl-optimization/35805
31832         * df-problems.c (df_lr_finalize): Add recursive call to resolve lr
31833         problem if fast dce is able to remove any instructions.
31834         * dce.c (dce_process_block): Fix dump message.
31835
31836 2009-01-02  Mark Mitchell  <mark@codesourcery.com>
31837
31838         PR 33649
31839         * tree-ssa-pre.c (compute_antic): Correct loop bounds.
31840
31841 2009-01-02  Jakub Jelinek  <jakub@redhat.com>
31842
31843         PR middle-end/38690
31844         * tree-flow.h (op_code_prio, op_prio): New prototypes.
31845         * tree-pretty-print.c (op_code_prio): New function.
31846         (op_prio): No longer static.  Use op_code_prio.
31847         * gimple-pretty-print.c (dump_unary_rhs, dump_binary_rhs):
31848         Use op_prio and op_code_prio to determine if () should be
31849         printed around operand(s) or not.
31850
31851         * gimple-pretty-print.c (dump_unary_rhs, dump_binary_rhs,
31852         dump_gimple_call, dump_gimple_switch, dump_gimple_cond,
31853         dump_gimple_label, dump_gimple_try, dump_symbols, dump_gimple_phi,
31854         dump_gimple_mem_ops, dump_bb_header, dump_bb_end, pp_cfg_jump): Use
31855         pp_character instead of pp_string for single letter printing.
31856
31857 2009-01-02  Richard Sandiford  <rdsandiford@googlemail.com>
31858
31859         * doc/extend.texi: Fix '#pragma GCC option' typo.
31860
31861 2009-01-02  Richard Guenther  <rguenther@suse.de>
31862
31863         * doc/install.texi (--enable-checking): Mention different
31864         default for stage1.
31865         (--enable-stage1-checking): Document.
31866
31867 2009-01-01  Andrew Pinski  <pinskia@gmail.com>
31868
31869         PR middle-end/30142
31870         * tree-cfg.c (verify_expr): Add INDIRECT_REF case.  Change MODIFY_EXPR
31871         case to be an error.
31872
31873 2009-01-02  Ben Elliston  <bje@au.ibm.com>
31874
31875         * config/fp-bit.h (pack_d): Constify argument.
31876         * config/fp-bit.c (makenan): Constify return type. Remove casts.
31877         (isnan): Constify argument.
31878         (isinf): Likewise.
31879         (iszero): Likewise.
31880         (pack_d): Likewise.
31881         (_fpadd_parts): Constify return type.
31882         (_fpmul_parts): Likewise.
31883         (_fpdiv_parts): Likewise.
31884
31885 2009-01-01  Jakub Jelinek  <jakub@redhat.com>
31886
31887         PR c/36489
31888         * c-typeck.c (add_pending_init): Add IMPLICIT argument.  Only
31889         warn about overwriting initializer with side-effects or
31890         -Woverride-init if !IMPLICIT.
31891         (output_init_element): Likewise.  Pass IMPLICIT down to
31892         add_pending_init.
31893         (process_init_element): Add IMPLICIT argument.  Pass it down
31894         to output_init_element.
31895         (push_init_element, pop_init_level, set_designator): Adjust
31896         process_init_element callers.
31897         (set_nonincremental_init, set_nonincremental_init_from_string):
31898         Adjust add_pending_init callers.
31899         (output_pending_init_elements): Adjust output_init_element callers.
31900         * c-tree.h (process_init_element): Adjust prototype.
31901         * c-parser.c (c_parser_initelt, c_parser_initval): Adjust
31902         process_init_element callers.
31903
31904 \f
31905 Copyright (C) 2009 Free Software Foundation, Inc.
31906
31907 Copying and distribution of this file, with or without modification,
31908 are permitted in any medium without royalty provided the copyright
31909 notice and this notice are preserved.