OSDN Git Service

* config/m68k/m68k-devices.def: Add MCF5441x family.
[pf3gnuchains/gcc-fork.git] / gcc / ChangeLog
1 2009-11-17  Maxim Kuvyrkov  <maxim@codesourcery.com>
2
3         * config/m68k/m68k-devices.def: Add MCF5441x family.
4
5 2009-11-17  Jan Hubicka  <jh@suse.cz>
6
7         * cgraph.c (cgraph_update_edges_for_call_stmt_node): Do not access
8         removed node.
9         * cgraphunit.c (verify_cgraph_node): Verify frequencies for match.
10
11 2009-11-17  Uros Bizjak  <ubizjak@gmail.com>
12
13         * config/i386/predicates.md (x86_64_szext_general_operand): Do not
14         nest ior expressions.
15         (x86_64_szext_nonmemory_operand): Ditto.
16         (call_insn_operand): Ditto.
17
18 2009-11-16  Alexandre Oliva  <aoliva@redhat.com>
19
20         * stmt.c (expand_asm_stmt): Get locus from stmt.
21
22 2009-11-16  Alexandre Oliva  <aoliva@redhat.com>
23
24         * tree-cfg.c (gimple_redirect_edge_and_branch) <case GIMPLE_ASM>:
25         Create the decl label for the new dest block on demand.  Require
26         a fallthrough edge if no asm labels were redirected.
27
28 2009-11-16  Uros Bizjak  <ubizjak@gmail.com>
29
30         * config/i386/i386.md (cbranchsi4): Use nonimmediate_operand for
31         operand 1 predicate.
32         (cstoresi4): Ditto for operand 2.
33         (cbranch<mode>4): Macroize expander from cbranch{qi,hi,si,di,ti}4
34         patterns using SDWIM mode iterator.
35         (cstore<mode>4): Macroize expander from cstore{qi,hi,si,di}4 patterns
36         using SWIM mode iterator.
37         (cmpdi_1): Rename from cmpdi_1_rex64.
38         (cmp<mode>_1): Macroize expander from cmp{si,di}_1 patterns using
39         SWI48 mode iterator.
40         (*cmp<mode>_1): Macroize insn from *cmp{qi,hi,si,di}_1_insn using SWI
41         mode iterator.
42         (*cmp<mode>_ccno_1): Ditto from *cmp{qi,hi,si,di}_ccno_1.
43         (*cmp<mode>_minus_1): Ditto from *cmp{qi,hi,si,di}_minus_1.
44         (*cmpqi_ext_3_insn): Make private.
45         (*cmpqi_ext_3_insn_rex64): Make private.
46         (cmpstrnsi): Update for renamed cmpdi_1_rex64.
47         * config/i386/predicates.md (cmpsi_operand): Remove.
48
49 2009-11-16  Paul Brook  <paul@codesourcery.com>
50
51         * doc/invoke.texi: Document ARM VFPv4 based FPUs.
52         * config/arm/arm.c (all_fpus): Add VFPv4 entries.
53
54 2009-11-14  Jan Hubicka  <jh@suse.cz>
55
56         * cgraphbuild.c (compute_call_stmt_bb_frequency): Use proper
57         ENTRY_BLOCK_PTR.
58         * cgraph.c (cgraph_clone_edge): Avoid freq_scale 0 to completely
59         zero out all callees.
60         * cgraphunit.c (verify_cgraph_node): Verify cgraph nodes for
61         frequency and count match.
62         * ipa-inline.c (update_noncloned_frequencies): New function.
63         (cgraph_clone_inlined_nodes): Use it.
64         * tree-inline.c (copy_bb): Fix frequency scaling; output
65         diagnostic on frequency mismatches to dump file.
66         (initialize_cfun): Do not scale frequency; fix count scaling;
67         initialize entry and exit block frequencies; copy profile info.
68         (copy_cfg_body): Use frequency_scale as argument; fix count scaling.
69         (copy_body): Use frequency_scale as argument.
70         (expand_call_inline): Compute frequency scale and output diagnostic
71         to dump file.
72         (delete_unreachable_blocks_update_callgrah): Remove checking that
73         has to be done after edge redirection.
74         (tree_function_versioning): Update initialize_cfun and copy_body call.
75
76 2009-11-14  Jan Hubicka  <jh@suse.cz>
77
78         * cgraph.c (cgraph_release_function_body): Update use of
79         ipa_transforms_to_apply.
80         (cgraph_remove_node): Remove ipa_transforms_to_apply.
81         * cgraph.h (struct cgraph_node): Add ipa_transforms_to_apply.
82         * cgraphunit.c (save_inline_function_body): Clear ipa_transforms for
83         copied body.
84         (cgraph_materialize_clone): Remove original if dead.
85         * lto-streamer-in.c (lto_read_body): Remove FIXME and
86         ipa_transforms_to_apply hack.
87         * function.h (struct function): Add ipa_transforms_to_apply.
88         * ipa.c (cgraph_remove_unreachable_nodes): Handle dead clone originals.
89         * tree-inline.c (copy_bb): Update sanity check.
90         (initialize_cfun): Do not copy ipa_transforms_to_apply.
91         (expand_call_inline): remove dead clone originals.
92         (tree_function_versioning): Merge transformation queues.
93         * passes.c (add_ipa_transform_pass): Remove.
94         (execute_one_ipa_transform_pass): Update ipa_transforms_to_apply
95         tracking.
96         (execute_all_ipa_transforms): Update.
97         (execute_one_pass): Update.
98
99 2009-11-14  Andy Hutchinson  <hutchinsonandy@gcc.gnu.org>
100
101         PR target/21078, 21080
102         * config/avr/avr.c (avr_return_addr_rtx): New function for
103         builtin_return_address.
104         (expand_prologue): Calculate stack usage.
105         (avr_asm_function_end_prologue): Output stack size and offset label.
106         * config/avr/avr.h (RETURN_ADDR_RTX): Replace.
107         (machine_function): Add stack_usage.
108         * config/avr/avr-protos.h (avr_return_addr_rtx): New function.
109
110 2009-11-14  Anatoly Sokolov  <aesok@post.ru>
111
112         * config/iq2000/iq2000.c (iq2000_function_value): Make static, add
113         new 'outgoing' argument.
114         (iq2000_libcall_value, iq2000_function_value_regno_p): New functions.
115         (TARGET_FUNCTION_VALUE, TARGET_LIBCALL_VALUE): Declare.
116         * config/iq2000/iq2000.h (FUNCTION_VALUE_REGNO_P): Redefine, use
117         iq2000_function_value_regno_p.
118         (FUNCTION_VALUE, LIBCALL_VALUE): Remove.
119         * config/iq2000/iq2000-protos.h (iq2000_function_value_regno_p):
120         Declare.
121
122 2009-11-14  Richard Earnshaw  <rearnsha@arm.com>
123
124         PR target/42031
125         * arm.md (adddi_sesidi_di): Place tied contraint first.
126         (adddi_zesidi_di, subdi_di_zesidi, subdi_di_sesidi): Likewise
127         (subdi_zesidi_di, subdi_sesidi_di): Likewise.
128         (mulsi3_compare0, mulsi_compare0_scratch): Likewise.
129         (mulsi3addsi, mulsi3addsi_compare0): Likewise.
130         (mulsi3addsi_compare0_scratch, smulsi3_highpart_nov6): Likewise.
131         (umulsi3_highpart_nov6, anddi_zesidi_di, anddi_sesdi_di): Likewise.
132         (anddi_notdi_di, iordi_sesidi_di, xordi_sesidi_di): Likewise.
133         (andsi_iorsi3_notsi, arm_ashldi3_1bit, arm_ashrdi3_1_bit): Likewise.
134         (arm_lshrdi3_1bit, one_cmpldi2): Likewise.
135
136 2009-11-14  Uros Bizjak  <ubizjak@gmail.com>
137
138         * config/i386/predicates.md (call_register_no_elim_operand):
139         New predicate.  Reject stack register as valid call operand
140         for 32bit targets.
141         (call_insn_operand): Use call_register_no_elim_operand.
142
143 2009-11-13  Richard Henderson  <rth@redhat.com>
144
145         * function.c (stack_protect_prologue): Don't bypass expand_expr
146         for stack_protect_guard and guard_decl.
147         (stack_protect_epilogue): Likewise.
148
149 2009-11-13  Jan Hubicka  <jh@suse.cz>
150
151         * ipa.c (function_and_variable_visibility): Clear COMDAT on functions
152         when to PUBLIC is set.
153
154 2009-11-13  Jakub Jelinek  <jakub@redhat.com>
155
156         PR middle-end/42029
157         * gimplify.c (gimplify_omp_atomic): Set DECL_GIMPLE_REG_P on
158         tmp_load if needed.
159
160 2009-11-13  Uros Bizjak  <ubizjak@gmail.com>
161
162         PR target/41900
163         * config/i386/i386.md (*call_pop_1, *call_1, *call_value_pop_1,
164         *call_value_1): Use "lsm" as operand 1 constraint.
165         * config/i386/predicates.md (call_insn_operand): Depend on
166         index_register_operand to avoid %esp register.
167
168 2009-11-13  Uros Bizjak  <ubizjak@gmail.com>
169
170         Revert:
171         2009-11-03  Uros Bizjak  <ubizjak@gmail.com>
172
173         PR target/41900
174         * config/i386/i386.h (ix86_arch_indices) <X86_ARCH_CALL_ESP>: New.
175         (TARGET_CALL_ESP): New define.
176         * config/i386/i386.c (initial_ix86_tune_features): Initialize
177         X86_ARCH_CALL_ESP.
178         * config/i386/i386.md (*call_pop_1_esp, *call_1_esp,
179         *call_value_pop_1_esp, *call_value_1_esp): Rename from *call_pop_1,
180         *call_1, *call_value_pop_1 and *call_value_1.  Depend on
181         TARGET_CALL_ESP.
182         (*call_pop_1, *call_1, *call_value_pop_1, *call_value_1):
183         New patterns, use "lsm" as operand 1 constraint.
184         * config/i386/predicates.md (call_insn_operand): Depend on
185         index_register_operand for !TARGET_CALL_ESP to avoid %esp register.
186
187 2009-11-13  Jason Merrill  <jason@redhat.com>
188
189         PR debug/26965
190         * dwarf2out.c (gen_variable_die): Don't worry about DECL_COMDAT.
191         Don't emit a second declaration at any scope.
192
193 2009-11-13  Andrey Belevantsev  <abel@ispras.ru>
194
195         PR rtl-optimization/41697
196         * sel-sched-ir.c (fallthru_bb_of_jump): Bail out when a block with
197         a conditional jump has a single successor.
198
199 2009-11-13  Andrey Belevantsev  <abel@ispras.ru>
200
201         * sched-deps.c (init_deps): New parameter lazy_reg_last.  Don't
202         allocate reg_last when in case lazy_reg_last is true.
203         (init_deps_reg_last): New.
204         (free_deps): When max_reg is 0, this context is already freed.
205         * sched-int.h (init_deps_reg_last): Export.
206         (init_deps): Update prototype.
207         * sched-ebb.c (schedule_ebb): Update the call to init_deps.
208         * sched-rgn.c (sched_rgn_compute_dependencies): Likewise.
209         * ddg.c (build_intra_loop_deps): Likewise.
210         * sel-sched-ir.c (copy_deps_context, create_deps_context,
211         reset_deps_context, deps_init_id): Likewise.
212         (init_first_time_insn_data): Lazy allocate INSN_DEPS_CONTEXT.
213         (free_data_for_scheduled_insn): New, break down from ...
214         (free_first_time_insn_data): ... here.
215         (has_dependence_p): Allocate reg_last now, when it is needed.
216         (extend_insn_data): When maximal LUID is big enough, allocate
217         per-insn data in smaller chunks.
218         * sel-sched-ir.h (free_data_for_scheduled_insn): Export.
219         * sel-sched.c (update_seqnos_and_stage): Free INSN_DEPS_CONTEXT
220         in scheduled insn.
221
222 2009-11-13  Uros Bizjak  <ubizjak@gmail.com>
223
224         * config/i386/i386.md (call_value): Fix comment.
225         (sibcall_value): Ditto.
226
227 2009-11-13  Eric Botcazou  <ebotcazou@adacore.com>
228
229         * config/i386/linux-unwind.h (x86_frob_update_context): New function.
230         (MD_FROB_UPDATE_CONTEXT): Define.
231
232 2009-11-12  Eric Botcazou  <ebotcazou@adacore.com>
233             Laurent GUERBY  <laurent@guerby.net>
234
235         * config/sparc/linux-unwind.h (sparc64_fallback_frame_state): Tidy.
236         Do not schedule an %sp restore.  Compensate for RETURN_ADDR_OFFSET.
237         (sparc_fallback_frame_state): Tidy.  Compensate for RETURN_ADDR_OFFSET.
238
239 2009-11-12  Jan Hubicka  <jh@suse.cz>
240
241         * ipa.c (function_and_variable_visibility): Fix my accidentail commit
242         and clear DECL_COMMON on localized declarations.
243
244 2009-11-12  Bernd Schmidt  <bernd.schmidt@analog.com>
245
246         PR rtl-opt/38582
247         * regrename.c (struct du_head): New structure; some elements moved
248         from...
249         (struct du_chain): ... this one.
250         (open_chains, closed_chains): Now of type struct du_head *.
251         (do_replace): Accept du_head argument, not du_chain.  All callers
252         changed.  Modified code to match new data structures.
253         (build_def_use): Return a list of du_head structures.  Modified code
254         to match new data structures.
255         (dump_def_use_chain): Accept du_head argument, not du_chain.  All
256         callers changed.  Modified code to match new data structures.
257         (merge_overlapping_regs): Accept du_head argument, not du_chain.  All
258         callers changed.  Modified code to match new data structures.
259         (scan_rtx_reg): Change type of this_regno and this_nregs to unsigned.
260         Allocate a du_head structure as well as a du_chain when creating a
261         new chain.  Modified other code to match new data structures.
262
263 2009-11-12  Jan Hubicka  <jh@suse.cz>
264
265         * cgraph.h (varpool_node_name): Declare.
266         * cgraphunit.c (process_function_and_variable_attributes): Set
267         force_output flag on used variables.
268         * ipa.c (function_and_variable_visibility): Dump externally visible
269         and needed variables.
270         * varpool.c (varpool_node_name): Export.
271         (decide_is_variable_needed): Check COMDAT for externally visible vars;
272         ignore needed flag.
273
274 2009-11-12  Uros Bizjak  <ubizjak@gmail.com>
275
276         PR middle-end/41930
277         * simplify-rtx.c (simplify_replace_fn_rtx) <case 'e'>: Skip
278         processing if XEXP (x, i) is NULL.
279
280 2009-11-12  Jan Hubicka  <jh@suse.cz>
281
282         * ipa.c (function_and_variable_visibility): Verify that WEAK || COMMON
283         imply PUBLIC || EXTERNAL.
284
285 2009-11-11  Andy Hutchinson  <hutchinsonandy@gcc.gnu.org>
286
287         PR middle-end/41440
288         * cfgexpand.c (expand_gimple_basic_block): Append NOP to a fallthru,
289         single successor block, ending with jump created by RTL expander.
290
291 2009-11-11  Jan Hubicka  <jh@suse.cz>
292
293         PR middle-end/41729
294         * ipa.c (function_and_variable_visibility): Do not privatize COMDAT
295         and WEAK variables at -fwhole-program.
296
297         PR middle-end/41735
298         * ipa.c (whole_program_function_and_variable_visility): COMDAT
299         functions/variables are not needed even if they are externally visible.
300
301 2009-11-11  Jan Hubicka  <jh@suse.cz>
302
303         (patch by Richard Guenther)
304         * lto-streamer-out.c (output_function): Output head of argument list
305         earlier.
306         * lto-streamer-in.c (input_function): Re-map arguments into merged
307         declaration.
308
309 2009-11-11  Jan Hubicka  <jh@suse.cz>
310
311         * lto-cgraph.c: Include gcov-io.h
312         (output_profile_summary): New function.
313         (output_cgraph): Use it.
314         (input_profile_summary): New function.
315         (input_cgraph): Use it.
316         * coverage.c (build_ctr_info_value): Use varpool; initalize
317         DECL_ASSEMBLER_NAME.
318         (create_coverage): Likewise.
319         * tree-profile.c (tree_init_ic_make_global_vars): Likewise.
320         (tree_init_edge_profiler): Likewise.
321         * Makefile.in (lto-cgraph.o): Add dependency on gcov-io.h.
322
323 2009-11-11  Kai Tietz  <kai.tietz@onevision.com>
324
325         * config/i386/cygming.h (HANDLE_PRAGMA_PUSH_POP_MACRO): Removed.
326         * c-pragma.c (def_pragma_macro_value): Likewise.
327         (def_pragma_macro): Likewise.
328         (pushed_macro_table): Likewise.
329         (HANDLE_PRAGMA_PUSH_POP_MACRO): Remove guarded code.
330         * doc/tm.texi (HANDLE_PRAGMA_PUSH_POP_MACRO): Removed.
331
332 2009-11-11  Basile Starynkevitch  <basile@starynkevitch.net>
333
334         * doc/plugins.texi (Registering custom attributes): section
335         renamed as (Registering custom attributes or pragmas).
336         Mentions custom attributes & pragmas, and c_register_pragma, with
337         a small example.
338         * doc/cpp.texi (Pragmas): Mentions that plugins can provide their
339         pragmas.
340         * doc/extend.texi (Function Attributes): Mentions that plugin can
341         provide their attributes.
342
343 2009-11-11  Jon Beniston  <jon@beniston.com>
344
345         * config.gcc: Add lm32 elf and uclinux targets.
346         * config/lm32: New directory.
347         * config/lm32/lm32.c: New file.
348         * config/lm32/lm32.h: New file.
349         * config/lm32/lm32.md: New file.
350         * config/lm32/lm32.opt: New file.
351         * config/lm32/lm32-protos.h: New file.
352         * config/lm32/constraints.md: New file.
353         * config/lm32/predicates.md: New file.
354         * config/lm32/sfp-machine.h: New file.
355         * config/lm32/t-fprules-softfp: New file.
356         * config/lm32/uclinux-elf.h: New file.
357         * doc/invoke.texi: Document lm32 options.
358         * doc/contrib.texi: Document lm32 porter.
359         * doc/install.texi: Document lm32 targets.
360
361 2009-11-11  Martin Jambor  <mjambor@suse.cz>
362
363         PR lto/41932
364         * ipa-prop.c (ipa_update_after_lto_read): Call
365         ipa_check_create_node_params and ipa_check_create_edge_args.  Also
366         call ipa_initialize_node_params instead of ipa_populate_param_decls.
367
368 2009-11-11  Daniel Jacobowitz  <dan@codesourcery.com>
369
370         * config/arm/arm.c (neon_vdup_constant, neon_make_constant): New.
371         (neon_expand_vector_init): Use them.  Also handle non-constant
372         vectors with identical elements and vectors with only one
373         non-constant element.
374         (arm_print_operand): Handle 'y' modifier.
375         * config/arm/arm-protos.h (neon_make_constant): Declare.
376         * config/arm/neon.md (neon_vdup_n<mode>): Split into two
377         patterns.  Use VX instead of VDQW for the first one.  Allow
378         a VFP alternative and V32 modes for the second one.
379         * config/arm/neon.ml (shape_elt): Add Alternatives.
380         (ops): Use Alternatives for vdup lane instructions.
381         * config/arm/neon-testgen.ml (analyze_shape): Handle Alternatives.
382         * config/arm/vec-common.md (mov<mode>): Use neon_make_constant.
383
384 2009-11-11  Daniel Jacobowitz  <dan@codesourcery.com>
385
386         * config/arm/neon.md (*neon_mov<mode>): Reject two non-register
387         operands.
388         (movti, mov<mode>): Call force_reg on one operand if required.
389         * config/arm/vec-common.md (mov<mode>): Likewise.
390
391 2009-11-11  Daniel Jacobowitz  <dan@codesourcery.com>
392
393         * config/arm/arm.c (arm_override_options): Enable scheduling for
394         Thumb-2.
395
396 2009-11-10  Eric Botcazou  <ebotcazou@adacore.com>
397
398         PR target/10127
399         PR ada/20548
400         * expr.h (anti_adjust_stack_and_probe): Declare.
401         * explow.c (anti_adjust_stack_and_probe): Make global, add ADJUST_BACK
402         parameter and rewrite head comment.
403         (allocate_dynamic_stack_space): Adjust call to above function.
404         * function.c (expand_function_end): Handle STACK_CHECK_MOVING_SP.
405
406         * tree.h (dwarf2out_args_size): Delete.
407         * dwarf2out.c (dwarf2out_args_size): Make static and move around.
408         (dwarf2out_args_size_adjust): Delete prototype and move around.
409         (dwarf2out_frame_debug_expr): Do not record arg size adjustments for
410         ACCUMULATE_OUTGOING_ARGS targets.
411
412 2009-11-10  Eric Botcazou  <ebotcazou@adacore.com>
413
414         * config/sparc/sparc.c (print_operand) <')'>: Test for a non-null
415         DECL_SIZE of DECL_RESULT before evaluating it.
416
417 2009-11-10  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
418
419         PR tree-optimization/41987
420         * fold-const.c (const_binop): Avoid using fold_buildN().
421
422 2009-11-10  Martin Jambor  <mjambor@suse.cz>
423
424         * tree-pass.h (struct ipa_opt_pass_d): Added stmt_fixup field.
425         (execute_all_ipa_stmt_fixups): Declare.
426         * ipa-cp.c (pass_ipa_cp): Added stmt_fixup value.
427         * ipa-inline.c (pass_ipa_inline): Likewise.
428         * ipa-pure-const.c (pass_ipa_pure_cons): Likewise.
429         * ipa-reference.c (pass_ipa_reference): Likewise.
430         * ipa.c (pass_ipa_whole_program_visibility): Likewise.
431         * lto-streamer-out.c (pass_ipa_lto_gimple_out): Likewise.
432         (pass_ipa_lto_finish_out): Likewise.
433         * lto-wpa-fixup.c (pass_ipa_lto_wpa_fixup): Likewise.
434         * passes.c (execute_ipa_stmt_fixups): New function.
435         (execute_all_ipa_stmt_fixups): New function.
436         * lto-streamer-in.c (input_function): Call execute_all_ipa_stmt_fixups.
437
438 2009-11-10  Eric Botcazou  <ebotcazou@adacore.com>
439
440         PR ada/20548
441         * explow.c (probe_stack_range): Fix typo.
442         * config/sparc/sparc.md (probe_stack): New expander.
443
444 2009-11-09  Dave Korn  <dave.korn.cygwin@gmail.com>
445
446         * config/i386/cygwin.h (LINK_SPEC): Add -tsaware flag if !mno-cygwin.
447
448 2009-11-09  Jason Merrill  <jason@redhat.com>
449
450         * gdbinit.in (pgq): New function for printing gimple sequence.
451
452 2009-11-09  Paul Brook  <paul@codesourcery.com>
453             Daniel Jacobowitz  <dan@codesourcery.com>
454             Sandra Loosemore  <sandra@codesourcery.com>
455
456         * doc/extend.texi (Half-Precision): Update wording to reflect
457         that there are now multiple -mfpu options that enable fp16
458         hardware support.
459         * doc/invoke.texi: Update list of ARM -mfpu= options.
460         * config.gcc: Update ARM --with-fpu option list.
461         * config/arm/arm.c (all_fpus): Add vfpv3-fp16, vfpv3-d16-fp16,
462         vfpv3xd and vfpv3xd-fp16.
463         (use_vfp_abi): New function.
464         (aapcs_vfp_is_call_or_return_candidate): Avoid double precision regs
465         when undesirable.
466         (aapcs_vfp_is_return_candidate, aapcs_vfp_is_call_candidate,
467         aapcs_vfp_allocate_return_reg): Use use_vfp_abi.
468         (arm_rtx_costs_1, arm_size_rtx_costs, arm_fastmul_rtx_costs,
469         arm_9e_rtx_costs): Only expect double-precision operations if the FPU
470         provides them.
471         (coproc_secondary_reload_class): Reload HFmode via GENERAL_REGS if no
472         NEON.
473         (arm_print_operand): Handle 'p' modifier.
474         (arm_hard_regno_mode_ok): : Allow HFmode in VFP registers if
475         TARGET_FP16.
476         * config/arm/arm.h (TARGET_VFP_SINGLE, TARGET_VFP_DOUBLE): Define.
477         (TARGET_FP16): Define.
478         * config/arm/vfp.md: Disable double-precision patterns if the FPU
479         does not provide them.
480         (arm_movdi_vfp, thumb2_movdi_vfp): Use fcpys to move
481         double-precision values on a single-precision FPU.
482         (movdf_vfp, thumb2_movdf_vfp): Likewise.  Use "Dy" for
483         double-precision constants.
484         (movhf_vfp_neon): New pattern (was movhf_vfp).
485         (movhf_vfp): Remove NEON instructions.
486         * config/arm/constraints.md: Add new "Dy" constraint for
487         double-precision constants.  Update description of "Dv".
488         * config/arm/arm.md: Disable double-precision patterns if the FPU
489         does not provide them
490
491 2009-11-09  Jakub Jelinek  <jakub@redhat.com>
492
493         * config/i386/i386.c (print_operand) <case 'D'>: Fix formatting.
494         (print_operand) <case 'Y'>: Likewise.  Fix a pasto in operand lossage
495         diagnostics.
496
497 2009-11-08  H.J. Lu  <hongjiu.lu@intel.com>
498
499         * collect2.c (main): Search PLUGIN_LD for plugin linker.
500
501         * configure.ac (--with-plugin-ld): New.  Default to ld.
502         * configure: Regenerated.
503         * config.in: Likewise.
504
505         * exec-tool.in (ORIGINAL_PLUGIN_LD_FOR_TARGET): New.
506         (collect-ld): Use ORIGINAL_PLUGIN_LD_FOR_TARGET for -plugin.
507
508 2009-11-08  Jonathan Gray  <jsg@openbsd.org>
509
510         * config/openbsd-stdint.h: Change to reflect what
511         c_common_nodes_and_builtins expects.
512
513 2009-11-08  Paolo Carlini  <paolo.carlini@oracle.com>
514
515         * builtins.c (apply_args_reg_offset): Remove commented out delaration.
516
517 2009-11-08  Jakub Jelinek  <jakub@redhat.com>
518
519         PR target/41985
520         * config/i386/i386.c (get_some_local_dynamic_name): Don't assert
521         function contains at least one local dynamic name.
522         (print_operand) <case '&'>: Instead output operand lossage diagnostics
523         here if that happens.
524
525 2009-11-08  Zbigniew Chamski  <zbigniew.chamski@gmail.com>
526             Joern Rennecke  <amylaar@spamcop.net>
527
528         * cfgrtl.c (pass_free_cfg): Add pass name.
529         * cgraphbuild.c (pass_build_cgraph_edges): Likewise.
530         (pass_rebuild_cgraph_edges, pass_remove_cgraph_callee_edges): Likewise.
531         * dce.c (pass_ud_rtl_dce, pass_fast_rtl_dce): Change pass name.
532         * df-core.c (pass_df_initialize_no_opt): Likewise.
533         * except.c (pass_rtl_eh): Likewise.
534         * function.c (pass_init_function, pass_leaf_regs): Likewise.
535         * gcse.c (pass_rtl_pre): Change pass name.
536         * passes.c (pass_postreload): Add pass name.
537         (make_pass_instance): Don't use duplicate-tracking logic for
538         names starting with '*'.
539         (next_pass_1): Assert that pass has a name.
540         (register_one_dump_file): If there is an space in the name,
541         skip past it.
542         * predict.c (pass_strip_predict_hints): Add pass name.
543         * reg-stack.c (pass_stack_regs): Likewise.
544         * stack-ptr-mod.c (pass_stack_ptr_mod): Likewise.
545         * tree-cfg.c (pass_warn_function_return,
546         pass_warn_function_noreturn): Add pass name.
547         * tree-dfa.c (pass_referenced_vars): Likewise.
548         * tree-optimize.c (pass_cleanup_cfg_post_optimizing):
549         Fix whitespace before comment.
550         (pass_fixup_cfg): Add pass name, fix whitespace before comment.
551         (pass_init_datastructures): Add pass name.
552         * tree-ssa-loop.c (pass_record_bounds): Likewise.
553         * tree-ssa.c (pass_early_warn_uninitialized,
554         pass_late_warn_uninitialized): Likewise.
555         * tree.c (pass_ipa_free_lang_data): Likewise.
556         * doc/passes.texi (pass manager): Document how to disambiguate
557         pass names.
558
559 2009-11-08  Paolo Bonzini  <bonzini@gnu.org>
560
561         * df-problems.c: Fix documentation for forward simulation of LR.
562         (df_simulate_one_insn_forwards): Use df_simulate_find_defs.
563         (df_simulate_finalize_forwards): Remove.
564         * df.h (df_simulate_finalize_forwards): Remove.
565
566 2009-11-08  Richard Guenther  <rguenther@suse.de>
567
568         * tree-ssa-structalias.c (build_succ_graph): Properly make
569         variables escape if they are stored to anything.
570
571 2009-11-08  Richard Guenther  <rguenther@suse.de>
572
573         PR rtl-optimization/41928
574         * loop-invariant.c (free_loop_data): If we didn't allocate
575         loop data do not try to free it.
576
577 2009-11-07  Jason Merrill  <jason@redhat.com>
578
579         * tree.c (reconstruct_complex_type): Preserve attributes.
580
581 2009-11-07  Richard Guenther  <rguenther@suse.de>
582
583         * tree-ssa-structalias.c (build_succ_graph): Feed stores
584         to anything only to variables that can take pointers.
585         (get_constraint_for_ssa_var): Properly exclude full
586         variables from expanding.
587         (first_vi_for_offset): Avoid overflow in arithmetic.
588         (first_or_preceding_vi_for_offset): Likewise.
589         (count_num_arguments): Fix implementation.
590         (gate_ipa_pta): Do not run when not optimizing.
591
592 2009-11-07  David Binderman <dcb314@hotmail.com>
593
594         * builtins.c (apply_args_size, expand_builtin_mathfn, expand_powi,
595         expand_builtin_expect, maybe_emit_sprintf_chk_warning): Remove some
596         set but not used variables.
597         (apply_args_reg_offset): Comment out as unused.
598         * calls.c (flags_from_decl_or_type): Likewise.
599         * genautomata.c (check_regexp_units_distribution): Likewise.
600
601 2009-11-07  Uros Bizjak  <ubizjak@gmail.com>
602
603         * config/i386/sse.md (xop_pmacsww, xop_pmacssww, xop_pmacsdd,
604         xop_pmacssdd, xop_pmacssdql, xop_pmacssdqh, xop_pmacsdql,
605         *xop_pmacsdql_mem, xop_pmacsdqh, *xop_pmacsdqh_mem, xop_pmacsswd,
606         xop_pmacswd, xop_pmadcsswd, xop_pmadcswd, xop_pcmov_<mode>,
607         xop_pcmov_<mode>256, xop_pperm, xop_pperm_pack_v2di_v4si,
608         xop_pperm_pack_v4si_v8hi, xop_pperm_pack_v8hi_v16qi): Compress
609         operand alternatives.
610
611 2009-11-06  Michael Matz  <matz@suse.de>
612
613         PR middle-end/41963
614         * tree-ssa-math-opts.c (execute_cse_reciprocals): Check all uses
615         of a potential reciprocal to really be reciprocals.
616
617 2009-11-06  Jakub Jelinek  <jakub@redhat.com>
618
619         * config/i386/x86intrin.h: Include fma4intrin.h, xopintrin.h and
620         lwpintrin.h after immintrin.h.
621         * config/i386/fma4intrin.h (__v8sf, __v4df, __m256, __m256d): Remove
622         typedefs.
623
624         PR middle-end/41935
625         * c-common.c (fold_offsetof_1) <case ARRAY_REF>: Don't crash for VLAs
626         or non-constant index, allow index one past the last element and
627         allow exceeding array bound in arrays that might be used as flexible
628         array members.
629
630 2009-11-05  Richard Henderson  <rth@redhat.com>
631
632         * config/i386/ia32intrin.h: Protect CRC32 builtins with __SSE4_2__.
633
634 2009-11-05  Paul Brook  <paul@codesourcery.com>
635
636         * config/arm/arm.c (arm_fp_model, arm_fpu_arch, arm_fpu_tune): Remove.
637         (arm_fpu_desc): New.
638         (all_fpus): Add FPU details.
639         (fp_model_for_fpu): Remove.
640         (arm_override_options): Set and use arm_fpu_desc and arm_fpu_attr.
641         (arm_output_epilogue, arm_save_coproc_regs): Use TARGET_FPA_EMU2.
642         (arm_file_start): Use arm_fpu_desc.
643         * config/arm/arm.h (TARGET_FPA, TARGET_MAVERICK, TARGET_VFP,
644         TARGET_VFPD32, TARGET_VFP3, TARGET_NEON_FP16, TARGET_NEON): Use
645         arm_fpu_desc.
646         (TARGET_FPA_EMU2): Define.
647         (arm_fp_model, fputype, arm_fpu_tune): Remove.
648         (vfp_reg_type, arm_fpu_desc): New.
649         * config/arm/arm.md (attr fpu): Simplify.
650         * config/arm/fpa.md (movxf_fpa): Use TARGET_FPA_EMU2.
651         * config/arm/linux-elf.h (FPUTYPE_DEFAULT): Use string value.
652         * config/arm/bpabi.h (FPUTYPE_DEFAULT): Use string value.
653         * config/arm/netbsd-elf.h (FPUTYPE_DEFAULT): Use string value.
654         * config/arm/vxworks.h (FPUTYPE_DEFAULT): Use string value.
655
656 2009-11-05  Michael Matz  <matz@suse.de>
657
658         * config/i386/i386.c (ix86_builtin_reciprocal): Remove dependency
659         on TARGET_RECIP.
660         * doc/invoke.texi (-mrecip): Clarify that we don't need -mrecip
661         for 1/sqrtf.
662
663 2009-11-04  Jason Merrill  <jason@redhat.com>
664
665         PR c++/36912
666         * varasm.c (initializer_constant_valid_p): A PLUS_EXPR
667         or MINUS_EXPR of REAL_TYPE is not a valid constant initializer.
668         (output_constant): Avoid crash after error.
669
670 2009-11-05  Martin Jambor  <mjambor@suse.cz>
671
672         * tree-sra.c (struct access): Changed comment of next_sibling field.
673         (analyze_modified_params): Loop over accesses of a group rather than
674         over all with the ame base, pass a common bitmap to
675         walk_aliased_vdefs.
676         (unmodified_by_ref_scalar_representative): Build link lists of
677         accesses of a group.
678         (splice_param_accesses): Likewise.
679
680 2009-11-04  Kenneth Zadeck  <zadeck@naturalbridge.com>
681
682         * df-scan.c (df-uses-record): Add case zero_extract of mem.
683
684 2009-11-04  Eric Botcazou  <ebotcazou@adacore.com>
685
686         PR target/10127
687         PR ada/20548
688         * config/i386/i386.md (probe_stack): New expander.
689         (logical operation peepholes): Do not split stack checking probes.
690
691 2009-11-04  Harsha Jagasia  <harsha.jagasia@amd.com>
692             Dwarakanath Rajagopal  <dwarak.rajagopal@amd.com>
693
694         * doc/invoke.texi (-mlwp): Add documentation.
695         * doc/extend.texi (x86 intrinsics): Add LWP intrinsics.
696         * config.gcc (i[34567]86-*-*): Include lwpintrin.h.
697         (x86_64-*-*): Ditto.
698         * config/i386/lwpintrin.h: New file, provide x86 compiler
699         intrinisics for LWP.
700         * config/i386/cpuid.h (bit_LWP): Define LWP bit.
701         * config/i386/x86intrin.h: Add LWP check and lwpintrin.h.
702         * config/i386/i386-c.c (ix86_target_macros_internal): Check
703         ISA_FLAG for LWP.
704         * config/i386/i386.h (TARGET_LWP): New macro for LWP.
705         * config/i386/i386.opt (-mlwp): New switch for LWP support.
706         * config/i386/i386.c (OPTION_MASK_ISA_LWP_SET): New.
707         (OPTION_MASK_ISA_LWP_UNSET): New.
708         (ix86_handle_option): Handle -mlwp.
709         (isa_opts): Handle -mlwp.
710         (enum pta_flags): Add PTA_LWP.
711         (override_options): Add LWP support.
712         (IX86_BUILTIN_LLWPCB16): New for LWP intrinsic.
713         (IX86_BUILTIN_LLWPCB32): Ditto.
714         (IX86_BUILTIN_LLWPCB64): Ditto.
715         (IX86_BUILTIN_SLWPCB16): Ditto.
716         (IX86_BUILTIN_SLWPCB32): Ditto.
717         (IX86_BUILTIN_SLWPCB64): Ditto.
718         (IX86_BUILTIN_LWPVAL16): Ditto.
719         (IX86_BUILTIN_LWPVAL32): Ditto.
720         (IX86_BUILTIN_LWPVAL64): Ditto.
721         (IX86_BUILTIN_LWPINS16): Ditto.
722         (IX86_BUILTIN_LWPINS32): Ditto.
723         (IX86_BUILTIN_LWPINS64): Ditto.
724         (enum  ix86_special_builtin_type): Add LWP intrinsic support.
725         (builtin_description): Ditto.
726         (ix86_init_mmx_sse_builtins): Ditto.
727         (ix86_expand_special_args_builtin): Ditto.
728         * config/i386/i386.md (UNSPEC_LLWP_INTRINSIC): Add new UNSPEC for
729         LWP support.
730         (UNSPEC_SLWP_INTRINSIC): Ditto.
731         (UNSPECV_LWPVAL_INTRINSIC): Ditto.
732         (UNSPECV_LWPINS_INTRINSIC): Ditto.
733         (lwp_llwpcbhi1): New lwp pattern.
734         (lwp_llwpcbsi1): Ditto.
735         (lwp_llwpcbdi1): Ditto.
736         (lwp_slwpcbhi1): Ditto.
737         (lwp_slwpcbsi1): Ditto.
738         (lwp_slwpcbdi1): Ditto.
739         (lwp_lwpvalhi3): Ditto.
740         (lwp_lwpvalsi3): Ditto.
741         (lwp_lwpvaldi3): Ditto.
742         (lwp_lwpinshi3): Ditto.
743         (lwp_lwpinssi3): Ditto.
744         (lwp_lwpinsdi3): Ditto.
745
746 2009-11-04  Andrew Pinski  <andrew_pinski@playstation.sony.com>
747             Trevor Smigiel <Trevor_Smigiel@playstation.sony.com>
748
749         PR rtl-opt/41833
750         * simplify-rtx.c (simplify_binary_operation_1): Simplify vec_select of
751         a vec_duplicate.
752
753 2009-11-04  Richard Guenther  <rguenther@suse.de>
754             Rafael Avila de Espindola  <espindola@google.com>
755
756         * gcc.c (process_command): Handle arguments name@offset.
757
758 2009-11-04  Harsha Jagasia  <harsha.jagasia@amd.com>
759             Dwarakanath Rajagopal  <dwarak.rajagopal@amd.com>
760
761         * config.gcc (i[34567]86-*-*): Include xopintrin.h.
762         (x86_64-*-*): Ditto.
763         * config/i386/xopintrin.h: New file, provide common x86 compiler
764         intrinisics for XOP.
765         * config/i386/cpuid.h (bit_XOP): Define XOP bit.
766         * config/i386/x86intrin.h: Add XOP check and xopintrin.h.
767         * config/i386/i386-c.c(ix86_target_macros_internal): Check
768         ISA_FLAG for XOP.
769         * config/i386/i386.h(TARGET_XOP): New macro for XOP.
770         * config/i386/i386.opt (-mxop): New switch for XOP support.
771         * config/i386/i386.md (UNSPEC_XOP_UNSIGNED_CMP)
772         (UNSPEC_XOP_TRUEFALSE)
773         (UNSPEC_XOP_PERMUTE)
774         (UNSPEC_FRCZ): Add new UNSPEC for XOP support.
775         (PPERM_*): New constants for vpperm instruction.
776         (xop_pcmov_<mode>): Add XOP conditional mov instructions.
777         * config/i386/i386.c (OPTION_MASK_ISA_XOP_SET): New.
778         (OPTION_MASK_ISA_XOP_UNSET): New.
779         (OPTION_MASK_ISA_XOP_UNSET): Change definition to depend on XOP.
780         (ix86_handle_option): Handle -mxop.
781         (isa_opts): Handle -mxop.
782         (enum pta_flags): Add PTA_XOP.
783         (override_options): Add XOP support.
784         (print_operand): Add code for XOP compare instructions.
785         (ix86_expand_sse_movcc): Extend for XOP conditional move instruction.
786         (ix86_expand_int_vcond): Extend for XOP compare instruction.
787
788         (IX86_BUILTIN_VPCMOV): New for XOP intrinsic.
789         (IX86_BUILTIN_VPCMOV_V2DI): Ditto.
790         (IX86_BUILTIN_VPCMOV_V4SI): Ditto.
791         (IX86_BUILTIN_VPCMOV_V8HI): Ditto.
792         (IX86_BUILTIN_VPCMOV_V16QI): Ditto.
793         (IX86_BUILTIN_VPCMOV_V4SF): Ditto.
794         (IX86_BUILTIN_VPCMOV_V2DF): Ditto.
795
796         (IX86_BUILTIN_VPCMOV256): Ditto.
797         (IX86_BUILTIN_VPCMOV_V4DI256): Ditto.
798         (IX86_BUILTIN_VPCMOV_V8SI256): Ditto.
799         (IX86_BUILTIN_VPCMOV_V16HI256): Ditto.
800         (IX86_BUILTIN_VPCMOV_V32QI256): Ditto.
801         (IX86_BUILTIN_VPCMOV_V8SF256): Ditto.
802         (IX86_BUILTIN_VPCMOV_V4DF256): Ditto.
803
804         (IX86_BUILTIN_VPPERM): Ditto.
805
806         (IX86_BUILTIN_VPMACSSWW): Ditto.
807         (IX86_BUILTIN_VPMACSWW): Ditto.
808         (IX86_BUILTIN_VPMACSSWD): Ditto.
809         (IX86_BUILTIN_VPMACSWD): Ditto.
810         (IX86_BUILTIN_VPMACSSDD): Ditto.
811         (IX86_BUILTIN_VPMACSDD): Ditto.
812         (IX86_BUILTIN_VPMACSSDQL): Ditto.
813         (IX86_BUILTIN_VPMACSSDQH): Ditto.
814         (IX86_BUILTIN_VPMACSDQL): Ditto.
815         (IX86_BUILTIN_VPMACSDQH): Ditto.
816         (IX86_BUILTIN_VPMADCSSWD): Ditto.
817         (IX86_BUILTIN_VPMADCSWD): Ditto.
818
819         (IX86_BUILTIN_VPHADDBW): Ditto.
820         (IX86_BUILTIN_VPHADDBD): Ditto.
821         (IX86_BUILTIN_VPHADDBQ): Ditto.
822         (IX86_BUILTIN_VPHADDWD): Ditto.
823         (IX86_BUILTIN_VPHADDWQ): Ditto.
824         (IX86_BUILTIN_VPHADDDQ): Ditto.
825         (IX86_BUILTIN_VPHADDUBW): Ditto.
826         (IX86_BUILTIN_VPHADDUBD): Ditto.
827         (IX86_BUILTIN_VPHADDUBQ): Ditto.
828         (IX86_BUILTIN_VPHADDUWD): Ditto.
829         (IX86_BUILTIN_VPHADDUWQ): Ditto.
830         (IX86_BUILTIN_VPHADDUDQ): Ditto.
831         (IX86_BUILTIN_VPHSUBBW): Ditto.
832         (IX86_BUILTIN_VPHSUBWD): Ditto.
833         (IX86_BUILTIN_VPHSUBDQ): Ditto.
834
835         (IX86_BUILTIN_VPROTB): Ditto.
836         (IX86_BUILTIN_VPROTW): Ditto.
837         (IX86_BUILTIN_VPROTD): Ditto.
838         (IX86_BUILTIN_VPROTQ): Ditto.
839         (IX86_BUILTIN_VPROTB_IMM): Ditto.
840         (IX86_BUILTIN_VPROTW_IMM): Ditto.
841         (IX86_BUILTIN_VPROTD_IMM): Ditto.
842         (IX86_BUILTIN_VPROTQ_IMM): Ditto.
843
844         (IX86_BUILTIN_VPSHLB): Ditto.
845         (IX86_BUILTIN_VPSHLW): Ditto.
846         (IX86_BUILTIN_VPSHLD): Ditto.
847         (IX86_BUILTIN_VPSHLQ): Ditto.
848         (IX86_BUILTIN_VPSHAB): Ditto.
849         (IX86_BUILTIN_VPSHAW): Ditto.
850         (IX86_BUILTIN_VPSHAD): Ditto.
851         (IX86_BUILTIN_VPSHAQ): Ditto.
852
853         (IX86_BUILTIN_VFRCZSS): Ditto.
854         (IX86_BUILTIN_VFRCZSD): Ditto.
855         (IX86_BUILTIN_VFRCZPS): Ditto.
856         (IX86_BUILTIN_VFRCZPD): Ditto.
857         (IX86_BUILTIN_VFRCZPS256): Ditto.
858         (IX86_BUILTIN_VFRCZPD256): Ditto.
859
860         (IX86_BUILTIN_VPCOMEQUB): Ditto.
861         (IX86_BUILTIN_VPCOMNEUB): Ditto.
862         (IX86_BUILTIN_VPCOMLTUB): Ditto.
863         (IX86_BUILTIN_VPCOMLEUB): Ditto.
864         (IX86_BUILTIN_VPCOMGTUB): Ditto.
865         (IX86_BUILTIN_VPCOMGEUB): Ditto.
866         (IX86_BUILTIN_VPCOMFALSEUB): Ditto.
867         (IX86_BUILTIN_VPCOMTRUEUB): Ditto.
868
869         (IX86_BUILTIN_VPCOMEQUW): Ditto.
870         (IX86_BUILTIN_VPCOMNEUW): Ditto.
871         (IX86_BUILTIN_VPCOMLTUW): Ditto.
872         (IX86_BUILTIN_VPCOMLEUW): Ditto.
873         (IX86_BUILTIN_VPCOMGTUW): Ditto.
874         (IX86_BUILTIN_VPCOMGEUW): Ditto.
875         (IX86_BUILTIN_VPCOMFALSEUW): Ditto.
876         (IX86_BUILTIN_VPCOMTRUEUW): Ditto.
877
878         (IX86_BUILTIN_VPCOMEQUD): Ditto.
879         (IX86_BUILTIN_VPCOMNEUD): Ditto.
880         (IX86_BUILTIN_VPCOMLTUD): Ditto.
881         (IX86_BUILTIN_VPCOMLEUD): Ditto.
882         (IX86_BUILTIN_VPCOMGTUD): Ditto.
883         (IX86_BUILTIN_VPCOMGEUD): Ditto.
884         (IX86_BUILTIN_VPCOMFALSEUD): Ditto.
885         (IX86_BUILTIN_VPCOMTRUEUD): Ditto.
886
887         (IX86_BUILTIN_VPCOMEQUQ): Ditto.
888         (IX86_BUILTIN_VPCOMNEUQ): Ditto.
889         (IX86_BUILTIN_VPCOMLTUQ): Ditto.
890         (IX86_BUILTIN_VPCOMLEUQ): Ditto.
891         (IX86_BUILTIN_VPCOMGTUQ): Ditto.
892         (IX86_BUILTIN_VPCOMGEUQ): Ditto.
893         (IX86_BUILTIN_VPCOMFALSEUQ): Ditto.
894         (IX86_BUILTIN_VPCOMTRUEUQ): Ditto.
895
896         (IX86_BUILTIN_VPCOMEQB): Ditto.
897         (IX86_BUILTIN_VPCOMNEB): Ditto.
898         (IX86_BUILTIN_VPCOMLTB): Ditto.
899         (IX86_BUILTIN_VPCOMLEB): Ditto.
900         (IX86_BUILTIN_VPCOMGTB): Ditto.
901         (IX86_BUILTIN_VPCOMGEB): Ditto.
902         (IX86_BUILTIN_VPCOMFALSEB): Ditto.
903         (IX86_BUILTIN_VPCOMTRUEB): Ditto.
904
905         (IX86_BUILTIN_VPCOMEQW): Ditto.
906         (IX86_BUILTIN_VPCOMNEW): Ditto.
907         (IX86_BUILTIN_VPCOMLTW): Ditto.
908         (IX86_BUILTIN_VPCOMLEW): Ditto.
909         (IX86_BUILTIN_VPCOMGTW): Ditto.
910         (IX86_BUILTIN_VPCOMGEW): Ditto.
911         (IX86_BUILTIN_VPCOMFALSEW): Ditto.
912         (IX86_BUILTIN_VPCOMTRUEW): Ditto.
913
914         (IX86_BUILTIN_VPCOMEQD): Ditto.
915         (IX86_BUILTIN_VPCOMNED): Ditto.
916         (IX86_BUILTIN_VPCOMLTD): Ditto.
917         (IX86_BUILTIN_VPCOMLED): Ditto.
918         (IX86_BUILTIN_VPCOMGTD): Ditto.
919         (IX86_BUILTIN_VPCOMGED): Ditto.
920         (IX86_BUILTIN_VPCOMFALSED): Ditto.
921         (IX86_BUILTIN_VPCOMTRUED): Ditto.
922
923         (IX86_BUILTIN_VPCOMEQQ): Ditto.
924         (IX86_BUILTIN_VPCOMNEQ): Ditto.
925         (IX86_BUILTIN_VPCOMLTQ): Ditto.
926         (IX86_BUILTIN_VPCOMLEQ): Ditto.
927         (IX86_BUILTIN_VPCOMGTQ): Ditto.
928         (IX86_BUILTIN_VPCOMGEQ): Ditto.
929         (IX86_BUILTIN_VPCOMFALSEQ): Ditto.
930         (IX86_BUILTIN_VPCOMTRUEQ): Ditto.
931
932         (enum multi_arg_type): New enum for describing the various XOP
933         intrinsic argument types.
934         (bdesc_multi_arg): New table for XOP intrinsics.
935         (ix86_init_mmx_sse_builtins): Add XOP intrinsic support.
936         (ix86_expand_multi_arg_builtin): New function for creating XOP
937         intrinsics.
938
939         * config/i386/sse.md (sserotatemax): New mode attribute for XOP.
940         (xop_pmacsww): Ditto.
941         (xop_pmacssww): Ditto.
942         (xop_pmacsdd): Ditto.
943         (xop_pmacssdd): Ditto.
944         (xop_pmacssdql): Ditto.
945         (xop_pmacssdqh): Ditto.
946         (xop_pmacsdql): Ditto.
947         (xop_pmacsdql_mem): Ditto.
948         (xop_mulv2div2di3_low): Ditto.
949         (xop_pmacsdqh): Ditto.
950         (xop_pmacsdqh_mem): Ditto.
951         (xop_mulv2div2di3_high): Ditto.
952         (xop_pmacsswd): Ditto.
953         (xop_pmacswd): Ditto.
954         (xop_pmadcsswd): Ditto.
955         (xop_pmadcswd): Ditto.
956         (xop_pcmov_<mode>): Ditto.
957         (xop_pcmov_<mode>256): Ditto.
958         (xop_phaddbw): Ditto.
959         (xop_phaddbd): Ditto.
960         (xop_phaddbq): Ditto.
961         (xop_phaddwd): Ditto.
962         (xop_phaddwq): Ditto.
963         (xop_phadddq): Ditto.
964         (xop_phaddubw): Ditto.
965         (xop_phaddubd): Ditto.
966         (xop_phaddubq): Ditto.
967         (xop_phadduwd): Ditto.
968         (xop_phadduwq): Ditto.
969         (xop_phaddudq): Ditto.
970         (xop_phsubbw): Ditto.
971         (xop_phsubwd): Ditto.
972         (xop_phsubdq): Ditto.
973         (xop_pperm): Ditto.
974         (rotl<mode>3): Ditto.
975         (rotr<mode>3): Ditto.
976         (xop_rotl<mode>3): Ditto.
977         (xop_rotr<mode>3): Ditto.
978         (vrotr<mode>3): Ditto.
979         (vrotl<mode>3): Ditto.
980         (xop_vrotl<mode>3): Ditto.
981         (vlshr<mode>3): Ditto.
982         (vashr<mode>3): Ditto.
983         (vashl<mode>3
984         (xop_ashl<mode>3): Ditto.
985         (xop_lshl<mode>3): Ditto.
986         (ashlv16qi3): Ditto.
987         (lshlv16qi3): Ditto.
988         (ashrv16qi3): Ditto.
989         (ashrv2di3): Ditto.
990         (xop_frcz<mode>2): Ditto.
991         (xop_vmfrcz<mode>2): Ditto.
992         (xop_frcz<mode>2256): Ditto.
993         (xop_maskcmp<mode>3): Ditto.
994         (xop_maskcmp_uns<mode>3): Ditto.
995         (xop_maskcmp_uns2<mode>3): Ditto.
996         (xop_pcom_tf<mode>3): Ditto.
997
998         * doc/invoke.texi (-mxop): Add documentation.
999         * doc/extend.texi (x86 intrinsics): Add XOP intrinsics.
1000
1001 2009-11-03  Mark Mitchell  <mark@codesourcery.com>
1002
1003         PR driver/11810
1004         * gcc.c (SWITCHES_NEED_SPACES): Define to "o".
1005         * config/alpha/osf.h (SWITCHES_NEED_SPACES): Remove here.
1006         * config/mips/iris.h (SWITCHES_NEED_SPACES): Remove here.
1007
1008 2009-11-04  Richard Earnshaw  <rearnsha@arm.com>
1009
1010         PR target/40835
1011         * arm.md (peephole2 patterns for move and compare): New.
1012
1013 2009-11-04  Nick Clifton  <nickc@redhat.com>
1014
1015         * defaults.h (CONSTANT_ADDRESS_P): Provide a default definition.
1016         Make sure that it does not allow CONST_DOUBLEs.
1017         * doc/tm.texi (CONSTANT_ADDRESS_P): Update description.
1018         * config/avr/avr.h (CONSTANT_ADDRESS_P): Delete.
1019         * config/bfin/bfin.h (CONSTANT_ADDRESS_P): Delete.
1020         * config/cris/cris.h (CONSTANT_ADDRESS_P): Delete.
1021         * config/fr30/fr30.h (CONSTANT_ADDRESS_P): Delete.
1022         * config/frv/frv.h (CONSTANT_ADDRESS_P): Delete.
1023         * config/m32c/m32c.h (CONSTANT_ADDRESS_P): Delete.
1024         * config/m68hc11/m68hc11.h (CONSTANT_ADDRESS_P): Delete.
1025         * config/mep/mep.h (CONSTANT_ADDRESS_P): Delete.
1026         * config/mn10300/mn10300.h (CONSTANT_ADDRESS_P): Delete.
1027         * config/moxie/moxie.h (CONSTANT_ADDRESS_P): Delete.
1028         * config/pdp11/pdp11.h (CONSTANT_ADDRESS_P): Delete.
1029         * config/picochip/picochip.h (CONSTANT_ADDRESS_P): Delete.
1030         * config/score/score.h (CONSTANT_ADDRESS_P): Delete.
1031         * config/stormy16/stormy16.h (CONSTANT_ADDRESS_P): Delete.
1032
1033 2009-11-04  Richard Guenther  <rguenther@suse.de>
1034
1035         PR tree-optimization/41919
1036         * tree-vrp.c (test_for_singularity): Properly compare values.
1037
1038 2009-11-04  Revital Eres  <eres@il.ibm.com>
1039
1040         * tree-vect-data-refs.c (vect_enhance_data_refs_alignment):
1041         Consider peeling for alignment only for stores and remove
1042         redundant assignment.
1043
1044 2009-11-04  Maxim Kuvyrkov  <maxim@codesourcery.com>
1045
1046         PR target/41302
1047         * config/m68k/m68k.c (m68k_reg_present_p): New static function.
1048         (m68k_ok_for_sibcall_p): Handle different result return locations.
1049
1050 2009-11-04  Richard Guenther  <rguenther@suse.de>
1051
1052         * c-opts.c (c_common_post_options): Move LTO option processing
1053         code ...
1054         * opts.c (decode_options): ... here.
1055
1056 2009-11-04  Jakub Jelinek  <jakub@redhat.com>
1057
1058         * c-common.c (fold_offsetof_1): Use %wd instead of
1059         HOST_WIDE_INT_PRINT_DEC.
1060
1061 2009-11-04  Maciej W. Rozycki  <macro@linux-mips.org>
1062
1063         * config/vax/linux.h (TARGET_OS_CPP_BUILTINS): Don't define
1064         __pic__ or __PIC__.
1065
1066 2009-11-04  Maciej W. Rozycki  <macro@linux-mips.org>
1067
1068         * config.gcc (vax-*-linux*): Keep the original contents of
1069         tmake_file while adding vax/t-linux.
1070
1071 2009-11-03  Eric Botcazou  <ebotcazou@adacore.com>
1072
1073         PR target/10127
1074         PR ada/20548
1075         * expr.h (STACK_CHECK_PROBE_INTERVAL): Delete.
1076         (STACK_CHECK_PROBE_INTERVAL_EXP): New macro.
1077         (STACK_CHECK_MOVING_SP): Likewise.
1078         * system.h (STACK_CHECK_PROBE_INTERVAL): Poison it.
1079         * doc/tm.texi (Stack Checking): Delete STACK_CHECK_PROBE_INTERVAL.
1080         Document STACK_CHECK_PROBE_INTERVAL_EXP and STACK_CHECK_MOVING_SP.
1081         * doc/md.texi (Standard Pattern Names): Tweak entry of CHECK_STACK.
1082         Document PROBE_STACK.
1083         * explow.c (anti_adjust_stack_and_probe): New function.
1084         (allocate_dynamic_stack_space): Do not directly allocate space if
1085         STACK_CHECK_MOVING_SP, instead invoke above function.
1086         (emit_stack_probe): Handle probe_stack insn.
1087         (PROBE_INTERVAL): New macro.
1088         (STACK_GROW_OPTAB): Likewise.
1089         (STACK_GROW_OFF): Likewise.
1090         (probe_stack_range): Use Pmode and memory_address consistently.  Fix
1091         loop condition in the small constant case.  Rewrite in the general
1092         case to be immune to wraparounds.  Make sure the address of probes
1093         is valid.  Try to use [base + disp] addressing mode if possible.
1094         * ira.c (setup_eliminable_regset): Set frame_pointer_needed if stack
1095         checking is enabled and STACK_CHECK_MOVING_SP.
1096         * rtlanal.c (may_trap_p_1) <MEM>: If stack checking is enabled,
1097         return 1 for volatile references to the stack pointer.
1098         * tree.c (build_common_builtin_nodes): Do not set ECF_NOTHROW on
1099         __builtin_alloca if stack checking is enabled.
1100         * unwind-dw2.c (uw_identify_context): Take into account whether the
1101         context is that of a signal frame or not.
1102         * config/i386/linux.h (STACK_CHECK_MOVING_SP): Define to 1.
1103         * config/i386/linux64.h (STACK_CHECK_MOVING_SP): Likewise.
1104
1105 2009-11-03  Jakub Jelinek  <jakub@redhat.com>
1106
1107         PR rtl-optimization/41917
1108         * rtlanal.c (num_sign_bit_copies1) <case UMOD>: If sign bit of second
1109         operand isn't known to be 0, return 1.
1110
1111 2009-11-03  Richard Sandiford  <rdsandiford@googlemail.com>
1112
1113         * config/mips/mips.md: Fix typos.
1114
1115 2009-11-03  Richard Sandiford  <rdsandiford@googlemail.com>
1116
1117         * doc/invoke.texi: Fix typo.
1118
1119 2009-11-03  Paul Brook  <paul@codesourcery.com>
1120
1121         * config/arm/neon.ml (vectype): Add T_floatSF.
1122         (string_of_vectype): Ditto.
1123         * config/arm/neon-gen.ml (signed_ctype): Add T_floatSF.
1124         (deftypes): Use float for float32_t.
1125         * config/arm/arm_neon.h: Regenerate.
1126
1127 2009-11-03  Nick Clifton  <nickc@redhat.com>
1128             Kevin Buettner  <kevinb@redhat.com>
1129
1130         * config/rx/predicates.md (rx_store_multiple_vector): Reverse
1131         order of expected registers.
1132         (rx_load_multiple_vector): Likewise.
1133         (rx_rtsd_vector): Likewise.
1134         * config/rx/rx.c (rx_cpu_type): New variable.
1135         (rx_print_operand): Fix bug printing 64-bit constant values.
1136         (rx_emit_stack_pushm): Reverse order of pushed registers.
1137         (gen_rx_store_vector): Likewise.
1138         (is_fast_interrupt_func): Only accept "fast_interrupt" as the
1139         attribute name.
1140         (is_exception_func): Rename to is_interrupt_func and only accept
1141         "interrupt" as the attribute name.
1142         (rx_get_stack_layout): Use new function name.
1143         (rx_func_attr_inlinable): Likewise.
1144         (rx_attribute_table): Remove "exception".
1145         (rx_expand_prologue): If necessary push the accumulator register
1146         in the prologue of interrupt functions.
1147         (rx_expand_epilogue): If necessary pop the accumulator.
1148         (rx_builtins): Add RX_BUILTIN_MVTIPL.
1149         (rx_expand_builtin_stz): Remove.
1150         (rx_expand_builtin_mvtipl): New function.
1151         (rx_init_builtins): Handle RX_BUILTIN_MVTIPL.
1152         (rx_expand_builtin): Likewise.
1153         (rx_enable_fpu): New variable.
1154         (rx_handle_option): Handle -fpu, -nofpu, -mcpu and -patch.
1155         * config/rx/rx.h (TARGET_CPU_CPP_BUILTINS): Assert machine based
1156         on rx_cpu_type.  Define __RX_FPU_INSNS__ if FPU insns are allowed.
1157         (enum rx_cpu_types): Define.
1158         (ASM_SPEC): Pass -m32bit-doubles on to assembler.
1159         (INCOMING_FRAME_SP_OFFSET): Define.
1160         (ARG_POINTER_CFA_OFFSET): Define.
1161         (FRAME_POINTER_CFA_OFFSET): Define.
1162         (OVERRIDE_OPTIONS): Enable fast math if RX FPU insns are enabled.
1163         (ALLOW_RX_FPU_INSNS): Define.
1164         * config/rx/rx.md: Test ALLOW_RX_FPU_INSNS instead of
1165         fast_math_flags_set_p.
1166         (UNSPEC_BUILTIN_MVTIPL): Define.
1167         (revl): Rename to bswapsi2.
1168         (bswaphi2): New pattern.
1169         (mvtachi): Mark as volatile because it uses a register unknown to GCC.
1170         (mvtaclo): Likewise.
1171         (racw): Likewise.
1172         (mvtc): Remove clobber of cc0.
1173         (mvtcp): Delete.
1174         (opecp): Delete.
1175         * config/rx/rx.opt (mieee): Remove.
1176         (fpu): Add.
1177         (nofpu): Add.
1178         (mcpu=): Add.
1179         (patch=): Add.
1180         (msave-acc-in-interrupts): Add.
1181         * config/rx/t-rx (MULTILIB_OPTIONS): Change default to 64bit doubles.
1182         (MULTILIB_DIRS): Likewise.
1183         (MULTILIB_MATCHES): Treat -fpu as an alias for -m32bit-doubles.
1184         * doc/extend.texi: Remove description of "exception" function
1185         attribute.
1186         * doc/invoke.texi: Document -fpu, -nofpu, -mcpu=, -patch= and
1187         -msave-acc-in-interrupts options.
1188
1189 2009-11-03  Richard Guenther  <rguenther@suse.de>
1190
1191         * c-common.c (fold_offsetof_1): Use HOST_WIDE_INT_PRINT_DEC.
1192
1193 2009-11-03  Dodji Seketeli  <dodji@redhat.com>
1194
1195         PR c++/38699
1196         * c-common.c (fold_offsetof_1): Issue errors when the member
1197         designator of the offsetof expression is not legitimate.
1198
1199 2009-11-03  Uros Bizjak  <ubizjak@gmail.com>
1200
1201         * config/i386/i386.md (*call_value_1_rex64_ms_sysv): Use register
1202         names instead of numerical constants.
1203         (sse_prologue_save): Ditto.
1204         (*sse_prologue_save_insn): Ditto.
1205
1206 2009-11-03  Uros Bizjak  <ubizjak@gmail.com>
1207
1208         PR target/41900
1209         * config/i386/i386.h (ix86_arch_indices) <X86_ARCH_CALL_ESP>: New.
1210         (TARGET_CALL_ESP): New define.
1211         * config/i386/i386.c (initial_ix86_tune_features): Initialize
1212         X86_ARCH_CALL_ESP.
1213         * config/i386/i386.md (*call_pop_1_esp, *call_1_esp,
1214         *call_value_pop_1_esp, *call_value_1_esp): Rename from *call_pop_1,
1215         *call_1, *call_value_pop_1 and *call_value_1.  Depend on
1216         TARGET_CALL_ESP.
1217         (*call_pop_1, *call_1, *call_value_pop_1, *call_value_1):
1218         New patterns, use "lsm" as operand 1 constraint.
1219         * config/i386/predicates.md (call_insn_operand): Depend on
1220         index_register_operand for !TARGET_CALL_ESP to avoid %esp register.
1221
1222 2009-11-02  Ulrich Weigand  <Ulrich.Weigand@de.ibm.com>
1223
1224         PR tree-optimization/41857
1225         * tree-flow.h (rewrite_use_address): Add BASE_HINT argument.
1226         * tree-ssa-loop-ivopts.c (rewrite_use_address): Pass base hint
1227         to create_mem_ref.
1228         * tree-ssa-address.c (move_hint_to_base): New function.
1229         (most_expensive_mult_to_index): Add TYPE argument.  Use mode and
1230         address space associated with TYPE.
1231         (addr_to_parts): Add TYPE and BASE_HINT arguments.  Pass TYPE to
1232         most_expensive_mult_to_index.  Call move_hint_to_base.
1233         (create_mem_ref): Add BASE_HINT argument.  Pass BASE_HINT and
1234         TYPE to addr_to_parts.
1235
1236 2009-11-02  Martin Jambor  <mjambor@suse.cz>
1237
1238         PR tree-optimization/41750
1239         * tree-sra.c (analyze_modified_params): Loop over all
1240         representatives of components of a parameter.
1241
1242 2009-11-02  Jakub Jelinek  <jakub@redhat.com>
1243
1244         PR tree-optimization/41841
1245         * ipa-struct-reorg.c (build_data_structure): Don't attempt to look at
1246         local variables of not yet materialized clones.
1247
1248         PR debug/41893
1249         * cfgexpand.c (expand_debug_expr): Don't attempt to create DECL_RTL
1250         for a VOIDmode variable.
1251
1252         PR c++/41774
1253         * c-pragma.c (visstack): Change into vector of ints rather than
1254         enum symbol_visibility.
1255         (push_visibility): Add kind argument, push default_visibility together
1256         with kind.
1257         (pop_visibility): Add kind argument, return true if successful, fail
1258         if visibility stack is empty or if stack top is of different kind.
1259         (handle_pragma_visibility): Don't check length of visstack, instead
1260         call pop_visibility and issue diagnostics if it failed.  Pass 0
1261         as last argument to push_visibility and pop_visibility.
1262         * c-pragma.h (push_visibility): Add kind argument.
1263         (pop_visibility): Likewise.  Return bool instead of void.
1264
1265 2009-11-01  Eric Botcazou  <ebotcazou@adacore.com>
1266
1267         * tree.def (TARGET_MEM_REF): Update comment.
1268         * alias.c (get_alias_set): Retrieve the original memory reference for
1269         a TARGET_MEM_REF before proceeding.
1270
1271 2009-10-31  Anatoly Sokolov  <aesok@post.ru>
1272
1273         * config/frv/frv.c (frv_function_value, frv_libcall_value,
1274         frv_function_value_regno_p): New functions.
1275         (TARGET_FUNCTION_VALUE, TARGET_LIBCALL_VALUE): Declare.
1276         * config/frv/frv.h (FUNCTION_VALUE, LIBCALL_VALUE): Remove.
1277         (FUNCTION_VALUE_REGNO_P): Redefine, use frv_function_value_regno_p.
1278         * config/frv/frv-protos.h (frv_function_value_regno_p): Declare.
1279
1280 2009-10-31  Anatoly Sokolov  <aesok@post.ru>
1281
1282         * config/mn10300/mn10300.c (mn10300_function_value): Make static, add
1283         new 'outgoing' argument.
1284         (mn10300_libcall_value, mn10300_function_value_regno_p): New functions.
1285         (TARGET_FUNCTION_VALUE, TARGET_LIBCALL_VALUE): Declare.
1286         * config/mn10300/mn10300.h (FUNCTION_VALUE, FUNCTION_OUTGOING_VALUE,
1287         LIBCALL_VALUE): Remove.
1288         (FUNCTION_VALUE_REGNO_P): Redefine, use mn10300_function_value_regno_p.
1289         * config/mn10300/mn10300-protos.h (mn10300_function_value): Remove.
1290         (mh10300_function_value_regno_p): Declare.
1291
1292 2009-10-31  Ramana Radhakrishnan  <ramana.radhakrishnan@arm.com>
1293
1294         * config/arm/cortex-a9.md: New - integer pipeline description.
1295
1296 2009-10-31  Eric Botcazou  <ebotcazou@adacore.com>
1297
1298         * tree-ssa-sccvn.c (vn_reference_lookup_3): Bail out instead of
1299         aborting if the sizes of the two references don't match.
1300
1301 2009-10-31  Toon Moene  <toon@moene.org>
1302
1303         * ipa-inline.c (cgraph_decide_inlining):
1304         Include reason for not inlining called-once functions in dump file.
1305
1306 2009-10-30  Daniel Gutson  <dgutson@codesourcery.com>
1307
1308         * config/arm/linux-eabi.h (LINK_SPEC): BE8_LINK_SPEC added.
1309         * config/arm/bpapi.h (BE8_LINK_SPEC): New define.
1310         (LINK_SPEC): BE_LINK_SPEC added.
1311
1312 2009-10-30  Richard Guenther  <rguenther@suse.de>
1313
1314         PR lto/41858
1315         * lto-streamer.h (struct lto_file_decl_data): Remove fd member.
1316
1317 2009-10-30  Nathan Sidwell  <nathan@codesourcery.com>
1318
1319         * target-def.h (TARGET_ASM_TTYPE): Correct typo of TARGET_ARM_TTYPE.
1320         * config/arm/unwind-arm.c (__gnu_Unwind_Backtrace): Remove unused
1321         label.
1322
1323 2009-10-30  Martin Jambor  <mjambor@suse.cz>
1324
1325         * tree-sra.c (build_ref_for_offset_1): Remove a comment.
1326
1327 2009-10-30  H.J. Lu  <hongjiu.lu@intel.com>
1328
1329         PR target/40838
1330         * cfgexpand.c (expand_stack_alignment): Call update_stack_boundary
1331         first.  Move assert on stack_alignment_estimated just before
1332         setting stack_realign_needed.
1333         (gimple_expand_cfg): Initialize stack_alignment_estimated to 0.
1334         Don't call update_stack_boundary.
1335
1336         * config/i386/i386.c (ix86_minimum_incoming_stack_boundary): New.
1337         (verride_options): Don't check ix86_force_align_arg_pointer here.
1338         (ix86_function_ok_for_sibcall): Use it.
1339         (ix86_update_stack_boundary): Likewise.
1340
1341         * config/i386/i386.h (STACK_REALIGN_DEFAULT): Update comments.
1342
1343 2009-10-30  Richard Earnshaw  <rearnsha@arm.com>
1344
1345         * arm.md (QHSI): New mode iterator.
1346         (movqi): If generating for thumb, then truncate any immediate to
1347         8 bits.
1348         * thumb2.md (thumb2_movsi_shortim and peephole2 generator): Replace
1349         with...
1350         (thumb2_mov<mode>_shortim and peephole2 generator): ... iterator based
1351         version.
1352
1353 2009-10-29  Cary Coutant  <ccoutant@google.com>
1354
1355         PR debug/41700
1356         * dwarf2out.c (dwarf2_debug_hooks): Add entries for new hook (two
1357         locations in the source).
1358         (store_vcall_insn): New function.
1359         (lookup_vcall_insn): New function.
1360         (dwarf2out_virtual_call_token): Use store_vcall_insn.
1361         (dwarf2out_copy_call_info): New function.
1362         (dwarf2out_virtual_call): Use lookup_vcall_insn.
1363         * emit-rtl.c (try_split): Call copy_call_info debug hook.
1364         * debug.h (struct gcc_debug_hooks): Add copy_call_info hook.
1365         * debug.c (do_nothing_debug_hooks): Add dummy entry for new hook.
1366         (debug_nothing_rtx_rtx): New dummy hook.
1367         * dbxout.c (dbx_debug_hooks): Add dummy entry for new hook.
1368         (xcoff_debug_hooks): Likewise.
1369         * sdbout.c (sdb_debug_hooks): Likewise.
1370         * vmsdbgout.c (vmsdbg_debug_hooks): Likewise.
1371
1372 2009-10-29  David Daney  <ddaney@caviumnetworks.com>
1373
1374         * doc/invoke.texi (mmcount-ra-address): Document new command line
1375         option.
1376         * config/mips/mips.opt (mmcount-ra-address): New option.
1377         * config/mips/mips-protos.h (mips_function_profiler): Declare new
1378         function.
1379         * config/mips/mips.c (struct mips_frame_info): Add ra_fp_offset
1380         member.
1381         (mips_for_each_saved_gpr_and_fpr): Set ra_fp_offset.
1382         (mips_function_profiler): Moved from FUNCTION_PROFILER, and
1383         rewritten.
1384         * config/mips/mips.h (FUNCTION_PROFILER): Body of macro moved to
1385         mips_function_profiler.
1386
1387 2009-10-29  Steve Ellcey  <sje@cup.hp.com>
1388
1389         PR middle-end/37565
1390         PR target/38018
1391         * doc/tm.texi (OVERRIDE_OPTIONS): Update.
1392         (TARGET_OVERRIDE_OPTIONS_AFTER_CHANGE): New.
1393         * optc-gen.awk (cl_target_option_restore): Include call to
1394         targetm.override_options_after_change.
1395         * target-def.h (TARGET_OVERRIDE_OPTIONS_AFTER_CHANGE): New.
1396         * target.h (override_options_after_change): New.
1397         * c-common.c (parse_optimize_options): Call
1398         targetm.override_options_after_change.
1399         * config/ia64/ia64.c (TARGET_OVERRIDE_OPTIONS_AFTER_CHANGE): New.
1400         (ia64_override_options_after_change): New.
1401         (ia64_override_options) Add call to above.
1402
1403 2009-10-29  Michael Matz  <matz@suse.de>
1404
1405         * tree-ssa-math-opts.c (execute_convert_to_rsqrt): Remove.
1406         (gate_convert_to_rsqrt): Ditto.
1407         (pass_convert_to_rsqrt): Ditto.
1408         * tree-pass.h (pass_convert_to_rsqrt): Don't declare.
1409         * passes.c (init_optimization_passes): Don't add pass_convert_to_rsqrt
1410         to pass list.
1411
1412         * config/i386/i386.c (ix86_emit_swdivsf): Change evaluation order.
1413
1414 2009-10-29  Ramana Radhakrishnan  <ramana.radhakrishnan@arm.com>
1415
1416         * config/arm/arm.c (find_best_start): Fix type of remainder to be
1417         unsigned.
1418
1419 2009-10-29  Martin Jambor  <mjambor@suse.cz>
1420
1421         PR tree-optimization/41775
1422         * tree-sra.c (build_ref_for_offset): Unshare *expr if not NULL.
1423         (generate_subtree_copies): Do not unshare agg.
1424         (load_assign_lhs_subreplacements): Do not unshare rhs.
1425         (sra_modify_assign): Do not unshare exprs.
1426         (propagate_subacesses_accross_link): Renamed to
1427         propagate_subaccesses_across_link.
1428
1429 2009-10-29  Richard Earnshaw  <rearnsha@arm.com>
1430
1431         * arm.c (count_insns_for_constant): Rework to support counting for
1432         thumb2 immediates as well.
1433         (find_best_start): Split out from arm_gen_constant.
1434         (arm_gen_constant): Rework to support XOR with immediate.
1435
1436 2009-10-29  Chao-ying Fu  <fu@mips.com>
1437
1438         * config/mips/mips.c (mips_emit_unary, mips_force_unary): New
1439         functions.
1440         (mips_expand_synci_loop):  Use the length rtx to control the
1441         synci loop from the begin rtx that points to the first byte of
1442         the cache line.
1443
1444 2009-10-28  Rafael Avila de Espindola  <espindola@google.com>
1445
1446         * doc/invoke.texi: Rename -use-linker-plugin -fuse-linker-plugin.
1447
1448 2009-10-28  Rafael Avila de Espindola  <espindola@google.com>
1449
1450         * dbxout.c (dbxout_common_check): Accept non public trees.
1451         * dwarf2out.c (fortran_common): Accept non public trees.
1452
1453 2009-10-28  Rafael Avila de Espindola  <espindola@google.com>
1454
1455         * common.opt (fuse-linker-plugin): New option.
1456         * gcc.c (LINK_COMMAND_SPEC, main): Rename use-linker-plugin to
1457         fuse-linker-plugin.
1458         * opts.c (common_handle_option): Ignore OPT_fuse_linker_plugin.
1459
1460 2009-10-28  Paolo Bonzini  <bonzini@gnu.org>
1461
1462         PR rtl-optimization/39715
1463         * config/arm/arm.md (cstoresi4): Use gen_cstoresi_ltu_thumb1.
1464         (gen_cstoresi_ltu_thumb1): New splitter.
1465
1466 2009-10-28  Richard Guenther  <rguenther@suse.de>
1467
1468         PR lto/41808
1469         PR lto/41839
1470         * tree-ssa.c (useless_type_conversion_p): Do not treat
1471         conversions to pointers to incomplete types as useless.
1472         * gimple.c (gimple_types_compatible_p): Compare struct tags,
1473         not typedef names.
1474
1475 2009-10-28  Jakub Jelinek  <jakub@redhat.com>
1476
1477         * var-tracking.c (emit_note_insn_var_location): Don't call the second
1478         vt_expand_loc unnecessarily when location is not a register nor
1479         memory.
1480
1481         PR middle-end/41837
1482         * ipa-struct-reorg.c (find_field_in_struct_1): Return NULL if
1483         fields don't have DECL_NAME.
1484
1485         PR debug/41801
1486         * builtins.c (get_builtin_sync_mem): Expand loc in ptr_mode,
1487         call convert_memory_address on addr.
1488
1489         PR target/41762
1490         * config/i386/i386.c (ix86_pic_register_p): Don't call
1491         rtx_equal_for_cselib_p for VALUEs discarded as useless.
1492
1493 2009-10-28  Richard Sandiford  <rdsandiford@googlemail.com>
1494
1495         * var-tracking.c (emit_note_insn_var_location): Get the mode of
1496         a variable part from its REG, MEM or VALUE.
1497
1498 2009-10-28  Richard Guenther  <rguenther@suse.de>
1499
1500         * gimple.c (gimple_get_alias_set): Fix comment typo.
1501
1502 2009-10-28  Richard Guenther  <rguenther@suse.de>
1503
1504         * tree.c (free_lang_data_in_type): Do not call get_alias_set.
1505         (free_lang_data): Unconditionally compute alias sets for all
1506         standard integer types.  Bail out if gate bailed out previously.
1507         Do not reset the types_compatible_p langhook.
1508         (gate_free_lang_data): Remove.
1509         (struct pass_ipa_free_lang_data): Enable unconditionally.
1510         * gimple.c (gimple_get_alias_set): Use the same alias-set for
1511         all pointer types.
1512
1513 2009-10-28  Richard Guenther  <rguenther@suse.de>
1514
1515         PR middle-end/41855
1516         * tree-ssa-alias.c (refs_may_alias_p_1): Deal with CONST_DECLs
1517         (ref_maybe_used_by_call_p_1): Fix bcopy handling.
1518         (call_may_clobber_ref_p_1): Likewise.
1519         * tree-ssa-structalias.c (find_func_aliases): Likewise.
1520         * alias.c (nonoverlapping_memrefs_p): Deal with CONST_DECLs.
1521
1522 2009-10-28  Paolo Bonzini  <bonzini@gnu.org>
1523
1524         PR rtl-optimization/41812
1525
1526         Revert:
1527         2009-06-27  Paolo Bonzini  <bonzini@gnu.org>
1528
1529         * df-problems.c (df_md_scratch): New.
1530         (df_md_alloc, df_md_free): Allocate/free it.
1531         (df_md_local_compute): Only include live registers in init.
1532         (df_md_transfer_function): Prune the in-set computed by
1533         the confluence function, and the gen-set too.
1534
1535 2009-10-28  Paolo Bonzini  <bonzini@gnu.org>
1536
1537         PR rtl-optimization/39715
1538         * combine.c (simplify_comparison): Use extensions to
1539         widen comparisons.  Try an ANDing first.
1540
1541 2009-10-28  Paolo Bonzini  <bonzini@gnu.org>
1542
1543         PR rtl-optimization/40741
1544         * config/arm/arm.c (thumb1_rtx_costs): IOR or XOR with
1545         a small constant is cheap.
1546         * config/arm/arm.md (andsi3, iorsi3): Try to place the result of
1547         force_reg on the LHS.
1548         (xorsi3): Likewise, and split the XOR if the constant is complex
1549         and not in Thumb mode.
1550
1551 2009-10-28  Paolo Bonzini  <bonzini@gnu.org>
1552
1553         * expmed.c (emit_store_flag): Check costs before
1554         transforming to the opposite representation.
1555
1556 2009-10-28  Paolo Bonzini  <bonzini@gnu.org>
1557
1558         * config/sh/sh.md (cbranchfp4_media): Remove hack extending
1559         cstore result to DImode.
1560
1561 2009-10-28  Kaz Kojima  <kkojima@gcc.gnu.org>
1562
1563         * config/sh/sh.md (stuff_delay_slot): Move const_int pattern
1564         inside the unspec vector.
1565
1566 2009-10-27  Richard Henderson  <rth@redhat.com>
1567
1568         * cgraphunit.c (cgraph_optimize): Maintain timevar stack properly.
1569
1570 2009-10-27  Richard Henderson  <rth@redhat.com>
1571
1572         PR c++/41819
1573         * tree-eh.c (eh_region_may_contain_throw_map): Rename from
1574         eh_region_may_contain_throw; update users.
1575         (eh_region_may_contain_throw): New function.
1576         (lower_catch): Check flag_exceptions before creating exception region.
1577         (lower_eh_filter, lower_eh_must_not_throw): Likewise.
1578         (lower_cleanup): Tidy existing flag_exceptions check to match.
1579
1580 2009-10-27  Kai Tietz <kai.tietz@onevision.com>
1581
1582         PR/41799
1583         * config/i386/mingw32.h (CHECK_EXECUTE_STACK_ENABLED): New macro.
1584         * config/i386/mingw.opt: Add fset-stack-executable.
1585         * config/i386/i386.c (ix86_trampoline_init): Make call to
1586         emit_library_call conditional, if CHECK_EXECUTE_STACK_ENABLED is
1587         defined and its value is not zero.
1588         * doc/invoke.texi
1589
1590 2009-10-27  Richard Guenther  <rguenther@suse.de>
1591
1592         * tree-ssa-structalias.c (find_func_aliases): In IPA mode
1593         handle calls to externally visible functions like in regular mode.
1594         (create_variable_info_for): Do not create function infos here.
1595         (have_alias_info): Remove write-only variable.
1596         (solve_constraints): New function split out from common code
1597         in compute_points_to_sets and ipa_pta_execute.
1598         (compute_points_to_sets): Adjust.
1599         (ipa_pta_execute): Likewise.  Handle clones and externally visible
1600         functions like in non-IPA mode.
1601
1602 2009-10-27  Jakub Jelinek  <jakub@redhat.com>
1603
1604         PR c/41842
1605         * c-typeck.c (convert_arguments): Return -1 if any of the arguments is
1606         error_mark_node.
1607
1608 2009-10-27  Richard Guenther  <rguenther@suse.de>
1609
1610         * tree-complex.c (expand_complex_div_wide): Check for
1611         INTEGER_CST, not TREE_CONSTANT on comparison folding result.
1612
1613 2009-10-27  Revital Eres  <eres@il.ibm.com>
1614
1615         PR tree-optimization/40648
1616         * tree-vect-data-refs.c (vect_enhance_data_refs_alignment):
1617         Change decision of when to peel for alignment.
1618
1619 2009-10-27  Richard Guenther  <rguenther@suse.de>
1620
1621         PR lto/41821
1622         * gimple.c (gimple_types_compatible_p): Handle OFFSET_TYPE.
1623
1624 2009-10-27  Aldy Hernandez  <aldyh@redhat.com>
1625
1626         PR bootstrap/41451
1627         * fold-const.c (fold_binary_loc): Do not call
1628         protected_set_expr_location.
1629
1630 2009-10-27  Wei Guozhi  <carrot@google.com>
1631
1632         PR target/41705
1633         * target.h (have_conditional_execution): Add a new target hook
1634         function.
1635         * target-def.h (TARGET_HAVE_CONDITIONAL_EXECUTION): Likewise.
1636         * targhooks.h (default_have_conditional_execution): Likewise.
1637         * targhooks.c (default_have_conditional_execution): Likewise.
1638         * doc/tm.texi (TARGET_HAVE_CONDITIONAL_EXECUTION): Document it.
1639         * config/arm/arm.c (TARGET_HAVE_CONDITIONAL_EXECUTION): Define it.
1640         (arm_have_conditional_execution): New function.
1641         * ifcvt.c (noce_process_if_block, find_if_header,
1642         cond_exec_find_if_block, dead_or_predicable): Change the usage of
1643         macro HAVE_conditional_execution to a target hook call.
1644         * recog.c (peephole2_optimize): Likewise.
1645         * sched-rgn.c (add_branch_dependences): Likewise.
1646         * final.c (asm_insn_count, final_scan_insn): Likewise.
1647         * bb-reorder.c (HAVE_conditional_execution): Remove it.
1648
1649 2009-10-26  Ben Elliston  <bje@au.ibm.com>
1650             Michael Meissner  <meissner@linux.vnet.ibm.com>
1651             Ulrich Weigand  <uweigand@de.ibm.com>
1652
1653         * config.gcc (spu-*-elf*): Add spu_cache.h to extra_headers.
1654         * config/spu/spu_cache.h: New file.
1655
1656         * config/spu/cachemgr.c: New file.
1657         * config/spu/cache.S: New file.
1658
1659         * config/spu/spu.h (ASM_OUTPUT_SYMBOL_REF): Define.
1660         (ADDR_SPACE_EA): Define.
1661         (TARGET_ADDR_SPACE_KEYWORDS): Define.
1662         * config/spu/spu.c (EAmode): New macro.
1663         (TARGET_ADDR_SPACE_POINTER_MODE): Define.
1664         (TARGET_ADDR_SPACE_ADDRESS_MODE): Likewise.
1665         (TARGET_ADDR_SPACE_LEGITIMATE_ADDRESS_P): Likewise.
1666         (TARGET_ADDR_SPACE_LEGITIMIZE_ADDRESS): Likewise.
1667         (TARGET_ADDR_SPACE_SUBSET_P): Likewise.
1668         (TARGET_ADDR_SPACE_CONVERT): Likewise.
1669         (TARGET_ASM_SELECT_SECTION): Likewise.
1670         (TARGET_ASM_UNIQUE_SECTION): Likewise.
1671         (TARGET_ASM_UNALIGNED_SI_OP): Likewise.
1672         (TARGET_ASM_ALIGNED_DI_OP): Likewise.
1673         (ea_symbol_ref): New function.
1674         (spu_legitimate_constant_p): Handle __ea qualified addresses.
1675         (spu_addr_space_legitimate_address_p): New function.
1676         (spu_addr_space_legitimize_address): Likewise.
1677         (cache_fetch): New global.
1678         (cache_fetch_dirty): Likewise.
1679         (ea_alias_set): Likewise.
1680         (ea_load_store): New function.
1681         (ea_load_store_inline): Likewise.
1682         (expand_ea_mem): Likewise.
1683         (spu_expand_mov): Handle __ea qualified memory references.
1684         (spu_addr_space_pointer_mode): New function.
1685         (spu_addr_space_address_mode): Likewise.
1686         (spu_addr_space_subset_p): Likewise.
1687         (spu_addr_space_convert): Likewise.
1688         (spu_section_type_flags): Handle "._ea" section.
1689         (spu_select_section): New function.
1690         (spu_unique_section): Likewise.
1691         * config/spu/spu-c.c (spu_cpu_cpp_builtins): Support __EA32__
1692         and __EA64__ predefined macros.
1693         * config/spu/spu-elf.h (LIB_SPEC): Handle -mcache-size= and
1694         -matomic-updates switches.
1695
1696         * config/spu/t-spu-elf (MULTILIB_OPTIONS): Define.
1697         (EXTRA_MULTILIB_PARTS): Add libgcc_cachemgr.a,
1698         libgcc_cachemgr_nonatomic.a, libgcc_cache8k.a, libgcc_cache16k.a,
1699         libgcc_cache32k.a, libgcc_cache64k.a, libgcc_cache128k.a.
1700         ($(T)cachemgr.o, $(T)cachemgr_nonatomic.o): New target.
1701         ($(T)cache8k.o, $(T)cache16k.o, $(T)cache32k.o, $(T)cache64k.o,
1702         $(T)cache128k.o): Likewise.
1703         ($(T)libgcc_%.a): Likewise.
1704
1705         * config/spu/spu.h (TARGET_DEFAULT): Add MASK_ADDRESS_SPACE_CONVERSION.
1706         * config/spu/spu.opt (-mea32/-mea64): Add switches.
1707         (-maddress-space-conversion): Likewise.
1708         (-mcache-size=): Likewise.
1709         (-matomic-updates): Likewise.
1710         * doc/invoke.texi (-mea32/-mea64): Document.
1711         (-maddress-space-conversion): Likewise.
1712         (-mcache-size=): Likewise.
1713         (-matomic-updates): Likewise.
1714
1715 2009-10-26  Ben Elliston  <bje@au.ibm.com>
1716             Michael Meissner  <meissner@linux.vnet.ibm.com>
1717             Ulrich Weigand  <uweigand@de.ibm.com>
1718
1719         * doc/tm.texi (TARGET_ADDR_SPACE_KEYWORDS): Document.
1720
1721         * c-common.c (c_common_reswords): If TARGET_ADDR_SPACE_KEYWORDS is
1722         defined, add the named address space keywords.
1723         (c_addr_space_name): New function.
1724         (complete_array_type): Preserve named address space.
1725         (handle_mode_attribute): Use targetm.addr_space.valid_pointer_mode
1726         instead of targetm.valid_pointer_mode.
1727
1728         * c-common.h (enum rid): Add RID_ADDR_SPACE_0 .. RID_ADDR_SPACE_15,
1729         RID_FIRST_ADDR_SPACE and RID_LAST_ADDR_SPACE.
1730         (ADDR_SPACE_KEYWORD): New macro.
1731         (c_addr_space_name): Add prototype.
1732
1733         * c-tree.h (struct c_declspecs): Add address_space member.
1734         (declspecs_add_addrspace): Add prototype.
1735
1736         * c-pretty-print.c (pp_c_type_qualifier_list): Handle address spaces.
1737
1738         * c-parser.c (c_parse_init): Add assertion.
1739         (typedef enum c_id_kind): Add C_ID_ADDRSPACE.
1740         (c_lex_one_token): Handle address space keywords.
1741         (c_token_starts_typename): Likewise.
1742         (c_token_starts_declspecs): Likewise.
1743         (c_parser_declspecs): Likewise.
1744         (c_parser_postfix_expression_after_paren_type): Diagnose compound
1745         literal within function qualified with named address space.
1746
1747         * c-decl.c (diagnose_mismatched_decls): Diagnose conflicting named
1748         address space qualifiers.
1749         (shadow_tag_warned): Warn about useless address space qualifiers.
1750         (quals_from_declspecs): Handle address space qualifiers.
1751         (grokdeclarator): Likewise.
1752         (build_null_declspecs): Likewise.
1753         (declspecs_add_addrspace): New function.
1754
1755         * c-typeck.c (addr_space_superset): New function.
1756         (qualify_type): Handle named address spaces.
1757         (composite_type): Likewise.
1758         (common_pointer_type): Likewise.
1759         (comp_target_types): Likewise.
1760         (build_conditional_expr): Likewise.
1761         (handle_warn_cast_qual): Likewise.
1762         (build_c_cast): Likewise.
1763         (convert_for_assignment): Likewise.
1764         (build_binary_op): Likewise.
1765         (pointer_diff): Handle named address spaces.  Use intermediate
1766         integer type of sufficient size if required.
1767
1768 2009-10-26  Ben Elliston  <bje@au.ibm.com>
1769             Michael Meissner  <meissner@linux.vnet.ibm.com>
1770             Ulrich Weigand  <uweigand@de.ibm.com>
1771
1772         * doc/tm.texi (TARGET_ADDR_SPACE_POINTER_MODE): Document.
1773         (TARGET_ADDR_SPACE_ADDRESS_MODE): Likewise.
1774         (TARGET_ADDR_SPACE_VALID_POINTER_MODE): Likewise.
1775
1776         * target.h (struct target_def): Add pointer_mode, address_mode,
1777         and valid_pointer_mode to addr_space substructure.
1778         * target-def.h (TARGET_ADDR_SPACE_POINTER_MODE): Define.
1779         (TARGET_ADDR_SPACE_ADDRESS_MODE): Likewise.
1780         (TARGET_ADDR_SPACE_VALID_POINTER_MODE): Likewise.
1781         (TARGET_ADDR_SPACE_HOOKS): Add them.
1782         * targhooks.c (target_default_pointer_address_modes_p): New function.
1783         * target.h (target_default_pointer_address_modes_p): Add prototype.
1784         * targhooks.c (default_addr_space_pointer_mode): New function.
1785         (default_addr_space_address_mode): Likewise.
1786         (default_addr_space_valid_pointer_mode): Likewise.
1787         * targhooks.h (default_addr_space_pointer_mode): Add prototype.
1788         (default_addr_space_address_mode): Likewise.
1789         (default_addr_space_valid_pointer_mode): Likewise.
1790         * output.h (default_valid_pointer_mode): Move to ...
1791         * targhooks.h (default_valid_pointer_mode): ... here.
1792         * varasm.c (default_valid_pointer_mode): Move to ...
1793         * targhooks.c (default_valid_pointer_mode): ... here.
1794
1795         * varasm.c (output_constant): Use targetm.addr_space.valid_pointer_mode
1796         instead of targetm.valid_pointer_mode.
1797
1798         * fold-const.c (fit_double_type): Use int_or_pointer_precision.
1799         * tree.c (integer_pow2p): Likewise.
1800         (tree_log2): Likewise.
1801         (tree_floor_log2): Likewise.
1802         (signed_or_unsigned_type_for): Support pointer type of different size.
1803         (int_or_pointer_precision): New function.
1804         * tree.h (int_or_pointer_precision): Add prototype.
1805         * stor-layout.c (layout_type): Set TYPE_PRECISION for offset types.
1806         * varasm.c (initializer_constant_valid_p): Use TYPE_PRECISION of
1807         incoming pointer type instead of POINTER_SIZE.
1808
1809         * tree.c (build_pointer_type): Use appropriate pointer mode
1810         instead of ptr_mode.
1811         (build_reference_type): Likewise.
1812         * expr.c (store_expr): Likewise.
1813         (expand_expr_addr_expr): Likewise.
1814         * tree-vect-data-refs.c (vect_create_data_ref_ptr): Likewise.
1815         * cfgexpand.c (expand_debug_expr): Likewise.
1816
1817         * auto-inc-dec.c: Include "target.h".
1818         (try_merge): Use appropriate address mode instead of Pmode.
1819         (find_inc): Likewise.
1820         * combine.c (find_split_point): Likewise.
1821         * cselib.c (cselib_record_sets): Likewise.
1822         * dse.c (replace_inc_dec): Likewise.
1823         (canon_address): Likewise.
1824         * var-tracking.c (replace_expr_with_values): Likewise.
1825         (count_uses): Likewise.
1826         (add_uses): Likewise.
1827         (add_stores): Likewise.
1828         * emit-rtl.c: Include "target.h".
1829         (adjust_address_1): Use appropriate address mode instead of Pmode.
1830         (offset_address): Likewise.
1831         * explow.c (break_out_memory_refs): Likewise.
1832         (memory_address_addr_space): Likewise.
1833         (promote_mode): Likewise.
1834         * expr.c (move_by_pieces): Likewise.
1835         (emit_block_move_via_loop): Likewise.
1836         (store_by_pieces): Likewise.
1837         (store_by_pieces_1): Likewise.
1838         (expand_assignment): Likewise.
1839         (store_constructor): Likewise.
1840         (expand_expr_addr_expr): Likewise.
1841         (expand_expr_real_1): Likewise.
1842         * cfgexpand.c (expand_debug_expr): Likewise.
1843         * ifcvt.c (noce_try_cmove_arith): Likewise.
1844         * regcprop.c (kill_autoinc_value): Likewise.
1845         * regmove.c (try_auto_increment): Likewise.
1846         * reload.c (find_reloads): Likewise.
1847         (find_reloads_address): Likewise.
1848         (find_reloads_address_1): Likewise.
1849         * sched-deps.c: Include "target.h".
1850         (sched_analyze_1): Use appropriate address mode instead of Pmode.
1851         (sched_analyze_2): Likewise.
1852         * sel-sched-dump.c: Include "target.h".
1853         (debug_mem_addr_value): Use appropriate address mode instead of Pmode.
1854         * stor-layout.c (layout_type): Likewise.
1855         * tree-ssa-loop-ivopts.c (produce_memory_decl_rtl): Likewise.
1856         (multiplier_allowed_in_address_p): Likewise.
1857         (get_address_cost): Likewise.
1858         * varasm.c (make_decl_rtl): Likewise.
1859
1860         * expr.c (expand_assignment): Always convert offsets to appropriate
1861         address mode.
1862         (store_expr): Likewise.
1863         (store_constructor): Likewise.
1864         (expand_expr_real_1): Likewise.
1865
1866         * reload.h (form_sum): Add MODE argument.
1867         * reload.c (form_sum): Add MODE argument, use it instead of Pmode.
1868         Update recursive calls.
1869         (subst_indexed_address): Update calls to form_sum.
1870
1871         * tree-flow.h (addr_for_mem_ref): Add ADDRSPACE argument.
1872         * tree-ssa-address.c: Include "target.h".
1873         (templates): Replace by ...
1874         (mem_addr_template_list): ... this new vector.
1875         (TEMPL_IDX): Handle address space numbers.
1876         (gen_addr_rtx): Add address mode argument, use it instead of Pmode.
1877         (addr_for_mem_ref): Add ADDRSPACE argument.  Use per-address-space
1878         instead of global cache.  Update call to gen_addr_rtx.
1879         (valid_mem_ref_p): Update call to addr_for_mem_ref.
1880         * expr.c (expand_expr_real_1): Update call to addr_for_mem_ref.
1881
1882         * rtl.h (convert_memory_address_addr_space): Add prototype.
1883         (convert_memory_address): Define as macro.
1884         * explow.c (convert_memory_address): Rename to ...
1885         (convert_memory_address_addr_space): ... this.  Add ADDRSPACE argument.
1886         Use appropriate pointer and address modes instead of ptr_mode / Pmode.
1887         Update recursive calls.
1888         (memory_address_addr_space): Call convert_memory_address_addr_space.
1889         * expmed.c (make_tree): Likewise.
1890         * expr.c (expand_assignment): Likewise.
1891         (expand_expr_addr_expr_1): Likewise.  Also, add ADDRSPACE argument.
1892         (expand_expr_addr_expr): Likewise.  Also, update call.
1893
1894         * alias.c (find_base_value): Guard pointer size optimizations.
1895         (find_base_term): Likewise.
1896         * rtlanal.c (nonzero_bits1): Likewise.
1897         (num_sign_bit_copies1): Likewise.
1898         * simplify-rtx.c (simplify_unary_operation_1): Likewise.
1899
1900         * Makefile.in (tree-ssa-address.o): Add $(TARGET_H) dependency.
1901         (emit-rtl.o): Likewise.
1902         (auto-inc-dec.o): Likewise.
1903         (sched-deps.o): Likewise.
1904
1905 2009-10-26  Ben Elliston  <bje@au.ibm.com>
1906             Michael Meissner  <meissner@linux.vnet.ibm.com>
1907             Ulrich Weigand  <uweigand@de.ibm.com>
1908
1909         * doc/extend.texi (Named Address Spaces): New section.
1910         * coretypes.h (addr_space_t): New type.
1911         (ADDR_SPACE_GENERIC): New define.
1912         (ADDR_SPACE_GENERIC_P): New macro.
1913
1914         * doc/tm.texi (Named Address Spaces): New section.
1915         (TARGET_ADDR_SPACE_LEGITIMATE_ADDRESS_P): Document.
1916         (TARGET_ADDR_SPACE_LEGITIMIZE_ADDRESS): Document.
1917         (TARGET_ADDR_SPACE_SUBSET_P): Document.
1918         (TARGET_ADDR_SPACE_CONVERT): Document.
1919         * target.h (struct gcc_target): Add addr_space substructure.
1920         * target-def.h (TARGET_ADDR_SPACE_LEGITIMATE_ADDRESS_P): Define.
1921         (TARGET_ADDR_SPACE_LEGITIMIZE_ADDRESS): Likewise.
1922         (TARGET_ADDR_SPACE_SUBSET_P): Likewise.
1923         (TARGET_ADDR_SPACE_CONVERT): Likewise.
1924         (TARGET_ADDR_SPACE_HOOKS): Likewise.
1925         (TARGET_INITIALIZER): Initialize addr_space hooks.
1926         * targhooks.c (default_addr_space_legitimate_address_p): New function.
1927         (default_addr_space_legitimize_address): Likewise.
1928         (default_addr_space_subset_p): Likewise.
1929         (default_addr_space_convert): Likewise.
1930         * targhooks.h (default_addr_space_legitimate_address_p): Add prototype.
1931         (default_addr_space_legitimize_address): Likewise.
1932         (default_addr_space_subset_p): Likewise.
1933         (default_addr_space_convert): Likewise.
1934
1935         * doc/rtl.texi (MEM_ADDR_SPACE): Document.
1936         * rtl.h (mem_attrs): Add ADDRSPACE memory attribute.
1937         (MEM_ADDR_SPACE): New macro.
1938         * emit-rtl.c (get_mem_attrs): Add ADDRSPACE argument and set
1939         address space memory attribute.
1940         (mem_attrs_htab_hash): Handle address space memory attribute.
1941         (mem_attrs_htab_eq): Likewise.
1942         (set_mem_attributes_minus_bitpos): Likewise.
1943         (set_mem_alias_set): Likewise.
1944         (set_mem_align): Likewise.
1945         (set_mem_expr): Likewise.
1946         (set_mem_offset): Likewise.
1947         (set_mem_size): Likewise.
1948         (adjust_address_1): Likewise.
1949         (offset_address): Likewise.
1950         (widen_memoy_address): Likewise.
1951         (get_spill_slot_decl): Likewise.
1952         (set_mem_attrs_for_spill): Likewise.
1953         (set_mem_addr_space): New function.
1954         * emit-rtl.h (set_mem_addr_space): Add prototype.
1955         * print-rtl.c (print_rtx): Print address space memory attribute.
1956         * expr.c (expand_assignment): Set address space memory attribute
1957         of generated MEM RTXes as appropriate.
1958         (expand_expr_real_1): Likewise.
1959         * cfgexpand.c (expand_debug_expr): Likewise.
1960         * tree-ssa-loop-ivopts.c (produce_memory_decl_rtl): Likewise.
1961
1962         * tree.h (struct tree_base): Add address_space bitfield.  Reduce
1963         size of "spare" bitfield.
1964         (TYPE_ADDR_SPACE): New macro.
1965         (ENCODE_QUAL_ADDR_SPACE): Likewise.
1966         (DECODE_QUAL_ADDR_SPACE): Likewise.
1967         (CLEAR_QUAL_ADDR_SPACE): Likewise.
1968         (KEEP_QUAL_ADDR_SPACE): Likewise.
1969         (TYPE_QUALS): Encode type address space.
1970         (TYPE_QUALS_NO_ADDR_SPACE): New macro.
1971         * tree.c (set_type_quals): Set type address space.
1972         (build_array_type): Inherit array address space from element type.
1973         * print-tree.c (print_node_brief): Print type address space.
1974         (print_node): Likewise.
1975         * tree-pretty-print.c (dump_generic_node): Likewise.
1976
1977         * explow.c (memory_address): Rename to ...
1978         (memory_address_addr_space): ... this.  Add ADDRSPACE argument.
1979         Use address-space aware variants of memory address routines.
1980         * recog.c (memory_address_p): Rename to ...
1981         (memory_address_addr_space_p): ... this.  Add ADDSPACE argument.
1982         Use address-space aware variants of memory address routines.
1983         (offsettable_address_p): Rename to ...
1984         (offsettable_address_addr_space_p): ... this.  Add ADDRSPACE argument.
1985         Use address-space aware variants of memory address routines.
1986         * reload.c (strict_memory_address_p): Rename to ...
1987         (strict_memory_address_addr_space_p): ... this.  Add ADDSPACE argument.
1988         Use address-space aware variants of memory address routines.
1989         (maybe_memory_address_p): Rename to ...
1990         (maybe_memory_address_addr_space_p): ... this.  Add ADDSPACE argument.
1991         Use address-space aware variants of memory address routines.
1992         * expr.h (memory_address_addr_space): Add prototype.
1993         (memory_address): Define as macro.
1994         * recog.h (memory_address_addr_space_p): Add prototype.
1995         (memory_address_p): Define as macro.
1996         (offsettable_address_addr_space_p): Add prototype.
1997         (offsettable_address_p): Define as macro.
1998         (strict_memory_address_addr_space_p): Add prototype.
1999         (strict_memory_address_p): Define as macro.
2000
2001         * combine.c (find_split_point): Use address-space aware variants
2002         of memory address routines.
2003         * emit-rtl.c (operand_subword): Likewise.
2004         (change_address_1): Likewise.
2005         (adjust_address_1): Likewise.
2006         (offset_address): Likewise.
2007         * expr.c (emit_move_insn): Likewise.
2008         (expand_assignment): Likewise.
2009         (expand_expr_real_1): Likewise.
2010         * recog.c (verify_changes): Likewise.
2011         (general_operand): Likewise.
2012         (offsettable_memref_p): Likewise.
2013         (offsettable_nonstrict_memref_p): Likewise.
2014         (constrain_operands): Likewise.
2015         * reload.c (get_secondary_mem): Likewise.
2016         (find_reloads_toplev): Likewise.
2017         (find_reloads_address): Likewise.
2018         (find_reloads_subreg_address): Likewise.
2019         * reload1.c (reload): Likewise.
2020         * rtlhooks.c (gen_lowpart_if_possible): Likewise.
2021         * rtl.h (address_cost): Add ADDRSPACE argument.
2022         * rtlanal.c (address_cost): Add ADDRSPACE argument.  Use address-space
2023         aware variant of memory address routines.
2024         * loop-invariant.c (create_new_invariant): Update address_cost call.
2025         * tree-ssa-loop-ivopts.c (computation_cost): Likewise.
2026         * fwprop.c (should_replace_address): Add ADDRSPACE argument.
2027         Use address-space aware variant of memory address routines.
2028         (propagate_rtx_1): Update call to should_replace_address.
2029         * tree-flow.h (multiplier_allowed_in_address_p): Add ADDRSPACE
2030         argument.
2031         * tree-ssa-loop-ivopts.c (multiplier_allowed_in_address_p): Add
2032         ADDRSPACE argument.  Use per-address-space instead of global cache.
2033         Use address-space aware variant of memory address routines.
2034         (get_address_cost): Likewise.
2035         (get_computation_cost_at): Update calls.
2036         * tree-ssa-address.c (valid_mem_ref_p): Add ADDRSPACE argument.
2037         Use address-space aware variant of memory address routines.
2038         (create_mem_ref_raw): Update call to valid_mem_ref_p.
2039         (most_expensive_mult_to_index): Update call to
2040         multiplier_allowed_in_address_p.
2041
2042         * dwarf2out.c (modified_type_die): Output DW_AT_address_class
2043         attribute to indicate named address spaces.
2044
2045         * varasm.c (get_variable_section): DECLs in named address spaces
2046         cannot be "common".
2047
2048         * reload.c (find_reloads_address): Do not use LEGITIMIZE_RELOAD_ADDRESS
2049         for addresses in a non-generic address space.
2050
2051         * expr.c (emit_block_move_hints): Do not use libcalls for
2052         memory in non-generic address spaces.
2053         (clear_storage_hints): Likewise.
2054         (expand_assignment): Likewise.
2055
2056         * fold-const.c (operand_equal_p): Expressions refering to different
2057         address spaces are not equivalent.
2058
2059         * rtl.c (rtx_equal_p_cb): MEMs refering to different address
2060         spaces are not equivalent.
2061         (rtx_equal_p): Likewise.
2062         * cse.c (exp_equiv_p): Likewise.
2063         * jump.c (rtx_renumbered_equal_p): Likewise.
2064         * reload.c (operands_match_p): Likewise.
2065
2066         * alias.c (nonoverlapping_memrefs_p): MEMs refering to different
2067         address spaces may alias.
2068         (true_dependence): Likewise.
2069         (canon_true_dependence): Likewise.
2070         (write_dependence_p): Likewise.
2071
2072         * dse.c (canon_address): Handle named address spaces.
2073         * ifcvt.c (noce_try_cmove_arith): Likewise.
2074
2075         * tree.def (ADDR_SPACE_CONVERT_EXPR): New tree code.
2076         * expr.c (expand_expr_real_2): Expand ADDR_SPACE_CONVERT_EXPR.
2077         * convert.c (convert_to_pointer): Generate ADDR_SPACE_CONVERT_EXPR
2078         to handle conversions between different address spaces.
2079         * fold-const.c (fold_convert_loc): Likewise.
2080         (fold_unary_loc): Handle ADDR_SPACE_CONVERT_EXPR.
2081         * tree-pretty-print.c (dump_generic_node): Likewise.
2082         * gimple-pretty-print.c (dump_unary_rhs): Likewise.
2083         * tree-cfg.c (verify_gimple_assign_unary): Likewise.
2084         * tree-inline.c (estimate_operator_cost): Likewise.
2085         * tree-ssa.c (useless_type_conversion_p): Conversions between pointers
2086         to different address spaces are not useless.
2087
2088 2009-10-26  Jakub Jelinek  <jakub@redhat.com>
2089
2090         PR bootstrap/41345
2091         * cfgcleanup.c (trivially_empty_bb_p): New function.
2092         (try_optimize_bb): Use it instead of checking BB_HEAD == BB_END.
2093
2094         PR debug/41828
2095         * dwarf2out.c (add_pubname, add_pubtype, generic_parameter_die,
2096         add_name_and_src_coords_attributes, gen_namespace_die,
2097         dwarf2out_set_name): Handle dwarf2_name returning NULL.
2098
2099 2009-10-26  Nick Clifton  <nickc@redhat.com>
2100
2101         * config.gcc: Add support for RX target.
2102         * config/rx: New directory.
2103         * config/rx/constraints.md: New file.
2104         * config/rx/predicates.md: New file.
2105         * config/rx/rx.c: New file.
2106         * config/rx/rx.h: New file.
2107         * config/rx/rx.md: New file.
2108         * config/rx/rx.opt: New file.
2109         * config/rx/rx-protos.h: New file.
2110         * config/rx/t-rx: New file.
2111         * doc/extend.texi: Document RX function attributes.
2112         * doc/invoke.texi: Document RX specific command line options.
2113         * doc/contrib.texi: Document RX contribution.
2114         * doc/md.texi: Document RX constraints.
2115         * doc/install.texi: Document RX support.
2116
2117 2009-10-26  Michael Matz  <matz@suse.de>
2118
2119         PR tree-optimization/41783
2120         * tree-ssa-alias.c (get_continuation_for_phi): Export, add a special
2121         case for simple diamonds.
2122         * tree-ssa-alias.h (get_continuation_for_phi): Declare.
2123         * tree-ssa-pre.c (translate_vuse_through_block): Add same_valid
2124         argument, use alias oracle to skip some vdefs.
2125         (phi_translate_1): Change call to above, don't allocate new
2126         value ids if they can stay the same.
2127         (compute_avail): Allow vuse walking when looking up references.
2128
2129 2009-10-26  Richard Guenther  <rguenther@suse.de>
2130
2131         PR tree-optimization/41826
2132         * tree-ssa-structalias.c (get_constraint_for_ptr_offset): Avoid
2133         access to re-allocated vector fields.
2134
2135 2009-10-26  Richard Guenther  <rguenther@suse.de>
2136
2137         * graphite-sese-to-poly.c (check_poly_representation): Fix
2138         compile without checking.
2139
2140 2009-10-26  Janus Weil  <janus@gcc.gnu.org>
2141
2142         PR fortran/41714
2143         * gimple.h (tree_annotate_all_with_location): Remove prototype.
2144         * gimplify.c (tree_should_carry_location_p,
2145         tree_annotate_one_with_location,tree_annotate_all_with_location):
2146         Remove obsolete functions.
2147
2148 2009-10-25  Kaz Kojima  <kkojima@gcc.gnu.org>
2149
2150         PR target/41813
2151         * config/sh/sh.md (stuff_delay_slot): Don't set T_REG in pattern.
2152
2153 2009-10-25  Richard Guenther  <rguenther@suse.de>
2154
2155         * lto-streamer-in.c (unpack_ts_decl_common_value_fields):
2156         Stream DECL_RESTRICTED_P.
2157         * lto-streamer-out.c (pack_ts_decl_common_value_fields): Likewise.
2158
2159 2009-10-25  Richard Sandiford  <rdsandiford@googlemail.com>
2160
2161         * config/mips/mips.c (mips_restore_gp_from_cprestore_slot): Emit
2162         a note when expanding to nothing.
2163
2164 2009-10-25  Richard Guenther  <rguenther@suse.de>
2165
2166         PR middle-end/41814
2167         * tree.c (find_decls_types_r): Deal with Java overloading
2168         BINFO_VIRTUALS for its own purpose.
2169
2170 2009-10-24  Adam Nemet  <anemet@caviumnetworks.com>
2171
2172         * config/mips/predicates.md (hilo_operand): New predicate.
2173         * config/mips/mips.md (<u>mulsidi3_64bit): Change it to a
2174         define_insn.  Correct !ISA_HAS_EXT_INS length from 24 to 28.  Move
2175         splitter part from here ...:
2176         (<u>mulsidi3_64bit splitter for !ISA_HAS_EXT_INS): ... to here.  Swap
2177         op0 and op4 to match the DINS case.
2178         (<u>mulsidi3_64bit splitter for ISA_HAS_EXT_INS): New splitter.
2179
2180 2009-10-24  Andy Hutchinson  <hutchinsonandy@gcc.gnu.org>
2181
2182         PR middle-end/19154
2183         * avr.md (QIDI): Add new mode iterator.
2184         (sbrx_branch<mode>): Create new zero extract bit, test and jump
2185         patterns for all QI thru DI modes combinations.
2186         (sbrx_and_branch<mode>): Create new and based bit test and jump
2187         patterns for QI thru SI modes.
2188         avr.c (avr_out_sbxx_branch): Use only bit number.
2189
2190 2009-10-24  Jan Hubicka  <jh@suse.cz>
2191
2192         * ipa-reference.c (check_call): Noreturn notrhow calls do not write
2193         to memory.
2194         (analyze_function): When analyzing noreturn nothrow call, do not
2195         compute written stats; free bitmaps of vars early if possible.
2196         (generate_summary): Only update bitmaps if computed.
2197         (propagate): Only dump bitmaps if computed.
2198         (ipa_reference_read_summary): Fix pasto.
2199
2200 2009-10-24  Eric Botcazou  <ebotcazou@adacore.com>
2201
2202         * tree-ssa-alias.c (nonaliasing_component_refs_p): Rename into...
2203         (aliasing_component_refs_p): ...this.  Return true if there is no
2204         common base and the base access types have the same alias set.
2205         (indirect_ref_may_alias_decl_p): Adjust for above renaming.
2206         (indirect_refs_may_alias_p): Likewise.
2207
2208 2009-10-23  Joseph Myers  <joseph@codesourcery.com>
2209
2210         PR c/40033
2211         * c-typeck.c (c_finish_stmt_expr): Do not wrap error_mark_node in
2212         a C_MAYBE_CONST_EXPR.
2213
2214 2009-10-23  Michael Meissner  <meissner@linux.vnet.ibm.com>
2215
2216         PR target/41787
2217         * config/rs6000/rs6000.c (struct machine_function): Add
2218         vsx_or_altivec_used_p to record if vector types are used.
2219         (rs6000_expand_to_rtl_hook): Rename from
2220         rs6000_alloc_sdmode_stack_slot.  If VSX, check to see if there are
2221         any vector operations, so if there are, we can set VRSAVE to
2222         non-zero when only floating point vector registers are used.
2223         (TARGET_EXPAND_TO_RTL_HOOK): Use rs6000_expand_to_rtl_hook.
2224         (rs6000_check_vector_mode): Inner function to check if vector
2225         types are used in the code.
2226         (compute_vrsave_mask): If VSX, make sure VRSAVE is non-zero if
2227         vector instructions are used.
2228
2229         * config/rs6000/rs6000.h (HARD_REGNO_CALL_PART_CLOBBERED):
2230         Indicate that VSX registers which overlap floating point
2231         registers, can't be used across a call, since the ABI only states
2232         the scalar part of the register will be saved and restored.
2233
2234 2009-10-23  Joseph Myers  <joseph@codesourcery.com>
2235
2236         PR c/41673
2237         * alias.c (get_alias_set): Call langhook before returning 0 for
2238         types with structural equality.
2239         * c-common.c (c_common_get_alias_set): Use alias set of element
2240         type for arrays with structural comparison.
2241
2242 2009-10-23  Richard Guenther  <rguenther@suse.de>
2243
2244         PR middle-end/41805
2245         * cfgexpand.c (expand_call_stmt): Use gimple_has_side_effects and
2246         gimple_call_nothrow_p.
2247
2248 2009-10-23  Richard Guenther  <rguenther@suse.de>
2249
2250         PR tree-optimization/41778
2251         * tree-ssa-pre.c (do_regular_insertion): Only insert if a
2252         redundancy along a path in the CFG we want to optimize for speed
2253         is going to be removed.
2254         (execute_pre): Do partial-PRE only if the function is to be
2255         optimized for speed.
2256         (gate_pre): Do not turn off all of PRE when not optimizing a
2257         function for speed.
2258
2259 2009-10-23  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
2260
2261         * builtins.c (fold_builtin_cabs): Use validate_arg().
2262         (fold_builtin_cexp): Fix if-logic.
2263         (fold_builtin_1): Check subtype for BUILT_IN_CIMAG.
2264
2265 2009-10-22  Jeff Law  <law@redhat.com>
2266
2267         * ira-lives.c (process_single_reg_class_operands): Update the
2268         hard reg costs for all the hard registers desired by the
2269         single reg class operand.
2270
2271 2009-10-22  Richard Sandiford  <rdsandiford@googlemail.com>
2272
2273         * simplify-rtx.c (simplify_replace_fn_rtx): Add a fallback case
2274         for rtxes that aren't handled specially.
2275
2276 2009-10-22  Richard Sandiford  <rdsandiford@googlemail.com>
2277
2278         * rtl.h (shallow_copy_rtvec): Declare.
2279         * rtl.c (shallow_copy_rtvec): New function.
2280         * cselib.c (cselib_subst_to_values): Use it.  Only modify an
2281         rtx field if the subrtx has changed.
2282
2283 2009-10-22  Anatoly Sokolov  <aesok@post.ru>
2284
2285         * config/m32c/m32c.c (m32c_function_value_regno_p): New function.
2286         (m32c_function_value): Make static, add new 'outgoing' argument.
2287         (m32c_libcall_value): Make static, add new 'fun' argument.
2288         (TARGET_FUNCTION_VALUE, TARGET_LIBCALL_VALUE): Declare.
2289         * config/m32c/m32c.h (FUNCTION_VALUE, LIBCALL_VALUE): Remove.
2290         (FUNCTION_VALUE_REGNO_P): Redefine, use m32c_function_value_regno_p.
2291         * config/m32c/m32c-protos.h (m32c_function_value_regno_p): Declare.
2292         (m32c_function_value, m32c_libcall_value): Delete declaration.
2293
2294 2009-10-22  Diego Novillo  <dnovillo@google.com>
2295
2296         * Makefile.in (PLUGIN_HEADERS): Add output.h and IPA_UTILS_H.
2297
2298 2009-10-22  Razya Ladelsky  <razya@il.ibm.com>
2299
2300         * tree-cfg.c (gimple_duplicate_sese_tail): Fix typos/indentation/white
2301         space.
2302
2303 2009-10-22  Richard Guenther  <rguenther@suse.de>
2304
2305         * lto-streamer.h (lto_symtab_merge_cgraph_nodes): Declare.
2306         * lto-symtab.c (struct lto_symtab_entry_def): Add node member.
2307         (lto_symtab_merge): Do not merge cgraph nodes here.
2308         (lto_symtab_resolve_can_prevail_p): Simplify.
2309         (lto_symtab_resolve_symbols): Store cgraph node.
2310         (lto_symtab_merge_decls_1): Simplify.  Do not drop non-prevailing
2311         functions from the symtab.
2312         (lto_symtab_merge_cgraph_nodes_1): New function.
2313         (lto_symtab_merge_cgraph_nodes): Likewise.
2314
2315 2009-10-22  Richard Guenther  <rguenther@suse.de>
2316
2317         PR lto/41791
2318         * lto-streamer-out.c (lto_output_location): Stream the
2319         system header flag.
2320         * lto-streamer-in.c (lto_input_location): Likewise.
2321
2322 2009-10-22  Razya Ladelsky  <razya@il.ibm.com>
2323
2324         * cfgloopmanip.c (duplicate_subloops): Export.
2325         * tree-parloops.c (loop_parallel_p): Dump if loop is innermost.
2326         (transform_to_exit_first_loop): Duplicate bbs starting from
2327         header up to loop->latch instead of exit->src.
2328         Initialize control variable to the correct number of iterations.
2329         (gather_scalar_reductions): Do not register double reductions.
2330         (parallelize_loops): Dump which loop is tested.
2331         Indicate whether the parallelized loop is inner or not.
2332         Remove the innermost-loop requirement.
2333         * cfgloop.h (duplicate_subloops): Export.
2334         * tree-cfg.c (add_phi_args_after_redirect): New function.
2335         (gimple_duplicate_sese_tail): Remove the no-subloops constraint.
2336         Call duplicate_subloops.
2337         Update number of iterations at the exit condition.
2338         Don't redirect nexits always to the loop exit.
2339         Redirect copied edges from latch to the loop exit.
2340
2341 2009-10-22  Jan Hubicka  <jh@suse.cz>
2342
2343         * ipa-cp.c (ipcp_read_summary): Remove now invalid FIXME and
2344         flag_ltrans check.
2345         * ipa-inline.c (cgraph_mark_inline_edge,
2346         cgraph_decide_inlining_of_small_function,
2347         cgraph_decide_inlining, inline_read_summary): Disable indirect
2348         inlining for WPA for time being.
2349
2350         PR tree-optimize/40556
2351         * ipa-inline.c (cgraph_early_inlining): Fix iterations condition.
2352
2353 2009-10-22  Richard Guenther  <rguenther@suse.de>
2354
2355         * lto-streamer.h (lto_symtab_clear_resolution): Remove.
2356         * lto-symtab.c (lto_symtab_clear_resolution): Likewise.
2357
2358 2009-10-22  Jan Hubicka  <jh@suse.cz>
2359
2360         PR lto/41730
2361         * ipa-reference.c (has_proper_scope_for_analysis): Add fixme about
2362         global vars.
2363         (check_call): Handle only indirect calls.
2364         (propagate_bits): Update comment.
2365         (write_node_summary_p): Turn bogus check to assert.
2366         (ipa_reference_write_summary): Stream calls_read_all properly.
2367         (ipa_reference_read_summary): Stream in calls_read_all properly.
2368         (read_write_all_from_decl): New function.
2369         (propagate): Handle OVERWRITABLE nodes and external calls here.
2370         * ipa-pre-const.c (check_call): In IPA mode handle indirect
2371         calls only.
2372         (analyze_function): Do not check visibility here.
2373         (add_new_function): We summary OVERWRITABLE too.
2374         (generate_summary): Stream OVERWRITABLE nodes too.
2375         (propagate): Handle external calls and OVERWRITABLE nodes here.
2376         (local_pure_const): Check visibility here.
2377
2378 2009-10-22  Jan Hubicka  <jh@suse.cz>
2379
2380         * ipa-cp.c (ipcp_write_summary, ipcp_read_summary): New functions.
2381         (pass_ipa_cp): Register them.
2382         (ipcp_init_stage): Analyze all functions for whopr/lto.
2383         (ipcp_propagate_stage): Skip external calls.
2384         (ipcp_iterate_stage): Call ipa_update_after_lto_read if needed.
2385         * ipa-reference.c (write_node_summary_p): Fix thinko about
2386         availability.
2387         * cgraphunit.c (ipa_passes): When in lto, ne er produce new summaries;
2388         when in ltrans, skip executing of ipa passes since everything
2389         should've been done.
2390         * ipa-inline.c (cgraph_decide_inlining): Remove FIXMEs.
2391         (inline_generate_summary): Likewise.
2392         (inline_read_summary): New function.
2393         (inline_write_summary): New function.
2394         (pass_ipa_inline): Register new hooks.
2395         * ipa-prop.c: Inlcude lto-streamer.h
2396         (ipa_edge_args_vector): Update declaration.
2397         (ipa_count_arguments, ipa_compute_jump_functions,
2398         ipa_free_edge_args_substructures): Move ipa_edge_args_vector into ggc.
2399         (ipa_write_jump_function, ipa_read_jump_function, ipa_write_node_info,
2400         ipa_read_node_info): New static functions.
2401         (ipa_prop_write_jump_functions, ipa_prop_read_jump_functions): Update.
2402         (duplicate_array): Use xmalloc.
2403         (duplicate_ggc_array): New.
2404         (ipa_edge_duplication_hook): Use it.
2405         (ipa_update_after_lto_read): New function.
2406         * ipa-prop.h (ipa_prop_write_jump_functions,
2407         ipa_prop_read_jump_functions): Declare.
2408         (ipa_pass_through_data, ipa_ancestor_jf_data, ipa_member_ptr_cst,
2409         jump_func_value, ipa_member_ptr_cst, ipa_edge_args): Add GTY markers.
2410         (ipa_edge_args_vector): Move into GGC.
2411         (ipa_check_create_edge_args): Update.
2412         (ipa_update_after_lto_read): New.
2413         * passes.c (ipa_write_summaries_1): When in wpa, do not write
2414         summaries.
2415         (ipa_read_summaries): When in ltrans, so not read summaries.
2416         * lto-streamer.c (lto_get_section_name): Add
2417         LTO_section_jump_functions.
2418         * lto-streamer.h (LTO_section_jump_functions): New section.
2419         (produce_asm): Declare.
2420         * lto-cgraph.c (output_cgraph): Output edges in reverse order.
2421         * lto-streamer-out.c (produce_asm): Export.
2422         * lto-streamer-in.c: Include tree-pass.h
2423         (input_function): Free dominance info when done.
2424         (lto_read_body): Push ipa_inline in ltrans stage.
2425         * gengtype.c (open_base_files): Add ipa-prop.h into includes.
2426         * Makefile.in (GTFILES): Add ipa-prop.h
2427
2428 2009-10-22  Matthias Klose  <doko@ubuntu.com>
2429
2430         * doc/install.texi: Document --enable-browser-plugin.
2431
2432 2009-10-21  Vladimir Makarov  <vmakarov@redhat.com>
2433
2434         * doc/invoke.texi (fira-loop-pressure): Update default value.
2435         * opts.c (decode_options): Remove default value setting for
2436         flag_ira_loop_pressure.
2437         * config/ia64/ia64.c (ia64_override_options): Set
2438         flag_ira_loop_pressure up for -O3.
2439         * config/rs6000/rs6000.c (rs6000_override_options): Ditto.
2440
2441 2009-10-21  Sebastian Pop  <sebastian.pop@amd.com>
2442
2443         PR tree-optimization/41497
2444         * tree-scalar-evolution.c (analyze_evolution_in_loop): Return
2445         chrec_dont_know if the evolution function returned by follow_ssa_edge
2446         is constant in the analyzed loop and is not compatible with the
2447         initial value before the loop.
2448         * tree-chrec.h (no_evolution_in_loop_p): Call STRIP_NOPS.
2449
2450 2009-10-21  Joseph Myers  <joseph@codesourcery.com>
2451
2452         * config/sh/sh.c (nonpic_symbol_mentioned_p): Allow UNSPEC_TPOFF.
2453
2454 2009-10-21  Jakub Jelinek  <jakub@redhat.com>
2455
2456         PR other/25507
2457         * doc/invoke.texi: Document -print-multi-os-directory.
2458
2459 2009-10-21  Jack Howarth  <howarth@bromo.med.uc.edu>
2460
2461         PR c++/41313
2462         * gcc/config/darwin10.h: Use default_emit_unwind_label.
2463         * gcc/config/darwin.c: Disable -freorder-blocks-and-partition
2464         when darwin_emit_unwind_label is used.
2465
2466 2009-10-21  Eric Botcazou  <ebotcazou@adacore.com>
2467
2468         * tree-vect-stmts.c (exist_non_indexing_operands_for_use_p): Tweak
2469         order of checks.
2470
2471 2009-10-20  Richard Henderson  <rth@redhat.com>
2472
2473         * tree-eh.c (lower_try_finally_copy): Do lower_eh_constructs_1
2474         before emit_post_landing_pad.
2475
2476 2009-10-20  Adam Nemet  <anemet@caviumnetworks.com>
2477
2478         * config/mips/mips.c (mips_binary_cost): Add new argument speed.
2479         Use when calling rtx_costs.
2480         (mips_rtx_costs): Fix formatting.  Use argument speed rather than the
2481         global optimize_size.  Pass speed to mips_binary_cost.
2482
2483 2009-10-20  Jakub Jelinek  <jakub@redhat.com>
2484
2485         * config/rs6000/rs6000.c (def_builtin): Set TREE_READONLY instead
2486         of TREE_CONSTANT.
2487
2488 2009-10-20  Richard Sandiford  <rdsandiford@googlemail.com>
2489
2490         * rtl.h (simplify_replace_fn_rtx): Declare.
2491         (wrap_constant, unwrap_constant): Delete.
2492         * cfgexpand.c (unwrap_constant, wrap_constant): Delete.
2493         (expand_debug_expr): Don't call wrap_constant.
2494         * combine.c (rtx_subst_pair): Only define for AUTO_INC_DEC.
2495         (auto_adjust_pair): Fold into...
2496         (propagate_for_debug_subst): ...here.  Only define for AUTO_INC_DEC.
2497         Just return a new value.
2498         (propagate_for_debug): Use simplify_replace_fn_rtx for AUTO_INC_DEC,
2499         otherwise use simplify_replace_rtx.
2500         * cselib.c (wrap_constant): Reinstate old definition.
2501         (cselib_expand_value_rtx_1): Don't wrap constants.
2502         * gcse.c (try_replace_reg): Don't use copy_rtx in the call to
2503         simplify_replace_rtx.
2504         (bypass_block): Fix formatting in calls to simplify_replace_rtx.
2505         * reload1.c (reload): Skip all uses for an insn before adjusting it.
2506         Use simplify_replace_rtx.
2507         * simplify-rtx.c (simplify_replace_fn_rtx): New function,
2508         adapted from...
2509         (simplify_replace_rtx): ...here.  Turn into a wrapper for
2510         simplify_replace_fn_rtx.
2511         (simplify_unary_operation): Don't unwrap CONSTs.
2512         * var-tracking.c (check_wrap_constant): Delete.
2513         (vt_expand_loc_callback): Don't call it.
2514         (vt_expand_loc): Likewise.
2515
2516 2009-10-20  Pascal Obry  <obry@adacore.com>
2517             Eric Botcazou  <ebotcazou@adacore.com>
2518
2519         * config/i386/cygming.h (DWARF_FRAME_REGNUM): Add enclosing parens.
2520
2521 2009-10-20  Michael Matz  <matz@suse.de>
2522
2523         * loop-invariant.c (create_new_invariant): Use different magic number.
2524
2525 2009-10-20  Richard Earnshaw  <rearnsha@arm.com>
2526
2527         PR target/39247
2528         * arm.c (arm_override_options): Forcibly disable hot/cold block
2529         partitioning.
2530
2531 2009-10-20  Alexandre Oliva  <aoliva@redhat.com>
2532
2533         PR debug/41739
2534         * haifa-sched.c (try_ready): Skip debug deps updating speculation
2535         status.
2536
2537 2009-10-20  Richard Guenther  <rguenther@suse.de>
2538
2539         * ggc-page.c: Include cfgloop.h.
2540         (struct max_alignment): Drop long double, add void *.
2541         (extra_order_size_table): Add low non-power-of-two multiples
2542         of MAX_ALIGNMENT.  Drop small type-based entries, add
2543         tree_type, cgraph_node and loop.
2544         * alloc-pool.c (struct allocation_object_def): Drop long double
2545         aligning element.
2546
2547 2009-10-20  Jakub Jelinek  <jakub@redhat.com>
2548
2549         PR debug/41340
2550         * loop-invariant.c (calculate_loop_reg_pressure): Don't count regs
2551         referenced just in DEBUG_INSNs.
2552
2553 2009-10-20  Richard Guenther  <rguenther@suse.de>
2554
2555         PR lto/41761
2556         * gimple.c (gimple_register_type): Make sure we register
2557         the types main variant first.
2558
2559 2009-10-20  Richard Guenther  <rguenther@suse.de>
2560
2561         * gimple.c (gimple_types_compatible_p): Simplify.  Move
2562         cheap checks before hashtable queries.  Add checks for
2563         TYPE_NONALIASED_COMPONENT and DECL_NONADDRESSABLE_P.
2564
2565 2009-10-20  Eric Botcazou  <ebotcazou@adacore.com>
2566
2567         * tree-sra.c (build_ref_for_offset_1) <RECORD_TYPE>: Skip fields
2568         without size or with size that can't be represented as a host integer.
2569
2570 2009-10-20  Alexandre Oliva  <aoliva@redhat.com>
2571
2572         * tree-ssa-dce.c (eliminate_unnecessary_stmts): Don't regard
2573         the removal of a debug stmt as a significant change.
2574
2575 2009-10-20  Wolfgang Gellerich  <gellerich@de.ibm.com>
2576
2577         * config/s390/s390.md: Added agen condition to operand
2578         forwarding bypasses.  Added bypass for early address generation
2579         use of int results.  Updated comments.
2580
2581 2009-10-20  Stefan Dösinger  <stefan@codeweavers.com>
2582
2583         * config/i386/i386.c: Remove signal.h #include.
2584
2585 2009-10-20  Jie Zhang  <jie.zhang@analog.com>
2586
2587         * simplify-rtx.c (simplify_const_unary_operation): Handle SS_ABS.
2588         * doc/rtl.texi: Document ss_abs.
2589
2590 2009-10-19  Jakub Jelinek  <jakub@redhat.com>
2591
2592         * c-common.c (c_parse_error): Handle CPP_UTF8STRING.
2593         * c-lex.c (c_lex_with_flags): Likewise.  Test C_LEX_STRING_NO_JOIN
2594         instead of C_LEX_RAW_STRINGS.
2595         (lex_string): Handle CPP_UTF8STRING.
2596         * c-parser.c (c_parser_postfix_expression): Likewise.
2597         * c-pragma.h (C_LEX_RAW_STRINGS): Rename to ...
2598         (C_LEX_STRING_NO_JOIN): ... this.
2599
2600 2009-10-19  Anatoly Sokolov  <aesok@post.ru>
2601
2602         * config/cris/cris.c (cris_function_value, cris_libcall_value,
2603         cris_function_value_regno_p): New functions.
2604         (cris_promote_function_mode): Update comment.
2605         (TARGET_FUNCTION_VALUE, TARGET_LIBCALL_VALUE): Declare.
2606         * config/cris/cris.h (FUNCTION_VALUE, LIBCALL_VALUE): Remove.
2607         (FUNCTION_VALUE_REGNO_P): Redefine, use cris_function_value_regno_p.
2608         * config/cris/cris-protos.h (cris_function_value_regno_p): Declare.
2609
2610 2009-10-19  Jakub Jelinek  <jakub@redhat.com>
2611
2612         * unwind-dw2.c (execute_stack_op): Fix operand order for
2613         DW_OP_le, DW_OP_ge, DW_OP_lt and DW_OP_gt.
2614
2615 2009-10-19  Eric Botcazou  <ebotcazou@adacore.com>
2616
2617         * gimple-low.c (struct lower_data): Add cannot_fallthru field.
2618         (lower_stmt) <GIMPLE_BIND>: Add comment.
2619         <GIMPLE_COND, GIMPLE_GOTO, GIMPLE_SWITCH>: Set cannot_fallthru to true
2620         and return.
2621         <GIMPLE_RETURN>: Remove the statement if cannot_fallthru is set.
2622         Otherwise lower it and set cannot_fallthru to true.
2623         <GIMPLE_TRY>: Update cannot_fallthru for GIMPLE_TRY_FINALLY and return.
2624         <GIMPLE_CATCH, GIMPLE_EH_FILTER>: Set cannot_fallthru to false.
2625         <GIMPLE_CALL>: Set cannot_fallthru to false for BUILT_IN_SETJMP and
2626         to true for a noreturn call.  Do not remove statements.
2627         <GIMPLE_OMP_PARALLEL, GIMPLE_OMP_TASK>: Set cannot_fallthru to false.
2628         Set cannot_fallthru to false on function exit.
2629         (gimple_stmt_may_fallthru) <GIMPLE_SWITCH>: Really return false.
2630         <GIMPLE_ASSIGN>: Remove.
2631
2632 2009-10-19  Andreas Krebbel  <Andreas.Krebbel@de.ibm.com>
2633
2634         * config/s390/s390.c (s390_z10_optimize_cmp): Don't touch FP compares.
2635
2636 2009-10-19  Andreas Krebbel  <Andreas.Krebbel@de.ibm.com>
2637
2638         * config/s390/s390.c (s390_z10_optimize_cmp): Use
2639         next/prev_active_insn to skip DEBUG_INSNs as well.
2640
2641 2009-10-19  Joseph Myers  <joseph@codesourcery.com>
2642
2643         * config/arm/arm.c (output_move_neon): Use DImode in call to
2644         adjust_address.
2645
2646 2009-10-19  Matthias Klose  <doko@ubuntu.com>
2647
2648         PR target/40134
2649         * config.gcc (arm*-*-linux-*eabi): Use config/t-slibgcc-libgcc.
2650
2651 2009-10-19  Jakub Jelinek  <jakub@redhat.com>
2652
2653         * cfgexpand.c (expand_debug_expr): Fail if bitpos < 0 for non-MEM op0.
2654
2655 2009-10-17  Andy Hutchinson  <hutchinsonandy@gcc.gnu.org>
2656
2657         PR middle-end/41738
2658         * optabs.c (expand_binop): Make mode of shift count expression mode
2659         of shift count not target.
2660         Remove indent nit.
2661
2662 2009-10-17  Eric Botcazou  <ebotcazou@adacore.com>
2663
2664         * tree-nested.c (convert_nonlocal_reference_stmt) <GIMPLE_COND>: New
2665         case.  Force using values to replace references within the statement.
2666         (convert_local_reference_stmt): Likewise.
2667
2668 2009-10-17  Eric Botcazou  <ebotcazou@adacore.com>
2669
2670         * gimple-low.c (lower_stmt) <GIMPLE_CALL>: If the call is noreturn,
2671         remove a subsequent GOTO or RETURN statement.
2672
2673 2009-10-17  Andy Hutchinson  <hutchinsonandy@aim.com>
2674
2675         * config/avr.md (*movqi): Add zero as equally preferable constraint
2676         as general register.
2677         (*movhi): Ditto.
2678
2679 2009-10-17  Eric Botcazou  <ebotcazou@adacore.com>
2680
2681         * print-tree.c (print_node): Fix string for DECL_STRUCT_FUNCTION.
2682
2683 2009-10-17  Richard Guenther  <rguenther@suse.de>
2684
2685         * lto-streamer-in.c (lto_input_location): Try to reuse previous maps.
2686
2687 2009-10-17  Richard Guenther  <rguenther@suse.de>
2688
2689         * lto-streamer-in.c (input_gimple_stmt): Fixup FIELD_DECL
2690         operands in COMPONENT_REFs.
2691
2692 2009-10-17  Anatoly Sokolov  <aesok@post.ru>
2693
2694         * targhooks.c (default_libcall_value): Don't use LIBCALL_VALUE macro
2695         if not defined. Change type of second argument to const_rtx.
2696         (default_function_value): Call gcc_unreachable if FUNCTION_VALUE
2697         macro not defined.
2698         * targhooks.h (default_libcall_value): Update prototype.
2699         * target.h (struct gcc_target): Change type of second argument of
2700         libcall_value to const_rtx.
2701         * config/arm/arm.c (arm_libcall_value): Change type of second argument
2702         to const_rtx.
2703         (arm_libcall_uses_aapcs_base): Change type of argument to const_rtx.
2704         * doc/tm.texi (TARGET_LIBCALL_VALUE):  Revise documentation.
2705
2706 2009-10-17  Jakub Jelinek  <jakub@redhat.com>
2707
2708         PR debug/40521
2709         * debug.h (struct gcc_debug_hooks): Add assembly_start hook.
2710         * cgraphunit.c (cgraph_optimize): Call it.
2711         * dwarf2out.c (dwarf2out_init): Move .cfi_sections printing into...
2712         (dwarf2out_assembly_start): ... here.  New hook.
2713         (dwarf2out_debug_hooks): Add dwarf2out_assembly_start.
2714         * debug.c (do_nothing_debug_hooks): Do nothing for assembly_start
2715         hook.
2716         * dbxout.c (dbx_debug_hooks, xcoff_debug_hooks): Likewise.
2717         * sdbout.c (sdb_debug_hooks): Likewise.
2718         * vmsdbgout.c (vmsdbg_debug_hooks): Add vmsdbgout_assembly_start.
2719         (vmsdbgout_assembly_start): New hook.
2720
2721 2009-10-17  Alexandre Oliva  <aoliva@redhat.com>
2722
2723         * rtl.h (RTL_LOCATION): Fix typo.
2724
2725 2009-10-17  Alexandre Oliva  <aoliva@redhat.com>
2726
2727         * print-rtl.c (print_rtx): Print locators in asm_operands
2728         and asm_input.
2729
2730 2009-10-17  Alexandre Oliva  <aoliva@redhat.com>
2731
2732         PR debug/41535
2733         * sched-deps.c (depl_on_debug_p): New.
2734         (attach_dep_link): Reject debug deps before nondebug deps.
2735         (add_to_deps_list): Insert debug deps after nondebug deps.
2736         (sd_lists_empty_p): Stop at first nonempty list.  Disregard debug
2737         deps.
2738         (sd_add_dep): Do not reject debug deps.
2739         (add_insn_mem_dependence): Don't count debug deps.
2740         (remove_from_deps): Likewise.
2741         (sched_analyze_2): Set up mem deps on debug insns.
2742         (sched_analyze_insn): Record reg uses for deps on debug insns.
2743         * haifa-sched.c (schedule_insn): Reset deferred debug insn.  Don't
2744         try_ready nondebug insn after debug insn.
2745         * ddg.c (create_ddg_dep_from_intra_loop_link,
2746         create_ddg_dep_no_link): Don't reject debug deps.
2747
2748 2009-10-16  Richard Guenther  <rguenther@suse.de>
2749
2750         * lto-symtab.c (merge_incomplete_and_complete_type): Remove.
2751         (maybe_merge_incomplete_and_complete_type): Likewise.
2752         (lto_symtab_merge): Do not call them.  Do not warn for
2753         complete vs. incomplete compatible types.
2754         (lto_symtab_merge_decls_2): Simplify.
2755         * gimple.c (gimple_force_type_merge): Remove.
2756         (gimple_types_compatible_p): Make it static.
2757         * gimple.h (gimple_force_type_merge): Remove.
2758         (gimple_types_compatible_p): Likewise.
2759
2760 2009-10-16  Jakub Jelinek  <jakub@redhat.com>
2761
2762         * dwarf2out.c (mem_loc_descriptor) <case ZERO_EXTRACT>: Cast
2763         DWARF2_ADDR_SIZE to int to avoid signed vs. unsigned warnings.
2764
2765 2009-10-16  Richard Guenther  <rguenther@suse.de>
2766
2767         PR tree-optimization/41728
2768         * tree-ssa-dom.c (optimize_stmt): Mark the stmt modified
2769         if fold_stmt did anything.
2770
2771 2009-10-16  Richard Guenther  <rguenther@suse.de>
2772
2773         PR lto/41715
2774         * lto-streamer-in.c (lto_input_tree_ref): Revert last change.
2775         (maybe_fixup_handled_component): New function.
2776         (input_gimple_stmt): Fixup mismatched decl replacements.
2777
2778 2009-10-16  Richard Guenther  <rguenther@suse.de>
2779
2780         PR lto/41713
2781         * lto-streamer-out.c (lto_output_tree_ref): Handle DEBUG_EXPR_DECL
2782         the same as VAR_DECL.
2783
2784 2009-10-16  Richard Guenther  <rguenther@suse.de>
2785
2786         * gimple.c (iterative_hash_gimple_type): For integer types
2787         also hash their minimum and maximum values and the string flag.
2788         For array types hash their domain and the string flag.
2789
2790 2009-10-16  Richard Guenther  <rguenther@suse.de>
2791
2792         * gimple.c (gimple_types_compatible_p): Restrict completing
2793         types to record or unions.  Simplify completion.
2794         Do not merge records or unions with different
2795         TYPE_STRUCTURAL_EQUALITY_P tag.
2796         (iterative_hash_gimple_type): Restrict non-recursing into
2797         pointer targets for records and unions.
2798
2799 2009-10-15  Jakub Jelinek  <jakub@redhat.com>
2800
2801         PR debug/41717
2802         * cfgexpand.c (expand_debug_expr): Handle CONJ_EXPR.
2803         * dwarf2out.c (mem_loc_descriptor): Don't handle
2804         POST_INT/POST_DEC/POST_MODIFY like SUBREG.  For SUBREG
2805         punt if it is not lowpart subreg or if inner mode isn't
2806         MODE_INT.
2807
2808 2009-10-16  Andreas Krebbel  <Andreas.Krebbel@de.ibm.com>
2809
2810         * config/s390/s390.c (s390_z10_optimize_cmp): Skip notes when
2811         investigating previous or next insns.
2812
2813 2009-10-16  Eric Botcazou  <ebotcazou@adacore.com>
2814
2815         * tree-sra.c (build_ref_for_offset_1): Update comment.
2816
2817 2009-10-16  Wolfgang Gellerich  <gellerich@de.ibm.com>
2818
2819         * config/s390/s390.md (atype): Added missing values.
2820
2821 2009-10-15  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
2822
2823         PR target/41702
2824         * pa.md (casesi): Use sign extended index in call to gen_casesi64p.
2825         (casesi64p): Update pattern to reflect above.
2826
2827 2009-10-15  Steve Ellcey  <sje@cup.hp.com>
2828
2829         PR rtl-optimization/41697
2830         * sel-sched-ir.h (_eligible_successor_edge_p): Check successor count.
2831
2832 2009-10-15  Michael Meissner  <meissner@linux.vnet.ibm.com>
2833
2834         PR target/23983
2835         * config/rs6000/predicates.md: Update copyright year.
2836         * config/rs6000/altivec.md: Ditto.
2837
2838         * config/rs6000/t-rs6000 (TM_H): Add rs6000-builtin.def.
2839         (MD_INCLUDES): Add a2.md.
2840
2841         * config/rs6000/rs6000.c (rs6000_builtin_decls): Change
2842         RS6000_BUILTIN_COUNT to MAX_RS6000_BUILTINS.
2843         (builtin_classify): New static vector to classify various builtins
2844         to get the tree attributes correct.
2845         (def_builtin): Set the attributes of builtins based on what the
2846         builtin does (i.e. memory operation, floating point, saturation
2847         need special attributes, others are pure functions).
2848
2849         * config/rs6000/rs6000.h (enum rs6000_btc): New enum to classify
2850         the builtins.
2851         (enum rs6000_builtins): Include rs6000-builtin.def to define the
2852         builtins.  Change the end marker to MAX_RS6000_BUILTINS from
2853         RS6000_BUILTIN_COUNT.
2854         (rs6000_builtin_decls): Change RS6000_BUILTIN_COUNT to
2855         MAX_RS6000_BUILTINS.
2856
2857         * config/rs6000/rs6000-builtin.def: New file that combines the
2858         builtin enumeration name and attributes.
2859
2860 2009-10-15  H.J. Lu  <hongjiu.lu@intel.com>
2861
2862         * config/i386/linux.h (ASM_SPEC): Add --32.
2863
2864 2009-10-15  Jakub Jelinek  <jakub@redhat.com>
2865
2866         * dwarf2out.c (dwarf_tag_name): Handle DW_TAG_rvalue_reference_type
2867         and DW_TAG_template_alias.
2868         (dwarf_attr_name): Handle DW_AT_main_subprogram,
2869         DW_AT_data_bit_offset, DW_AT_const_expr, DW_AT_enum_class,
2870         DW_AT_linkage_name, DW_AT_GNU_guarded_by, DW_AT_GNU_pt_guarded_by,
2871         DW_AT_GNU_guarded, DW_AT_GNU_pt_guarded, DW_AT_GNU_locks_excluded,
2872         DW_AT_GNU_exclusive_locks_required, DW_AT_GNU_shared_locks_required
2873         and DW_AT_GNU_odr_signature.
2874         (dwarf_form_name): Handle DW_FORM_sec_offset, DW_FORM_exprloc,
2875         DW_FORM_flag_present and DW_FORM_ref_sig8.
2876         (output_signature): Only print name on the first byte.
2877         (output_die): Likewise for dw_val_class_data8.
2878
2879 2009-10-15  Alexander Monakov  <amonakov@ispras.ru>
2880
2881         * doc/invoke.texi: Clarify that most optimizations are not enabled
2882         without -O.
2883
2884 2009-10-15  Richard Guenther  <rguenther@suse.de>
2885
2886         PR lto/41668
2887         * gimple.c (compare_type_names_p): Handle anonymous names
2888         differently based on new mode argument.
2889         (gimple_types_compatible_p): For structs also compare the tags.
2890         (iterative_hash_type_name): Rename to ...
2891         (iterative_hash_name): ... this.  Hash all names.
2892         (iterative_hash_gimple_type): Fix hashing the struct tag of
2893         pointer targets.  Hash field decl names.
2894
2895 2009-10-15  Richard Guenther  <rguenther@suse.de>
2896
2897         PR lto/41669
2898         * gimple.c (gimple_get_alias_set): Avoid recursing on
2899         invalid type topology.
2900
2901 2009-10-15  Andrew Pinski  <andrew_pinski@playstation.sony.com>
2902
2903         * config/spu/spu.c (get_branch_target): Use extract_asm_operands.
2904
2905 2009-10-15  Richard Guenther  <rguenther@suse.de>
2906
2907         * tree.c (free_lang_data_in_decl): Free DECL_FCONTEXT.
2908
2909 2009-10-15  Jakub Jelinek  <jakub@redhat.com>
2910
2911         * config/rs6000/option-defaults.h (OPTION_DEFAULT_SPECS): Don't
2912         add --with-tune{,-32,-64} configured default for -mtune if explicit
2913         -mcpu is used.
2914
2915 2009-10-14  Daniel Gutson  <dgutson@codesourcery.com>
2916
2917         * config/arm/neon.md (neon_vshll_n<mode>): Checking Bounds fixed.
2918
2919 2009-10-14  DJ Delorie  <dj@redhat.com>
2920
2921         * config/h8300/h8300.c (F): New.
2922         (Fpa): New.
2923         (h8300_emit_stack_adjustment): Call them.
2924         (push): Likewise.
2925         (h8300_push_pop): Likewise.
2926         (h8300_expand_prologue): Likewise.
2927         * config/h8300/h8300.h (DWARF2_DEBUGGING_INFO): Define.
2928         (MUST_USE_SJLJ_EXCEPTIONS): Define.
2929         (INCOMING_RETURN_ADDR_RTX): Define.
2930         (INCOMING_FRAME_SP_OFFSET): Define.
2931         (DWARF_CIE_DATA_ALIGNMENT): Define.
2932
2933 2009-10-14  Jakub Jelinek  <jakub@redhat.com>
2934
2935         * stor-layout.c (place_field): Don't emit -Wpadded warnings for
2936         fields in builtin structs.
2937         (finalize_record_size): Likewise.
2938
2939 2009-10-14  Richard Guenther  <rguenther@suse.de>
2940
2941         * gimple.c (gtc_ob): New global.
2942         (struct type_pair_d): Replace pointers with type UIDs.
2943         (type_pair_hash): Adjust.
2944         (type_pair_eq): Likewise.
2945         (lookup_type_pair): Likewise.  Allocate from an obstack.
2946         (gimple_force_type_merge): Adjust.
2947         (gimple_types_compatible_p): Likewise.
2948         (free_gimple_type_tables): Free the obstack.
2949
2950 2009-10-14  Jakub Jelinek  <jakub@redhat.com>
2951
2952         * tree-parloops.c (separate_decls_in_region_debug_bind): Drop debug
2953         stmts setting DEBUG_EXPR_DECLs.
2954
2955         * cfgexpand.c (expand_debug_expr): Ignore zero-length bitfields.
2956         Don't crash if mode1 is VOIDmode.
2957
2958 2009-09-26  Vladimir Makarov  <vmakarov@redhat.com>
2959
2960         * params.def (PARAM_IRA_LOOP_RESERVED_REGS): New.
2961         * params.h (IRA_LOOP_RESERVED_REGS): New.
2962         * tree-pass.h (pass_subregs_of_mode_init,
2963         pass_subregs_of_mode_finish): Remove.
2964         * passes.c (pass_subregs_of_mode_init,
2965         pass_subregs_of_mode_finish): Remove.
2966         (pass_reginfo_init): Move before loop optimizations.
2967         * config/i386/i386.h (STACK_REG_COVER_CLASS): Define.
2968         * common.opt (fira-loop-pressure): New.
2969         * toplev.h (flag_ira_loop_pressure): New.
2970         * rtl.h (init_subregs_of_mode, finish_subregs_of_mode): New externals.
2971         * reginfo.c (init_subregs_of_mode, finish_subregs_of_mode):
2972         Make external and void type functions.
2973         (gate_subregs_of_mode_init, pass_subregs_of_mode_init,
2974         pass_subregs_of_mode_finish): Remove.
2975         * ira-costs.c (init_costs): Call init_subregs_of_mode.
2976         * regmove.c: Include ira.h.
2977         (regmove_optimize): Call ira_set_pseudo_classes after IRA based
2978         register pressure calculation in loops.
2979         * loop-invariant.c: Include REGS_H and ira.h.
2980         (struct loop_data): New members max_reg_pressure, regs_ref, and
2981         regs_live.
2982         (struct invariant): New member orig_regno.
2983         (curr_loop): New variable.
2984         (find_exits): Initialize regs_ref and regs_live.
2985         (create_new_invariant): Initialize orig_regno.
2986         (get_cover_class_and_nregs): New.
2987         (get_inv_cost): Make aregs_needed an array.  Use regs_needed as an
2988         array.  Add code for flag_ira_loop_pressure.
2989         (gain_for_invariant): Make new_regs an array.  Add code for
2990         flag_ira_loop_pressure.
2991         (best_gain_for_invariant): Ditto.
2992         (set_move_mark): New parameter gain.  Use it for debugging output.
2993         (find_invariants_to_move): Make regs_needed and new_regs an array.
2994         Add code for flag_ira_loop_pressure.
2995         (move_invariant_reg): Set up orig_regno.
2996         (move_invariants): Set up reg classes for pseudos for
2997         flag_ira_loop_pressure.
2998         (free_loop_data): Clear regs_ref and regs_live.
2999         (curr_regs_live, curr_reg_pressure, regs_set, n_regs_set,
3000         get_regno_cover_class, change_pressure, mark_regno_live,
3001         mark_regno_death, mark_reg_store, mark_reg_clobber,
3002         mark_reg_death, mark_ref_regs, calculate_loop_reg_pressure): New.
3003         (move_loop_invariants): Calculate pressure.  Initialize curr_loop.
3004         * ira.c (ira): Call ira_set_pseudo_classes after IRA based
3005         register pressure calculation in loops if new regs were added.
3006         Call finish_subregs_of_mode.
3007         * opts.c (decode_options): Set up flag_ira_loop_pressure.
3008         * Makefile.in (loop-invariant.o): Add ira.h.
3009         (regmove.o): Ditto.
3010         * doc/invoke.texi (-fira-loop-pressure, ira-loop-reserved-regs):
3011         Describe.
3012         * doc/tm.texi (STACK_REG_COVER_CLASS): Describe.
3013
3014 2009-10-14  Richard Guenther  <rguenther@suse.de>
3015
3016         * lto-symtab.c (lto_symtab_compatible): Fold in ...
3017         (lto_symtab_merge): ... here.  Rewrite both to take the
3018         prevailing and a to-be-merged entry and to queue diagnostics properly.
3019         (lto_symtab_resolve_replaceable_p): New predicate for
3020         symbol resolution.
3021         (lto_symtab_resolve_can_prevail_p): Likewise.
3022         (lto_symtab_resolve_symbols): Rewrite.  Fold in code that
3023         handles merging commons by choosing the largest decl.  Fold
3024         in code that gives ODR errors.
3025         (lto_symtab_merge_decls_2): Simplify a lot.  Emit queued
3026         diagnostics here.
3027         (lto_symtab_merge_decls_1): Re-structure.  Deal with the
3028         case of no prevailing decl here.  Diagnose mismatches
3029         in object types here.  Drop all but the prevailing decls.
3030         (lto_symtab_prevailing_decl): Return the single prevailing decl.
3031         * lto-streamer-in.c (lto_input_tree_ref): Deal with
3032         VIEW_CONVERT_EXPRs in decl slots.  Unshare the tree in this case.
3033
3034 2009-10-14  Richard Guenther  <rguenther@suse.de>
3035
3036         PR lto/41521
3037         * lto-streamer-in.c (input_bb): Replace debug stmts with
3038         nops instead of dropping them.
3039
3040 2009-10-14  Nick Clifton  <nickc@redhat.com>
3041
3042         * gcc/doc/extended.texi: Replace the dash character with @minus{}
3043         in situations where it is being used as a minus symbol.
3044         * gcc/doc/tm.texi: Likewise.
3045         * gcc/doc/md.texi: Likewise.
3046
3047 2009-10-14  Jakub Jelinek  <jakub@redhat.com>
3048
3049         PR preprocessor/41543
3050         * input.h (BUILTINS_LOCATION): Change to 1 from 2.
3051         Assert BUILTINS_LOCATION < RESERVED_LOCATION_COUNT.
3052         * tree.c: Include intl.h.
3053         (expand_location): Handle BUILTINS_LOCATION.
3054         * Makefile.in (tree.o): Depend on intl.h.
3055
3056         PR debug/41695
3057         * dwarf2out.c (dwarf2out_var_location): Always clear
3058         last_postcall_label when changing last_label.
3059
3060 2009-10-14  Pascal Obry  <obry@adacore.com>
3061
3062         * gcc.c (DEFAULT_SWITCH_CURTAILS_COMPILATION): Add -E.
3063         (process_command): Handle -E as done with -c and -S.  Do not add
3064         the target executable suffix to the output file when -E is used.
3065         (main): Adjust error message accordingly.
3066
3067 2009-10-14  Alexandre Oliva  <aoliva@redhat.com>
3068
3069         PR debug/41343
3070         PR debug/41447
3071         PR debug/41264
3072         PR debug/41338
3073         * tree.c (tree_node_structure_for_code): DEBUG_EXPR_DECL uses
3074         decl with rtl.
3075         (tree_code_size): Likewise.
3076
3077 2009-10-13  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
3078
3079         * builtins.c (fold_builtin_1): Support complex "arc" functions.
3080         * real.h (HAVE_mpc_arc): Define.
3081
3082 2009-10-14  Kaz Kojima  <kkojima@gcc.gnu.org>
3083
3084         * config/sh/sh.c (TARGET_BUILTIN_DECL): Define.
3085         (struct builtin_description): Add fndecl field.
3086         (bdesc): Remove const qualifier.  Update initializer.
3087         (sh_media_init_builtins): Remove const qualifier for d.  Record
3088         the result of add_builtin_function to the fndecl field.
3089         (sh_builtin_decl): New.
3090         (sh_media_builtin_decl): New.
3091
3092 2009-10-14  Hans-Peter Nilsson  <hp@axis.com>
3093
3094         PR target/38948
3095         * config/cris/cris.h (SECONDARY_RELOAD_CLASS): Handle reload
3096         requests between special registers.
3097
3098 2009-10-13  Eric Botcazou  <ebotcazou@adacore.com>
3099
3100         * dwarf2out.c (mem_loc_descriptor): Accept UNGT as well.
3101
3102 2009-10-13  Richard Henderson  <rth@redhat.com>
3103
3104         PR tree-optimization/41377
3105         * tree-eh.c (unsplit_eh): Propagate degenerate PHIs.
3106         (cleanup_empty_eh_merge_phis): New change_region parameter;
3107         pass it on to redirect_eh_edge_1.  Update callers.
3108         (cleanup_empty_eh_unsplit): Don't require an existing EH label
3109         at the destination block.
3110
3111 2009-10-13  Basile Starynkevitch  <basile@starynkevitch.net>
3112
3113         * passes.c (register_pass): Replaced gcc_unreachable by
3114         fatal_error on failure. Mentions plugins in comments & messages.
3115
3116 2009-10-13  Jakub Jelinek  <jakub@redhat.com>
3117
3118         PR target/41693
3119         * rtl.h (DEBUG_EXPR_TREE_DECL): Define.
3120         * sched-vis.c (print_value): Use it.
3121         * cselib.c (cselib_hash_rtx): Likewise.
3122         * print-rtl.c (print_rtx): Likewise.
3123         * cfgexpand.c (expand_debug_rtx): Likewise.
3124         * var-tracking.c (vt_expand_loc_callback): Likewise.
3125
3126 2009-10-13  Richard Guenther  <rguenther@suse.de>
3127
3128         PR lto/41565
3129         * opts.c (handle_option): Split out code to handle setting
3130         the options flag var ...
3131         (set_option): ... here.
3132         * opts.h (set_option): Declare.
3133         * lto-opts.c (register_user_option_p): Include -fexceptions
3134         and all position independent code variants.
3135         (handle_common_option): Remove.
3136         (lto_reissue_options): Use set_option.
3137
3138 2009-10-13  Martin Jambor  <mjambor@suse.cz>
3139
3140         PR tree-optimization/41661
3141         * ipa-prop.c (compute_complex_pass_through): Allow only operations
3142         that are tcc_comparisons or do not change the type in any
3143         un-usleless way.
3144         * ipa-cp.c (ipcp_lattice_from_jfunc): Request boolean type when
3145         folding tcc_comparison operations.
3146
3147 2009-10-13  Andreas Krebbel  <Andreas.Krebbel@de.ibm.com>
3148
3149         * config/s390/s390.c (s390_encode_section_info): Handle BLKmode
3150         properly.
3151
3152 2009-10-12  Alexandre Oliva  <aoliva@redhat.com>
3153
3154         PR debug/41343
3155         PR debug/41447
3156         PR debug/41264
3157         PR debug/41338
3158         * tree.def (DEBUG_EXPR_DECL): New.
3159         * rtl.def (DEBUG_EXPR): New.
3160         * gengtype.c (adjust_field_rtx_def): Handle it.
3161         * tree-ssa.c (propagate_var_def_into_debug_stmts): Rename to...
3162         (insert_debug_temp_for_var_def): ... this.  Drop support for
3163         moving.  Take iterator for def stmt; insert debug stmt before it.
3164         Scan early for use count and kind in debug stmts.
3165         (propagate_defs_into_debug_stmts): Rename to...
3166         (insert_debug_temps_for_defs): ... this.  Likewise.
3167         * tree.h (DEBUG_TEMP_UID): New.
3168         * tree.c (next_debug_decl_uid): New.
3169         (make_node_stat): Count debug decls separately.
3170         (copy_node_stat): Likewise.
3171         * cfgexpand.c (expand_debug_expr): Handle DEBUG_EXPR_DECL.
3172         * var-tracking.c (dv_is_decl_p): Recognize it.
3173         (VALUE_RECURSED_INTO): Apply to DEBUG_EXPRs too.
3174         (track_expr_p): Track expanded DEBUG_EXPR_DECLs.
3175         (vt_expand_loc_callback): Expand DEBUG_EXPRs.
3176         (emit_note_insn_var_location): Don't emit notes for DEBUG_EXPR_DECLs.
3177         * cselib.c (rtx_equal_for_cselib_p): Handle DEBUG_EXPR.
3178         (cselib_hash_rtx): Likewise.
3179         (cselib_expand_value_rtx_1): Use callback for DEBUG_EXPR.
3180         * tree-ssa-operands.c (get_expr_operands): Skip DEBUG_EXPR_DECLs in
3181         debug bind stmts.
3182         * emit-rtl.c (verify_rtx_sharing): Handle DEBUG_EXPR and VALUE.
3183         (copy_rtx_if_shared_1, reset_used_flags, set_used_flags): Likewise.
3184         * rtl.c (copy_rtx): Likewise.
3185         (rtx_equal_p_cb, rtx_equal_p): Handle DEBUG_EXPR.
3186         * print-rtl.c (print_rtx): Likewise.
3187         * sched-vis.c (print_value): Likewise.
3188         (print_insn): Handle DEBUG_EXPR_DECL.
3189         * tree-dump.c (dequeue_and_dump): Likewise.
3190         * tree-pretty-print.c (dump_decl_name, dump_generic_node): Likewise.
3191         * gimple-iterator (gsi_replace): Check for same lhs.
3192         (gsi_remove): Insert debug temps.
3193         * tree-ssa-loop-im.c (rewrite_reciprocal): Replace with same lhs.
3194         (move_computations_stmt): Drop explicit propagation into debug stmts.
3195         (rewrite_bittest): Likewise.  Use gsi_remove for propagation.
3196         * tree-ssa-reassoc.c (rewrite_expr_tree, linearize_expr): Likewise.
3197         * tree-ssa-sink.c (statement_sink_location): Likewise.
3198         * tree-ssa-forwprop (forward_propagate_addr_expr): Likewise.
3199         * tree-ssanames.c (release_ssa_name): Adjust for rename.
3200         * tree-flow.h: Likewise.
3201         * tree-ssa-dce.c (mark_stmt_if_obviously_necessary): Don't mark
3202         debug temps without values.
3203         (eliminate_unnecessary_stmts): Don't discard just-inserted
3204         debug stmts.
3205
3206 2009-10-12  Hans-Peter Nilsson  <hp@axis.com>
3207
3208         PR target/26515
3209         * config/cris/cris.md (andu): Check that operand 1 is one of the
3210         general registers.  Fix typo in head comment.
3211
3212 2009-10-12  Stefan Dösinger  <stefan@codeweavers.com>
3213
3214         * config/i386/i386.md (vswapmov): New.
3215         * config/i386/i386.c (ix86_handle_fndecl_attribute): New.
3216         (ix86_function_ms_hook_prologue): New.
3217         (ix86_expand_prologue): Handle ms_hook_prologue attribute.
3218         * configure.ac: Test for swap suffix support in as.
3219         * configure: Rebuild.
3220
3221 2009-10-12  Jakub Jelinek  <jakub@redhat.com>
3222
3223         PR target/41680
3224         * config/i386/i386.md (split after *testqi_ext_3_rex64): Only narrow
3225         paradoxical subregs to prevent partial register stalls if the inner
3226         mode is integer mode.
3227
3228 2009-10-12  Uros Bizjak  <ubizjak@gmail.com>
3229
3230         * config/i386/i386.md (*setcc_<mode>_2): Remove insn pattern.
3231
3232 2009-10-12  Dodji Seketeli  <dodji@redhat.com>
3233
3234         PR c++/41570
3235         * gcc/dwarf2out.c (template_parameter_pack_die,
3236         gen_formal_parameter_pack_die): Use add_name_and_src_coords_attributes.
3237
3238 2009-10-12  Alexandre Oliva  <aoliva@redhat.com>
3239
3240         PR debug/41616
3241         * tree-into-ssa.c (insert_phi_nodes_for): Build debug bind stmts
3242         on updates too.
3243         (maybe_register_def): Likewise.  Take stmt iterator.
3244         (rewrite_update_stmt): Take stmt iterator and pass it on.
3245         (rewrite_update_enter_block): Pass stmt iterator.
3246
3247 2009-10-11  Andrew Pinski  <andrew_pinski@playstation.sony.com>
3248
3249         * config/spu/spu.c (TARGET_BUILTIN_DECL): Define.
3250         (spu_builtin_decl): New function.
3251
3252 2009-10-12  Uros Bizjak  <ubizjak@gmail.com>
3253
3254         * config/i386/i386.md (SWIM): New mode iterator.
3255         (mov<mode>cc): Macroize expander from mov{qi,hi,si,di}cc patterns
3256         using SWIM mode iterator.
3257         (x86_mov<mode>cc_0_m1): Macroize insn from x86_mov{si,di}cc_0_m1
3258         patterns using SWI48 mode iterator.
3259         (*x86_mov<mode>cc_0_m1_se):  Macroize insn from
3260         *x86_mov{si,di}cc_0_m1_se patterns using SWI48 mode iterator.
3261         (*x86_mov<mode>cc_0_m1_neg): New insn pattern.
3262         (*mov<mode>cc_noc): Macroize insn from *mov{hi,si,di}cc_noc
3263         patterns using SWI248 mode iterator.
3264         * config/i386/i386.c (ix86_expand_int_movcc): Update the call to
3265         gen_x86_movdicc_0_m1_rex64 for renamed function
3266
3267 2009-10-11  Jose Ruiz  <ruiz@adacore.com>
3268             Eric Botcazou  <ebotcazou@adacore.com>
3269
3270         PR target/33743
3271         * config/sparc/sol2.h (MD_UNWIND_SUPPORT): Define.
3272         * config/sparc/sol2-unwind.h: New file.
3273
3274 2009-10-11  Olivier Hainque  <hainque@adacore.com>
3275             Eric Botcazou  <ebotcazou@adacore.com>
3276
3277         PR target/33743
3278         * config/i386/sol2.h (MD_UNWIND_SUPPORT): Define.
3279         * config/i386/sol2-unwind.h: New file.
3280
3281 2009-10-11  H.J. Lu  <hongjiu.lu@intel.com>
3282
3283         PR target/41665
3284         * config/i386/i386.md (addsi_1_zext): Get the proper second
3285         operand for lea.
3286
3287 2009-10-11  Richard Sandiford  <rdsandiford@googlemail.com>
3288
3289         * simplify-rtx.c (simplify_replace_rtx): Use rtx_equal_p for
3290         all OLD_RTXes, not just REGs.  Use copy_rtx to create the
3291         replacement value.
3292
3293 2009-10-11  Richard Guenther  <rguenther@suse.de>
3294
3295         * gimple.c (iterative_hash_type_name): Do not handle special
3296         anonymous names.
3297
3298 2009-10-11  Uros Bizjak  <ubizjak@gmail.com>
3299
3300         * config/i386/i386.md (*setcc_di_1): New insn_and_split pattern.
3301         (*setcc_si_1_and): Ditto.
3302         (*setcc_si_1_movzbl): Ditto.
3303         (*setcc_<mode>_2): Ditto.
3304         (*setcc_qi): Rename from *setcc_1.
3305         (*setcc_qi_slp): Rename from *setcc_2.
3306
3307         (*zero_extendqihi2_movzbw_and splitter): Use ix86_expand_clear.
3308         (*zero_extendqisi2_movzbw_and splitter): Ditto.
3309
3310         * config/i386/i386.c (ix86_expand_clear): Remove reload_completed from
3311         "if" condition, there is already assert with reload_completed present.
3312
3313 2009-10-11  Gerald Pfeifer  <gerald@pfeifer.com>
3314
3315         * plugin.c (try_init_one_plugin): Improve constness of variable err.
3316
3317 2009-10-10  Gerald Pfeifer  <gerald@pfeifer.com>
3318
3319         * doc/install.texi (Final install): Refer to
3320         http://gcc.gnu.org/bugs/ for bug reporting.
3321
3322 2009-10-10  Peter Bergner  <bergner@vnet.ibm.com>
3323
3324         * configure.ac: Add test for dci instruction.
3325         * configure: Regenerate.
3326         * config.in: Likewise.
3327         * config.gcc: Handle --with-cpu=476 and --with-cpu=476fp.
3328         * doc/invoke.texi: Add cpu_type 476 and 476fp.
3329         (-mmulhw): Add 476 to description.
3330         (-mdlmzb): Likewise.
3331         * config/rs6000/t-fprules (MULTILIB_MATCHES_FLOAT): Include -mcpu=476.
3332         * config/rs6000/rs6000.c (processor_costs): Add ppc476_cost.
3333         (processor_target_table): Add 476 and 476fp entries.
3334         (rs6000_override_options): Use ppc476_cost for PROCESSOR_PPC476.
3335         (rs6000_issue_rate): Add CPU_PPC476.
3336         * config/rs6000/rs6000.h (ASM_CPU_476_SPEC): Define.
3337         (ASM_CPU_SPEC): Pass %(asm_cpu_476) for -mcpu=476 and -mcpu=476fp.
3338         (processor_type): Add PROCESSOR_PPC476.
3339         (EXTRA_SPECS): Add asm_cpu_476 string.
3340         * config/rs6000/rs6000.md (define_attr "type"): Add isel attribute.
3341         (define_attr "cpu"): Add ppc476.
3342         Include 476.md.
3343         Update comments for 476.
3344         (isel_signed, isel_unsigned): Change to use "isel" type attribute.
3345         * config/rs6000/vxworks.h (CPP_SPEC): Handle 464 and 476.
3346         Update copyright year.
3347         * config/rs6000/476.md: New file.
3348         * config/rs6000/40x.md: Add description for "isel" attribute.
3349         Update copyright year.
3350         * config/rs6000/440.md: Likewise.
3351         * config/rs6000/603.md: Likewise.
3352         * config/rs6000/6xx.md: Likewise.
3353         * config/rs6000/7450.md: Likewise.
3354         * config/rs6000/7xx.md: Likewise.
3355         * config/rs6000/8540.md: Likewise.
3356         * config/rs6000/cell.md: Likewise.
3357         * config/rs6000/e300c2c3.md: Likewise.
3358         * config/rs6000/e500mc.md: Likewise.
3359         * config/rs6000/mpc.md: Likewise.
3360         * config/rs6000/power4.md: Likewise.
3361         * config/rs6000/power5.md: Likewise.
3362         * config/rs6000/power6.md: Likewise.
3363         * config/rs6000/power7.md: Likewise.
3364         * config/rs6000/rios1.md: Likewise.
3365         * config/rs6000/rios2.md: Likewise.
3366         * config/rs6000/rs64.md: Likewise.
3367
3368 2009-10-10  Richard Guenther  <rguenther@suse.de>
3369
3370         PR tree-optimization/41654
3371         * tree-ssa-ifcombine.c (ifcombine_ifandif): Properly canonicalize
3372         a cond expr before calling gimple_cond_set_condition_from_tree.
3373         (ifcombine_iforif): Likewise.
3374
3375 2009-10-09  Ian Lance Taylor  <iant@google.com>
3376
3377         * configure.ac: Use AC_SEARCH_LIBS to find dlopen.
3378         * configure: Rebuild.
3379
3380 2009-10-09  Neil Vachharajani <nvachhar@google.com>
3381
3382         * doc/cpp.texi (Other Directives): Do not list #ident and #sccs as
3383         deprecated.
3384
3385 2009-10-09  Richard Guenther  <rguenther@suse.de>
3386
3387         PR lto/41638
3388         * target-def.h (TARGET_BUILTIN_DECL): Define.
3389         (TARGET_INITIALIZER): Add TARGET_BUILTIN_DECL.
3390         * target.h (struct gcc_target): Add builtin_decl target hook.
3391         * doc/tm.texi (TARGET_BUILTIN_DECL): Document.
3392         * lto-streamer-in.c (lto_get_builtin_tree): Fix handling of
3393         target builtins.
3394         * lto-streamer-out.c (lto_output_tree_pointers): Use sorry,
3395         not gcc_unreachable.
3396         (lto_output_builtin_tree): Sorry if the target does not support
3397         streaming target builtins.
3398         * config/rs6000/rs6000.c (TARGET_BUILTIN_DECL): Define.
3399         (rs6000_builtin_decl): New function.
3400         * config/i386/i386.c (TARGET_BUILTIN_DECL): Define.
3401         (ix86_builtin_decl): New function.
3402
3403 2009-10-09  Jakub Jelinek  <jakub@redhat.com>
3404
3405         PR preprocessor/41445
3406         * c-ppoutput.c (do_line_change): New function.
3407         (cb_line_change): Use it.
3408         (scan_translation_unit): Call do_line_change if
3409         avoid_paste or PREV_WHITE and token location is on a different line
3410         than print.src_line.
3411
3412         PR debug/40521
3413         * dwarf2out.c (dwarf2out_init): Test whether
3414         HAVE_GAS_CFI_SECTIONS_DIRECTIVE is non-zero instead of checking
3415         it is defined.
3416
3417         PR rtl-optimization/41646
3418         * calls.c (expand_call): For BLKmode types returned in registers
3419         avoid likely spilled hard regs in copy_blkmode_from_reg generated
3420         insns.
3421
3422 2009-10-09  Richard Guenther  <rguenther@suse.de>
3423
3424         PR tree-optimization/41634
3425         * tree-ssa-dom.c (remove_local_expressions_from_table): Assert
3426         we remove the correct elements.
3427         (optimize_stmt): Make sure to update stmt operands before
3428         optimizing redundancies.
3429
3430 2009-10-09  Andreas Krebbel  <Andreas.Krebbel@de.ibm.com>
3431
3432         * config/s390/s390.md ("prefetch"): Remove stcmh for prefetching.
3433
3434 2009-10-09  Richard Guenther  <rguenther@suse.de>
3435
3436         PR driver/41637
3437         * lto-wrapper.c (ltrans_output_file, flto_out, args_name): New
3438         globals.
3439         (lto_wrapper_exit): New function.
3440         (fatal): Use it.
3441         (fatal_perror): Likewise.
3442         (fork_execute): Use global args_name, do not free it.
3443         (run_gcc): Use global ltrans_output_file, flto_out, do not free them.
3444         * lto-streamer.h: Remove duplicate prototypes.
3445
3446 2009-10-09  Richard Guenther  <rguenther@suse.de>
3447
3448         * cgraph.c (cgraph_create_edge): Check for NULL call_stmt
3449         before calling stmt_can_throw_external.
3450
3451 2009-10-09  Eric Botcazou  <ebotcazou@adacore.com>
3452
3453         PR tree-optimization/40071
3454         * tree-vect-data-refs.c (vect_create_data_ref_ptr): Build a ref-all
3455         pointer if the original data reference doesn't conflict with the
3456         created vector data reference.  Fix long line.
3457
3458 2009-10-09  Uros Bizjak  <ubizjak@gmail.com>
3459
3460         * config/i386/i386.md (any_div): New code iterator.
3461         (u): Handle div and udiv.
3462         (sgnprefix): Ditto.
3463         (<u>divqi3): Macroize insn from {,u}divqi3  using any_div
3464         code iterator.
3465         (lfloor<MODEF:mode><SWI48:mode>2): Macroize insn from
3466         lfloor<mode>{si,di}2 patterns using SWI48 mode iterator.
3467         (lceil<MODEF:mode><SWI48:mode>2): Macroize insn from
3468         lceil<mode>{si,di}2 patterns using SWI48 mode iterator.
3469
3470 2009-10-08  Joseph Myers  <joseph@codesourcery.com>
3471
3472         * gcc.c (main): Remove trailing "." from diagnostics.
3473
3474 2009-10-08  Cary Coutant  <ccoutant@google.com>
3475
3476         Add support for debugging with ICF (Identical Code Folding).
3477         * calls.c (debug.h): New #include.
3478         (emit_call_1): Call virtual_call_token debug hook.
3479         * common.opt (-fenable-icf-debug): New option.
3480         * dwarf2out.c (dwarf2_debug_hooks): Add entries for new hooks (two
3481         locations in the source).
3482         (poc_label_num): New variable.
3483         (dcall_entry, vcall_entry): New typedefs.
3484         (dcall_table, vcall_table): New variables.
3485         (struct vcall_insn): New type.
3486         (vcall_insn_table): New variable.
3487         (DEBUG_DCALL_SECTION, DEBUG_VCALL_SECTION): New macros.
3488         (size_of_dcall_table): New function.
3489         (output_dcall_table): New function.
3490         (size_of_vcall_table): New function.
3491         (output_vcall_table): New function.
3492         (dwarf2out_direct_call): New function.
3493         (vcall_insn_table_hash): New function.
3494         (vcall_insn_table_eq): New function.
3495         (dwarf2out_virtual_call_token): New function.
3496         (dwarf2out_virtual_call): New function.
3497         (dwarf2out_init): Allocate new tables and sections.
3498         (prune_unused_types): Mark DIEs referenced from direct call table.
3499         (dwarf2out_finish): Output direct and virtual call tables.
3500         * final.c (final_scan_insn): Call direct_call and virtual_call
3501         debug hooks.
3502         * debug.h (struct gcc_debug_hooks): Add direct_call,
3503         virtual_call_token, virtual_call hooks.
3504         (debug_nothing_uid): New function.
3505         * debug.c (do_nothing_debug_hooks): Add dummy entries for new hooks.
3506         (debug_nothing_uid): New function.
3507         * dbxout.c (dbx_debug_hooks): Add dummy entries for new hooks.
3508         (xcoff_debug_hooks): Likewise.
3509         * sdbout.c (sdb_debug_hooks): Likewise.
3510         * vmsdbgout.c (vmsdbg_debug_hooks): Likewise.
3511         * doc/invoke.texi (-fenable-icf-debug): New option.
3512
3513 2009-10-08  Alexandre Oliva  <aoliva@redhat.com>
3514
3515         PR debug/41353
3516         * regmove.c (regmove_backward_pass): Replace src with dst in the
3517         debug insn, and check for dst before rather than after.
3518
3519 2009-10-08  Janis Johnson <janis187@us.ibm.com>
3520
3521         * config/rs6000/rs6000.c (rs6000_delegitimize_address): Remove.
3522         (TARGET_DELEGITIMIZE_ADDRESS): Likewise.
3523
3524 2009-10-08  Jan Hubicka  <jh@suse.cz>
3525
3526         PR middle-end/41626
3527         * cgraphbuild.c (record_reference): When parameter DATA is NULL,
3528         do not mark cgraph nodes as needed.
3529         (record_references_in_initializer): Add new only_vars parameter.
3530         * cgraph.h (record_references_in_initializer): New parameter.
3531         * varasm.c (assemble_variable): Update call.
3532         * varpool.c (varpool_analyze_pending_decls): Always look for
3533         referenced vars.
3534
3535 2009-10-08  Anatoly Sokolov  <aesok@post.ru>
3536
3537         * config/avr/avr.c (last_insn_address) Remove variable.
3538         (expand_prologue): Don't initialise last_insn_address variable.
3539         (final_prescan_insn): Don't output insn size.
3540         * config/avr/avr.opt (msize): Remove switch.
3541         * doc/invoke.texi (AVR Options): Remove documentation of -msize
3542         switch.
3543
3544 2009-10-08  Adam Nemet  <anemet@caviumnetworks.com>
3545
3546         * combine.c (label_tick_ebb_start): Fix comment.
3547         (combine_instructions): Set label_tick and label_tick_ebb_start before
3548         calling setup_incoming_promotions.  Start them from 1.  Increment
3549         label_tick instead of deriving it from the BB index.  Rather than
3550         comparing ticks use the block from the previous iteration to decide
3551         whether to start a new EBB.  Remove empty lines before function.
3552
3553 2009-10-08  Michael Matz  <matz@suse.de>
3554
3555         PR middle-end/41573
3556         * builtins.c (fold_builtin_isascii): Use fold_build2.
3557         (fold_builtin_isdigit): Ditto.
3558         * except.c (duplicate_eh_regions_1): Tolerate NULL labels.
3559         * tree-cfg.c (struct rus_data, remove_useless_stmts_warn_notreached,
3560         remove_useless_stmts_cond, remove_useless_stmts_tf,
3561         remove_useless_stmts_tc, remove_useless_stmts_bind,
3562         remove_useless_stmts_goto, remove_useless_stmts_label,
3563         remove_useless_stmts_1, remove_useless_stmts,
3564         pass_remove_useless_stmts): Remove.
3565         * tree-pass.h (pass_remove_useless_stmts): Don't declare.
3566         * passes.c (init_optimization_passes): Don't add
3567         pass_remove_useless_stmts.
3568         * tree-eh.c (lower_eh_constructs_2): Handle empty cleanups.
3569         * tree.c (free_lang_data_in_decl): Don't clear DECL_INITIAL of
3570         static constants.
3571         * lto-symtab.c (lto_symtab_register_decl): Accepts DECL_INITIAL
3572         for static constants.
3573         * lto-streamer-out.c (output_gimple_stmt): Handle GIMPLE_NOP.
3574         * lto-streamer-in.c (input_gimple_stmt): Handle GIMPLE_NOP.
3575
3576 2009-10-08  Richard Guenther  <rguenther@suse.de>
3577
3578         * gimple.c (free_gimple_type_tables): New function.
3579         * gimple.h (free_gimple_type_tables): Declare.
3580
3581 2009-10-07  Mark Heffernan  <meheff@google.com>
3582
3583         * ipa-prop.c (ipa_print_node_params) Only print
3584         names of named arguments.
3585
3586 2009-10-08  Rafael Avila de Espindola  <espindola@google.com>
3587
3588         * gcc.c (LINK_COMMAND_SPEC): Pass libc with -pass-through if it is
3589         being statically linked.
3590
3591 2009-10-08  Rainer Orth  <ro@CeBiTec.Uni-Bielefeld.DE>
3592
3593         * collect2.c (add_lto_object): Only define if OBJECT_FORMAT_NONE.
3594
3595 2009-10-08  Jan Hubicka  <jh@suse.cz>
3596
3597         PR bootstrap/41620
3598         * ipa.c (cgraph_externally_visible_p,
3599         function_and_variable_visibility,
3600         whole_program_function_and_variable_visibility): Skip non-finalized
3601         nodes.
3602
3603 2009-10-08  Nick Clifton  <nickc@redhat.com>
3604
3605         * config/mn10300/mn10300.h (CONSTANT_ADDRESS_P): Do not allow
3606         CONST_DOUBLEs.
3607
3608 2009-10-08  Andreas Tobler  <a.tobler@schweiz.org>
3609
3610         PR bootstrap/37739
3611         * config.host: Use config/x-cflags-O1 for powerpc FreeBSD.
3612
3613 2009-10-07  Joseph Myers  <joseph@codesourcery.com>
3614
3615         PR c/41182
3616         * c-common.c (c_fully_fold_internal): Strip nops from the result
3617         of recursive calls to c_fully_fold_internal.
3618         (c_wrap_maybe_const): New.
3619         (c_save_expr): Use c_wrap_maybe_const.
3620         * c-common.h (c_wrap_maybe_const): Declare.
3621         * c-typeck.c (build_conditional_expr, c_finish_stmt_expr,
3622         build_binary_op): Use c_wrap_maybe_const.
3623
3624 2009-10-07  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
3625
3626         * real.c: Fix comment to reflect actual exponent size.
3627
3628 2009-10-08  Ben Elliston  <bje@au.ibm.com>
3629
3630         * config/rs6000/a2.md: Add FSF comment header.
3631
3632 2009-10-07  Uros Bizjak  <ubizjak@gmail.com>
3633
3634         * config/i386/i386.md (any_extend): New code iterator.
3635         (u, s): New code attributes.
3636         (sgnprefix): Ditto.
3637         (DWIH): Rewrite as code iterator for SI and DI modes.
3638         (DWI): Rewrite as mode attribute.
3639         (dwi): New mode attribute.
3640         (di): Depend on SI mode and DI mode.
3641         (doubleint_general_operand): Remove mode attribute.
3642
3643         (*lea_1): Macroize insn from *lea_1_rex64 and *lea_1 patterns using
3644         DWIH mode iterator.
3645
3646         (*add<mode>3_doubleword): Use DWIH as the base mode iterator.
3647         (*sub<mode>3_doubleword): Ditto.
3648
3649         (mul<mode>3): Macroize expander from mul{hi,si,di}3 patterns
3650         using SWIM248 mode iterator.
3651         (*mul<mode>3_1): Macroize insn from mul{si,di}3_1 patterns
3652         using SWI48 mode iterator.
3653         (<u>mul<mode><dwi>3): Macroize expander from {,u}mul{sidi,diti}3
3654         patterns using DWIH mode iterator and any_extend code iterator.
3655         (<u>mulqihi3): Macroize expander from {,u}mulqihi3 patterns
3656         using any_extend code iterator.
3657         (*<u>mul<mode><dwi>3_1): Macroize insn from {,u}mul{sidi,diti}3_1
3658         patterns using DWIH mode iterator and any_extend code iterator.
3659         (*<u>mulqihi3_1): Macroize insn from {,u}mulqihi3_1 patterns
3660         using any_extend code iterator.
3661         (<s>mul<mode>3_highpart): Macroize expander from
3662         {s,u}mul{si,di}3_highpart patterns using DWIH mode iterator
3663         and any_extend code iterator.
3664         (*<s>muldi3_highpart_1): Macroize insn from
3665         *{s,u}muldi3_highpart_rex64 patterns using any_extend code iterator.
3666         (*<s>mulsi3_highpart_1): Macroize insn from *{s,u}mulsi3_highpart_1
3667         patterns using any_extend code iterator.
3668         (*<s>mulsi3_highpart_zext): Macroize insn from
3669         *{s,u}mulsi3_highpart_zext patterns using any_extend code iterator.
3670
3671 2009-10-07  Jakub Jelinek  <jakub@redhat.com>
3672
3673         * dwarf2out.c (tree_add_const_value_attribute_for_decl): Don't add
3674         DW_AT_const_value if VAR_DIE already has DW_AT_abstract_origin
3675         refering to a DIE with DW_AT_const_value.
3676
3677 2009-10-07  Vladimir Makarov  <vmakarov@redhat.com>
3678
3679         PR middle-end/22072
3680         * ira-lives.c (check_and_make_def_conflict): Process all operands.
3681
3682 2009-10-06  Jan Hubicka  <jh@suse.cz>
3683
3684         * cgraph.c (cgraph_node_can_be_local): Handle externally visible nodes
3685         correctly.
3686
3687 2009-10-06  Uros Bizjak  <ubizjak@gmail.com>
3688
3689         * config/i386/i386.md (*lea_1_rex64, *lea_1, *lea_1_zext,
3690         *lea_2_rex64): Move before *add<mode>_1 pattern.
3691
3692 2009-10-07  Jan Hubicka  <jh@suse.cz>
3693
3694         * collect2.c (main): Add -fno-whole-program.
3695         * gcc.c (set_collect_gcc_options): Do not remove whole program here.
3696
3697 2009-10-07  Jan Hubicka  <jh@suse.cz>
3698
3699         * lto-symtab.c (lto_cgraph_replace_node): Assert that inline clones
3700         has no address taken.
3701         * cgraph.c (cgraph_mark_needed_node): Assert that inline clones are
3702         never needed.
3703         (cgraph_clone_node): Clear externally_visible flag for clones.
3704         * cgraph.h (cgraph_only_called_directly_p,
3705         cgraph_can_remove_if_no_direct_calls_p): New predicates.
3706         * tree-pass.h (pass_ipa_whole_program_visibility): Declare.
3707         * ipa-cp.c (ipcp_cloning_candidate_p): Use new predicate.
3708         (ipcp_initialize_node_lattices, ipcp_estimate_growth,
3709         ipcp_insert_stage): Likwise.
3710         * cgraphunit.c (cgraph_decide_is_function_needed): Do not compute
3711         externally_visible flag.
3712         (verify_cgraph_node): Verify that inline clones look right.
3713         (process_function_and_variable_attributes): Do not set
3714         externally_visible flags.
3715         (ipa_passes): Avoid executing small_ipa_passes at LTO stage; they've
3716         been already run.
3717         * lto-cgraph.c (lto_output_node): Assert that inline clones are not
3718         boundaries.
3719         * ipa-inline.c (cgraph_clone_inlined_nodes): Use new predicates;
3720         clear externally_visible when turning into inline clones
3721         (cgraph_mark_inline_edge): Use new predicates.
3722         (cgraph_estimate_growth): Likewise.
3723         (cgraph_decide_inlining): Likewise.
3724         * ipa.c (cgraph_postorder): Likewise.
3725         (cgraph_remove_unreachable_nodes): Likewise; sanity check
3726         that inline clones are not needed.
3727         (cgraph_externally_visible_p): New predicate.
3728         (function_and_variable_visibility): Add whole_program parameter;
3729         always set externally_visible flag; handle COMDAT function
3730         privatization.
3731         (local_function_and_variable_visibility): New function.
3732         (gate_whole_program_function_and_variable_visibility): New function.
3733         (whole_program_function_and_variable_visibility): New function.
3734         (pass_ipa_whole_program_visibility): New function.
3735         * passes.c  (init_optimization_passes): Add whole program visibility
3736         pass.
3737         (do_per_function_toporder, function_called_by_processed_nodes_p): Do
3738         not care about needed/reachable flags.
3739         * varpool.c: Include flags.h
3740         (decide_is_variable_needed): When doing LTO assume whole-program mode.
3741         (varpool_finalize_decl): When we are in LTO read-back, all variables
3742         are analyzed.
3743         (varpool_analyze_pending_decls): Skip analyzis of analyzed vars.
3744
3745 2009-10-07  Andreas Krebbel  <Andreas.Krebbel@de.ibm.com>
3746
3747         * config/s390/tpf.h (TARGET_DEFAULT): Remove MASK_HARD_FLOAT and
3748         add MASK_HARD_DFP.
3749
3750 2009-10-07  Andreas Krebbel  <Andreas.Krebbel@de.ibm.com>
3751
3752         * config.gcc: Don't include the makefile fragments intended for
3753         libgcc.
3754         * config/s390/fixdfdi.h: File removed.
3755         * config/s390/libgcc-glibc.ver: File removed.
3756         * config/s390/s390.h: Remove the fixdfdi.h hack.
3757         * config/s390/t-crtstuff: File moved to libgcc dir.
3758         * config/s390/t-linux: Likewise.
3759         * config/s390/t-tpf: libgcc specific parts removed.
3760         * config/s390/t-linux64: Likewise.
3761
3762 2009-10-06  Jerry Quinn  <jlquinn@optonline.net>
3763
3764         * Makefile.in (lto-wrapper): Use COMPILER and ALL_COMPILERFLAGS.
3765         (lto-compress.o): Likewise.
3766
3767 2009-10-07  Danny Smith  <dannysmith@users.sourceforge.net>
3768
3769         PR target/41512
3770         * config/i386/winnt.c (i386_pe_determine_dllexport_p): Don't propagate
3771         dllexport to class members here.
3772         (i386_pe_determine_dllimport_p): Only check static class data for
3773         definition.
3774         (i386_pe_encode_section_info): Don't recheck DECL_DLLIMPORT_P.
3775         * config/i386/winnt-cxx.c (i386_pe_type_dllimport_p): Only check
3776         functions for vague linkage.
3777         (i386_pe_type_dllexport_p): Fix formatting.
3778         (maybe_add_dllexport) New function.
3779         (i386_pe_adjust_class_at_definition): Use it to propagate dllexport
3780         to class members.
3781
3782 2009-10-07  Ben Elliston  <bje@au.ibm.com>
3783
3784         * config/rs6000/a2.md: Remove duplicated lines.
3785
3786 2009-10-07  Ben Elliston  <bje@au.ibm.com>
3787
3788         * config.gcc (powerpc*-*-*): Handle a2.
3789         * config/rs6000/rs6000.md (cpu): Add ppca2.  Include "a2.md".
3790         * config/rs6000/a2.md: New file.
3791         * config/rs6000/rs6000.opt (mno-update): New.
3792         (mupdate): Return to using a mask, not a var.
3793         * config/rs6000/rs6000.h (ASM_CPU_SPEC): Add support for a2.
3794         (enum processor_type): Add PROCESSOR_PPCA2.
3795         * config/rs6000/rs6000.c (ppca2_cost): New costs.
3796         (rs6000_override_options): Add "a2" to processor_target_table.
3797         Update rs6000_always_hint logic.  Correctly set rs6000_cost for a2.
3798         * doc/invoke.texi (RS/6000 and PowerPC Options): Document -mcpu=a2.
3799
3800 2009-10-06  Uros Bizjak  <ubizjak@gmail.com>
3801
3802         * config/i386/i386.md (float<SSEMODEI24:mode><X87MODEF:mode>2):
3803         Use explicit gen_truncxfsf2 and gen_truncxfdf2 references to avoid
3804         reference to nonexistent gen_truncxfxf2 function.
3805
3806 2009-10-06  Uros Bizjak  <ubizjak@gmail.com>
3807
3808         * config/i386/i386.md (SWI48, SDWIM, DWI): New mode iterators.
3809         (DWIH, g, di, doubleint_general_operand): New mode attributes.
3810         (general_operand): Handle TI mode.
3811         (add<mode>3): Macroize expander from add{qi,hi,si,di,ti}3 patterns
3812         using SDWIM mode iterator.
3813         (*add<mode>3_doubleword): New insn_and_split pattern.  Macroize
3814         pattern from *add{di,ti}3_1 patterns and corresponding splitters
3815         using DWI mode iterator.
3816         (add<mode>3_carry): Macroize insn from add{qi,hi,si,di}3_carry
3817         patterns using SWI mode iterator.
3818         (*add<mode>3_cc): Macroize insn from add{si,di}3_cc patterns
3819         using SWI48 mode iterator.
3820         (*add<mode>_1): Ditto from add{si,di}_1 patterns.
3821         (*add<mode>_2): Ditto from add{si,di}_2 patterns.
3822         (*add<mode>_3): Ditto from add{si,di}_3 patterns.
3823         (*add<mode>_5): Ditto from add{si,di}_5 patterns.
3824         (sub<mode>3): Macroize expander from sub{qi,hi,si,di,ti}3 patterns
3825         using SDWIM mode iterator.
3826         (*sub<mode>3_doubleword): New insn_and_split pattern.  Macroize
3827         pattern from *sub{di,ti}3_1 patterns and corresponding splitters
3828         using DWI mode iterator.
3829         (sub<mode>3_carry): Macroize insn from sub{qi,hi,si,di}3_carry
3830         patterns using SWI mode iterator.
3831         (*sub<mode>_1): Ditto from from sub{qi,hi,si,di}_1 patterns.
3832         (*sub<mode>_2): Ditto from sub{qi,hi,si,di}_2 patterns.
3833         (*sub<mode>_3): Ditto from sub{qi,hi,si,di}_3 patterns.
3834         (<plusminus_insn>xf3): Macroize expander from addxf3 and subxf3
3835         patterns using plusminus code iterator.
3836         (<plusminus_insn><mode>3): Macroize expander from add<mode>3 and
3837         sub<mode>3 patterns using plusminus code iterator.
3838         * config/i386/i386.c (override_options): Update the call to
3839         gen_subdi_carry_rex64 for renamed function.
3840         (ix86_expand_int_addcc): Update calls to gen_subdi3_carry_rex64
3841         and gen_adddi3_carry_rex64 for renamed functions.  Use indirect
3842         calls to instruction expanders.
3843
3844 2009-10-06  Martin Jambor  <mjambor@suse.cz>
3845
3846         PR bootstrap/41395
3847         * opts.c (decode_options): Run IPA-SRA at -O2.
3848
3849 2009-10-06  Richard Guenther  <rguenther@suse.de>
3850
3851         * lto-symtab.c (lto_symtab_entry_hash): Hash strings, not pointers.
3852
3853 2009-10-06  Tobias Burnus  <burnus@net-b.de>
3854
3855         PR lto/41591
3856         * doc/invoke.texi (-flto,-fwhole-program): Make clear that the
3857         -flto and -fwhole-program flags can be combined.
3858
3859 2009-10-06  Ryan Mansfield  <rmansfield@qnx.com>
3860
3861         PR driver/41217
3862         * gcc.c (process_command): Check that -o argument was specified.
3863
3864 2009-10-06  Jerry Quinn  <jlquinn@optonline.net>
3865
3866         * gimple.c (gimple_type_hash): Use CONST_CAST_TREE to fix compilation.
3867
3868 2009-10-05  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
3869
3870         * c.opt (Wjump-misses-init): Fix typo to enable for ObjC.
3871         * doc/invoke.texi (Warning Options): Annotate allowed languages
3872         for -Wunsuffixed-float-constants.
3873
3874 2009-10-05  Jakub Jelinek  <jakub@redhat.com>
3875
3876         * dwarf2out.c (modified_type_die): Don't add DW_AT_name to
3877         DW_TAG_{const,volatile}_type if its DW_AT_type already has the
3878         same name and isn't the main variant.
3879
3880         PR debug/41558
3881         * dwarf2out.c (loc_by_reference): Removed.
3882         (dw_loc_list_1): New function.
3883         (dw_loc_list): Remove toplev argument, add want_address argument.
3884         Don't look at decl_by_reference_p at all.  Use dw_loc_list_1.
3885         (loc_list_from_tree) <case VAR_DECL>: Pass want_address rather than
3886         want_address == 2 to dw_loc_list.  For successful dw_loc_list
3887         set have_address to 1 only if want_address is not 0.
3888
3889 2009-10-05  Richard Sandiford  <rdsandiford@googlemail.com>
3890
3891         * config/mips/mips-protos.h (mips_trampoline_code_size): Declare.
3892         * config/mips/mips.h (TRAMPOLINE_SIZE): Redefine as the size of
3893         a code block followed by two pointers.
3894         (TRAMPOLINE_ALIGNMENT): Define to 64 for 32-bit targets too.
3895         * config/mips/mips.c (MIPS_LOAD_PTR): New macro.
3896         (MIPS_MOVE): Likewise.
3897         (MIPS_LUI): Likewise.
3898         (MIPS_JR): Likewise.
3899         (MIPS_BAL): Likewise.
3900         (MIPS_NOP): Likewise.
3901         (mips_asm_trampoline_template): Delete.
3902         (mips_trampoline_code_size): New function.
3903         (mips_trampoline_init): Add shorter sequences for all cases
3904         except Pmode == DImoe && !TARGET_USE_PIC_FN_ADDR_REG.
3905         Calculate the opcodes directly, rather than copying from a template.
3906         Only flush the code part of the trampoline.
3907         (TARGET_ASM_TRAMPOLINE_TEMPLATE): Delete.
3908
3909 2009-10-05  Richard Sandiford  <rdsandiford@googlemail.com>
3910
3911         * config/mips/mips.h (DWARF_FRAME_RETURN_COLUMN): Replace
3912         GP_REG_FIRST + 31 with RETURN_ADDR_REGNUM.
3913         (INCOMING_RETURN_ADDR_RTX): Likewise.
3914         (FUNCTION_PROFILER): Likewise.  Replace GP_REG_FIRST + 1
3915         with AT_REGNUM.
3916         * config/mips/sdemtk.h (FUNCTION_PROFILER): Replace GP_REG_FIRST + 31
3917         with RETURN_ADDR_REGNUM.
3918         (MIPS_SAVE_REG_FOR_PROFILING_P): Likewise.
3919         * config/mips/mips.c (mips16_build_call_stub): Replace
3920         GP_REG_FIRST + 31 with RETURN_ADDR_REGNUM, GP_REG_FIRST + 1
3921         with AT_REGNUM and 31 with RETURN_ADDR_REGNUM.
3922         (mips_print_operand_punctuation): Likewise.
3923         (mips_frame_set): Likewise.
3924         (mips16e_output_save_restore): Likewise.
3925         (mips_cfun_might_clobber_call_saved_reg_p): Likewise.
3926         (mips_save_reg_p): Likewise.
3927         (mips_return_addr): Likewise.
3928         (mips_set_return_address): Likewise.
3929         (mips_direct_save_slot_move_p): Likewise.
3930         (mips_output_function_prologue): Likewise.
3931         (mips_restore_reg): Likewise.
3932         (mips_expand_epilogue): Likewise.
3933         (mips_epilogue_uses): Likewise.
3934         * config/mips/mips.md (RETURN_ADD_REGNUM): Define.
3935         (*mov<mode>_ra): Use it instead of a hard-coded 31.
3936         (clear_hazard_<mode>): Likewise.
3937         (call_internal): Likewise.
3938         (call_internal_direct): Likewise.
3939         (call_direct_split): Likewise.
3940         (call_value_internal): Likewise.
3941         (call_value_split): Likewise.
3942         (call_value_internal_direct): Likewise.
3943         (call_value_direct_split): Likewise.
3944         (call_value_multiple_internal): Likewise.
3945         (call_value_multiple_split): Likewise.
3946
3947 2009-10-05  Eric Botcazou  <ebotcazou@adacore.com>
3948             Jakub Jelinek  <jakub@redhat.com>
3949
3950         PR rtl-optimization/41511
3951         * combine.c (record_value_for_reg): Pass explicit values as argument
3952         to get_last_value_validate.
3953         (get_last_value_validate): Document INSN parameter.
3954         For non-readonly MEMs, assume they might have been modified if INSN
3955         was in another basic block.
3956         (get_last_value): Minor reformatting.
3957
3958 2009-10-05  Andrew Pinski  <andrew_pinski@playstation.sony.com>
3959
3960         PR tree-opt/40992
3961         * final.c (asm_str_count): Split out from asm_insn_count.
3962         * rtl.h (asm_str_count): New prototype.
3963         * tree-inline (estimate_num_insns) <case GIMPLE_ASM>: Call
3964         asm_str_count.
3965
3966 2009-10-05  Sriraman Tallam  <tmsriram@google.com>
3967
3968         * doc/plugins.texi: Change plugin_pass to register_pass_info.
3969
3970 2009-10-05  Basile Starynkevitch  <basile@starynkevitch.net>
3971             Rafael Espindola  <espindola@google.com>
3972
3973         * gengtype.c (write_types): Moved call to write_func_for_structure
3974         into seperate loops.
3975
3976 2009-10-05  Richard Guenther  <rguenther@suse.de>
3977
3978         PR lto/41281
3979         * lto-cgraph.c (output_cgraph): Output toplevel asms.
3980         (input_cgraph_1): Input toplevel asms.
3981
3982 2009-10-05  Richard Guenther  <rguenther@suse.de>
3983
3984         PR lto/40902
3985         * lto-symtab.c (lto_compatible_attributes_p): Remove.
3986         (external_aggregate_decl_p): Likewise.
3987         (lto_symtab_compatible): Re-structure.  Remove dead code.
3988         For variables ignore toplevel qualifiers when comparing types.
3989         Issue warnings, not errors for mismatched user-alignment.
3990
3991 2009-10-05  Richard Guenther  <rguenther@suse.de>
3992
3993         PR lto/41552
3994         PR lto/41487
3995         * lto-symtab.c (struct lto_symtab_base_def): Remove.
3996         (struct lto_symtab_identifier_def): Likewise.
3997         (struct lto_symtab_decl_def): Likewise.
3998         (struct lto_symtab_entry_def): New.
3999         (lto_symtab_identifier_t): Rename to ...
4000         (lto_symtab_entry_t): ... this.
4001         (lto_symtab_decls): Remove.
4002         (lto_symtab_base_hash): Rename to ...
4003         (lto_symtab_entry_hash): ... this.
4004         (lto_symtab_base_eq): Rename to ...
4005         (lto_symtab_entry_eq): ... this.
4006         (lto_symtab_base_marked_p): Rename to ...
4007         (lto_symtab_entry_marked_p): ... this.
4008         (lto_symtab_identifier_marked_p): Remove.
4009         (lto_symtab_decl_marked_p): Likewise.
4010         (lto_symtab_maybe_init_hash_tables): Rename to ...
4011         (lto_symtab_maybe_init_hash_table): ... this.
4012         (lto_symtab_set_resolution_and_file_data): Remove.
4013         (lto_symtab_register_decl): New function.
4014         (lto_symtab_get_identifier): Remove.
4015         (lto_symtab_get): New function.
4016         (lto_symtab_get_resolution): Adjust.
4017         (lto_symtab_get_identifier_decl): Remove.
4018         (lto_symtab_set_identifier_decl): Likewise.
4019         (lto_symtab_merge_decl): Rename to ...
4020         (lto_symtab_merge): ... this.  Rewrite.
4021         (lto_symtab_merge_var): Remove.
4022         (lto_symtab_merge_fn): Likewise.
4023         (lto_symtab_prevailing_decl): Adjust.
4024         (lto_cgraph_replace_node): New function.
4025         (lto_symtab_merge_decls_2): Likewise.
4026         (lto_symtab_merge_decls_1): Likewise.
4027         (lto_symtab_fixup_var_decls): Likewise.
4028         (lto_symtab_resolve_symbols): Likewise.
4029         (lto_symtab_merge_decls): Likewise.
4030         (lto_symtab_prevailing_decl): Adjust.
4031         (lto_symtab_get_symtab_def): Remove.
4032         (lto_symtab_get_file_data): Likewise.
4033         (lto_symtab_clear_resolution): Adjust.
4034         (lto_symtab_clear_resolution): Likewise.
4035         * lto-cgraph.c (input_edge): Do not merge cgraph nodes here.
4036         (input_cgraph_1): Likewise.
4037         * lto-streamer-in.c (get_resolution): Do not provide fake
4038         symbol resolutions here.
4039         (deferred_global_decls): Remove.
4040         (lto_register_deferred_decls_in_symtab): Likewise.
4041         (lto_register_var_decl_in_symtab): Change signature, register
4042         variable via lto_symtab_register_decl.
4043         (lto_register_function_decl_in_symtab): Likewise.
4044         (lto_read_tree): Adjust.
4045         * lto-streamer.h (lto_register_deferred_decls_in_symtab): Remove.
4046         (lto_symtab_merge_var): Likewise.
4047         (lto_symtab_merge_fn): Likewise.
4048         (lto_symtab_register_decl): Declare.
4049         (lto_symtab_merge_decls): Likewise.
4050
4051 2009-10-05  Richard Guenther  <rguenther@suse.de>
4052
4053         PR tree-optimization/23821
4054         * tree-vrp.c (vrp_finalize): Do not perform copy propagation.
4055         * tree-ssa-dom.c (cprop_operand): Do not propagate copies into
4056         simple IV increments.
4057
4058 2009-10-05  Ramana Radhakrishnan  <ramana.radhakrishnan@arm.com>
4059
4060         * config/arm/arm.c (arm_override_options): Really initialize
4061         flag_dwarf2_cfi_asm to 0.
4062
4063 2009-10-05  Doug Kwan  <dougkwan@google.com>
4064
4065         PR rtl-optimization/41574
4066         * combine.c (distribute_and_simplify_rtx): Quit if RTX mode is
4067         floating point and we are not doing unsafe math optimizations.
4068
4069 2009-10-03  Simon Baldwin  <simonb@google.com>
4070             Cary Coutant  <ccoutant@google.com>
4071             Rafael Espindola  <espindola@google.com>
4072             Richard Guenther  <rguenther@suse.de>
4073             Jan Hubicka  <jh@suse.cz>
4074             Doug Kwan <dougkwan@google.com>
4075             H.J. Lu  <hongjiu.lu@intel.com>
4076             Bill Maddox  <maddox@google.com>
4077             Ryan Mansfield  <rmansfield@qnx.com>
4078             Diego Novillo  <dnovillo@google.com>
4079             Ollie Wild  <aaw@google.com>
4080             Kenneth Zadeck <zadeck@naturalbridge.com>
4081
4082         * lto-cgraph.c: New file.
4083         * lto-compress.c: New file.
4084         * lto-compress.h: New file.
4085         * lto-opts.c: New file.
4086         * lto-section-in.c: New file.
4087         * lto-section-out.c: New file.
4088         * lto-streamer-in.c: New file.
4089         * lto-streamer-out.c: New file.
4090         * lto-streamer.c: New file.
4091         * lto-streamer.h: New file.
4092         * lto-symtab.c: New file.
4093         * lto-wpa-fixup.c: New file.
4094         * lto-wrapper.c: New file.
4095
4096 2009-10-03  Simon Baldwin  <baldwin@google.com>
4097             Ben Elliston  <bje@au.ibm.com>
4098             Rafael Espindola  <espindola@google.com>
4099             Nathan Froyd  <froydnj@codesourcery.com>
4100             Jan Hubicka  <jh@suse.cz>
4101             Doug Kwan  <dougkwan@google.com>
4102             Diego Novillo  <dnovillo@google.com>
4103             Kenneth Zadeck  <zadeck@naturalbridge.com>
4104
4105         * Makefile.in (enable_lto): New.
4106         (site.exp): If @enable_lto@ is set to 'yes' define ENABLE_LTO.
4107         (LINKER_PLUGIN_API_H): Define.
4108         (LTO_SYMTAB_H): Define.
4109         (LTO_STREAMER_H): Define.
4110         (TREE_VECTORIZER_H): Define.
4111         (INCLUDES): Add LIBELFINC.
4112         (OBJS-common): Add lto-cgraph.o, lto-streamer-in.o,
4113         lto-streamer-out.o, lto-section-in.o, lto-section-out.o, lto-symtab.o,
4114         lto-opts.o, lto-streamer.o, lto-wpa-fixup.o, lto-compress.o.
4115         (MOSTLYCLEANFILES): Add lto-wrapper$(exeext)
4116         (native): Add lto-wrapper$(exeext)
4117         (lto-compress.o, lto-cgraph.o, lto-streamer-in.o,
4118         lto-streamer-out.o, lto-section-in.o, lto-section-out.o,
4119         lto-symtab.o, lto-opts.o, lto-streamer.o, lto-wpa-fixup.o): New rules.
4120         (gimple.o): Add dependency on LTO_HEADER_H and LTO_SECTION_OUT_H.
4121         (varasm.o): Add dependency on tree-iterator.h.
4122         (cgraph.o): Add dependency on cif-code.def.
4123         (ipa-reference.o): Add dependency on LTO_STREAMER_H.
4124         (ipa-pure-const.o): Likewise.
4125         (GTFILES): Add lto-symtab.c.
4126         (install-lto-wrapper): New.
4127         * configure.ac: If 'lto' is in enable_languages, define ENABLE_LTO
4128         and enable_lto.  If LIBELFLIBS is set, define HAVE_libelf.
4129         * config.in: Regenerate.
4130
4131 2009-10-03  Rafael Espindola  <espindola@google.com>
4132             Diego Novillo  <dnovillo@google.com>
4133
4134         * cgraphunit.c (ipa_passes): Prevent lto1 from calling
4135         ipa_write_summaries.
4136         Call execute_ipa_summary_passes for all_regular_ipa_passes and
4137         all_lto_gen_passes.
4138         (cgraph_optimize): Make extern.
4139
4140 2009-10-03  Nathan Froyd  <froydnj@codesourcery.com>
4141             Kenneth Zadeck <zadeck@naturalbridge.com>
4142
4143         * toplev.c (in_lto_p): Declare.
4144         * collect2.c (scan_prog_file): Read all the output when reading
4145         information for LTO.
4146         (enum lto_mode_d): Declare.
4147
4148 2009-10-03  Richard Guenther  <rguenther@suse.de>
4149             Diego Novillo  <dnovillo@google.com>
4150
4151         * gimple.c: Include target.h and alias.h.
4152         (gimple_types): Declare.
4153         (type_hash_cache): Declare.
4154         (gimple_alloc_stat): Make extern.
4155         (gimple_build_eh_must_not_throw): Call
4156         gimple_eh_must_not_throw_set_fndecl.
4157         (struct type_pair_d): Declare.
4158         (type_pair_t): Declare.
4159         (type_pair_hash): New.
4160         (type_pair_eq): New.
4161         (lookup_type_pair): New.
4162         (gimple_force_type_merge): New.
4163         (compare_type_names_p): New.
4164         (compare_field_offset): New.
4165         (gimple_types_compatible_p): New.
4166         (struct sccs): Declare.
4167         (next_dfs_num): Declare.
4168         (iterative_hash_gimple_type): New.
4169         (visit): New.
4170         (iterative_hash_type_name): New.
4171         (iterative_hash_gimple_type): New.
4172         (gimple_type_hash): New.
4173         (gimple_type_eq): New.
4174         (gimple_register_type): New.
4175         (print_gimple_types_stats): New.
4176         (gimple_signed_or_unsigned_type): New.
4177         (gimple_unsigned_type): New.
4178         (gimple_signed_type): New.
4179         (gimple_get_alias_set): New.
4180         (gimple_decl_printable_name): Do not use DMGL_TYPES.
4181         * gimple.h (gimple_alloc, gimple_alloc_stat): Declare.
4182         (gimple_force_type_merge): Declare.
4183         (gimple_types_compatible_p): Declare.
4184         (gimple_register_type): Declare.
4185         (print_gimple_types_stats): Declare.
4186         (gimple_unsigned_type): Declare.
4187         (gimple_signed_type): Declare.
4188         (gimple_get_alias_set): Declare.
4189         (gimple_eh_must_not_throw_set_fndecl): New.
4190
4191 2009-10-03  Jan Hubicka  <jh@suse.cz>
4192             Kenneth Zadeck <zadeck@naturalbridge.com>
4193
4194         * ipa-pure-const.c: Include lto-streamer.h.
4195         (register_hooks): Factor out of ...
4196         (generate_summary): ... here.
4197         (pure_const_write_summary): New.
4198         (pure_const_read_summary): New.
4199         (pass_ipa_pure_const): Add pure_const_write_summary and
4200         pure_const_read_summary.
4201         * ipa-reference.c: Include lto-streamer.h.
4202         (add_new_function): New.
4203         (remove_node_data): New.
4204         (duplicate_node_data): New.
4205         (ipa_init): Guard against multiple calls.
4206         Move hook setup from analyze_function.
4207         (write_node_summary_p): New.
4208         (ipa_reference_write_summary): New.
4209         (ipa_reference_read_summary): New.
4210         (pass_ipa_reference): Add ipa_reference_write_summary and
4211         ipa_reference_read_summary.
4212         * cgraph.h (cgraph_local_info): Add field lto_file_data.
4213         (struct cgraph_edge): Add fields lto_stmt_uid and
4214         call_stmt_cannot_inline_p.
4215         (cgraph_optimize): Declare.
4216         (cgraph_decide_is_function_needed): Declare.
4217         (reset_inline_failed): Declare.
4218         (enum LTO_cgraph_tags): Declare.
4219         (LTO_cgraph_tag_names): Declare.
4220         (LCC_NOT_FOUND): Define.
4221
4222 2009-10-03  Doug Kwan  <dougkwan@google.com>
4223             Rafael Espindola  <espindola@google.com>
4224             Jan Hubicka  <jh@suse.cz>
4225             Diego Novillo  <dnovillo@google.com>
4226             Kenneth Zadeck  <zadeck@naturalbridge.com>
4227
4228         * passes.c (all_regular_ipa_passes): New.
4229         (all_ipa_passes): Rename to all_small_ipa_passes.
4230         (init_optimization_passes): Init all_regular_ipa_passes.
4231         * tree-pass.h (all_regular_ipa_passes): New.
4232         (all_ipa_passes): Rename to all_small_ipa_passes.
4233         * passes.c (all_lto_gen_passes): New.
4234         (init_optimization_passes): Initialize all_lto_gen_passes.
4235         (execute_ipa_summary_passes): Make non-static.
4236         (ipa_write_summaries_1): New.
4237         (ipa_write_summaries_2): New.
4238         (ipa_write_summaries): New.
4239         (ipa_write_summaries_of_cgraph_node_set): New.
4240         (ipa_read_summaries_1): New.
4241         (ipa_read_summaries): New.
4242         (execute_ipa_pass_list): Call cgraph_process_new_functions.
4243         (execute_regular_ipa_pass_list): Remove.
4244         (init_optimization_passes): Schedule
4245         pass_rebuild_cgraph_edges and pass_early_inline outside
4246         of pass_all_early_optimizations.  Document reason.
4247         (pass_ipa_lto_gimple_out, pass_ipa_lto_wpa_fixup,
4248         pass_ipa_lto_finish_out): New pass.
4249         (pass_ipa_summary_passes): Start and stop timers if the pass has them.
4250         (execute_all_ipa_transforms): New.
4251         (execute_one_pass): Don't call execute_one_ipa_transform_pass.
4252         (dump_properties, debug_properties): New.
4253         * tree-optimize.c (gate_all_early_local_passes): Return
4254         false if we are in lto1.
4255         (tree_rest_of_compilation): Call execute_all_ipa_transforms.
4256         * tree-pass.h (execute_all_ipa_transforms): Declare.
4257         (pass_ipa_function_and_variable_visibility): Declare.
4258         (pass_ipa_early_inline): Declare.
4259         (pass_ipa_lto_gimple_out): Declare.
4260         (pass_ipa_lto_wpa_fixup): Declare.
4261         (pass_ipa_lto_finish_out): Declare.
4262         (all_small_ipa_passes, all_regular_ipa_passes,
4263         all_lto_gen_passes): Declare.
4264         (execute_ipa_summary_passes): Declare.
4265         (execute_all_ipa_transforms): Declare.
4266         (ipa_write_summaries): Declare
4267         (ipa_write_summaries_of_cgraph_node_set): Declare.
4268         (ipa_read_summaries): Declare.
4269
4270 2009-10-03  Doug Kwan  <dougkwan@google.com>
4271             Ollie Wild  <aaw@google.com>
4272
4273         * ipa-prop.c (ipa_propagate_indirect_call_infos): Do nothing in WPA.
4274
4275         * collect2.c (LTO_MODE_NONE, LTO_MODE_LTO, LTO_MODE_WPA): New enums.
4276         (lto_mode): New variable.
4277         (maybe_run_lto_and_relink): Handle the -fwpa option.
4278         (main): Handle the -fwpa option.
4279         (maybe_unlink_list): New function.
4280         * gcc.c (link_lto_options): Replace -flto with -fwpa.
4281         * common.opt (flto): New flag.
4282         * toplev.c (flag_generate_lto): Declare.
4283
4284 2009-10-03  Simon Baldwin  <simonb@google.com>
4285
4286         * common.opt (flto-compression-level): New flag.
4287
4288         * opts.c: Include lto-opts.h.
4289         (handle_option): Call lto_register_user_option for each
4290         valid option handled.
4291         (decode_options): Clear registered options before the options
4292         handling loop.
4293
4294 2009-10-03  Cary Coutant  <ccoutant@google.com>
4295
4296         * collect2.c (is_elf): New function.
4297         (scan_prog_file): Require LTO object to be in ELF format.
4298
4299 2009-10-03  Rafael Espindola  <espindola@google.com>
4300
4301         * gcc.c (LINK_COMMAND_SPEC): Use the -pass-through option to pass
4302         libgcc to the linker.
4303
4304         * ipa-cp.c (cgraph_gate_cp): Return false if LTRANS is running.
4305
4306         * collect2.c (maybe_run_lto_and_relink): Execute lto-wrapper.
4307         (collect_execute): Add flags argument. Pass flags to pex_run. Update
4308         all callers.
4309         * collect2.h (collect_execute): Add flags argument.
4310         * tlink.c (tlink_execute): Update call to collect_execute.
4311         * gcc.c (main): Set the COLLECT_LTO_WRAPPER environment variable.
4312         (use_linker_plugin): New.
4313         (use_linker_plugin_spec_function): New.
4314         (LINK_COMMAND_SPEC): Pass plugin options to the linker.
4315         (linker_plugin_file_spec): New.
4316         (lto_wrapper_spec): New.
4317         (lto_gcc_spec): New.
4318         (static_specs): Add linker_plugin_file, lto_wrapper and lto_gcc.
4319         (static_spec_functions): Add use-linker-plugin.
4320         (process_command): Handle -use-linker-plugin.
4321         (main): Use lto_wrapper_spec instead of lto_wrapper. Set
4322         linker_plugin_file_spec and lto_gcc_spec.
4323         (use_linker_plugin_spec_function): New.
4324
4325 2009-10-03  Richard Guenther  <rguenther@suse.de>
4326
4327         PR lto/41547
4328         PR lto/41548
4329         * tree.h (is_lang_specific): Include LANG_TYPE.
4330         * tree.c (find_decls_types_r): Manually add interesting parts
4331         of TYPE_FIELDS.  Walk BINFO_VIRTUALS.  Do not walk TYPE_METHODS.
4332
4333         * gimple.c (type_pair_hash): Make symmetric.
4334         (type_pair_eq): Likewise.
4335         (lookup_type_pair): Increase initial hashtable size.
4336         (gimple_force_type_merge): Rely on type-pair symmetry.
4337         (visit): Remove excessive checking code.
4338         (iterative_hash_type_name): Do not hash TYPE_NAME of anonymous unions.
4339         (gimple_register_type): Remove getenv calls, shrink initial
4340         hashtable size.
4341
4342         PR middle-end/41502
4343         * cgraphunit.c (ipa_passes): Do not remove bodies of extern
4344         inline functions if not generating lto output.
4345
4346         PR lto/41379
4347         * toplev.c (finalize): In WPA mode remove the asm file.
4348
4349 2009-10-03  Doug Kwan  <dougkwan@google.com>
4350
4351         * ipa-inline.c (cgraph_mark_inline): Check
4352         edge->call_stmt_cannot_inline_p instead of calling
4353         gimple_call_cannot_inline_p.
4354         (cgraph_decide_inlining): Do nothing in WPA and LTRANS.
4355         (cgraph_gate_ipa_early_inlining): Return false if in_lto_p is set.
4356         (inline_generate_summary): Do nothing in LTRANS.
4357         * cgraph.c (initialize_inline_failed): Make sure e->call_stmt
4358         exists before calling gimple_call_cannot_inline_p.
4359         (cgraph_create_edge): Set edge->call_stmt_cannot_inline_p.
4360         (cgraph_clone_edge): Add argument STMT_UID.  Modify all callers.
4361         Update new_edge->lto_stmt_uid.
4362         * cgraphbuild.c (reset_inline_failed): New.
4363
4364         * common.opt (fwpa): New flag.
4365         (fltrans): New option.
4366         * gcc.c (gcc_lto_option_t): New type.
4367         (current_lto_option): New variable.
4368         (lto_single_spec_function): Remove and is replaced by ..
4369         (lto_option_spec_function): New function.
4370         (LINK_COMMAND_SPEC): Use link_lto_option spec instead of just
4371         passing the -flto flag.
4372         (cc1_options): Separate non-LTO related parts into ..
4373         (cc1_non_lto_options): Non-LTO related options shared by all FEs.
4374         (lto1_options): New spec for lto FE.
4375         (link_lto_options): New spec for handling LTO flags in linker.
4376         (invoke_lto_single): Re-format to fit in 80 column.  Replace
4377         lto-single with lto-option.
4378         (static_specs): Add cc1_non_lto_options, lto1_options and
4379         link_lto_options.
4380         (static_spec_function): Replace lto-single with lto-option.
4381         (process_command): Handle -flto, -fwpa and -fltran by setting
4382         current_lto_option and not passing it to subprocess unconditionally.
4383
4384 2009-10-03  Bill Maddox  <maddox@google.com>
4385
4386         Add `gcc' driver support for link-time code generation (LTO).
4387
4388         * collect2.c (enum pass): Add new literal PASS_LTOINFO.
4389         (lto_flag, lto_objects, lto_o_file): New variables.
4390         (struct lto_object, struct lto_object_list): New structures.
4391         (collect_exit, handler): Remove LTO temporary output file on exit.
4392         (add_lto_object): New function.
4393         (maybe_run_lto_and_relink): New function. Perform link time code
4394         generation and relinking for object files containing LTO information.
4395         (main): Invoke maybe_run_lto_and_relink().
4396         (dump_argv): New function.  For debugging, currently disabled.
4397         (scan_prog_file): Add LTO information pass.
4398         * gcc.c (LINK_COMMAND_SPEC): Pass `-flto' switch to linker, i.e.,
4399         collect2.
4400         * toplev.c (compile_file): Emit assembler directive to create
4401         the `gnu_lto_v1' marker symbol when compiling with `-flto'.
4402
4403 2009-10-03  Diego Novillo  <dnovillo@google.com>
4404
4405         * c.opt: Add LTO to warn_abi and warn_psabi.
4406
4407         * tree.c (fld_worklist_push): Rename from PUSH.  Convert to static
4408         inline function.  Ignore language-specific nodes.  Update all users.
4409         (find_decls_types_r): Do not traverse the subtrees of
4410         language-specific nodes.  Do not traverse DECL_INITIAL for TYPE_DECLs.
4411         * tree.h (is_lang_specific): New.
4412         * langhooks.h (struct lang_hooks_for_decls): Remove
4413         may_need_assembler_name_p.  Update all users.
4414
4415         * c-common.c (set_builtin_user_assembler_name): Move ...
4416         * builtins.c (set_builtin_user_assembler_name): ... here.
4417         (is_builtin_name): Add comment
4418         (is_builtin_fn): New.
4419         * except.c (output_ttype): Only call
4420         lookup_type_for_runtime if TYPE is not a runtime type.
4421
4422         * passes.c (register_pass): Call position_pass on
4423         all_small_ipa_passes, all_regular_ipa_passes and all_lto_gen_passes.
4424         * timevar.def (TV_IPA_LTO_GIMPLE_IO): Define.
4425         (TV_IPA_LTO_DECL_IO): Define.
4426         (TV_IPA_LTO_CGRAPH_IO): Define.
4427         (TV_LTO): Define.
4428         (TV_WHOPR_WPA): Define.
4429         (TV_WHOPR_WPA_IO): Define.
4430         (TV_WHOPR_LTRANS): Define.
4431         (TV_WHOPR_WPA_FIXUP): Define.
4432         (TV_WHOPR_WPA_LTRANS_EXEC): Define.
4433         * tree-cfg.c (tree_node_can_be_shared): Make extern.
4434         * tree-flow.h (tree_node_can_be_shared): Declare.
4435         * tree-inline.c (tree_can_inline_p): Check that E has a
4436         statement associated with it.
4437         * tree.c (free_lang_data_in_binf): Factor out of ...
4438         (free_lang_data_in_type): ... here.
4439         Call RECORD_OR_UNION_TYPE_P.
4440         (need_assembler_name_p): Ignore DECL if it does not have TREE_PUBLIC
4441         set.  Call lang_hooks.decls.may_need_assembler_name_p if set.
4442         (free_lang_data_in_decl): Do not clear DECL_CONTEXT for CONST_DECLs.
4443         (free_lang_data): Set debug_info_level to DINFO_LEVEL_NONE.  Set
4444         write_symbols to NO_DEBUG.  Set debug_hooks to do_nothing_debug_hooks.
4445         (gate_free_lang_data): Return true if flag_generate_lto is set.
4446         (walk_tree_1): Call RECORD_OR_UNION_TYPE_P.
4447         * c-common.h (set_builtin_user_assembler_name): Move ...
4448         * tree.h (set_builtin_user_assembler_name): ... here.
4449
4450         * common.opt (flto-report): New flag.
4451         * opts.c (complain_wrong_lang): Do not complain if running lto1.
4452         * collect2.c (scan_prog_file): Send the error output of
4453         'nm' to HOST_BIT_BUCKET.
4454
4455 2009-10-03  Ollie Wild  <aaw@google.com>
4456
4457         * langhooks-def.h (lhd_begin_section): New function declaration.
4458         (lhd_write_section): New function declaration.
4459         (lhd_end_section): New function declaration.
4460         (LANG_HOOKS_BEGIN_SECTION): New macro.
4461         (LANG_HOOKS_WRITE_SECTION_DATA): New macro.
4462         (LANG_HOOKS_END_SECTION): New macro.
4463         (LANG_HOOKS_LTO): New macro.
4464         (LANG_HOOKS_INITIALIZER): Add LANG_HOOKS_LTO.
4465         * langhooks.c (output.h): Add include.
4466         (saved_section): New static variable.
4467         (lhd_begin_section): New function.
4468         (lhd_write_section_data): New function.
4469         (lhd_end_section): New function.
4470         * langhooks.h (struct lang_hooks_for_lto): New structure.
4471         (struct lang_hooks): Add member lto.
4472         * Makefile.in (langhooks.o): Add dependency on output.h.
4473
4474         * c-opts.c (c_common_post_options): Handle -flto and -fwhopr.
4475
4476 2009-10-03  Richard Guenther  <rguenther@suse.de>
4477
4478         * config/rs6000/rs6000.c (rs6000_output_function_epilogue):
4479         Handle LTO.
4480
4481 2009-10-03  Simon Baldwin  <simonb@google.com>
4482             Richard Guenther  <rguenther@suse.de>
4483             Janis Johnson  <janis187@us.ibm.com>
4484             Doug Kwan  <dougkwan@google.com>
4485             Diego Novillo  <dnovillo@google.com>
4486             Ramana Radhakrishnan  <ramana.r@gmail.com>
4487             Ollie Wild  <aaw@google.com>
4488
4489         * doc/install.texi: Add documentation for libelf and --enable-lto.
4490         * doc/invoke.texi: Document -fwpa, -flto, -fwhopr, -fltrans,
4491         -flto-report, -flto-compression-level and -use-linker-plugin.
4492         * doc/sourcebuild.texi: Document use of zlib.  Document lto-plugin.
4493         Add section for LTO Testing.
4494
4495 2009-10-02  Cary Coutant  <ccoutant@google.com>
4496
4497         Add support for comdat type sections for DWARF v4.
4498         Merge from dwarf4 branch.
4499
4500         * dwarf2out.c (DWARF_TYPE_SIGNATURE_SIZE): New constant.
4501         (dw_die_ref): Define vector type.
4502         (enum dw_val_class): Add dw_val_class_data8.
4503         (struct dw_val_struct): Add v.val_data8.
4504         (comdat_type_node_ref): New type.
4505         (struct die_struct): Move die_symbol into a union; add new field
4506         die_type_node.  Change all uses.
4507         (comdat_type_node): New type.
4508         (skeleton_chain_node): New type.
4509         (DWARF_COMDAT_TYPE_UNIT_HEADER_SIZE): New constant.
4510         (comdat_type_list): New variable.
4511         (dwarf_tag_name): Add DW_TAG_type_unit.
4512         (dwarf_attr_name): Add DW_AT_signature.
4513         (add_AT_data8): New function.
4514         (replace_child): New function.
4515         (move_all_children): New function.
4516         (print_signature): New function.
4517         (print_die): Print signature information; add dw_val_class_data8.
4518         (attr_checksum): Support dw_val_class_data8.
4519         (CHECKSUM_STRING): Redefine for DWARF-4 to include trailing NULL byte.
4520         (CHECKSUM_SLEB128, CHECKSUM_ULEB128): New macros.
4521         (checksum_sleb128, checksum_uleb128): New functions.
4522         (checksum_die_context): New function.
4523         (loc_checksum_ordered): New function.
4524         (attr_checksum_ordered): New function.
4525         (struct checksum_attributes): New structure.
4526         (collect_checksum_attributes): New function.
4527         (die_checksum_ordered): New function.
4528         (generate_type_signature): New function.
4529         (same_dw_val_p): Add dw_val_class_data8.
4530         (is_symbol_die): Use new is_declaration_die function.
4531         (is_declaration_die): New function.
4532         (should_move_die_to_comdat): New function.
4533         (clone_die): New function.
4534         (clone_tree): New function.
4535         (clone_as_declaration): New function.
4536         (copy_declaration_context): New function.
4537         (generate_skeleton_ancestor_tree): New function.
4538         (generate_skeleton_bottom_up): New function.
4539         (generate_skeleton): New function.
4540         (remove_child_or_replace_with_skeleton): New function.
4541         (break_out_comdat_types): New function.
4542         (struct decl_table_entry): New type.
4543         (htab_decl_hash): New function.
4544         (htab_decl_eq): New function.
4545         (htab_decl_del): New function.
4546         (copy_ancestor_tree): New function.
4547         (copy_decls_walk): New function.
4548         (copy_decls_for_unworthy_types): New function.
4549         (build_abbrev_table): Don't assert on missing die_symbol when doing
4550         comdat type sections.
4551         (size_of_die): Use DW_FORM_sig8 for external references.  Add
4552         dw_val_class_data8.
4553         (unmark_dies): Don't assert for unmarked dies when doing comdat
4554         type sections.
4555         (value_format): Support DW_FORM_sig8 and dw_val_class_data8.
4556         (output_signature): New function.
4557         (output_die): Likewise.
4558         (output_compilation_unit_header): Mark output as DWARF version 3
4559         even if generating DWARF 4.
4560         (output_comdat_type_unit): New function.
4561         (output_line_info): Mark output as DWARF version 3 even if generating
4562         DWARF 4.
4563         (dwarf2out_start_source_file): Don't do eliminate_dwarf2_dups with
4564         DWARF-4.
4565         (dwarf2out_end_source_file): Likewise.
4566         (prune_unused_types_walk_attribs): Don't follow references into
4567         comdat type sections.
4568         (prune_unused_types_mark): When generating type units, do not mark
4569         children of non-defining declarations of types; do mark children of
4570         type entries.
4571         (prune_unused_types): Process comdat type sections.
4572         (htab_ct_hash): New function.
4573         (htab_ct_eq): New function.
4574         (dwarf2out_finish): Move types to comdat sections when using DWARF-4.
4575         Add a pointer to the line table from type unit entries so
4576         DW_AT_decl_file has meaning.
4577         * varasm.c (default_elf_asm_named_section): Use identifier name as
4578         comdat key instead of lang hook.
4579
4580 2009-10-02  Neil Vachharajani  <nvachhar@google.com>
4581
4582         * gcov-io.c (gcov_open): Open files read-only when MODE < 0.
4583
4584 2009-10-02  Uros Bizjak  <ubizjak@gmail.com>
4585
4586         * config/i386/i386.md (SWIM248): New mode iterator.
4587         (divmod<mode>4) Macroize expander from divmoddi4, divmodsi4 and
4588         divmodhi4 patterns using SWIM248 macro.
4589         (*divmod<mode>4): Macroize insn_and_split pattern from
4590         *divmoddi4_cltd_rex64, *divmodsi4_cltd and divmodhi4 insn patterns
4591         and their corresponding splitters usign SWIM248 macro.  Split SImode
4592         insn to generate cltd and DImode insn to generate cqto instead of
4593         move+shift when optimizing for size or TARGET_USE_CLTD is in effect.
4594         (*divmoddi4_nocltd_rex64, *divmodsi4_nocltd): Remove insn patterns.
4595         (*divmod<mode>4_noext): Macroize insn from *divmoddi_noext_rex64 and
4596         *divmodsi_noext patterns using SWIM248 macro.
4597         (udivmod<mode>4): Macroize expander from udivmoddi4, udivmodsi4 and
4598         udivmodhi4 patterns using SWIM248 macro.
4599         (*udivmod<mode>4): Macroize insn_and_split pattern from
4600         *udivmoddi4, udivmodsi4 and udivmodhi4 patterns and their
4601         corresponding splitters using SWIM248 macro.
4602         (*udivmod<mode>4_noext): Macroize insn from *udivmoddi4_noext,
4603         *udivmodsi4_noext and *udivmodhi_noext patterns using SWIM248 macro.
4604
4605 2009-10-02  Eric Botcazou  <ebotcazou@adacore.com>
4606
4607         * stor-layout.c (layout_type) <ARRAY_TYPE>: Make sure that an array
4608         of zero-sized element is zero-sized regardless of its extent.
4609
4610 2009-10-02  Jakub Jelinek  <jakub@redhat.com>
4611
4612         PR debug/40521
4613         * configure.ac (HAVE_GAS_CFI_SECTIONS_DIRECTIVE): New test.
4614         * configure: Regenerated.
4615         * config.in: Regenerated.
4616         * dwarf2out.c (dwarf2out_do_cfi_asm): Return false if
4617         !HAVE_GAS_CFI_SECTIONS_DIRECTIVE and not emitting .eh_frame.
4618         (dwarf2out_init): If HAVE_GAS_CFI_SECTIONS_DIRECTIVE and
4619         not emitting .eh_frame, emit .cfi_sections .debug_frame
4620         directive.
4621
4622         PR debug/41404
4623         PR debug/41353
4624         * cfgexpand.c (expand_debug_expr) <case STRING_CST>: Don't create
4625         CONST_STRING if STRING_CST contains embedded '\0's or doesn't end
4626         with '\0'.
4627         (expand_debug_expr) <case VAR_DECL>: For TREE_STATIC !DECL_EXTERNAL
4628         vars use DECL_RTL with resetting it back to NULL afterwards.
4629         * dwarf2out.c (same_dw_val_p): For dw_val_class_addr compare with
4630         rtx_equal_p instead of asserting it is a SYMBOL_REF.
4631         (value_format): For dw_val_class_addr only use DW_FORM_addr if
4632         the attribute type allows it, otherwise use DW_FORM_dataN.
4633         (mem_loc_descriptor): Handle CONST_STRING.
4634         (add_const_value_attribute): Handle CONST_STRING using add_AT_addr.
4635         Handle MEM with CONST_STRING address using add_AT_string.
4636         (rtl_for_decl_init): Return MEM with CONST_STRING address instead of
4637         CONST_STRING for const arrays initialized with a string literal.
4638         (resolve_one_addr, resolve_addr_in_expr, resolve_addr): New functions.
4639         (dwarf2out_finish): Call resolve_addr.
4640
4641 2009-10-02  Andreas Schwab  <schwab@linux-m68k.org>
4642             Maxim Kuvyrkov  <maxim@codesourcery.com>
4643
4644         * config/m68k/lb1sf68.asm (PICCALL): Use variable sized branch.
4645
4646 2009-10-02  Nick Clifton  <nickc@redhat.com>
4647
4648         * config/mn10300/mn10300.h (USER_LABEL_PREFIX): Define.
4649         (ASM_OUTPUT_LABELREF): Use asm_fprintf and %U.
4650
4651 2009-10-01  Jan Hubicka  <jh@suse.cz>
4652
4653         * cgraph.c (cgraph_clone_node): Add redirect_callers parameter.
4654         (cgraph_create_virtual_clone): Just pass redirect_callers
4655         around.
4656         * cgraph.h (cgraph_clone_node): Update prototype.
4657         * ipa-pure-const.c (self_recursive_p): New function.
4658         (propagate): Use it.
4659         * ipa-inline.c (cgraph_clone_inlined_nodes,
4660         cgraph_decide_recursive_inlining): Update.
4661
4662 2009-10-01  David Daney  <ddaney@caviumnetworks.com>
4663
4664         * gcc/config/mips/mips.c (mips_process_sync_loop) Emit syncw
4665         instructions for TARGET_OCTEON.
4666
4667 2009-10-01  Ramana Radhakrishnan  <ramana.radhakrishnan@arm.com>
4668
4669         * config/arm/arm.c (arm_override_options): Turn off
4670         flag_dwarf2_cfi_asm for AAPCS variants.
4671
4672 2009-10-01  Martin Jambor  <mjambor@suse.cz>
4673
4674         PR middle-end/12392
4675         * tree-sra.c (convert_callers): Do not call
4676         compute_inline_parameters on one caller more than once.
4677
4678 2009-10-01  Nick Clifton  <nickc@redhat.com>
4679
4680         * config/vax/netbsd-elf.h (NETBSD_CC1_AND_CC1PLUS_SPEC): Define as
4681         an empty string if not already defined.
4682
4683 2009-10-01  Martin Jambor  <mjambor@suse.cz>
4684
4685         PR bootstrap/41395
4686         * tree-sra.c (is_va_list_type): New function.
4687         (find_var_candidates): Call is_va_list_type.
4688         (find_param_candidates): Check that the type or the type pointed
4689         to are not va_list types.
4690
4691 2009-10-01  Martin Jambor  <mjambor@suse.cz>
4692
4693         PR c++/41503
4694         * cp/pt.c (function_parameter_expanded_from_pack_p): Return false if
4695         DECL_ARTIFICIAL (param_decl) is true.
4696
4697 2009-09-30  Gabriel Dos Reis  <gdr@cs.tamu.edu>
4698
4699         * tree.h (tree_decl_common::lang_flag_8): New.
4700         * c-common.c (c_common_reswords): Include "constexpr" as C++0x
4701         keyword.
4702         * c-common.h (RID_CONSTEXPR): New.
4703
4704 2009-09-30  Uros Bizjak  <ubizjak@gmail.com>
4705
4706         * config/alpha/alpha.c (alpha_gimplify_va_arg_1):
4707         Use ref-all pointers.
4708         (alpha_gimplify_va_arg): Ditto.
4709
4710 2009-09-30  Jakub Jelinek  <jakub@redhat.com>
4711
4712         PR target/41279
4713         * cfgloopanal.c (num_loop_insns): Don't increment ninsns for each bb
4714         before insn counting loop now that BB_END (bb) is counted.  Ensure
4715         the return value isn't zero.
4716
4717 2009-09-30  Nick Clifton  <nickc@redhat.com>
4718
4719         * config.gcc (sh-symbianelf): Replace definition of extra_objs
4720         with separate definitions of c_target_objs and cxx_target_objs.
4721         * config/sh/t-sh: Add rules to build symbian-cxx.o, symbian-c.o
4722         and symbian-base.o.
4723         * config/sh/sh.c (TARGET_CXX_INPUT_EXPORT_CLASS): Use
4724         sh_symbian_import_export_class.
4725         * config/sh/sh-protos.h: Fix names of exported symbian functions.
4726         * config/sh/symbian.c: Delete, moving code into...
4727         * config/sh/symbian-base.c: ... here
4728         * config/sh/symbian-c.c: ... and here
4729         * config/sh/symbian-cxx.c: ... and here.
4730
4731 2009-09-30  Uros Bizjak  <ubizjak@gmail.com>
4732
4733         PR target/22093
4734         * config/alpha/alpha.md (unaligned_storehi_be): Force operand
4735         of plus RTX into register.
4736
4737 2009-09-30  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
4738
4739         * doc/install.texi: Linguistic and markup fixes.
4740         (Configuration) <--disable-cpp>: Remove description.
4741         <--enable-maintainer-mode>: Autotools files are affected, too.
4742         <--with-sysroot>: Improve description.
4743         (Building): Bump required GNU make version.
4744
4745 2009-09-29  Harsha Jagasia  <harsha.jagasia@amd.com>
4746
4747         * config.gcc (i[34567]86-*-*): Include fma4intrin.h.
4748         (x86_64-*-*): Ditto.
4749
4750         * config/i386/fma4intrin.h: New file, provide common x86 compiler
4751         intrinisics for FMA4.
4752         * config/i386/cpuid.h (bit_FMA4): Define FMA4 bit.
4753         * config/i386/x86intrin.h: Fix typo to SSE4A instead of SSE4a.
4754         Add FMA4 check and fma4intrin.h.
4755         * config/i386/i386-c.c(ix86_target_macros_internal): Check
4756         ISA_FLAG for FMA4.
4757         * config/i386/i386.h(TARGET_FMA4): New macro for FMA4.
4758         * config/i386/i386.md (UNSPEC_FMA4_INTRINSIC): Add new UNSPEC
4759         constant for FMA4 support.
4760         (UNSPEC_FMA4_FMADDSUB): Ditto.
4761         (UNSPEC_FMA4_FMSUBADD): Ditto.
4762         * config/i386/i386.opt (-mfma4): New switch for FMA4 support.
4763         * config/i386/i386-protos.h (ix86_fma4_valid_op_p): Add declaration.
4764         (ix86_expand_fma4_multiple_memory): Ditto.
4765         * config/i386/i386.c (OPTION_MASK_ISA_FMA4_SET): New.
4766         (OPTION_MASK_ISA_FMA4_UNSET): New.
4767         (OPTION_MASK_ISA_SSE4A_UNSET): Change definition to depend on FMA4.
4768         (OPTION_MASK_ISA_AVX_UNSET): Change definition to depend on FMA4.
4769         (ix86_handle_option): Handle -mfma4.
4770         (isa_opts): Handle -mfma4.
4771         (enum pta_flags): Add PTA_FMA4.
4772         (override_options): Add FMA4 support.
4773         (IX86_BUILTIN_VFMADDSS): New for FMA4 intrinsic.
4774         (IX86_BUILTIN_VFMADDSD): Ditto.
4775         (IX86_BUILTIN_VFMADDPS): Ditto.
4776         (IX86_BUILTIN_VFMADDPD): Ditto.
4777         (IX86_BUILTIN_VFMSUBSS): Ditto.
4778         (IX86_BUILTIN_VFMSUBSD): Ditto.
4779         (IX86_BUILTIN_VFMSUBPS): Ditto.
4780         (IX86_BUILTIN_VFMSUBPD): Ditto.
4781         (IX86_BUILTIN_VFMADDSUBPS): Ditto.
4782         (IX86_BUILTIN_VFMADDSUBPD): Ditto.
4783         (IX86_BUILTIN_VFMSUBADDPS): Ditto.
4784         (IX86_BUILTIN_VFMSUBADDPD): Ditto.
4785         (IX86_BUILTIN_VFNMADDSS): Ditto.
4786         (IX86_BUILTIN_VFNMADDSD): Ditto.
4787         (IX86_BUILTIN_VFNMADDPS): Ditto.
4788         (IX86_BUILTIN_VFNMADDPD): Ditto.
4789         (IX86_BUILTIN_VFNMSUBSS): Ditto.
4790         (IX86_BUILTIN_VFNMSUBSD): Ditto.
4791         (IX86_BUILTIN_VFNMSUBPS): Ditto.
4792         (IX86_BUILTIN_VFNMSUBPD): Ditto.
4793         (IX86_BUILTIN_VFMADDPS256): Ditto.
4794         (IX86_BUILTIN_VFMADDPD256): Ditto.
4795         (IX86_BUILTIN_VFMSUBPS256): Ditto.
4796         (IX86_BUILTIN_VFMSUBPD256): Ditto.
4797         (IX86_BUILTIN_VFMADDSUBPS256): Ditto.
4798         (IX86_BUILTIN_VFMADDSUBPD256): Ditto.
4799         (IX86_BUILTIN_VFMSUBADDPS256): Ditto.
4800         (IX86_BUILTIN_VFMSUBADDPD256): Ditto.
4801         (IX86_BUILTIN_VFNMADDPS256): Ditto.
4802         (IX86_BUILTIN_VFNMADDPD256): Ditto.
4803         (IX86_BUILTIN_VFNMSUBPS256): Ditto.
4804         (IX86_BUILTIN_VFNMSUBPD256): Ditto.
4805         (enum multi_arg_type): New enum for describing the various FMA4
4806         intrinsic argument types.
4807         (bdesc_multi_arg): New table for FMA4 intrinsics.
4808         (ix86_init_mmx_sse_builtins): Add FMA4 intrinsic support.
4809         (ix86_expand_multi_arg_builtin): New function for creating FMA4
4810         intrinsics.
4811         (ix86_expand_builtin): Add FMA4 intrinsic support.
4812         (ix86_fma4_valid_op_p): New function to validate FMA4 3 and 4
4813         operand instructions.
4814         (ix86_expand_fma4_multiple_memory): New function to split the
4815         second memory reference from FMA4 instructions.
4816         * config/i386/sse.md (ssemodesuffixf4): New mode attribute for FMA4.
4817         (ssemodesuffixf2s): Ditto.
4818         (fma4_fmadd<mode>4): Add FMA4 floating point multiply/add
4819         instructions.
4820         (fma4_fmsub<mode>4): Ditto.
4821         (fma4_fnmadd<mode>4): Ditto.
4822         (fma4_fnmsub<mode>4): Ditto.
4823         (fma4_vmfmadd<mode>4): Ditto.
4824         (fma4_vmfmsub<mode>4): Ditto.
4825         (fma4_vmfnmadd<mode>4): Ditto.
4826         (fma4_vmfnmsub<mode>4): Ditto.
4827         (fma4_fmadd<mode>4256): Ditto.
4828         (fma4_fmsub<mode>4256): Ditto.
4829         (fma4_fnmadd<mode>4256): Ditto.
4830         (fma4_fnmsub<mode>4256): Ditto.
4831         (fma4_fmaddsubv8sf4): Ditto.
4832         (fma4_fmaddsubv4sf4): Ditto.
4833         (fma4_fmaddsubv4df4): Ditto.
4834         (fma4_fmaddsubv2df4): Ditto.
4835         (fma4_fmsubaddv8sf4): Ditto.
4836         (fma4_fmsubaddv4sf4): Ditto.
4837         (fma4_fmsubaddv4df4): Ditto.
4838         (fma4_fmsubaddv2df4): Ditto.
4839         (fma4i_fmadd<mode>4): Add FMA4 floating point multiply/add
4840         instructions for intrinsics.
4841         (fma4i_fmsub<mode>4): Ditto.
4842         (fma4i_fnmadd<mode>4): Ditto.
4843         (fma4i_fnmsub<mode>4): Ditto.
4844         (fma4i_vmfmadd<mode>4): Ditto.
4845         (fma4i_vmfmsub<mode>4): Ditto.
4846         (fma4i_vmfnmadd<mode>4): Ditto.
4847         (fma4i_vmfnmsub<mode>4): Ditto.
4848         (fma4i_fmadd<mode>4256): Ditto.
4849         (fma4i_fmsub<mode>4256): Ditto.
4850         (fma4i_fnmadd<mode>4256): Ditto.
4851         (fma4i_fnmsub<mode>4256): Ditto.
4852         (fma4i_fmaddsubv8sf4): Ditto.
4853         (fma4i_fmaddsubv4sf4): Ditto.
4854         (fma4i_fmaddsubv4df4): Ditto.
4855         (fma4i_fmaddsubv2df4): Ditto.
4856         (fma4i_fmsubaddv8sf4): Ditto.
4857         (fma4i_fmsubaddv4sf4): Ditto.
4858         (fma4i_fmsubaddv4df4): Ditto.
4859         (fma4i_fmsubaddv2df4): Ditto.
4860
4861         * doc/invoke.texi (-mfma4): Add documentation.
4862         * doc/extend.texi (x86 intrinsics): Add FMA4 intrinsics.
4863
4864 2009-09-29  Richard Henderson  <rth@redhat.com>
4865
4866         * tree-eh.c (unsplit_eh): Do not unsplit if there's already
4867         an edge to the new destination block.
4868
4869 2009-09-29  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
4870
4871         PR target/41393
4872         * pa.c (hppa_profile_hook): Use
4873         make_reg_eh_region_note_nothrow_nononlocal to add REG_EH_REGION note.
4874
4875 2009-09-29  Steve Ellcey  <sje@cup.hp.com>
4876             Alexander Monakov  <amonakov@ispras.ru>
4877
4878         PR target/41365
4879         * config/ia64/predicates.md (not_postinc_destination_operand): New.
4880         (not_postinc_memory_operand): New.
4881         (not_postinc_move_operand): New.
4882         * config/ia64/ia64.md (*cmovdi_internal): Disallow autoincrement.
4883         (*cmovsi_internal): Ditto.
4884
4885 2009-09-29  Pat Haugen  <pthaugen@us.ibm.com>
4886
4887         * config/rs6000/rs6000.c (rs6000_issue_rate): Don't artificially
4888         restrict issue_rate in first pass when scheduling for register
4889         pressure.
4890
4891 2009-09-29  Basile Starynkevitch  <basile@starynkevitch.net>
4892             Rafael Avila de Espindola  <espindola@google.com>
4893
4894         * gengtype.c (plugin_output): New.
4895         (get_output_file_with_visibility): Return plugin_output for plugins.
4896         (main): Parse and use the -P option.
4897         * gty.texi: Update the command line format.
4898
4899 2009-09-29  Jakub Jelinek  <jakub@redhat.com>
4900
4901         PR debug/41438
4902         * dwarf2out.c (const_ok_for_output_1, const_ok_for_output): New
4903         functions.
4904         (mem_loc_descriptor, loc_descriptor, add_const_value_attribute): Bail
4905         out if !const_ok_for_output.
4906
4907         PR debug/41474
4908         * dwarf2out.c (mem_loc_descriptor) <case CONCAT, case CONCATN,
4909         case VAR_LOCATION>: Remove gcc_unreachable ().
4910
4911 2009-09-29  Harsha Jagasia  <harsha.jagasia@amd.com>
4912
4913         * config.gcc (i[34567]86-*-*): Remove mmintrin-common.h.
4914         (x86_64-*-*): Ditto.
4915         * config/i386/smmintrin.h: Move instructions in mmintrin-common.h
4916         back to smmintrin.h.
4917         * config/i386/cpuid.h (bit_SSE5): Remove SSE5 bit.
4918         * config/i386/x86intrin.h: Remove SSE5.
4919         * config/i386/mmintrin-common.h: Delete file.
4920         * doc/extend.texi (x86 intrinsics): Remove SSE5 flags and builtins.
4921
4922 2009-09-29  Richard Guenther  <rguenther@suse.de>
4923
4924         * alias.c (ao_ref_from_mem): Properly deal with off decl accesses
4925         resulting from stack temporaries on STRICT_ALIGNMENT targets.
4926
4927 2009-09-29  Nick Clifton  <nickc@redhat.com>
4928
4929         * function.c (current_function_name): If there is no current
4930         function just return "<none>".
4931
4932 2009-09-28  Sriraman Tallam  <tmsriram@google.com>
4933
4934         * tree-pass.h (register_pass_info): New structure.
4935         (pass_positioning_ops): Move enum from gcc-plugin.h.
4936         (register_pass): New function.
4937         * gcc-plugin.h (plugin_pass): Delete structure.
4938         (pass_positioning_ops): Delete enum.
4939         * plugin.c (regsiter_pass): Delete function.
4940         (position_pass): Delete function.
4941         (added_pass_nodes): Delete variable.
4942         (prev_added_pass_nodes): Delete variable.
4943         (pass_list_node): Delete structure.
4944         * passes.c (make_pass_instance): New function.
4945         (next_pass_1): Change to call make_pass_instance.
4946         (pass_list_node): Move structure from gcc-plugin.h.
4947         (added_pass_nodes): Move variable from plugin.c.
4948         (prev_added_pass_nodes): Move variable from plugin.c.
4949         (position_pass): New function.
4950         (register_pass): New function.
4951
4952 2009-09-28  Easwaran Raman  <eraman@google.com>
4953
4954         * ifcvt.c (noce_try_abs): Recognize pattern and call
4955         expand_one_cmpl_abs_nojump.
4956         * optabs.c (expand_one_cmpl_abs_nojump): New function.
4957         * optabs.h (expand_one_cmpl_abs_nojump): Declare.
4958
4959 2009-09-28  Ian Lance Taylor  <iant@google.com>
4960
4961         PR middle-end/40500
4962         * c-opts.c (c_common_handle_option): Don't set
4963         warn_jump_misses_init for -Wall.
4964         * doc/invoke.texi (Warning Options): Update documentation.
4965
4966 2009-09-28  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
4967
4968         * Makefile.in ($(out_object_file)): Depend on
4969         gt-$(basename $(notdir $(out_file))).h.
4970
4971 2009-09-28  Richard Henderson  <rth@redhat.com>
4972
4973         * except.h (struct eh_region_d): Add use_cxa_end_cleanup.
4974         * except.c (gen_eh_region): Set it.
4975         (duplicate_eh_regions_1): Copy it.
4976         * tree-eh.c (lower_resx): Use it to determine which function
4977         to call to resume.
4978
4979         * langhooks.h (struct lang_hooks): Add eh_use_cxa_end_cleanup.
4980         * langhooks-def.h (LANG_HOOKS_EH_USE_CXA_END_CLEANUP): New.
4981         * builtins.def (BUILT_IN_CXA_END_CLEANUP): New.
4982         * tree.c (build_common_builtin_nodes): Remove parameter.  Build
4983         BUILT_IN_CXA_END_CLEANUP if necessary.
4984
4985         * c-common.c (c_define_builtins): Update call to
4986         build_common_builtin_nodes.
4987
4988 2009-09-28  Andrew Pinski  <andrew_pinski@playstation.sony.com>
4989
4990         * spu.c (get_branch_target): Return NULL for ASM_OPERANDS patterns.
4991
4992 2009-09-28  Michael Matz  <matz@suse.de>
4993
4994         * builtins.c (interclass_mathfn_icode): New helper.
4995         (expand_builtin_interclass_mathfn): Use it here, and split folding
4996         into ...
4997         (fold_builtin_interclass_mathfn): ... this new folder.
4998         (build_call_nofold_loc): New static helper.
4999         (build_call_nofold): New wrapper macro for above.
5000         (expand_builtin_int_roundingfn): Use it instead of build_call_expr.
5001         (expand_builtin_pow): Ditto.
5002         (expand_builtin_memset_args): Ditto.
5003         (expand_builtin_printf): Ditto.
5004         (expand_builtin_fprintf): Ditto.
5005         (expand_builtin_sprintf): Ditto.
5006         (expand_builtin_memory_chk): Ditto.
5007         (expand_builtin_mempcpy_args): Ditto and don't call folders.
5008         (expand_builtin_stpcpy): Ditto.
5009         (expand_builtin_strcmp): Ditto.
5010         (expand_builtin_strncmp): Ditto.
5011         (expand_builtin_strcpy): Remove FNDECL and MODE arguments.
5012         (expand_builtin_strcpy_args): Don't call folders.
5013         (expand_builtin_memcmp): Ditto.
5014         (expand_builtin_strncpy): Ditto, and use target.
5015         (expand_builtin_memcpy): Ditto.
5016         (expand_builtin_strstr, expand_builtin_strchr, expand_builtin_strrchr,
5017         expand_builtin_strpbrk, expand_builtin_memmove,
5018         expand_builtin_memmove_args, expand_builtin_bcopy,
5019         expand_builtin_memchr, expand_builtin_strcat, expand_builtin_strncat,
5020         expand_builtin_strspn, expand_builtin_strcspn,
5021         expand_builtin_fputs): Remove these.
5022         (expand_builtin): Don't call the above, change calls to other
5023         expanders that changed prototype.
5024         (fold_builtin_stpcpy): New folder split out from expand_builtin_stpcpy.
5025         (fold_builtin_1 <ISFINITE, ISINF, ISNORMAL>): Call
5026         fold_builtin_interclass_mathfn.
5027         (fold_builtin_2 <STPCPY>): Call fold_builtin_stpcpy.
5028         (fold_builtin_strcat): Add folding split from expand_builtin_strcat.
5029
5030         * fold-const.c (fold_binary_loc <NE_EXPR>): Add !exp != 0 -> !exp.
5031         * passes.c (init_optimization_passes): Move pass_fold_builtins
5032         after last phiopt pass.
5033         * tree-inline.c (fold_marked_statements): When folding builtins
5034         iterate over all instruction potentially generated.
5035         * tree-ssa-ccp.c (gimplify_and_update_call_from_tree): Declare
5036         earlier.
5037         (fold_gimple_call): Use it to always fold calls (into potentially
5038         multiple instructions).
5039         * tree-ssa-dom.c (optimize_stmt): Resolve __builtin_constant_p
5040         calls into zero at this time.
5041         * tree-ssa-propagate.c (substitute_and_fold): Ignore multiple
5042         statements generated by builtin folding.
5043
5044 2009-09-28  Nick Clifton  <nickc@redhat.com>
5045
5046         * config/m32r/m32r.c (m32r_is_insn): Return false for debugging insns.
5047
5048 2009-09-28  Duncan Sands  <baldrick@free.fr>
5049
5050         * gcc-plugin.h (PLUGIN_REGISTER_GGC_CACHES): New event.
5051         * plugin.c (plugin_event_name): Add PLUGIN_REGISTER_GGC_CACHES.
5052         (register_callback): Dispatch it.
5053         (invoke_plugin_callbacks): Incorporate in sanity check.
5054         * ggc.h (ggc_register_cache_tab): Add declaration.
5055         * ggc-common.c (ggc_register_root_tab): Simplify.
5056         (const_ggc_cache_tab_t): New typedef.
5057         (extra_cache_vec): New vector of dynamically added cache tables.
5058         (ggc_register_cache_tab): New function.
5059         (ggc_scan_cache_tab): New function.
5060         (ggc_mark_roots): Simplify dynamic roots.  Handle dynamic caches.
5061         * doc/plugins.texi: Document PLUGIN_REGISTER_GGC_CACHES.
5062
5063 2009-09-27  Richard Henderson  <rth@redhat.com>
5064
5065         * tree-ssa-ccp.c (optimize_stack_restore): Relax the conditions under
5066         which we remove __builtin_stack_restore.
5067
5068 2009-09-27  Bernd Schmidt  <bernd.schmidt@analog.com>
5069
5070         * loop-iv.c (iv_analyze_op): Use function_invariant_p, not CONSTANT_P,
5071         to test for GRD_INVARIANT.
5072         (simple_rhs_p): Anything that's function_invariant_p is fine.
5073
5074 2009-09-27  Rafael Avila de Espindola  <espindola@google.com>
5075
5076         * gengtype.c (main): Use plunge_files instead of plugin_output.
5077
5078 2009-09-27  Basile Starynkevitch  <basile@starynkevitch.net>
5079             Rafael Avila de Espindola  <espindola@google.com>
5080
5081         * gengtype.c (write_root, write_roots): Add a emit_pch argument.
5082         Don't print pch related info if it is false.
5083         (main): Don't print pch info in plugin mode.
5084
5085 2009-09-27  Eric Botcazou  <ebotcazou@adacore.com>
5086
5087         * dwarf2out.c (enum dw_val_class): Replace dw_val_class_long_long
5088         with dw_val_class_const_double.
5089         (struct dw_val_struct): Replace val_long_long with val_double and
5090         adjust for above change.
5091         (output_loc_operands): Likewise.
5092         (add_AT_long_long): Rename into...
5093         (add_AT_double): ...this.
5094         (print_die): Replace dw_val_class_long_long with
5095         dw_val_class_const_double and adjust.
5096         (attr_checksum): Likewise.
5097         (same_dw_val_p): Likewise.
5098         (size_of_die): Likewise.
5099         (value_format): Likewise.
5100         (output_die): Likewise.
5101         (loc_descriptor) <CONST_DOUBLE>: Likewise.
5102         (add_const_value_attribute) <CONST_DOUBLE>: Call add_AT_double
5103         instead of add_AT_long_long.
5104         (add_bound_info) <INTEGER_CST>: Generate the bound as an unsigned
5105         value with the precision of its type.
5106
5107 2009-09-27  Andreas Schwab  <schwab@linux-m68k.org>
5108
5109         PR c/41476
5110         * c-typeck.c (build_conditional_expr): Use the readonly and
5111         volatile flags of the operand types, not of the operands itself.
5112
5113 2009-09-27  Peter O'Gorman  <pogma@thewrittenword.com>
5114
5115         * collect2.c (main): Look for -brtl before adding libraries.
5116
5117 2009-09-27  Jonathan Gray  <jsg@openbsd.org>
5118
5119         * config.gcc: Update OpenBSD targets.
5120         * config/openbsd-stdint.h: New file.
5121         * config/openbsd-libpthread.h: New file.
5122         * config/openbsd.h: Update and break out LIB_SPEC definition.
5123         * config/alpha/openbsd.h: Overhaul to reflect ELF migration.
5124         * config/i386/openbsdelf.h: Correct types.
5125         * config/m68k/openbsd.h: Likewise.
5126         * config/mips/openbsd.h: Likewise.
5127         * config/vax/openbsd.h: Likewise.
5128
5129 2009-09-27  Eric Botcazou  <ebotcazou@adacore.com>
5130
5131         * fold-const.c (maybe_lvalue_p): Return false for M(IN|AX)_EXPR.
5132         (extract_muldiv_1) <MINUS_EXPR>: Swap operands if necessary.
5133         * stor-layout.c (layout_type) <ARRAY_TYPE>: Do not take the maximum
5134         of the length and zero.
5135
5136 2009-09-27  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
5137
5138         * Makefile.in (TOPLEV_H): Use $(INPUT_H) not input.h.
5139         (FLAGS_H): Add options.h $(REAL_H).
5140         (SEL_SCHED_IR_H): Add $(BITMAP_H) vecprim.h $(CFGLOOP_H).
5141         (TREE_VECTORIZER_H): New.
5142         (EBITMAP_H): Renamed from EBIMAP_H.
5143         (c-decl.o, c-objc-common.o, c-pretty-print.o, attribs.o, c-omp.o)
5144         (gtype-desc.o, ggc-common.o, ggc-page.o, ggc-zone.o, langhooks.o)
5145         (tree.o, tree-ssa-structalias.o, tree-ssa-ter.o, tree-ssanames.o)
5146         (tree-phinodes.o, tree-ssa-loop.o, tree-ssa-math-opts.o)
5147         (gimple-low.o, omp-low.o, sese.o, graphite-blocking.o)
5148         (graphite-clast-to-gimple.o, graphite-dependences.o)
5149         (graphite-interchange.o, graphite-poly.o, graphite-scop-detection.o)
5150         (graphite-sese-to-poly.o, tree-vect-loop.o, tree-vect-loop-manip.o)
5151         (tree-vect-patterns.o, tree-vect-slp.o, tree-vect-stmts.o)
5152         (tree-vect-data-refs.o, tree-vectorizer.o, gimple.o, tree-mudflap.o)
5153         (targhooks.o, stmt.o, emit-rtl.o, ipa.o, matrix-reorg.o, ipa-inline.o)
5154         (gcse.o, tree-ssa-ccp.o, df-byte-scan.o, vec.o, caller-save.o)
5155         (ira-build.o, ira-costs.o, ira-color.o, ira-emit.o, ira.o)
5156         (haifa-sched.o, sched-rgn.o, sel-sched.o, sel-sched-dump.o)
5157         (sel-sched-ir.o, final.o, $(out_object_file)): Dependencies
5158         updated and fixed as per above changes and per
5159         check_makefile_deps.sh output.
5160
5161         PR bootstrap/40928
5162         * configure.ac: Use $LIBS for '-ldl', not $LDFLAGS.
5163         * configure: Regenerate.
5164
5165 2009-09-26  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
5166
5167         * doc/install.texi: Update minimum MPC version to 0.7.
5168
5169 2009-09-26  Gerald Pfeifer  <gerald@pfeifer.com>
5170
5171         * doc/install.texi (Binaries): Remove reference to the binary
5172         distribution CD-ROM from the FSF.
5173
5174 2009-09-26  Michael Matz  <matz@suse.de>
5175
5176         PR lto/40758
5177         PR middle-end/41470
5178         * tree-ssa-coalesce.c (coalesce_ssa_name): Add only SSA names
5179         that are mentioned in the body.
5180
5181 2009-09-26  Michael Matz  <matz@suse.de>
5182
5183         PR tree-optimization/41454
5184         * tree-ssa-dom (stmts_to_rescan): Remove variable.
5185         (tree_ssa_dominator_optimize): Don't allocate and free it.
5186         (dom_opt_leave_block): Don't iterate over it.
5187         (eliminate_redundant_computations): Don't return a value.
5188         (cprop_operand, cprop_into_stmt): Ditto.
5189         (optimize_stmt): Don't defer updating stmts.
5190
5191 2009-09-25  Dodji Seketeli  <dodji@redhat.com>
5192
5193         * dwarf2out.c (dwarf_tag_name, gen_generic_params_dies,
5194         generic_parameter_die, template_parameter_pack_die,
5195         gen_formal_parameter_die, gen_subprogram_die): Adjust after
5196         renaming DW_TAG_formal_parameter_pack and
5197         DW_TAG_template_parameter_pack into DW_TAG_GNU_formal_parameter_pack
5198         and DW_TAG_GNU_template_parameter_pack.
5199
5200 2009-09-25  Anatoly Sokolov  <aesok@post.ru>
5201
5202         * config/v850/v850.h (FUNCTION_VALUE): Remove.
5203         * config/v850/v850.c (v850_function_value): New function.
5204         (TARGET_FUNCTION_VALUE): Define.
5205
5206 2009-09-25  Jakub Jelinek  <jakub@redhat.com>
5207
5208         * tree-vect-stmts.c (vectorizable_call): Call
5209         mark_symbols_for_renaming after vect_finish_stmt_generation.
5210
5211         * dwarf2out.c (tls_mem_loc_descriptor): Pass 1 instead of 2
5212         to loc_descriptor_from_tree.
5213         (add_location_or_const_value_attribute): Pass 0 instead of 2
5214         for decl_by_reference_p decls.
5215
5216 2009-09-25  Richard Guenther  <rguenther@suse.de>
5217
5218         PR middle-end/41463
5219         * tree-dfa.c (get_ref_base_and_extent): Fix issue with trailing
5220         arrays again.
5221
5222 2009-09-25  Ben Elliston  <bje@au.ibm.com>
5223
5224         * doc/invoke.texi (RS/6000 and PowerPC Options): Add missing comma
5225         after `power7'.
5226
5227 2009-09-25  Alan Modra  <amodra@bigpond.net.au>
5228
5229         * config/rs6000/rs6000.md (load_toc_v4_PIC_3c): Correct POWER
5230         form of instruction.
5231
5232 2009-09-24  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
5233
5234         PR middle-end/41435
5235         * fold-const.c (const_binop): Handle complex int division.
5236         * tree-complex.c (expand_complex_div_straight,
5237         expand_complex_div_wide): Update comments.
5238
5239 2009-09-24  DJ Delorie  <dj@redhat.com>
5240
5241         PR target/41456
5242         * config/m32c/m32c.h (REG_CLASS_CONTENTS): Add R13.
5243         (reg_class): Likewise.
5244         (REG_CLASS_NAMES): Likewise.
5245         * config/m32c/m32c.c (m32c_reg_class_from_constraint): Likewise.
5246         (m32c_override_options): Disable -fivopts for M32C.
5247
5248 2009-09-24  Michael Meissner  <meissner@linux.vnet.ibm.com>
5249
5250         * config/rs6000/predicates.md (indexed_or_indirect_operand):
5251         Delete VSX load/store with update support.
5252         * config/rs6000/rs6000.c (rs6000_legitimate_address_p): Ditto.
5253         * config/rs6000/vsx.md (vsx_mov<mode>): Ditto.
5254         (vsx_movti): Ditto.
5255         (VSX_U): Delete.
5256         (VSbit): Ditto.
5257         (VStype_load_update): Ditto.
5258         (VStype_store_update): Ditto.
5259         (vsx_load<VSX_U:mode>_update_<P:mptrsize>): Ditto.
5260         (vsx_store<VSX_U:mode>_update_<P:mptrsize>): Ditto.
5261
5262         * config/rs6000/rs6000.h (enum rs6000_builtins): Delete VSX
5263         load/store with update builtins.
5264
5265 2009-09-24  Kai Tietz  <kai.tietz@onevision.com>
5266
5267         * libgcc2.c (L_trampoline): Prototype for getpagesize
5268         and mprotect in WINNT case.
5269
5270 2009-09-24  Anatoly Sokolov  <aesok@post.ru>
5271
5272         * config/rs6000/rs6000.h (FUNCTION_VALUE): Remove macro.
5273         * config/rs6000/rs6000-protos.h (rs6000_function_value): Remove.
5274         * config/rs6000/rs6000.c (rs6000_function_value): Make static, add
5275         'outgoing' argument.
5276         (TARGET_FUNCTION_VALUE): Define.
5277
5278 2009-09-24  Iain Sandoe  <iain.sandoe@sandoe-acoustics.co.uk>
5279
5280         * config/darwin.h (DWARF2_DEBUGGING_INFO): Define as 1.
5281
5282 2009-09-24  Iain Sandoe  <iain.sandoe@sandoe-acoustics.co.uk>
5283
5284         PR bootstrap/41405
5285         * common.opt: Initialize dwarf_strict to -1.
5286         * toplev.c (process_options): Catch unset dwarf_strict
5287         and set to 0 for all targets not overriding.
5288         * config/darwin.c (darwin_override_options): Catch unset
5289         dwarf_strict and override to 1.
5290
5291 2009-09-24  Jeff Law  <law@redhat.com>
5292
5293         * tree-into-ssa.c (rewrite_into_ssa): Free interesting_blocks.
5294
5295 2009-09-24  Richard Guenther  <rguenther@suse.de>
5296
5297         PR tree-optimization/36143
5298         PR tree-optimization/38747
5299         * tree-ssa-forwprop.c (forward_propagate_addr_expr_1): Only
5300         create VIEW_CONVERT_EXPRs for TBAA compatible accesses.
5301
5302 2009-09-24  Jakub Jelinek  <jakub@redhat.com>
5303
5304         PR bootstrap/41457
5305         * dwarf2out.c (add_const_value_attribute): For HIGH and CONST_FIXED,
5306         return false instead of gcc_unreachable ().  For CONST return the
5307         value returned by recursive call instead of always returning true.
5308         (tree_add_const_value_attribute): Return the value returned by
5309         add_const_value_attribute instead of always returning true if rtl
5310         is non-NULL.
5311
5312 2009-09-23  Justin Seyster  <jrseys@gmail.com>
5313
5314         * Makefile.in (PLUGIN_HEADERS): Include real.h.
5315
5316 2009-09-24  Jakub Jelinek  <jakub@redhat.com>
5317
5318         * cgraphunit.c (cgraph_lower_function): Revert last change.
5319         * targhooks.c (default_static_chain): Use !DECL_STATIC_CHAIN
5320         instead of DECL_NO_STATIC_CHAIN.
5321         * tree-cfg.c (verify_gimple_call): Likewise.
5322         * tree-nested.c (get_chain_decl, get_chain_field,
5323         convert_tramp_reference_op, convert_gimple_call): Likewise.
5324         (convert_all_function_calls): Likewise.  Always set or clear
5325         DECL_STATIC_CHAIN initially, for !n->outer clear it.
5326         (lower_nested_functions): Remove DECL_NO_STATIC_CHAIN checking code.
5327         * c-parser.c (c_parser_declaration_or_fndef): Set DECL_STATIC_CHAIN
5328         if nested.
5329         * print-tree.c (print_node): Handle DECL_STATIC_CHAIN instead of
5330         DECL_NO_STATIC_CHAIN.
5331         * config/i386/i386.c (ix86_static_chain): Use !DECL_STATIC_CHAIN
5332         instead of DECL_NO_STATIC_CHAIN.
5333         (ix86_function_regparm, find_drap_reg): Likewise.  Don't test
5334         decl_function_context.
5335         * varasm.c (initializer_constant_valid_p): Likewise.
5336         * tree.h (DECL_NO_STATIC_CHAIN): Renamed to ...
5337         (DECL_STATIC_CHAIN): ... this.
5338         * config/moxie/moxie.c (moxie_static_chain): Use !DECL_STATIC_CHAIN
5339         instead of DECL_NO_STATIC_CHAIN.
5340
5341 2009-09-23  Basile Starynkevitch  <basile@starynkevitch.net>
5342             Rafael Avila de Espindola  <espindola@google.com>
5343
5344         * gengtype.c (nb_plugin_files): Make it unsigned to match
5345         num_gt_files. Adjust other variables to avoid warnings.
5346         (main): Allocate an all zero lang_bitmap before each plugin file name
5347         to match regular file names.
5348
5349 2009-09-23  Richard Henderson  <rth@redhat.com>
5350
5351         * doc/tm.texi (STATIC_CHAIN, STATIC_CHAIN_INCOMING): Remove.
5352         (TARGET_STATIC_CHAIN): Mention that this hook must be used for
5353         static chain passed in memory.
5354         * system.h (STATIC_CHAIN, STATIC_CHAIN_INCOMING): Poison.
5355         * targhooks.c (default_static_chain): Don't handle STATIC_CHAIN,
5356         STATIC_CHAIN_INCOMING.  Issue a sorry if there's no
5357         STATIC_CHAIN_REGNUM defined.
5358
5359         * config/picochip/picochip-protos.h: s/class/klass/.
5360         * config/picochip/picochip.c (TARGET_STATIC_CHAIN): New.
5361         (picochip_static_chain): New.
5362         * config/picochip/picochip.h (STATIC_CHAIN): Remove.
5363         (STATIC_CHAIN_INCOMING): Remove.
5364
5365         * config/xtensa/xtensa.c (TARGET_STATIC_CHAIN): New.
5366         (xtensa_static_chain): New.
5367         * config/xtensa/xtensa.h (STATIC_CHAIN): Remove.
5368         (STATIC_CHAIN_INCOMING): Remove.
5369
5370 2009-09-23  Anatoly Sokolov  <aesok@post.ru>
5371
5372         * config/pa/pa.h (FUNCTION_VALUE): Remove macro.
5373         * config/pa/pa-protos.h (function_value): Remove.
5374         * config/pa/pa.c (pa_function_value): Rename from function_value.
5375         Make static, add 'outgoing' argument.
5376         (TARGET_FUNCTION_VALUE): Define.
5377
5378 2009-09-23  Anatoly Sokolov  <aesok@post.ru>
5379
5380         * config/avr/avr.c (avr_regs_to_save): Use current_function_is_leaf
5381         instead of cfun->machine->is_leaf.
5382         * config/avr/avr.h (machine_function): Remove is_leaf field.
5383
5384 2009-09-23  Jakub Jelinek  <jakub@redhat.com>
5385
5386         PR debug/41439
5387         * dwarf2out.c (address_of_int_loc_descriptor): Don't emit
5388         DW_OP_piece after DW_OP_stack_value, adjust size calculations
5389         for it, when DW_OP_stack_value and DW_OP_implicit_value has
5390         the same size, prefer DW_OP_stack_value.
5391         (loc_descriptor, loc_list_for_address_of_addr_expr_of_indirect_ref,
5392         loc_list_from_tree): Don't emit DW_OP_piece after DW_OP_stack_value.
5393
5394 2009-09-23  Alexandre Oliva  <aoliva@redhat.com>
5395
5396         PR debug/41353
5397         * var-tracking.c (add_with_sets): Sort MO_VAL_LOC last among uses.
5398
5399 2009-09-23  Alexandre Oliva  <aoliva@redhat.com>
5400
5401         PR debug/41248
5402         * cfgexpand.c (convert_debug_memory_address): New.
5403         (expand_debug_expr): Convert base address and offset to the same
5404         mode.  Use it to convert addresses to other modes.  Accept
5405         ptr_mode addresses.
5406
5407 2009-09-23  Dodji Seketeli <dodji@redhat.com>
5408
5409         PR debug/41065
5410         * function.h (types_used_by_vars_hash): Declare new hash table.
5411         (types_used_by_vars_eq, types_used_by_var_decl_insert): Declare
5412         equality and hash function for the hash table.
5413         (types_used_by_cur_var_decl): Declare a new global chained list.
5414         (types_used_by_var_decl_insert): Declare new function.
5415         * function.c (types_used_by_vars_hash): Define the hashtable ...
5416         (types_used_by_vars_eq, types_used_by_vars_do_hash): ... as well as
5417         its equality and hash functions.
5418         (hash_types_used_by_vars_entry): New hash helper.
5419         (types_used_by_cur_var_decl): Define the global chained list.
5420         (used_types_insert): Update the list of types used by the global
5421         variable being parsed.
5422         (types_used_by_var_decl_insert): Define new function.
5423         * c-common.h (record_types_used_by_current_var_decl): Declare ...
5424         * c-common.c (record_types_used_by_current_var_decl): ... new
5425         function.
5426         * c-decl.c (finish_decl): Record the types used by the global
5427         variable declaration we've just parsed.
5428         * dwarf2out.c (premark_used_types): Insert a new line between
5429         comment and function.
5430         (premark_used_types_helper): Fix comment.
5431         (premark_types_used_by_global_vars_helper,
5432         premark_types_used_by_global_vars): New functions.
5433         (prune_unused_types): Do not prune types used by global variables.
5434
5435 2009-09-23  Richard Guenther  <rguenther@suse.de>
5436
5437         * alias.c (ao_ref_from_mem): Correct for negative MEM_OFFSET
5438         produced for bigendian targets with promoted subregs.
5439
5440 2009-09-23  Richard Guenther  <rguenther@suse.de>
5441
5442         * value-prof.c (gimple_ic): Purge old EH edges only after building
5443         the new ones.
5444
5445 2009-09-23  Nick Clifton  <nickc@redhat.com>
5446
5447         * config/arc/arc.c (arc_trampoline_init): Fix typo.
5448
5449 2009-09-23  Jakub Jelinek  <jakub@redhat.com>
5450
5451         PR bootstrap/41405
5452         * doc/invoke.texi: Document -gstrict-dwarf and -gno-strict-dwarf.
5453
5454         PR bootstrap/41436
5455         * cgraphunit.c (cgraph_lower_function): Set DECL_NO_STATIC_CHAIN
5456         on non-nested functions.
5457
5458 2009-09-23  Jakub Jelinek  <jakub@redhat.com>
5459             Jan Hubicka  <jh@suse.cz>
5460
5461         * dwarf2out.c (loc_list_plus_const): Only define if
5462         DWARF2_DEBUGGING_INFO.
5463         (address_of_int_loc_descriptor): Likewise.
5464
5465         PR debug/41411
5466         * dwarf2out.c (mem_loc_descriptor): Handle HIGH.
5467
5468 2009-09-23  Uros Bizjak  <ubizjak@gmail.com>
5469
5470         PR c/39779
5471         * c-typeck.c (build_binary_op) <short_shift>: Check that integer
5472         constant is more than zero.
5473
5474 2009-09-23  Alan Modra  <amodra@bigpond.net.au>
5475
5476         PR target/40473
5477         * config/rs6000/rs6000.c (rs6000_output_function_prologue): Don't
5478         call final to emit non-scheduled prologue, instead insert at entry.
5479
5480 2009-09-22  Loren J. Rittle  <ljrittle@acm.org>
5481             Joseph S. Myers  <joseph@codesourcery.com>
5482
5483         * doc/install.texi (*-*-freebsd*): Add proper format codes.
5484
5485 2009-09-22  Basile Starynkevitch  <basile@starynkevitch.net>
5486             Rafael Avila de Espindola  <espindola@google.com>
5487
5488         * gengtype.c (is_file_equal): New function.
5489         (close_output_files): Use is_file_equal. Free of->buf.
5490
5491 2009-09-22  Basile Starynkevitch  <basile@starynkevitch.net>
5492             Rafael Avila de Espindola  <espindola@google.com>
5493
5494         * gengtype.c (write_types, write_local): Add the output_header
5495         argument. Update all callers.
5496
5497 2009-09-22  Dodji Seketeli  <dodji@redhat.com>
5498
5499         * dwarf2out.c (template_parameter_pack_die,
5500         gen_formal_parameter_pack_die ): New functions.
5501         (make_ith_pack_parameter_name): Remove this function.
5502         (dwarf_tag_name): Support printing DW_TAG_template_parameter_pack and
5503         DW_TAG_formal_parameter_pack.
5504         (gen_generic_params_dies): Represent each template parameter pack
5505         by a DW_TAG_template_parameter_pack DIE. Argument pack elements are
5506         represented by usual DW_TAG_template_*_parameter DIEs that are
5507         children of the DW_TAG_template_parameter_pack element DIE.
5508         (generic_parameter_die): This doesn't deal with parameter pack
5509         names anymore. Don't generate DW_AT_name for some DIEs, e.g. children
5510         of parameter pack DIEs.
5511         (gen_formal_parameter_die): Add a flag to not emit DW_AT_name
5512         in certain cases, e.g. for pack elements.
5513         (gen_formal_types_die, gen_decl_die): Adjust usage of
5514         gen_formal_parameter_die.
5515         (gen_subprogram_die): Represent each function parameter pack by a
5516         DW_TAG_formal_parameter_pack DIE. Arguments of of the pack are
5517         represented by usual DW_TAG_formal_parameter DIEs that are children
5518         of the DW_TAG_formal_parameter_pack DIE. Remove references to
5519         ____builtin_va_alist decls as no part of the compiler uses those
5520         anymore.
5521         * langhooks.h (struct lang_hooks_for_decls): Add
5522         function_parm_expanded_from_pack_p, get_generic_function_decl
5523         and function_parameter_pack_p hooks.  Fix comment for
5524         get_innermost_generic_parms hook.
5525         * langhooks-def.h (LANG_HOOKS_FUNCTION_PARAMETER_PACK_P,
5526         LANG_HOOKS_FUNCTION_PARM_EXPANDED_FROM_PACK_P ): Declare new hook
5527         macros and use them to initialize lang_hook.
5528
5529 2009-09-22  Richard Henderson  <rth@redhat.com>
5530
5531         * system.h (TRAMPOLINE_TEMPLATE, INITIALIZE_TRAMPOLINE): Poison.
5532         (TRAMPOLINE_ADJUST_ADDRESS): Poison.
5533         * target-def.h (TARGET_ASM_TRAMPOLINE_TEMPLATE): Don't conditionalize
5534         on TRAMPOLINE_TEMPLATE.
5535         (TARGET_TRAMPOLINE_ADJUST_ADDRESS): Don't conditionalize on
5536         TRAMPOLINE_ADJUST_ADDRESS.
5537         * targhooks.c (default_asm_trampoline_template): Remove.
5538         (default_trampoline_adjust_address): Remove.
5539         (default_trampoline_init): Don't handle INITIALIZE_TRAMPOLINE.
5540         * targhooks.h: Update decls.
5541
5542 2009-09-22  Dave Korn  <dave.korn.cygwin@gmail.com>
5543
5544         * config/i386/cygming.h (TARGET_USE_JCR_SECTION): Enable.
5545         * config/i386/cygwin.h (LIBGCJ_SONAME): Define.
5546         * config/i386/mingw32.h (LIBGCJ_SONAME): Likewise.
5547
5548 2009-09-22  Alexandre Oliva  <aoliva@redhat.com>
5549
5550         PR debug/41295
5551         * reload1.c (reload): Reset debug insns with pseudos without
5552         equivalences.
5553
5554 2009-09-22  Janis Johnson  <janis187@us.ibm.com>
5555
5556         * config/i386/i386.c (ix86_scalar_mode_supported_p): Don't return
5557         unconditional true for decimal float modes.
5558         * config/rs6000/rs6000.c (rs6000_scalar_mode_supported_p): Ditto.
5559         * config/s390/s390.c (s390_scalar_mode_supported_p): Ditto.
5560
5561 2009-09-22  Loren J. Rittle  <ljrittle@acm.org>
5562
5563         * unwind-dw2-fde-glibc.c: Define and use USE_PT_GNU_EH_FRAME.
5564         Enable a new case for __FreeBSD__ >= 7.
5565         * crtstuff.c:  Define USE_PT_GNU_EH_FRAME for __FreeBSD__ >= 7.
5566         * config/t-freebsd: Define LIB2ADDEH and LIB2ADDEHDEP.
5567         * config/freebsd-spec.h: Conditionally define LINK_EH_SPEC
5568         and USE_LD_AS_NEEDED.
5569
5570         * doc/install.texi (*-*-freebsd*): Update target information.
5571
5572 2009-09-22  Richard Guenther  <rguenther@suse.de>
5573
5574         PR middle-end/41395
5575         * tree-dfa.c (get_ref_base_and_extent): Handle trailing
5576         arrays really properly.
5577
5578 2009-09-22  Richard Henderson  <rth@redhat.com>
5579
5580         PR target/41246
5581         * target.h (struct gcc_target): Add asm_out.trampoline_template,
5582         calls.static_chain, calls.trampoline_init,
5583         calls.trampoline_adjust_address.
5584         * target-def.h (TARGET_ASM_TRAMPOLINE_TEMPLATE): New.
5585         (TARGET_STATIC_CHAIN, TARGET_TRAMPOLINE_INIT): New.
5586         (TARGET_TRAMPOLINE_ADJUST_ADDRESS): New.
5587         * builtins.c (expand_builtin_setjmp_receiver): Use
5588         targetm.calls.static_chain; only clobber registers.
5589         (expand_builtin_init_trampoline): Use targetm.calls.trampoline_init;
5590         set up memory attributes properly for the trampoline block.
5591         (expand_builtin_adjust_trampoline): Use
5592         targetm.calls.trampoline_adjust_address.
5593         * calls.c (prepare_call_address): Add fndecl argument.  Use
5594         targetm.calls.static_chain.
5595         * df-scan.c (df_need_static_chain_reg): Remove.
5596         (df_get_entry_block_def_set): Use targetm.calls.static_chain;
5597         consolodate static chain handling.
5598         * doc/tm.texi: Document new hooks.
5599         * emit-rtl.c (static_chain_rtx, static_chain_incoming_rtx): Remove.
5600         (init_emit_regs): Don't initialize them.
5601         * expr.h (prepare_call_address): Update decl.
5602         * final.c (profile_function): Use targetm.calls.static_chain.
5603         * function.c (expand_function_start): Likewise.
5604         * rtl.h (static_chain_rtx, static_chain_incoming_rtx): Remove.
5605         * stmt.c (expand_nl_goto_receiver): Use targetm.calls.static_chain;
5606         only clobber registers.
5607         * targhooks.c (default_static_chain): New.
5608         (default_asm_trampoline_template, default_trampoline_init): New.
5609         (default_trampoline_adjust_address): New.
5610         * targhooks.h: Declare them.
5611         * varasm.c (assemble_trampoline_template): Use
5612         targetm.asm_out.trampoline_template.  Make the memory block const
5613         and set its size.
5614
5615         * config/alpha/alpha.c (alpha_trampoline_init): Rename from
5616         alpha_initialize_trampoline.  Make static.  Merge VMS parameter
5617         differences into the TARGET_ABI_OPEN_VMS code block.
5618         (TARGET_TRAMPOLINE_INIT): New.
5619         * config/alpha/alpha.h (TRAMPOLINE_TEMPLATE): Remove.
5620         (TRAMPOLINE_SECTION, INITIALIZE_TRAMPOLINE): Remove.
5621         * config/alpha/vms.h (TRAMPOLINE_SIZE, TRAMPOLINE_ALIGNMENT): Remove.
5622         (INITIALIZE_TRAMPOLINE): Remove.
5623
5624         * config/arc/arc.h (TRAMPOLINE_ALIGNMENT): New.
5625         (TRAMPOLINE_TEMPLATE): Merge with ...
5626         (INITIALIZE_TRAMPOLINE): ... this and move ...
5627         * config/arc/arc.c (arc_trampoline_init): ... here.
5628         (TARGET_TRAMPOLINE_INIT): New.
5629
5630         * config/arm/arm.c (TARGET_ASM_TRAMPOLINE_TEMPLATE): New.
5631         (TARGET_TRAMPOLINE_INIT, TARGET_TRAMPOLINE_ADJUST_ADDRESS): New.
5632         (arm_asm_trampoline_template): New.
5633         (arm_trampoline_init, arm_trampoline_adjust_address): New.
5634         * config/arm/arm.h (TRAMPOLINE_TEMPLATE, ARM_TRAMPOLINE_TEMPLATE,
5635         THUMB2_TRAMPOLINE_TEMPLATE, THUMB1_TRAMPOLINE_TEMPLATE): Move all
5636         code to arm_asm_trampoline_template.
5637         (TRAMPOLINE_ADJUST_ADDRESS): Move code to
5638         arm_trampoline_adjust_address.
5639         (INITIALIZE_TRAMPOLINE): Move code to arm_trampoline_init;
5640         adjust for target hook parameters.
5641
5642         * config/avr/avr.h (TRAMPOLINE_TEMPLATE, INITIALIZE_TRAMPOLINE):
5643         Remove.
5644
5645         * config/bfin/bfin-protos.h (initialize_trampoline): Remove.
5646         * config/bfin/bfin.c (bfin_asm_trampoline_template): New.
5647         (bfin_trampoline_init): Rename from initialize_trampoline;
5648         make static; update for target hook parameters.
5649         (TARGET_ASM_TRAMPOLINE_TEMPLATE, TARGET_TRAMPOLINE_INIT): New.
5650         * config/bfin/bfin.h (TRAMPOLINE_TEMPLATE): Move code to
5651         bfin_asm_trampoline_template.
5652         (INITIALIZE_TRAMPOLINE): Remove.
5653
5654         * config/cris/cris.c (TARGET_ASM_TRAMPOLINE_TEMPLATE,
5655         TARGET_TRAMPOLINE_INIT, cris_asm_trampoline_template,
5656         cris_trampoline_init): New.
5657         * config/cris/cris.h (TRAMPOLINE_TEMPLATE): Move code to
5658         cris_asm_trampoline_template.
5659         (INITIALIZE_TRAMPOLINE): Move code to cris_trampoline_init;
5660         adjust for target hook parameters.
5661
5662         * config/crx/crx.h (INITIALIZE_TRAMPOLINE): Remove.
5663
5664         * config/fr30/fr30.c (TARGET_ASM_TRAMPOLINE_TEMPLATE,
5665         TARGET_TRAMPOLINE_INIT, fr30_asm_trampoline_template,
5666         fr30_trampoline_init): New.
5667         * config/fr30/fr30.h (TRAMPOLINE_TEMPLATE): Move code to
5668         fr30_asm_trampoline_template.
5669         (INITIALIZE_TRAMPOLINE): Move code to fr30_trampoline_init;
5670         adjust for target hook parameters.
5671
5672         * config/frv/frv.c (TARGET_TRAMPOLINE_INIT): New.
5673         (frv_trampoline_init): Rename from frv_initialize_trampoline;
5674         make static, adjust arguments for TARGET_TRAMPOLINE_INIT hook.
5675         * config/frv/frv.h (INITIALIZE_TRAMPOLINE): Remove.
5676         * config/frv/frv-protos.h (frv_initialize_trampoline): Remove.
5677
5678         * config/h8300/h8300.c (h8300_trampoline_init): New.
5679         (TARGET_TRAMPOLINE_INIT): New.
5680         * config/h8300/h8300.h (INITIALIZE_TRAMPOLINE): Move code
5681         to h8300_trampoline_init and adjust for hook parameters.
5682
5683         * config/ia64/ia64-protos.h (ia64_initialize_trampoline): Remove.
5684         * config/ia64/ia64.c (TARGET_TRAMPOLINE_INIT): New.
5685         (ia64_trampoline_init): Rename from ia64_initialize_trampoline;
5686         make static; adjust for hook parameters.
5687         * config/ia64/ia64.h (INITIALIZE_TRAMPOLINE): Remove.
5688
5689         * config/iq2000/iq2000.c (TARGET_ASM_TRAMPOLINE_TEMPLATE): New.
5690         (TARGET_TRAMPOLINE_INIT): New.
5691         (iq2000_asm_trampoline_template, iq2000_trampoline_init): New.
5692         * config/iq2000/iq2000.h (TRAMPOLINE_TEMPLATE): Move code to
5693         iq2000_asm_trampoline_template.
5694         (INITIALIZE_TRAMPOLINE): Move code to iq2000_trampoline_init.
5695         (TRAMPOLINE_CODE_SIZE): New.
5696         (TRAMPOLINE_SIZE): Use it.
5697         (TRAMPOLINE_ALIGNMENT): Follow Pmode.
5698
5699         * config/m32c/m32c-protos.h (m32c_initialize_trampoline): Remove.
5700         * config/m32c/m32c.c (TARGET_TRAMPOLINE_INIT): New.
5701         (m32c_trampoline_init): Rename from m32c_initialize_trampoline;
5702         adjust for hook parameters.
5703         * config/m32c/m32c.h (INITIALIZE_TRAMPOLINE): Remove.
5704
5705         * config/m32r/m32r.c (TARGET_TRAMPOLINE_INIT): New.
5706         (m32r_trampoline_init): New.
5707         * config/m32r/m32r.h (INITIALIZE_TRAMPOLINE): Move code to
5708         m32r_trampoline_init.
5709
5710         * config/m68hc11/m68hc11.c (TARGET_TRAMPOLINE_INIT): New.
5711         (m68hc11_trampoline_init): Rename from m68hc11_initialize_trampoline;
5712         make static; update for hook parameters.
5713         * config/m68hc11/m68hc11-protos.h: Update.
5714         * config/m68hc11/m68hc11.h (INITIALIZE_TRAMPOLINE): Remove.
5715
5716         * config/mcore/mcore.c (TARGET_ASM_TRAMPOLINE_TEMPLATE): New.
5717         (TARGET_TRAMPOLINE_INIT): New.
5718         (mcore_function_value): Fix typo.
5719         (mcore_asm_trampoline_template, mcore_trampoline_init): New.
5720         * config/mcore/mcore.h (TRAMPOLINE_TEMPLATE): Move code
5721         to mcore_asm_trampoline_template.
5722         (INITIALIZE_TRAMPOLINE): Move code to mcore_trampoline_init.
5723
5724         * config/mep/mep.h (INITIALIZE_TRAMPOLINE): Remove.
5725         * config/mep/mep.c (TARGET_TRAMPOLINE_INIT): New.
5726         (mep_trampoline_init): Rename from mep_init_trampoline; make static;
5727         update for hook parameters.
5728         * config/mep/mep-protos.h (mep_init_trampoline): Remove.
5729
5730         * config/mips/mips.c (TARGET_ASM_TRAMPOLINE_TEMPLATE,
5731         mips_asm_trampoline_template, TARGET_TRAMPOLINE_INIT,
5732         mips_trampoline_init): New.
5733         * config/mips/mips.h (TRAMPOLINE_TEMPLATE): Move code to
5734         mips_asm_trampoline_template.
5735         (INITIALIZE_TRAMPOLINE): Move code to mips_trampoline_init;
5736         update for hook parameters.
5737
5738         * gcc/config/mmix/mmix.c (TARGET_ASM_TRAMPOLINE_TEMPLATE): New.
5739         (TARGET_TRAMPOLINE_INIT): New.
5740         (mmix_trampoline_size): Remove.
5741         (mmix_asm_trampoline_template): Rename from mmix_trampoline_template;
5742         make static.  Remove out-of-date tetra vs octa comment.
5743         (mmix_trampoline_init): Rename from mmix_initialize_trampoline;
5744         make static; update for hook parameters.
5745         * config/mmix/mmix.h (TRAMPOLINE_TEMPLATE): Remove.
5746         (INITIALIZE_TRAMPOLINE): Remove.
5747         (TRAMPOLINE_SIZE): Use a constant instead of mmix_trampoline_size.
5748         (TRAMPOLINE_ALIGNMENT): New.
5749         * gcc/config/mmix/mmix-protos.h: Update.
5750
5751         * config/mn10300/mn10300.c (TARGET_ASM_TRAMPOLINE_TEMPLATE,
5752         mn10300_asm_trampoline_template, TARGET_TRAMPOLINE_INIT,
5753         mn10300_trampoline_init): New.
5754         * config/mn10300/mn10300.h (TRAMPOLINE_TEMPLATE): Move code to
5755         mn10300_asm_trampoline_template.
5756         (INITIALIZE_TRAMPOLINE): Move code to mn10300_trampoline_init.
5757
5758         * config/moxie/moxie.c (moxie_static_chain,
5759         moxie_asm_trampoline_template, moxie_trampoline_init,
5760         TARGET_STATIC_CHAIN, TARGET_ASM_TRAMPOLINE_TEMPLATE,
5761         TARGET_TRAMPOLINE_INIT): New.
5762         * config/moxie/moxie.h (INITIALIZE_TRAMPOLINE): Move code to
5763         moxie_trampoline_init.
5764         (TRAMPOLINE_TEMPLATE): Move code to moxie_asm_trampoline_template.
5765         (STATIC_CHAIN, STATIC_CHAIN_INCOMING): Remove.
5766
5767         * gcc/config/pa/pa.c (TARGET_ASM_TRAMPOLINE_TEMPLATE,
5768         pa_asm_trampoline_template, TARGET_TRAMPOLINE_INIT,
5769         pa_trampoline_init, TARGET_TRAMPOLINE_ADJUST_ADDRESS,
5770         pa_trampoline_adjust_address): New.
5771         * config/pa/pa.h (TRAMPOLINE_TEMPLATE): Move code to
5772         pa_asm_trampoline_template.
5773         (TRAMPOLINE_ALIGNMENT): New.
5774         (TRAMPOLINE_CODE_SIZE): Move to pa.c.
5775         (INITIALIZE_TRAMPOLINE): Move code to pa_trampoline_init;
5776         adjust for hook parameters.
5777         (TRAMPOLINE_ADJUST_ADDRESS): Move code to pa_trampoline_adjust_address.
5778
5779         * config/pdp11/pdp11.c (pdp11_trampoline_init): New.
5780         (TARGET_TRAMPOLINE_INIT): New.
5781         * config/pdp11/pdp11.h (TRAMPOLINE_TEMPLATE): Remove.
5782         (INITIALIZE_TRAMPOLINE): Move code to pdp11_trampoline_init.
5783
5784         * config/picochip/picochip.h (INITIALIZE_TRAMPOLINE): Remove.
5785
5786         * config/rs6000/rs6000-protos.h (rs6000_initialize_trampoline): Remove.
5787         * config/rs6000/rs6000.c (TARGET_TRAMPOLINE_INIT): New.
5788         (rs6000_trampoline_init): Rename from rs6000_initialize_trampoline;
5789         make static; adjust parameters for the hook.
5790         * config/rs6000/rs6000.h (INITIALIZE_TRAMPOLINE): Remove.
5791
5792         * config/s390/s390.c (s390_asm_trampoline_template): Rename from
5793         s390_trampoline_template; make static.
5794         (s390_trampoline_init): Rename from s390_initialize_trampoline;
5795         make static; adjust for target hook.
5796         (TARGET_ASM_TRAMPOLINE_TEMPLATE, TARGET_TRAMPOLINE_INIT): New.
5797         * config/s390/s390-protos.h: Remove trampoline decls.
5798         * config/s390/s390.h (INITIALIZE_TRAMPOLINE): Remove.
5799         (TRAMPOLINE_TEMPLATE): Remove.
5800         (TRAMPOLINE_ALIGNMENT): New.
5801
5802         * config/score/score-protos.h (score_initialize_trampoline): Remove.
5803         * config/score/score.c (TARGET_ASM_TRAMPOLINE_TEMPLATE): New.
5804         (TARGET_TRAMPOLINE_INIT): New.
5805         (score_asm_trampoline_template): New.
5806         (score_trampoline_init): Rename from score_initialize_trampoline;
5807         make static; adjust for hook parameters.
5808         * config/score/score.h (TRAMPOLINE_TEMPLATE): Move code to
5809         score[37]_asm_trampoline_template.
5810         (INITIALIZE_TRAMPOLINE): Remove.
5811         * config/score/score3.c (score3_asm_trampoline_template): New.
5812         (score3_trampoline_init): Rename from score3_initialize_trampoline;
5813         adjust for target hook.
5814         * config/score/score7.c (score7_asm_trampoline_template): New.
5815         (score7_trampoline_init): Rename from score7_initialize_trampoline;
5816         adjust for target hook.
5817         * config/score/score3.h, config/score/score7.h: Update.
5818
5819         * config/sh/sh-protos.h (sh_initialize_trampoline): Remove.
5820         * config/sh/sh.c (TARGET_TRAMPOLINE_INIT): New.
5821         (TARGET_TRAMPOLINE_ADJUST_ADDRESS): New.
5822         (sh_trampoline_init): Rename from sh_initialize_trampoline;
5823         make static; adjust for target hook parameters.
5824         (sh_trampoline_adjust_address): New.
5825         * config/sh/sh.h (INITIALIZE_TRAMPOLINE): New.
5826         (TRAMPOLINE_ADJUST_ADDRESS): Move code to sh_trampoline_adjust_address.
5827
5828         * config/sparc/sparc.c (TARGET_TRAMPOLINE_INIT): New.
5829         (sparc32_initialize_trampoline): Rename from
5830         sparc_initialize_trampoline; make static; replace tramp parameter
5831         with m_tramp and update memory accesses.
5832         (sparc64_initialize_trampoline): Similarly.
5833         (sparc_trampoline_init): New.
5834         * config/sparc/sparc-protos.h: Remove trampoline decls.
5835         * config/sparc/sparc.h (INITIALIZE_TRAMPOLINE): Remove.
5836         * config/sparc/sparc.md (nonlocal_goto): Don't use static_chain_rtx.
5837
5838         * config/spu/spu.c (TARGET_TRAMPOLINE_INIT): New.
5839         (array_to_constant): Make ARR parameter const.
5840         (spu_trampoline_init): Rename from spu_initialize_trampoline;
5841         make static; update for hook parameters.
5842         * config/spu/spu-protos.h: Update decls.
5843         * config/spu/spu.h (INITIALIZE_TRAMPOLINE): Remove.
5844
5845         * config/stormy16/stormy16.c (xstormy16_trampoline_init): Rename
5846         from xstormy16_initialize_trampoline; make static; update for
5847         hook parameters.
5848         (TARGET_TRAMPOLINE_INIT): New.
5849         * config/stormy16/stormy16.h (INITIALIZE_TRAMPOLINE): Remove.
5850
5851         * config/v850/v850.c (TARGET_ASM_TRAMPOLINE_TEMPLATE): New.
5852         (TARGET_TRAMPOLINE_INIT): New.
5853         (v850_can_eliminate): Make static.
5854         (v850_asm_trampoline_template, v850_trampoline_init): New.
5855         * config/v850/v850.h (TRAMPOLINE_TEMPLATE): Move code to
5856         v850_asm_trampoline_template.
5857         (INITIALIZE_TRAMPOLINE): Move code to v850_trampoline_init
5858         and adjust for target hook parameters.
5859
5860         * config/vax/vax.c (TARGET_ASM_TRAMPOLINE_TEMPLATE): New.
5861         (TARGET_TRAMPOLINE_INIT): New.
5862         (vax_asm_trampoline_template, vax_trampoline_init): New.
5863         * config/vax/vax.h (TRAMPOLINE_TEMPLATE): Move code to
5864         vax_asm_trampoline_template.
5865         (INITIALIZE_TRAMPOLINE): Move code to vax_trampoline_init.
5866
5867         * config/xtensa/xtensa.c (TARGET_ASM_TRAMPOLINE_TEMPLATE): New.
5868         (TARGET_TRAMPOLINE_INIT): New.
5869         (xtensa_asm_trampoline_template): Rename from
5870         xtensa_trampoline_template; make static.
5871         (xtensa_trampoline_init): Rename from xtensa_initialize_trampoline;
5872         make static; update for hook parameters.
5873         * config/xtensa/xtensa-protos.h: Remove trampoline decls.
5874         * config/xtensa/xtensa.h (TRAMPOLINE_TEMPLATE): Remove.
5875         (INITIALIZE_TRAMPOLINE): Remove.
5876
5877         * config/i386/i386.c (ix86_function_regparm): Do not issue an
5878         error for nested functions with regparm=3.
5879         (ix86_compute_frame_layout): Adjust frame pointer offset for
5880         ix86_static_chain_on_stack.
5881         (ix86_expand_prologue): Handle ix86_static_chain_on_stack.
5882         (ix86_emit_restore_reg_using_pop): Increment ix86_cfa_state->offset,
5883         don't reset to UNITS_PER_WORD.
5884         (ix86_emit_leave): Adjust ix86_cfa_state.
5885         (ix86_expand_epilogue): Handle ix86_static_chain_on_stack.
5886         (ix86_static_chain): New.
5887         (ix86_trampoline_init): Rename from x86_initialize_trampoline;
5888         make static; update for target hook parameters; use ix86_static_chain.
5889         (TARGET_STATIC_CHAIN, TARGET_TRAMPOLINE_INIT): New.
5890         * config/i386/i386.h (STATIC_CHAIN_REGNUM): Remove.
5891         (INITIALIZE_TRAMPOLINE): Remove.
5892         (TRAMPOLINE_SIZE): Use 24 for 64-bit.
5893         (struct machine_function): Use BOOL_BITFIELD; rearrange bitfields
5894         to the end.  Add static_chain_on_stack.
5895         (ix86_static_chain_on_stack): New.
5896
5897         * config/m68k/m68k.c (TARGET_TRAMPOLINE_INIT): New.
5898         (m68k_output_mi_thunk): Don't use static_chain_rtx.
5899         (m68k_trampoline_init): New.
5900         * config/m68k/m68k.h (INITIALIZE_TRAMPOLINE): Move code to
5901         m68k_trampoline_init and adjust for hook parameters.
5902         * config/m68k/netbsd-elf.h (TRAMPOLINE_TEMPLATE): Remove.
5903         (TRAMPOLINE_SIZE, INITIALIZE_TRAMPOLINE): Remove.
5904
5905 2009-09-22  Jakub Jelinek  <jakub@redhat.com>
5906
5907         * config/rs6000/rs6000.c (bdesc_2arg): Fix CODE_FOR_vector_gt* codes
5908         for __builtin_altivec_vcmpgt{sb,uh,sh,uw}.
5909
5910         * reload1.c (reload): Call wrap_constant when substituting
5911         reg for equiv inside of DEBUG_INSNs.
5912
5913         PR bootstrap/41405
5914         * dwarf2out.c (base_type_die, record_type_tag, gen_subprogram_die,
5915         add_call_src_coords_attributes, add_high_low_attributes,
5916         gen_compile_unit_die, gen_type_die_with_usage force_decl_die,
5917         gen_decl_die, dwarf2out_imported_module_or_decl_1, dwarf2out_finish,
5918         dwarf2out_imported_module_or_decl): Avoid using DWARF3 additions
5919         when -gdwarf-2 -gstrict-dwarf.
5920         (loc_list_from_tree): Likewise.  Avoid using DWARF4 additions when
5921         -gdwarf-[23] -gstrict-dwarf.
5922         (address_of_int_loc_descriptor, loc_descriptor,
5923         loc_list_for_address_of_addr_expr_of_indirect_ref): Avoid using
5924         DWARF4 additions when -gdwarf-[23] -gstrict-dwarf.
5925         * common.opt (gno-strict-dwarf, gstrict-dwarf): New options.
5926
5927 2009-09-22  Richard Guenther  <rguenther@suse.de>
5928
5929         PR tree-optimization/41428
5930         * tree-ssa-ccp.c (ccp_fold_stmt): New function.
5931         (ccp_finalize): Pass it to substitute_and_fold.
5932
5933 2009-09-22  Richard Guenther  <rguenther@suse.de>
5934
5935         * tree-ssa-propagate.h (ssa_prop_fold_stmt_fn): Declare.
5936         (substitute_and_fold): Adjust prototype.
5937         * tree-vrp.c (vrp_evaluate_conditional): Make static.
5938         (simplify_stmt_using_ranges): Likewise.
5939         (fold_predicate_in): Move here from tree-ssa-propagate.c.
5940         (vrp_fold_stmt): New function.
5941         (vrp_finalize): Pass it to substitute_and_fold.
5942         * tree-flow.h (vrp_evaluate_conditional): Remove.
5943         (simplify_stmt_using_ranges): Likewise.
5944         * tree-ssa-ccp.c (ccp_finalize): Adjust call to substitute_and_fold.
5945         * tree-ssa-copy.c (fini_copy_prop): Likewise.
5946         * tree-ssa-propagate.c (struct prop_stats_d): Rename num_pred_folded
5947         member.
5948         (fold_predicate_in): Move to tree-vrp.c.
5949         (substitute_and_fold): Use the callback instead of calling into
5950         tree-vrp.c functions directly.
5951
5952 2009-09-22  Jakub Jelinek  <jakub@redhat.com>
5953
5954         * dwarf2out.c (address_of_int_loc_descriptor): Avoid signed/unsigned
5955         comparison warning on rs6000.
5956
5957         PR middle-end/41429
5958         * tree-cfg.c (remove_useless_stmts_tc): Call gsi_next (gsi) even for
5959         GIMPLE_EH_MUST_NOT_THROW cleanup.
5960         (verify_types_in_gimple_stmt): Handle GIMPLE_EH_MUST_NOT_THROW.
5961
5962 2009-09-22  Jack Howarth  <howarth@bromo.med.uc.edu>
5963
5964         PR middle-end/41260
5965         * gcc/config.gcc: Use darwin9.h and darwin10.h on darwin10 and later.
5966         * gcc/config/darwin10.h: Add file to pass -no_compact_unwind on
5967         LIB_SPEC for darwin10 and later since it always uses the unwinder in
5968         libSystem which is derived from the gcc 4.2.1 unwinder.
5969
5970 2009-09-22  Dave Korn  <dave.korn.cygwin@gmail.com>
5971
5972         PR middle-end/41357
5973         * varasm.c (default_encode_section_info): Copy TLS model into
5974         sym_ref flags regardless of backend support for TLS, for all
5975         model types except TLS_MODEL_EMULATED.
5976
5977 2009-09-22  Dave Korn  <dave.korn.cygwin@gmail.com>
5978
5979         PR bootstrap/41404
5980         * dwarf2out.c (mem_loc_descriptor): Punt on CONST_STRING until
5981         we can handle it correctly.
5982
5983 2009-09-21  Gerald Pfeifer  <gerald@pfeifer.com>
5984
5985         * doc/install.texi (os2): Remove section.
5986
5987 2009-09-21  Gerald Pfeifer  <gerald@pfeifer.com>
5988
5989         * doc/standards.texi (Objective-C): Adjust two URLs.
5990
5991 2009-09-21  Giuseppe Scrivano <gscrivano@gnu.org>
5992
5993         * tree-tailcall.c (process_assignment): Don't check if a
5994         multiplication or an addition are already present.
5995         (find_tail_calls): Combine multiple additions and multiplications.
5996         (adjust_accumulator_values): Emit accumulators.
5997
5998 2009-09-21  Kai Tietz  <kai.tietz@onevision.com>
5999
6000         * config/i386/i386.c (ix86_expand_epilogue): Adjust offset for
6001         xmm register restore.
6002
6003 2009-09-21  Jan Hubicka  <jh@suse.cz>
6004
6005         * dwarf2out.c (decl_loc_table_eq): Allow decl_loc_table to be NULL.
6006         (dwarf2out_abstract_function): NULLify decl_loc_table at begginig and
6007         restore at the end.
6008
6009 2009-09-21  Eric Botcazou  <ebotcazou@adacore.com>
6010
6011         * stor-layout.c (layout_type): Remove obsolete code.
6012
6013 2009-09-20  H.J. Lu  <hongjiu.lu@intel.com>
6014
6015         PR middle-end/41395
6016         * opts.c (decode_options): Don't turn on flag_ipa_sra for opt2.
6017
6018 2009-09-20  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
6019
6020         PR middle-end/30789
6021         * builtins.c (do_mpc_arg2): Accept DO_NONFINITE parameter.
6022         (do_mpc_ckconv): Accept FORCE_CONVERT parameter.
6023         (fold_builtin_2, do_mpc_arg1): Update accordingly.
6024         * fold-const.c (const_binop): Likewise.
6025         * real.h (do_mpc_arg2): Update prototype.
6026
6027 2009-09-20  Jan Hubicka  <jh@suse.cz>
6028
6029         * dwarf2out.c (add_const_value_attribute): Return true if successful.
6030         (add_location_or_const_value_attribute): Rewrite using
6031         loc_list_from_tree.
6032         (tree_add_const_value_attribute): Return true if successful.
6033         (tree_add_const_value_attribute_for_decl): Likewise.
6034
6035         * dwarf2out.c (address_of_int_loc_descriptor): Break out from ...
6036         (loc_descriptor): ... here;
6037         (loc_list_for_address_of_addr_expr_of_indirect_ref): New function.
6038         (cst_pool_loc_descr): Break out from ...; do not reffer constant
6039         pool items that was not marked for output.
6040         (loc_list_from_tree): ... here; handle special cases of ADDR_EXPR;
6041         (loc_list_for_address_of_addr_expr_of_indirect_ref): New function.
6042         (loc_list_for_address_of_addr_expr_of_indirect_ref): New function.
6043         handle ALIGN_INDIRECT_REF, MISALIGNED_INDIRECT_REF, REALPART_EXPR,
6044         IMAGPART_EXPR; handle address of INTEGER_CST; improve handling of
6045         CONSTRUCTOR; handle REAL_CST, STRING_CST, COMPLEX_CST; use
6046         DW_OP_stack_value to get address of items that are not available
6047         as addresses.
6048         (dw_loc_list): Handle single element lists correctly.
6049
6050 2009-09-20  Kai Tietz  <kai.tietz@onevision.com>
6051             Pascal Obry  <obry@adacore.com>
6052
6053         * unwind-dw2-fde.c (classify_object_over_fdes):
6054         Cast the constant 1 to _Unwind_Ptr.
6055         (add_fdes): Likewise.
6056         (linear_search_fdes): Likewise.
6057
6058 2009-09-20  Eric Botcazou  <ebotcazou@adacore.com>
6059
6060         * stor-layout.c (set_sizetype): Avoid useless type copy.
6061
6062 2009-09-20  Richard Sandiford  <rdsandiford@googlemail.com>
6063
6064         * configure.ac (gcc_cv_ld_mips_personality_relaxation): New
6065         feature check.
6066         (HAVE_LD_PERSONALITY_RELAXATION): New macro definition.
6067         * configure, config.in: Regenerate.
6068         * dwarf2asm.c (eh_data_format_name): Handle DW_EH_PE_indirect |
6069         DW_EH_PE_absptr.
6070         * config/mips/mips.h (TARGET_WRITABLE_EH_FRAME): New macro.
6071         (ASM_PREFERRED_EH_DATA_FORMAT): Define.  Use MIPS_EH_INDIRECT
6072         for global data if the output could be used in a shared library.
6073         * config/mips/mips.c (mips_override_options): Set flag_dwarf2_cfi_asm
6074         to 0 if TARGET_WRITABLE_EH_FRAME.
6075
6076 2009-09-20  Paolo Bonzini <bonzini@gnu.org>
6077
6078         PR rtl-optimization/39886
6079         * combine.c (update_cfg_for_uncondjump): Set EDGE_FALLTHRU
6080         just when insn is equal to BB_END (bb).
6081
6082 2009-09-19  Adam Nemet  <anemet@caviumnetworks.com>
6083
6084         * config/mips/mips.opt (mrelax-pic-calls): New option.
6085         * config/mips/mips.c (mips_strip_unspec_address): Move it up in
6086         the file.
6087         (mips_unspec_call): Change "unspec_call" expander into this.
6088         (mips_strip_unspec_call): New function.
6089         (mips_got_load): Call mips_unspec_call instead of
6090         gen_unspec_call<mode>.
6091         (mips16_build_call_stub): Fix comment for fp_code.  Adjust call to
6092         MIPS_CALL.
6093         (mips_cfg_in_reorg): New function.
6094         (mips16_lay_out_constants): Use it to decide whether to call
6095         CFG-aware insn splitting.
6096         (r10k_insert_cache_barriers): Move CFG set-up code from here to
6097         mips_reorg.  Move DF set-up code from here ...
6098         (mips_df_reorg): ... to here.  Call r10k_insert_cache_barriers
6099         from here.
6100         (mips_reorg): Call mips_df_reorg instead of
6101         r10k_insert_cache_barriers.  Move CFG set-up code here from
6102         r10k_insert_cache_barriers.
6103         (mips_call_expr_from_insn): New function.
6104         (mips_pic_call_symbol_from_set): Likewise.
6105         (mips_find_pic_call_symbol): Likewise.
6106         (mips_annotate_pic_call_expr): Likewise.
6107         (mips_get_pic_call_symbol): Likewise.
6108         (mips_annotate_pic_calls): Likewise.
6109         (mips_override_options): Disable -mrelax-pic-calls unless PIC
6110         calls are used.
6111         (mips_set_mips16_mode): Disable -mrelax-pic-calls for MIPS16.
6112         * config/mips/mips-protos.h (mips_get_pic_call_symbol): Declare it.
6113         * config/mips/mips.h (MIPS_CALL): Use it to print the .reloc
6114         directive.
6115         * config/mips/mips.md (UNSPEC_CALL_ATTR): New unspec.
6116         (unspec_call<mode>): Remove it.
6117         (sibcall_internal, sibcall_value_internal,
6118         sibcall_value_multiple_internal, call_internal, call_split,
6119         call_value_internal, call_value_split,
6120         call_value_multiple_internal, call_value_multiple_split): Pass
6121         SIZE_OPNO to MIPS_CALL.
6122         (call_internal_direct, call_direct_split,
6123         call_value_internal_direct, call_value_direct_split): Pass -1 as
6124         SIZE_OPNO to MIPS_CALL.
6125         * configure.ac <mips*-*-*>: Add test for .reloc R_MIPS_JALR.
6126         * configure: Regenerate.
6127         * doc/invoke.texi (Option Summary): Add -mrelax-pic-calls
6128         and -mno-relax-pic-calls.
6129         (MIPS Options): Document -mrelax-pic-calls and -mno-relax-pic-calls.
6130
6131 2009-09-19  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
6132
6133         PR bootstrap/35619
6134         * Makefile.in (stmp-fixinc): Ensure `include-fixed' is created
6135         in the directory this rule is called from, rather than the
6136         toplevel 'gcc' directory, to fix in-tree build.
6137
6138 2009-09-19  Chris Demetriou  <cgd@google.com>
6139
6140         PR preprocessor/28435:
6141         * c-opts.c (c_common_handle_option): For -MD and -MMD, indicate
6142         to cpplib that the preprocessor output is needed.
6143
6144 2009-09-19  Jakub Jelinek  <jakub@redhat.com>
6145
6146         * config/rs6000/rs6000.md (*save_gpregs_<mode>, *save_fpregs_<mode>,
6147         *restore_gpregs_<mode>, *return_and_restore_gpregs_<mode>,
6148         *return_and_restore_fpregs_<mode>,
6149         *return_and_restore_fpregs_aix_<mode>): Remove 'z' operand modifier.
6150
6151         PR bootstrap/41397
6152         * dwarf2out.c (mem_loc_descriptor) <case SUBREG>: Recurse
6153         instead of assuming it has always a REG inside of it.
6154
6155 2009-09-18  Gerald Pfeifer  <gerald@pfeifer.com>
6156
6157         * config/freebsd.h: Update comment on types.
6158         (WINT_TYPE): Define.
6159
6160 2009-09-18  Jason Merrill  <jason@redhat.com>
6161
6162         * c.opt: Add -fno-deduce-init-list.
6163
6164 2009-09-18  Neil Vachharajani  <nvachhar@google.com>
6165
6166         * value-prof.c (interesting_stringop_to_profile_p): Added output
6167         argument to indicate which parameter is the size parameter.
6168         * value-prof.c (gimple_stringop_fixed_value): Use
6169         INTERESTING_STRINGOP_TO_PROFILE_P to find size argument.
6170         * value-prof.c (gimple_stringops_transform): Update call sites to
6171         INTERESTING_STRINGOP_TO_PROFILE_P to reflect parameter change.
6172
6173 2009-09-18  Uros Bizjak  <ubizjak@gmail.com>
6174
6175         PR target/38288
6176         From David Binderman <dcb314@hotmail.com>:
6177         * gcc/config/i386/i386.c (ix86_function_regparm): Remove useless
6178         local variable f.  Remove stale comments.
6179         (ix86_compute_frame_layout): Remove useless local variable total_size.
6180         Remove #if 0'd code.
6181         (legitimate_address_p): Remove useless local variables
6182         reason_rtx and reason.
6183         (ix86_split_copysign_const): Remove useless local variable op1.
6184         (scale_counter): Remove useless local variable piece_size_mask.
6185
6186 2009-09-18  Jakub Jelinek  <jakub@redhat.com>
6187
6188         * stmt.c (expand_asm_operands): Set REG_ATTRS on the temporary from
6189         output decl.
6190
6191 2009-09-17  Michael Haubenwallner  <michael.haubenwallner@salomon.at>
6192
6193         PR target/40913
6194         * config/pa/t-hpux-shlib: Set soname in libgcc_s.sl.
6195
6196 2009-09-17  Jakub Jelinek  <jakub@redhat.com>
6197
6198         * c-decl.c (finish_struct): Adjust DECL_SOURCE_LOCATION of
6199         TYPE_STUB_DECL.
6200
6201 2009-09-17  Alexandre Oliva  <aoliva@redhat.com>
6202
6203         * dwarf2out.c (loc_descriptor): Emit DW_OP_stack_value and
6204         DW_OP_implicit_value even without dwarf_version 4.
6205
6206 2009-09-17  Jan Hubicka  <jh@suse.cz>
6207
6208         * dwarf2out.c: Include tree-pass.h and gimple.h.
6209         (loc_list_plus_const): New function.
6210         (loc_descriptor_from_tree_1): Rename to ...
6211         (loc_descriptor_from_tree): ... remove original.
6212         (loc_list_from_tree): New function.
6213         (add_AT_location_description): Accept location list.
6214         (tls_mem_loc_descriptor): Update call of loc_descriptor_from_tree.
6215         (concatn_mem_loc_descriptor): Remove.
6216         (mem_loc_descriptor): Handle CONCAT/CONCATN and VAR_LOCATION by
6217         returning NULL.
6218         (secname_for_decl): Move up.
6219         (hidden_reference_p): New function; break out from ...
6220         (loc_by_refernece): ... here; move up.
6221         (dw_loc_list): New function.
6222         (single_element_loc_list): New function.
6223         (single_element_loc_list_p): New function.
6224         (add_loc_descr_to_each): New function.
6225         (add_loc_list): New function.
6226         (loc_descr_from_tree): Make wraper of loc_list_from_tree.
6227         (loc_list_from_tree): Reroganized from loc_descr_from_tree;
6228         add diagnostics why expansion failed.
6229         (add_location_or_const_value_attribute): Support location lists.
6230         (add_bound_info): Likewise.
6231         (descr_info_loc): Update call of loc_descriptor_from_tree.
6232         (gen_variable_die): Work on location lists.
6233         * final.c (pass_final): Add dump file.
6234         * Makefile.in (dwarf2out.o): Add new dependencies.
6235
6236 2009-09-17  Janis Johnson  <janis187@us.ibm.com>
6237
6238         PR c/41049
6239         * real.c decimal_from_integer, decimal_integer_string): New.
6240         (real_from_integer): Use them as special case for decimal float.
6241         * config/dfp-bit.c (_si_to_sd, _usi_to_sd): Use default rounding.
6242         (_di_to_sd, _di_to_dd, _di_to_td, _udi_to_sd, _udi_to_dd, _udi_to_td):
6243         Do not append zero after the decimal point in string to convert.
6244
6245 2009-09-17  Alexander Monakov  <amonakov@ispras.ru>
6246
6247         * graphite-sese-to-poly.c (pdr_add_data_dimensions): Add bounds only
6248         for ARRAY_REFs.  Use array_ref_{low,up}_bound to determine bounds.
6249
6250 2009-09-17  Martin Jambor  <mjambor@suse.cz>
6251
6252         * common.opt (fipa-sra): New switch.
6253         * opts.c (decode_options): Turn flag_ipa_sra on for opt2.
6254         * timevar.def (TV_IPA_SRA): New timevar.
6255         * params.def (ipa-sra-ptr-growth-factor): New parameter.
6256         * doc/invoke.texi: Document -fipa-sra and ipa-sra-ptr-growth-factor.
6257         * tree-sra.c: Include cgraph.c.
6258         (enum sra_mode): Added SRA_MODE_EARLY_IPA.
6259         (struct access): Added fields stmt, grp_maybe_modified, grp_scalar_ptr
6260         and grp_not_necessarilly_dereferenced.
6261         (func_param_count): New variable.
6262         (encountered_apply_args): New variable.
6263         (bb_dereferences): New variable.
6264         (final_bbs): New variable.
6265         (no_accesses_representant): New variable.
6266         (no_accesses_p): New function.
6267         (dump_access): Dump the new fields.
6268         (sra_initialize): Set encountered_apply_args to false.
6269         (get_ssa_base_param): New function.
6270         (mark_parm_dereference): New function.
6271         (create_access): Caring for INIDRECT_REFs and different handling of
6272         varialble length accesses in early IPA SRA.  Store the stmt - a new
6273         parameter - to the new access.
6274         (build_access_from_expr_1): New parameter stmt, passed to
6275         create_access.  Handle INDIRECT_REFs.
6276         (build_access_from_expr): Pass the current statement to
6277         build_access_from_expr_1.
6278         (disqualify_ops_if_throwing_stmt): Trigger only in intraprocedural
6279         passes.
6280         (build_accesses_from_assign): Pass the current statement to
6281         build_access_from_expr_1.  Do not create assign links in IPA-SRA.
6282         (scan_function): Call handle_ssa_defs on phi nodes.  Set bits in
6283         final_bbs when necessary.  Check for calls to __builtin_apply_args.
6284         Fixup EH info if anythng was changed.
6285         (is_unused_scalar_param): New function.
6286         (ptr_parm_has_direct_uses): New function.
6287         (find_param_candidates): New function.
6288         (mark_maybe_modified): New function.
6289         (analyze_modified_params): New function.
6290         (propagate_dereference_distances): New function.
6291         (dump_dereferences_table): New function.
6292         (analyze_caller_dereference_legality): New function.
6293         (unmodified_by_ref_scalar_representative): New function.
6294         (splice_param_accesses): New function.
6295         (decide_one_param_reduction): New function.
6296         (enum ipa_splicing_result): New type.
6297         (splice_all_param_accesses): New function.
6298         (get_param_index): New function.
6299         (turn_representatives_into_adjustments): New function.
6300         (analyze_all_param_acesses): New function.
6301         (get_replaced_param_substitute): New function.
6302         (get_adjustment_for_base): New function.
6303         (replace_removed_params_ssa_names): New function.
6304         (sra_ipa_reset_debug_stmts): New function.
6305         (sra_ipa_modify_expr): New function.
6306         (sra_ipa_modify_assign): New function.
6307         (convert_callers): New function.
6308         (modify_function): New function.
6309         (ipa_sra_preliminary_function_checks): New function.
6310         (ipa_early_sra): New function.
6311         (ipa_early_sra_gate): New function.
6312         (pass_early_ipa_sra): New variable.
6313         * Makefile.in (tree-sra.o): Add cgraph.h to dependencies.
6314
6315 2009-09-17  Michael Matz  <matz@suse.de>
6316
6317         PR middle-end/41347
6318         * tree.c (build_type_attribute_qual_variant): Export.
6319         * tree.h (build_type_attribute_qual_variant): Declare.
6320         * tree-inline.c (remap_type_1): Use it to build variants with
6321         the original qualifiers and attributes.
6322
6323 2009-09-17  Andreas Krebbel  <Andreas.Krebbel@de.ibm.com>
6324
6325         * cfglayout.c (fixup_reorder_chain): Accept conditional jumps
6326         without a fallthrough edge.
6327
6328 2009-09-16  DJ Delorie  <dj@redhat.com>
6329
6330         * config/m32c/m32c.c (m32c_emit_epilogue): Check for R8C or M16C
6331         chip and ignore the "fast_interrupt" attribute if so.
6332
6333 2009-09-16  Richard Henderson  <rth@redhat.com>
6334
6335         PR middle-end/41360
6336         * cfgbuild.c (find_bb_boundaries): Really re-instate 2009-09-02
6337         barrier fix.
6338
6339 2009-09-16  Richard Henderson  <rth@redhat.com>
6340
6341         PR target/41246
6342         * tree-cfg.c (verify_gimple_call): Validate that gimple_call_chain
6343         is set only if DECL_NO_STATIC_CHAIN is unset.
6344         * tree-nested.c (iter_nestinfo_start, iter_nestinfo_next): New.
6345         (FOR_EACH_NEST_INFO): New.
6346         (walk_all_functions): Use it.
6347         (finalize_nesting_tree): Likewise.
6348         (unnest_nesting_tree): Likewise.
6349         (free_nesting_tree): Use iter_nestinfo_start, iter_nestinfo_next.
6350         (get_chain_decl, get_chain_field): Reset DECL_NO_STATIC_CHAIN.
6351         (convert_gimple_call): Early out if gimple_call_chain already set.
6352         (convert_all_function_calls): Iterate until no new functions
6353         require a static chain.
6354         (finalize_nesting_tree_1): Assert DECL_NO_STATIC_CHAIN is unset
6355         when building a trampoline.  Use dump_function_to_file instead
6356         of dump_function.
6357         (lower_nested_functions): Open dump_file.  Validate that decls
6358         that have DECL_NO_STATIC_CHAIN from the front end don't have that
6359         bit reset by this pass.
6360
6361 2009-09-16  Michael Matz  <matz@suse.de>
6362
6363         PR fortran/41212
6364         * tree.h (struct tree_decl_common): Add decl_restricted_flag,
6365         shorten decl_common_unused.
6366         (DECL_RESTRICTED_P): New accessor.
6367         * tree-ssa-alias.c (ptr_deref_may_alias_decl_p): Use it
6368         to disambiguate marked decls and restrict pointers.
6369
6370 2009-09-16  Richard Henderson  <rth@redhat.com>
6371
6372         PR middle-end/41360
6373         * cfgbuild.c (find_bb_boundaries): Re-instate 2009-09-02 barrier fix.
6374
6375 2009-09-16  Jakub Jelinek  <jakub@redhat.com>
6376
6377         * integrate.c (set_block_abstract_flags): Call
6378         set_decl_abstract_flags also on BLOCK_NONLOCALIZED_VARs.
6379
6380 2009-09-16  Richard Guenther  <rguenther@suse.de>
6381
6382         PR middle-end/34011
6383         * tree-flow-inline.h (may_be_aliased): Compute readonly variables
6384         as non-aliased.
6385
6386 2009-09-16  DJ Delorie  <dj@redhat.com>
6387             Kaz Kojima  <kkojima@gcc.gnu.org>
6388
6389         * config/sh/sh.c (output_stack_adjust): Add new argument frame_p.
6390         (sh_expand_prologue): Update calls to output_stack_adjust.
6391         (sh_expand_epilogue): Likewise.
6392
6393 2009-09-15  Adam Nemet  <anemet@caviumnetworks.com>
6394
6395         PR bootstrap/41349
6396         * reorg.c (redundant_insn): Don't count notes or DEBUG_INSNs when
6397         trying to limit the extent of searches in the insn stream.
6398
6399 2009-09-15  Nathan Froyd  <froydnj@codesourcery.com>
6400             Jakub Jelinek  <jakub@redhat.com>
6401
6402         PR target/41175
6403         PR target/40677
6404         * config/rs6000/rs6000.c (no_global_regs_above): Fix precedence
6405         problem.
6406         (SAVRES_NOINLINE_GPRS_SAVES_LR, SAVRES_NOINLINE_FPRS_SAVES_LR,
6407         SAVRES_NOINLINE_FPRS_DOESNT_RESTORE_LR): New strategy bits.
6408         (rs6000_savres_strategy): Always save FP registers inline if the
6409         target doesn't support hardware double-precision.  Set the above
6410         bits in return value when needed.
6411         (rs6000_savres_routine_sym): Fix computation for cache selector.
6412         Mark the generated symbol as a function.  Rename exitp argument to
6413         lr.  Move code for determining the name of the symbol...
6414         (rs6000_savres_routine_name): ...here.  New function.  Add cases for
6415         getting the names right on AIX and 64-bit Linux.
6416         (savres_routine_name): New variable.
6417         (rs6000_make_savres_rtx): Rename exitp argument to lr.  Don't assert
6418         lr isn't set when savep.  Use r12 resp. r1 instead of r11 depending
6419         on what the target routine uses as a base register.  If savep && lr
6420         describe saving of r0 into memory slot.
6421         (rs6000_emit_prologue): Correct use of call_used_regs.  Fix out of
6422         line calls for AIX ABI.
6423         (rs6000_output_function_prologue): Use rs6000_savres_routine_name to
6424         determine FP save/restore functions.
6425         (rs6000_emit_stack_reset): Handle savres if sp_offset != 0 and
6426         frame_reg_rtx != sp_reg_rtx.  Use gen_add3_insn instead of
6427         gen_addsi3.
6428         (rs6000_emit_epilogue): Adjust computation of restore_lr.
6429         Duplicate restoration of LR and execute the appropriate one
6430         depending on whether GPRs are being restored inline.  Set r11 from
6431         offsetted frame_reg_rtx instead of sp_reg_rtx; if frame_reg_rtx is
6432         r11, adjust sp_offset.  Use gen_add3_insn instead of gen_addsi3.
6433         Fix out of line calls for AIX ABI.
6434         * config/rs6000/rs6000.md (*return_and_restore_fpregs_aix_<mode>):
6435         New insn.
6436         * config/rs6000/spe.md (*save_gpregs_spe): Use explicit match for
6437         register 11.
6438         (*restore_gpregs_spe): Likewise.
6439         (*return_and_restore_gpregs_spe): Likewise.
6440         * config/rs6000/linux64.h (SAVE_FP_SUFFIX, RESTORE_FP_SUFFIX):
6441         Define to empty string unconditionally.
6442         * config/rs6000/sysv4.h (SAVE_FP_SUFFIX, RESTORE_FP_SUFFIX):
6443         Define to empty string unconditionally.
6444         (GP_SAVE_INLINE, FP_SAVE_INLINE): Handle TARGET_64BIT the same as
6445         !TARGET_64BIT.
6446
6447 2009-09-15  Jan Hubicka  <jh@suse.cz>
6448
6449         * doc/invoke.texi (inline-insns-auto): Drop from 60 to 50.
6450         * params.def (inline-insns-auto): Likewise.
6451
6452 2009-09-15  Martin Jambor  <mjambor@suse.cz>
6453
6454         * ipa-inline.c (estimate_function_body_sizes): Dump info about
6455         individual statements only at TDF_DETAILS dump level.  Format
6456         source for 80 characters per line.
6457
6458 2009-09-15  Christian Bruel  <christian.bruel@st.com>
6459
6460         * regrename.c (do_replace): Update REG_DEAD notes.
6461
6462 2009-09-15  Revital Eres  <eres@il.ibm.com>
6463
6464         * doc/tm.texi (TARGET_SUPPORT_VECTOR_MISALIGNMENT): Document.
6465         * targhooks.c (default_builtin_support_vector_misalignment):
6466         New builtin function.
6467         * targhooks.h (default_builtin_support_vector_misalignment):
6468         Declare.
6469         * target.h (builtin_support_vector_misalignment):
6470         New field in struct gcc_target.
6471         * tree-vect-data-refs.c (vect_supportable_dr_alignment): Call
6472         new builtin function.
6473         * target-def.h (TARGET_SUPPORT_VECTOR_MISALIGNMENT):
6474         Define.
6475         * config/rs6000/rs6000.c
6476         (rs6000_builtin_support_vector_misalignment): New function.
6477         (TARGET_SUPPORT_VECTOR_MISALIGNMENT): Define.
6478
6479 2009-09-15  Jie Zhang  <jie.zhang@analog.com>
6480
6481         * config/bfin/bfin.c (length_for_loop): Use NONDEBUG_INSN_P
6482         instead of INSN_P.
6483         (bfin_optimize_loop): Likewise.
6484         (bfin_gen_bundles): Likewise.
6485         (workaround_speculation): Likewise.
6486         (find_load): Return NULL_RTX for debug_insn.
6487
6488 2009-09-15  Uros Bizjak  <ubizjak@gmail.com>
6489
6490         * config/alpha/alpha.md (smaxsf3): Disable for IEEE mode.
6491         (sminsf3): Ditto.
6492
6493 2009-09-14  DJ Delorie  <dj@redhat.com>
6494
6495         * config/mep/mep.h (JUMP_TABLES_IN_TEXT_SECTION): Define.
6496         * config/mep/mep.c (mep_emit_cbranch): Don't use BEQZ/BNEI in
6497         VLIW mode.
6498
6499 2009-09-14  Richard Henderson  <rth@redhat.com>
6500             Jakub Jelinek  <jakub@redhat.com>
6501
6502         * builtins.c (expand_builtin_synchronize): Use gimple_build_asm_vec.
6503         * cfgbuild.c (make_edges): Handle asm goto.
6504         * cfglayout.c (fixup_reorder_chain): Likewise.
6505         * cfgrtl.c (patch_jump_insn): Likewise.
6506         * gimple-pretty-print.c (dump_gimple_asm): Likewise.
6507         * gimple.c (gimple_build_asm_1): Add and use nlabels parameter.
6508         (gimple_build_asm_vec): Add and use labels parameter.
6509         (gimple_build_asm): Remove.
6510         (walk_gimple_asm): Walk labels too.
6511         * gimple.def (GIMPLE_ASM): Update docs.
6512         * gimple.h: Update decls.
6513         (struct gimple_statement_asm): Change nc to use unsigned char;
6514         add nl member.
6515         (gimple_asm_nlabels): New.
6516         (gimple_asm_label_op, gimple_asm_set_label_op): New.
6517         * gimplify.c (gimplify_asm_expr): Copy labels from ASM_EXPR
6518         into gimple_build_asm_vec.
6519         * jump.c (mark_jump_label_asm): New.
6520         (mark_jump_label): Use it.
6521         (redirect_jump_1): Handle asm goto.
6522         (invert_jump_1): Soft fail if X is null.
6523         * recog.c (extract_asm_operands): New.
6524         (asm_noperands): Use it; handle asm labels.
6525         (decode_asm_operands): Use extract_asm_operands.
6526         (asm_operand_ok): Properly handle empty string.
6527         * reg-stack.c (get_asm_operands_in_out): Rename from
6528         get_asm_operand_n_inputs; use extract_asm_operands; return both
6529         inputs and outputs by reference; update all callers.
6530         * rtl.def (ASM_OPERANDS): Add label vector as operand 6.
6531         * rtl.h (ASM_OPERANDS_LABEL_VEC): New.
6532         (ASM_OPERANDS_LABEL_LENGTH, ASM_OPERANDS_LABEL): New.
6533         (ASM_OPERANDS_SOURCE_LOCATION): Renumber.
6534         (extract_asm_operands): Declare.
6535         * stmt.c (expand_asm_operands): Add and use labels parameter.
6536         (check_unique_operand_names): Likewise.
6537         (resolve_asm_operand_names, resolve_operand_name_1): Likewise.
6538         (expand_asm_stmt): Handle asm labels.
6539         * tree-cfg.c (make_gimple_asm_edges): New.
6540         (make_edges): Use it.
6541         (cleanup_dead_labels): Handle asm labels.
6542         (is_ctrl_altering_stmt): Likewise.
6543         (gimple_redirect_edge_and_branch): Likewise.
6544         * tree.def (ASM_EXPR): Add 5th operand.
6545         * tree.h (ASM_LABELS): New.
6546         (resolve_asm_operand_names): Update decl.
6547
6548         * c-parser.c (c_parser_asm_statement): Parse asm goto.
6549         (c_parser_asm_goto_operands): New.
6550         * c-tree.h (build_asm_expr): Update decl.
6551         * c-typeck.c (build_asm_expr): Add and use labels parameter.
6552         * doc/extend.texi: Document asm goto.
6553
6554 2009-09-14  Richard Henderson  <rth@redhat.com>
6555
6556         * except.h: Update declarations.
6557         (struct pointer_map_t): Forward declare.
6558         (ERT_UNKNOWN, ERT_THROW, ERT_CATCH): Remove.
6559         (struct eh_landing_pad_d, eh_landing_pad): New.
6560         (struct eh_catch_d, eh_catch): New.
6561         (struct eh_region_d): Remove next_region_sharing_label, aka,
6562         label, tree_label, landing_pad, post_landing_pad, resume,
6563         may_contain_throw.  Rename region_number to index.  Remove
6564         u.eh_catch, u.eh_throw.  Rename u.eh_try.eh_catch to first_catch.
6565         Add u.must_not_throw, landing_pads, exc_ptr_reg, filter_reg.
6566         (VEC(eh_landing_pad,gc)): New.
6567         (struct eh_status): Remove last_region_number.  Add lp_array,
6568         throw_stmt_table, ttype_data, ehspec_data.
6569         (ehr_next, FOR_ALL_EH_REGION_AT): New.
6570         (FOR_ALL_EH_REGION_FN, FOR_ALL_EH_REGION): New.
6571         * except.c (lang_protect_cleanup_actions): Return tree.
6572         (struct ehl_map_entry): Remove.
6573         (init_eh_for_function): Push zero entries for region and lp_array.
6574         (gen_eh_region): Add to region_array immediately.
6575         (gen_eh_region_catch): Operate on eh_catch objects.
6576         (gen_eh_landing_pad): New.
6577         (get_eh_region_may_contain_throw, get_eh_region_tree_label): Remove.
6578         (get_eh_region_no_tree_label, set_eh_region_tree_label): Remove.
6579         (get_eh_region_from_number, get_eh_region_from_number_fn): New.
6580         (get_eh_landing_pad_from_number_fn): New.
6581         (get_eh_landing_pad_from_number): New.
6582         (get_eh_region_from_lp_number_fn): New.
6583         (get_eh_region_from_lp_number): New.
6584         (expand_resx_stmt, note_eh_region_may_contain_throw): Remove.
6585         (get_exception_pointer, get_exception_filter): Remove.
6586         (collect_eh_region_array, can_be_reached_by_runtime): Remove.
6587         (current_function_has_exception_handlers): Simplify.
6588         (bring_to_root, eh_region_replaceable_by_p): Remove.
6589         (replace_region, hash_type_list, hash_eh_region): Remove.
6590         (eh_regions_equal_p, merge_peers, remove_unreachable_regions): Remove.
6591         (label_to_region_map, num_eh_regions): Remove.
6592         (get_next_region_sharing_label, must_not_throw_labels): Remove.
6593         (find_exception_handler_labels): Remove.
6594         (duplicate_eh_regions_0, find_prev_try): Remove.
6595         (struct duplicate_eh_regions_data): New.
6596         (duplicate_eh_regions_1): Rewrite.
6597         (duplicate_eh_regions): Return a pointer map instead of an
6598         integer offset.
6599         (copy_eh_region_1, copy_eh_region, push_reachable_handler): Remove.
6600         (redirect_eh_edge_to_label): Remove.
6601         (eh_region_outermost): Rewrite using eh_region pointers
6602         instead of integers.
6603         (add_ttypes_entry): Update for ttype_data move to eh_status.
6604         (add_ehspec_entry): Rewrite with VEC instead of varray.
6605         (assign_filter_values): Likewise.  Export.
6606         (build_post_landing_pads, connect_post_landing_pads): Remove.
6607         (dw2_build_landing_pads): Rewrite to use lp_array.
6608         (struct sjlj_lp_info, sjlj_find_directly_reachable_regions): Remove.
6609         (sjlj_assign_call_site_values): Rewrite to use lp_array.
6610         (sjlj_emit_dispatch_table, sjlj_build_landing_pads): Likewise.
6611         (sjlj_mark_call_sites): Update for landing pad numbers.
6612         (finish_eh_generation): Rewrite.
6613         (gate_handle_eh): Do nothing for no eh tree.
6614         (pass_rtl_eh): Move up near finish_eh_generation.
6615         (remove_eh_landing_pad): New.
6616         (remove_eh_handler): Export.
6617         (remove_eh_region, remove_eh_handler_and_replace): Remove.
6618         (for_each_eh_label): Rewrite to use lp_array.
6619         (make_reg_eh_region_note): New.
6620         (make_reg_eh_region_note_nothrow_nononlocal): New.
6621         (insn_could_throw_p): New.
6622         (copy_reg_eh_region_note_forward): New.
6623         (copy_reg_eh_region_note_backward): New.
6624         (check_handled, add_reachable_handler): Remove.
6625         (reachable_next_level, foreach_reachable_handler): Remove.
6626         (arh_to_landing_pad, arh_to_label, reachable_handlers): Remove.
6627         (get_eh_region_and_lp_from_rtx): New.
6628         (get_eh_region_from_rtx): New.
6629         (can_throw_internal_1, can_throw_external_1): Remove.
6630         (can_throw_internal): Use get_eh_region_from_rtx.
6631         (can_throw_external): Use get_eh_region_and_lp_from_rtx.
6632         (insn_nothrow_p, can_nonlocal_goto): New.
6633         (expand_builtin_eh_common, expand_builtin_eh_pointer): New.
6634         (expand_builtin_eh_filter, expand_builtin_eh_copy_values): New.
6635         (add_action_record): Use VEC not varray.
6636         (collect_one_action_chain): Update for eh_region changes.
6637         (convert_to_eh_region_ranges): Make static.  Use VEC not varray.
6638         Use get_eh_region_and_lp_from_rtx.
6639         (gate_convert_to_eh_region_ranges): New.
6640         (pass_convert_to_eh_region_ranges): Use it.
6641         (push_uleb128, push_sleb128): Use VEC not varray.
6642         (output_one_function_exception_table): Likewise.
6643         (dump_eh_tree): Update for eh_region changes.
6644         (verify_eh_tree): Likewise.
6645         (verify_eh_region, default_init_unwind_resume_libfunc): Remove.
6646         * tree-eh.c: Include target.h.
6647         (add_stmt_to_eh_lp_fn): Rename from add_stmt_to_eh_region_fn.
6648         Don't disallow GIMPLE_RESX; adjust argument check.
6649         (add_stmt_to_eh_lp): Rename from add_stmt_to_eh_region.
6650         (record_stmt_eh_region): Update for landing pad numbers;
6651         generate a landing pad if necessary.
6652         (remove_stmt_from_eh_lp): Rename from remove_stmt_from_eh_region.
6653         (remove_stmt_from_eh_lp_fn): Similarly.
6654         (lookup_stmt_eh_lp_fn): Rename from lookup_stmt_eh_region_fn.
6655         Update for lp numbers; don't special case missing throw_stmt_table.
6656         (lookup_expr_eh_lp): Similarly.
6657         (lookup_stmt_eh_lp): Rename from lookup_stmt_eh_region.
6658         (eh_seq, eh_region_may_contain_throw): New.
6659         (struct leh_state): Add ehp_region.
6660         (struct leh_tf_state): Remove eh_label.
6661         (emit_post_landing_pad): New.
6662         (emit_resx, emit_eh_dispatch): New.
6663         (note_eh_region_may_contain_throw): New.
6664         (frob_into_branch_around): Take eh_region not eh label;
6665         emit eh code into eh_seq.
6666         (honor_protect_cleanup_actions): Early exit for no actions.  Don't
6667         handle EXC_PTR_EXPR, FILTER_EXPR.  Use gimple_build_eh_must_not_throw,
6668         lower_eh_must_not_throw.  Emit code to eh_seq.
6669         (lower_try_finally_nofallthru): Emit eh code to eh_seq.
6670         (lower_try_finally_onedest): Likewise.
6671         (lower_try_finally_copy): Likewise.
6672         (lower_try_finally_switch): Likewise.
6673         (lower_try_finally): Initialize ehp_region.
6674         (lower_catch): Update for eh_catch objects.
6675         (lower_eh_filter): Don't handle must_not_throw.
6676         (lower_eh_must_not_throw): New.
6677         (lower_cleanup): Don't set eh_label.
6678         (lower_eh_constructs_2): Resolve eh builtins.
6679         Handle GIMPLE_EH_MUST_NOT_THROW.
6680         (lower_eh_constructs): Initialize eh_region_may_contain_throw.
6681         Add eh_seq to the end of the function body.
6682         (make_eh_dispatch_edges): New.
6683         (make_eh_edge): Remove.
6684         (make_eh_edges): Simplify for landing pads.
6685         (redirect_eh_edge_1): New.
6686         (redirect_eh_edge): Use it.
6687         (redirect_eh_dispatch_edge): New.
6688         (stmt_could_throw_p): Use a switch.  Allow RESX.
6689         (stmt_can_throw_external): Use lookup_stmt_eh_lp.
6690         (stmt_can_throw_internal): Likewise.
6691         (maybe_clean_eh_stmt_fn, maybe_clean_eh_stmt): New.
6692         (maybe_clean_or_replace_eh_stmt): Update for landing pads.
6693         (maybe_duplicate_eh_stmt_fn, maybe_duplicate_eh_stmt): New.
6694         (gate_refactor_eh): New.
6695         (pass_refactor_eh): Use it.
6696         (lower_resx, execute_lower_resx, pass_lower_resx): New.
6697         (lower_eh_dispatch, execute_lower_eh_dispatch): New.
6698         (gate_lower_ehcontrol, pass_lower_eh_dispatch): New.
6699         (remove_unreachable_handlers): Rename from
6700         tree_remove_unreachable_handlers; rewrite for landing pads;
6701         call remove_eh_handler directly.
6702         (remove_unreachable_handlers_no_lp): New.
6703         (unsplit_eh, unsplit_all_eh): New.
6704         (tree_empty_eh_handler_p, all_phis_safe_to_merge): Remove.
6705         (cleanup_empty_eh_merge_phis, cleanup_empty_eh_move_lp): New.
6706         (cleanup_empty_eh_unsplit): New.
6707         (cleanup_empty_eh): Rewrite.
6708         (cleanup_all_empty_eh): New.
6709         (execute_cleanup_eh): Rename from cleanup_eh.  Remove unreachable
6710         handlers first.  Use unsplit_all_eh, cleanup_all_empty_eh.
6711         (gate_cleanup_eh): New.
6712         (pass_cleanup_eh): Use it.
6713         (verify_eh_edges): Move later in file.  Expect one EH edge.
6714         (verify_eh_dispatch_edge): New.
6715
6716         * Makefile.in (FUNCTION_H): Use vecprim.h, not varray.h.
6717         (gtype-desc.o): Add TARGET_H.
6718         (tree.o): Use EXCEPT_H, not except.h.
6719         (cfgbuild.o): Add EXPR_H.
6720         (GTFILES): Add vecprim.h.
6721         * builtins.c (expand_builtin): Handle BUILT_IN_EH_POINTER,
6722         BUILT_IN_EH_FILTER, BUILT_IN_EH_COPY_VALUES.
6723         * builtins.def (BUILT_IN_UNWIND_RESUME, BUILT_IN_EH_POINTER,
6724         BUILT_IN_EH_FILTER, BUILT_IN_EH_COPY_VALUES): New.
6725         * calls.c (emit_call_1): Use make_reg_eh_region_note.
6726         * cfgbuild.c (control_flow_insn_p): Use can_nonlocal_goto; tidy
6727         calls to can_throw_internal.
6728         (rtl_make_eh_edge): Use get_eh_landing_pad_from_rtx.
6729         (make_edges): Don't handle RESX; use can_nonlocal_goto.
6730         * cfgexpand.c (expand_gimple_stmt_1): Don't handle RESX.
6731         (expand_gimple_stmt): Use make_reg_eh_region_note.
6732         (expand_debug_expr): Don't handle EXC_PTR_EXPR and FILTER_EXPR.
6733         (gimple_expand_cfg): Don't call convert_from_eh_region_ranges,
6734         or find_exception_handler_labels.
6735         * cfgrtl.c (rtl_verify_flow_info_1): Don't handle RESX.  Assert
6736         there is exacly one EH edge.  Use can_nonlocal_goto and
6737         can_throw_internal.
6738         * cgraphunit.c (update_call_expr): Use maybe_clean_eh_stmt_fn.
6739         (cgraph_materialize_all_clones): Use maybe_clean_or_replace_eh_stmt.
6740         * combine.c (can_combine_p, try_combine): Use insn_nothrow_p.
6741         * cse.c (count_reg_usage, insn_live_p): Use insn_could_throw_p.
6742         * dce.c (deletable_insn_p_1): Don't test may_trap_p.
6743         (deletable_insn_p): Use insn_nothrow_p; reorder nonjump insn test.
6744         * dse.c (scan_insn): Use insn_could_throw_p.
6745         * emit-rtl.c (try_split): Use copy_reg_eh_region_note_backward.
6746         * expr.c (expand_expr_real): Use make_reg_eh_region_note.
6747         (expand_expr_real_1): Don't handle RESX, EXC_PTR, or FILTER_EXPR.
6748         * fold-const.c (tree_expr_nonnegative_warnv_p): Don't handle
6749         EXC_PTR_EXPR or FILTER_EXPR.
6750         (tree_expr_nonzero_warnv_p): Likewise.
6751         * function.h: Include vecprim.h, not varray.h
6752         (struct rtl_eh): Remove filter, exc_ptr, built_landing_pad members;
6753         move ttype_data and ehspec_data members to struct eh_status; change
6754         action_record_data member to a VEC.
6755         * gcse.c (hash_scan_set): Use can_throw_internal.
6756         * gengtype.c (open_base_files): Add target.h to gtype-desc.c.
6757         * gimple-iterator.c (gsi_replace): Use maybe_clean_or_replace_eh_stmt.
6758         * gimple-low.c (lower_stmt): Handle GIMPLE_EH_MUST_NOT_THROW.
6759         (block_may_fallthru): Don't handle RESX_EXPR.
6760         * gimple-pretty-print.c (dump_gimple_label): Dump EH_LANDING_PAD_NR.
6761         (dump_gimple_eh_must_not_throw, dump_gimple_eh_dispatch): New.
6762         (dump_gimple_stmt): Dump landing pad information with TDF_EH;
6763         handle GIMPLE_EH_MUST_NOT_THROW, GIMPLE_EH_DISPATCH.
6764         * gimple.c (gss_for_code): Handle GIMPLE_EH_MUST_NOT_THROW,
6765         GIMPLE_EH_DISPATCH, GIMPLE_RESX.
6766         (gimple_size): Likewise.
6767         (gimple_build_eh_dispatch, gimple_build_eh_must_not_throw): New.
6768         (gimple_build_resx): Use gimple_build_with_ops.
6769         (DEFTREECODE): Don't handle EXC_PTR_EXPR, FILTER_EXPR.
6770         (is_gimple_val): Likewise.
6771         (is_gimple_stmt): Remove RESX_EXPR.
6772         * gimple.def (GIMPLE_EH_MUST_NOT_THROW, GIMPLE_EH_DISPATCH): New.
6773         (GIMPLE_RESX): Reorder with other EH constructs.
6774         * gimple.h (struct gimple_statement_eh_mnt): New.
6775         (struct gimple_statement_eh_ctrl): Rename from gimple_statement_resx.
6776         (gimple_eh_filter_must_not_throw): Remove.
6777         (gimple_eh_filter_set_must_not_throw): Remove.
6778         (gimple_eh_must_not_throw_fndecl): New.
6779         (gimple_eh_dispatch_region, gimple_eh_dispatch_set_region): New.
6780         (is_gimple_resx): New.
6781         * gimplify.c (gimplify_expr): Don't handle EXC_PTR_EXPR, RESX_EXPR.
6782         Don't copy EH_FILTER_MUST_NOT_THROW.
6783         * gsstruct.def (GSS_EH_MNT, GSS_EHCONTROL): New.
6784         * ipa-inline.c (estimate_function_body_sizes): Don't try to
6785         handle must_not_throw_labels specially.
6786         * ipa-pure-const.c (check_call): Update debug statement for LP.
6787         * ipa-type-escape.c (check_operand): Don't handle EXC_PTR or FILTER.
6788         * ipa-utils.c (get_base_var): Likewise.
6789         * libfunc.h (LTI_unwind_resume, unwind_resume_libfunc): Remove.
6790         * lower-subreg.c (move_eh_region_note): Remove.
6791         (resolve_simple_move): Use copy_reg_eh_region_note_forward.
6792         * omp-low.c (new_omp_context): Update for eh_lp_nr.
6793         (create_task_copyfn): Likewise.
6794         (maybe_catch_exception): Use gimple_build_eh_filter.
6795         * optabs.c (emit_libcall_block): Update test for no-nonlocal-goto
6796         REG_EH_REGION.  Use make_reg_eh_region_note_nothrow_nononlocal.
6797         * passes.c (init_optimization_passes): Add pass_lower_eh_dispatch
6798         and pass_lower_resx.
6799         * print-tree.c (print_node): Dump EH_LANDING_PAD_NR.
6800         * recog.c (peephole2_optimize): Use copy_reg_eh_region_note_backward,
6801         can_throw_internal, can_nonlocal_goto.
6802         * reload1.c (fixup_eh_region_note): Use insn_could_throw_p,
6803         copy_reg_eh_region_note_forward.
6804         (emit_input_reload_insns): Use copy_reg_eh_region_note_forward.
6805         (emit_output_reload_insns): Likewise.
6806         (copy_eh_notes): Remove.
6807         * rtl.def (RESX): Remove.
6808         * rtl.h: Update declarations.
6809         * sese.c (graphite_copy_stmts_from_block): Use maybe_duplicate_eh_stmt.
6810         * tree-cfg.c (make_edges): Handle GIMPLE_EH_DISPATCH.
6811         (update_eh_label): Remove.
6812         (cleanup_dead_labels_eh): New.
6813         (cleanup_deal_labels): Use it instead of update_eh_label.
6814         (gimple_merge_blocks): Update landing pad data structure when
6815         removing a landing pad label.
6816         (remove_useless_stmts_tc): Remove gimple_eh_filter_must_not_throw
6817         test; handle GIMPLE_EH_MUST_NOT_THROW.
6818         (is_ctrl_altering_stmt): Handle GIMPLE_EH_DISPATCH.
6819         (verify_gimple_assign_single): Don't handle EXC_PTR or FILTER_EXPR.
6820         (verify_types_in_gimple_stmt): Handle GIMPLE_EH_DISPATCH.
6821         (verify_stmt): Likewise.  Verify landing pads.
6822         (gimple_redirect_edge_and_branch): Handle GIMPLE_EH_DISPATCH.
6823         (gimple_duplicate_bb): Use maybe_duplicate_eh_stmt.
6824         (struct move_stmt_d): Add eh_map.
6825         (move_stmt_eh_region_nr, move_stmt_eh_region_tree_nr): New.
6826         (move_stmt_r): Remap eh region numbers in builtin calls,
6827         resx and eh_dispatch.
6828         (move_block_to_fn): Remove eh_offset parameter.  Use
6829         maybe_duplicate_eh_stmt_fn.
6830         (find_outermost_region_in_block): Operate on eh_region pointers
6831         instead of region numbers.
6832         (move_sese_region_to_fn): Expect eh_map instead of eh_offset from
6833         duplicate_eh_regions.
6834         * tree-cfgcleanup.c (tree_forwarder_block_p): Move entry block edge
6835         test earlier.  Disallow EH landing pads.
6836         * tree-cfa.c (create_tree_common_ann): Don't set ann->rn.
6837         * tree-flow.h: Update declarations.
6838         (struct tree_ann_common_d): Replace rn with lp_nr.
6839         * tree-inline.c (copy_tree_body_r): Don't handle RESX_EXPR.
6840         (remap_eh_region_nr, remap_eh_region_tree_nr): New.
6841         (remap_gimple_stmt): Remap eh region numbers in builtin calls,
6842         resx and eh_dispatch.
6843         (copy_bb): Use maybe_duplicate_eh_stmt_fn.
6844         (copy_edges_for_bb): Use make_eh_dispatch_edges.
6845         (copy_cfg_body): Expect eh_map instead of eh_region_offset
6846         from duplicate_eh_regions.
6847         (estimate_num_insns): Don't handle EXC_PTR_EXPR or FILTER_EXPR;
6848         update RESX; handle EH_DISPATCH.
6849         (expand_call_inline): Set eh_lp_nr, not eh_region.
6850         (maybe_inline_call_in_expr): Likewise.
6851         * tree-inline.h (struct copy_body_data): Replace eh_region with
6852         eh_lp_nr, eh_region_offset with eh_map.
6853         * tree-optimize.c (execute_fixup_cfg): Use maybe_clean_eh_stmt.
6854         * tree-pass.h (pass_lower_eh_dispatch, pass_lower_resx): New.
6855         * tree-pretty-print.c (dump_generic_node): Don't handle
6856         EXC_PTR_EXPR, FILTER_EXPR, RESX_EXPR.
6857         * tree-sra.c (scan_function): Use maybe_clean_eh_stmt.
6858         * tree-ssa-alias.c (ref_maybe_used_by_call_p_1): Don't handle
6859         EXC_PTR_EXPR, FILTER_EXPR.
6860         * tree-ssa-operands.c (get_expr_operands): Likewise.
6861         * tree-ssa-propagate.c (valid_gimple_rhs_p): Likewise.
6862         * tree-ssa-sccvn.c (copy_reference_ops_from_ref): Likewise.
6863         (ao_ref_init_from_vn_reference): Likewise.
6864         * tree-ssa-sink.c (statement_sink_location): Likewise.
6865         * tree-ssa-dce.c (mark_stmt_if_obviously_necessary): Likewise.
6866         (mark_virtual_phi_result_for_renaming): Export.  Tidy.
6867         * tree-ssa-pre.c (get_or_alloc_expr_for): Don't handle
6868         EXC_PTR_EXPR, FILTER_EXPR.
6869         (is_exception_related): Remove.
6870         (compute_avail): Don't call it.
6871         * tree-ssa-structalias.c: Remove VEC definitions for int and unsigned.
6872         * tree.c (find_decls_types_in_eh_region): Update for eh_region changes.
6873         (find_decls_types_in_node): Use FOR_ALL_EH_REGION_FN.
6874         (build_common_builtin_nodes): Add enable_cxa_end_cleanup parameter.
6875         Build EH builtins.
6876         (build_resx): Remove.
6877         * tree.def (EXC_PTR_EXPR, FILTER_EXPR, RESX_EXPR): Remove.
6878         * tree.h: Update declarations.
6879         (EH_FILTER_MUST_NOT_THROW): Remove.
6880         (struct tree_label_decl): Add eh_landing_pad_nr.
6881         (EH_LANDING_PAD_NR): New.
6882         * value-prof.c (gimple_ic): Tidy variable names.  Update for
6883         landing pad numbers.
6884         (gimple_stringop_fixed_value): Tidy variable names.  Assert
6885         that neither call stmt can throw.
6886         * vecprim.h (uchar): New.
6887         (VEC(uchar,heap), VEC(uchar,gc)): New.
6888
6889         * c-common.c (c_define_builtins): Update call to
6890         build_common_builtin_nodes.
6891         * c-parser.c (c_parse_file): Don't call
6892         default_init_unwind_resume_libfunc.
6893
6894 2009-09-14  Richard Sandiford  <rdsandiford@googlemail.com>
6895
6896         * config/mips/mips-protos.h (mips_cfun_has_cprestore_slot_p): Declare.
6897         (mips_cprestore_address_p): Likewise.
6898         (mips_save_gp_to_cprestore_slot): Likewise.
6899         (mips_restore_gp): Rename to...
6900         (mips_restore_gp_from_cprestore_slot): ...this.
6901         (mips_must_initialize_gp_p): Declare.
6902         (mips_emit_save_slot_move): Likewise.
6903         (mips_output_load_label): Return nothing.
6904         (mips_eh_uses): Declare.
6905         * config/mips/mips.h (TARGET_SPLIT_CALLS): Require epilogue_completed.
6906         (TARGET_CPRESTORE_DIRECTIVE): New macro.
6907         (TARGET_ABSOLUTE_JUMPS): Likewise.
6908         (EH_USES): Likewise.
6909         (FIRST_PSEUDO_REGISTER): Update comment.
6910         (MIPS_ABSOLUTE_JUMP): New macro, extracted from...
6911         (MIPS_CALL): ...here.
6912         (REGISTER_NAMES): Add $cprestore.
6913         * config/mips/mips.c (machine_function): Remove has_gp_insn_p.
6914         Add load_label_length, has_inflexible_gp_insn_p,
6915         has_flexible_gp_insn_p, must_initialize_gp_p and
6916         must_restore_gp_when_clobbered_p.
6917         (mips_expand_call): Don't generate split instructions here.
6918         (mips_split_call): Update the call to mips_restore_gp after
6919         the above name change.
6920         (mips16_cfun_returns_in_fpr_p): Move earlier in file.
6921         (mips_find_gp_ref): New function.
6922         (mips_insn_has_inflexible_gp_ref_p): Likewise.
6923         (mips_cfun_has_inflexible_gp_ref_p): Likewise.
6924         (mips_insn_has_flexible_gp_ref_p): Likewise.
6925         (mips_cfun_has_flexible_gp_ref_p): Likewise.
6926         (mips_function_has_gp_insn): Delete.
6927         (mips_global_pointer): Drop the df_regs_ever_live_p check.
6928         Use the new functions above.  Only return INVALID_REGNUM
6929         for TARGET_ABSOLUTE_JUMPS.
6930         (mips_must_initialize_gp_p): New function.
6931         (mips_get_cprestore_base_and_offset): New function, extracted from...
6932         (mips_cprestore_slot): ...here.  Take a bool parameter.
6933         (mips_cfun_has_cprestore_slot_p): New function.
6934         (mips_cprestore_address_p): Likewise.
6935         (mips_save_gp_to_cprestore_slot): Likewise.
6936         (mips_restore_gp): Rename to...
6937         (mips_restore_gp_from_cprestore_slot): ...this.  Assert
6938         epilogue_completed.  Update the call to mips_cprestore_slot.
6939         Test cfun->machine->must_restore_gp_when_clobbered_p.
6940         (mips_direct_save_slot_move_p): New function.
6941         (mips_emit_save_slot_move): Likewise.
6942         (mips_output_cplocal): Test mips_must_initialize_gp_p () instead
6943         of cfun->machine->global_pointer.
6944         (mips_output_function_prologue): Check mips_must_initialize_gp_p ().
6945         (mips_save_reg): Use mips_emit_save_slot_move.
6946         (mips_expand_prologue): Set must_initialize_gp_p.
6947         Use mips_cfun_has_cprestore_slot_p.  Use gen_potential_cprestore
6948         for all cprestore saves.  Emit a use_cprestore instruction after
6949         setting up the cprestore slot.
6950         (mips_restore_reg): Use mips_emit_save_slot_move.
6951         (mips_process_load_label): New function.
6952         (mips_load_label_length): Likewise.
6953         (mips_output_load_label): Don't return asm: output it here instead.
6954         Use mips_process_load_label.
6955         (mips_adjust_insn_length): Adjust the length of branch instructions
6956         that have length MAX_PIC_BRANCH_LENGTH.
6957         (mips_output_conditional_branch): Update the call to
6958         mips_output_load_label.  Assume the branch target is OPERANDS[0]
6959         rather than OPERANDS[1].  Use MIPS_ABSOLUTE_JUMP for absolute jumps.
6960         (mips_output_order_conditional_branch): Swap the meaning of
6961         OPERANDS[0] and OPERANDS[1].
6962         (mips_variable_issue): Don't count ghost instructions.
6963         (mips_expand_ghost_gp_insns): New function.
6964         (mips_reorg): Rerun mips_reorg_process_insns if it returns true.
6965         (mips_output_mi_thunk): Set must_initialize_gp_p.
6966         (mips_eh_uses): New function.
6967         * config/mips/predicates.md (cprestore_save_slot_operand)
6968         (cprestore_load_slot_operand): New predicates.
6969         * config/mips/mips.md (UNSPEC_POTENTIAL_CPRESTORE): New unspec.
6970         (UNSPEC_MOVE_GP): Likewise.
6971         (UNSPEC_CPRESTORE, UNSPEC_RESTORE_GP, UNSPEC_EH_RETURN)
6972         (UNSPEC_CONSTTABLE_INT, UNSPEC_CONSTTABLE_FLOAT): Bump to make room.
6973         (CPRESTORE_SLOT_REGNUM): New register.
6974         (MAX_PIC_BRANCH_LENGTH): New constant.
6975         (jal_macro): Use MIPS_ABSOLUTE_JUMPS.
6976         (length): Use MAX_PIC_BRANCH_LENGTH as a placeholder for PIC long
6977         branches.  Fix commentary.
6978         (loadgp_newabi_<mode>): Change from unspec_volatile to unspec.
6979         Only split if mips_must_initialize_gp_p; expand to nothing otherwise.
6980         Change type to "ghost".
6981         (loadgp_absolute_<mode>): Likewise.
6982         (loadgp_rtp_<mode>): Likewise.
6983         (copygp_mips16): Likewise.
6984         (loadgp_blockage): Remove redundant mode attribute.
6985         (potential_cprestore): New instruction.
6986         (cprestore): Turn into an unspec set.
6987         (use_cprestore): New instruction.
6988         (*branch_fp): Swap operands 0 and 1.  Remove redundant mode attribute.
6989         (*branch_fp_inverted): Likewise.
6990         (*branch_order<mode>): Likewise.
6991         (*branch_order<mode>_inverted): Likewise.
6992         (*branch_equality<mode>): Likewise.
6993         (*branch_equality<mode>_inverted): Likewise.
6994         (*branch_bit<bbv><mode>): Likewise.
6995         (*branch_bit<bbv><mode>_inverted): Likewise.
6996         (*branch_equality<mode>_mips16): Remove redundant mode.
6997         (jump): Turn into a define_expand.
6998         (*jump_absolute): New instruction.
6999         (*jump_pic): Likewise.
7000         (*jump_mips16): Rename previously-unnamed pattern.  Remove
7001         redundant mode attribute.
7002         (restore_gp): Split on epilogue_completed rather than
7003         reload_completed.  Change type to "ghost".
7004         (move_gp<mode>): New instruction.
7005         * config/mips/mips-dsp.md (mips_bposge): Swap operands 0 and 1.
7006         Remove redundant mode attribute.
7007         * config/mips/mips-ps-3d.md (bc1any4t): Likewise.
7008         (bc1any4f, bc1any2t, bc1any2f): Likewise.
7009         (*branch_upper_lower, *branch_upper_lower_inverted): Likewise.
7010
7011 2009-09-14  Michael Meissner  <meissner@linux.vnet.ibm.com>
7012
7013         PR target/41210
7014         * config/rs6000/rs6000.c (rs6000_function_value): V2DF and V2DI
7015         are returned in the same register (vs34 or v2) that Altivec vector
7016         types are returned in.
7017         (rs6000_libcall_value): Ditto.
7018
7019         PR target/41331
7020         * config/rs6000/rs6000.c (rs6000_emit_move): Use gen_add3_insn
7021         instead of explicit addsi3/adddi3 calls.
7022         (rs6000_split_multireg_move): Ditto.
7023         (rs6000_emit_allocate_stack): Ditto.
7024         (rs6000_emit_prologue): Ditto.
7025         (rs6000_output_mi_thunk): Ditto.
7026
7027         * config/rs6000/rs6000.md (bswapdi*): Don't assume the pointer
7028         size is 64 bits if we can use 64-bit registers.
7029
7030 2009-09-14  Bernd Schmidt  <bernd.schmidt@analog.com>
7031
7032         * config/bfin/bfin.c (bfin_longcall_p): Don't use short calls for weak
7033         symbols.
7034
7035         From Jie Zhang <jie.zhang@analog.com>:
7036         * config/bfin/bfin.c (bfin_expand_prologue): Ask do_link to
7037         save FP and RETS with saveall attribute.
7038         (bfin_expand_epilogue): Ask do_unlink to restore FP and RETS
7039         with saveall attribute.
7040
7041         * config/bfin/bfin.c (bfin_expand_builtin,
7042         case BFIN_BUILTIN_MULT_1X32X32): Force constants to registers for the
7043         operands.
7044
7045         From Jie Zhang <jie.zhang@analog.com>:
7046         * config/bfin/bfin.c (bfin_expand_builtin): Initialize icodes
7047         before use in two places.
7048         * config/bfin/bfin.md (AREG): Define mode iterator.
7049         (reload_in, reload_out): Use mode iterator AREG.
7050
7051 2009-09-14  Richard Guenther  <rguenther@suse.de>
7052
7053         PR middle-end/41350
7054         * dwarf2out.c (dwarf2out_begin_prologue): Adjust non-CFI asm
7055         EH personality path.
7056
7057 2009-09-13  Richard Guenther  <rguenther@suse.de>
7058             Rafael Avila de Espindola  <espindola@google.com>
7059
7060         * langhooks-def.h (LANG_HOOKS_EH_RUNTIME_TYPE): Define.
7061         (LANG_HOOKS_EH_PERSONALITY): Likewise.
7062         (LANG_HOOKS_INITIALIZER): Adjust.
7063         (lhd_pass_through_t): Declare.
7064         * langhooks.h (struct lang_hooks): Add eh_runtime_type and
7065         eh_personality.
7066         * langhooks.c (lhd_pass_through_t): New function.
7067         * dwarf2out.c (output_call_frame_info, dwarf2out_do_cfi_startproc,
7068         dwarf2out_begin_prologue): Use personality from current_function_decl.
7069         * expr.h (get_personality_function): Declare.
7070         * expr.c (get_personality_function): New function.
7071         (build_personality_function): Likewise.
7072         * libfuncs.h (libfunc_index): Remove LTI_eh_personality.
7073         (eh_personality_libfunc): Remove.
7074         * optabs.c (build_libfunc_function): New function split out from ...
7075         (init_one_libfunc): ... here.
7076         * tree.h (DECL_FUNCTION_PERSONALITY): New.
7077         (tree_function_decl): Add personality.
7078         (lhd_gcc_personality): Declare.
7079         (build_personality_function): Likewise.
7080         * tree.c (gcc_eh_personality_decl): New.
7081         (lhd_gcc_personality): New function.
7082         * except.h (lang_eh_runtime_type): Remove.
7083         (enum eh_personality_kind): New.
7084         (build_personality_function): Declare.
7085         (function_needs_eh_personality): Declare.
7086         * except.c (lang_eh_runtime_type): Remove.
7087         (function_needs_eh_personality): New function.
7088         (add_type_for_runtime): Call lang_hooks.type_for_runtime instead.
7089         (sjlj_emit_function_enter, output_function_exception_table):
7090         Use personality from current_function_decl.
7091         * tree-eh.c (lower_eh_constructs): Set DECL_FUNCTION_PERSONALITY.
7092         * tree-inline.c (tree_can_inline_p): Do not inline across different
7093         EH personalities.
7094         (expand_call_inline): Likewise.  Adjust the callers EH personality.
7095         (tree_function_versioning): Copy DECL_FUNCTION_PERSONALITY.
7096         * cgraph.c (cgraph_add_new_function): Set DECL_FUNCTION_PERSONALITY.
7097         * Makefile.in (cgraph.o): Add $(EXCEPT_H) dependency.
7098         (c-parser.o): Likewise
7099         * c-tree.h (c_eh_initialized_p): Remove.
7100         (c_maybe_initialize_eh): Likewise.
7101         * c-decl.c (finish_decl): Don't call c_maybe_initialize_eh.
7102         (finish_decl): Don't call c_maybe_initialize_eh.
7103         (c_eh_initialized_p): Remove.
7104         (c_maybe_initialize_eh): Likewise.
7105         * c-parser.c (c_parser_omp_construct): Likewise.
7106         (c_parse_file): Initialize exception handling.
7107
7108 2009-09-13  Kai Tietz  <kai.tietz@onevision.com>
7109
7110         * config.gcc (tm_file): Remove i386/biarch32.h
7111         for i?86-w64-mingw* case.
7112         (i?86-*-mingw* andx86_64-*-mingw*): Add multilib
7113         support.
7114         * config.host: Set for x64 mingw the option
7115         use_long_long_for_widest_fast_int to yes.
7116
7117 2009-09-13  Eric Botcazou  <ebotcazou@adacore.com>
7118
7119         * tree.h (DECL_IGNORED_P): Document further effect for FUNCTION_DECL.
7120         * dbxout.c (dbxout_function_end): Do not test DECL_IGNORED_P.
7121         (dbxout_begin_function): Likewise.
7122         * final.c (dwarf2_debug_info_emitted_p): New predicate.
7123         (final_start_function): Do not emit debug info if DECL_IGNORED_P is
7124         set on the function.
7125         (final_end_function): Likewise.
7126         (final_scan_insn): Likewise.
7127         (rest_of_handle_final): Likewise.
7128         * varasm.c (assemble_start_function): Likewise.
7129         * config/rs6000/xcoff.h (ASM_DECLARE_FUNCTION_NAME): Likewise.
7130
7131 2009-09-12  Jason Merrill  <jason@redhat.com>
7132
7133         * dbgcnt.c (dbg_cnt_process_single_pair): constify.
7134         * opts.c (common_handle_option): constify.
7135
7136 2009-09-12  Gerald Pfeifer  <gerald@pfeifer.com>
7137
7138         * doc/install.texi (avr): Remove obsolete reference site.
7139
7140 2009-09-12  Gerald Pfeifer  <gerald@pfeifer.com>
7141
7142         * doc/install.texi (Binaries): Adjust AIX link.
7143
7144 2009-09-12  Akim Demaille  <demaille@gostai.com>
7145
7146         * doc/invoke.texi (-fstrict-aliasing): Correct two examples.
7147         Use an imperative sentence.
7148
7149 2009-09-11  Richard Henderson  <rth@redhat.com>
7150
7151         * gsstruct.def (DEFGSSTRUCT): Remove printable-name argument; add
7152         structure-name and has-tree-operands arguments; update all entries.
7153         * gimple.def (DEFGSCODE): Replace 3rd argument with GSS_symbol;
7154         update all entries.
7155         * gimple.c (gimple_ops_offset_): Use HAS_TREE_OP argument.
7156         (gsstruct_code_size): New.
7157         (gss_for_code_): New.
7158         (gss_for_code): Remove.
7159         (gimple_size): Rewrite using gsstruct_code_size.
7160         (gimple_statement_structure): Move to gimple.h.
7161         * gimple.h (gimple_ops_offset_, gss_for_code_): Declare.
7162         (gss_for_code, gimple_statement_structure): New.
7163         (gimple_ops): Use new arrays; tidy.
7164
7165 2009-09-11  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
7166
7167         * config/pa/predicates.md (symbolic_operand): Require a CONST symbolic
7168         operand to be a PLUS expression.
7169         * config/pa/pa.c (pa_secondary_reload): Likewise.
7170
7171 2009-09-11  Jakub Jelinek  <jakub@redhat.com>
7172
7173         * combine.c (propagate_for_debug_subst): Call wrap_constant on top.
7174
7175         * print-rtl.c (print_rtx): Use JUMP_LABEL (in_rtx) instead of
7176         XEXP (in_rtx, 8).
7177
7178 2009-09-11  Bernd Schmidt  <bernd.schmidt@analog.com>
7179
7180         From Jie Zhang <jie.zhang@analog.com>:
7181         * doc/extend.texi (node Function Attributes): Document l2
7182         function attribute.
7183         (node Blackfin Variable Attributes): Document l2 variable attributes.
7184
7185 2009-09-11  Loren J. Rittle  <ljrittle@acm.org>
7186
7187         * config.gcc (*-*-freebsd*): Enable default_use_cxa_atexit
7188         to match the system compiler's configuration at inflection point.
7189         Add comment to remark a remaining difference with system compiler.
7190
7191         * configure.ac (*-*-freebsd*): Enable check for __stack_chk_fail.
7192         * configure: Regenerate.
7193
7194 2009-09-11  Bernd Schmidt  <bernd.schmidt@analog.com>
7195
7196         From Jie Zhang <jie.zhang@analog.com>:
7197         * config/bfin/bfin.c (bfin_expand_call): Handle L2 functions.
7198         (bfin_handle_l2_attribute): New.
7199         (bfin_attribute_table): Add l2 attribute.
7200
7201 2009-09-11  Michael Matz  <matz@suse.de>
7202
7203         PR middle-end/41275
7204         * tree-inline.c (remap_decls): Don't put DECL_EXTERNAL decls
7205         on the local_decls list.
7206
7207 2009-09-11  Alexandre Oliva  <aoliva@redhat.com>
7208
7209         PR debug/41276
7210         PR debug/41307
7211         * cselib.c (cselib_expand_value_rtx_cb): Document callback
7212         interface.
7213         (cselib_expand_value_rtx_1): Use callback for SUBREGs.  Adjust
7214         for VALUEs, to implement the documented interface.
7215         * var-tracking.c (vt_expand_loc_callback): Handle SUBREGs.
7216         Adjust for VALUEs and anything else, to implement the
7217         documented interface.
7218
7219 2009-09-10  Nathan Froyd  <froydnj@codesourcery.com>
7220
7221         * config/rs6000/rs6000.h (DATA_ALIGNMENT): Check that we are dealing
7222         with actual SPE/paired vector modes before using 64-bit alignment.
7223         Check that TYPE is a REAL_TYPE for TARGET_E500_DOUBLE.
7224
7225 2009-09-10  DJ Delorie  <dj@redhat.com>
7226
7227         * config/mep/mep.md (eh_epilogue): Defer until after epilogue is
7228         emitted.
7229
7230         * config/mep/mep.h (LEGITIMATE_CONSTANT_P): New.
7231         * config/mep/mep.c (mep_legitimate_constant_p): New.
7232         * config/mep/mep-protos.h: Prototype it.
7233
7234 2009-09-10  Richard Henderson  <rth@redhat.com>
7235
7236         * print-rtl.c (print_rtx): Fix JUMP_LABEL index.
7237
7238 2009-09-10  Jason Merrill  <jason@redhat.com>
7239
7240         * tree.c (chain_index): New fn.
7241         * tree.h: Declare it.
7242
7243 2009-09-10  Rainer Orth  <ro@CeBiTec.Uni-Bielefeld.DE>
7244
7245         * config/sol2-c.c (cmn_err_length_specs): Initialize
7246         scalar_identity_flag.
7247
7248 2009-09-10  Richard Henderson  <rth@redhat.com>
7249
7250         * tree.h (struct tree_decl_common): Move align member earlier;
7251         move label_decl_uid member ...
7252         (struct tree_label_decl): ... here.
7253         (LABEL_DECL_UID): Update to match.
7254
7255         * tree-cfg.c (dump_function_to_file): Dump eh tree with TDF_EH,
7256         not TDF_DETAILS.
7257
7258         * tree-cfg.c (gimple_redirect_edge_and_branch): Do
7259         gimple_try_redirect_by_replacing_jump test after no-op and EH tests.
7260
7261         * tree-cfg.c (split_edge_bb_loc): Don't disallow placement at
7262         dest_prev if the edge is complex.
7263
7264         * tree-cfg.c (is_ctrl_stmt): Use a switch.
7265
7266         * tree-cfg.c (gimple_can_merge_blocks_p): Move label and
7267         loop latch tests earlier.
7268
7269         * gimple-iterator.c (gimple_find_edge_insert_loc): Insert
7270         before GIMPLE_RETURN, not after its predecessor; insert
7271         before GIMPLE_RESX.
7272
7273         * gimple-iterator.c (gimple_find_edge_insert_loc): Use
7274         gimple_seq_empty_p to test for no PHI nodes.
7275         * tree-cfg.c (split_critical_edges): Likewise.
7276
7277         * c-common.h (c_dialect_cxx, c_dialect_objc): Boolify.
7278
7279 2009-09-10  Hariharan Sandanagobalane  <hariharan@picochip.com>
7280
7281         * final.c (shorten_branches) : Ignore DEBUG_INSN_P instructions
7282         introduced by the VTA branch merge.
7283
7284 2009-09-10  Uros Bizjak  <ubizjak@gmail.com>
7285
7286         * ira-conflicts.c: Use fputs or putc instead of fprintf
7287         where appropriate.
7288         * cfg.c: Ditto.
7289         * toplev.c: Ditto.
7290         * tree-switch-conversion.c: Ditto.
7291
7292 2009-09-10  Hariharan Sandanagobalane  <hariharan@picochip.com>
7293
7294         * config/picochip/picochip.c : Ignore DEBUG_INSN_P instructions
7295         introduced by the VTA branch merge.
7296
7297 2009-09-10  Uros Bizjak  <ubizjak@gmail.com>
7298
7299         Revert:
7300         2009-09-09  Uros Bizjak  <ubizjak@gmail.com>
7301
7302         PR rtl-optimization/39779
7303         * expr.c (convert_modes): Return when mode == oldmode after
7304         CONST_INTs are processed.
7305
7306 2009-09-10  Nick Clifton  <nickc@redhat.com>
7307
7308         * config/mep/mep.c (mep_encode_section_info): Copy weakness
7309         attribute and referring decl when creating renamed symbol.
7310
7311 2009-09-10  Richard Guenther  <rguenther@suse.de>
7312
7313         PR middle-end/41257
7314         * cgraphunit.c (cgraph_emit_thunks): Emit thunks only for
7315         reachable nodes.
7316         (cgraph_finalize_compilation_unit): Compute reachability
7317         before emitting thunks.  Properly process aliases before
7318         possibly removing unreachable nodes.
7319
7320 2009-09-10  Richard Guenther  <rguenther@suse.de>
7321
7322         PR middle-end/41254
7323         * tree.c (struct free_lang_data_d): Add worklist member.
7324         (find_decls_types_r): Push onto the worklist instead of recursing.
7325         Handle TREE_BINFOs properly.
7326         (find_decls_types): New function wrapped around find_decls_types_r
7327         to process the worklist.
7328         (find_decls_types_in_eh_region): Use it.
7329         (find_decls_types_in_node): Likewise.
7330         (find_decls_types_in_var): Likewise.
7331         (free_lang_data_in_cgraph): Likewise.  Free the worklist.
7332         * tree.h (RECORD_OR_UNION_TYPE_P): New.
7333         (AGGREGATE_TYPE_P): Adjust.
7334
7335 2009-09-09  Jason Merrill  <jason@redhat.com>
7336
7337         * configure.ac: Check glibc version even if we have an in-tree
7338         assembler.
7339
7340 2009-09-09  Anthony Green  <green@moxielogic.com>
7341
7342         * config/moxie/moxie.md (*movsi, *movhi, *movqi): Use xor to load
7343         the constant 0 when appropriate.
7344         * config/moxie/constraints.md: Add constraint O.
7345
7346         * config/moxie/moxie.c (moxie_setup_incoming_varargs): Adjust
7347         to pass up to 6 32-bit argument values in registers.
7348         (moxie_function_arg): Ditto.
7349         (moxie_arg_partial_bytes): Ditto.
7350         * config/moxie/moxie.h (FUNCTION_ARG_ADVANCE): Ditto.
7351         (REG_PARM_STACK_SPACE): Ditto.
7352         (FUNCTION_ARG_REGNO_P): Ditto.
7353
7354         * config/moxie/moxie.c (moxie_expand_prologue): Use dec
7355         instruction to allocate stack space.
7356
7357 2009-09-09  Segher Boessenkool  <segher@kernel.crashing.org>
7358
7359         * config/rs6000/rs6000.md (bswapdi2_64bit): Fix
7360         unnecessarily stringent constraints.  Fix address
7361         calculation in the splitters.
7362
7363 2009-09-09  Uros Bizjak  <ubizjak@gmail.com>
7364
7365         PR rtl-optimization/39779
7366         * expr.c (convert_modes): Return when mode == oldmode after
7367         CONST_INTs are processed.
7368
7369 2009-09-09  Kai Tietz  <kai.tietz@onevision.com>
7370
7371         PR/41315
7372         * config/i386.c (ix86_can_use_return_insn_p): Check for padding0, too.
7373         (ix86_expand_prologue): Take frame.padding0 into logic of
7374         to_allocate checks.
7375         (ix86_expand_epilogue): Likewise.
7376
7377 2009-09-09  Jakub Jelinek  <jakub@redhat.com>
7378
7379         * config/t-slibgcc-elf-ver (SHLIB_MAKE_SOLINK, SHLIB_INSTALL_SOLINK):
7380         New variables.
7381         (SHLIB_LINK, SHLIB_INSTALL): Use them.
7382         * config/t-slibgcc-libgcc: New file.
7383         * config.gcc (powerpc*-*-linux*, powerpc*-*-gnu*): Use it.
7384
7385 2009-09-09  Martin Jambor  <mjambor@suse.cz>
7386
7387         PR tree-optimization/41089
7388         * tree-sra.c (find_var_candidates): Do not consider va_lists in
7389         early SRA.
7390
7391 2009-09-09  Richard Henderson  <rth@redhat.com>
7392
7393         * gimple.h (CASE_GIMPLE_OMP): New.
7394         (is_gimple_omp): Use it.
7395         * tree-cfg.c (is_ctrl_altering_stmt): Likewise.
7396         (verify_gimple_debug): Likewise.
7397
7398 2009-09-09  Richard Guenther  <rguenther@suse.de>
7399
7400         PR tree-optimization/41101
7401         * tree-ssa-pre.c (maximal_set): Remove.
7402         (compute_antic_aux): Treat the maximal set as implicitly all ones.
7403         Defer all blocks we didn't visit at least one successor.
7404         (add_to_exp_gen): Do not add to the maximal set.
7405         (make_values_for_phi): Likewise.
7406         (compute_avail): Likewise.
7407         (init_pre): Do not allocate the maximal set.
7408         (execute_pre): Do not dump it.
7409
7410 2009-09-09  Martin Jambor  <mjambor@suse.cz>
7411
7412         * tree-cfg.c (verify_gimple_phi): Check that gimple_phi_result is
7413         an SSA_NAME rather than a is_gimple_variable.
7414
7415 2009-09-09  Richard Guenther  <rguenther@suse.de>
7416
7417         PR middle-end/41317
7418         * tree-ssa-ccp.c (maybe_fold_offset_to_component_ref): Remove
7419         code dealing with plain pointer bases.
7420         (maybe_fold_offset_to_reference): Likewise.
7421         (maybe_fold_stmt_addition): Adjust.
7422
7423 2009-09-09  Richard Guenther  <rguenther@suse.de>
7424
7425         * tree.c (free_lang_data_in_type): Do not free the type variant
7426         chains.
7427         (free_lang_data): Merge char_type_node with its properly signed
7428         variant.
7429         (pass_ipa_free): Collect after freeing language specific data.
7430
7431 2009-09-09  Michael Matz  <matz@suse.de>
7432
7433         PR middle-end/41268
7434         * cfgexpand.c (expand_gimple_stmt_1): Use an int for storing
7435         SUBREG_PROMOTED_UNSIGNED_P, instead of a bool.
7436         * rtl.h (struct rtx, SUBREG_PROMOTED_UNSIGNED_P): Update comments
7437         to reflect reality.
7438
7439 2009-09-08  DJ Delorie  <dj@redhat.com>
7440
7441         * config/mep/mep.c (conversions[]): Add "ml" pattern.
7442
7443 2009-09-04  Jason Merrill  <jason@redhat.com>
7444
7445         * tree.c (tree_find_value): Remove.
7446         * tree.h: Remove prototype.
7447         * varasm.c (assemble_external): Use value_member instead.
7448
7449 2009-09-08  Alexandre Oliva  <aoliva@redhat.com>
7450
7451         * toplev.c (process_options): Choose default debugging type when
7452         gtoggle enables debug info and type is unset.
7453
7454 2009-09-08  Alexandre Oliva  <aoliva@redhat.com>
7455
7456         PR debug/41276
7457         PR debug/41307
7458         * cselib.c (cselib_expand_value_rtx_1): Don't return copy of
7459         invalid subreg.
7460
7461 2009-09-08  Alexandre Oliva  <aoliva@redhat.com>
7462
7463         * configure: Rebuilt with modified libtool.m4.
7464
7465 2009-09-08  Alexandre Oliva  <aoliva@redhat.com>
7466
7467         PR debug/41229
7468         PR debug/41291
7469         PR debug/41300
7470         * tree-ssa.c (execute_update_addresses_taken): Update debug insns.
7471
7472 2009-09-08  Alexandre Oliva  <aoliva@redhat.com>
7473
7474         * tree-ssa-loop-ivopts.c (get_phi_with_result): Remove.
7475         (remove_statement): Likewise.
7476         (rewrite_use_nonlinear_expr): Adjust.
7477         (remove_unused_ivs): Collect SSA NAMEs to remove and call...
7478         * tree-ssa.c (release_defs_bitset): ... this.  New.
7479         * tree-flow.h (release_defs_bitset): Declare.
7480
7481 2009-09-08  Alexandre Oliva  <aoliva@redhat.com>
7482
7483         PR debug/41232
7484         * tree-ssa-phiopt.c (minmax_replacement): Skip debug stmts
7485         in the middle block.
7486
7487 2009-09-08  Kai Tietz  <kai.tietz@onevision.com>
7488
7489         * tree-ssa-reassoc.c (find_operand_rank): Cast pointer
7490         via intptr_t to long type.
7491         (insert_operand_rank): Cast long type via intptr_t to
7492         pointer type.
7493         * genattrtab.c (RTL_HASH): Use intptr_t to cast from
7494         pointer to scalar.
7495         * c-pretty-print.c (pp_c_tree_decl_identifier): Cast
7496         from pointer to unsigned via uintptr_t.
7497
7498         * configure.ac (GCC_STDINT_TYPES): Initialize intptr_t,
7499         uintptr_t, HAVE_INTTYPES_H, HAVE_STDINT_H, HAVE_UINTPTR_T,
7500         and HAVE_INTPTR_T.
7501         * configure: Regenerated.
7502         * config.in: Regenerated
7503         * system.h (stdint.h): Add include.
7504         (inttypes.h): Likewise.
7505         * Makefile.in (aclocal): Add config/stdint.m4.
7506         * aclocal.m4: Regenerated.
7507
7508 2009-09-08  Bernd Schmidt  <bernd.schmidt@analog.com>
7509
7510         * config/bfin/bfin.c (np_check_regno, np_after_branch): New static
7511         variables.
7512         (note_np_check_stores): New function.
7513         (harmless_null_pointer_p): New function.
7514         (trapping_loads_p): New args NP_REG and AFTER_NP_BRANCH.  Callers
7515         changed.  Take into account whether we're in the shadow of a condjump
7516         that tested NP_REG for NULL.
7517         Lose all code that tested for SEQUENCEs.
7518         (workaround_speculation): Avoid inserting NOPs for loads that are
7519         either always executed or a NULL pointer.
7520
7521 2009-09-08  Jan Hubicka  <jh@suse.cz>
7522
7523         * doc/invoke.texi (early-inlining-insns): Reduce from 12 to 8.
7524         * params.def (early-inlining-insns): Likewise.
7525
7526 2009-09-08  Jakub Jelinek  <jakub@redhat.com>
7527
7528         PR rtl-optimization/41239
7529         * sched-int.h (struct deps): Add last_function_call_may_noreturn field.
7530         * sched-rgn.c (deps_join): Join also last_function_call_may_noreturn
7531         lists.
7532         * sched-deps.c (sched_analyze_insn): Prevent moving trapping insns
7533         across calls, as the calls might not always return normally.
7534         (call_may_noreturn_p): New function.
7535         (deps_analyze_insn): Update last_function_call_may_noreturn list.
7536         (init_deps): Initialize it.
7537         (remove_from_deps): Also remove calls from
7538         last_function_call_may_noreturn list.
7539
7540 2009-09-07  Richard Henderson  <rth@redhat.com>
7541
7542         * tree-ssa-sccvn.c (vn_reference_lookup_3): Don't assume there are
7543         more VR->OPERANDS than LHS operands.  Free LHS before returning.
7544
7545 2009-09-07  Bernd Schmidt  <bernd.schmidt@analog.com>
7546
7547         * config/bfin/bfin.md (UNSPEC_VOLATILE_STALL): New constant.
7548         (attr "addrtype"): New member "spreg".
7549         Use it if mem_spfp_address_operand is true for the address.
7550         (attr "type"): New entry "stall".
7551         (cpu_unit "load"): New.
7552         (insn_reservations "load32", "loadp", "loadi"): Add reservation of
7553         "load".
7554         (insn_reservation "loadsp"): New.
7555         (insn_reservation "load_stall1"): New.
7556         (insn_reservation "load_stall3"): New.
7557         (stall): New insn.
7558         * config/bfin/predicates.md (const1_operand, const3_operand): New.
7559         (mem_p_address_operand): Exclude stack and frame pointer based
7560         addresses.
7561         (mem_spfp_address_operand): New; match them here.
7562         * config/bfin/bfin.c (add_sched_insns_for_speculation): New function.
7563         (bfin_reorg): Call it if scheduling insns.
7564         (bfin_gen_bundles): Remove dummy insns created by
7565         add_sched_insns_for_speculation.
7566
7567         From Jie Zhang <jie.zhang@analog.com>:
7568         * config/bfin/bfin-protos.h (enum bfin_cpu_type, bfin_cpu_type,
7569         bfin_si_revision, bfin_workarounds): Move these ...
7570         * config/bfin/bfin.h: ... here.
7571
7572         From Mike Frysinger  <michael.frysinger@analog.com>
7573         * config/bfin/bfin-protos.h (bfin_cpu_type): Add BFIN_CPU_BF542M,
7574         BFIN_CPU_BF544M, BFIN_CPU_BF547M, BFIN_CPU_BF548M, and BFIN_CPU_BF549M.
7575         * config/bfin/bfin.c (bfin_cpus[]): Add 0.3 for bf542m, bf544m,
7576         bf547m, bf548m, and bf549m.
7577         * config/bfin/bfin.h (TARGET_CPU_CPP_BUILTINS): Define __ADSPBF542M__
7578         for BFIN_CPU_BF542M, __ADSPBF544M__ for BFIN_CPU_BF544M,
7579         __ADSPBF547M__ for BFIN_CPU_BF547M, __ADSPBF548M__ for
7580         BFIN_CPU_BF548M, and __ADSPBF549M__ for BFIN_CPU_BF549M.
7581         * config/bfin/t-bfin-elf (MULTILIB_MATCHES): Select bf532-none for
7582         bf542m-none, bf544m-none, bf547m-none, bf548m-none, and bf549m-none.
7583         * config/bfin/t-bfin-linux (MULTILIB_MATCHES): Likewise.
7584         * config/bfin/t-bfin-uclinux (MULTILIB_MATCHES): Likewise.
7585         * doc/invoke.texi (Blackfin Options): Document that -mcpu now accepts
7586         bf542m, bf544m, bf547m, bf548m, and bf549m.
7587
7588         From Jie Zhang <jie.zhang@analog.com>:
7589         * config/bfin/predicates.md (p_register_operand): New predicate.
7590         (dp_register_operand): New predicate.
7591         * config/bfin/bfin-protos.h (WA_05000074): Define.
7592         (ENABLE_WA_05000074): Define.
7593         * config/bfin/bfin.c (bfin_cpus[]): Add WA_05000074 for all cpus.
7594         (bfin_gen_bundles): Put dsp32shiftimm instruction in slot[0].
7595         * config/bfin/bfin.md (define_attr type): Add dsp32shiftimm.
7596         (define_attr addrtype): Allow load/store register to be P register.
7597         (define_attr storereg): New.
7598         (define_cpu_unit anomaly_05000074): New.
7599         (define_insn_reservation dsp32shiftimm): New.
7600         (define_insn_reservation dsp32shiftimm_anomaly_05000074): New.
7601         (define_insn_reservation loadp): Cannot use slot2.
7602         (define_insn_reservation loadsp): Cannot use slot2.
7603         (define_insn_reservation storep): Cannot use slot2. Does not
7604         apply when working around 05000074.
7605         (define_insn_reservation storep_anomaly_05000074): New.
7606         (define_insn_reservation storei): Does not apply when working
7607         around 05000074.
7608         (define_insn_reservation storei_anomaly_05000074): New.
7609         (define_attr length): Add dsp32shiftimm case.
7610         (define_insn movsi_insn32, movsi_insv, ashlsi3_insn, ashrsi3,
7611         ror_one, rol_one, lshrsi3, lshrpdi3, ashrpdi3, movhiv2hi_low,
7612         movhiv2hi_high, composev2hi, packv2hi, movv2hi_hi,
7613         ssashiftv2hi3, ssashifthi3, ssashiftsi3, lshiftv2hi3, lshifthi3):
7614         Set type as dsp32shiftimm for dsp32shiftimm alternatives.
7615
7616 2009-09-07  Martin Jambor  <mjambor@suse.cz>
7617
7618         PR middle-end/41282
7619         * tree-sra.c (create_artificial_child_access): Return NULL if
7620         build_ref_for_offset fails.
7621         (propagate_subacesses_accross_link): Allow build_ref_for_offset
7622         and create_artificial_child_access to fail.
7623
7624 2009-09-06  Dmitry Gorbachev  <d.g.gorbachev@gmail.com>
7625
7626         PR c++/41214
7627         * unwind-dw2.c (uw_init_context_1): Mark noinline.
7628         * config/ia64/unwind-ia64.c (uw_init_context_1): Likewise.
7629         * config/xtensa/unwind-dw2-xtensa.c (uw_init_context_1): Likewise.
7630
7631 2009-09-07  Bernd Schmidt  <bernd.schmidt@analog.com>
7632
7633         * config/bfin/bfin.c (bfin_optimize_loop): When creating a new basic
7634         block, ensure it has an exit edge.  Emit a barrier after a jump.
7635
7636 2009-09-07  Nick Clifton  <nickc@redhat.com>
7637
7638         * gcc.c (this_is_linker_script): New variable.  Like
7639         this_is_library_file but for the %T constructor.
7640         (end_going_arg): If this_is_linker_script is set then locate the
7641         script and insert a --script switch before it
7642         (do_spec_2): Initialise this_is_linker_script.
7643         (do_spec_1): Likewise.  Handle %T construct.
7644         (eval_spec_function): Preserve this_is_linker_script.
7645         * doc/invoke.texi: Document %T construct in spec files.
7646         * config/m32c/m32c.h (LIB_SPEC): Use it.
7647
7648 2009-09-07  Andreas Krebbel  <Andreas.Krebbel@de.ibm.com>
7649
7650         * rtl.h (PREFETCH_SCHEDULE_BARRIER_P): New macro.
7651         * sched-deps.c (sched_analyze_2): Make prefetches a hard barrier
7652         when volatile flag is set.
7653         * doc/rtl.texi (PREFETCH_SCHEDULE_BARRIER_P): Add documentation pieces.
7654
7655 2009-09-06  Eric Botcazou  <ebotcazou@adacore.com>
7656
7657         PR bootstrap/41241
7658         * combine-stack-adj.c (try_apply_stack_adjustment): Handle stores.
7659         (combine_stack_adjustments_for_block): Allow insns between stack
7660         adjustments and stores with corresponding pre-(dec|inc)rement or
7661         pre-modify operation.
7662
7663 2009-09-06  Jakub Jelinek  <jakub@redhat.com>
7664
7665         PR bootstrap/41241
7666         * combine-stack-adj.c (struct csa_memlist): Rename to...
7667         (struct csa_reflist): ... this.  Rename mem field to ref.
7668         (free_csa_memlist): Rename to...
7669         (free_csa_reflist): ... this.
7670         (record_one_stack_memref): Rename to...
7671         (record_one_stack_ref): ... this.  Handle also REG_P.
7672         (try_apply_stack_adjustment): Handle also REG_P.
7673         (struct record_stack_memrefs_data): Rename to...
7674         (struct record_stack_refs_data): ... this.  Rename memlist field to
7675         reflist.
7676         (record_stack_memrefs): Rename to...
7677         (record_stack_refs): ... this.  For DEBUG_INSNs keep traversing
7678         subexpressions instead of failing when a MEM contains SP references.
7679         For SP itself in DEBUG_INSNs queue it also onto reflist chain.
7680         (combine_stack_adjustments_for_block): Adjust for mem to ref renaming.
7681
7682 2009-09-06  Richard Guenther  <rguenther@suse.de>
7683
7684         PR middle-end/41144
7685         * tree.c (build_array_type): Do not record types marked
7686         with structural equality in the canonical type hashtable.
7687
7688 2009-09-06  Richard Guenther  <rguenther@suse.de>
7689
7690         PR middle-end/41261
7691         * tree-ssa-alias.c (refs_may_alias_p_1): Bail out for function decls.
7692
7693 2009-09-05  Richard Guenther  <rguenther@suse.de>
7694
7695         PR middle-end/41181
7696         * tree-ssa-ccp.c (maybe_fold_stmt_addition): Use the correct type.
7697
7698 2009-09-05  Richard Guenther  <rguenther@suse.de>
7699
7700         PR debug/41273
7701         * tree-ssa-operands.c (get_tmr_operands): Pass through opf_no_vops.
7702
7703 2009-09-05  Richard Guenther  <rguenther@suse.de>
7704
7705         PR middle-end/41271
7706         * tree-ssa.c (useless_type_conversion_p): Drop qualifiers
7707         before comparing function argument types.
7708
7709 2009-09-05  Francois-Xavier Coudert  <fxcoudert@gcc.gnu.org>
7710
7711         PR target/41024
7712         * config/i386/mingw-w64.h (ASM_SPEC): Pass -v instead of -V to
7713         the assembler.
7714
7715 2009-09-04  Uros Bizjak  <ubizjak@gmail.com>
7716
7717         Revert:
7718         2009-08-18  Uros Bizjak  <ubizjak@gmail.com>
7719
7720         * config/alpha/alpha.c (alpha_output_mi_thunk_osf): Allocate insn
7721         locators before emit_insn is called.
7722
7723 2009-09-04  Vladimir Makarov  <vmakarov@redhat.com>
7724
7725         PR bootstrap/41241
7726         * ira.c (update_equiv_reg): Revert my previous patch for the PR.
7727         * reginfo.c (resize_reg_info): Call allocate_reg_info if necessary.
7728         (reginfo_init): Don't call allocate_reg_info.
7729
7730 2009-09-04  Uros Bizjak  <ubizjak@gmail.com>
7731
7732         PR target/41262
7733         * config/alpha/alpha.c (alpha_does_function_need_gp): Use
7734         NONDEBUG_INSN_P instead of INSN_P.
7735
7736 2009-09-04  Alexandre Oliva  <aoliva@redhat.com>
7737
7738         PR debug/41225
7739         * tree-vect-stmts.c (vect_stmt_relevant_p): Skip debug uses.
7740
7741 2009-09-04  Alexandre Oliva  <aoliva@redhat.com>
7742
7743         PR target/41252
7744         * config/arm/vfp.md (*cmpdf_split_vfp): Fix src mode in the second
7745         pattern of the split.
7746
7747 2009-09-04  Alexandre Oliva  <aoliva@redhat.com>
7748
7749         * toplev.c (process_options): Move setter of flag_var_tracking
7750         before other tests that depend on it.  Move down setter of
7751         flag_rename_registers.  Don't enable var-tracking-assignments
7752         by default if selective scheduling is enabled.  Warn if both
7753         are enabled.
7754
7755 2009-09-04  Alexandre Oliva  <aoliva@redhat.com>
7756
7757         * var-tracking.c (dv_is_decl_p): Adjust NULL behavior to match
7758         comment.  Use switch statement to catch overlaps between rtx
7759         and tree codes.  Accept FUNCTION_DECLs in addition to those in...
7760         (IS_DECL_CODE): ... here. Remove.
7761         (check_value_is_not_decl): Remove.
7762         (dv_from_decl, dv_from_value): Check after conversion.
7763
7764 2009-09-04  Richard Guenther  <rguenther@suse.de>
7765
7766         PR middle-end/41257
7767         * (cgraph_finalize_compilation_unit): Move finalizing aliases
7768         after emitting tunks.  Move emitting thunks and ctors from ...
7769         (cgraph_optimize): ... here.  Remove redundant
7770         cgraph_analyze_functions.
7771         * varasm.c (find_decl_and_mark_needed): Remove no longer
7772         necessary check.
7773         (finish_aliases_1): Adjust check for thunk aliases.
7774
7775 2009-09-04  Daniel Gutson  <dgutson@codesourcery.com>
7776
7777         * config/arm/arm.md (ctzsi2): Added braces
7778         to avoid warning that broke booststrap.
7779
7780 2009-09-04  Martin Jambor  <mjambor@suse.cz>
7781
7782         PR tree-optimization/41112
7783         * tree-sra.c (build_ref_for_offset_1): Signal that we cannot
7784         handle variable-bounded arrays.
7785         (expr_with_var_bounded_array_refs_p): New function.
7786         (analyze_access_subtree): Call expr_with_var_bounded_array_refs_p.
7787
7788 2009-09-04  Wolfgang Gellerich  <gellerich@de.ibm.com>
7789
7790         * config/s390/2097.md: Removed two incorrect bypasses.
7791         (z10_fsimpdf): Fixed latency.
7792         (z10_fhex): New insn_reservation.
7793         (z10_floaddf): Fixed latency.
7794         (z10_floadsf): Fixed latency.
7795         (z10_ftrunctf): Fixed latency.
7796         (z10_ftruncdf): Fixed latency.
7797         * config/s390/s390.c (z10_cost): Fixed values.
7798         (s390_adjust_priority): Added z10 path.
7799         * config/s390/s390.md (type): Added fhex.
7800         (*mov<mode>_64dfp): Updated type attribute.
7801         (*mov<mode>_64): Updated type attribute.
7802         (*mov<mode>_31): Updated type attribute.
7803         (*mov<mode>"): Likewise.
7804         * config/s390/2084.md (x_fsimpdf): Updated condition.
7805
7806 2009-09-04  Andreas Krebbel  <krebbel1@de.ibm.com>
7807
7808         * config/s390/s390.md ("*fmadd<mode>", "*fmsub<mode>"): Enable mem
7809         RTXs in the predicate for operand 1.
7810
7811 2009-09-03  Daniel Gutson  <dgutson@codesourcery.com>
7812
7813         * config/arm/arm.md (UNSPEC_RBIT): New constant.
7814         (rbitsi2): New insn.
7815         (ctzsi2): New expand.
7816         * config/arm/arm.h (CTZ_DEFINED_VALUE_AT_ZERO): New macro.
7817
7818 2009-09-03  Martin Jambor  <mjambor@suse.cz>
7819
7820         * tree-sra.c (duplicate_expr_for_different_base): Removed.
7821         (create_artificial_child_access): Use build_ref_for_offset instead
7822         of duplicate_expr_for_different_base.
7823         (propagate_subacesses_accross_link): Likewise.
7824
7825 2009-09-03  Richard Sandiford  <rdsandiford@googlemail.com>
7826
7827         * config/mips/mips.c (USEFUL_INSN_P): Use NONDEBUG_INSN_P instead
7828         of INSN_P.
7829         (mips16e_collect_argument_saves): Skip debug instructions.
7830         (mips_74k_agen_init): Use CALL_P || JUMP_P instead of !NONJUMP_INSN_P.
7831         (mips16_lay_out_constants): Use USEFUL_INSN_P instead of INSN_P.
7832         (r10k_insert_cache_barriers): Likewise.
7833         (mips_reorg_process_insns): Likewise.
7834
7835 2009-09-03  Vladimir Makarov  <vmakarov@redhat.com>
7836
7837         PR bootstrap/41241
7838         * ira.c (update_equiv_reg): Remove check on class likely spill.
7839
7840 2009-09-03  Jakub Jelinek  <jakub@redhat.com>
7841
7842         PR debug/41236
7843         * dwarf2out.c (loc_descriptor): Don't use SUBREG_REG macro on
7844         SIGN_EXTEND or ZERO_EXTEND.  Don't assume there is a REG inside of
7845         it or SUBREG.
7846
7847         PR debug/41238
7848         * function.c (assign_parm_find_stack_rtl): Don't set mem attributes on
7849         the stack slot if it is passed by invisible reference.
7850         * var-tracking.c (vt_add_function_parameters): Handle arguments passed
7851         by invisible reference.
7852
7853 2009-09-03  Bernd Schmidt  <bernd.schmidt@analog.com>
7854
7855         * config/bfin/linux.h (TARGET_SUPPORTS_SYNC_CALLS): Define to 1.
7856         * config/bfin/uclinux.h (TARGET_SUPPORTS_SYNC_CALLS): Define to 1.
7857         * config/bfin/bfin.h (TARGET_SUPPORTS_SYNC_CALLS): Provide default of
7858         0.
7859         * config/bfin/sync.md: New file.
7860         * config/bfin/bfin.md: Include it.
7861         (UNSPEC_ATOMIC): New.
7862         (UNSPEC_ONES): Provide a unique number.
7863
7864         From Jie Zhang <jie.zhang@analog.com>:
7865         * config/bfin/bfin.c (ret_regs): New.
7866         (must_save_fp_p): Don't return true because of frame_pointer_needed.
7867         (must_save_rets_p): New.
7868         (n_regs_saved_by_prologue): Use must_save_rets_p instead of
7869         current_function_is_leaf.
7870         (do_link): Likewise.
7871         (do_unlink): Likewise.
7872         (expand_interrupt_handler_prologue): Use ret_regs array.
7873         (expand_interrupt_handler_epilogue): Use ret_regs array and
7874         pass return register to gen_return_internal.
7875         (bfin_expand_epilogue): Pass return register to
7876         gen_return_internal.
7877         (bfin_expand_call): Explicitly clobber RETS.
7878         * config/bfin/bfin.h (FUNCTION_RETURN_REGISTERS): Define.
7879         * config/bfin/bfin.md (call_symbol_fdpic, call_value_symbol_fdpic,
7880         call_insn_fdpic, call_value_insn_fdpic, call_symbol,
7881         call_value_symbol, call_insn, call_value_insn): Explicitly clobber
7882         RETS.
7883         (return_internal): Take a reg rtx rather than the register number.
7884
7885 2009-09-03  H.J. Lu  <hongjiu.lu@intel.com>
7886
7887         * tree-parloops.c (parallelize_loops): Cast to HOST_WIDE_INT
7888         when comparing against estimated_loop_iterations_int return.
7889
7890 2009-09-03  Richard Guenther  <rguenther@suse.de>
7891
7892         * dwarf2out.c (dwarf2out_do_cfi_asm): Remove check of
7893         eh_personality_libfunc.
7894
7895 2009-09-03  Razya Ladelsky  <razya@il.ibm.com>
7896
7897         * tree-parloops.c (separate_decls_in_region): Add space.
7898
7899 2009-09-03  Razya Ladelsky  <razya@il.ibm.com>
7900
7901         * tree-parloops.c (separate_decls_in_region): Change the condition
7902         checking if there are reductions in the loop.
7903
7904 2009-09-03  Razya Ladelsky  <razya@il.ibm.com>
7905
7906         PR tree-optimization/38275
7907         * tree-parloops.c (parallelize_loops): Replace profitability condition
7908         for expected number of iterations.
7909
7910 2009-09-03  Alexandre Oliva  <aoliva@redhat.com>
7911
7912         * doc/invoke.texi (BUILD_CONFIG): Document --with-build-config.
7913         (bootstrap-debug): Explain conditions in which it becomes default.
7914         (bootstrap-debug-big): Rather than duplicate bootstrap-debug,
7915         make it add to it.
7916
7917 2009-09-03  Namhyung Kim  <namhyung@gmail.com>
7918
7919         * doc/invoke.texi (Optimize Options): Move
7920         -finline-small-functions to the -O2 list.
7921
7922 2009-09-03  Alexandre Oliva  <aoliva@redhat.com>
7923
7924         * toplev.c (process_options): Enable var-tracking-assignments
7925         by default if var-tracking is enabled.
7926
7927 2009-09-02  David Daney  <ddaney@caviumnetworks.com>
7928
7929         * cfgbuild.c (find_bb_boundaries): Split blocks containing a
7930         barrier.
7931         * emit-rtl.c (prev_nonnote_insn_bb): New function.
7932         * rtl.h (prev_nonnote_insn_bb): Declare it.
7933
7934 2009-09-03  Diego Novillo  <dnovillo@google.com>
7935
7936         * cgraph.c (cgraph_node_for_decl): New.
7937         * cgraph.h (cgraph_node_for_decl): Declare.
7938         * tree.c (host_integerp): Return 0 if T is NULL.
7939
7940 2009-09-03  Diego Novillo  <dnovillo@google.com>
7941
7942         * tree.h (struct alias_pair): Move from varasm.c.
7943         (alias_pairs): Likewise.
7944         (TYPE_MAXVAL): Define.
7945         (TYPE_MINVAL): Define.
7946         (iterative_hash_host_wide_int): Declare.
7947         (remove_unreachable_alias_pairs): Declare.
7948         * tree-pass.h (pass_ipa_free_lang_data): Declare.
7949         * diagnostic.c (default_diagnostic_starter): Make extern.
7950         (default_diagnostic_finalizer): Make extern.
7951         * diagnostic.h (default_diagnostic_starter): Declare.
7952         (default_diagnostic_finalizer): Declare.
7953         (default_tree_printer): Declare.
7954         * toplev.c (default_tree_printer): Make extern.
7955
7956 2009-09-03  Richard Guenther  <rguenther@suse.de>
7957             Diego Novillo  <dnovillo@google.com>
7958
7959         * cgraph.c (cgraph_add_new_function): Remove gimplification.
7960         * cgraphunit.c (cgraph_expand_function): Do not emit
7961         associated thunks from here.
7962         (cgraph_emit_thunks): New.
7963         (cgraph_optimize): Call it.
7964         Return if any IPA pass finds an error.
7965         * varasm.c (finish_aliases_1): Ignore errorneous aliases used
7966         by thunks.
7967
7968 2009-09-03  Simon Baldwin  <simonb@google.com>
7969             Rafael Espindola  <espindola@google.com>
7970             Richard Guenther  <rguenther@suse.de>
7971             Doug Kwan  <dougkwan@google.com>
7972             Diego Novillo  <dnovillo@google.com>
7973
7974         * tree.c: Include tree-pass.h, langhooks-def.h,
7975         diagnostic.h, cgraph.h, timevar.h, except.h and debug.h.
7976         (free_lang_data_in_type): New.
7977         (need_assembler_name_p): New.
7978         (free_lang_data_in_block): New.
7979         (free_lang_data_in_decl): New.
7980         (struct free_lang_data_d): New.
7981         (add_tree_to_fld_list): New.
7982         (find_decls_types_r): New.
7983         (get_eh_types_for_runtime): New.
7984         (find_decls_types_in_eh_region): New.
7985         (find_decls_types_in_node): New.
7986         (find_decls_types_in_var): New.
7987         (free_lang_data_in_cgraph): New.
7988         (free_lang_data): New.
7989         (gate_free_lang_data): New.
7990         (pass_ipa_free_lang_data): New.
7991
7992 2009-09-03  Diego Novillo  <dnovillo@google.com>
7993
7994         * timevar.def (TV_IPA_FREE_LANG_DATA): Define.
7995         * langhooks.h (struct lang_hooks): Add field free_lang_data.
7996         (lang_hooks): Remove const qualifier.
7997         * ipa.c (cgraph_remove_unreachable_nodes): Call
7998         remove_unreachable_alias_pairs.
7999         * except.c (add_type_for_runtime): Check if TYPE has
8000         already been converted.
8001         (lookup_type_for_runtime): Likewise.
8002         (check_handled): Handle converted types.
8003         * varasm.c (remove_unreachable_alias_pairs): New.
8004         * gimple.c: Include demangle.h.
8005         (gimple_decl_printable_name): New.
8006         (gimple_fold_obj_type_ref): New.
8007         * gimple.h (gimple_decl_printable_name): Declare.
8008         (gimple_fold_obj_type_ref): Declare.
8009         * passes.c (init_optimization_passes): Add pass
8010         pass_ipa_free_lang_data.
8011         * langhooks-def.h (LANG_HOOKS_FREE_LANG_DATA): Define.
8012         (LANG_HOOKS_INITIALIZER): Add LANG_HOOKS_FREE_LANG_DATA.
8013
8014 2009-09-03  Diego Novillo  <dnovillo@google.com>
8015
8016         * c-lang.c (lang_hooks): Remove const qualifier.
8017
8018 2009-09-02  Loren James Rittle  <ljrittle@acm.org>
8019
8020         * doc/install.texi (*-*-freebsd*): Update target information.
8021
8022 2009-09-02  Anatoly Sokolov  <aesok@post.ru>
8023
8024         * hard-reg-set.h (call_fixed_regs): Remove.
8025         * reginfo.c (call_fixed_regs): Remove.
8026         (init_reg_sets_1): Remove initialization of call_fixed_regs.
8027         (globalize_reg): Don't use call_fixed_regs.
8028         * caller-save.c (init_caller_save): Use call_fixed_reg_set instead of
8029         call_fixed_regs.
8030
8031 2009-09-01  Michael Matz  <matz@suse.de>
8032
8033         * expr.h (emit_storent_insn, expand_expr_real_1,
8034         expand_expr_real_2): Declare.
8035         * expr.c (emit_storent_insn, expand_expr_real_1,
8036         expand_expr_real_2): Export.
8037         (store_expr): Setting and evaluating dont_return_target is useless.
8038         (expand_expr_real_1, <case GOTO_EXPR, RETURN_EXPR, SWITCH_EXPR,
8039         LABEL_EXPR and ASM_EXPR>): Move to gcc_unreachable.
8040         * except.c (expand_resx_expr): Rename to ...
8041         (expand_resx_stmt): ... this.  Rewrite to take gimple statement.
8042         * except.h (expand_resx_stmt): Declare.
8043         * stmt.c: Add include gimple.h
8044         (expand_asm_expr): Rename to ...
8045         (expand_asm_stmt): ... this. Rewrite to take gimple statement.
8046         (expand_case): Rewrite to take gimple statement.
8047         * tree.h (expand_asm_stmt): Declare.
8048         (expand_case): Change prototype.
8049         * Makefile.in (stmt.o): Depend on gimple.h.
8050         * builtins.c (expand_builtin_synchronize): Build gimple asm
8051         statement, not an ASM_EXPR.
8052         * cfgexpand.c (gimple_cond_pred_to_tree, set_expr_location_r,
8053         gimple_to_tree, release_stmt_tree): Remove.
8054         (expand_gimple_cond): Don't call gimple_cond_pred_to_tree or
8055         ggc_free, but hold comparison code and operands separately.
8056         Call jumpif_1 and jumpifnot_1 instead of jumpif and jumpifnot.
8057         (expand_call_stmt, expand_gimple_stmt_1,
8058         expand_gimple_stmt): New helpers.
8059         (expand_gimple_tailcall): Don't call gimple_to_tree, expand_expr_stmt,
8060         release_stmt_tree.  Call expand_gimple_stmt instead.
8061         (expand_gimple_basic_block): Ditto.
8062
8063         * calls.c (emit_call_1): Don't look at EH regions here, make
8064         fntree parameter useless.
8065         (expand_call): New local rettype for TREE_TYPE(exp), use it
8066         throughout.  Remove local p, use addr instead.
8067         Don't look at EH regions here.
8068
8069 2009-09-02  Vladimir Makarov  <vmakarov@redhat.com>
8070
8071         * doc/invoke.texi (-fsched-pressure): Document it.
8072         (-fsched-reg-pressure-heuristic): Remove it.
8073
8074         * reload.c (ira.h): Include.
8075         (find_reloads): Add choosing reload on number of small spilled
8076         classes.
8077
8078         * haifa-sched.c (ira.h): Include.
8079         (sched_pressure_p, sched_regno_cover_class, curr_reg_pressure,
8080         saved_reg_pressure, curr_reg_live, saved_reg_live,
8081         region_ref_regs): New variables.
8082         (sched_init_region_reg_pressure_info, mark_regno_birth_or_death,
8083         initiate_reg_pressure_info, setup_ref_regs,
8084         initiate_bb_reg_pressure_info, save_reg_pressure,
8085         restore_reg_pressure, dying_use_p, print_curr_reg_pressure): New
8086         functions.
8087         (setup_insn_reg_pressure_info): New function.
8088         (rank_for_schedule): Add pressure checking and insn issue time.
8089         Remove comparison of insn reg weights.
8090         (ready_sort): Set insn reg pressure info.
8091         (update_register_pressure, setup_insn_max_reg_pressure,
8092         update_reg_and_insn_max_reg_pressure,
8093         sched_setup_bb_reg_pressure_info): New functions.
8094         (schedule_insn): Add code for printing and updating reg pressure info.
8095         (find_set_reg_weight, find_insn_reg_weight): Remove.
8096         (ok_for_early_queue_removal): Do nothing if pressure_only_p.
8097         (debug_ready_list): Print reg pressure info.
8098         (schedule_block): Ditto.  Check insn issue time.
8099         (sched_init): Set up sched_pressure_p.  Allocate and set up some
8100         reg pressure related info.
8101         (sched_finish): Free some reg pressure related info.
8102         (fix_tick_ready): Make insn always ready if pressure_p.
8103         (init_h_i_d): Don't call find_insn_reg_weight.
8104         (haifa_finish_h_i_d): Free insn reg pressure info.
8105
8106         * ira-int.h (ira_hard_regno_cover_class, ira_reg_class_nregs,
8107         ira_memory_move_cost, ira_class_hard_regs,
8108         ira_class_hard_regs_num, ira_no_alloc_regs,
8109         ira_available_class_regs, ira_reg_class_cover_size,
8110         ira_reg_class_cover, ira_class_translate): Move to ira.h.
8111
8112         * ira-lives.c (single_reg_class): Check mode to find how many
8113         registers are necessary for operand.
8114         (ira_implicitly_set_insn_hard_regs): New.
8115
8116         * common.opt (fsched-pressure): New options.
8117         (fsched-reg-pressure-heuristic): Remove.
8118
8119         * ira.c (setup_eliminable_regset): Rename to
8120         ira_setup_eliminable_regset.  Make it external.
8121         (expand_reg_info): Pass cover class to setup_reg_classes.
8122         (ira): Call resize_reg_info instead of allocate_reg_info.
8123
8124         * sched-deps.c: Include ira.h.
8125         (implicit_reg_pending_clobbers, implicit_reg_pending_uses): New.
8126         (create_insn_reg_use, create_insn_reg_set, setup_insn_reg_uses,
8127         reg_pressure_info, insn_use_p, mark_insn_pseudo_birth,
8128         mark_insn_hard_regno_birth, mark_insn_reg_birth,
8129         mark_pseudo_death, mark_hard_regno_death, mark_reg_death,
8130         mark_insn_reg_store, mark_insn_reg_clobber,
8131         setup_insn_reg_pressure_info): New.
8132         (sched_analyze_1): Update implicit_reg_pending_uses.
8133         (sched_analyze_insn): Find implicit sets, uses, clobbers of regs.
8134         Use them to create dependencies.  Set insn reg uses and pressure
8135         info.  Process reg_pending_uses in one place.
8136         (free_deps): Free implicit sets.
8137         (remove_from_deps): Remove implicit sets if necessary.  Check
8138         implicit sets when clearing reg_last_in_use.
8139         (init_deps_global): Clear implicit_reg_pending_clobbers and
8140         implicit_reg_pending_uses.
8141
8142         * ira.h (ira_hard_regno_cover_class, ira_reg_class_nregs,
8143         ira_memory_move_cost, ira_class_hard_regs,
8144         ira_class_hard_regs_num, ira_no_alloc_regs,
8145         ira_available_class_regs, ira_reg_class_cover_size,
8146         ira_reg_class_cover, ira_class_translate): Move from ira-int.h.
8147         (ira_setup_eliminable_regset, ira_set_pseudo_classes,
8148         ira_implicitly_set_insn_hard_regs): New prototypes.
8149
8150         * ira-costs.c (pseudo_classes_defined_p, allocno_p,
8151         cost_elements_num): New variables.
8152         (allocno_costs, total_costs): Rename to costs and
8153         total_allocno_costs.
8154         (COSTS_OF_ALLOCNO): Rename to COSTS.
8155         (allocno_pref): Rename to pref.
8156         (allocno_pref_buffer): Rename to pref_buffer.
8157         (common_classes): Rename to regno_cover_class.
8158         (COST_INDEX): New.
8159         (record_reg_classes): Set allocno attributes only if allocno_p.
8160         (record_address_regs): Ditto.  Use COST_INDEX instead of ALLOCNO_NUM.
8161         (scan_one_insn): Use COST_INDEX and COSTS instead of ALLOCNO_NUM
8162         and COSTS_OF_ALLOCNO.
8163         (print_costs): Rename to print_allocno_costs.
8164         (print_pseudo_costs): New.
8165         (process_bb_node_for_costs): Split into 2 functions with new
8166         function process_bb_for_costs.  Pass BB to process_bb_for_costs.
8167         (find_allocno_class_costs): Rename to find_costs_and_classes.  Add
8168         new parameter dump_file.  Use cost_elements_num instead of
8169         ira_allocnos_num.  Make one iteration if preferred classes were
8170         already calculated for scheduler.  Make 2 versions of code
8171         depending on allocno_p.
8172         (setup_allocno_cover_class_and_costs): Check allocno_p.  Use
8173         regno_cover_class and COSTS instead of common_classes and
8174         COSTS_OF_ALLOCNO.
8175         (init_costs, finish_costs): New.
8176         (ira_costs): Set up allocno_p and cost_elements_num.  Call
8177         init_costs and finish_costs.
8178         (ira_set_pseudo_classes): New.
8179
8180         * rtl.h (allocate_reg_info): Remove.
8181         (resize_reg_info): Change return type.
8182         (reg_cover_class): New.
8183         (setup_reg_classes): Add new parameter.
8184
8185         * sched-int.h (struct deps_reg): New member implicit_sets.
8186         (sched_pressure_p, sched_regno_cover_class): New external definitions.
8187         (INCREASE_BITS): New macro.
8188         (struct reg_pressure_data, struct reg_use_data): New.
8189         (struct _haifa_insn_data): Remove reg_weight.  Add members
8190         reg_pressure, reg_use_list, reg_set_list, and
8191         reg_pressure_excess_cost_change.
8192         (struct deps): New member implicit_sets.
8193         (pressure_p): New variable.
8194         (COVER_CLASS_BITS, INCREASE_BITS): New macros.
8195         (struct reg_pressure_data, struct reg_use_data): New.
8196         (INSN_REG_WEIGHT): Remove.
8197         (INSN_REG_PRESSURE, INSN_MAX_REG_PRESSURE, INSN_REG_USE_LIST,
8198         INSN_REG_SET_LIST, INSN_REG_PRESSURE_EXCESS_COST_CHANGE): New macros.
8199         (sched_init_region_reg_pressure_info,
8200         sched_setup_bb_reg_pressure_info): New prototypes.
8201
8202         * reginfo.c (struct reg_pref): New member coverclass.
8203         (reg_cover_class): New function.
8204         (reginfo_init, pass_reginfo_init): Move after free_reg_info.
8205         (reg_info_size): New variable.
8206         (allocate_reg_info): Make static.  Setup reg_info_size.
8207         (resize_reg_info): Use reg_info_size.  Return flag of resizing.
8208         (setup_reg_classes): Add a new parameter.  Setup cover class too.
8209
8210         * Makefile.in (reload.o, haifa-sched.o, sched-deps.o): Add ira.h to
8211         the dependencies.
8212
8213         * sched-rgn.c (deps_join): Set up implicit_sets.
8214         (schedule_region): Set up region and basic blocks pressure
8215         relative info.
8216
8217         * passes.c (init_optimization_passes): Move
8218         pass_subregs_of_mode_init before pass_sched.
8219
8220 2009-09-02  Martin Jambor  <mjambor@suse.cz>
8221
8222         * tree-sra.c (struct access): New field grp_hint.
8223         (dump_access): Dump grp_hint.
8224         (sort_and_splice_var_accesses): Set grp_hint if a group is read
8225         multiple times.
8226         (analyze_access_subtree): Only scalarize accesses with grp_hint set or
8227         those which have been specifically read and somehow written to.
8228         (propagate_subacesses_accross_link): Set grp_hint of right child and
8229         also possibly of the left child.
8230
8231 2009-09-02  Jakub Jelinek  <jakub@redhat.com>
8232
8233         * tree-object-size.c (addr_object_size): Always use object_size_type
8234         0 or 2 when determining the pointer pointed object size.
8235
8236 2009-09-02  Richard Guenther  <rguenther@suse.de>
8237
8238         Revert
8239         2009-08-31  Richard Guenther  <rguenther@suse.de>
8240
8241         * builtins.c (fold_builtin_memory_op): Use the alias oracle
8242         to query if the memory regions for memmove overlap.
8243         * tree-ssa-alias.c (ptr_deref_may_alias_decl_p): Relax the
8244         asserts on pointers, instead deal with odd trees.
8245         (ptr_derefs_may_alias_p): Likewise.
8246         (refs_may_alias_p_1): Constructor bases also never alias.
8247
8248 2009-08-01  Christian Bruel  <christian.bruel@st.com>
8249
8250         Revert:
8251         2009-07-31  Christian Bruel  <christian.bruel@st.com>
8252         * gcc/config.gcc (sh*-*-elf): test with_libgloss.
8253
8254 2009-09-01  Alexandre Oliva  <aoliva@redhat.com>
8255
8256         * doc/invoke.texi (-fvar-tracking-assignments): New.
8257         (-fvar-tracking-assignments-toggle): New.
8258         (-fdump-final-insns=file): Mark filename as optional.
8259         (--param min-nondebug-insn-uid): New.
8260         (-gdwarf-@{version}): Mention version 4.
8261         * opts.c (common_handle_option): Accept it.
8262         * tree-vrp.c (find_assert_locations_1): Skip debug stmts.
8263         * regrename.c (regrename_optimize): Drop last.  Don't count debug
8264         insns as uses.  Don't reject change because of debug insn.
8265         (do_replace): Reject DEBUG_INSN as chain starter.  Take base_regno
8266         from the chain starter, and check for inexact matches in DEBUG_INSNS.
8267         (scan_rtx_reg): Accept inexact matches in DEBUG_INSNs.
8268         (build_def_use): Simplify and fix the marking of DEBUG_INSNs.
8269         * sched-ebb.c (schedule_ebbs): Skip boundary debug insns.
8270         * fwprop.c (forward_propagate_and_simplify): ...into debug insns.
8271         * doc/gimple.texi (is_gimple_debug): New.
8272         (gimple_debug_bind_p): New.
8273         (is_gimple_call, gimple_assign_cast_p): End sentence with period.
8274         * doc/install.texi (bootstrap-debug): More details.
8275         (bootstrap-debug-big, bootstrap-debug-lean): Document.
8276         (bootstrap-debug-lib): More details.
8277         (bootstrap-debug-ckovw): Update.
8278         (bootstrap-time): New.
8279         * tree-into-ssa.c (mark_def_sites): Skip debug stmts.
8280         (insert_phi_nodes_for): Insert debug stmts.
8281         (rewrite_stmt): Take iterator.  Insert debug stmts.
8282         (rewrite_enter_block): Adjust.
8283         (maybe_replace_use_in_debug_stmt): New.
8284         (rewrite_update_stmt): Use it.
8285         (mark_use_interesting): Return early for debug stmts.
8286         * tree-ssa-loop-im.c (rewrite_bittest): Propagate DEFs into debug
8287         stmts before replacing stmt.
8288         (move_computations_stmt): Likewise.
8289         * ira-conflicts.c (add_copies): Skip debug insns.
8290         * regstat.c (regstat_init_n_sets_and_refs): Discount debug insns.
8291         (regstat_bb_compute_ri): Skip debug insns.
8292         * tree-ssa-threadupdate.c (redirection_block_p): Skip debug stmts.
8293         * tree-ssa-loop-manip.c (find_uses_to_rename_stmt,
8294         check_loop_closed_ssa_stmt): Skip debug stmts.
8295         * tree-tailcall.c (find_tail_calls): Likewise.
8296         * tree-ssa-loop-ch.c (should_duplicate_loop_header_p): Likewise.
8297         * tree.h (MAY_HAVE_DEBUG_STMTS): New.
8298         (build_var_debug_value_stat): Declare.
8299         (build_var_debug_value): Define.
8300         (target_for_debug_bind): Declare.
8301         * reload.c (find_equiv_reg): Skip debug insns.
8302         * rtlanal.c (reg_used_between_p): Skip debug insns.
8303         (side_effects_p): Likewise.
8304         (canonicalize_condition): Likewise.
8305         * ddg.c (create_ddg_dep_from_intra_loop_link): Check that non-debug
8306         insns never depend on debug insns.
8307         (create_ddg_dep_no_link): Likewise.
8308         (add_cross_iteration_register_deps): Use ANTI_DEP for debug insns.
8309         Don't add inter-loop dependencies for debug insns.
8310         (build_intra_loop_deps): Likewise.
8311         (create_ddg): Count debug insns.
8312         * ddg.h (struct ddg::num_debug): New.
8313         (num_backargs): Pair up with previous int field.
8314         * diagnostic.c (diagnostic_report_diagnostic): Skip notes on
8315         -fcompare-debug-second.
8316         * final.c (get_attr_length_1): Skip debug insns.
8317         (rest_of_clean-state): Don't dump CFA_RESTORE_STATE.
8318         * gcc.c (invoke_as): Call compare-debug-dump-opt.
8319         (driver_self_specs): Map -fdump-final-insns to
8320         -fdump-final-insns=..
8321         (get_local_tick): New.
8322         (compare_debug_dump_opt_spec_function): Test for . argument and
8323         compute output name.  Compute temp output spec without flag name.
8324         Compute -frandom-seed.
8325         (OPT): Undef after use.
8326         * cfgloopanal.c (num_loop_insns): Skip debug insns.
8327         (average_num_loop_insns): Likewise.
8328         * params.h (MIN_NONDEBUG_INSN_UID): New.
8329         * gimple.def (GIMPLE_DEBUG): New.
8330         * ipa-reference.c (scan_stmt_for_static_refs): Skip debug stmts.
8331         * auto-inc-dec.c (merge_in_block): Skip debug insns.
8332         (merge_in_block): Fix whitespace.
8333         * toplev.c (flag_var_tracking): Update comment.
8334         (flag_var_tracking_assignments): New.
8335         (flag_var_tracking_assignments_toggle): New.
8336         (process_options): Don't open final insns dump file if we're not
8337         going to write to it.  Compute defaults for var_tracking.
8338         * df-scan.c (df_insn_rescan_debug_internal): New.
8339         (df_uses_record): Handle debug insns.
8340         * haifa-sched.c (ready): Initialize n_debug.
8341         (contributes_to_priority): Skip debug insns.
8342         (dep_list_size): New.
8343         (priority): Use it.
8344         (rank_for_schedule): Likewise.  Schedule debug insns as soon as
8345         they're ready.  Disregard previous debug insns to make decisions.
8346         (queue_insn): Never queue debug insns.
8347         (ready_add, ready_remove_first, ready_remove): Count debug insns.
8348         (schedule_insn): Don't reject debug insns because of issue rate.
8349         (get_ebb_head_tail, no_real_insns_p): Skip boundary debug insns.
8350         (queue_to_ready): Skip and discount debug insns.
8351         (choose_ready): Let debug insns through.
8352         (schedule_block): Check boundary debug insns.  Discount debug
8353         insns, schedule them early.  Adjust whitespace.
8354         (set_priorities): Check for boundary debug insns.
8355         (add_jump_dependencies): Use dep_list_size.
8356         (prev_non_location_insn): New.
8357         (check_cfg): Use it.
8358         * tree-ssa-loop-ivopts.c (find-interesting_users): Skip debug
8359         stmts.
8360         (remove_unused_ivs): Reset debug stmts.
8361         * modulo-sched.c (const_iteration_count): Skip debug insns.
8362         (res_MII): Discount debug insns.
8363         (loop_single_full_bb_p): Skip debug insns.
8364         (sms_schedule): Likewise.
8365         (sms_schedule_by_order): Likewise.
8366         (ps_has_conflicts): Likewise.
8367         * caller-save.c (refmarker_fn): New.
8368         (save_call_clobbered_regs): Replace regs with saved mem in
8369         debug insns.
8370         (mark_referenced_regs): Take pointer, mark and arg.  Adjust.
8371         Call refmarker_fn mark for hardregnos.
8372         (mark_reg_as_referenced): New.
8373         (replace_reg_with_saved_mem): New.
8374         * ipa-pure-const.c (check_stmt): Skip debug stmts.
8375         * cse.c (cse_insn): Canonicalize debug insns.  Skip them when
8376         searching back.
8377         (cse_extended_basic_block): Skip debug insns.
8378         (count_reg_usage): Likewise.
8379         (is_dead_reg): New, split out of...
8380         (set_live_p): ... here.
8381         (insn_live_p): Use it for debug insns.
8382         * tree-stdarg.c (check_all_va_list_escapes): Skip debug stmts.
8383         (execute_optimize_stdarg): Likewise.
8384         * tree-ssa-dom.c (propagate_rhs_into_lhs): Likewise.
8385         * tree-ssa-propagate.c (substitute_and_fold): Don't regard
8386         changes in debug stmts as changes.
8387         * sel-sched.c (moving_insn_creates_bookkeeping_block_p): New.
8388         (moveup_expr): Don't move across debug insns.  Don't move
8389         debug insn if it would create a bookkeeping block.
8390         (moveup_expr_cached): Don't use cache for debug insns that
8391         are heads of blocks.
8392         (compute_av_set_inside_bb): Skip debug insns.
8393         (sel_rank_for_schedule): Schedule debug insns first.  Remove
8394         dead code.
8395         (block_valid_for_bookkeeping_p); Support lax searches.
8396         (create_block_for_bookkeeping): Adjust block numbers when
8397         encountering debug-only blocks.
8398         (find_place_for_bookkeeping): Deal with debug-only blocks.
8399         (generate_bookkeeping_insn): Accept no place to insert.
8400         (remove_temp_moveop_nops): New argument full_tidying.
8401         (prepare_place_to_insert): Deal with debug insns.
8402         (advance_state_on_fence): Debug insns don't start cycles.
8403         (update_boundaries): Take fence as argument.  Deal with
8404         debug insns.
8405         (schedule_expr_on_boundary): No full_tidying on debug insns.
8406         (fill_insns): Deal with debug insns.
8407         (track_scheduled_insns_and_blocks): Don't count debug insns.
8408         (need_nop_to_preserve_insn_bb): New, split out of...
8409         (remove_insn_from_stream): ... this.
8410         (fur_orig_expr_not_found): Skip debug insns.
8411         * rtl.def (VALUE): Move up.
8412         (DEBUG_INSN): New.
8413         * tree-ssa-sink.c (all_immediate_uses_same_place): Skip debug stmts.
8414         (nearest_common_dominator_of_uses): Take debug_stmts argument.
8415         Set it if debug stmts are found.
8416         (statement_sink_location): Skip debug stmts.  Propagate
8417         moving defs into debug stmts.
8418         * ifcvt.c (first_active_insn): Skip debug insns.
8419         (last_active_insns): Likewise.
8420         (cond_exec_process_insns): Likewise.
8421         (noce_process_if_block): Likewise.
8422         (check_cond_move_block): Likewise.
8423         (cond_move_convert_if_block): Likewise.
8424         (block_jumps_and_fallthru_p): Likewise.
8425         (dead_or_predicable): Likewise.
8426         * dwarf2out.c (debug_str_hash_forced): New.
8427         (find_AT_string): Add comment.
8428         (gen_label_for_indirect_string): New.
8429         (get_debug_string_label): New.
8430         (AT_string_form): Use it.
8431         (mem_loc_descriptor): Handle non-TLS symbols.  Handle MINUS , DIV,
8432         MOD, AND, IOR, XOR, NOT, ABS, NEG, and CONST_STRING.  Accept but
8433         discard COMPARE, IF_THEN_ELSE, ROTATE, ROTATERT, TRUNCATE and
8434         several operations that cannot be represented with DWARF opcodes.
8435         (loc_descriptor): Ignore SIGN_EXTEND and ZERO_EXTEND.  Require
8436         dwarf_version 4 for DW_OP_implicit_value and DW_OP_stack_value.
8437         (dwarf2out_var_location): Take during-call mark into account.
8438         (output_indirect_string): Update comment.  Output if there are
8439         label and references.
8440         (prune_indirect_string): New.
8441         (prune_unused_types): Call it if debug_str_hash_forced.
8442         More in dwarf2out.c, from Jakub Jelinek <jakub@redhat.com>:
8443         (dw_long_long_const): Remove.
8444         (struct dw_val_struct): Change val_long_long type to rtx.
8445         (print_die, attr_checksum, same_dw_val_p, loc_descriptor): Adjust for
8446         val_long_long change to CONST_DOUBLE rtx from a long hi/lo pair.
8447         (output_die): Likewise.  Use HOST_BITS_PER_WIDE_INT size of each
8448         component instead of HOST_BITS_PER_LONG.
8449         (output_loc_operands): Likewise.  For const8* assert
8450         HOST_BITS_PER_WIDE_INT rather than HOST_BITS_PER_LONG is >= 64.
8451         (output_loc_operands_raw): For const8* assert HOST_BITS_PER_WIDE_INT
8452         rather than HOST_BITS_PER_LONG is >= 64.
8453         (add_AT_long_long): Remove val_hi and val_lo arguments, add
8454         val_const_double.
8455         (size_of_die): Use HOST_BITS_PER_WIDE_INT size multiplier instead of
8456         HOST_BITS_PER_LONG for dw_val_class_long_long.
8457         (add_const_value_attribute): Adjust add_AT_long_long caller.  Don't
8458         handle TLS SYMBOL_REFs.  If CONST wraps a constant, tail recurse.
8459         (dwarf_stack_op_name): Handle DW_OP_implicit_value and
8460         DW_OP_stack_value.
8461         (size_of_loc_descr, output_loc_operands, output_loc_operands_raw):
8462         Handle DW_OP_implicit_value.
8463         (extract_int): Move prototype earlier.
8464         (mem_loc_descriptor): For SUBREG punt if inner
8465         mode size is wider than DWARF2_ADDR_SIZE.  Handle SIGN_EXTEND
8466         and ZERO_EXTEND by DW_OP_shl and DW_OP_shr{a,}.  Handle
8467         EQ, NE, GT, GE, LT, LE, GTU, GEU, LTU, LEU, SMIN, SMAX, UMIN,
8468         UMAX, SIGN_EXTRACT, ZERO_EXTRACT.
8469         (loc_descriptor): Compare mode size with DWARF2_ADDR_SIZE
8470         instead of Pmode size.
8471         (loc_descriptor): Add MODE argument.  Handle CONST_INT, CONST_DOUBLE,
8472         CONST_VECTOR, CONST, LABEL_REF and SYMBOL_REF if mode != VOIDmode,
8473         attempt to handle other expressions.  Don't handle TLS SYMBOL_REFs.
8474         (concat_loc_descriptor, concatn_loc_descriptor,
8475         loc_descriptor_from_tree_1): Adjust loc_descriptor callers.
8476         (add_location_or_const_value_attribute): Likewise.  For single
8477         location loc_lists attempt to use add_const_value_attribute
8478         for constant decls.  Add DW_AT_const_value even if
8479         NOTE_VAR_LOCATION is VAR_LOCATION with CONSTANT_P or CONST_STRING
8480         in its expression.
8481         * cfgbuild.c (inside_basic_block_p): Handle debug insns.
8482         (control_flow_insn_p): Likewise.
8483         * tree-parloops.c (eliminate_local_variables_stmt): Handle debug stmt.
8484         (separate_decls_in_region_debug_bind): New.
8485         (separate_decls_in_region): Process debug bind stmts afterwards.
8486         * recog.c (verify_changes): Handle debug insns.
8487         (extract_insn): Likewise.
8488         (peephole2_optimize): Skip debug insns.
8489         * dse.c (scan_insn): Skip debug insns.
8490         * sel-sched-ir.c (return_nop_to_pool): Take full_tidying argument.
8491         Pass it on.
8492         (setup_id_for_insn): Handle debug insns.
8493         (maybe_tidy_empty_bb): Adjust whitespace.
8494         (tidy_control_flow): Skip debug insns.
8495         (sel_remove_insn): Adjust for debug insns.
8496         (sel_estimate_number_of_insns): Skip debug insns.
8497         (create_insn_rtx_from_pattern): Handle debug insns.
8498         (create_copy_of_insn_rtx): Likewise.
8499         * sel-sched-.h (sel_bb_end): Declare.
8500         (sel_bb_empty_or_nop_p): New.
8501         (get_all_loop_exits): Use it.
8502         (_eligible_successor_edge_p): Likewise.
8503         (return_nop_to_pool): Adjust.
8504         * tree-eh.c (tre_empty_eh_handler_p): Skip debug stmts.
8505         * ira-lives.c (process_bb_node_lives): Skip debug insns.
8506         * gimple-pretty-print.c (dump_gimple_debug): New.
8507         (dump_gimple_stmt): Use it.
8508         (dump_bb_header): Skip gimple debug stmts.
8509         * regmove.c (optimize_reg_copy_1): Discount debug insns.
8510         (fixup_match_2): Likewise.
8511         (regmove_backward_pass): Likewise.  Simplify combined
8512         replacement.  Handle debug insns.
8513         * function.c (instantiate_virtual_regs): Handle debug insns.
8514         * function.h (struct emit_status): Add x_cur_debug_insn_uid.
8515         * print-rtl.h: Include cselib.h.
8516         (print_rtx): Print VALUEs.  Split out and recurse for VAR_LOCATIONs.
8517         * df.h (df_inns_rescan_debug_internal): Declare.
8518         * gcse.c (alloc_hash_table): Estimate n_insns.
8519         (cprop_insn): Don't regard debug insns as changes.
8520         (bypass_conditional_jumps): Skip debug insns.
8521         (one_pre_gcse_pass): Adjust.
8522         (one_code_hoisting_pass): Likewise.
8523         (compute_ld_motion_mems): Skip debug insns.
8524         (one_cprop_pass): Adjust.
8525         * tree-if-conv.c (tree_if_convert_stmt): Reset debug stmts.
8526         (if_convertible_stmt_p): Handle debug stmts.
8527         * init-regs.c (initialize_uninitialized_regs): Skip debug insns.
8528         * tree-vect-loop.c (vect_is_simple_reduction): Skip debug stmts.
8529         * ira-build.c (create_bb_allocnos): Skip debug insns.
8530         * tree-flow-inline.h (has_zero_uses): Discount debug stmts.
8531         (has_single_use): Likewise.
8532         (single_imm_use): Likewise.
8533         (num_imm_uses): Likewise.
8534         * tree-ssa-phiopt.c (empty_block_p): Skip debug stmts.
8535         * tree-ssa-coalesce.c (build_ssa_conflict_graph): Skip debug stmts.
8536         (create_outofssa_var_map): Likewise.
8537         * lower-subreg.c (adjust_decomposed_uses): New.
8538         (resolve_debug): New.
8539         (decompose_multiword_subregs): Use it.
8540         * tree-dfa.c (find_referenced_vars): Skip debug stmts.
8541         * emit-rtl.c: Include params.h.
8542         (cur_debug_insn_uid): Define.
8543         (set_new_first_and_last_insn): Set cur_debug_insn_uid too.
8544         (copy_rtx_if_shared_1): Handle debug insns.
8545         (reset_used_flags): Likewise.
8546         (set_used_flags): LIkewise.
8547         (get_max_insn_count): New.
8548         (next_nondebug_insn): New.
8549         (prev_nondebug_insn): New.
8550         (make_debug_insn_raw): New.
8551         (emit_insn_before_noloc): Handle debug insns.
8552         (emit_jump_insn_before_noloc): Likewise.
8553         (emit_call_insn_before_noloc): Likewise.
8554         (emit_debug_insn_before_noloc): New.
8555         (emit_insn_after_noloc): Handle debug insns.
8556         (emit_jump_insn_after_noloc): Likewise.
8557         (emit_call_insn_after_noloc): Likewise.
8558         (emit_debug_insn_after_noloc): Likewise.
8559         (emit_insn_after): Take loc from earlier non-debug insn.
8560         (emit_jump_insn_after): Likewise.
8561         (emit_call_insn_after): Likewise.
8562         (emit_debug_insn_after_setloc): New.
8563         (emit_debug_insn_after): New.
8564         (emit_insn_before): Take loc from later non-debug insn.
8565         (emit_jump_insn_before): Likewise.
8566         (emit_call_insn_before): Likewise.
8567         (emit_debug_insn_before_setloc): New.
8568         (emit_debug_insn_before): New.
8569         (emit_insn): Handle debug insns.
8570         (emit_debug_insn): New.
8571         (emit_jump_insn): Handle debug insns.
8572         (emit_call_insn): Likewise.
8573         (emit): Likewise.
8574         (init_emit): Take min-nondebug-insn-uid into account.
8575         Initialize cur_debug_insn_uid.
8576         (emit_copy_of_insn_after): Handle debug insns.
8577         * cfgexpand.c (gimple_assign_rhs_to_tree): Do not overwrite
8578         location of single rhs in place.
8579         (maybe_dump_rtl_for_gimple_stmt): Dump lineno.
8580         (floor_sdiv_adjust): New.
8581         (cell_sdiv_adjust): New.
8582         (cell_udiv_adjust): New.
8583         (round_sdiv_adjust): New.
8584         (round_udiv_adjust): New.
8585         (wrap_constant): Moved from cselib.
8586         (unwrap_constant): New.
8587         (expand_debug_expr): New.
8588         (expand_debug_locations): New.
8589         (expand_gimple_basic_block): Drop hiding redeclaration.  Expand
8590         debug bind stmts.
8591         (gimple_expand_cfg): Expand debug locations.
8592         * cselib.c: Include tree-pass.h.
8593         (struct expand_value_data): New.
8594         (cselib_record_sets_hook): New.
8595         (PRESERVED_VALUE_P, LONG_TERM_PRESERVED_VALUE_P): New.
8596         (cselib_clear_table): Move, and implemnet in terms of...
8597         (cselib_reset_table_with_next_value): ... this.
8598         (cselib_get_next_unknown_value): New.
8599         (discard_useless_locs): Don't discard preserved values.
8600         (cselib_preserve_value): New.
8601         (cselib_preserved_value_p): New.
8602         (cselib_preserve_definitely): New.
8603         (cselib_clear_preserve): New.
8604         (cselib_preserve_only_values): New.
8605         (new_cselib_val): Take rtx argument.  Dump it in details.
8606         (cselib_lookup_mem): Adjust.
8607         (expand_loc): Take regs_active in struct.  Adjust.  Silence
8608         dumps unless details are requested.
8609         (cselib_expand_value_rtx_cb): New.
8610         (cselib_expand_value_rtx): Rename and reimplment in terms of...
8611         (cselib_expand_value_rtx_1): ... this.  Adjust.  Silence dumps
8612         without details.  Copy more subregs.  Try to resolve values
8613         using a callback.  Wrap constants.
8614         (cselib_subst_to_values): Adjust.
8615         (cselib_log_lookup): New.
8616         (cselib_lookup): Call it.
8617         (cselib_invalidate_regno): Don't count preserved values as useless.
8618         (cselib_invalidate_mem): Likewise.
8619         (cselib_record_set): Likewise.
8620         (struct set): Renamed to cselib_set, moved to cselib.h.
8621         (cselib_record_sets): Adjust.  Call hook.
8622         (cselib_process_insn): Reset table when it would be cleared.
8623         (dump_cselib_val): New.
8624         (dump_cselib_table): New.
8625         * tree-cfgcleanup.c (tree_forwarded_block_p): Skip debug stmts.
8626         (remove_forwarder_block): Support moving debug stmts.
8627         * cselib.h (cselib_record_sets_hook): Declare.
8628         (cselib_expand_callback): New type.
8629         (cselib_expand_value_rtx_cb): Declare.
8630         (cselib_reset_table_with_next_value): Declare.
8631         (cselib_get_next_unknown_value): Declare.
8632         (cselib_preserve_value): Declare.
8633         (cselib_preserved_value_p): Declare.
8634         (cselib_preserve_only_values): Declare.
8635         (dump_cselib_table): Declare.
8636         * cfgcleanup.c (flow_find_cross_jump): Skip debug insns.
8637         (try_crossjump_to_edge): Likewise.
8638         (delete_unreachable_blocks): Remove dominant GIMPLE blocks after
8639         dominated blocks when debug stmts are present.
8640         * simplify-rtx.c (delegitimize_mem_from_attrs): New.
8641         * tree-ssa-live.c (remove_unused_locals): Skip debug stmts.
8642         (set_var_live_on_entry): Likewise.
8643         * loop-invariant.c (find_invariants_bb): Skip debug insns.
8644         * cfglayout.c (curr_location, last_location): Make static.
8645         (set_curr_insn_source_location): Don't avoid bouncing.
8646         (get_curr_insn_source_location): New.
8647         (get_curr_insn_block): New.
8648         (duplicate_insn_chain): Handle debug insns.
8649         * tree-ssa-forwprop.c (forward_propagate_addr_expr): Propagate
8650         into debug stmts.
8651         * common.opt (fcompare-debug): Move to sort order.
8652         (fdump-unnumbered-links): Likewise.
8653         (fvar-tracking-assignments): New.
8654         (fvar-tracking-assignments-toggle): New.
8655         * tree-ssa-dce.c (mark_stmt_necessary): Don't mark blocks
8656         because of debug stmts.
8657         (mark_stmt_if_obviously_necessary): Mark debug stmts.
8658         (eliminate_unnecessary_stmts): Walk dominated blocks before
8659         dominators.
8660         * tree-ssa-ter.c (find_replaceable_in_bb): Skip debug stmts.
8661         * ira.c (memref_used_between_p): Skip debug insns.
8662         (update_equiv_regs): Likewise.
8663         * sched-deps.c (sd_lists_size): Accept empty list.
8664         (sd_init_insn): Mark debug insns.
8665         (sd_finish_insn): Unmark them.
8666         (sd_add_dep): Reject non-debug deps on debug insns.
8667         (fixup_sched_groups): Give debug insns group treatment.
8668         Skip debug insns.
8669         (sched_analyze_reg): Don't mark debug insns for sched before call.
8670         (sched_analyze_2): Handle debug insns.
8671         (sched_analyze_insn): Compute next non-debug insn.  Handle debug
8672         insns.
8673         (deps_analyze_insn): Handle debug insns.
8674         (deps_start_bb): Skip debug insns.
8675         (init_deps): Initialize last_debug_insn.
8676         * tree-ssa.c (target_for_debug_bind): New.
8677         (find_released_ssa_name): New.
8678         (propagate_var_def_into_debug_stmts): New.
8679         (propagate_defs_into_debug_stmts): New.
8680         (verify_ssa): Skip debug bind stmts without values.
8681         (warn_uninialized_vars): Skip debug stmts.
8682         * target-def.h (TARGET_DELEGITIMIZE_ADDRESS): Set default.
8683         * rtl.c (rtx_equal_p_cb): Handle VALUEs.
8684         (rtx_equal_p): Likewise.
8685         * ira-costs.c (scan_one_insn): Skip debug insns.
8686         (process_bb_node_for_hard_reg_moves): Likewise.
8687         * rtl.h (DEBUG_INSN_P): New.
8688         (NONDEBUG_INSN_P): New.
8689         (MAY_HAVE_DEBUG_INSNS): New.
8690         (INSN_P): Accept debug insns.
8691         (RTX_FRAME_RELATED_P): Likewise.
8692         (INSN_DELETED_P): Likewise
8693         (PAT_VAR_LOCATION_DECL): New.
8694         (PAT_VAR_LOCATION_LOC): New.
8695         (PAT_VAR_OCATION_STATUS): New.
8696         (NOTE_VAR_LOCATION_DECL): Reimplement.
8697         (NOTE_VAR_LOCATION_LOC): Likewise.
8698         (NOTE_VAR_LOCATION_STATUS): Likewise.
8699         (INSN_VAR_LOCATION): New.
8700         (INSN_VAR_LOCATION_DECL): New.
8701         (INSN_VAR_LOCATION_LOC): New.
8702         (INSN_VAR_LOCATION_STATUS): New.
8703         (gen_rtx_UNKNOWN_VAR_LOC): New.
8704         (VAR_LOC_UNKNOWN_P): New.
8705         (NOTE_DURING_CALL_P): New.
8706         (SCHED_GROUP_P): Accept debug insns.
8707         (emit_debug_insn_before): Declare.
8708         (emit_debug_insn_before_noloc): Declare.
8709         (emit_debug_insn_beore_setloc): Declare.
8710         (emit_debug_insn_after): Declare.
8711         (emit_debug_insn_after_noloc): Declare.
8712         (emit_debug_insn_after_setloc): Declare.
8713         (emit_debug_insn): Declare.
8714         (make_debug_insn_raw): Declare.
8715         (prev_nondebug_insn): Declare.
8716         (next_nondebug_insn): Declare.
8717         (delegitimize_mem_from_attrs): Declare.
8718         (get_max_insn_count): Declare.
8719         (wrap_constant): Declare.
8720         (unwrap_constant): Declare.
8721         (get_curr_insn_source_location): Declare.
8722         (get_curr_insn_block): Declare.
8723         * tree-inline.c (insert_debug_decl_map): New.
8724         (processing_debug_stmt): New.
8725         (remap_decl): Don't create new mappings in debug stmts.
8726         (remap_gimple_op_r): Don't add references in debug stmts.
8727         (copy_tree_body_r): Likewise.
8728         (remap_gimple_stmt): Handle debug bind stmts.
8729         (copy_bb): Skip debug stmts.
8730         (copy_edges_for_bb): Likewise.
8731         (copy_debug_stmt): New.
8732         (copy_debug_stmts): New.
8733         (copy_body): Copy debug stmts at the end.
8734         (insert_init_debug_bind): New.
8735         (insert_init_stmt): Take id.  Skip and emit debug stmts.
8736         (setup_one_parameter): Remap variable earlier, register debug mapping.
8737         (estimate_num_insns): Skip debug stmts.
8738         (expand_call_inline): Preserve debug_map.
8739         (optimize_inline_calls): Check for no debug_stmts left-overs.
8740         (unsave_expr_now): Preserve debug_map.
8741         (copy_gimple_seq_and_replace_locals): Likewise.
8742         (tree_function_versioning): Check for no debug_stmts left-overs.
8743         Init and destroy debug_map as needed.  Split edges unconditionally.
8744         (build_duplicate_type): Init and destroy debug_map as needed.
8745         * tree-inline.h: Include gimple.h instead of pointer-set.h.
8746         (struct copy_body_data): Add debug_stmts and debug_map.
8747         * sched-int.h (struct ready_list): Add n_debug.
8748         (struct deps): Add last_debug_insn.
8749         (DEBUG_INSN_SCHED_P): New.
8750         (BOUNDARY_DEBUG_INSN_P): New.
8751         (SCHEDULE_DEBUG_INSN_P): New.
8752         (sd_iterator_cond): Accept empty list.
8753         * combine.c (create_log_links): Skip debug insns.
8754         (combine_instructions): Likewise.
8755         (cleanup_auto_inc_dec): New.  From Jakub Jelinek: Make sure the
8756         return value is always unshared.
8757         (struct rtx_subst_pair): New.
8758         (auto_adjust_pair): New.
8759         (propagate_for_debug_subst): New.
8760         (propagate_for_debug): New.
8761         (try_combine): Skip debug insns.  Propagate removed defs into
8762         debug insns.
8763         (next_nonnote_nondebug_insn): New.
8764         (distribute_notes): Use it.  Skip debug insns.
8765         (distribute_links): Skip debug insns.
8766         * tree-outof-ssa.c (set_location_for_edge): Likewise.
8767         * resource.c (mark_target_live_regs): Likewise.
8768         * var-tracking.c: Include cselib.h and target.h.
8769         (enum micro_operation_type): Add MO_VAL_USE, MO_VAL_LOC, and
8770         MO_VAL_SET.
8771         (micro_operation_type_name): New.
8772         (enum emit_note_where): Add EMIT_NOTE_AFTER_CALL_INSN.
8773         (struct micro_operation_def): Update comments.
8774         (decl_or_value): New type.  Use instead of decls.
8775         (struct emit_note_data_def): Add vars.
8776         (struct attrs_def): Use decl_or_value.
8777         (struct variable_tracking_info_def): Add permp, flooded.
8778         (struct location_chain_def): Update comment.
8779         (struct variable_part_def): Use decl_or_value.
8780         (struct variable_def): Make var_part a variable length array.
8781         (valvar_pool): New.
8782         (scratch_regs): New.
8783         (cselib_hook_called): New.
8784         (dv_is_decl_p): New.
8785         (dv_is_value_p): New.
8786         (dv_as_decl): New.
8787         (dv_as_value): New.
8788         (dv_as_opaque): New.
8789         (dv_onepart_p): New.
8790         (dv_pool): New.
8791         (IS_DECL_CODE): New.
8792         (check_value_is_not_decl): New.
8793         (dv_from_decl): New.
8794         (dv_from_value): New.
8795         (dv_htab_hash): New.
8796         (variable_htab_hash): Use it.
8797         (variable_htab_eq): Support values.
8798         (variable_htab_free): Free from the right pool.
8799         (attrs_list_member, attrs_list_insert): Use decl_or_value.
8800         (attrs_list_union): Adjust.
8801         (attrs_list_mpdv_union): New.
8802         (tie_break_pointers): New.
8803         (canon_value_cmp): New.
8804         (unshare_variable): Return possibly-modified slot.
8805         (vars_copy_1): Adjust.
8806         (var_reg_decl_set): Adjust.  Split out of...
8807         (var_reg_set): ... this.
8808         (get_init_value): Adjust.
8809         (var_reg_delete_and_set): Adjust.
8810         (var_reg_delete): Adjust.
8811         (var_regno_delete): Adjust.
8812         (var_mem_decl_set): Split out of...
8813         (var_mem_set): ... this.
8814         (var_mem_delete_and_set): Adjust.
8815         (var_mem_delete): Adjust.
8816         (val_store): New.
8817         (val_reset): New.
8818         (val_resolve): New.
8819         (variable_union): Adjust.  Speed up merge of 1-part vars.
8820         (variable_canonicalize): Use unshared slot.
8821         (VALUED_RECURSED_INTO): New.
8822         (find_loc_in_1pdv): New.
8823         (struct dfset_merge): New.
8824         (insert_into_intersection): New.
8825         (intersect_loc_chains): New.
8826         (loc_cmp): New.
8827         (canonicalize_loc_order_check): New.
8828         (canonicalize_values_mark): New.
8829         (canonicalize_values_star): New.
8830         (variable_merge_over_cur): New.
8831         (variable_merge_over_src): New.
8832         (dataflow_set_merge): New.
8833         (dataflow_set_equiv_regs): New.
8834         (remove_duplicate_values): New.
8835         (struct dfset_post_merge): New.
8836         (variable_post_merge_new_vals): New.
8837         (variable_post_merge_perm_vals): New.
8838         (dataflow_post_merge_adjust): New.
8839         (find_mem_expr_in_1pdv): New.
8840         (dataflow_set_preserve_mem_locs): New.
8841         (dataflow_set_remove_mem_locs): New.
8842         (dataflow_set_clear_at_call): New.
8843         (onepart_variable_different_p): New.
8844         (variable_different_p): Use it.
8845         (dataflow_set_different_1): Adjust.  Make detailed dump more verbose.
8846         (track_expr_p): Add need_rtl parameter.  Don't generate rtl
8847         if not needed.
8848         (track_loc_p): Pass it true.
8849         (struct count_use_info): New.
8850         (find_use_val): New.
8851         (replace_expr_with_values): New.
8852         (log_op_type): New.
8853         (use_type): New, partially split out of...
8854         (count_uses): ... this.  Count new micro-ops.
8855         (count_uses_1): Adjust.
8856         (count_stores): Adjust.
8857         (count_with_sets): New.
8858         (VAL_NEEDS_RESOLUTION): New.
8859         (VAL_HOLDS_TRACK_EXPR): New.
8860         (VAL_EXPR_IS_COPIED): New.
8861         (VAL_EXPR_IS_CLOBBERED): New.
8862         (add_uses): Adjust.  Generate new micro-ops.
8863         (add_uses_1): Adjust.
8864         (add_stores): Generate new micro-ops.
8865         (add_with_sets): New.
8866         (find_src_status): Adjust.
8867         (find_src_set_src): Adjust.
8868         (compute_bb_dataflow): Use dataflow_set_clear_at_call.
8869         Handle new micro-ops.  Canonicalize value equivalances.
8870         (vt_find_locations): Compute total size of hash tables for
8871         dumping.  Perform merge for var-tracking-assignments.  Don't
8872         disregard single-block loops.
8873         (dump_attrs_list): Handle decl_or_value.
8874         (dump_variable): Take variable.  Deal with decl_or_value.
8875         (dump_variable_slot): New.
8876         (dump_vars): Use it.
8877         (dump_dataflow_sets): Adjust.
8878         (set_slot_part): New, extended to support one-part variables
8879         after splitting out of...
8880         (set_variable_part): ... this.
8881         (clobber_slot_part): New, split out of...
8882         (clobber_variable_part): ... this.
8883         (delete_slot_part): New, split out of...
8884         (delete_variable_part): .... this.
8885         (check_wrap_constant): New.
8886         (vt_expand_loc_callback): New.
8887         (vt_expand_loc): New.
8888         (emit_note_insn_var_location): Adjust.  Handle values.  Handle
8889         EMIT_NOTE_AFTER_CALL_INSN.
8890         (emit_notes_for_differences_1): Adjust.  Handle values.
8891         (emit_notes_for_differences_2): Likewise.
8892         (emit_notes_for_differences): Adjust.
8893         (emit_notes_in_bb): Take pointer to set.  Emit AFTER_CALL_INSN notes.
8894         Adjust.  Handle new micro-ops.
8895         (vt_add_function_parameters): Adjust.  Create and bind values.
8896         (vt_initialize): Adjust.  Initialize scratch_regs and
8897         valvar_pool, flooded and perm..  Initialize and use cselib.  Log
8898         operations.  Move some code to count_with_sets and add_with_sets.
8899         (delete_debug_insns): New.
8900         (vt_debug_insns_local): New.
8901         (vt_finalize): Release permp, valvar_pool, scratch_regs.  Finish
8902         cselib.
8903         (var_tracking_main): If var-tracking-assignments is enabled
8904         but var-tracking isn't, delete debug insns and leave.  Likewise
8905         if we exceed limits or fail the stack adjustments tests, and
8906         after all var-tracking processing.
8907         More in var-tracking, from Jakub Jelinek <jakub@redhat.com>:
8908         (dataflow_set): Add traversed_vars.
8909         (value_chain, const_value_chain): New typedefs.
8910         (value_chain_pool, value_chains): New variables.
8911         (value_chain_htab_hash, value_chain_htab_eq, add_value_chain,
8912         add_value_chains, add_cselib_value_chains, remove_value_chain,
8913         remove_value_chains, remove_cselib_value_chains): New functions.
8914         (shared_hash_find_slot_unshare_1, shared_hash_find_slot_1,
8915         shared_hash_find_slot_noinsert_1, shared_hash_find_1): New
8916         static inlines.
8917         (shared_hash_find_slot_unshare, shared_hash_find_slot,
8918         shared_hash_find_slot_noinsert, shared_hash_find): Update.
8919         (dst_can_be_shared): New variable.
8920         (unshare_variable): Unshare set->vars if shared, use shared_hash_*.
8921         Clear dst_can_be_shared.  If set->traversed_vars is non-NULL and
8922         different from set->vars, look up slot again instead of using the
8923         passed in slot.
8924         (dataflow_set_init): Initialize traversed_vars.
8925         (variable_union): Use shared_hash_*.  Use initially NO_INSERT
8926         lookup if set->vars is shared.  Don't keep slot cleared before
8927         calling unshare_variable.  Unshare set->vars if needed.  Adjust
8928         unshare_variable callers.  Clear dst_can_be_shared if needed.
8929         Even ->refcount == 1 vars must be unshared if set->vars is shared
8930         and var needs to be modified.
8931         (dataflow_set_union): Set traversed_vars during canonicalization.
8932         (VALUE_CHANGED, DECL_CHANGED): Define.
8933         (set_dv_changed, dv_changed_p): New static inlines.
8934         (track_expr_p): Clear DECL_CHANGED.
8935         (dump_dataflow_sets): Set it.
8936         (variable_was_changed): Call set_dv_changed.
8937         (emit_note_insn_var_location): Likewise.
8938         (changed_variables_stack): New variable.
8939         (check_changed_vars_1, check_changed_vars_2): New functions.
8940         (emit_notes_for_changes): Do nothing if changed_variables is
8941         empty.  Traverse changed_variables with check_changed_vars_1,
8942         call check_changed_vars_2 on each changed_variables_stack entry.
8943         (emit_notes_in_bb): Add SET argument.  Just clear it at the
8944         beginning, use it instead of local &set, don't destroy it at the end.
8945         (vt_emit_notes): Call dataflow_set_clear early on all
8946         VTI(bb)->out sets, never use them, instead use emit_notes_in_bb
8947         computed set, dataflow_set_clear also VTI(bb)->in when we are
8948         done with the basic block.  Initialize changed_variables_stack,
8949         free it afterwards.  If ENABLE_CHECKING verify that after noting
8950         differences to an empty set value_chains hash table is empty.
8951         (vt_initialize): Initialize value_chains and value_chain_pool.
8952         (vt_finalize): Delete value_chains htab, free value_chain_pool.
8953         (variable_tracking_main): Call dump_dataflow_sets before calling
8954         vt_emit_notes, not after it.
8955         * tree-flow.h (propagate_defs_into_debug_stmts): Declare.
8956         (propagate_var_def_into_debug_stmts): Declare.
8957         * df-problems.c (df_lr_bb_local_compute): Skip debug insns.
8958         (df_set_note): Reject debug insns.
8959         (df_whole_mw_reg_dead_p): Take added_notes_p argument.  Don't
8960         add notes to debug insns.
8961         (df_note_bb_compute): Adjust.  Likewise.
8962         (df_simulate_uses): Skip debug insns.
8963         (df_simulate_initialize_backwards): Likewise.
8964         * reg-stack.c (subst_stack_regs_in_debug_insn): New.
8965         (subst_stack_regs_pat): Reject debug insns.
8966         (convert_regs_1): Handle debug insns.
8967         * Makefile.in (TREE_INLINE_H): Take pointer-set.h from GIMPLE_H.
8968         (print-rtl.o): Depend on cselib.h.
8969         (cselib.o): Depend on TREE_PASS_H.
8970         (var-tracking.o): Depend on cselib.h and TARGET_H.
8971         * sched-rgn.c (rgn_estimate_number_of_insns): Discount debug insns.
8972         (init_ready_list): Skip boundary debug insns.
8973         (add_branch_dependences): Skip debug insns.
8974         (free_block_dependencies): Check for blocks with only debug insns.
8975         (compute_priorities): Likewise.
8976         * gimple.c (gss_for_code): Handle GIMPLE_DEBUG.
8977         (gimple_build_with_ops_stat): Take subcode as unsigned.  Adjust
8978         all callers.
8979         (gimple_build_debug_bind_stat): New.
8980         (empty_body_p): Skip debug stmts.
8981         (gimple_has_side_effects): Likewise.
8982         (gimple_rhs_has_side_effects): Likewise.
8983         * gimple.h (enum gimple_debug_subcode, GIMPLE_DEBUG_BIND): New.
8984         (gimple_build_debug_bind_stat): Declare.
8985         (gimple_build_debug_bind): Define.
8986         (is_gimple_debug): New.
8987         (gimple_debug_bind_p): New.
8988         (gimple_debug_bind_get_var): New.
8989         (gimple_debug_bind_get_value): New.
8990         (gimple_debug_bind_get_value_ptr): New.
8991         (gimple_debug_bind_set_var): New.
8992         (gimple_debug_bind_set_value): New.
8993         (GIMPLE_DEBUG_BIND_NOVALUE): New internal temporary macro.
8994         (gimple_debug_bind_reset_value): New.
8995         (gimple_debug_bind_has_value_p): New.
8996         (gsi_next_nondebug): New.
8997         (gsi_prev_nondebug): New.
8998         (gsi_start_nondebug_bb): New.
8999         (gsi_last_nondebug_bb): New.
9000         * sched-vis.c (print_pattern): Handle VAR_LOCATION.
9001         (print_insn): Handle DEBUG_INSN.
9002         * tree-cfg.c (remove_bb): Walk stmts backwards.  Let loc
9003         of first insn prevail.
9004         (first_stmt): Skip debug stmts.
9005         (first_non_label_stmt): Likewise.
9006         (last_stmt): Likewise.
9007         (has_zero_uses_1): New.
9008         (single_imm_use_1): New.
9009         (verify_gimple_debug): New.
9010         (verify_types_in_gimple_stmt): Handle debug stmts.
9011         (verify_stmt): Likewise.
9012         (debug_loop_num): Skip debug stmts.
9013         (remove_edge_and_dominated_blocks): Remove dominators last.
9014         * tree-ssa-reasssoc.c (rewrite_expr_tree): Propagate into debug stmts.
9015         (linearize_expr): Likewise.
9016         * config/i386/i386.c (ix86_delegitimize_address): Call
9017         default implementation.
9018         * config/ia64/ia64.c (ia64_safe_itanium_class): Handle debug insns.
9019         (group_barrier_needed): Skip debug insns.
9020         (emit_insn_group_barriers): Likewise.
9021         (emit_all_insn_group_barriers): Likewise.
9022         (ia64_variable_issue): Handle debug insns.
9023         (ia64_dfa_new_cycle): Likewise.
9024         (final_emit_insn_group_barriers): Skip debug insns.
9025         (ia64_dwarf2out_def_steady_cfa): Take frame argument.  Don't
9026         def cfa without frame.
9027         (process_set): Likewise.
9028         (process_for_unwind_directive): Pass frame on.
9029         * config/rs6000/rs6000.c (TARGET_DELEGITIMIZE_ADDRESS): Define.
9030         (rs6000_delegitimize_address): New.
9031         (rs6000_debug_adjust_cost): Handle debug insns.
9032         (is_microcoded_insn): Likewise.
9033         (is_cracked_insn): Likewise.
9034         (is_nonpipeline_insn): Likewise.
9035         (insn_must_be_first_in_group): Likewise.
9036         (insn_must_be_last_in_group): Likewise.
9037         (force_new_group): Likewise.
9038         * cfgrtl.c (rtl_split_block): Emit INSN_DELETED note if block
9039         contains only debug insns.
9040         (rtl_merge_blocks): Skip debug insns.
9041         (purge_dead_edges): Likewise.
9042         (rtl_block_ends_with_call_p): Skip debug insns.
9043         * dce.c (deletable_insn_p): Handle VAR_LOCATION.
9044         (mark_reg_dependencies): Skip debug insns.
9045         * params.def (PARAM_MIN_NONDEBUG_INSN_UID): New.
9046         * tree-ssanames.c (release_ssa_name): Propagate def into debug stmts.
9047         * tree-ssa-threadedge.c
9048         (record_temporary_equivalences_from_stmts): Skip debug stmts.
9049         * regcprop.c (replace_oldest_value_addr): Skip debug insns.
9050         (replace_oldest_value_mem): Use ALL_REGS for debug insns.
9051         (copyprop_hardreg_forward_1): Handle debug insns.
9052         * reload1.c (reload): Skip debug insns.  Replace unassigned
9053         pseudos in debug insns with their equivalences.
9054         (eliminate_regs_in_insn): Skip debug insns.
9055         (emit_input_reload_insns): Skip debug insns at first, adjust
9056         them later.
9057         * tree-ssa-operands.c (add_virtual_operand): Reject debug stmts.
9058         (get_indirect_ref_operands): Pass opf_no_vops on.
9059         (get_expr_operands): Likewise.  Skip debug stmts.
9060         (parse_ssa_operands): Scan debug insns with opf_no_vops.
9061
9062 2009-09-01  Richard Henderson  <rth@redhat.com>
9063
9064         * tree-ssa-ccp.c (ccp_initialize): Make sure to simulate
9065         stmt_ends_pp_p statements at least once.
9066         * tree-vrp.c (vrp_initialize): Likewise.
9067         (vrp_visit_stmt): Be prepared for non-interesting stmts.
9068
9069 2009-09-01  Dodji Seketeli  <dodji@redhat.com>
9070
9071         PR bootstrap/41205
9072         Fix AIX bootstrap after PR debug/30161
9073         * dwarf2out.c (make_ith_pack_parameter_name): Don't used strnlen
9074         that is a GNU extension.
9075         (tmpl_value_parm_die_table): Move the definition of this global
9076         outside #ifdef DWARF2_DEBUGGING_INFO region.
9077
9078 2009-09-01  Richard Guenther  <rguenther@suse.de>
9079
9080         * tree.c (tree_expr_size): New function.
9081         * tree.h (tree_expr_size): Declare.
9082         * rtlanal.c (rtx_addr_can_trap_p_1): Adjust comment.
9083         * builtins.c (fold_builtin_memory_op): Use tree_expr_size.
9084         * langhooks.c (lhd_expr_size): Remove.
9085         * langhooks.h (struct lang_hooks): Remove expr_size.
9086         * explow.c (expr_size): Use tree_expr_size.
9087         (int_expr_size): Likewise.
9088         * langhooks-def.h (lhd_expr_size): Remove.
9089         (LANG_HOOKS_EXPR_SIZE): Likewise.
9090         (LANG_HOOKS_INITIALIZER): Adjust.
9091
9092 2009-09-01  Richard Guenther  <rguenther@suse.de>
9093
9094         * tree-flow.h (mark_addressable): Move declaration ...
9095         * tree.h (mark_addressable): ... here.
9096         * stmt.c (expand_asm_operands): Use mark_addressable, not
9097         lang_hooks.mark_addressable.
9098         * langhooks-def.h (LANG_HOOKS_INITIALIZER): Remove
9099         LANG_HOOKS_MARK_ADDRESSABLE.
9100         * langhooks.h (struct lang_hooks): Remove mark_addressable langhook.
9101         * c-objc-common.h (LANG_HOOKS_MARK_ADDRESSABLE): Remove.
9102
9103 2009-08-31  Chris Demetriou  <cgd@google.com>
9104
9105         * config/i386/i386.c (ix86_vectorize_builtin_conversion): Never
9106         vectorize if not TARGET_SSE2.
9107
9108 2009-08-31  DJ Delorie  <dj@redhat.com>
9109
9110         * config/mep/mep.h (FUNCTION_ARG_REGNO_P): Exclude coprocessor
9111         registers if no coprocessor is enabled.
9112
9113 2009-08-31  Dodji Seketeli  <dodji@redhat.com>
9114
9115         PR debug/30161
9116         * cgraph.h (cgraph_get_node): Declare ...
9117         * cgraph.c (cgraph_get_node): ... new function.
9118         * dwarf2out.c (gen_generic_params_dies,
9119         generic_parameter_die, tree_add_const_value_attribute_for_decl,
9120         make_ith_pack_parameter_name,
9121         append_entry_to_tmpl_value_parm_die_table,
9122         gen_remaining_tmpl_value_param_die_attribute): New functions.
9123         (gen_subprogram_die): Generate debug info for template parameters
9124         if debug info level is higher than DINFO_LEVEL_TERSE.
9125         Use tree_add_const_value_attribute_for_decl instead of
9126         tree_add_const_value_attribute.
9127         (gen_const_die): Use tree_add_const_value_attribute_for_decl
9128         instead of tree_add_const_value_attribute.
9129         (gen_struct_or_union_type_die): Generate debug
9130         info for template parameters if debug info level is higher than
9131         DINFO_LEVEL_TERSE.
9132         (tree_add_const_value_attribute): Handle integral and pointer
9133         constants. Update comment.
9134         (dwarf_tag_name): Support DW_TAG_GNU_template_template_param.
9135         (dwarf_attr_name): Support DW_AT_GNU_template_name.
9136         (reference_to_unused): Fix thinko. Remove redundant predicates from
9137         tests.
9138         (tree_add_const_value_attribute): Make this work for constant
9139         expressions only.
9140         tree_add_const_value_attribute_for_decl is to be used for variable
9141         DECLs now.
9142         (add_location_or_const_value_attribute): Use
9143         tree_add_const_value_attribute_for_decl now.
9144         (dwarf2out_finish): Emit the DW_AT_const_value attribute of
9145         DW_TAG_template_value_param DIEs after function DIEs have been
9146         emitted.
9147         * langhooks.h (lang_hooks_for_types): Add
9148         get_argument_pack_elems.
9149         (lang_hooks_for_decls): Add generic_generic_parameter_decl_p.
9150         (lang_hooks): Added get_innermost_generic_parms,
9151         get_innermost_generic_args.
9152         * langhooks-def.h (LANG_HOOKS_GET_INNERMOST_GENERIC_PARMS,
9153         LANG_HOOKS_GET_INNERMOST_GENERIC_ARGS,
9154         LANG_HOOKS_GET_ARGUMENT_PACK_ELEMS,
9155         LANG_HOOKS_GENERIC_GENERIC_PARAMETER_DECL_P): New language hooks.
9156
9157 2009-08-31  DJ Delorie  <dj@redhat.com>
9158
9159         * config/mep/mep.c (machine_function): Add frame_locked flag.  Set
9160         it once we start generating the prologue or epilogue.
9161         (mep_call_saves_register): If the frame is locked, re-use
9162         cached values.
9163         (mep_assign_save_slots): New, broken out from mep_expand_prologue.
9164         (mep_expand_prologue): Call it.
9165         (mep_expand_epilogue): Likewise.
9166         (mep_start_function): Use the same logic as mep_expand_prologue.
9167         (mep_pass_by_reference): Make logic more readable.
9168         (mep_return_in_memory): Zero-sized objects are passed in memory.
9169         (mep_reorg_noframe): Make sure we have accurate REG_DEAD notes.
9170
9171 2009-08-31  Richard Guenther  <rguenther@suse.de>
9172
9173         * builtins.c (fold_builtin_memory_op): Use the alias oracle
9174         to query if the memory regions for memmove overlap.
9175         * tree-ssa-alias.c (ptr_deref_may_alias_decl_p): Relax the
9176         asserts on pointers, instead deal with odd trees.
9177         (ptr_derefs_may_alias_p): Likewise.
9178         (refs_may_alias_p_1): Constructor bases also never alias.
9179
9180 2009-08-31  Gerald Pfeifer  <gerald@pfeifer.com>
9181
9182         * doc/install.texi (Final install): Adjust reference on where to
9183         order printed manuals.
9184
9185 2009-08-30  Olivier Hainque  <hainque@adacore.com>
9186
9187         * dwarf2out.c (switch_to_frame_table_section): Move
9188         definition prior to first use.
9189
9190 2009-08-30  Richard Guenther  <rguenther@suse.de>
9191
9192         PR tree-optimization/41186
9193         * tree-ssa-alias.c (ptr_deref_may_alias_ref_p): Remove.
9194         (ao_ref_init_from_ptr_and_size): New function.
9195         (ref_maybe_used_by_call_p_1): Be more precise tracking
9196         used ranges for builtin functions.
9197         (ref_maybe_used_by_call_p): Adjust.
9198         (call_may_clobber_ref_p_1): Be more precise tracking clobbered
9199         ranges for builtin functions.
9200         * tree-ssa-alias.h (ao_ref_init_from_ptr_and_size): Declare.
9201
9202 2009-08-30  Alan Modra  <amodra@bigpond.net.au>
9203
9204         PR target/41081
9205         * fwprop.c (get_reg_use_in): Delete.
9206         (free_load_extend): New function.
9207         (forward_propagate_subreg): Use it.
9208
9209 2009-08-29  Kaz Kojima  <kkojima@gcc.gnu.org>
9210
9211         * config.gcc (sh*-*-elf): Add superh stuff only for sh*-superh-elf.
9212
9213 2009-08-29  Kai Tietz<kai.tietz@onevision.com>
9214
9215         PR/41184
9216         * config/i386.c (ix86_expand_epilogue): Correct stack adjustment for
9217         padding.
9218
9219 2009-08-29  Douglas B Rupp  <rupp@gnat.com>
9220
9221         * crtstuff.c (__do_global_dtors_aux): Use atexit if no
9222         fini or fini_array section.
9223
9224 2009-08-28  Sebastian Pop  <sebastian.pop@amd.com>
9225
9226         * graphite-dependences.c (graphite_legal_transform_bb): Call
9227         pbb_remove_duplicate_pdrs.
9228         * graphite-poly.c (can_collapse_pdr): Removed.
9229         (pdr_find_duplicate): Removed.
9230         (can_collapse_pdrs): New.
9231         (pbb_remove_duplicate_pdrs): New.
9232         (new_poly_dr): Do not look for duplicates.
9233         * graphite-poly.h (struct poly_bb): New field pdr_duplicates_removed.
9234         (PBB_PDR_DUPLICATES_REMOVED): New.
9235         (pbb_remove_duplicate_pdrs): Declared.
9236
9237 2009-08-28  Sebastian Pop  <sebastian.pop@amd.com>
9238
9239         * graphite-interchange.c (pbb_interchange_profitable_p): Adjust
9240         the strides by multiplying by PDR_NB_REFS.
9241         * graphite-poly.c (can_collapse_pdr): New.
9242         (pdr_find_duplicate): New.
9243         (new_poly_dr): Call pdr_find_duplicate.  Collapse duplicate PDRs.
9244         Initialize PDR_NB_REFS.
9245         * graphite-poly.h (struct poly_dr): Add field nb_refs.
9246         (PDR_NB_REFS): New.
9247         (new_poly_dr): Number of subscripts is a graphite_dim_t.
9248
9249 2009-08-28  Sebastian Pop  <sebastian.pop@amd.com>
9250
9251         PR middle-end/40965
9252         * graphite-poly.c (apply_poly_transforms): Remove legality test before
9253         any transform.
9254
9255 2009-08-28  Sebastian Pop  <sebastian.pop@amd.com>
9256
9257         * graphite-dependences.c (pddr_original_scattering): Return NULL
9258         for read-read dependence relations.
9259         * graphite-poly.h (enum poly_dr_type): Fix comment.
9260         (pdr_read_p): New.
9261         (pdr_write_p): New.
9262         (pdr_may_write_p): New.
9263
9264 2009-08-28  Sebastian Pop  <sebastian.pop@amd.com>
9265
9266         * graphite-poly.h (enum POLY_DR_TYPE): Renamed poly_dr_type.
9267         (struct poly_dr): Same.
9268         (new_poly_dr): Same.
9269         * graphite-poly.c (new_poly_dr): Same.
9270         * graphite-dependences.c (dot_deps): Disable call to system.
9271
9272 2009-08-28  Cary Coutant  <ccoutant@google.com>
9273
9274         PR debug/41063
9275         * dwarf2out.c (gen_type_die_with_usage): Use proper context for
9276         struct/union/enum types local to a function.
9277
9278 2009-08-28  Konrad Trifunovic  <konrad.trifunovic@gmail.com>
9279             Sebastian Pop  <sebastian.pop@amd.com>
9280
9281         * graphite-blocking.c (pbb_strip_mine_loop_depth): Renamed
9282         pbb_strip_mine_time_depth.  Changed the implementation so that
9283         transformation is expressed as a transformation on
9284         time (scatttering) dimensions.  Also, ensures that the 2d+1
9285         scheduling format is preserved.
9286         (pbb_strip_mine_profitable_p): Profitability is based on the
9287         iteration number of a given time (scattering) dimension,
9288         and not on a original loop depth dimension.
9289         (pbb_strip_mine): Call pbb_number_of_iterations_at_time.
9290         (pbb_do_strip_mine): Call psct_dynamic_dim.
9291         * graphite-poly.c (pbb_number_of_iterations_at_time): New.
9292         * graphite-poly.h (pbb_number_of_iterations_at_time): Declared.
9293         (pbb_nb_dynamic_scattering_transform): New.
9294         (psct_dynamic_dim): New.
9295
9296 2009-08-28  Konrad Trifunovic  <konrad.trifunovic@gmail.com>
9297
9298         * graphite-ppl.c (ppl_max_for_le): Renamed ppl_max_for_le_pointset.
9299         * graphite-ppl.h (ppl_max_for_le): Renamed ppl_max_for_le_pointset.
9300         * graphite-poly.c (pbb_number_of_iterations): Rename ppl_max_for_le.
9301         * graphite-interchange.c (build_linearized_memory_access): Same.
9302         (memory_stride_in_loop): Same.
9303
9304 2009-08-28  Sebastian Pop  <sebastian.pop@amd.com>
9305
9306         * graphite-dependences.c (pddr_original_scattering): New.
9307         (graphite_legal_transform_dr): Call pddr_original_scattering.
9308         (dot_deps_1): New.
9309         (dot_deps): New.
9310         * graphite-dependences.h (dot_deps): Declared.
9311         * graphite-poly.c (new_poly_dr): Initialize PDR_ID.
9312         (print_pdr): Print PDR_ID.
9313         * graphite-poly.h (struct poly_dr): Add field id.
9314         (PDR_ID): New.
9315         (pbb_index): New.
9316         * graphite-scop-detection.c (dot_all_scops_1): Cleanup comment.
9317
9318 2009-08-28  Sebastian Pop  <sebastian.pop@amd.com>
9319
9320         * graphite-dependences.c (graphite_carried_dependence_level_k): Do
9321         not delete the original dependence relation.
9322
9323 2009-08-28  Sebastian Pop  <sebastian.pop@amd.com>
9324
9325         * graphite-dependences.c (new_poly_dr_pair): Renamed new_poly_ddr.
9326         (eq_poly_dr_pair_p): Renamed eq_poly_ddr_p.
9327         (hash_poly_dr_pair_p): Renamed hash_poly_ddr_p.
9328         (free_poly_ddr): New.
9329         (pddr_is_empty): New.
9330         (dependence_polyhedron_1): Now returns a poly_ddr_p.
9331         (dependence_polyhedron): Same.  Remove useless gcc_assert.
9332         Remove fprintfs.
9333         (graphite_legal_transform_dr): Call pddr_is_empty and free_poly_ddr.
9334         (graphite_carried_dependence_level_k): Call pddr_is_empty.
9335         * graphite-dependences.h (enum poly_dependence_kind): New.
9336         (poly_dr_pair): Renamed poly_ddr.  Added a field kind.
9337         (PDRP_SOURCE): Renamed PDDR_SOURCE.
9338         (PDRP_SINK): Renamed PDDR_SINK.
9339         (PDRP_DDP): Renamed PDDR_DDP.
9340         (PDDR_KIND): New.
9341         (free_poly_ddr): Declared.
9342         * graphite-poly.c (new_scop): Use the new hash function names.
9343         * graphite-poly.h (struct scop): Renamed field original_pdr_pairs
9344         into original_pddrs.
9345         (SCOP_ORIGINAL_PDR_PAIRS): Renamed SCOP_ORIGINAL_PDDRS.
9346
9347 2009-08-28  Sebastian Pop  <sebastian.pop@amd.com>
9348
9349         * cfgloopmanip.c (create_empty_loop_on_edge): Generate upper
9350         bounds with LT_EXPR to make niter analysis more precise on code
9351         generated by Graphite.
9352
9353 2009-08-28  Sebastian Pop  <sebastian.pop@amd.com>
9354
9355         * graphite-dependences.c (graphite_legal_transform_dr): Fix formatting.
9356         (graphite_legal_transform_bb): Same.
9357         (poly_drs_may_alias_p): Same.
9358
9359 2009-08-28  Richard Guenther  <rguenther@suse.de>
9360
9361         * tree.def: Remove note about obsolete TYPE_NONCOPIED_PARTS.
9362
9363 2009-08-28  Jan Beulich  <jbeulich@novell.com>
9364
9365         * config/i386/netware.c: Include langhooks.h.
9366         (i386_nlm_encode_section_info): Simplify.
9367         (netware_override_options): Delete.
9368         * config/i386/netware.h (netware_override_options): Delete
9369         declaration.
9370         (OVERRIDE_OPTIONS): Delete definition.
9371         (SUBTARGET_OVERRIDE_OPTIONS): Define.
9372         (ASM_COMMENT_START): Define.
9373         * config/i386/nwld.h (SUBSUBTARGET_OVERRIDE_OPTIONS): Define.
9374
9375 2009-08-28  Jan Beulich  <jbeulich@novell.com>
9376
9377         * configure.ac: For in-tree ld, do a plain version check to
9378         determine whether comdat groups are supported.
9379         * configure: Regenerate.
9380
9381 2009-08-28  Olivier Hainque  <hainque@adacore.com>
9382
9383         * collect2.c (DO_COLLECT_EXPORT_LIST): New internal macro,
9384         always defined.  Reflect definition or absence of such for
9385         COLLECT_EXPORT_LIST.  Readability helper.
9386         (scanfilter): New enum, to help control what symbols
9387         are to be considered or ignored by scan_prog_file.
9388         (enum pass): Rename as "scanpass", moved together with scanfilter
9389         prior to scan_prog_file's prototype.
9390         (scan_prog_file): Accept and honor scanpass and scanfilter arguments.
9391         Group prototype with the scanpass/scanfilter definitions, factorize
9392         head comments for the several implementations at the prototype.
9393         (main): Reorganize the first pass link control to let AIX
9394         drag only the needed frame tables in executables.  Prevent
9395         frame tables collection during the scan aimed at static ctors.
9396         Pre-link and scan for frame tables later to compensate.
9397         * doc/tm.texi (ASM_OUTPUT_DWARF_TABLE_REF): New macro.
9398         A C statement to issue assembly directives that create a reference
9399         to the given DWARF table identifier label from the current function
9400         section.
9401         * dwarf2out.c (switch_to_eh_frame_section): Add a BACK argument
9402         to differentiate first time section entry.  Only emit a .data
9403         tables start identifier label the first time around.
9404         (switch_to_frame_table_section): New function.  Helper for
9405         output_call_frame_info to switch possibly BACK into the eh_frame
9406         or the debug_frame section depending on FOR_EH.
9407         (output_call_frame_info): Use helper to first enter the proper
9408         frame section.
9409         (output_fde): Use ASM_OUTPUT_DWARF_TABLE_REF when defined to
9410         emit a link to the frame table start label from each function
9411         section.
9412         * config/rs6000/rs6000.c (rs6000_aix_asm_output_dwarf_table_ref):
9413         New function.  Implementation of ASM_OUTPUT_DWARF_TABLE_REF.
9414         * config/rs6000/rs6000-protos.h: Declare it.
9415         * config/rs6000/aix.h (ASM_OUTPUT_DWARF_TABLE_REF): Define.
9416
9417 2009-08-27  Kaz Kojima  <kkojima@gcc.gnu.org>
9418
9419         * config/sh/sh.c (split_branches): Check the result of
9420         next_active_insn.
9421
9422 2009-08-27  Steve Ellcey  <sje@cup.hp.com>
9423
9424         * config/ia64/hpux.h (LIB_SPEC): Add -lrt for when
9425         using -pthread -fopenmp
9426
9427 2009-08-27  Gerald Pfeifer  <gerald@pfeifer.com>
9428
9429         * doc/service.texi (service directory): Update URL.
9430
9431 2009-08-27  Uros Bizjak  <ubizjak@gmail.com>
9432
9433         PR rtl-optimization/40861
9434         * simplify-rtx.c (simplify_subreg): Do not call simplify_gen_subreg to
9435         extract word from a multi-word subreg for negative byte positions.
9436
9437 2009-08-27  Tristan Gingold  <gingold@adacore.com>
9438             Douglas B Rupp  <rupp@gnat.com>
9439
9440         * config/ia64/ia64.c (ia64_attribute_table): Add "common_object" entry.
9441         (SECTION_VMS_OVERLAY): Define.
9442         (ia64_vms_common_object_attribute): Added.  Handle the "common_object"
9443         attribute.
9444         (ia64_vms_elf_asm_named_section): Added.  Generate .section pseudo-op
9445         for common_object.
9446         (ia64_vms_output_aligned_decl_common): Added.  Generate pseudo-op for
9447         common_object declarations.
9448         (ia64_section_type_flags): Set section flag for common_object.
9449         * config/ia64/ia64-protos.h
9450         (ia64_vms_output_aligned_decl_common): Declare.
9451         (ia64_vms_elf_asm_named_section): Declare.
9452
9453 2009-08-27  Michael Matz  <matz@suse.de>
9454
9455         * expr.c (expand_expr_real_2): New function taking exploded
9456         unary or binary expression, split out from ...
9457         (expand_expr_real_1): ... here.  Move over all unary/binary
9458         switch parts to above function, in particular these codes:
9459         PAREN_EXPR, NOP_EXPR, CONVERT_EXPR, POINTER_PLUS_EXPR, PLUS_EXPR,
9460         MINUS_EXPR, MULT_EXPR, TRUNC_DIV_EXPR, FLOOR_DIV_EXPR, CEIL_DIV_EXPR,
9461         ROUND_DIV_EXPR, EXACT_DIV_EXPR, RDIV_EXPR, TRUNC_MOD_EXPR,
9462         FLOOR_MOD_EXPR, CEIL_MOD_EXPR, ROUND_MOD_EXPR, FIXED_CONVERT_EXPR,
9463         FIX_TRUNC_EXPR, FLOAT_EXPR, NEGATE_EXPR, ABS_EXPR, MAX_EXPR, MIN_EXPR,
9464         BIT_NOT_EXPR, TRUTH_AND_EXPR, BIT_AND_EXPR, TRUTH_OR_EXPR,
9465         BIT_IOR_EXPR, TRUTH_XOR_EXPR, BIT_XOR_EXPR, LROTATE_EXPR, RROTATE_EXPR,
9466         LSHIFT_EXPR, RSHIFT_EXPR, LT_EXPR, LE_EXPR, GT_EXPR, GE_EXPR, EQ_EXPR,
9467         NE_EXPR, UNORDERED_EXPR, ORDERED_EXPR, UNLT_EXPR, UNLE_EXPR, UNGT_EXPR,
9468         UNGE_EXPR, UNEQ_EXPR, LTGT_EXPR, TRUTH_NOT_EXPR, COMPLEX_EXPR,
9469         WIDEN_SUM_EXPR, REDUC_MAX_EXPR, REDUC_MIN_EXPR, REDUC_PLUS_EXPR,
9470         VEC_EXTRACT_EVEN_EXPR, VEC_EXTRACT_ODD_EXPR, VEC_INTERLEAVE_HIGH_EXPR,
9471         VEC_INTERLEAVE_LOW_EXPR, VEC_LSHIFT_EXPR, VEC_RSHIFT_EXPR,
9472         VEC_UNPACK_HI_EXPR, VEC_UNPACK_LO_EXPR, VEC_UNPACK_FLOAT_HI_EXPR,
9473         VEC_UNPACK_FLOAT_LO_EXPR, VEC_WIDEN_MULT_HI_EXPR,
9474         VEC_WIDEN_MULT_LO_EXPR, VEC_PACK_TRUNC_EXPR, VEC_PACK_SAT_EXPR,
9475         VEC_PACK_FIX_TRUNC_EXPR.
9476         (<case PAREN_EXPR>): Call set_mem_attributes() with type, not the
9477         full expression.
9478
9479 2009-08-27  Richard Guenther  <rguenther@suse.de>
9480
9481         * gengtype.c (main): Handle uint64_t.
9482         * ipa-utils.c (get_base_var): Indent properly.
9483         * tree-ssa-live.c (debug_scope_block): New function.
9484         * tree-flow.h (debug_scope_block): Declare.
9485         * tree-ssa-copy.c (replace_exp_1): Add vertical space.
9486         * basic-block.h (enum profile_status): Rename to
9487         enum profile_status_d.
9488         (x_profile_status): Adjust type.
9489
9490 2009-08-27  Dodji Seketeli  <dodji@redhat.com>
9491
9492         PR debug/41170
9493         * dwarf2out.c (get_context_die): Declare this static function.
9494         (gen_type_die_with_usage): Make sure a DIE is a generated for
9495         the context of a typedef.
9496
9497 2009-08-26  Anatoly Sokolov  <aesok@post.ru>
9498
9499         * doc/invoke.texi (AVR Options): Remove documentation of -minit-stack
9500         switch.
9501
9502 2009-08-26  Richard Sandiford  <rdsandiford@googlemail.com>
9503
9504         * config/mips/mips-protos.h (mips_output_sync): Declare.
9505         (mips_sync_loop_insns): Likewise.
9506         (mips_output_sync_loop): Replace first two parameters with an rtx.
9507         * config/mips/mips.c (mips_multi_member): New structure.
9508         (mips_multi_members): New variable.
9509         (mips_multi_start): New function.
9510         (mips_multi_add): Likewise.
9511         (mips_multi_add_insn): Likewise.
9512         (mips_multi_add_label): Likewise.
9513         (mips_multi_last_index): Likewise.
9514         (mips_multi_copy_insn): Likewise.
9515         (mips_multi_set_operand): Likewise.
9516         (mips_multi_write): Likewise.
9517         (mips_print_operand_punctuation): Remove '%|' and '%-'.
9518         (mips_init_print_operand_punct): Update accordingly.
9519         (mips_start_ll_sc_sync_block): New function.
9520         (mips_end_ll_sc_sync_block): Likewise.
9521         (mips_output_sync): Likewise.
9522         (mips_sync_insn1_template): Likewise.
9523         (mips_sync_insn2_template): Likewise.
9524         (mips_get_sync_operand): Likewise.
9525         (mips_process_sync_loop): Likewise.
9526         (mips_output_sync_loop): Use mips_process_sync_loop.
9527         (mips_sync_loop_insns): New function.
9528         * config/mips/mips.h (MIPS_COMPARE_AND_SWAP): Delete.
9529         (MIPS_COMPARE_AND_SWAP_12): Likewise.
9530         (MIPS_COMPARE_AND_SWAP_12_ZERO_OP): Likewise.
9531         (MIPS_COMPARE_AND_SWAP_12_NONZERO_OP): Likewise.
9532         (MIPS_SYNC_OP, MIPS_SYNC_OP_12): Likewise.
9533         (MIPS_SYNC_OP_12_AND, MIPS_SYNC_OP_12_XOR): Likewise.
9534         (MIPS_SYNC_OLD_OP_12): Likewise.
9535         (MIPS_SYNC_OLD_OP_12_AND, MIPS_SYNC_OLD_OP_12_XOR): Likewise.
9536         (MIPS_SYNC_NEW_OP_12): Likewise.
9537         (MIPS_SYNC_NEW_OP_12_AND, MIPS_SYNC_NEW_OP_12_XOR): Likewise.
9538         (MIPS_SYNC_OLD_OP, MIPS_SYNC_NEW_OP): Likewise.
9539         (MIPS_SYNC_NAND, MIPS_SYNC_OLD_NAND, MIPS_SYNC_NEW_NAND): Likewise.
9540         (MIPS_SYNC_EXCHANGE, MIPS_SYNC_EXCHANGE_12): Likewise.
9541         (MIPS_SYNC_EXCHANGE_12_ZERO_OP): Likewise.
9542         (MIPS_SYNC_EXCHANGE_12_NONZER_OP): Likewise.
9543         * config/mips/mips.md (sync_mem): New attribute.
9544         (sync_oldval, sync_newval, sync_inclusive_mask): Likewise.
9545         (sync_exclusive_mask, sync_required_oldval): Likewise.
9546         (sync_insn1_op2, sync_insn1, sync_insn2): Likewise.
9547         (sync_release_barrier): Likewise.
9548         (length): Handle sync loops.
9549         (sync): Use mips_output_sync.
9550         * config/mips/sync.md (*memory_barrier): Use mips_output_sync.
9551         (sync_compare_and_swap<mode>): Set the new sync_* attributes
9552         and use mips_output_sync_loop.
9553         (compare_and_swap_12, sync_add<mode>, sync_<optab>_12): Likewise.
9554         (sync_old_<optab>_12, sync_new_<optab>_12, sync_nand_12): Likewise.
9555         (sync_old_nand_12, sync_new_nand_12, sync_sub<mode>): Likewise.
9556         (sync_old_add<mode>, sync_old_sub<mode>): Likewise.
9557         (sync_new_add<mode>, sync_new_sub<mode>): Likewise.
9558         (sync_<optab><mode>, sync_old_<optab><mode>): Likewise.
9559         (sync_new_<optab><mode>, sync_nand<mode>): Likewise.
9560         (sync_old_nand<mode>, sync_new_nand<mode>): Likewise.
9561         (sync_lock_test_and_set<mode>, test_and_set_12): Likewise.
9562
9563 2009-08-26  Richard Guenther  <rguenther@suse.de>
9564
9565         PR middle-end/41163
9566         * gimplify.c (gimplify_addr_expr): Canonicalize ADDR_EXPRs if
9567         the types to not match.
9568         * tree-cfg.c (verify_gimple_assign_single): Adjust ADDR_EXPR
9569         verification.
9570         * tree-ssa.c (useless_type_conversion_p): Conversions to
9571         pointers to unprototyped functions are useless.
9572
9573 2009-08-26  Richard Guenther  <rguenther@suse.de>
9574
9575         * tree-ssa-structalias.c (create_variable_info_for): Remove strange
9576         whole-program condition, prepare to be called for non-globals.
9577         (intra_create_variable_infos): For restrict qualified DECL_BY_REFERENCE
9578         params build a representative with known type and track its fields.
9579
9580 2009-08-26  Uros Bizjak  <ubizjak@gmail.com>
9581
9582         * config/alpha/sync.md: Update comment about unpredictable LL/SC lock
9583         clearing by a taken branch.
9584         (sync_<fetchop_name><mode>): Split when epilogue_completed is set,
9585         effectively after bbro pass.
9586         (sync_nand<mode>): Ditto.
9587         (sync_old_<fetchop_name><mode>): Ditto.
9588         (sync_old_nand<mode>): Ditto.
9589         (sync_new_<fetchop_name><mode>): Dito.
9590         (sync_new_nand<mode>): Ditto.
9591         (sync_compare_and_swap<mode>_1): Ditto.
9592         (*sync_compare_and_swap<mode>): Ditto.
9593         (sync_lock_test_and_set<mode>_1): Ditto.
9594         ("sync_lock_test_and_set<mode>): Ditto.
9595
9596 2009-08-25  Douglas B Rupp  <rupp@gnat.com>
9597
9598         * hwint.h (HOST_LONG_FORMAT): New macro
9599         * bitmap.c, c-decl.c, mips-tfile.c, print-rtl.c, print-tree.c:
9600         Use HOST_PTR_PRINTF.
9601         * system.h (HOST_PTR_PRINTF): Resurrect old macro
9602         * doc/hostconfig.texi (HOST_LONG_FORMAT): Document.
9603         (HOST_PTR_PRINTF): Document.
9604
9605 2009-08-25 Jan Hubicka  <jh@suse.cz>
9606
9607         * config/i386/bmmintrin.h: Replace by #error.
9608
9609         Revert:
9610         Michael Meissner  <michael.meissner@amd.com>
9611         Dwarakanath Rajagopal  <dwarak.rajagopal@amd.com>
9612         Tony Linthicum  <tony.linthicum@amd.com>
9613
9614         * config/i386/i386.h (TARGET_SSE5): New macro for SSE5.
9615         (TARGET_ROUND): New macro for the round/ptest instructions which
9616         are shared between SSE4.1 and SSE5.
9617         (OPTION_MASK_ISA_ROUND): Ditto.
9618         (OPTION_ISA_ROUND): Ditto.
9619         (TARGET_FUSED_MADD): New macro for -mfused-madd swtich.
9620         (TARGET_CPU_CPP_BUILTINS): Add SSE5 support.
9621
9622         * config/i386/i386.opt (-msse5): New switch for SSE5 support.
9623         (-mfused-madd): New switch to give users control over whether the
9624         compiler optimizes to use the multiply/add SSE5 instructions.
9625
9626         * config/i386/i386.c (enum pta_flags): Add PTA_SSE5.
9627         (ix86_handle_option): Turn off 3dnow if -msse5.
9628         (override_options): Add SSE5 support.
9629         (print_operand): %Y prints comparison codes for SSE5 com/pcom
9630         instructions.
9631         (ix86_expand_sse_movcc): Add SSE5 support.
9632         (ix86_expand_sse5_unpack): New function to use pperm to unpack a
9633         vector type to the next largest size.
9634         (ix86_expand_sse5_pack): New function to use pperm to pack a
9635         vector type to the next smallest size.
9636         (IX86_BUILTIN_FMADDSS): New for SSE5 intrinsic.
9637         (IX86_BUILTIN_FMADDSD): Ditto.
9638         (IX86_BUILTIN_FMADDPS): Ditto.
9639         (IX86_BUILTIN_FMADDPD): Ditto.
9640         (IX86_BUILTIN_FMSUBSS): Ditto.
9641         (IX86_BUILTIN_FMSUBSD): Ditto.
9642         (IX86_BUILTIN_FMSUBPS): Ditto.
9643         (IX86_BUILTIN_FMSUBPD): Ditto.
9644         (IX86_BUILTIN_FNMADDSS): Ditto.
9645         (IX86_BUILTIN_FNMADDSD): Ditto.
9646         (IX86_BUILTIN_FNMADDPS): Ditto.
9647         (IX86_BUILTIN_FNMADDPD): Ditto.
9648         (IX86_BUILTIN_FNMSUBSS): Ditto.
9649         (IX86_BUILTIN_FNMSUBSD): Ditto.
9650         (IX86_BUILTIN_FNMSUBPS): Ditto.
9651         (IX86_BUILTIN_FNMSUBPD): Ditto.
9652         (IX86_BUILTIN_PCMOV_V2DI): Ditto.
9653         (IX86_BUILTIN_PCMOV_V4SI): Ditto.
9654         (IX86_BUILTIN_PCMOV_V8HI): Ditto.
9655         (IX86_BUILTIN_PCMOV_V16QI): Ditto.
9656         (IX86_BUILTIN_PCMOV_V4SF): Ditto.
9657         (IX86_BUILTIN_PCMOV_V2DF): Ditto.
9658         (IX86_BUILTIN_PPERM): Ditto.
9659         (IX86_BUILTIN_PERMPS): Ditto.
9660         (IX86_BUILTIN_PERMPD): Ditto.
9661         (IX86_BUILTIN_PMACSSWW): Ditto.
9662         (IX86_BUILTIN_PMACSWW): Ditto.
9663         (IX86_BUILTIN_PMACSSWD): Ditto.
9664         (IX86_BUILTIN_PMACSWD): Ditto.
9665         (IX86_BUILTIN_PMACSSDD): Ditto.
9666         (IX86_BUILTIN_PMACSDD): Ditto.
9667         (IX86_BUILTIN_PMACSSDQL): Ditto.
9668         (IX86_BUILTIN_PMACSSDQH): Ditto.
9669         (IX86_BUILTIN_PMACSDQL): Ditto.
9670         (IX86_BUILTIN_PMACSDQH): Ditto.
9671         (IX86_BUILTIN_PMADCSSWD): Ditto.
9672         (IX86_BUILTIN_PMADCSWD): Ditto.
9673         (IX86_BUILTIN_PHADDBW): Ditto.
9674         (IX86_BUILTIN_PHADDBD): Ditto.
9675         (IX86_BUILTIN_PHADDBQ): Ditto.
9676         (IX86_BUILTIN_PHADDWD): Ditto.
9677         (IX86_BUILTIN_PHADDWQ): Ditto.
9678         (IX86_BUILTIN_PHADDDQ): Ditto.
9679         (IX86_BUILTIN_PHADDUBW): Ditto.
9680         (IX86_BUILTIN_PHADDUBD): Ditto.
9681         (IX86_BUILTIN_PHADDUBQ): Ditto.
9682         (IX86_BUILTIN_PHADDUWD): Ditto.
9683         (IX86_BUILTIN_PHADDUWQ): Ditto.
9684         (IX86_BUILTIN_PHADDUDQ): Ditto.
9685         (IX86_BUILTIN_PHSUBBW): Ditto.
9686         (IX86_BUILTIN_PHSUBWD): Ditto.
9687         (IX86_BUILTIN_PHSUBDQ): Ditto.
9688         (IX86_BUILTIN_PROTB): Ditto.
9689         (IX86_BUILTIN_PROTW): Ditto.
9690         (IX86_BUILTIN_PROTD): Ditto.
9691         (IX86_BUILTIN_PROTQ): Ditto.
9692         (IX86_BUILTIN_PROTB_IMM): Ditto.
9693         (IX86_BUILTIN_PROTW_IMM): Ditto.
9694         (IX86_BUILTIN_PROTD_IMM): Ditto.
9695         (IX86_BUILTIN_PROTQ_IMM): Ditto.
9696         (IX86_BUILTIN_PSHLB): Ditto.
9697         (IX86_BUILTIN_PSHLW): Ditto.
9698         (IX86_BUILTIN_PSHLD): Ditto.
9699         (IX86_BUILTIN_PSHLQ): Ditto.
9700         (IX86_BUILTIN_PSHAB): Ditto.
9701         (IX86_BUILTIN_PSHAW): Ditto.
9702         (IX86_BUILTIN_PSHAD): Ditto.
9703         (IX86_BUILTIN_PSHAQ): Ditto.
9704         (IX86_BUILTIN_FRCZSS): Ditto.
9705         (IX86_BUILTIN_FRCZSD): Ditto.
9706         (IX86_BUILTIN_FRCZPS): Ditto.
9707         (IX86_BUILTIN_FRCZPD): Ditto.
9708         (IX86_BUILTIN_CVTPH2PS): Ditto.
9709         (IX86_BUILTIN_CVTPS2PH): Ditto.
9710         (IX86_BUILTIN_COMEQSS): Ditto.
9711         (IX86_BUILTIN_COMNESS): Ditto.
9712         (IX86_BUILTIN_COMLTSS): Ditto.
9713         (IX86_BUILTIN_COMLESS): Ditto.
9714         (IX86_BUILTIN_COMGTSS): Ditto.
9715         (IX86_BUILTIN_COMGESS): Ditto.
9716         (IX86_BUILTIN_COMUEQSS): Ditto.
9717         (IX86_BUILTIN_COMUNESS): Ditto.
9718         (IX86_BUILTIN_COMULTSS): Ditto.
9719         (IX86_BUILTIN_COMULESS): Ditto.
9720         (IX86_BUILTIN_COMUGTSS): Ditto.
9721         (IX86_BUILTIN_COMUGESS): Ditto.
9722         (IX86_BUILTIN_COMORDSS): Ditto.
9723         (IX86_BUILTIN_COMUNORDSS): Ditto.
9724         (IX86_BUILTIN_COMFALSESS): Ditto.
9725         (IX86_BUILTIN_COMTRUESS): Ditto.
9726         (IX86_BUILTIN_COMEQSD): Ditto.
9727         (IX86_BUILTIN_COMNESD): Ditto.
9728         (IX86_BUILTIN_COMLTSD): Ditto.
9729         (IX86_BUILTIN_COMLESD): Ditto.
9730         (IX86_BUILTIN_COMGTSD): Ditto.
9731         (IX86_BUILTIN_COMGESD): Ditto.
9732         (IX86_BUILTIN_COMUEQSD): Ditto.
9733         (IX86_BUILTIN_COMUNESD): Ditto.
9734         (IX86_BUILTIN_COMULTSD): Ditto.
9735         (IX86_BUILTIN_COMULESD): Ditto.
9736         (IX86_BUILTIN_COMUGTSD): Ditto.
9737         (IX86_BUILTIN_COMUGESD): Ditto.
9738         (IX86_BUILTIN_COMORDSD): Ditto.
9739         (IX86_BUILTIN_COMUNORDSD): Ditto.
9740         (IX86_BUILTIN_COMFALSESD): Ditto.
9741         (IX86_BUILTIN_COMTRUESD): Ditto.
9742         (IX86_BUILTIN_COMEQPS): Ditto.
9743         (IX86_BUILTIN_COMNEPS): Ditto.
9744         (IX86_BUILTIN_COMLTPS): Ditto.
9745         (IX86_BUILTIN_COMLEPS): Ditto.
9746         (IX86_BUILTIN_COMGTPS): Ditto.
9747         (IX86_BUILTIN_COMGEPS): Ditto.
9748         (IX86_BUILTIN_COMUEQPS): Ditto.
9749         (IX86_BUILTIN_COMUNEPS): Ditto.
9750         (IX86_BUILTIN_COMULTPS): Ditto.
9751         (IX86_BUILTIN_COMULEPS): Ditto.
9752         (IX86_BUILTIN_COMUGTPS): Ditto.
9753         (IX86_BUILTIN_COMUGEPS): Ditto.
9754         (IX86_BUILTIN_COMORDPS): Ditto.
9755         (IX86_BUILTIN_COMUNORDPS): Ditto.
9756         (IX86_BUILTIN_COMFALSEPS): Ditto.
9757         (IX86_BUILTIN_COMTRUEPS): Ditto.
9758         (IX86_BUILTIN_COMEQPD): Ditto.
9759         (IX86_BUILTIN_COMNEPD): Ditto.
9760         (IX86_BUILTIN_COMLTPD): Ditto.
9761         (IX86_BUILTIN_COMLEPD): Ditto.
9762         (IX86_BUILTIN_COMGTPD): Ditto.
9763         (IX86_BUILTIN_COMGEPD): Ditto.
9764         (IX86_BUILTIN_COMUEQPD): Ditto.
9765         (IX86_BUILTIN_COMUNEPD): Ditto.
9766         (IX86_BUILTIN_COMULTPD): Ditto.
9767         (IX86_BUILTIN_COMULEPD): Ditto.
9768         (IX86_BUILTIN_COMUGTPD): Ditto.
9769         (IX86_BUILTIN_COMUGEPD): Ditto.
9770         (IX86_BUILTIN_COMORDPD): Ditto.
9771         (IX86_BUILTIN_COMUNORDPD): Ditto.
9772         (IX86_BUILTIN_COMFALSEPD): Ditto.
9773         (IX86_BUILTIN_COMTRUEPD): Ditto.
9774         (IX86_BUILTIN_PCOMEQUB): Ditto.
9775         (IX86_BUILTIN_PCOMNEUB): Ditto.
9776         (IX86_BUILTIN_PCOMLTUB): Ditto.
9777         (IX86_BUILTIN_PCOMLEUB): Ditto.
9778         (IX86_BUILTIN_PCOMGTUB): Ditto.
9779         (IX86_BUILTIN_PCOMGEUB): Ditto.
9780         (IX86_BUILTIN_PCOMFALSEUB): Ditto.
9781         (IX86_BUILTIN_PCOMTRUEUB): Ditto.
9782         (IX86_BUILTIN_PCOMEQUW): Ditto.
9783         (IX86_BUILTIN_PCOMNEUW): Ditto.
9784         (IX86_BUILTIN_PCOMLTUW): Ditto.
9785         (IX86_BUILTIN_PCOMLEUW): Ditto.
9786         (IX86_BUILTIN_PCOMGTUW): Ditto.
9787         (IX86_BUILTIN_PCOMGEUW): Ditto.
9788         (IX86_BUILTIN_PCOMFALSEUW): Ditto.
9789         (IX86_BUILTIN_PCOMTRUEUW): Ditto.
9790         (IX86_BUILTIN_PCOMEQUD): Ditto.
9791         (IX86_BUILTIN_PCOMNEUD): Ditto.
9792         (IX86_BUILTIN_PCOMLTUD): Ditto.
9793         (IX86_BUILTIN_PCOMLEUD): Ditto.
9794         (IX86_BUILTIN_PCOMGTUD): Ditto.
9795         (IX86_BUILTIN_PCOMGEUD): Ditto.
9796         (IX86_BUILTIN_PCOMFALSEUD): Ditto.
9797         (IX86_BUILTIN_PCOMTRUEUD): Ditto.
9798         (IX86_BUILTIN_PCOMEQUQ): Ditto.
9799         (IX86_BUILTIN_PCOMNEUQ): Ditto.
9800         (IX86_BUILTIN_PCOMLTUQ): Ditto.
9801         (IX86_BUILTIN_PCOMLEUQ): Ditto.
9802         (IX86_BUILTIN_PCOMGTUQ): Ditto.
9803         (IX86_BUILTIN_PCOMGEUQ): Ditto.
9804         (IX86_BUILTIN_PCOMFALSEUQ): Ditto.
9805         (IX86_BUILTIN_PCOMTRUEUQ): Ditto.
9806         (IX86_BUILTIN_PCOMEQB): Ditto.
9807         (IX86_BUILTIN_PCOMNEB): Ditto.
9808         (IX86_BUILTIN_PCOMLTB): Ditto.
9809         (IX86_BUILTIN_PCOMLEB): Ditto.
9810         (IX86_BUILTIN_PCOMGTB): Ditto.
9811         (IX86_BUILTIN_PCOMGEB): Ditto.
9812         (IX86_BUILTIN_PCOMFALSEB): Ditto.
9813         (IX86_BUILTIN_PCOMTRUEB): Ditto.
9814         (IX86_BUILTIN_PCOMEQW): Ditto.
9815         (IX86_BUILTIN_PCOMNEW): Ditto.
9816         (IX86_BUILTIN_PCOMLTW): Ditto.
9817         (IX86_BUILTIN_PCOMLEW): Ditto.
9818         (IX86_BUILTIN_PCOMGTW): Ditto.
9819         (IX86_BUILTIN_PCOMGEW): Ditto.
9820         (IX86_BUILTIN_PCOMFALSEW): Ditto.
9821         (IX86_BUILTIN_PCOMTRUEW): Ditto.
9822         (IX86_BUILTIN_PCOMEQD): Ditto.
9823         (IX86_BUILTIN_PCOMNED): Ditto.
9824         (IX86_BUILTIN_PCOMLTD): Ditto.
9825         (IX86_BUILTIN_PCOMLED): Ditto.
9826         (IX86_BUILTIN_PCOMGTD): Ditto.
9827         (IX86_BUILTIN_PCOMGED): Ditto.
9828         (IX86_BUILTIN_PCOMFALSED): Ditto.
9829         (IX86_BUILTIN_PCOMTRUED): Ditto.
9830         (IX86_BUILTIN_PCOMEQQ): Ditto.
9831         (IX86_BUILTIN_PCOMNEQ): Ditto.
9832         (IX86_BUILTIN_PCOMLTQ): Ditto.
9833         (IX86_BUILTIN_PCOMLEQ): Ditto.
9834         (IX86_BUILTIN_PCOMGTQ): Ditto.
9835         (IX86_BUILTIN_PCOMGEQ): Ditto.
9836         (IX86_BUILTIN_PCOMFALSEQ): Ditto.
9837         (IX86_BUILTIN_PCOMTRUEQ): Ditto.
9838         (enum multi_arg_type): New enum for describing the various SSE5
9839         intrinsic argument types.
9840         (bdesc_multi_arg): New table for SSE5 intrinsics.
9841         (ix86_init_mmx_sse_builtins): Add SSE5 intrinsic support.
9842         (ix86_expand_multi_arg_builtin): New function for creating SSE5
9843         intrinsics.
9844         (ix86_expand_builtin): Add SSE5 intrinsic support.
9845         (ix86_sse5_valid_op_p): New function to validate SSE5 3 and 4
9846         operand instructions.
9847         (ix86_expand_sse5_multiple_memory): New function to split the
9848         second memory reference from SSE5 instructions.
9849         (type_has_variadic_args_p): Delete in favor of stdarg_p.
9850         (ix86_return_pops_args): Use stdarg_p to determine if the function
9851         has variable arguments.
9852         (ix86_setup_incoming_varargs): Ditto.
9853         (x86_this_parameter): Ditto.
9854
9855         * config/i386/i386-protos.h (ix86_expand_sse5_unpack): Add
9856         declaration.
9857         (ix86_expand_sse5_pack): Ditto.
9858         (ix86_sse5_valid_op_p): Ditto.
9859         (ix86_expand_sse5_multiple_memory): Ditto.
9860
9861         * config/i386/i386.md (UNSPEC_SSE5_INTRINSIC): Add new UNSPEC
9862         constant for SSE5 support.
9863         (UNSPEC_SSE5_UNSIGNED_CMP): Ditto.
9864         (UNSPEC_SSE5_TRUEFALSE): Ditto.
9865         (UNSPEC_SSE5_PERMUTE): Ditto.
9866         (UNSPEC_SSE5_ASHIFT): Ditto.
9867         (UNSPEC_SSE5_LSHIFT): Ditto.
9868         (UNSPEC_FRCZ): Ditto.
9869         (UNSPEC_CVTPH2PS): Ditto.
9870         (UNSPEC_CVTPS2PH): Ditto.
9871         (PCOM_FALSE): Add new constant for true/false SSE5 comparisons.
9872         (PCOM_TRUE): Ditto.
9873         (COM_FALSE_S): Ditto.
9874         (COM_FALSE_P): Ditto.
9875         (COM_TRUE_S): Ditto.
9876         (COM_TRUE_P): Ditto.
9877         (type attribute): Add ssemuladd, sseiadd1, ssecvt1, sse4arg types.
9878         (unit attribute): Add support for ssemuladd, ssecvt1, sseiadd1 sse4arg
9879         types.
9880         (memory attribute): Ditto.
9881         (sse4_1_round<mode>2): Use TARGET_ROUND instead of TARGET_SSE4_1.
9882         Use SSE4_1_ROUND_* constants instead of hard coded numbers.
9883         (rint<mode>2): Use TARGET_ROUND instead of TARGET_SSE4_1.
9884         (floor<mode>2): Ditto.
9885         (ceil<mode>2): Ditto.
9886         (btrunc<mode>2): Ditto.
9887         (nearbyintdf2): Ditto.
9888         (nearbyintsf2): Ditto.
9889         (sse_setccsf): Disable if SSE5.
9890         (sse_setccdf): Ditto.
9891         (sse5_setcc<mode>): New support for SSE5 conditional move.
9892         (sse5_pcmov_<mode>): Ditto.
9893
9894         * config/i386/sse.md (SSEMODE1248): New mode iterator for SSE5.
9895         (SSEMODEF4): Ditto.
9896         (SSEMODEF2P): Ditto.
9897         (ssemodesuffixf4): New mode attribute for SSE5.
9898         (ssemodesuffixf2s): Ditto.
9899         (ssemodesuffixf2c): Ditto.
9900         (sserotatemax): Ditto.
9901         (ssescalarmode): Ditto.
9902         (sse_maskcmpv4sf3): Disable if SSE5.
9903         (sse_maskcmpv2df3): Ditto.
9904         (sse_vmmaskcmpv4sf3): Ditto.
9905         (sse5_fmadd<mode>4): Add SSE5 floating point multiply/add instructions.
9906         (sse5_vmfmadd<mode>4): Ditto.
9907         (sse5_fmsub<mode>4): Ditto.
9908         (sse5_vmfmsub<mode>4): Ditto.
9909         (sse5_fnmadd<mode>4): Ditto.
9910         (sse5_vmfnmadd<mode>4): Ditto.
9911         (sse5_fnmsub<mode>4): Ditto.
9912         (sse5_vmfnmsub<mode>4): Ditto.
9913         (sse5i_fmadd<mode>4): Ditto.
9914         (sse5i_fmsub<mode>4): Ditto.
9915         (sse5i_fnmadd<mode>4): Ditto.
9916         (sse5i_fnmsub<mode>4): Ditto.
9917         (sse5i_vmfmadd<mode>4): Ditto.
9918         (sse5i_vmfmsub<mode>4): Ditto.
9919         (sse5i_vmfnmadd<mode>4): Ditto.
9920         (sse5i_vmfnmsub<mode>4): Ditto.
9921         (mulv16qi3): Add SSE5 support.
9922         (mulv4si3): Ditto.
9923         (sse5_mulv4si3): New insn for 32-bit multiply support on SSE5.
9924         (sse2_mulv4si3): Disable if SSE5.
9925         (sse4_1_roundpd): Use TARGET_ROUND instead of TARGET_SSE4_1.
9926         (sse4_1_roundps): Ditto.
9927         (sse4_1_roundsd): Ditto.
9928         (sse4_1_roundss): Ditto.
9929         (sse_maskcmpv4sf3): Disable if SSE5 so the SSE5 instruction will
9930         be generated.
9931         (sse_maskcmpsf3): Ditto.
9932         (sse_vmmaskcmpv4sf3): Ditto.
9933         (sse2_maskcmpv2df3): Ditto.
9934         (sse2_maskcmpdf3): Ditto.
9935         (sse2_vmmaskcmpv2df3): Ditto.
9936         (sse2_eq<mode>3): Ditto.
9937         (sse2_gt<mode>3): Ditto.
9938         (sse5_pcmov_<mode>): Add SSE5 support.
9939         (vec_unpacku_hi_v16qi): Ditto.
9940         (vec_unpacks_hi_v16qi): Ditto.
9941         (vec_unpacku_lo_v16qi): Ditto.
9942         (vec_unpacks_lo_v16qi): Ditto.
9943         (vec_unpacku_hi_v8hi): Ditto.
9944         (vec_unpacks_hi_v8hi): Ditto.
9945         (vec_unpacku_lo_v8hi): Ditto.
9946         (vec_unpacks_lo_v8hi): Ditto.
9947         (vec_unpacku_hi_v4si): Ditto.
9948         (vec_unpacks_hi_v4si): Ditto.
9949         (vec_unpacku_lo_v4si): Ditto.
9950         (vec_unpacks_lo_v4si): Ditto.
9951         (sse5_pmacsww): New SSE5 intrinsic insn.
9952         (sse5_pmacssww): Ditto.
9953         (sse5_pmacsdd): Ditto.
9954         (sse5_pmacssdd): Ditto.
9955         (sse5_pmacssdql): Ditto.
9956         (sse5_pmacssdqh): Ditto.
9957         (sse5_pmacsdqh): Ditto.
9958         (sse5_pmacsswd): Ditto.
9959         (sse5_pmacswd): Ditto.
9960         (sse5_pmadcsswd): Ditto.
9961         (sse5_pmadcswd): Ditto.
9962         (sse5_pcmov_<move>): Conditional move support on SSE5.
9963         (sse5_phaddbw): New SSE5 intrinsic insn.
9964         (sse5_phaddbd): Ditto.
9965         (sse5_phaddbq): Ditto.
9966         (sse5_phaddwd): Ditto.
9967         (sse5_phaddwq): Ditto.
9968         (sse5_phadddq): Ditto.
9969         (sse5_phaddubw): Ditto.
9970         (sse5_phaddubd): Ditto.
9971         (sse5_phaddubq): Ditto.
9972         (sse5_phadduwd): Ditto.
9973         (sse5_phadduwq): Ditto.
9974         (sse5_phaddudq): Ditto.
9975         (sse5_phsubbw): Ditto.
9976         (sse5_phsubwd): Ditto.
9977         (sse5_phsubdq): Ditto.
9978         (sse5_pperm): Ditto.
9979         (sse5_pperm_sign_v16qi_v8hi): New insns for pack/unpack with SSE5.
9980         (sse5_pperm_zero_v16qi_v8hi): Ditto.
9981         (sse5_pperm_sign_v8hi_v4si): Ditto.
9982         (sse5_pperm_zero_v8hi_v4si): Ditto.
9983         (sse5_pperm_sign_v4si_v2di): Ditto.
9984         (sse5_pperm_sign_v4si_v2di): Ditto.
9985         (sse5_pperm_pack_v2di_v4si): Ditto.
9986         (sse5_pperm_pack_v4si_v8hi): Ditto.
9987         (sse5_pperm_pack_v8hi_v16qi): Ditto.
9988         (sse5_perm<mode>): New SSE5 intrinsic insn.
9989         (rotl<mode>3): Ditto.
9990         (sse5_rotl<mode>3): Ditto.
9991         (sse5_ashl<mode>3): Ditto.
9992         (sse5_lshl<mode>3): Ditto.
9993         (sse5_frcz<mode>2): Ditto.
9994         (sse5s_frcz<mode>2): Ditto.
9995         (sse5_cvtph2ps): Ditto.
9996         (sse5_cvtps2ph): Ditto.
9997         (sse5_vmmaskcmp<mode>3): Ditto.
9998         (sse5_com_tf<mode>3): Ditto.
9999         (sse5_maskcmp<mode>3): Ditto.
10000         (sse5_maskcmp_uns<mode>3): Ditto.
10001         (sse5_maskcmp_uns2<mode>3): Ditto.
10002         (sse5_pcom_tf<mode>3): Ditto.
10003
10004         * config/i386/predicates.md (sse5_comparison_float_operator):
10005         New predicate to match the comparison operators supported by
10006         the SSE5 com instruction.
10007         (ix86_comparison_int_operator): New predicate to match just the
10008         signed int comparisons.
10009         (ix86_comparison_uns_operator): New predicate to match just the
10010         unsigned int comparisons.
10011
10012         * doc/invoke.texi (-msse5): Add documentation.
10013         (-mfused-madd): Ditto.
10014
10015         * doc/extend.texi (x86 intrinsics): Document new SSE5 intrinsics.
10016
10017         * config.gcc (i[34567]86-*-*): Include bmmintrin.h and
10018         mmintrin-common.h.
10019         (x86_64-*-*): Ditto.
10020
10021         * config/i386/cpuid.h (bit_SSE5): Define SSE5 bit.
10022
10023         * config/i386/bmmintrin.h: New file, provide common x86 compiler
10024         intrinisics for SSE5.
10025
10026         * config/i386/smmintrin.h: Move instructions shared with SSE5 to
10027         mmintrin-common.h.
10028
10029         * config/i386/mmintrin-common.h: New file, to contain common
10030         instructions between SSE4.1 and SSE5.
10031
10032         * config/i386/netware.c (gen_stdcall_or_fastcall_decoration): Use
10033         FOREACH_FUNCTION_ARGS to iterate over the argument list.
10034         (gen_regparm_prefix): Ditto.
10035
10036         * config/i386/winnt.c (gen_stdcall_or_fastcall_suffix): Use
10037         FOREACH_FUNCTION_ARGS to iterate over the argument list.  Use
10038         prototype_p to determine if a function is prototyped.
10039
10040 2009-08-25 Ville Voutilainen <ville.voutilainen@gmail.com>
10041
10042         * c-common.c (c_common_reswords) add the alignof keyword,
10043         with same RID as __alignof and __alignof__
10044
10045 2009-08-25  Anatoly Sokolov  <aesok@post.ru>
10046
10047         * hooks.h (hook_bool_const_int_const_int_true): Declare.
10048         * hooks.c (hook_bool_const_int_const_int_true): New function.
10049         * target.h (struct gcc_target): Add can_eliminate field.
10050         * target-def.h (TARGET_CAN_ELIMINATE): Define.
10051         (TARGET_INITIALIZER): Use TARGET_CAN_ELIMINATE.
10052         * ira.c (setup_eliminable_regset): Use can_eliminate target hook.
10053         * reload1.c (update_eliminables, init_elim_table): (Ditto.).
10054         (elim_table): Revise comment.
10055         * system.h (CAN_ELIMINATE): Poison.
10056         * defaults.h (CAN_ELIMINATE): Remove.
10057         * doc/tm.texi (CAN_ELIMINATE): Revise documentation.
10058
10059         * config/alpha/vms.h (CAN_ELIMINATE): Remove macro.
10060         * config/alpha/alpha.c (TARGET_CAN_ELIMINATE) [TARGET_ABI_OPEN_VMS]:
10061         Define macro.
10062         (alpha_vms_can_eliminate): Declare as static, change return type to
10063         bool.
10064         * config/alpha/alpha-protos.h (alpha_vms_can_eliminate): Remove.
10065
10066         * config/arm/arm.h (CAN_ELIMINATE): Remove macro.
10067         * config/arm/arm.c (TARGET_CAN_ELIMINATE): Define macro.
10068         (arm_can_eliminate): New function.
10069
10070         * config/avr/avr.h (CAN_ELIMINATE): Remove macro.
10071         * config/avr/avr.c (TARGET_CAN_ELIMINATE): Define macro.
10072         (avr_can_eliminate): Declare as static.
10073         * config/avr/avr-protos.h (avr_can_eliminate): Remove.
10074
10075         * config/bfin/bfin.h (CAN_ELIMINATE): Remove macro.
10076         * config/bfin/bfin.c (TARGET_CAN_ELIMINATE): Define macro.
10077         (bfin_can_eliminate): New function.
10078
10079         * config/crx/crx.h (CAN_ELIMINATE): Remove macro.
10080         * config/crx/crx.c (TARGET_CAN_ELIMINATE): Define macro.
10081         (crx_can_eliminate): New function.
10082
10083         * config/fr30/fr30.h (CAN_ELIMINATE): Remove macro.
10084         * config/fr30/fr30.c (TARGET_CAN_ELIMINATE): Define macro.
10085         (fr30_can_eliminate): New function.
10086
10087         * config/frv/frv.h (CAN_ELIMINATE): Remove macro.
10088         * config/frv/frv.c (TARGET_CAN_ELIMINATE): Define macro.
10089         (frv_can_eliminate): New function.
10090
10091         * config/h8300/h8300.h (CAN_ELIMINATE): Remove macro.
10092         * config/h8300/h8300.c (TARGET_CAN_ELIMINATE): Define macro.
10093         (h8300_can_eliminate): New function.
10094
10095         * config/i386/i386.h (CAN_ELIMINATE): Remove macro.
10096         * config/i386/i386.c (TARGET_CAN_ELIMINATE): Define macro.
10097         (i386_can_eliminate): Declare as static, change return type to bool.
10098         * config/i386/i386-protos.h (i386_can_eliminate): Remove.
10099
10100         * config/ia64/ia64.h (CAN_ELIMINATE): Remove macro.
10101         * config/ia64/ia64.c (TARGET_CAN_ELIMINATE): Define macro.
10102         (ia64_can_eliminate): New function.
10103
10104         * config/iq2000/iq2000.h (CAN_ELIMINATE): Remove macro.
10105         * config/iq2000/iq2000.c (TARGET_CAN_ELIMINATE): Define macro.
10106         (iq2000_can_eliminate): New function.
10107
10108         * config/m32r/m32r.h (CAN_ELIMINATE): Remove macro.
10109         * config/m32r/m32r.c (TARGET_CAN_ELIMINATE): Define macro.
10110         (m32r_can_eliminate): New function.
10111
10112         * config/m68hc11/m68hc11.h (CAN_ELIMINATE): Remove macro.
10113         * config/m68hc11/m68hc11.c (TARGET_CAN_ELIMINATE): Define macro.
10114         (m68hc11_can_eliminate): New function.
10115
10116         * config/m68k/m68k.h (CAN_ELIMINATE): Remove macro.
10117         * config/m68k/m68k.c (TARGET_CAN_ELIMINATE): Define macro.
10118         (m68k_can_eliminate): New function.
10119
10120         * config/mep/mep.h (CAN_ELIMINATE): Remove macro.
10121         * config/mep/mep.c (TARGET_CAN_ELIMINATE): Define macro.
10122         (mep_can_eliminate): New function.
10123
10124         * config/mips/mips.h (CAN_ELIMINATE): Remove macro.
10125         * config/mips/mips.c (TARGET_CAN_ELIMINATE): Define macro.
10126         (mips_can_eliminate): New function.
10127
10128         * config/rs6000/rs6000.h (CAN_ELIMINATE): Remove macro.
10129         * config/rs6000/rs6000.c (TARGET_CAN_ELIMINATE): Define macro.
10130         (rs6000_can_eliminate): New function.
10131
10132         * config/s390/s390.h (CAN_ELIMINATE): Remove macro.
10133         * config/s390/s390.c (TARGET_CAN_ELIMINATE): Define macro.
10134         (s390_can_eliminate): Declare as static.
10135         * config/s390/s390-protos.h (sparc_can_eliminate): Remove.
10136
10137         * config/score/score.h (CAN_ELIMINATE): Remove macro.
10138         * config/score/score.c (TARGET_CAN_ELIMINATE): Define macro.
10139         (score_can_eliminate): New function.
10140
10141         * config/sparc/sparc.h (CAN_ELIMINATE): Remove macro.
10142         * config/sparc/sparc.c (TARGET_CAN_ELIMINATE): Define macro.
10143         (sparc_can_eliminate): Declare as static.
10144         * config/sparc/sparc-protos.h (sparc_can_eliminate): Remove.
10145
10146         * config/stormy16/stormy16.h (CAN_ELIMINATE): Remove macro.
10147         * config/stormy16/stormy16.c (TARGET_CAN_ELIMINATE): Define macro.
10148         (xstormy16_can_eliminate): New function.
10149
10150         * config/v850/v850.h (CAN_ELIMINATE): Remove macro.
10151         * config/v850/v850.c (TARGET_CAN_ELIMINATE): Define macro.
10152         (v850_can_eliminate): New function.
10153
10154 2009-08-25  Uros Bizjak  <ubizjak@gmail.com>
10155
10156         * config/alpha/alpha.md (*cmpdf_ieee_ext[123]): Remove.
10157         (*cmpdf_internal): Enable for all ALPHA_FPTM levels.
10158         (*movdfcc_ext[1234]): Disable for IEEE mode.
10159
10160 2009-08-25  Eric Botcazou  <ebotcazou@adacore.com>
10161
10162         * gimplify.c (prepare_gimple_addressable): New static function.
10163         (gimplify_modify_expr_to_memcpy): Invoke it on the RHS before marking
10164         it addressable.
10165         (gimplify_addr_expr): Invoke it similarly on the operand instead of
10166         manually fiddling with it.
10167
10168 2009-08-25  Michael Matz  <matz@suse.de>
10169
10170         * expr.h (jumpifnot_1, jumpif_1, do_jump_1): Declare.
10171         * dojump.c (do_jump_by_parts_greater): Take two operands instead of
10172         full expression.
10173         (do_jump_by_parts_equality, do_compare_and_jump): Ditto.
10174         (jumpifnot_1, jumpif_1): New wrappers for do_jump_1.
10175         (do_jump): Split out code for simple binary comparisons into ...
10176         (do_jump_1): ... this, taking the individual operands and code.
10177         Change callers to helper function above accordingly.
10178         * expr.c (expand_expr_real_1): Use jumpifnot_1 for simple binary
10179         comparisons.
10180
10181 2009-08-25  Michael Matz  <matz@suse.de>
10182
10183         * expr.h (struct separate_ops, sepops): New type for passing
10184         around an exploded simple expression.
10185         * optabs.c (expand_widen_pattern_expr, expand_vec_shift_expr):
10186         Use this structure instead of expression tree.
10187         (get_vcond_icode, expand_vec_cond_expr_p): Don't take whole
10188         expression, only its type.
10189         (expand_vec_cond_expr): Take type and individual operands instead
10190         of full expression.
10191         * optabs.h (expand_widen_pattern_expr, expand_vec_cond_expr,
10192         expand_vec_shift_expr): Change prototype accordingly.
10193         * tree-vect-stmts.c (vectorizable_condition): Change call of
10194         expand_vec_cond_expr_p to pass only type.
10195         * expr.c (do_store_flags): Change prototype and implementation
10196         to take an exploded expression.
10197         (expand_expr_real_1): New local ops initialized with details
10198         of the full expression.  Use it instead of full
10199         expression in calls to do_store_flags, expand_vec_cond_expr,
10200         expand_widen_pattern_expr and expand_vec_shift_expr.
10201
10202 2009-08-25  Michael Matz  <matz@suse.de>
10203
10204         * expr.c (expand_expr_real_1): New local treeop0, treeop1,
10205         treeop2 initialized with first three operands of the full expression.
10206         Substitute all TREE_OPERAND (exp, [012]) calls with them.
10207
10208 2009-08-25  Kai Tietz  <kai.tietz@onevision.com>
10209
10210         * gcc/gthr-win32.h (__UNUSED_PARAM): Define, if not already present.
10211         (__gthread_objc_condition_allocate): Mark arguments as unused.
10212         (__gthread_objc_condition_deallocate): Likewise.
10213         (__gthread_objc_condition_wait): Likewise.
10214         (__gthread_objc_condition_broadcast): Likewise.
10215         (__gthread_objc_condition_signal): Likewise.
10216         (__gthread_objc_thread_detach): Cast via INT_PTR to pointer.
10217         (__gthread_objc_thread_id): Likewise.
10218
10219 2009-08-25  Janus Weil  <janus@gcc.gnu.org>
10220
10221         PR middle-end/41149
10222         * tree-pretty-print.c (print_call_name): Print the correct call name
10223         for procedure pointer components.
10224
10225 2009-08-24  Steve Ellcey  <sje@cup.hp.com>
10226
10227         * config/ia64/ia64.c (ia64_promote_function_mode): Call
10228         default_promote_function_mode when not VMS.
10229
10230 2009-08-24  Olivier Hainque  <hainque@adacore.com>
10231
10232         * convert.c (convert_to_integer): Don't assume an input pointer is
10233         POINTER_SIZE wide.  Fetch from the type instead.
10234
10235 2009-08-24  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
10236
10237         * configure.ac (AC_PREREQ): Bump to 2.64.
10238
10239 2009-08-24  Rafael Avila de Espindola  <espindola@google.com>
10240
10241         * gcc.c (standard_exec_prefix_1,standard_exec_prefix_2): Remove.
10242         (process_command): Don't search standard_exec_prefix_1 and
10243         standard_exec_prefix_2.
10244
10245 2009-08-24  Ramana Radhakrishnan  <ramana.radhakrishnan@arm.com>
10246
10247         * config/arm/arm.c (output_return_instruction): Handle for
10248         unified syntax.
10249
10250 2009-08-24  Ramana Radhakrishnan  <ramana.radhakrishnan@arm.com>
10251
10252         * config/arm/arm.c (arm_select_cc_mode): Handle subreg.
10253
10254 2009-08-24  Ramana Radhakrishnan  <ramana.radhakrishnan@arm.com>
10255
10256         * config/arm/vfp.md (*arm_movdi_vfp): Mark as predicable.
10257         (*arm_movdf_vfp): Likewise.
10258
10259 2009-08-24  Ramana Radhakrishnan  <ramana.radhakrishnan@arm.com>
10260
10261         * config/arm/neon.md (vashl<mode>3): Rename from ashl<mode>3.
10262         (vashr<mode>3): Rename from ashr<mode>3.
10263         (vlshr<mode>3): Rename from lshr<mode>3.
10264
10265 2009-08-24  Kai Tietz  <kai.tietz@onevision.com>
10266
10267         PR/40786
10268         * c-format.c (format_wanted_type): Add new member scalar_identity_flag.
10269         (check_format_info_main): Use scalar_identify_flag.
10270         (check_format_types): Check for scalar size identity if
10271         scalar_identify_flag is set.
10272         (printf_length_specs): Extend by new field.
10273         (asm_fprintf_length_specs): Likewise.
10274         (gcc_diag_length_specs): Likewise.
10275         (scanf_length_specs): Likewise.
10276         (strfmon_length_specs): Likewise.
10277         (gcc_gfc_length_specs): Likewise.
10278         * config/i386/msformat-c.c (ms_printf_length_specs): Likewise.
10279         (ms_printf_flag_specs): Likewise.
10280         * c-format.h (format_length_info): Add new member scalar_identity_flag.
10281
10282 2009-08-23  Uros Bizjak  <ubizjak@gmail.com>
10283
10284         PR target/40718
10285         * config/i386/i386.c (*call_pop_1): Disable for sibling calls.
10286         (*call_value_pop_1): Ditto.
10287         (*sibcall_pop_1): New insn pattern.
10288         (*sibcall_value_pop_1): Ditto.
10289
10290 2009-08-23  Alan Modra  <amodra@bigpond.net.au>
10291
10292         PR target/41081
10293         * config/rs6000/rs6000.md (rotlsi3_64, ashlsi3_64, lshrsi3_64,
10294         ashrsi3_64): New.
10295
10296 2009-08-23  Alan Modra  <amodra@bigpond.net.au>
10297
10298         PR target/41081
10299         * fwprop.c (try_fwprop_subst): Allow multiple sets.
10300         (get_reg_use_in): New function.
10301         (forward_propagate_subreg): Propagate through subreg of zero_extend
10302         or sign_extend.
10303
10304 2009-08-22  Kaz Kojima  <kkojima@gcc.gnu.org>
10305
10306         * config/sh/t-sh (TARGET_LIBGCC2_CFLAGS): Define.
10307         * config/sh/t-netbsd (TARGET_LIBGCC2_CFLAGS): Add -mieee.
10308
10309 2009-08-22  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
10310
10311         * configure.ac: Remove --with-datarootdir, --with-docdir,
10312         --with-htmldir switches.  No need to call AC_SUBST for
10313         datarootdir, docdir, htmldir any more.
10314         * configure: Regenerate.
10315         * doc/install.texi (Configuration): Document --datarootdir,
10316         --docdir, --htmldir, --pdfdir; update documentation for
10317         --infodir, --mandir.
10318         (Prerequisites): Bump Autoconf version to 2.64, Automake to 1.11,
10319         M4 to 1.4.6.
10320
10321         * aclocal.m4: Regenerate.
10322         * config.in: Regenerate.
10323         * configure: Regenerate.
10324
10325 2009-08-21  Douglas B Rupp  <rupp@gnat.com>
10326             Olivier Hainque  <hainque@adacore.com>
10327
10328         * config/ia64/ia64.c: Include libfuncs.h.
10329         (TARGET_PROMOTE_FUNCITON_MODE): Define target macro.
10330         (ia64_expand_call): Use reg 25 on VMS.
10331         (ia64_initialize_trampoline): Fix for VMS ABI.
10332         (ia64_function_arg_offset): Always returns 0 when TARGET_ABI_OPEN_VMS.
10333         (ia64_function_arg): Initialize reg 25 on VMS.
10334         Fix OpenVMS ABI issues for varargs.
10335         For OpenVMS, emit the Argument Information register set in the
10336         incoming/sibcall case as well.
10337         (ia64_arg_type): New function.
10338         (ia64_function_arg_advance): Keep track of cum->words.
10339         Fix OpenVMS ABI issues for varargs.
10340         (ia64_function_value): On VMS, promote mode of non-aggregate types.
10341         (ia64_override_options): Set flag_no_common on VMS.
10342         (ia64_init_builtins): Disable FWRITE builtin.
10343         (ia64_asm_output_external): Call DO_CRTL_NAMES.
10344         (ia64_vms_init_libfuncs): Add decc$ routines.
10345         (ia64_vms_valid_pointer_mode): New function.
10346         (ia64_struct_value_rtx): Allways NULL_RTX on VMS.
10347         (ia64_promote_function_mode): New function
10348         * config/ia64/ia64.h (TARGET_ABI_OPEN_VMS): Define as 0 for default.
10349         (LONG_DOUBLE_TYPE_SIZE): Force to 64 on VMS.
10350         (LIBCGC2_LONG_DOUBLE_TYPE_SIZE): Likewise.
10351         (INIT_CUMULATIVE_ARGS): Add atypes for VMS.
10352         (INIT_CUMULATIVE_INCOMING_ARGS): Likewise.
10353         (ASM_OUTPUT_DEF): Use ISDIGIT instead of isdigit.
10354         Suppress trailing '#' if VALUE is numeric.
10355         * config/ia64/vms.h (PROMOTE_FUNCTION_MODE): Remove, code moved to
10356         ia64_promote_function_mode.
10357         (TARGET_VALID_POINTER_MODE): Define.
10358
10359 2009-08-21  Michael Meissner  <meissner@linux.vnet.ibm.com>
10360
10361         PR target/40671
10362         * config/rs6000/rs6000.c (rs6000_override_options): Use
10363         TARGET_64BIT instead of TARGET_POWERPC64 to set the size of pointers.
10364
10365         PR target/41145
10366         * config/rs6000/rs6000.c (rs6000_handle_altivec_attribute): Fix
10367         reporting of vector + decimal/boolean/complex error.
10368
10369 2009-08-21  Jakub Jelinek  <jakub@redhat.com>
10370
10371         * config/rs6000/rs6000.c (rs6000_init_builtins): Fix type of
10372         __vector double TYPE_DECL.
10373
10374 2009-08-21  Richard Earnshaw  <rearnsha@arm.com>
10375
10376         * arm.h (MACHMODE): New define.  Include insn-modes.h if available.
10377         (CUMULATIVE_ARGS): Use MACHMODE for declaration of aapcs_vfp_mode.
10378         * arm.c (aapcs_vfp_is_call_or_return_candidate): Change base_mode
10379         to pointer to enum machine_mode.  Update all callers as needed.
10380
10381 2009-08-21  Uros Bizjak  <ubizjak@gmail.com>
10382
10383         * config/alpha/alpha.md (exception_receiver): Emit alternative
10384         GP load sequence if flag_reorder_blocks_and_partition is set.
10385         (*exception_receiver_2): Also enable when
10386         flag_reorder_blocks_and_partition is set.
10387
10388 2009-08-20  Matt Rice  <ratmice@gmail.com>
10389             Diego Novillo  <dnovillo@google.com>
10390
10391         * Makefile.in (PLUGIN_HEADERS): Include incpath.h and
10392         tree-ssa-sccvn.h.
10393
10394 2009-08-20  Richard Guenther  <rguenther@suse.de>
10395
10396         * c-objc-common.h (LANG_HOOKS_DUP_LANG_SPECIFIC_DECL): Do not define.
10397         * c-tree.h (c_dup_lang_specific_decl): Remove.
10398         (struct lang_decl, struct lang_type): Move definitions ...
10399         * c-lang.h: ... here.  New file.
10400         * c-decl.c: Include c-lang.h.
10401         (c_dup_lang_specific_decl): Remove.
10402         * c-typeck.c: Include c-lang.h.
10403         * Makefile.in (c-decl.o): Add c-lang.h dependency.
10404         (c-typeck.o): Likewise.
10405         * c-config-lang.in (gtfiles): Add c-lang.h.
10406         * gengtype.c (get_output_file_with_visibility): Handle c-lang.h
10407         like c-tree.h.
10408
10409 2009-08-20  Uros Bizjak  <ubizjak@gmail.com>
10410
10411         * config/alpha/alpha.c (alpha_end_function): Do not clear
10412         crtl->emit structure and free insn locators if cfun->is_thunk is true,
10413         this is now handled in generic code.
10414
10415 2009-08-20  Andreas Krebbel  <krebbel1@de.ibm.com>
10416
10417         * config/s390/s390.c (Z10_PREDICT_DISTANCE): New macro.
10418         (s390_z10_fix_long_loop_prediction): New function.
10419         (s390_z10_optimize_cmp): INSN walk moved to callee - s390_reorg.
10420         (s390_reorg): Walk over the INSNs and invoke
10421         s390_z10_fix_long_loop_prediction and s390_z10_optimize_cmp.
10422
10423 2009-08-20  Andreas Krebbel  <krebbel1@de.ibm.com>
10424
10425         * config/s390/s390.md ("*brx_stage1_<GPR:mode>", "*brxg_64bit",
10426         "*brx_64bit", "*brx_31bit"): New patterns.
10427         * config/s390/s390.c ('E'): New output modifier.
10428
10429 2009-08-20  Ramana Radhakrishnan  <ramana.radhakrishnan@arm.com>
10430             Richard Earnshaw  <richard.earnshaw@arm.com>
10431
10432         * config/arm/arm.c (arm_emit_movpair): Handle CONST_INT.
10433         * config/arm/arm.md (*arm_movtas_ze): New pattern for movt.
10434
10435 2009-08-19  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
10436
10437         * pa.md (reload_inhi, reload_outhi, reload_inqi, reload_outqi): New
10438         patterns.
10439         * pa.c (emit_move_sequence): Check if address of operand1 is valid
10440         for mode mode of operand0 when doing secondary reload for SAR.
10441
10442 2009-08-19  Jakub Jelinek  <jakub@redhat.com>
10443
10444         PR middle-end/41123
10445         * expr.c (expand_expr_real_1) <normal_inner_ref>: Handle all kinds
10446         of CONCAT, not just bitpos 0 bitsize size of the whole CONCAT.
10447
10448 2009-08-19  Jason Merrill  <jason@redhat.com>
10449
10450         * doc/invoke.texi (C++ Dialect Options): Note change of minimum
10451         supported template depth in C++0x.
10452
10453 2009-08-19  Jakub Jelinek  <jakub@redhat.com>
10454
10455         * config/rs6000/rs6000.c (rs6000_output_mi_thunk): Don't call
10456         free_after_compilation.
10457         * config/score/score7.c (score7_output_mi_thunk): Likewise.
10458         * config/score/score3.c (score3_output_mi_thunk): Likewise.
10459         * config/ia64/ia64.c (ia64_output_mi_thunk): Likewise.
10460         * config/mips/mips.c (mips_output_mi_thunk): Likewise.
10461         * config/sh/sh.c (sh_output_mi_thunk): Likewise.
10462         * config/m68k/m68k.c (m68k_output_mi_thunk): Likewise.
10463         * config/sparc/sparc.c (sparc_output_mi_thunk): Likewise.
10464
10465 2009-08-19  Ian Lance Taylor  <iant@google.com>
10466
10467         * doc/md.texi (Insn Canonicalizations): Correct canonicalization
10468         of (plus (mult (neg B) C) A).
10469
10470 2009-08-18  Michael Matz  <matz@suse.de>
10471
10472         * omp-low.c (optimize_omp_library_calls): Use types_compatible_p
10473         instead of comparing TYPE_MAIN_VARIANT for equality.
10474         * tree-vect-patterns.c (vect_recog_dot_prod_pattern,
10475         vect_recog_widen_mult_pattern, vect_recog_widen_sum_pattern): Ditto.
10476         * tree-vect-loop.c (vect_is_simple_reduction): Ditto.
10477         * gimplify.c (goa_lhs_expr_p): Ditto and use
10478         STRIP_USELESS_TYPE_CONVERSION.
10479
10480 2009-08-18  Michael Matz  <matz@suse.de>
10481
10482         * tree-ssa-structalias.c (create_variable_info_for): Also mark
10483         first field in a struct.
10484         (intra_create_variable_infos): Don't deal with flag_argument_noalias.
10485
10486 2009-08-18  Uros Bizjak  <ubizjak@gmail.com>
10487
10488         * config/alpha/alpha.c (alpha_output_mi_thunk_osf): Allocate insn
10489         locators before emit_insn is called.  Remove assert that
10490         cfun->is_thunk.
10491         (alpha_end_function): Clear crtl->emit structure and free insn
10492         locators if cfun->is_thunk is true.
10493
10494 2009-08-18  Jason Merrill  <jason@redhat.com>
10495
10496         * config/elfos.h (ASM_DECLARE_OBJECT_NAME): Use gnu_unique_object
10497         type if available.
10498         * configure.ac: Test for it.
10499         * configure, config.in: Regenerate.
10500         * doc/install.texi: Document --enable-gnu-unique-object.
10501
10502 2009-08-18  Richard Guenther  <rguenther@suse.de>
10503
10504         PR middle-end/41094
10505         * builtins.c (fold_builtin_pow): Fold pow(pow(x,y),z) to
10506         pow(x,y*z) only if x is nonnegative.
10507
10508 2009-08-18  Jakub Jelinek  <jakub@redhat.com>
10509
10510         * bb-reorder.c (fix_up_fall_thru_edges): Only call invert_jump
10511         on jumps.
10512
10513         PR target/40971
10514         * config/rs6000/rs6000.c (rs6000_legitimize_address): For
10515         [DT][FDI]mode ensure the offset isn't 4/8/12 bytes below 0x8000.
10516
10517 2009-08-17  DJ Delorie  <dj@redhat.com>
10518
10519         * config/m32c/m32c.md (UNS_FSETB, UNS_FREIT): New.
10520         * config/m32c/prologue.md (epilogue_freit): New.
10521         (fset_b): New.
10522         * config/m32c/m32c.c (m32c_function_needs_enter): Add prototype.
10523         (bank_switch_p): Likewise.
10524         (fast_interrupt_p): Likewise.
10525         (interrupt_p): Likewise.
10526         (m32c_conditional_register_usage): Round memregs size up.
10527         (need_to_save): We only need to save $a0 when we use ENTER.
10528         (interrupt_p): Check for fast_interrupt too.
10529         (bank_switch_p): New.
10530         (fast_interrupt_p): New.
10531         (m32c_attribute_table): Add bank_switch and fast_interrupt.
10532         (m32c_emit_prolog): Support bank switching and fast interrupts.
10533         * doc/extend.texi (Function Attributes): Add bank_switch and
10534         fast_interrupt.
10535
10536 2009-08-17  Douglas B Rupp  <rupp@gnat.com>
10537
10538         * config/alpha/alpha.c (vms_valid_pointer_mode): New function.
10539         * config/alpha/vms.h (TARGET_VALID_POINTER_MODE): Define.
10540
10541 2009-08-16  Douglas B Rupp  <rupp@gnat.com>
10542
10543         * doc/invoke.texi (Target options): Add new option list for IA-64/VMS.
10544         (menu): Add IA-64/VMS Options.
10545         (IA-64/VMS Options): Likewise.
10546
10547 2009-08-16  Richard Sandiford  <rdsandiford@googlemail.com>
10548
10549         PR target/38599
10550         * config/mips/mips.md (*lwxs): Use :P for pointer values.
10551
10552 2009-08-16  Richard Sandiford  <rdsandiford@googlemail.com>
10553
10554         * config/mips/mips-protos.h (mips_push_asm_switch): New function.
10555         (mips_pop_asm_switch): Likewise.
10556         * config/mips/mips.c (set_noreorder, set_nomacro, set_noat): Replace
10557         with...
10558         (mips_noreorder, mips_nomacro, mips_noat): ...these new variables.
10559         (mips_push_asm_switch_1, mips_pop_asm_switch_1): New functions.
10560         (mips_push_asm_switch, mips_pop_asm_switch): Likewise.
10561         (mips_print_operand_punctuation): Use them.  Check mips_noreorder
10562         instead of set_noreorder.
10563         (mips_output_function_prologue): Use the new functions.
10564         (mips_output_function_epilogue): Likewise.
10565         (mips_need_noat_wrapper_p): New function, split out from...
10566         (mips_final_prescan_insn, mips_final_postscan_insn): ...here.
10567         Use mips_push_asm_switch and mips_pop_asm_switch.
10568         * config/mips/mips.h (FUNCTION_PROFILER): Use mips_push_asm_switch
10569         and mips_pop_asm_switch.
10570         (ASM_OUTPUT_REG_POP): Likewise.
10571         (DBR_OUTPUT_SEQEND): Remove boilerplate comment.
10572         Use mips_pop_asm_switch.
10573         (mips_asm_switch): New structure.
10574         (set_noreorder, set_nomacro): Replace with...
10575         (mips_noreorder, mips_nomacro, mips_noat): ...these new variables.
10576         * config/mips/mips.md (fix_truncdfsi2_macro): Use mips_nomacro
10577         instead of set_nomacro.
10578         (fix_truncsfsi2_macro): Likewise.
10579         (cprestore): Likewise.
10580         (hazard): Use mips_noreorder instead of set_noreorder.
10581         * config/mips/sdemtk.h (FUNCTION_PROFILER): As for mips.h.
10582
10583 2009-08-16  Uros Bizjak  <ubizjak@gmail.com>
10584
10585         * config/alpha/alpha.c (alpha_end_function): Handle NULL_RTX returned
10586         from prev_active_insn.
10587
10588 2009-08-16  Anatoly Sokolov  <aesok@post.ru>
10589
10590         * config/avr/avr.h (AVR_HAVE_8BIT_SP): New macros.
10591         * config/avr/avr.c (avr_override_options): Initialize
10592         avr_current_arch variable.
10593         (avr_cpu_cpp_builtins): Define __AVR_HAVE_8BIT_SP__ or
10594         __AVR_HAVE_16BIT_SP__ according to the device type.
10595         (expand_prologue, output_movhi): Use AVR_HAVE_8BIT_SP instead of
10596         TARGET_TINY_STACK.
10597         (expand_epilogue): Use correct QI mode frame pointer for tiny stack.
10598         Use AVR_HAVE_8BIT_SP instead of TARGET_TINY_STACK.
10599
10600 2009-08-16  Dodji Seketeli  <dodji@redhat.com>
10601
10602         PR debug/37801
10603         * gcc/dwarf2out.c (gen_inlined_subroutine_die): Concentrate on
10604         generating inlined subroutine die only. We shouldn't be
10605         called for anything else.
10606         (gen_block_die): Don't generate inline subroutine debug info for
10607         abstract blocks.
10608
10609 2009-08-15  Sebastian Pop  <sebastian.pop@amd.com>
10610
10611         * graphite-poly.c (print_pbb): Print PBB index.
10612
10613 2009-08-15  Sebastian Pop  <sebastian.pop@amd.com>
10614
10615         PR middle-end/40981
10616         * graphite-interchange.c (ppl_max_for_le): Moved...
10617         * graphite-poly.c (pbb_number_of_iterations): Call ppl_max_for_le.
10618         * graphite-ppl.c (ppl_max_for_le): ... here.  Correct the use of
10619         ppl_Pointset_Powerset_C_Polyhedron_maximize.
10620         * graphite-ppl.h (ppl_max_for_le): Declared.
10621
10622 2009-08-14  Olatunji Ruwase <tjruwase@google.com>
10623
10624         * doc/extend.texi (Symbol-Renaming Pragmas): redefine_extname is
10625         supported on all platforms.
10626         * target.h (struct gcc_target): Remove handle_pragma_redefine_extname.
10627         * c-cppbuiltin.c: Remove use of targetm.handle_pragma_redefine_extname.
10628         * c-pragma.c: Likewise.
10629         * target-def.h (TARGET_INITIALIZER): Remove
10630         TARGET_HANDLE_PRAGMA_REDEFINE_EXTNAME.
10631         * config/sol2.h: Remove use of TARGET_HANDLE_PRAGMA_REDEFINE_EXTNAME.
10632
10633 2009-08-14  Douglas B Rupp  <rupp@gnat.com>
10634
10635         * config/ia64/fde-vms.c: New file.
10636         * config/ia64/fde-glibc.c (_Unwind_FindTableEntry): Add dummy arg.
10637         * config/ia64/unwind-ia64.c (UNW_ accessors): Move to unwind-ia64.h
10638         (MD_UNW_COMPATIBLE_PERSONALITY_P): Provide default.
10639         (uw_frame_state_for): Only register a personality routine if it is
10640         known to be compatible with our expectations.
10641         (_Unwind_FindEnclosingFunction, uw_frame_state_for):
10642         Declare unw_table_entry stack variable and
10643         mod all calls to _Unwind_FindTableEntry to add arg.
10644         * config/ia64/unwind-ia64.h (UNW_ accessors): Move here.
10645         (_Unwind_FindTableEntry): Add arg to prototype.
10646
10647 2009-08-14  Eric Botcazou  <ebotcazou@adacore.com>
10648
10649         * config/ia64/unwind-ia64.c (struct _Unwind_Context): Add new
10650         field 'signal_pfs_loc'.
10651         (uw_frame_state_for): Remove duplicate code dealing with leaf
10652         procedures without unwind info.
10653         If in the frame after unwinding through a signal handler, restore
10654         the AR.PFS register instead of the CFM if AR.PFS has not been saved.
10655         * config/ia64/linux-unwind.h (ia64_fallback_frame_state): Do not set
10656         'pfs_loc' to the AR.PFS location in the signal context; instead
10657         set 'signal_pfs_loc'.
10658         Manually generate the unwind info for the AR.PFS register.
10659         (ABI_MARKER_OLD_LINUX_SIGTRAMP, ABI_MARKER_OLD_LINUX_INTERRUPT,
10660         ABI_MARKER_LINUX_SIGTRAMP, ABI_MARKER_LINUX_INTERRUPT): Define.
10661         (ia64_handle_unwabi): Test 'fs->unwabi' against them.
10662         Do not set 'pfs_loc' to the AR.PFS location in the signal context;
10663         instead set 'signal_pfs_loc'.
10664         Remove code preventing the AR.PFS register from being restored
10665         from the signal context.
10666
10667 2009-08-14  Douglas B Rupp  <rupp@gnat.com>
10668             Tristan Gingold  <gingold@adacore.com>
10669
10670         * config.gcc (ia64-hp-*vms*): Insert ia64/t-ia64 in tmake_file.
10671         * config/ia64/t-vms: New file.
10672         * config/ia64/vms64.h: New file.
10673         * config/ia64/vms.h: New file.
10674         * config/ia64/vms-crtinit.asm: New file.
10675         * config/ia64/vms_symvec_libgcc_s.opt: New file.
10676         * config/ia64/vms-unwind.h: New file.
10677
10678 2009-08-14  Uros Bizjak  <ubizjak@gmail.com>
10679
10680         * config/alpha/alpha.c (alpha_emit_conditional_move): Handle
10681         TFmode compares.
10682
10683 2009-08-14  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
10684
10685         PR middle-end/30789
10686         * builtins.c (do_mpc_arg2): Make extern, define for any MPC version.
10687         Move declaration...
10688         * real.h (do_mpc_arg2): ... here.
10689         * fold-const.c (const_binop): Use MPC for complex MULT_EXPR
10690         and RDIV_EXPR.
10691
10692 2009-08-14  Rafael Avila de Espindola  <espindola@google.com>
10693
10694         * final.c (add_debug_prefix_map): Don't use GC memory for
10695         old_prefix and new_prefix.
10696
10697 2009-08-14  Richard Guenther  <rguenther@suse.de>
10698
10699         * ipa-prop.c (compute_complex_pass_through): If we cannot
10700         compute a non-varying offset for IPA_JF_ANCESTOR punt.
10701
10702 2009-08-14  Ulrich Weigand  <Ulrich.Weigand@de.ibm.com>
10703
10704         * c-lex.c (c_lex_with_flags): Increase size of local variable
10705         to avoid memory clobber.
10706
10707 2009-08-14  Paolo Bonzini  <bonzini@gnu.org>
10708
10709         PR target/40934
10710         * config/i386/i386.c (ix86_fp_comparison_strategy):
10711         Only enable/disable sahf at function granularity.
10712
10713 2009-08-14  Hans-Peter Nilsson  <hp@axis.com>
10714
10715         PR rtl-optimization/41064
10716         * reload1.c (reload_as_needed): Don't call extract_insn
10717         for known invalid replacements after calling
10718         validate_replace_rtx_group and verify_changes.
10719
10720 2009-08-14  Uros Bizjak  <ubizjak@gmail.com>
10721
10722         PR target/41019
10723         * config/i386/sse.md (SSEMODE124C8): New mode iterator.
10724         (vcond<SSEMODEF2P:mode>): Assert that operation is supported by
10725         ix86_expand_fp_vcond.
10726         (vcond<SSEMODE124C8:mode>): Use SSEMODE124C8 instead of SSEMODE124.
10727         Assert that operation is supported by ix86_expand_int_vcond.
10728         (vcondu<SSEMODE124C8:mode>): Ditto.
10729
10730 2009-08-13  DJ Delorie  <dj@redhat.com>
10731
10732         * config/i386/djgpp-stdint.h: New.
10733         * config.gcc (djgpp): Use it.
10734
10735 2009-08-13  Kaz Kojima  <kkojima@gcc.gnu.org>
10736
10737         * config/sh/sh.c (sh_override_options): When flag_exceptions or
10738         flag_unwind_tables is on, turn flag_reorder_blocks_and_partition off.
10739
10740 2009-08-13  Ghassan Shobaki  <ghassan.shobaki@amd.com>
10741
10742         * tree-ssa-loop-prefetch.c
10743         (prune_ref_by_group_reuse): Enhance probabilistic analysis
10744         for long-stride pruning.
10745         (compute_miss_rate): New function to compute the probability
10746         that two memory references access different cache lines.
10747
10748 2009-08-13  Dave Korn  <dave.korn.cygwin@gmail.com>
10749
10750         * gcc/config/i386/cygwin.h (LINK_SPEC): Add --enable-auto-image-base.
10751
10752 2009-08-13  Richard Guenther  <rguenther@suse.de>
10753
10754         PR middle-end/41047
10755         * tree-ssa-ccp.c (ccp_fold): When folding pointer additions
10756         use the constant pointer type.
10757         * gimplify.c (canonicalize_addr_expr): Canonicalize independent
10758         of CV qualifiers on the target pointer type.
10759         * tree-ssa.c (useless_type_conversion_p): Move incomplete pointer
10760         conversion check before restrict check.
10761
10762 2009-08-12  Kaz Kojima  <kkojima@gcc.gnu.org>
10763
10764         PR target/41029
10765         * config/sh/sh.md (reload_outdf__RnFRm+4): Fix thinko.
10766
10767 2009-08-12  Kaz Kojima  <kkojima@gcc.gnu.org>
10768
10769         * config/sh/sh.c (sh_promote_function_mode): Add ATTRIBUTE_UNUSED.
10770
10771 2009-08-12  Richard Guenther  <rguenther@suse.de>
10772
10773         PR tree-optimization/41011
10774         * ipa-cp.c (ipcp_lattice_from_jfunc): Deal with failing fold
10775         and reference constructing.
10776
10777 2009-08-12  Xinliang David Li  <davidxl@google.com>
10778
10779         PR tree-optimization/41012
10780         * tree-flow.h : New external interface.
10781         * gimple-low.c (check_call_arg): Change to public function.
10782         Remove argument mismatch check in lowering.
10783         * tree-inline.h (tree_can_inline_p): Interface change.
10784         * tree-inline.c (tree_can_inline_p): Fold argument mismatch check
10785         into this function.
10786         * ipa-inline.c (cgraph_decide_inlining_of_small_functions):
10787         Call change to tree_can_inline_p function.
10788         (cgraph_decide_inlining_incrementally): Ditto.
10789
10790 2009-08-12  Richard Sandiford  <rdsandiford@googlemail.com>
10791
10792         PR tree-optimization/41031
10793         * tree-outof-ssa.c (insert_value_copy_on_edge): Use promote_decl_mode
10794         on the partition variable rather than promote_mode on the source
10795         type.  Assert that the partition variable's type has the same
10796         mode as the source value's.
10797
10798 2009-08-12  Paolo Bonzini  <bonzini@gnu.org>
10799
10800         * doc/tm.texi (TARGET_PROMOTE_FUNCTION_MODE): Add documentation
10801         for for_return == 2.
10802         * function.c (assign_parm_setup_reg): Use for_return == 2, improve
10803         comments.
10804         * calls.c (expand_call): Fix typo.
10805         * explow.c (promote_decl_mode): Use for_return == 2 for RESULT_DECL
10806         and PARM_DECL.
10807         * stmt.c (expand_value_return): Use promote_function_mode to copy out
10808         of pseudo.
10809         * targhooks.c (default_promote_function_mode): Handle for_return == 2.
10810         * config/cris/cris.c (cris_promote_function_mode): Likewise.
10811         * config/mmix/mmix.c (mmix_promote_function_mode): Likewise.
10812         * config/pa/pa.c (pa_promote_function_mode): Likewise.
10813
10814 2009-08-12  Andrew Haley  <aph@redhat.com>
10815
10816         * config/arm/arm.c (arm_init_libfuncs): Add __sync_synchronize.
10817
10818 2009-08-12  Sebastian Pop  <sebastian.pop@amd.com>
10819
10820         PR bootstrap/40103
10821         * graphite.c: Remove pragma GCC diagnostic warning "-Wc++-compat".
10822
10823 2009-08-12  Richard Guenther  <rguenther@suse.de>
10824
10825         * alias.c (get_alias_set): Honor TYPE_STRUCTURAL_EQUALITY_P.
10826         * gimplify.c (gimplify_modify_expr): Do not use
10827         lang_hooks.types_compatible_p.
10828         * tree-ssa.c (useless_type_conversion_p): For aggregates
10829         just return false if the canonical types differ.
10830
10831 2009-08-12  Sebastian Pop  <sebastian.pop@amd.com>
10832
10833         PR middle-end/40980
10834         * sese.c (convert_for_phi_arg): New.
10835         (add_guard_exit_phis): Use convert_for_phi_arg.
10836
10837 2009-08-12  Sebastian Pop  <sebastian.pop@amd.com>
10838
10839         * graphite-sese-to-poly.c (pdr_add_data_dimensions): Dont add
10840         unknown subscript upper bounds.
10841
10842 2009-08-12  Sebastian Pop  <sebastian.pop@amd.com>
10843             Pranav Garg  <pranav.garg2107@gmail.com>
10844
10845         * graphite-interchange.c (gather_access_strides): Removed.
10846         (ppl_max_for_le): New.
10847         (build_linearized_memory_access): New.
10848         (memory_stride_in_loop): New.
10849         (pbb_interchange_profitable_p): Reimplemented.
10850         * graphite-ppl.h (ppl_new_id_map): New.
10851         (ppl_interchange): New.
10852
10853 2009-08-12  Sebastian Pop  <sebastian.pop@amd.com>
10854
10855         * graphite-interchange.c (compute_subscript): Removed.
10856         (compute_array_size_cstr): Removed.
10857         (compute_array_size_poly): Removed.
10858         (compute_array_size): Removed.
10859         (gather_access_strides_poly): Removed.
10860         (gather_access_strides): Empty.
10861
10862 2009-08-12  Sebastian Pop  <sebastian.pop@amd.com>
10863
10864         * graphite-dependences.c (dependence_polyhedron_1): Replace
10865         pdr_nb_subscripts with PDR_NB_SUBSCRIPTS.
10866         (graphite_legal_transform_dr): Same.
10867         (graphite_carried_dependence_level_k): Same.
10868         * graphite-poly.c (new_poly_dr): Add a parameter nb_subscripts.
10869         Initialize PDR_NB_SUBSCRIPTS.
10870         (print_pdr_access_layout): Replace pdr_nb_subscripts with
10871         PDR_NB_SUBSCRIPTS.
10872         * graphite-poly.h (struct poly_dr): Add nb_subscripts field.
10873         (PDR_NB_SUBSCRIPTS): New.
10874         (pdr_nb_subscripts): Removed.
10875         (pdr_dim): Simplified.
10876         * graphite-sese-to-poly.c (build_poly_dr): Replace pdr_nb_subscripts
10877         with PDR_NB_SUBSCRIPTS.
10878
10879 2009-08-12  Sebastian Pop  <sebastian.pop@amd.com>
10880
10881         * graphite-interchange.c (compute_array_size): Remove use of
10882         PDR_DATA_CONTAINER.
10883         * graphite-poly.c (new_poly_dr): Remove argument data_container.
10884         Do not initialize PDR_DATA_CONTAINER.
10885         (print_pdr): Do not print PDR_DATA_CONTAINER.
10886         * graphite-poly.h (struct poly_dr): Remove data_container field.
10887         (PDR_DATA_CONTAINER): Removed.
10888         * graphite-sese-to-poly.c (pdr_add_data_dimensions): Remove use of
10889         PDR_DATA_CONTAINER.
10890         (build_poly_dr): Same.
10891
10892 2009-08-12  Konrad Trifunovic  <konrad.trifunovic@gmail.com>
10893             Sebastian Pop  <sebastian.pop@amd.com>
10894
10895         * graphite-dependences.c (graphite_legal_transform_dr): Work on a
10896         copy of the dependence polyhedron.  Free the temporary objects.
10897         (graphite_carried_dependence_level_k): Free unused objects before
10898         returning.
10899
10900 2009-08-12  Sebastian Pop  <sebastian.pop@amd.com>
10901
10902         * graphite-blocking.c (scop_do_strip_mine): Call store_scattering.
10903         Early return without analyzing the data dependences if no
10904         transform has been done.  Call restore_scattering if the transform
10905         is not legal.
10906         (graphite-interchange.c): Same.
10907         * graphite-poly.c (print_scattering_function): Test for
10908         PBB_TRANSFORMED.
10909         (graphite_read_transforms): Initialize PBB_TRANSFORMED.
10910         (apply_poly_transforms): Do not gcc_assert that
10911         the transform is legal.
10912         (new_poly_bb): Initialize PBB_TRANSFORMED, PBB_SAVED and PBB_ORIGINAL.
10913         Do not initialize PBB_NB_SCATTERING_TRANSFORM, PBB_NB_LOCAL_VARIABLES,
10914         PBB_TRANSFORMED_SCATTERING, and PBB_ORIGINAL_SCATTERING.
10915         (free_poly_dr): Free PBB_TRANSFORMED, PBB_SAVED, and PBB_ORIGINAL.
10916         * graphite-poly.h (struct poly_scattering): New.
10917         (struct poly_bb): Add original, transformed, and saved fields.
10918         Remove transformed_scattering, original_scattering,
10919         nb_local_variables and nb_scattering_transform fields.
10920         (PBB_ORIGINAL, PBB_TRANSFORMED, PBB_SAVED): New.
10921         (poly_scattering_new): New.
10922         (poly_scattering_free): New.
10923         (poly_scattering_copy): New.
10924         (store_scattering_pbb): New.
10925         (store_scattering): New.
10926         (restore_scattering_pbb): New.
10927         (restore_scattering): New.
10928         * graphite-sese-to-poly.c (build_pbb_scattering_polyhedrons):
10929         Initialize PBB_TRANSFORMED and PBB_ORIGINAL.
10930
10931 2009-08-12  Sebastian Pop  <sebastian.pop@amd.com>
10932
10933         * graphite-poly.c (print_pbb): Add parentheses in the pretty print.
10934         (print_scop): Same.
10935
10936 2009-08-12  Sebastian Pop  <sebastian.pop@amd.com>
10937
10938         * Makefile.in (graphite.o): Depends on PREDICT_H.
10939         * graphite.c: Include predict.h.
10940         (graphite_finalize): Call tree_estimate_probability.
10941         * predict.c (predict_loops): Do not call scev_initialize and
10942         scev_finalize.
10943         (tree_estimate_probability_bb): New.
10944         (tree_estimate_probability): Do not initialize loops: move that
10945         code to the driver.  Call tree_estimate_probability_bb.
10946         (tree_estimate_probability_driver): New.
10947         (pass_profile): Use tree_estimate_probability_driver.
10948         * predict.h (tree_estimate_probability): Declared.
10949
10950 2009-08-12  Sebastian Pop  <sebastian.pop@amd.com>
10951
10952         * graphite-clast-to-gimple.c (gloog): Add time to TV_GRAPHITE_CODE_GEN.
10953         * graphite-dependences.c (graphite_legal_transform): Add time to
10954         TV_GRAPHITE_DATA_DEPS.
10955         (dependency_between_pbbs_p): Same.
10956         * timevar.def (TV_GRAPHITE_DATA_DEPS, TV_GRAPHITE_CODE_GEN): New.
10957
10958 2009-08-12  Andrey Belevantsev  <abel@ispras.ru>
10959
10960         PR rtl-optimization/41033
10961         * alias.c (nonoverlapping_component_refs_p): Punt when strict
10962         aliasing is disabled.
10963
10964 2009-08-11  Adam Nemet  <anemet@caviumnetworks.com>
10965
10966         * config/mips/predicates.md (qi_mask_operand, hi_mask_operand,
10967         si_mask_operand, and_load_operand, low_bitmask_operand,
10968         and_reg_operand, and_operand): New predicates.
10969         * config/mips/constraints.md (Yb, Yh, Yw, Yz): New constraints.
10970         * config/mips/mips.c (and_operands_ok): New function.
10971         * config/mips/mips-protos.h (and_operands_ok): Declare it.
10972         * config/mips/mips.md (move_type): Add ext_ins and logical.
10973         (type): Handle them.
10974         (and<mode>3): Use and_reg_operand as the second operand's predicate.
10975         (*and<mode>3): Add alternatives for lbu, lhu, lwu, <d>ext and
10976         shift_shift.  Remove commutative constraint modifier.
10977         (*and<mode>3_mips16): Add alternatives for lbu, lhu, lwu and
10978         shift_shift.
10979         (*clear_upper32_dext): Remove define_insn_and_split.
10980         (*clear_upper32): Turn this define_insn_and_split ...
10981         (splitter for ANDing register with 0xffff_ffff): .. into this.
10982
10983 2009-08-11  Adam Nemet  <anemet@caviumnetworks.com>
10984
10985         * combine.c (try_widen_shift_mode): Factor out code to check if an
10986         integer constant is a low-order bitmask from here ...
10987         * rtlanal.c (low_bitmask_len): ... to here.
10988         * rtl.h (low_bitmask_len): Declare.
10989
10990 2009-08-11  Uros Bizjak  <ubizjak@gmail.com>
10991
10992         PR target/8603
10993         * config/alpha/alpha.md (addsi3): Remove expander.
10994         (addsi3): Rename from *addsi3_internal insn pattern.
10995         (subsi3): Remove expander.
10996         (subsi3): Rename from *subsi3_internal insn pattern.
10997
10998 2009-08-11  Douglas B Rupp  <rupp@gnat.com>
10999
11000         * config/alpha/alpha.c (alpha_init_builtins): Nullify FWRITE and
11001         FWRITE_UNLOCKED.
11002
11003 2009-08-11  Vasiliy Fofanov  <fofanov@adacore.com>
11004             Eric Botcazou  <botcazou@adacore.com>
11005             Douglas B Rupp  <rupp@gnat.com>
11006
11007         * config/alpha/alpha.c (alpha_return_in_memory): On VMS, ensure
11008         that records that fit in 64 bits are returned by immediate value,
11009         as required by OpenVMS Calling Standard.
11010         (function_value): Adjust for above modification.
11011         (alpha_va_start) <TARGET_ABI_OPEN_VMS>: Use
11012         virtual_incoming_args_rtx as base object, not next_arg.
11013         * config/alpha/vms.h (DEFAULT_PCC_STRUCT_RETURN): Define as 0.
11014
11015 2009-08-11  Ulrich Weigand  <Ulrich.Weigand@de.ibm.com>
11016
11017         * reload.c (find_reloads_subreg_address): Check the original
11018         req_equiv_mem address to detect the case where an address is
11019         not valid in the outer mode.
11020
11021 2009-08-11  Richard Guenther  <rguenther@suse.de>
11022
11023         PR bootstrap/40788
11024         * builtins.c (gimplify_va_arg_expr): Do not call SET_EXPR_LOCATION.
11025
11026 2009-08-10  Douglas B Rupp  <rupp@gnat.com>
11027
11028         * config/alpha/vms.h (OPTIMIZATION_OPTIONS): Remove
11029         (OVERRIDE_OPTIONS): Incorporate removed OPTIMIZATION_OPTIONS.
11030
11031 2009-08-10  Olivier Hainque  <hainqueu@adacore.com>
11032             Douglas B Rupp  <rupp@gnat.com>
11033
11034         * config/alpha/alpha.c (alpha_sa_size): Force procedure type to
11035         PT_STACK when frame_pointer_needed on OpenVMS.
11036         (alpha_pv_save_size, alpha_using_fp): Remove.
11037         (alpha_vms_can_eliminate): New function. Support for CAN_ELIMINATE
11038         with proper processing for PT_NULL.
11039         (alpha_vms_initial_elimination_offset): New function. Support for
11040         INITIAL_ELIMINATION_OFFSET with proper processing for PT_NULL.
11041         (alpha_sa_size): Force procedure type to PT_STACK when
11042         frame_pointer_needed on OpenVMS.
11043         * config/alpha/alpha-protos.h (alpha_pv_save_size): Remove prototype.
11044         (alpha_using_fp): Likewise.
11045         (alpha_vms_can_eliminate): Add prototype.
11046         (alpha_vms_initial_elimination_offset): Likewise.
11047         * config/alpha/vms.h (CAN_ELIMINATE, INITIAL_ELIMINATION_OFFSET):
11048         Call alpha_vms_can_eliminate and alpha_vms_initial_elimination_offset.
11049
11050 2009-08-10  Eric Botcazou  <botcazou@adacore.com>
11051             Douglas B Rupp  <rupp@gnat.com>
11052
11053         * config/alpha/alpha.c (common_object_handler): New function.
11054         (vms_attribute_table): Declare a single attribute "common_object".
11055         (vms_output_aligned_decl_common): New global function.
11056         (SECTION_VMS_OVERLAY): Delete.
11057         (SECTION_VMS_GLOBAL): Likewise.
11058         (SECTION_VMS_INITIALIZE): Likewise.
11059         (vms_asm_named_section): Remove support for above flags.
11060         (vms_section_type_flags): Delete.
11061         (TARGET_SECTION_TYPE_FLAGS): Likewise.
11062         * config/alpha/alpha-protos.h (vms_output_aligned_decl_common): New.
11063         * config/alpha/vms.h (ASM_OUTPUT_ALIGNED_COMMON): Delete.
11064         (ASM_OUTPUT_ALIGNED_DECL_COMMON): New macro.
11065
11066 2009-08-10  SUGIOKA Toshinobu  <sugioka@itonet.co.jp>
11067
11068         PR target/41015
11069         * longlong.h [__sh__] (udiv_qrnnd): Add T register to clobber list.
11070         (sub_ddmmss): Likewise.
11071
11072 2009-08-10  Andreas Tobler  <a.tobler@schweiz.org>
11073
11074         PR bootstrap/41018
11075         * config/rs6000/freebsd.h: Define SVR4_ASM_SPEC. Adjust copyright
11076         year.
11077
11078 2009-08-10  Ulrich Weigand  <Ulrich.Weigand@de.ibm.com>
11079
11080         PR target/37053
11081         * reload1.c (reload_as_needed): Use cancel_changes to completely
11082         undo a failed replacement attempt.
11083
11084 2009-08-10  Richard Guenther  <rguenther@suse.de>
11085
11086         PR middle-end/41006
11087         * tree-ssa.c (useless_type_conversion_p_1): Fold into ...
11088         (useless_type_conversion_p): ... here.  Require pointer targets
11089         to be compatible.
11090
11091 2009-08-10  Dodji Seketeli  <dodji@redhat.com>
11092
11093         PR c++/40866
11094         * tree-inline.c (copy_statement_list): The resulting copy shouldn't
11095         loose the original type of the statement list.
11096
11097 2009-08-09  Douglas B Rupp  <rupp@gnat.com>
11098
11099         * config/alpha/alpha.c: Include libfuncs.h
11100         (avms_asm_output_extern): New function.
11101         (alpha_init_libfuncs): Init some decc libfuncs.
11102         * config/alpha/alpha-protos.h (avms_asm_output_external): Declare.
11103         * config/alpha/vms.h (ASM_OUTPUT_EXTERNAL): Define.
11104         (DO_CRTL_NAMES): Define.
11105         (LIB_SPEC): Remove.
11106         * config/alpha/vms64.h (POINTERS_EXTEND_UNSIGNED): Remove undef.
11107         (LONG_TYPE_SIZE): Define.
11108         (TARGET_OS_CPP_BUILTINS): Define with __LONG_POINTERS=1
11109         (SUBTARGET_SWITCHES): Define malloc64 switch.
11110         (TARGET_DEFAULT): Default MASK_MALLOC64 set.
11111         (MASK_RETURN_ADDR): Define.
11112         doc/invoke.texi (mmalloc64): Document switch.
11113
11114 2009-08-09  Olivier Hainque  <hainque@adacore.com>
11115             Douglas B Rupp  <rupp@gnat.com>
11116
11117         * config/alpha/alpha.c (struct machine_function): New flag for VMS,
11118         uses_condition_handler.
11119         (alpha_expand_builtin_establish_vms_condition_handler): New expander.
11120         (alpha_expand_builtin_revert_vms_condition_handler): New expander.
11121         (enum alpha_builtin): New ALPHA_BUILTIN_REVERT_VMS_CONDITION_HANDLER
11122         and ALPHA_BUILTIN_ESTABLISH_VMS_CONDITION_HANDLER values.
11123         (code_for_builtin): New insn codes for the new alpha_builtins.
11124         (alpha_init_builtins): Register the new functions as BUILT_IN_MD.
11125         (alpha_sa_size): Account for uses_condition_handler.
11126         (alpha_expand_prologue): Likewise.
11127         (alpha_start_function): Likewise.
11128         (alpha_expand_epilogue): Likewise.
11129         * config/alpha/alpha-protos.h: Prototype the new alpha.c builtin
11130         establish/revert expanders.
11131         * config/alpha/alpha.h (DWARF_FRAME_REGNUM): Define.
11132         * config/alpha/alpha.md (builtin_establish_vms_condition_handler):
11133         New expander, resorting to the alpha.c associated function.
11134         (builtin_revert_vms_condition_handler): Likewise.
11135         * config/alpha/vms-gcc_shell_handler.c: New file. Implements
11136         __gcc_shell_handler, the static VMS condition handler used as
11137         an indirection wrapper to the current dynamically established
11138         handler.
11139         * config/alpha/vms-unwind.h: Complete rewrite.
11140         * config/alpha/t-vms (LIB2FUNCS_EXTRA): Add vms-gcc_shell_handler.c
11141         * config/alpha/vms.h (MD_UNWIND_SUPPORT):
11142
11143 2009-08-09  Eric Botcazou  <botcazou@adacore.com>
11144             Douglas B Rupp  <rupp@gnat.com>
11145
11146         * config/alpha/alpha.c (alpha_links): Add 'target' field.
11147         (alpha_need_linkage): Handle aliases.  Return function symbol.
11148         (alpha_use_linkage): Rename 'linkage' argument to 'func'.
11149         Use ultimate alias target for the linkage name.
11150         * config/alpha/alpha.md (movmemdi): Use the symbol returned
11151         by alpha_need_linkage for the function symbol.
11152         (setmemdi): Likewise.
11153
11154 2009-08-09  Douglas B Rupp  <rupp@gnat.com>
11155
11156         * config/alpha/alpha.c (TARGET_ASM_UNALIGNED_*_OP): Define if on VMS.
11157         * config/alpha/vms.h (OBJECT_FORMAT_ELF): Define.
11158         (ASM_WEAKEN_LABEL): Define.
11159         (CRT_CALL_STATIC_FUNCTION): Define.
11160         (STARTFILE_SPEC): Add crtbegin.o crtbeginS.o.
11161         (ENDFILE_SPEC): Define.
11162         (INIT_SECTION_ASM_OP): Define.
11163         * config/alpha/vms-dwarf2eh.asm (__EH_FRAME_BEGIN__): Remove.
11164         * config/alpha/t-vms (EXTRA_PARTS): Add crtbegin.o crtbeginS.o
11165         crtend.o crtendS.o.
11166         (MULTILIB_OSDIRNAMES): Define.
11167         (shlib_version): Define.
11168         (SHLIB_EXT): Define.
11169         (SHLIB_OBJS): Define.
11170         (SHLIB_NAME): Define.
11171         (SHLIB_MULTILIB): Define.
11172         (SHLIB_INSTALL): Define.
11173         (SHLIB_SYMVEC): Define.
11174         (SHLIB_SYMVECX2): Define.
11175         (SHLIB_LINK): Define.
11176
11177 2009-08-09  Douglas B Rupp  <rupp@gnat.com>
11178
11179         * config/alpha/alpha.c (alpha_initialize_trampoline):
11180         Initialize VMS trampoline IAW ABI for bounded procedure calls.
11181         (alpha_start_function): Emit transfer address on nested functions
11182         for VMS trampoline call.
11183         * config/alpha/t-vms (LIB2FUNCS_EXTRA): Remove vms_tramp.asm
11184         since no longer used.
11185         * config/alpha/vms-tramp.asm: Remove.
11186         * config/alpha/vms.h (TRAMPOLINE_TEMPLATE): Leave undefined
11187         since now only data initialized at runtime.
11188
11189 2009-08-09  Douglas B Rupp  <rupp@gnat.com>
11190
11191         * config/alpha/vms.h (HANDLE_SYSV_PRAGMA): Define.
11192         (LINK_GCC_C_SEQUENCE_SPEC): Define.
11193         (MD_EXEC_PREFIX): Remove, no longer used.
11194         (MD_STARTFILE_PREFIX): Likewise.
11195         (INCLUDE_DEFAULTS): Likewise.
11196         * config/alpha/t-vms:
11197         (vms-dwarf2.o, vms-dwarf2eh.o): Use GCC_FOR_TARGET to compile.
11198
11199 2009-08-09  Richard Guenther  <rguenther@suse.de>
11200
11201         PR tree-optimization/41016
11202         * tree-ssa-ifcombine.c (get_name_for_bit_test): Fix tuplification bug.
11203         (operand_precision): Remove.
11204         (integral_operand_p): Likewise.
11205         (recognize_single_bit_test): Adjust.
11206
11207 2009-08-09  Richard Sandiford  <rdsandiford@googlemail.com>
11208
11209         * c-common.c (c_fully_fold_internal): Issue a warning if a binary
11210         operation overflows.  Likewise non-cast unary arithmetic.
11211         If one arm of a conditional expression is always taken,
11212         inhibit evaluation warnings for the other arm.  Likewise inhibit
11213         evaluation warnings for the second && or || operand if the first
11214         operand is enough to determine the result.
11215         * c-typeck.c (build_conditional_expr): Apply the same inhibition
11216         rules here.
11217         (build_binary_op): Prevent duplicate evaluation warnings.
11218
11219 2009-08-09  Richard Sandiford  <rdsandiford@googlemail.com>
11220
11221         * tree-out-of-ssa.c (insert_value_copy_on_edge): If the source
11222         and destination have different modes, Use promote_mode to
11223         determine the signedness of the conversion.  Assert that the
11224         promoted source mode matches the destination mode.  Don't pass
11225         the destination and destination mode to expand_expr if the source
11226         mode is different.  Simplify conversion logic.
11227
11228 2009-08-09  Ira Rosen  <irar@il.ibm.com>
11229
11230         PR tree-optimization/41008
11231         * tree-vect-loop.c (vect_is_simple_reduction): Get operands
11232         from condition only in case it's a comparison. Adjust checks.
11233
11234 2009-08-09  Bernd Schmidt  <bernd.schmidt@analog.com>
11235
11236         * tree-dfa.c (renumber_gimple_stmt_uids_in_blocks): New function.
11237         * tree-flow.h (renumber_gimple_stmt_uids_in_blocks): Declare it.
11238         * tree-ssa-loop-ivopts.c (comp_cost): Make COST an integer.
11239         (enum iv_position): Add IP_AFTER_USE and IP_BEFORE_USE.
11240         (dump_cand): Handle them.
11241         (struct iv_cand): New members COST_STEP and AINC_USE.
11242         (stmt_after_increment): Likewise.
11243         (stmt_after_inc_pos): Renamed from stmt_after_ip_original_pos.  All
11244         callers changed.  Use gimple_uid comparison instead of scanning.
11245         (add_candidate_1): When looking for identical candidates, take
11246         AINC_USE into account.  Set it for new candidates.
11247         (force_expr_to_var_cost): Cast target_spill_cost to int.
11248         (get_address_cost): New arguments STMT_AFTER_INC and MAY_AUTOINC.
11249         All callers changed.  Check for availability of autoinc addressing
11250         modes, both in general for a given mode, and in the specific use case.
11251         (get_computation_cost_at): New argument CAN_AUTOINC.  All callers
11252         changed.
11253         (get_computation_cost): Likewise.
11254         (autoinc_possible_for_pair, set_autoinc_for_original_candidates,
11255         add_autoinc_candidates): New static functions.
11256         (add_candidate): Call add_autoinc_candidates for candidates based on
11257         a USE_ADDRESS use.
11258         (find_iv_candidates): Call set_autoinc_for_original_candidates.
11259         (determine_use_iv_cost_address): If we have an autoinc candidate at
11260         the matching use, verify autoinc is possible and subtract the cost
11261         of the candidate's step from the cost.
11262         (determine_iv_cost): Record the cost of the increment in the COST_STEP
11263         member of the candidate.
11264         (tree_ssa_iv_optimize_loop): Swap the calls to determine_iv_costs and
11265         determine_use_iv_costs.  Call renumber_gimple_stmt_uids_in_blocks.
11266
11267 2009-08-09  Douglas B Rupp  <rupp@gnat.com>
11268
11269         * config.build (ia64-hp-*vms*): New target.
11270         (alpha64-dec-*vms*,alpha*-dec-*vms*): Fix for config/vms and unify
11271         with ia64-hp-*vms*.
11272         * config.gcc (ia64-hp-*vms*): New target.
11273         (alpha64-dec-*vms*,alpha*-dec-*vms*): Fix for config/vms and unify
11274         with ia64-hp-*vms*.
11275         * config.host (ia64-hp-*vms*): New target.
11276         (alpha64-dec-*vms*,alpha*-dec-*vms*): Fix for config/vms and unify
11277         with ia64-hp-*vms*.
11278
11279 2009-08-08  Richard Guenther  <rguenther@suse.de>
11280
11281         PR tree-optimization/40991
11282         * tree-ssa-pre.c (eliminate): Delay purging EH edges.
11283
11284 2009-08-08  Richard Sandiford  <rdsandiford@googlemail.com>
11285
11286         * combine.c (gen_lowpart_or_truncate): Exclude CONST_INTs from
11287         mode check.  Do truncations in an integer mode.
11288         (force_to_mode): Handle subregs for all mode types.  Only do
11289         arithmetic simplifications on integer modes.
11290
11291 2009-08-07  Richard Guenther  <rguenther@suse.de>
11292
11293         PR tree-optimization/40999
11294         * tree-ssa-ccp.c (get_symbol_constant_value): Handle CONST_DECLs.
11295         (maybe_fold_reference): Lookup constant initializers.
11296         (fold_gimple_assign): Likewise.
11297
11298 2009-08-07  Richard Guenther  <rguenther@suse.de>
11299
11300         * tree-ssa.c (useless_type_conversion_p_1): Only for types
11301         that require structural equality defer to the langhook.
11302
11303 2009-08-07  Martin Jambor  <mjambor@suse.cz>
11304
11305         * ipa-prop.h (enum jump_func_type): New value IPA_JF_ANCESTOR, changed
11306         comments.
11307         (struct ipa_pass_through_data): New type.
11308         (struct ipa_ancestor_jf_data): New type.
11309         (union jump_func_value): Removed field formal_id, added fields
11310         pass_through and ancestor.
11311         (struct ipa_param_call_note): Changed type of formal_id to int from
11312         unsigned.
11313         * ipa-prop.c (ipa_print_node_jump_functions): Print pass through with
11314         operations jump functions and ancestor jump functions.
11315         (compute_complex_pass_through): New function.
11316         (compute_scalar_jump_functions): Call compute_complex_pass_through,
11317         reflect changes in the jump function strucutre.
11318         (update_jump_functions_after_inlining): Ignore complex pass-through
11319         and ancestor jump functions.
11320         * ipa-cp.c (ipcp_lattice_from_jfunc): Added support for ancestor and
11321         polynomial pass-through with operation jump functions.
11322
11323 2009-08-07  Jakub Jelinek  <jakub@redhat.com>
11324
11325         * dwarf2out.c (output_fde): When doing hot/cold partitioning, use
11326         fde->dw_fde_begin as begin label instead of hot/cold label.
11327         Use LLSDAC label instead of LLSDA for second section lsda.
11328         (dwarf2out_do_cfi_startproc): Add SECOND argument.  Use LLSDAC
11329         label instead of LLSDA if it is true.
11330         (dwarf2out_begin_prologue, dwarf2out_switch_text_section): Adjust
11331         callers.
11332         * except.c (add_call_site, dw2_size_of_call_site_table): Add
11333         SECTION argument.  Use it as index into crtl->eh.call_site_record
11334         array.
11335         (dw2_output_call_site_table): Likewise.  Add CS_FORMAT argument,
11336         use it to determine how to print table entries instead of using
11337         #ifdef HAVE_AS_LEB128.  For SECTION > 0 use hot resp. cold
11338         label instead of normal begin label as base.
11339         (sjlj_assign_call_site_values): Adjust add_call_site caller.
11340         (convert_to_eh_region_ranges): When doing hot/cold partitioning,
11341         ensure no EH range spans between sections and that landing pads
11342         are always in the corresponding section.
11343         (sjlj_size_of_call_site_table, sjlj_output_call_site_table): Adjust
11344         for crtl->eh.call_site_record being an array rather than scalar.
11345         (output_one_function_exception_table): New function, copied
11346         from output_function_exception_table.  Adjust
11347         dw2_size_of_call_site_table, dw2_output_call_site_table
11348         callers.  For SECOND section use *C suffixed labels.
11349         (output_function_exception_table): Call
11350         output_one_function_exception_table and, when doing hot/cold
11351         partitioning, also another time for the second section.
11352         * opts.c: Include except.h.
11353         (decode_options): Allow -freorder-blocks-and-partition with
11354         exceptions, unless SJLJ or TARGET_UNWIND_INFO.
11355         * Makefile.in (opts.o): Depend on $(EXCEPT_H).
11356         * function.h (struct rtl_eh): Change call_site_record from
11357         scalar into array of 2 elements.
11358
11359 2009-08-07  Martin Jambor  <mjambor@suse.cz>
11360
11361         * ipa-prop.c (count_formal_params_1): New function.
11362         (ipa_get_vector_of_formal_parms): New function.
11363         (get_vector_of_formal_parm_types): New function.
11364         (ipa_modify_formal_parameters): New function.
11365         (ipa_modify_call_arguments): New function.
11366         (index_in_adjustments_multiple_times_p): New function.
11367         (ipa_combine_adjustments): New function.
11368         (ipa_dump_param_adjustments): New function.
11369         * ipa-prop.h (struct ipa_parm_adjustment): New type.
11370         (ipa_get_vector_of_formal_parms): Declare.
11371         (ipa_modify_formal_parameters): Declare.
11372         (ipa_modify_call_arguments): Declare.
11373         (ipa_combine_adjustments): Declare.
11374         (ipa_dump_param_adjustments): Declare.
11375         (build_ref_for_offset): Declare.
11376         * Makefile.in (tree-sra.o): Add ipa-prop.h to dependencies.
11377         * tree-sra.c: Include ipa-prop.c.
11378         (build_ref_for_offset): Make public.
11379
11380 2009-08-06  Neil Vachharajani  <nvachhar@gmail.com>
11381
11382         * value-prof.c (init_pid_map): Replace xmalloc with XCNEWVEC.
11383
11384 2009-08-06  Thomas Schwinge  <tschwinge@gnu.org>
11385
11386         * gcc/doc/extend.texi (__builtin_extract_return_address)
11387         (__builtin_frob_return_address): Document.
11388
11389 2009-08-06  Paul Brook  <paul@codesourcery.com>
11390
11391         * config/arm/lib1funcs.asm (ARM_DIV_BODY): Add Thumb-2 implementation.
11392         (udivsi3, aeabi_uidivmod, divsi3, aeabi_idivmod): Only use Thumb-1
11393         implementation on ARMv6-M.
11394
11395 2009-08-06  Richard Earnshaw  <rearnsha@arm.com>
11396
11397         * doc/extend.texi (pcs): Document new attribute for ARM.
11398
11399 2009-08-06  Richard Earnshaw  <rearnsha@arm.com>
11400
11401         * arm.c (pcs_attribute_args): Comment out unsupported attribute
11402         variants.
11403
11404 2009-08-06  Richard Earnshaw  <rearnsha@arm.com>
11405
11406         * arm.c (arm_handle_pcs_attribute): Pass the entire name object to
11407         warning ().
11408
11409 2009-08-06  Richard Earnshaw  <rearnsha@arm.com>
11410
11411         * arm.c (arm_handle_pcs_attribute): Use %qE in warning.
11412
11413 2009-08-06  Richard Earnshaw  <rearnsha@arm.com>
11414
11415         Merge ARM/hard_vfp_branch to trunk.
11416
11417         2009-08-04  Richard Earnshaw  <rearnsha@arm.com>
11418
11419         * arm.c (libcall_eq): New function.
11420         (libcall_hash): New function.
11421         (add_libcall): New function.
11422         (arm_libcall_uses_aapcs_base): New function.
11423         (arm_libcall_value): Use arm_libcall_uses_aapcs_base to check for
11424         libcalls using the base PCS.
11425         (arm_init_cumulative_args): Likewise.
11426
11427         2009-07-20  Joseph Myers  <joseph@codesourcery.com>
11428
11429         * config/arm/arm.c (arm_libcall_value, arm_init_cumulative_args):
11430         Use base ABI for conversion libfuncs between HFmode and SFmode.
11431
11432         2009-05-12  Joseph Myers  <joseph@codesourcery.com>
11433
11434         * config/arm/arm.c (aapcs_vfp_sub_candidate): Use V2SImode and
11435         V4SImode as representatives of all 64-bit and 128-bit vector
11436         types.  Allow vector types without vector modes.
11437         (aapcs_vfp_is_call_or_return_candidate): Handle vector types
11438         without vector modes like BLKmode.
11439         (aapcs_vfp_allocate): Handle TImode for non-TARGET_NEON like
11440         BLKmode.  Avoid unsupported vector modes or TImode moves for
11441         non-TARGET_NEON.
11442         (aapcs_vfp_allocate_return_reg): Likewise.
11443         (arm_vector_mode_supported_p): Only support V2SImode, V4HImode and
11444         V8QImode if TARGET_NEON || TARGET_IWMMXT.
11445
11446         2009-05-12  Joseph Myers  <joseph@codesourcery.com>
11447
11448         * config/arm/arm.c (arm_handle_pcs_attribute): New.
11449         (arm_get_pcs_model): Pass attribute arguments to
11450         arm_pcs_from_attribute.
11451         (arm_init_cumulative_args): Use base AAPCS for conversions from
11452         floating-point types to DImode.
11453         (arm_attribute_table): Add pcs attribute.
11454         (arm_handle_pcs_attribute): New.
11455         * config/arm/bpabi.h (DECLARE_LIBRARY_RENAMES): When renaming
11456         conversions from floating-point types to DImode, also declare them
11457         to use base AAPCS and declare functions they call to use base
11458         AAPCS and their RTABI names.
11459
11460         2009-05-12  Joseph Myers  <joseph@codesourcery.com>
11461
11462         * doc/invoke.texi (-mfloat-abi=@var{name}): Remove statement about
11463         -mfloat-abi=hard not being supported for VFP.
11464
11465         2009-05-11  Kazu Hirata  <kazu@codesourcery.com>
11466
11467         * config/sparc/sparc.c (sparc_emit_float_lib_cmp): Pass a libcall
11468         SYMBOL_REF to hard_libcall_value.
11469
11470         2009-03-05  Joseph Myers  <joseph@codesourcery.com>
11471             Richard Earnshaw  <rearnsha@arm.com>
11472
11473         * config/arm/arm.c (aapcs_layout_arg): Once a co-processor argument
11474         has been put on the stack, all remaining co-processory arguments for
11475         that co-processor also go on the stack.
11476
11477         2009-03-05  Joseph Myers  <joseph@codesourcery.com>
11478
11479         * config/arm/arm.c (arm_return_in_memory): Handle returning
11480         vectors of suitable size in registers also for AAPCS case.
11481
11482         2009-01-13  Richard Earnshaw <rearnsha@arm.com>
11483
11484         * doc/tm.texi (TARGET_LIBCALL_VALUE): Add missing end statement.
11485
11486         2008-12-09  Richard Earnshaw <rearnsha@arm.com>
11487
11488         ARM Hard-VFP calling convention
11489         * target-def.h (TARGET_LIBCALL_VALUE): New hook.
11490         * target.h (gcc_target): Add libcall_value to table of call hooks.
11491         * targhooks.h (default_libcall_value): Default implementation.
11492         * targhooks.c (default_libcall_value): Likewise.
11493         * doc/tm.texi (TARGET_LIBCALL_VALUE): Document it.
11494         * optabs.c (expand_unop): Use it.
11495         * expr.h (hard_libcall_value): Pass the function RTX through.
11496         * calls.c (emit_library_call_value_1): Update call to
11497         hard_libcall_value.
11498         * explow.c (hard_libcall_value): Use new target hook.
11499         * config/arm/arm.c: Include cgraph.h
11500         (TARGET_FUNCTION_VALUE): Override default hook.
11501         (arm_pcs_default): New variable.
11502         (arm_override_options): Don't fault hard calling convention with VFP.
11503         Add support for AAPCS variants.
11504         (arm_function_value): Make static.  Handle AAPCS variants.
11505         (arm_libcall_value): New function.
11506         (arm_apply_result_size): Handle VFP registers in results.
11507         (arm_return_in_memory): Rework all AAPCS variants; handle hard-vfp
11508         conventions.
11509         (pcs_attribute_args): New variable.
11510         (arm_pcs_from_attribute): New function.
11511         (arm_get_pcs_model): New function.
11512         (aapcs_vfp_cum_init): New function.
11513         (aapcs_vfp_sub_candidate): New function.
11514         (aapcs_vfp_is_return_candidate): New function.
11515         (aapcs_vfp_is_call_candidate): New function.
11516         (aapcs_vfp_allocate): New function.
11517         (aapcs_vfp_allocate_return_reg): New function.
11518         (aapcs_vfp_advance): New function.
11519         (aapcs_cp_arg_layout): New variable.
11520         (aapcs_select_call_coproc): New function.
11521         (aapcs_select_return_coproc): New function.
11522         (aapcs_allocate_return_reg): New function.
11523         (aapcs_libcall_value): New function.
11524         (aapcs_layout_arg): New function.
11525         (arm_init_cumulative_args): Initialize AAPCS args data.
11526         (arm_function_arg): Handle AAPCS variants using new interface.
11527         (arm_arg_parital_bytes): Likewise.
11528         (arm_function_arg_advance): New function.
11529         (arm_function_ok_for_sibcall): Ensure that sibling calls agree on
11530         calling conventions.
11531         (arm_setup_incoming_varargs): Handle new AAPCS args data.
11532         * arm.h (NUM_VFP_ARG_REGS): Define.
11533         (LIBCALL_VALUE): Update.
11534         (FUNCTION_VALUE): Delete.
11535         (FUNCTION_VALUE_REGNO_P): Add VFP regs.
11536         (arm_pcs): New enum.
11537         (CUMULATIVE_ARGS): New data to support AAPCS argument marshalling.
11538         (FUNCTION_ARG_ADVANCE): Call arm_function_arg_advance.
11539         (FUNCTION_ARG_REGNO_P): Add VFP regs.
11540         * arm-protos.h (arm_function_arg_advance): Add.
11541         (aapcs_libcall_value): Add.
11542         (arm_function_value): Delete.
11543
11544 2009-08-06  Uros Bizjak  <ubizjak@gmail.com>
11545             H.J. Lu  <hongjiu.lu@intel.com>
11546
11547         PR target/40957
11548         * config/i386/i386.c (standard_sse_mode_p): Remove.
11549         (standard_sse_constant_p): Return 2 for integer mode
11550         vector_all_ones_operand when SSE2 is enabled.
11551         (standard_sse_constant_opcode)<case 2>: Always return [v]pcmpeqd.
11552         (ix86_expand_vector_move): Do not check for negative values from
11553         standard_sse_constant_p.
11554
11555 2009-08-06  Richard Guenther  <rguenther@suse.de>
11556
11557         * tree-ssa.c (useless_type_conversion_p_1): Make function and
11558         array type comparisons frontend independent.
11559         * Makefile.in (tree-ssa.o): Add $(TARGET_H) dependency.
11560         * tree-ssa-sccvn.c (copy_reference_ops_from_ref): Always fill
11561         out array reference lower bound and element size operands.
11562         (ao_ref_init_from_vn_reference): Properly compute the offset
11563         for ARRAY_RANGE_REF.
11564         (vn_reference_fold_indirect): Fill out array reference lower
11565         bound and element size operands.
11566         * tree-ssa-pre.c (phi_translate_1): Fail if we have to translate
11567         a non gimple valued reference operand which can happen for
11568         array reference lower bound or element size.
11569         (create_component_ref_by_pieces_1): Properly generate the
11570         element size operand for array references.
11571
11572 2009-08-06  Richard Guenther  <rguenther@suse.de>
11573
11574         PR tree-optimization/40964
11575         * tree.c (iterative_hash_host_wide_int): Export.
11576         * tree.h (iterative_hash_host_wide_int): Declare.
11577         * tree-ssa-structalias.c (heapvar_map): New struct.
11578         (heapvar_map_eq): New function.
11579         (heapvar_map_hash): Likewise.
11580         (heapvar_lookup): Adjust.
11581         (heapvar_insert): Likewise.
11582         (make_constraint_from_heapvar): Allow multiple heap variables
11583         per decl at different offsets.
11584         (init_alias_heapvars): Adjust.
11585
11586 2009-08-04  David Daney  <ddaney@caviumnetworks.com>
11587
11588         * config/mips/mips.h (TARGET_SYNC_AFTER_SC): New macro.
11589         * mips_output_sync_loop (mips_output_sync_loop): Only emit
11590         trailing sync if TARGET_SYNC_AFTER_SC.
11591
11592 2009-08-05  David Daney  <ddaney@caviumnetworks.com>
11593
11594         * gcc/config/mips/sync.md (sync_compare_and_swap<mode>,
11595         compare_and_swap_12, sync_add<mode>, sync_<optab>_12,
11596         sync_old_<optab>_12, sync_new_<optab>_12, sync_nand_12,
11597         sync_old_nand_12, sync_new_nand_12, sync_sub<mode>,
11598         sync_old_add<mode>, sync_old_sub<mode>, sync_new_add<mode>,
11599         sync_new_sub<mode>, sync_<optab><mode>, sync_old_<optab><mode>,
11600         sync_new_<optab><mode>, sync_nand<mode>, sync_old_nand<mode>,
11601         sync_new_nand<mode>, sync_lock_test_and_set<mode>,
11602         test_and_set_12): Rewrite calls to mips_output_sync_loop.
11603         * gcc/config/mips/mips-protos.h (mips_output_sync_loop): Make
11604         the prototype declaration match the definition.
11605         * gcc/config/mips/mips.c (mips_output_sync_loop):  Emit sync
11606         instructions explicitly.  Add barrier_before and operands
11607         parameters.
11608         * gcc/config/mips/mips.h (MIPS_COMPARE_AND_SWAP,
11609         MIPS_COMPARE_AND_SWAP_12, MIPS_SYNC_OP, MIPS_SYNC_OP_12,
11610         MIPS_SYNC_OLD_OP_12, MIPS_SYNC_NEW_OP_12, MIPS_SYNC_OLD_OP,
11611         MIPS_SYNC_NEW_OP, MIPS_SYNC_NAND, MIPS_SYNC_OLD_NAND,
11612         MIPS_SYNC_NEW_NAND, MIPS_SYNC_EXCHANGE,
11613         MIPS_SYNC_EXCHANGE_12): Remove sync instructions.
11614
11615 2009-08-05  Andrew Pinski  <pinskia@gmail.com>
11616
11617         * tree-ssa-alias.c: Fix intervals to use [) syntax.
11618
11619 2009-08-05  Uros Bizjak  <ubizjak@gmail.com>
11620             Mikulas Patocka  <mikulas@artax.karlin.mff.cuni.cz>
11621
11622         PR target/40906
11623         * config/i386/i386.c (ix86_split_long_move): Fix push of multi-part
11624         source operand.
11625
11626 2009-08-05  Jakub Jelinek  <jakub@redhat.com>
11627
11628         PR rtl-optimization/40924
11629         * dse.c (canon_address): Before calling cselib_expand_value_rtx
11630         make sure canon_rtx (mem_address) isn't simpler than
11631         canon_rtx (expanded_mem_address).
11632
11633 2009-08-05  Li Feng  <nemokingdom@gmail.com>
11634
11635         * graphite-sese-to-poly.c (build_pbb_drs): Remove build alias set
11636         for each poly_bb_p.
11637         (build_scop_drs): Build alias set for each SCoP.
11638
11639 2009-08-04  Sandra Loosemore  <sandra@codesourcery.com>
11640
11641         * doc/invoke.texi (MIPS Options): Document new 1004K -march options.
11642         * config/mips/mips.c (mips_cpu_info_table): Add 1004K cores.
11643         * config/mips/mips.h (MIPS_ISA_LEVEL_SPEC): Add pattern for 1004K.
11644         (MIPS_ARCH_FLOAT_SPEC): Likewise.
11645         (BASE_DRIVER_SELF_SPECS): Likewise.
11646
11647 2009-08-04  Andrew Pinski  <pinskia@gmail.com>
11648
11649         * tree-ssa-alias.c: Fix some comment typos.
11650
11651 2009-08-04  Kaz Kojima  <kkojima@gcc.gnu.org>
11652
11653         * config/sh/linux-atomic.asm (ATOMIC_BOOL_COMPARE_AND_SWAP,
11654         ATOMIC_OP_AND_FETCH, ATOMIC_COMBOP_AND_FETCH): Define.
11655
11656 2009-08-03  Janis Johnson  <janis187@us.ibm.com>
11657
11658         PR c/39902
11659         * simplify-rtx.c (simplify_binary_operation_1): Disable
11660         simplifications for decimal float operations.
11661
11662 2009-08-03  Jakub Jelinek  <jakub@redhat.com>
11663
11664         PR middle-end/40943
11665         * tree-ssa.c (warn_uninitialized_var): Even on LHS warn for
11666         operand of INDIRECT_REF.
11667
11668 2009-08-03  Uros Bizjak  <ubizjak@gmail.com>
11669
11670         * config/alpha/alpha.c (alpha_legitimate_constant_p): Reject CONST
11671         constants referencing TLS symbols.
11672
11673 2009-08-03  SUGIOKA Toshinobu  <sugioka@itonet.co.jp>
11674
11675         * config/sh/linux-atomic.asm (ATOMIC_COMPARE_AND_SWAP): Rename
11676         __sync_compare_and_swap_* to __sync_val_compare_and_swap_*.
11677
11678 2009-08-03  Richard Guenther  <rguenther@suse.de>
11679
11680         * tree.c (make_vector_type): Build a main variant first,
11681         get the canonical one and then build the variant.
11682         * tree-ssa.c (useless_type_conversion_p_1): Handle
11683         fixed-point types.
11684         (useless_type_conversion_p): Conversions to pointers to
11685         incomplete record types are useless.
11686
11687 2009-08-03  Richard Guenther  <rguenther@suse.de>
11688
11689         * tree-cfg.c (pass_warn_unused_result): Mark name that no dump
11690         file will be created.
11691         * omp-low.c (pass_diagnose_omp_blocks): Likewise.
11692         * toplev.c (compile_file): Adjust comment.
11693
11694 2009-08-03  Kaz Kojima  <kkojima@gcc.gnu.org>
11695
11696         * config/sh/sh-protos.h (sh_promote_function_mode): Remove.
11697         * config/sh/sh.c (sh_promote_function_mode): Wrap long lines.
11698         (TARGET_PROMOTE_FUNCTION_MODE): Define.
11699         (TARGET_PROMOTE_FUNCTION_ARGS): Remove.
11700         (sh_promote_function_mode): Fix typo.
11701
11702 2009-08-03  Andreas Krebbel  <krebbel1@de.ibm.com>
11703
11704         * explow.c (promote_mode): Mark TYPE and PUNSIGNEDP as possibly unused.
11705
11706 2009-08-02  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
11707
11708         * pa.c (pa_promote_function_mode): Remove ATTRIBUTE_UNUSED from
11709         declaration arguments.
11710
11711 2009-08-02  Uros Bizjak  <ubizjak@gmail.com>
11712
11713         * config/i386/i386.c (ix86_expand_fp_compare): Use const0_rtx instead
11714         of GEN_INT (0x00) and const1_rtx instead of GEN_INT (0x01).
11715         (ix86_split_ashl): Ditto.
11716         (ix86_expand_vector_init_one_nonzero): Ditto.
11717         (ix86_expand_vector_set): Ditto.
11718         (ix86_expand_reduc_v4sf): Ditto.
11719
11720 2009-08-02  Paolo Bonzini  <bonzini@gnu.org>
11721
11722         * explow.c (promote_function_mode): Remove assert.
11723         * config/sh/sh.c (sh_promote_function_mode): Declare.
11724
11725 2009-08-01  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
11726
11727         * config/pa/pa.c (pa_promote_function_mode): Declare.
11728         Change to static.  Fix promote_mode call.
11729
11730         * gthr-dce.h (CONST_CAST2): Define if not defined.
11731         (__gthread_setspecific): Use CONST_CAST2 to fix warning.
11732
11733         * config.gcc (hppa[12]*-*-hpux10*): Add stdint support.
11734
11735 2009-08-01  Paolo Bonzini  <bonzini@gnu.org>
11736
11737         * expr.c (store_constructor): Use promote_decl_mode.  Remove
11738         now write-only variable unsignedp.
11739         (expand_expr_real_1): Use promote_decl_mode.
11740         * expr.h (promote_function_mode, promote_decl_mode): New.
11741         (promote_mode): Remove last argument.
11742         * function.c (assign_temp): Drop last argument of promote_mode.
11743         (assign_parm_find_data_types): Use promote_function_mode.
11744         (assign_parm_setup_reg): Likewise.
11745         (expand_function_end): Use promote_function_mode.
11746         * calls.c (initialize_argument_information): Use promote_function_mode.
11747         (precompute_arguments): Use promote_mode instead of checking if
11748         only PROMOTE_FUNCTION_MODE is defined.
11749         (expand_call): When making sibcall decisions, use promote_function_mode.
11750         Below, remove an if for targetm.calls.promote_function_return and
11751         and use promote_function_mode.
11752         (emit_library_call_value_1): Use promote_function_mode, fix bug
11753         where promote_mode was passed FOR_CALL == 0 for a return value in an
11754         assertion.
11755         * cfgexpand.c (expand_one_register_var): Use promote_decl_mode.
11756         * explow.c (promote_function_mode, promote_decl_mode): New.
11757         (promote_mode): Keep only the FOR_CALL == 0 case.
11758         * combine.c (setup_incoming_promotion): Remove test of
11759         promote_function_args.  Use promote_function_mode.
11760         * stmt.c (expand_value_return): Use promote_decl_mode.
11761         (expand_decl): Use promote_decl_mode.
11762
11763         * expr.c (store_constructor): Use promote_decl_mode.  Remove
11764         now write-only variable unsignedp.
11765         (expand_expr_real_1): Use promote_decl_mode.
11766         * expr.h (promote_function_mode, promote_decl_mode): New.
11767         (promote_mode): Remove last argument.
11768         * function.c (assign_temp): Drop last argument of promote_mode.
11769         (assign_parm_find_data_types): Use promote_function_mode.
11770         (assign_parm_setup_reg): Likewise.
11771         (expand_function_end): Use promote_function_mode.
11772         * calls.c (initialize_argument_information): Use promote_function_mode.
11773         (precompute_arguments): Use promote_mode instead of checking if
11774         only PROMOTE_FUNCTION_MODE is defined.
11775         (expand_call): When making sibcall decisions, use promote_function_mode.
11776         Below, remove an if for targetm.calls.promote_function_return and
11777         and use promote_function_mode.
11778         (emit_library_call_value_1): Use promote_function_mode, fix bug
11779         where promote_mode was passed FOR_CALL == 0 for a return value in an
11780         assertion.
11781         * cfgexpand.c (expand_one_register_var): Use promote_decl_mode.
11782         * explow.c (promote_function_mode, promote_decl_mode): New.
11783         (promote_mode): Keep only the FOR_CALL == 0 case.
11784         * combine.c (setup_incoming_promotion): Remove test of
11785         promote_function_args.  Use promote_function_mode.
11786         * stmt.c (expand_value_return): Use promote_decl_mode.
11787         (expand_decl): Use promote_decl_mode.
11788
11789         * explow.c (promote_function_mode): Just call the target hook.
11790         * targhooks.c (default_promote_function_mode,
11791         default_promote_function_mode_always_promote): New.
11792         * targhooks.h (default_promote_function_mode,
11793         default_promote_function_mode_always_promote): Declare.
11794         * target.h (promote_function_args, promote_function_return): Remove.
11795         (promote_function_mode): New.
11796         * target-def.h (TARGET_PROMOTE_FUNCTION_ARGS,
11797         TARGET_PROMOTE_FUNCTION_RETURN): Remove.
11798         (TARGET_PROMOTE_FUNCTION_MODE): New.
11799         (TARGET_CALLS): Adjust.
11800         * system.h (TARGET_PROMOTE_FUNCTION_ARGS,
11801         TARGET_PROMOTE_FUNCTION_RETURN, PROMOTE_FUNCTION_MODE): Poison.
11802
11803         * config/s390/s390.h (PROMOTE_FUNCTION_MODE): Move...
11804         * config/s390/s390.c (s390_promote_function_mode): ... here,
11805         with pointer handling.
11806         (TARGET_PROMOTE_FUNCTION_MODE): Define.
11807         (TARGET_PROMOTE_FUNCTION_ARGS, TARGET_PROMOTE_FUNCTION_RETURN): Remove.
11808
11809         * config/sparc/sparc.h (PROMOTE_FUNCTION_MODE): Move...
11810         * config/sparc/sparc.c (sparc_promote_function_mode): ... here,
11811         with pointer handling.
11812         (TARGET_PROMOTE_FUNCTION_MODE): Define.
11813         (TARGET_PROMOTE_FUNCTION_ARGS, TARGET_PROMOTE_FUNCTION_RETURN): Remove.
11814
11815         * config/sh/sh-protos.h (sh_promote_function_mode): New.
11816         * config/sh/sh.c (sh_promote_function_mode): New.
11817         (TARGET_PROMOTE_FUNCTION_MODE): Define.
11818         (TARGET_PROMOTE_FUNCTION_ARGS, TARGET_PROMOTE_FUNCTION_RETURN): Remove.
11819
11820         * config/cris/cris.h (PROMOTE_FUNCTION_MODE): Move...
11821         * config/cris/cris.c (cris_promote_function_mode): ... here.
11822         (TARGET_PROMOTE_FUNCTION_MODE): Define.
11823         (TARGET_PROMOTE_FUNCTION_ARGS): Remove.
11824
11825         * config/mmix/mmix.h (PROMOTE_FUNCTION_MODE): Move...
11826         * config/mmix/mmix.c (mmix_promote_function_mode): ... here.
11827         (TARGET_PROMOTE_FUNCTION_MODE): Define.
11828         (TARGET_PROMOTE_FUNCTION_ARGS): Remove.
11829
11830         * config/arm/arm.h (PROMOTE_FUNCTION_MODE): Move...
11831         * config/arm/arm.c (arm_promote_function_mode): ... here, without
11832         complex type handling.
11833         (TARGET_PROMOTE_FUNCTION_MODE): Define.
11834         (TARGET_PROMOTE_FUNCTION_ARGS, TARGET_PROMOTE_FUNCTION_RETURN): Remove.
11835
11836         * config/pa/pa.c (pa_promote_function_mode): New.
11837         (TARGET_PROMOTE_FUNCTION_MODE): Define.
11838         (TARGET_PROMOTE_FUNCTION_RETURN): Remove.
11839
11840         * config/alpha/alpha.c (TARGET_PROMOTE_FUNCTION_ARGS,
11841         TARGET_PROMOTE_FUNCTION_RETURN): Remove.
11842         (TARGET_PROMOTE_FUNCTION_MODE): Define equivalently.
11843         * config/xtensa/xtensa.c: Likewise.
11844         * config/stormy16/stormy16.c: Likewise.
11845         * config/iq2000/iq2000.c: Likewise.
11846         * config/rs6000/rs6000.c: Likewise.
11847         * config/picochip/picochip.c: Likewise.
11848         * config/arc/arc.c: Likewise.
11849         * config/mcore/mcore.c: Likewise.
11850         * config/score/score.c: Likewise.
11851         * config/mips/mips.c: Likewise.
11852         * config/bfin/bfin.c: Likewise.
11853         * config/ia64/ia64.c: Likewise (disabled though).
11854
11855         * config/frv/frv.h: Remove pointless remark.
11856
11857         * doc/tm.texi (PROMOTE_FUNCTION_MODE,
11858         TARGET_PROMOTE_FUNCTION_ARGS,
11859         TARGET_PROMOTE_FUNCTION_RETURN): Consolidate into...
11860         (TARGET_PROMOTE_FUNCTION_MODE): ... this.
11861
11862 2009-08-01  Sebastian Pop  <sebastian.pop@amd.com>
11863
11864         * doc/invoke.texi (-fgraphite-force-parallel): Renamed
11865         -floop-parallelize-all.
11866         * toplev.c (process_options): Rename flag_graphite_force_parallel to
11867         flag_loop_parallelize_all.
11868         * tree-ssa-loop.c (gate_graphite_transforms): Same.
11869         * graphite.c (graphite_transform_loops): Same.
11870         * common.opt: Same.
11871         * graphite-poly.c (apply_poly_transforms): Same.
11872
11873 2009-07-31  Richard Earnshaw  <rearnsha@arm.com>
11874
11875         PR tree-optimization/40914
11876         * ipa-prop.c (ipa_get_ptr_load_param): New argument use_delta,
11877         if set, then check the delta field of the PMF record.
11878         (ipa_get_stmt_member_ptr_load_param): Propagate new param use_delta.
11879         (ipa_analyze_call_uses): Handle machines where the vbit for a PMF
11880         call is stored in the delta.
11881
11882 2009-07-31  Adam Nemet  <anemet@caviumnetworks.com>
11883
11884         * config/mips/mips.md (*clear_upper32_dext): New pattern.
11885
11886 2009-07-31  Uros Bizjak  <ubizjak@gmail.com>
11887
11888         * config/i386/bsd.h (ASM_BYTE): New define.
11889         * config/i386/darwin.h (ASM_BYTE): Rename from ASM_BYTE_OP.
11890         * config/i386/att.h (ASM_BYTE): New define. Use ASM_BYTE instead of
11891         .byte.  Use fputs or putc instead of fprintf where appropriate.
11892         * config/i386/i386-interix.h: Use ASM_BYTE instead of .byte.  Use
11893         fputs or putc instead of fprintf where appropriate.
11894         * config/i386/i386elf.h: Ditto.
11895         * config/i386/sysv4.h: Ditto.
11896
11897         * config/i386/i386.c (TARGET_ASM_BYTE_OP): New define.
11898         * config/i386/i386.md (x86_sahf_1): Use ASM_BYTE instead of .byte.
11899         (*tls_global_dynamic_64): Ditto.
11900
11901 2009-07-31  Christian Bruel  <christian.bruel@st.com>
11902
11903         * gcc/config.gcc (sh*-*-elf): test with_libgloss.
11904
11905 2009-07-31  Ramana Radhakrishnan  <ramana.radhakrishnan@arm.com>
11906
11907         * config/arm/arm.c (arm_arm_address_cost): Fix typo.
11908         Remove dead code for MINUS.
11909
11910 2009-07-31  Anthony Green  <green@moxielogic.com>
11911
11912         * config/moxie/moxie.c (moxie_expand_prologue): Use $r5 instead of
11913         $r12 in prologue.
11914         (moxie_expand_epilogue): Ditto for epilogue.
11915         (moxie_setup_incoming_varargs): ABI change.  Use 5 registers for
11916         incoming arguments.
11917         (moxie_function_arg): Ditto.
11918         (moxie_pass_by_reference): Ditto.
11919         (moxie_arg_partial_bytes): Ditto.
11920         * config/moxie/moxie.h (CALL_USED_REGISTERS): Ditto.
11921         (FUNCTION_ARG_ADVANCE) Ditto.
11922         (REG_PARM_STACK_SPACE) Ditto.
11923         (FUNCTION_ARG_REGNO_P) Dito.
11924
11925         * config.gcc: Add moxie linux config support.
11926         * gcc/config/moxie/uclinux.h: New file.
11927
11928 2009-07-31  DJ Delorie  <dj@redhat.com>
11929
11930         * config/sh/sh.md (UNSPECV_SP_SWITCH_B): New.
11931         (UNSPECV_SP_SWITCH_E): New.
11932         (sp_switch_1): Change to an unspec.
11933         (sp_switch_2): Change to an unspec.  Don't use post-inc when we
11934         replace $r15.
11935         * config/sh/sh.c (sh_expand_prologue): Use the constant pool to
11936         reference the new stack's address
11937
11938 2009-07-30  Sebastian Pop  <sebastian.pop@amd.com>
11939
11940         * Makefile.in (OBJS-common): Added dependence on graphite-blocking.o,
11941         graphite-clast-to-gimple.o, graphite-dependences.o,
11942         graphite-interchange.o, graphite-poly.o, graphite-ppl.o,
11943         graphite-scop-detection.o, graphite-sese-to-poly.o, and sese.o.
11944         (graphite-blocking.o,
11945         graphite-clast-to-gimple.o, graphite-dependences.o,
11946         graphite-interchange.o, graphite-poly.o, graphite-ppl.o,
11947         graphite-scop-detection.o, graphite-sese-to-poly.o, and sese.o): New.
11948         * cfgloop.c (alloc_loop): Set loop->can_be_parallel to false.
11949         * cfgloop.h (struct loop): Add can_be_parallel field.
11950         * common.opt (fgraphite-identity): Moved up.
11951         (fgraphite-force-parallel): New flag.
11952         * graphite.c: Rewrite.
11953         * graphite.h: Rewrite.
11954         * passes.c (init_optimization_passes): Schedule a pass of DCE and LIM
11955         after Graphite.
11956         * toplev.c (graphite_out_file): New file descriptor.
11957         (graphite_in_file): New.
11958         (process_options): flag_graphite_force_parallel cannot be used without
11959         Graphite.
11960         * tree-ssa-loop.c: Include toplev.h.
11961         (gate_graphite_transforms): Enable flag_graphite for
11962         flag_graphite_force_parallel.
11963
11964 2009-07-30  Sebastian Pop  <sebastian.pop@amd.com>
11965
11966         * ChangeLog.graphite: New.
11967         * graphite-blocking.c: New.
11968         * graphite-clast-to-gimple.c: New.
11969         * graphite-clast-to-gimple.h: New.
11970         * graphite-dependences.c: New.
11971         * graphite-dependences.h: New.
11972         * graphite-interchange.c: New.
11973         * graphite-poly.c: New.
11974         * graphite-poly.h: New.
11975         * graphite-ppl.c: New.
11976         * graphite-ppl.h: New.
11977         * graphite-scop-detection.c: New.
11978         * graphite-scop-detection.h: New.
11979         * graphite-sese-to-poly.c: New.
11980         * graphite-sese-to-poly.h: New.
11981         * sese.c: New.
11982         * sese.h: New.
11983
11984 2009-07-30  Sebastian Pop  <sebastian.pop@amd.com>
11985
11986         * tree-chrec.c (evolution_function_right_is_integer_cst): New.
11987         * tree-chrec.h (evolution_function_right_is_integer_cst): Declared.
11988
11989 2009-07-30  Sebastian Pop  <sebastian.pop@amd.com>
11990
11991         * tree-chrec.c (operator_is_linear): Handle BIT_NOT_EXPR.
11992         (scev_is_linear_expression): Return false if the evolution is not
11993         affine multivariate.
11994
11995 2009-07-30  Sebastian Pop  <sebastian.pop@amd.com>
11996
11997         * tree-data-ref.c (graphite_find_data_references_in_stmt): New.
11998         * tree-data-ref.h (graphite_find_data_references_in_stmt): Declared.
11999
12000 2009-07-30  Sebastian Pop  <sebastian.pop@amd.com>
12001
12002         * tree-data-ref.c (debug_data_references): New.
12003         (debug_data_reference): New.
12004         * tree-data-ref.h (debug_data_references): Declared.
12005         (debug_data_reference): Declared.
12006
12007 2009-07-30  Sebastian Pop  <sebastian.pop@amd.com>
12008
12009         * tree-data-ref.c (stmt_simple_memref_p: Removed.
12010         * tree-data-ref.h (scop_p): Removed.
12011         (struct data_reference): Remove field scop.
12012         (DR_SCOP): Removed.
12013         (stmt_simple_memref_p): Removed.
12014
12015 2009-07-30  Sebastian Pop  <sebastian.pop@amd.com>
12016
12017         * cfgloop.h (create_empty_loop_on_edge): Pass an extra argument.
12018         * cfgloopmanip.c (create_empty_loop_on_edge): Leave the loop_latch
12019         basic block empty.
12020
12021 2009-07-30  Sebastian Pop  <sebastian.pop@amd.com>
12022
12023         * doc/invoke.texi (-fgraphite-force-parallel): Documented.
12024
12025 2009-07-30  Sebastian Pop  <sebastian.pop@amd.com>
12026
12027         * doc/invoke.texi (-fgraphite-identity): Documented.
12028
12029 2009-07-30  Sebastian Pop  <sebastian.pop@amd.com>
12030
12031         * tree-scalar-evolution.c: Fix comment.
12032         (instantiate_scev_1): Return unknow from scev instantiation if the
12033         result is not above instantiate_below.
12034
12035 2009-07-30  Sebastian Pop  <sebastian.pop@amd.com>
12036
12037         * tree-scalar-evolution.c (compute_overall_effect_of_inner_loop): Not
12038         static anymore.  Instantiate the symbols that may have been introduced
12039         by chrec_apply.
12040         * tree-scalar-evolution.h (compute_overall_effect_of_inner_loop):
12041         Declared.
12042
12043 2009-07-30  DJ Delorie  <dj@redhat.com>
12044
12045         * config/mep/mep.c (mep_asm_init_sections): Add section flags and
12046         .vliw directive to VLIW sections.
12047
12048 2009-07-30  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
12049
12050         * Makefile.in (AUTOCONF, ACLOCAL, ACLOCAL_AMFLAGS, aclocal_deps):
12051         New variables.
12052         ($(srcdir)/configure, $(srcdir)/aclocal.m4): New rules.
12053         (AUTOHEADER): New variable.
12054         ($(srcdir)/cstamp-h.in): Use it.
12055
12056 2009-07-30  Michael Meissner  <meissner@linux.vnet.ibm.com>
12057             Pat Haugen  <pthaugen@us.ibm.com>
12058             Revital Eres <ERES@il.ibm.com>
12059
12060         * config/rs6000/vector.md (VEC_F): Add VSX support.
12061         (VEC_A): Ditto.
12062         (VEC_N): Ditto.
12063         (mov<mode>): Ditto.
12064         (vector_load_<mode>): Ditto.
12065         (vector_store_<mode>): Ditto.
12066         (vector GPR move split): Ditto.
12067         (vec_reload_and_plus_<mptrsize>): Ditto.
12068         (vec_reload_and_reg_<mptrsize>): Ditto.
12069         (add<mode>3): Ditto.
12070         (sub<mode>3): Ditto.
12071         (mul<mode>3): Ditto.
12072         (neg<mode>2): Ditto.
12073         (abs<mode>2): Ditto.
12074         (smin<mode>3): Ditto.
12075         (smax<mode>3): Ditto.
12076         (vector_eq<mode>): Ditto.
12077         (vector_gt<mode>): Ditto.
12078         (vector_ge<mode>): Ditto.
12079         (vector_gtu<mode>): Ditto.
12080         (vector_select_<mode>_uns): Ditto.
12081         (vector_eq_<mode>_p): Ditto.
12082         (vector_gt_<mode>_p): Ditto.
12083         (vector_ge_<mode>_p): Ditto.
12084         (vector_gtu_<mode>_p): Ditto.
12085         (cr6_test_for_zero): Ditto.
12086         (cr6_test_for_zero_reverse): Ditto.
12087         (cr6_test_for_lt): Ditto.
12088         (cr6_test_for_lt_reverse): Ditto.
12089         (xor<mode>3): Ditto.
12090         (ior<mode>3): Ditto.
12091         (and<mode>3): Ditto.
12092         (one_cmpl<mode>2): Ditto.
12093         (nor<mode>2): Ditto.
12094         (andc<mode>2): Ditto.
12095         (float<VEC_int<mode>2): Ditto.
12096         (unsigned_float<VEC_int><mode>2): Ditto.
12097         (fix_trunc<mode><VEC_int>2): Ditto.
12098         (fixuns_trunc<mode><VEC_int>2): Ditto.
12099         (vec_init<mode>):
12100         (vec_set<mode>): Ditto.
12101         (vec_extract<mode>): Ditto.
12102         (vec_interleave_highv4sf): Ditto.
12103         (vec_interleave_lowv4sf): Ditto.
12104         (vec_realign_load_<mode>): Ditto.
12105         (vec_shl_<mode>): Ditto.
12106         (vec_shr_<mode>): Ditto.
12107         (div<mode>3): New patterns for VSX.
12108         (vec_interleave_highv2df): Ditto.
12109         (vec_interleave_lowv2df): Ditto.
12110         (vec_pack_trunc_v2df): Ditto.
12111         (vec_pack_sfix_trunc_v2df): Ditto.
12112         (vec_pack_ufix_trunc_v2df): Ditto.
12113         (vec_unpacks_hi_v4sf): Ditto.
12114         (vec_unpacks_lo_v4sf): Ditto.
12115         (vec_unpacks_float_hi_v4si): Ditto.
12116         (vec_unpacks_float_lo_v4si): Ditto.
12117         (vec_unpacku_float_hi_v4si): Ditto.
12118         (vec_unpacku_float_lo_v4si): Ditto.
12119         (movmisalign<mode>): Ditto.
12120         (vector_ceil<mode>2): New patterns for vectorizing math library.
12121         (vector_floor<mode>2): Ditto.
12122         (vector_btrunc<mode>2): Ditto.
12123         (vector_copysign<mode>3): Ditto.
12124
12125         * config/rs6000/predicates.md (easy_vector_constant_msb): New
12126         predicate for setting the high bit in each word, used for copysign.
12127
12128         * config/rs6000/ppc-asm.h (f19): Whitespace.
12129         (f32-f63): Define if VSX.
12130         (v0-v31): Define if Altivec.
12131         (vs0-vs63): Define if VSX.
12132
12133         * config/rs6000/t-rs6000 (MD_INCLUDES): Add power7.md and vsx.md.
12134
12135         * config/rs6000/power7.md: New file, provide tuning parameters for
12136         -mcpu=power7.
12137
12138         * config/rs6000/rs6000-c.c (rs6000_macro_to_expand): Add VSX support.
12139         (rs6000_cpu_cpp_builtins): Ditto.
12140         (altivec_overloaded_builtins): Ditto.
12141         (altivec_resolve_overloaded_builtin): Ditto.
12142
12143         * config/rs6000/rs6000.opt (-mno-vectorize-builtins): Add new
12144         debug switch to disable vectorizing simple math builtin
12145         functions.
12146
12147         * config/rs6000/rs6000.c (rs6000_builtin_vectorized_function):
12148         Vectorize simple math builtin functions.
12149         (TARGET_VECTORIZE_BUILTIN_VECTORIZED_FUNCTION): Define target
12150         hook to vectorize math builtins.
12151         (rs6000_override_options): Enable -mvsx on -mcpu=power7.
12152         (rs6000_builtin_conversion): Add VSX/power7 support.
12153         (rs6000_builtin_vec_perm): Ditto.
12154         (vsplits_constant): Add support for loading up a vector constant
12155         with just the high bit set in each part.
12156         (rs6000_expand_vector_init): Add VSX/power7 support.
12157         (rs6000_expand_vector_set): Ditto.
12158         (rs6000_expand_vector_extract): Ditto.
12159         (rs6000_emit_move): Ditto.
12160         (bdesc_3arg): Ditto.
12161         (bdesc_2arg): Ditto.
12162         (bdesc_1arg): Ditto.
12163         (rs6000_expand_ternop_builtin): Ditto.
12164         (altivec_expand_builtin): Ditto.
12165         (rs6000_expand_unop_builtin): Ditto.
12166         (rs6000_init_builtins): Ditto.
12167         (altivec_init_builtins): Ditto.
12168         (builtin_function_type): Ditto.
12169         (rs6000_common_init_builtins): Ditto.
12170         (rs6000_handle_altivec_attribute); Ditto.
12171         (rs6000_mangle_type): Ditto.
12172         (rs6000_vector_mode_supported_p): Ditto.
12173         (rs6000_mode_dependent_address): Altivec addresses with AND -16
12174         are mode dependent.
12175
12176         * config/rs6000/vsx.md: New file for VSX support.
12177
12178         * config/rs6000/rs6000.h (EASY_VECTOR_MSB): New macro for
12179         identifing values with just the most significant bit set.
12180         (enum rs6000_builtins): Add builtins for VSX.  Add simple math
12181         vectorized builtins.
12182
12183         * config/rs6000/altivec.md (UNSPEC_VRFIP): Delete.
12184         (UNSPEC_VRFIM): Delete.
12185         (splitter for loading up vector with most significant bit): New
12186         splitter for vectorizing copysign.
12187         (altivec_vrfiz): Rename from altivec_fturncv4sf2.  Add support for
12188         vectorizing simple math functions.
12189         (altivec_vrfip): Add support for vectorizing simple math functions.
12190         (altivec_vrfim): Ditto.
12191         (altivec_copysign_v4sf3): New insn for Altivec copysign support.
12192
12193         * config/rs6000/rs6000.md (UNSPEC_BPERM): New constant.
12194         (power7.md, vsx.md): Include for power7 support.
12195         (copysigndf3): Use VSX instructions if -mvsx.
12196         (negdf2_fpr): Ditto.
12197         (absdf2_fpr): Ditto.
12198         (nabsdf2_fpr): Ditto.
12199         (adddf3_fpr): Ditto.
12200         (subdf3_fpr): Ditto.
12201         (muldf3_fpr): Ditto.
12202         (divdf3_fpr): Ditto.
12203         (fix_truncdfdi2_fpr): Ditto.
12204         (cmpdf_internal1): Ditto.
12205         (fred, fred_fpr): Convert into expander/insn to add VSX support.
12206         (btruncdf2, btruncdf2_fpr): Ditto.
12207         (ceildf2, ceildf2_fpr): Ditto.
12208         (floordf2, floordf2_fpr): Ditto.
12209         (floatdidf2, floatdidf2_fpr): Ditto.
12210         (fmadddf4_fpr): Name insn.  Use VSX instructions if -mvsx.
12211         (fmsubdf4_fpr): Ditto.
12212         (fnmadddf4_fpr_1): Ditto.
12213         (fnmadddf4_fpr_2): Ditto.
12214         (fnmsubdf4_fpr_1): Ditto.
12215         (fnmsubdf4_fpr_2): Ditto.
12216         (fixuns_truncdfdi2): Add expander for VSX support.
12217         (fix_truncdfdi2): Ditto.
12218         (fix_truncdfsi2): Ditto.
12219         (ftruncdf2): Ditto.
12220         (btruncsf2): Whitespace.
12221         (movdf_hardfloat32): Add support for VSX registers.
12222         (movdf_softfloat32): Ditto.
12223         (movdf_hardfloat64): Ditto.
12224         (movdf_hardfloat64_mfpgpr): Ditto.
12225         (movdf_softfloat64): Ditto.
12226         (movti splitters): Add check for vector registers supporting
12227         TImode in the future.
12228         (bpermd): Add power7 bpermd instruction.
12229
12230         * config/rs6000/altivec.h (vec_div): Define if VSX.
12231         (vec_mul): Ditto.
12232         (vec_msub): Ditto.
12233         (vec_nmadd): Ditto.
12234         (vec_nearbyint): Ditto.
12235         (vec_rint): Ditto.
12236         (vec_sqrt): Ditto.
12237         (all predicates): Use the generic builtin function, and not the V4SF
12238         specific function so that the predicates will work with VSX's V2DF.
12239         (vec_all_*): Ditto.
12240         (vec_any_*): Ditto.
12241
12242         * doc/extend.texi (PowerPC Altivec/VSX Built-in Functions):
12243         Document new VSX functions and types.
12244
12245         * doc/invoke.texi (PowerPc options): Document -mpopcntd, -mvsx
12246         switches.
12247
12248         * doc/md.texi (PowerPC constraints): Document "wd", "wf", "ws",
12249         "wa", and "j" constraints.  Modify "v" to talk about Altivec
12250         instead of just vector.
12251
12252 2009-07-30  Andrew MacLeod  <amacleod@redhat.com>
12253
12254         PR debug/26475
12255         * tree-into-ssa.c (insert_phi_nodes_for, rewrite_add_phi_arguments): Set
12256         location for phi arguments.
12257         (rewrite_update_phi_arguments): Find locations for reaching defs.
12258         * tree-ssa-threadupdate.c (create_edge_and_update_destination_phis):
12259         Add location to add_phi_arg calls.
12260         * tree-loop-districbution.c (update_phis_for_loop_copy): Add locations.
12261         * tree-ssa-loop-manip.c (create_iv, add_exit_phis_edge,
12262         split_loop_exit_edge, tree_transform_and_unroll_loop): Add locations.
12263         * tree-tailcall.c (add_successor_phi_arg, eliminate_tail_call,
12264         create_tailcall_accumulator, tree_optimize_tail_calls_1): Add locations.
12265         * tree.h (struct phi_arg_d): Add location_t to PHI arguments.
12266         * tree-phinodes.c (make_phi_node): Initialize location.
12267         (resize_phi_node): Initialize location to UNKNOWN_LOCATION.
12268         (add_phi_arg): Add location parameter.
12269         (remove_phi_arg_num): Move location when moving phi argument.
12270         * omp-low.c (expand_parallel_call, expand_omp_for_static_chunk): Set
12271         location.
12272         * tree-vect-loop-manip.c (slpeel_update_phis_for_duplicate_loop,
12273         slpeel_update_phi_nodes_for_guard1,
12274         slpeel_update_phi_nodes_for_guard2,
12275         slpeel_tree_duplicate_loop_to_edge_cfg, set_prologue_iterations,
12276         vect_loop_versioning): Set locations.
12277         * tree-parloops.c (create_phi_for_local_result,
12278         transform_to_exit_first_loop, create_parallel_loop): Add locations.
12279         * gimple-pretty-print.c (dump_gimple_phi): Dump lineno's if present.
12280         * tree-vect-loop.c (get_initial_def_for_induction,
12281         vect_create_epilog_for_reduction, vect_finalize_reduction): Add
12282         locations.
12283         * tree-flow-inline.h (gimple_phi_arg_location): New.  Return locus.
12284         (gimple_phi_arg_location_from_edge): New.  Return locus from an edge.
12285         (gimple_phi_arg_set_location): New.  Set locus.
12286         (gimple_phi_arg_has_location): New.  Check for locus.
12287         (redirect_edge_var_map_location): New.  Return locus from var_map.
12288         * tree-vect-data-refs.c (vect_setup_realignment): Set location.
12289         * tree-ssa-phiopt.c (conditional_replacement): Set locus when
12290         combining PHI arguments.
12291         (cond_store_replacement): Set location.
12292         * cfgexpand.c (gimple_assign_rhs_to_tree): Transfer locus if possible.
12293         * grpahite.c (add_loop_exit_phis, add_guard_exit_phis,
12294         scop_add_exit_phis_edge): Add locations.
12295         * tree-cfgcleanup.c (remove_forwarder_block,
12296         remove_forwarder_block_with_phi): Add locations.
12297         * tree-ssa-pre.c (insert_into_preds_of_block): Add locations.
12298         * tree-predcom.c (initialize_root_vars, initialize_root_vars_lm): Add
12299         locations.
12300         * tree-ssa-dce.c (forward_edge_to_pdom): Add locations.
12301         * tree-ssa.c (redirect_edge_var_map_add, ssa_redirect_edge,
12302         flush_pending_stmts): Add source location.
12303         * lambda-code.c (perfect_nestify): Maintain location stack with argument
12304         stack to preserve locations.
12305         * tree-vect-stmts.c (vectorizable_load): Add location.
12306         * tree-inline.c (copy_phis_for_bb): Copy locus.
12307         (setup_one_parameter): Add call locus to inlined parameter stmts.
12308         (initialize_inlined_parameters): Pass in call location as parameter
12309         assignment locus.
12310         (tree_function_versioning): Pass location to setup_one_parameter.
12311         * tree-ssa-phiprop.c (phiprop_insert_phi): Set locations.
12312         * tree-outof-ssa.c (struct _elim_graph): Add source_location vecs for
12313         copy and edge lists.
12314         (insert_partition_copy_on_edge, insert_value_copy_on_edge,
12315         insert_rtx_to_part_on_edge, insert_part_to_rtx_on_edge): Provide a
12316         locus parameter and override the stmt default if provided.
12317         (new_elim_graph, clear_elim_graph, delete_elim_graph,
12318         elim_graph_add_edge, elim_graph_remove_succ_edge,
12319         FOR_EACH_ELIM_GRAPH_SUCC, FOR_EACH_ELIM_GRAPH_PRED, eliminate_build,
12320         elim_forward, elim_unvisited_predecessor, elim_backward, elim_create,
12321         eliminate_phi):  Add locus info in elimination graph for each edge and
12322         value copy.
12323         (insert_backedge_copies): Copy locus if present.
12324         * tree-flow.h (struct _edge_var_map): Add locus field.
12325         * tree-switch_conversions.c (fix_phi_nodes): Add locations.
12326         * tree-cfg.c (reinstall_phi_args, gimple_make_forwarder_block,
12327         add_phi_args_after_copy_edge, gimple_lv_adjust_loop_header_phi): Add
12328         locations.
12329         * ipa-struct-reorg.c (make_edge_and_fix_phis_of_dest): Add locations.
12330
12331 2009-07-30  Martin Jambor  <mjambor@suse.cz>
12332
12333         PR tree-optimization/40570
12334         * ipa-inline.c (cgraph_decide_inlining): Watch out for dead single
12335         use inlining loops.
12336
12337 2009-07-30  Razya Ladelsky <razya@il.ibm.com>
12338
12339         * ssa-loop-manip.c: Include langhooks.h.
12340         (rewrite_phi_with_iv): New.
12341         (rewrite_all_phi_nodes_with_iv): New.
12342         (canonicalize_loop_ivs): Move here from tree-parloops.c.
12343         Remove reduction_list argument. Use rewrite_all_phi_nodes_with_iv.
12344         * tree-parloops.c (loop_parallel_p): Move out all conditions
12345         except dependency check.
12346         (canonicalize_loop_ivs): Move to tree-ssa-loop-manip.c.
12347         (gen_parallel_loop): Call canonicalize_loop_ivs without
12348         reduction_list argument.
12349         (build_new_reduction): New.
12350         (gather_scalar_reductions): New.
12351         (try_get_loop_niter): New.
12352         (try_create_reduction_list): New.
12353         (parallleize_loops): Change the parallel conditions check.
12354         * tree-flow.h (canonicalize_loop_ivs): Remove one argument.
12355         * Makefile.in (tree-ssa-loop-manip.o): Add langhooks.h dependency.
12356
12357 2009-07-30  Dave Korn  <dave.korn.cygwin@gmail.com>
12358
12359         * opt-functions.awk (opt_args): Allow argument to be enclosed in
12360         curly braces.
12361         * doc/options.texi (Option properties):  Mention new quoting syntax.
12362
12363 2009-07-29  Douglas B Rupp  <rupp@gnat.com>
12364
12365         * config/alpha/alpha.c (alpha_start_function):
12366         Handle VMS_DEBUG_MAIN_POINTER
12367         * config/alpha/vms.h (VMS_DEBUG_MAIN_POINTER): Define new macro.
12368         * doc/invoke.texi: Document -mdebug-main switch.
12369
12370 2009-07-29  Richard Henderson  <rth@redhat.com>
12371
12372         * cgraph.c (cgraph_set_call_stmt_including_clones): Tidy.
12373         (cgraph_create_edge_including_clones): Likewise.
12374         * tree-inline.c (copy_bb): Operate on the correct edges
12375         when updating the callgraph.
12376
12377 2009-07-29  Douglas B Rupp  <rupp@gnat.com>
12378
12379         * config/alpha/vms-cc.c: Deleted.
12380         * config/alpha/vms-ld.c: Deleted.
12381         * config/alpha/t-vms64: Moved to config/vms
12382         * config/alpha/vms-crt0-64.c: Moved to config/vms
12383         * config/alpha/vms-crt0.c: Moved to config/vms
12384         * config/alpha/vms-psxcrt0-64.c: Moved to config/vms
12385         * config/alpha/vms-psxcrt0.c: Moved to config/vms
12386         * config/alpha/xm-vms.h: Moved to config/vms
12387         * config/alpha/x-vms: Moved to config/vms
12388         * config/alpha/t-vms (vcrt0.o, pcrt0.o): Move rules to new file
12389         config/vms/t-vms.
12390         * config/vms/t-vms: Moved here from config/alpha. Alpha specific
12391         parts removed. (STMP_FIXPROTO, STMP_FIXINC, LIMITS_H_TEST): Set.
12392         (version): Set.
12393         * config/vms/t-vms64: Moved here from config/alpha
12394         * config/vms/vms-crt0-64.c: Moved here from config/alpha.
12395         (argc,argv,envp): Enforce 32bit malloc'ing.
12396         * config/vms/vms-psxcrt0-64.c: Likewise.
12397         * config/vms/vms-crt0.c: Moved here from config/alpha.
12398         * config/vms/vms-psxcrt0.c: Likewise.
12399         * config/vms/vms-crtl-64.h: New file.
12400         * config/vms/vms-crtl.h: New file.
12401         * config/vms/vms.opt: New file.
12402         * config/vms/xm-vms64.h: New file.
12403         * config/vms/xm-vms.h: Moved here from config/alpha.
12404         (STANARD_EXEC_PREFIX, STANDARD_STARTFILE_PREFIX, STANDARD_INCLUDE_DIR):
12405         Set.
12406         * config/vms/x-vms: Moved here from config/alpha.
12407         (version, VMS_EXTRA_PARTS): Moved to t-vms.
12408         (vms-ld.o, vms-cc.o): Removed.
12409         (LN, LN_S, USE_COLLECT2, POD2MAN): Set.
12410
12411 2009-07-29  Douglas B Rupp  <rupp@gnat.com>
12412
12413         * dwarf2out.c (add_name_and_src_coords_attributes): Push on the
12414         correct stack (obvious VMS fix).
12415
12416 2009-07-29  Douglas B Rupp  <rupp@gnat.com>
12417
12418         * dwarf2out.c (output_file_names): Output VMS style file name, size,
12419         date, version info if VMS_DEBUGGING_INFO defined.
12420         * vmsdgbout.c (vms_file_stats_name): New functon. VMS style file name,
12421         size, date calculating code moved here.
12422
12423 2009-07-29  Paul Brook  <paul@codesourcery.com>
12424
12425         * config/arm/lib1funcs.asm (clear_cache): Use ARM_FUNC_START and
12426         do_push/do_pop.
12427
12428 2009-07-29  Uros Bizjak  <ubizjak@gmail.com>
12429
12430         PR target/40577
12431         * config/alpha/alpha.c (alpha_expand_unaligned_store): Convert src
12432         to DImode when generating insq_le insn.
12433
12434 2009-07-28  Douglas B Rupp  <rupp@gnat.com>
12435
12436         * dwarf2out.c (DWARF2_INDIRECT_STRING_SUPPORT_MISSING_ON_TARGET):
12437         New macro set for VMS_DEBUGGGING_INFO.
12438         (AT_string_form): Use it.
12439
12440 2009-07-28  DJ Delorie  <dj@redhat.com>
12441
12442         * config/mep/mep.c (vtext_section): New.
12443         (vftext_section): New.
12444         (ftext_section): New.
12445         (mep_select_section): Add support for functions.
12446         (mep_unique_section): Likewise.
12447         (mep_asm_init_sections): Likewise.
12448         (mep_encode_section_info): Remove it from here.
12449
12450         * config/mep/mep.h (USE_SELECT_SECTION_FOR_FUNCTIONS): Define.
12451
12452 2009-07-28  Paolo Bonzini  <bonzinI@gnu.org>
12453
12454         * tree.h (TREE_DEPRECATED): Document it is used for types too.
12455         (TYPE_VECTOR_OPAQUE): Use default_def_flag
12456
12457 2009-07-28  Douglas B Rupp  <rupp@gnat.com>
12458
12459         * dwarf2out.c (output_file_names): Test new macro
12460         DWARF2_DIR_SHOULD_END_WITH_SEPARATOR.
12461         (add_comp_dir_attribute): Likewise.
12462
12463 2009-07-28  Kai Tietz  <kai.tietz@onevision.com>
12464
12465         * config/i386/mingw-w64.h (LINK_SPEC): Add
12466         separating space between commands.
12467
12468 2009-07-28  Jan Hubicka  <jh@suse.cz>
12469
12470         PR tree-optimization/40759
12471         * tree-ssa-dce.c (mark_virtual_phi_result_for_renaming): Mark all uses
12472         for renaming.
12473
12474 2009-07-27  DJ Delorie  <dj@redhat.com>
12475
12476         * config/mep/mep.c (mep_expand_builtin_saveregs): Make sure 64-bit
12477         types are dword-aligned.
12478         (mep_expand_va_start): Likewise.
12479
12480 2009-07-27  Olivier Hainque  <hainque@adacore.com>
12481             Douglas B Rupp  <rupp@gnat.com>
12482
12483         * convert.c (convert_to_pointer): Don't assume the target
12484         pointer type is POINTER_SIZE long. Fetch its precision instead.
12485
12486 2009-07-27  Douglas B Rupp  <rupp@gnat.com>
12487
12488         * system.h (fopen): Undefine if macro.
12489
12490 2009-07-27  Jakub Jelinek  <jakub@redhat.com>
12491
12492         * dwarf2out.c (output_cfi_p): Removed.
12493         (output_cfis): New function.
12494         (output_fde): New function, split from output_call_frame_info.
12495         (output_call_frame_info): Use it.
12496         (dwarf2out_switch_text_section): Use output_cfis.
12497
12498 2009-07-24  Kai Tietz  <kai.tietz@onevision.com>
12499
12500         * config/i386/cygming.h (DWARF2_UNWIND_INFO): Error build when
12501         TARGET_BI_ARCH is specified without enabling SJLJ.
12502         * config/i386/mingw32.h (MD_UNWIND_SUPPORT): Define MD_UNWIND_SUPPORT,
12503         if TARGET_64BIT and TARGET_BI_ARCH aren't defined.
12504
12505 2009-07-26  Mikael Pettersson <mikpe@it.uu.se>
12506
12507         * arm.md (negdi2): Use DImode if forcing a value into a register.
12508
12509 2009-07-26  Ira Rosen  <irar@il.ibm.com>
12510
12511         PR tree-optimization/40801
12512         * tree-vect-stmts.c (vectorizable_call): Get previous copy
12513         of vector operand from the previous copy of vector statement.
12514         Pass the correct definition type value to
12515         vect_get_vec_def_for_stmt_copy().
12516
12517 2009-07-25  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
12518
12519         * collect2.c (scan_libraries): Use CONST_CAST2 to perform char ** to
12520         const char ** conversion.
12521
12522 2009-07-25 David Daney <ddaney@caviumnetworks.com>
12523
12524         * system.h (gcc_assert): Invoke __builtin_unreachable() instead of
12525         fancy_abort() if !ENABLE_ASSERT_CHECKING.
12526         (gcc_unreachable): Invoke __builtin_unreachable() if
12527         !ENABLE_ASSERT_CHECKING.
12528
12529 2009-07-25  David Daney  <ddaney@caviumnetworks.com>
12530
12531         PR rtl-optimization/40445
12532         * emit-rtl.c (next_nonnote_insn_bb): New function.
12533         * rtl.h (next_nonnote_insn_bb): Declare new function.
12534         * cfgcleanup.c (try_optimize_cfg): Don't remove an empty block
12535         with no successors that is the successor of the ENTRY_BLOCK.
12536         Continue from the top after removing an empty fallthrough block.
12537         * cfgrtl.c (get_last_bb_insn): Call next_nonnote_insn_bb instead
12538         of next_nonnote_insn.
12539
12540 2009-07-25  David Daney  <ddaney@caviumnetworks.com>
12541
12542         * cfgcleanup.c (old_insns_match_p): Handle the case of empty blocks.
12543
12544 2009-07-25  Martin Jambor  <mjambor@suse.cz>
12545
12546         * c-common.c (c_common_attribute_table): New element for noclone.
12547         (handle_noclone_attribute): New function. Forward-declare.
12548         * tree-inline.c (tree_versionable_function_p): Check for noclone
12549         attribute.
12550         * doc/extend.texi (Labels as Values): Document need for noclone.
12551         (Function Attributes): Document noclone attribute.
12552
12553 2009-07-25  Jakub Jelinek  <jakub@redhat.com>
12554
12555         PR rtl-optimization/34999
12556         * dwarf2out.c (struct dw_fde_struct): Add dw_fde_switch_cfi
12557         and dw_fde_switched_cold_to_hot fields.
12558         (output_cfi_p): New function.
12559         (output_call_frame_info): If fde->dw_fde_switched_sections,
12560         output 2 FDEs instead of one with corrupted header.
12561         (dwarf2out_do_cfi_startproc): New function.
12562         (dwarf2out_begin_prologue): Use it.  Initialize fde->dw_fde_switch_cfi
12563         and fde->dw_fde_switched_cold_to_hot.
12564         (dwarf2out_switch_text_section): Compute
12565         fde->dw_fde_switched_cold_to_hot.  Switch to new text section here.
12566         If dwarf2out_do_cfi_asm, emit .cfi_endproc before it and call
12567         dwarf2out_do_cfi_startproc plus emit again currently active CFI insns.
12568         Otherwise, compute fde->dw_fde_switch_cfi.
12569
12570 2009-07-24  Cary Coutant  <ccoutant@google.com>
12571
12572         * tree-cfg.c (assign_discriminator): Add explicit parentheses.
12573
12574 2009-07-24  Cary Coutant  <ccoutant@google.com>
12575
12576         * cfghooks.c (split_block): Copy discriminator to new block.
12577         * tree-cfg.c (assign_discriminator): Check location of last
12578         instruction in block as well as first.
12579
12580 2009-07-24  Uros Bizjak  <ubizjak@gmail.com>
12581
12582         * config/i386/linux.c: Use fputs or putc instead of fprintf
12583         where appropriate.
12584         * config/i386/gas.h: Ditto.
12585         * config/i386/x86-64.h: Ditto.
12586         * config/i386/att.h: Ditto.
12587
12588 2009-07-24  Andreas Krebbel  <Andreas.Krebbel@de.ibm.com>
12589
12590         * expmed.c (emit_store_flag): Use a recursive call to optimize the
12591         xor case.
12592
12593 2009-07-24  Martin Jambor  <mjambor@suse.cz>
12594
12595         * ipa-prop.h (struct ipa_node_params): New flag node_enqued.
12596         (ipa_push_func_to_list_1): Declare.
12597         (ipa_push_func_to_list): New function.
12598
12599         * ipa-prop.c (ipa_push_func_to_list_1): New function.
12600         (ipa_init_func_list): Call ipa_push_func_to_list_1.
12601         (ipa_push_func_to_list): Removed.
12602         (ipa_pop_func_from_list): Clear node_enqueued flag.
12603
12604 2009-07-24  Andreas Krebbel  <krebbel1@de.ibm.com>
12605
12606         * config/s390/s390.c (override_options): Default
12607         max-unrolled-insns to 100 for z10 tuning.
12608
12609 2009-07-24  Tobias Grosser  <grosser@fim.uni-passau.de>
12610
12611         * Makefile.in (TREE_DATA_REF_H, tree-vrp.o, tree-cfg.o, tree-if-conv.o
12612         tree-ssa-loop.o, tree-ssa-loop-niter.o, tree-ssa-loop-ivcanon.o,
12613         tree-ssa-loop-prefetch.o, tree-predcom.o, tree-affine.o,
12614         tree-scalar-evolution.o, tree-data-ref.o, tree-vect-loop.o,
12615         tree-vect-data-refs.o, tree-loop-linear.o, tree-loop-distribution.o
12616         tree-parloops.o, tree-pretty-printer.o, fold-const.o, tree-ssa-dce.o,
12617         lambda-code.o, params.o): Cleanup use of SCEV_H and TREE_DATA_REF_H.
12618
12619 2009-07-24  Kai Tietz  <kai.tietz@onevision.com>
12620
12621         * config/i386/mingw-w64.h (STANDARD_INCLUDE_DIR): Remove and
12622         use default set in mingw32.h header.
12623         * config/i386/mingw32.h (STANDARD_INCLUDE_DIR): Use for 32-bit and
12624         64-bit /mingw/include path.
12625         (STANDARD_STARTFILE_PREFIX_1): Use for 32-bit and 64-bit /mingw/lib
12626         path.
12627
12628 2009-07-23  Neil Vachharajani  <nvachhar@google.com>
12629
12630         PR rtl-optimization/40209
12631         * loop-iv.c (iv_analysis_loop_init): Call df_note_add_problem.
12632
12633 2009-07-23  Uros Bizjak  <ubizjak@gmail.com>
12634
12635         * config/i386/i386.c: Use ASM_LONG instead of .long.  Concatenate
12636         ASM_LONG, LPREFIX, MCOUNT_NAME and PROFILE_COUNT_REGISTER strings
12637         with the rest of string where appropriate.  Use fputs or putc
12638         instead of fprintf where appropriate.
12639
12640 2009-07-22  Michael Meissner  <meissner@linux.vnet.ibm.com>
12641             Pat Haugen  <pthaugen@us.ibm.com>
12642             Revital Eres <ERES@il.ibm.com>
12643
12644         * config/rs6000/vector.md: New file.  Move most of the vector
12645         expander support here from altivec.md to allow for the VSX vector
12646         unit in the future.  Add support for secondary_reload patterns.
12647         Rewrite the patterns for vector comparison, and vector comparison
12648         predicate instructions so that the RTL expresses the desired
12649         behavior, instead of using unspec.
12650
12651         * config/rs6000/constraints.md ("f" constraint): Use
12652         rs6000_constraints to hold the precalculated register class.
12653         ("d" constraint): Ditto.
12654         ("wd" constraint): New constraint for VSX.
12655         ("wf" constraint): Ditto.
12656         ("ws" constraint): Ditto.
12657         ("wa" constraint): Ditto.
12658         ("wZ" constraint): Ditto.
12659         ("j" constraint): Ditto.
12660
12661         * config/rs6000/predicates.md (vsx_register_operand): New
12662         predicate for VSX.
12663         (vfloat_operand): New predicate for vector.md.
12664         (vint_operand): Ditto.
12665         (vlogical_operand): Ditto.
12666         (easy_fp_constant): If VSX, 0.0 is an easy constant.
12667         (easy_vector_constant): Add VSX support.
12668         (altivec_indexed_or_indirect_operand): New predicate for
12669         recognizing Altivec style memory references with AND -16.
12670
12671         * config/rs6000/rs6000.c (rs6000_vector_reload): New static global
12672         for vector secondary reload support.
12673         (rs6000_vector_reg_class): Delete, replacing it with
12674         rs6000_constraints.
12675         (rs6000_vsx_reg_class): Ditto.
12676         (rs6000_constraints): New array to hold the register classes of
12677         each of the register constraints that can vary at runtime.
12678         (builtin_mode_to_type): New static array for builtin function type
12679         creation.
12680         (builtin_hash_table): New static hash table for builtin function
12681         type creation.
12682         (TARGET_SECONDARY_RELOAD): Define target hook.
12683         (TARGET_IRA_COVER_CLASSES): Ditto.
12684         (rs6000_hard_regno_nregs_internal): If -mvsx, floating point
12685         registers are 128 bits if VSX memory reference instructions are used.
12686         (rs6000_hard_regno_mode_ok): For VSX, only check if the VSX memory
12687         unit is being used.
12688         (rs6000_debug_vector_unit): Move into rs6000_debug_reg_global.
12689         (rs6000_debug_reg_global): Move -mdebug=reg statements here.
12690         Print several of the scheduling related parameters.
12691         (rs6000_init_hard_regno_mode_ok): Switch to putting constraints in
12692         rs6000_constraints instead of rs6000_vector_reg_class.  Move
12693         -mdebug=reg code to rs6000_debug_reg_global.  Add support for
12694         -mvsx-align-128 debug switch.  Drop testing float_p if VSX or
12695         Altivec.  Add VSX support.  Setup for secondary reload support on
12696         Altivec/VSX registers.
12697         (rs6000_override_options): Make power7 set the scheduling groups
12698         like the power5.  Add support for new debug switches to override
12699         the scheduling defaults.  Temporarily disable -mcpu=power7 from
12700         setting -mvsx.  Add support for debug switches -malways-hint,
12701         -msched-groups, and -malign-branch-targets.
12702         (rs6000_buitlin_conversion): Add support for returning unsigned
12703         vector conversion functions to fix regressions due to stricter
12704         type checking.
12705         (rs6000_builtin_mul_widen_even): Ditto.
12706         (rs6000_builtin_mul_widen_odd): Ditto.
12707         (rs6000_builtin_vec_perm): Ditto.
12708         (rs6000_vec_const_move): On VSX, use xxlxor to clear register.
12709         (rs6000_expand_vector_init): Initial VSX support for using xxlxor
12710         to zero a register.
12711         (rs6000_emit_move): Fixup invalid const symbol_ref+reg that is
12712         generated upstream.
12713         (bdesc_3arg): Add builtins for unsigned types.  Add builtins for
12714         VSX types for bit operations.  Changes to accomidate vector.md.
12715         (bdesc_2arg): Ditto.
12716         (bdesc_1arg): Ditto.
12717         (struct builtin_description_predicates): Rewrite predicate
12718         handling so that RTL describes the operation, instead of passing
12719         the instruction to be used as a string argument.
12720         (bdesc_altivec_preds): Ditto.
12721         (altivec_expand_predicate_builtin): Ditto.
12722         (altivec_expand_builtin): Ditto.
12723         (rs6000_expand_ternop_builtin): Use a switch instead of an if
12724         statement for vsldoi support.
12725         (altivec_expand_ld_builtin): Change to use new names from vector.md.
12726         (altivec_expand_st_builtin): Ditto.
12727         (paired_expand_builtin): Whitespace changes.
12728         (rs6000_init_builtins): Add V2DF/V2DI types.  Initialize the
12729         builtin_mode_to_type table for secondary reload.  Call
12730         builtin_function_type to build random builtin functions.
12731         (altivec_init_builtins): Change to use builtin_function_type to
12732         create builtin function types dynamically as we need them.
12733         (builtin_hash_function): New support for hashing the tree types
12734         for builtin function as we need it, rather than trying to build
12735         all of the trees that we need.  Add initial preliminary VSX support.
12736         (builtin_function_type): Ditto.
12737         (builtin_function_eq): Ditto.
12738         (builtin_hash_struct): Ditto.
12739         (rs6000_init_builtins): Ditto.
12740         (rs6000_common_init_builtins): Ditto.
12741         (altivec_init_builtins): Ditto.
12742         (rs6000_common_init_builtins): Ditto.
12743         (enum reload_reg_type): New enum for simplifing reg classes.
12744         (rs6000_reload_register_type): Simplify register classes into GPR,
12745         Vector, and other registers.  Altivec and VSX addresses in reload.
12746         (rs6000_secondary_reload_inner): Ditto.
12747         (rs6000_ira_cover_classes): New target hook, that returns the
12748         appropriate cover classes, based on -mvsx being used or not.
12749         (rs6000_secondary_reload_class): Add VSX support.
12750         (get_vec_cmp_insn): Delete, rewrite vector conditionals.
12751         (get_vsel_insn): Ditto.
12752         (rs6000_emit_vector_compare): Rewrite vector conditional support
12753         so that where we can, we use RTL operators, instead of blindly use
12754         UNSPEC.
12755         (rs6000_emit_vector_select): Ditto.
12756         (rs6000_emit_vector_cond_expr): Ditto.
12757         (rs6000_emit_minmax): Directly generate min/max under altivec, vsx.
12758         (create_TOC_reference): Add -mdebug=addr support.
12759         (emit_frame_save): VSX loads/stores need register indexed addressing.
12760
12761         * config/rs6000/rs6000.md: Include vector.md.
12762
12763         * config/rs6000/t-rs6000 (MD_INCLUDES): Add vector.md.
12764
12765         * config/rs6000/rs6000-c.c (altivec_overloaded_builtins): Add
12766         support for V2DI, V2DF in logical, permute, select operations.
12767
12768         * config/rs6000/rs6000.opt (-mvsx-scalar-double): Add new debug
12769         switch for vsx/power7.
12770         (-mvsx-scalar-memory): Ditto.
12771         (-mvsx-align-128): Ditto.
12772         (-mallow-movmisalign): Ditto.
12773         (-mallow-df-permute): Ditto.
12774         (-msched-groups): Ditto.
12775         (-malways-hint): Ditto.
12776         (-malign-branch-targets): Ditto.
12777
12778         * config/rs6000/rs6000.h (IRA_COVER_CLASSES): Delete, use target
12779         hook instead.
12780         (IRA_COVER_CLASSES_PRE_VSX): Cover classes if not -mvsx.
12781         (IRA_COVER_CLASSES_VSX): Cover classes if -mvsx.
12782         (rs6000_vector_reg_class): Delete.
12783         (rs6000_vsx_reg_class): Ditto.
12784         (enum rs6000_reg_class_enum): New enum for the constraints that
12785         vary based on target switches.
12786         (rs6000_constraints): New array to hold the register class for all
12787         of the register constraints that vary based on the switches used.
12788         (ALTIVEC_BUILTIN_*_UNS): Add unsigned builtin functions.
12789         (enum rs6000_builtins): Add unsigned varients for the builtin
12790         declarations returned by target hooks for expanding multiplies,
12791         select, and permute operations.  Add VSX builtins.
12792         (enum rs6000_builtin_type_index): Add entries for VSX.
12793         (V2DI_type_node): Ditto.
12794         (V2DF_type_node): Ditto.
12795         (unsigned_V2DI_type_node): Ditto.
12796         (bool_long_type_node): Ditto.
12797         (intDI_type_internal_node): Ditto.
12798         (uintDI_type_internal_node): Ditto.
12799         (double_type_internal_node): Ditto.
12800
12801         * config/rs6000/altivec.md (whole file): Move all expanders to
12802         vector.md from altivec.md.  Rename insn matching functions to be
12803         altivec_foo.
12804         (UNSPEC_VCMP*): Delete, rewrite vector comparisons.
12805         (altivec_vcmp*): Ditto.
12806         (UNSPEC_VPERM_UNS): New, add for unsigned types using vperm.
12807         (VM): New iterator for moves that includes the VSX types.
12808         (altivec_vperm_<mode>): Add VSX types.  Add unsigned types.
12809         (altivec_vperm_<mode>_uns): New, for unsigned types.
12810         (altivec_vsel_*): Rewrite vector comparisons and predicate builtins.
12811         (altivec_eq<mode>): Ditto.
12812         (altivec_gt<mode>): Ditto.
12813         (altivec_gtu<mode>): Ditto.
12814         (altivec_eqv4sf): Ditto.
12815         (altivec_gev4sf): Ditto.
12816         (altivec_gtv4sf): Ditto.
12817         (altivec_vcmpbfp_p): Ditto.
12818
12819 2009-07-23  Richard Earnshaw  <rearnsha@arm.com>
12820
12821         * arm.md (split for ior/xor with shift and zero-extend): Cast op3 to
12822         unsigned HWI.
12823
12824 2009-07-23  Uros Bizjak  <ubizjak@gmail.com>
12825
12826         PR target/40832
12827         * config/i386/i386.c (output_387_ffreep): Rewrite to use
12828         ASM_SHORT instead of .word.
12829         * config/i386/i386.md (*tls_global_dynamic_64): Use ASM_SHORT
12830         instead of .word in asm template.
12831
12832 2009-07-22  Vladimir Makarov  <vmakarov@redhat.com>
12833
12834         PR target/37488
12835         * ira-lives.c (bb_has_abnormal_call_pred): New function.
12836         (process_bb_node_lives): Use it.
12837
12838         * ira.c (setup_cover_and_important_classes): Don't setup
12839         ira_important_class_nums.  Add cover classes to the end of
12840         important classes.
12841         (cover_class_order, comp_reg_classes_func, reorder_important_classes):
12842         New.
12843         (find_reg_class_closure): Use reorder_important_classes.
12844
12845         * config/i386/i386.h (IRA_COVER_CLASSES): Remove.
12846
12847         * config/i386/i386.c (i386_ira_cover_classes): New function.
12848         (TARGET_IRA_COVER_CLASSES): Redefine.
12849
12850         * doc/tm.texi (TARGET_IRA_COVER_CLASSES): Add a comment about
12851         importance of order of cover classes in the array.
12852
12853 2009-07-22  Diego Novillo  <dnovillo@google.com>
12854
12855         * tree-pass.h (TDF_EH): Define.
12856         * gimple-pretty-print.c (dump_gimple_stmt): If FLAGS
12857         contains TDF_EH, print the EH region number holding GS.
12858         * tree-dump.c (dump_options): Add "eh".
12859         * doc/invoke.texi: Document it.
12860
12861 2009-07-22  Doug Kwan  <dougkwan@google.com>
12862
12863         * config/arm/arm.md (subdi3) Copy non-reg values to DImode registers.
12864
12865 2009-07-22  Michael Matz  <matz@suse.de>
12866
12867         PR tree-optimization/35229
12868         PR tree-optimization/39300
12869
12870         * tree-ssa-pre.c (includes): Include tree-scalar-evolution.h.
12871         (inhibit_phi_insertion): New function.
12872         (insert_into_preds_of_block): Call it for REFERENCEs.
12873         (init_pre): Initialize and finalize scalar evolutions.
12874         * Makefile.in (tree-ssa-pre.o): Depend on tree-scalar-evolution.h .
12875
12876 2009-07-22  Uros Bizjak  <ubizjak@gmail.com>
12877
12878         * config/i386/predicates.md (zero_extended_scalar_load_operand):
12879         Use CONST_VECTOR_NUNITS to determine number of elements.
12880
12881 2009-07-22  Andreas Krebbel  <krebbel1@de.ibm.com>
12882
12883         * config/s390/constraints.md (ZQ, ZR, ZS, ZT): New constraints.
12884         (U, W): Constraints are now deprecated and will be removed if we
12885         run out of letters.
12886         * config/s390/s390.md (U, W): Replaced with ZQZR, ZSZT throughout
12887         the file.
12888         ("prefetch"): Add the stcmh instruction for prefetching.
12889         * config/s390/s390.c (s390_symref_operand_p): Function moved. No
12890         changes.
12891         (s390_short_displacement): Return always true if compiling for
12892         machines not providing the long displacement facility.
12893         (s390_mem_constraint): Support the new constraint letter Z.
12894         (s390_check_qrst_address): New function.
12895
12896 2009-07-21  DJ Delorie  <dj@redhat.com>
12897
12898         * config/mep/mep.c (mep_legitimize_arg): Leave control registers
12899         alone too.
12900
12901 2009-07-21  Jason Merrill  <jason@redhat.com>
12902
12903         * c-common.c (max_tinst_depth): Increase default to 1024.
12904
12905 2009-07-21  Uros Bizjak  <ubizjak@gmail.com>
12906
12907         * config/i386/sse.md (vec_unpacku_float_hi_v4si): New expander.
12908         (vec_unpacku_float_lo_v4si): Ditto.
12909
12910 2009-07-21  Uros Bizjak  <ubizjak@gmail.com>
12911
12912         PR target/40811
12913         * config/i386/sse.md (sse2_cvtudq2ps): New expander.
12914         (enum ix86_builtins): Add IX86_BUILTIN_CVTUDQ2PS.
12915         (builtin_description): Add __builtin_ia32_cvtudq2ps.
12916         (ix86_vectorize_builtin_conversion): Handle IX86_BUILTIN_CVTUDQ2PS.
12917
12918 2009-07-21  Jakub Jelinek  <jakub@redhat.com>
12919
12920         PR tree-optimization/40813
12921         * tree-inline.c (copy_bb): Regimplify RHS after last stmt, not before
12922         it.
12923
12924 2009-07-21  Kaz Kojima  <kkojima@gcc.gnu.org>
12925
12926         * config/sh/sh.c (sh_gimplify_va_arg_expr): Wrap the result
12927         with a NOP_EXPR if needed.
12928
12929 2009-07-21  Paul Brook <paul@codesourcery.com>
12930
12931         * tree-vectorizer.c (increase_alignment): Handle nested arrays.
12932         Terminate debug dump with newline.
12933
12934 2009-07-20  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
12935
12936         * pa.c (compute_zdepwi_operands): Limit deposit length to 32 - lsb.
12937         Cast "1" to unsigned HOST_WIDE_INT.
12938         (compute_zdepdi_operands): Limit maximum length to 64 bits.  Limit
12939         deposit length to the maximum length - lsb.  Extend length if
12940         HOST_BITS_PER_WIDE_INT is 32.
12941
12942 2009-07-20  Olatunji Ruwase <tjruwase@google.com>
12943
12944         * cgraph.h (constant_pool_htab): New function.
12945         (constant_descriptor_tree): Move from varasm.c.
12946         * varasm.c (constant_pool_htab): New function.
12947         (constant_descriptor_tree): Move to cgraph.h.
12948
12949 2009-07-20  Olatunji Ruwase  <tjruwase@google.com>
12950
12951         * toplev.c: Invoke FINISH_UNIT callbacks before call to finalize().
12952
12953 2009-07-20  Shujing Zhao  <pearly.zhao@oracle.com>
12954
12955         * Makefile.in (TREE_INLINE_H, tree-inline.o, cgraph.o): Remove
12956         $(VARRAY_H).
12957
12958 2009-07-20  Xinliang David Li  <davidxl@google.com>
12959
12960         * dbgcnt.c (dbg_cnt_set_limit_by_name): Add length check.
12961
12962 2009-07-20  Adam Nemet  <anemet@caviumnetworks.com>
12963
12964         * config/mips/mips.md (move_type): Add arith.
12965         (type): Handle arith.
12966         (zero_extendsidi2): Rename this into ...
12967         (*zero_extendsidi2): ... this.  Don't match if ISA_HAS_EXT_INS.
12968         (zero_extendsidi2): New expander.
12969         (*zero_extendsidi2_dext): New pattern.
12970
12971 2009-07-20  Nick Clifton  <nickc@redhat.com>
12972
12973         * config.gcc (mips64-*-*): Add definition of tm_defines in order
12974         to set MIPS_ABI_DEFAULT.
12975         * config/mips/vr.h (MIPS_ABI_DEFAULT): Remove definition.
12976
12977 2009-07-20  Jakub Jelinek  <jakub@redhat.com>
12978
12979         * tree-object-size.c (addr_object_size): Handle unions with
12980         array in it as last field of structs in __bos (, 1) as __bos (, 0).
12981
12982         PR tree-optimization/40792
12983         * tree.c (build_function_type_skip_args): Remove bogus assert.
12984
12985 2009-07-20  Jan Hubicka  <jh@suse.cz>
12986             Martin Jambor  <mjambor@suse.cz>
12987
12988         * cgraph.h (combined_args_to_skip): New field.
12989         * cgraph.c (cgraph_create_virtual_clone): Properly handle
12990         combined_args_to_skip and args_to_skip.
12991         * tree-inline.c (update_clone_info): New function.
12992         (tree_function_versioning): Call update_clone_info.
12993         * cgraphunit.c (cgraph_materialize_clone): Dump materialized
12994         functions.
12995         (cgraph_materialize_all_clones): More extensive dumping, working
12996         with combined_args_to_skip rather than args_to_skip.
12997
12998 2009-07-20  Ira Rosen  <irar@il.ibm.com>
12999
13000         * tree-vectorizer.h (vectorizable_condition): Add parameters.
13001         * tree-vect-loop.c (vect_is_simple_reduction): Support COND_EXPR.
13002         (get_initial_def_for_reduction): Likewise.
13003         (vectorizable_reduction): Skip the check of first operand in case
13004         of COND_EXPR. Add check that it is outer loop vectorization if
13005         nested cycle was detected. Call vectorizable_condition() for
13006         COND_EXPR. If reduction epilogue cannot be created do not fail for
13007         nested cycles (if it is not double reduction). Assert that there
13008         is only one type in the loop in case of COND_EXPR. Call
13009         vectorizable_condition() to vectorize COND_EXPR.
13010         * tree-vect-stmts.c (vectorizable_condition): Update comment.
13011         Add parameters. Allow nested cycles if called from
13012         vectorizable_reduction(). Use reduction vector variable if provided.
13013         (vect_analyze_stmt): Call vectorizable_reduction() before
13014         vectorizable_condition().
13015         (vect_transform_stmt): Update call to vectorizable_condition().
13016
13017 2009-07-20  Christian Bruel  <christian.bruel@st.com>
13018
13019         * config/sh/sh.opt (-mfmovd): Resurrect and document.
13020         * doc/invoke.texi (-mfmovd): Likewise.
13021         * config/sh/sh.h (TARGET_FMOVD, MASK_FMOVD): Remove default setting.
13022
13023 2009-07-20  Jan Hubicka  <jh@suse.cz>
13024
13025         * tree-ssa-dce.c (remove_dead_phis): Only look for abnormal PHIs
13026         when handling SSA name.
13027
13028 2009-07-19  Jan Hubicka  <jh@suse.cz>
13029
13030         PR tree-optimization/40676
13031         * tree-ssa-dce.c (eliminate_unnecessary_stmts): Do renaming on all
13032         virtual PHIs in empty BBs.
13033
13034 2009-07-18  Adam Nemet  <anemet@caviumnetworks.com>
13035
13036         * combine.c (make_compound_operation) <SUBREG>: If force_to_mode
13037         re-expanded the compound use gen_lowpart instead to convert to the
13038         desired mode.
13039
13040 2009-07-18  Adam Nemet  <anemet@caviumnetworks.com>
13041
13042         * combine.c (try_widen_shift_mode): Add COUNT, OUTER_CODE and
13043         OUTER_CONST arguments.
13044         <LSHIFTRT>: Use them to allow widening if the bits shifted in from
13045         the new wider mode will be masked off.
13046         (simplify_shift_const_1): Adjust calls to try_widen_shift_mode.
13047
13048 2009-07-18  Adam Nemet  <anemet@caviumnetworks.com>
13049
13050         * combine.c (try_widen_shift_mode) <LSHIFTRT>: Allow widening if the
13051         high-order bits are zero.
13052
13053 2009-07-18  Adam Nemet  <anemet@caviumnetworks.com>
13054
13055         * combine.c (simplify_shift_const_1): Split code to determine
13056         shift_mode into ...
13057         (try_widen_shift_mode): ... here.  Allow widening for ASHIFTRT if the
13058         new bits shifted in are identical to the old sign bit.
13059
13060 2009-07-18  Richard Guenther  <rguenther@suse.de>
13061
13062         PR c/40787
13063         * gimplify.c (gimplify_call_expr): Reject code using results from
13064         functions returning void.
13065
13066 2009-07-18  Richard Sandiford  <r.sandiford@uk.ibm.com>
13067
13068         * doc/md.texi: Document the new PowerPC "es" constraint.
13069         Document that "m" can include automodified addresses on this target,
13070         and explain how %U must be used.  Extend the "Q" and "Z" documentation
13071         to suggest "es" as well as "m".
13072         * config/rs6000/constraints.md (es): New memory constraint.
13073         (Q, Z): Update strings to match new documentation.
13074
13075 2009-07-18  Richard Sandiford  <r.sandiford@uk.ibm.com>
13076
13077         * config/rs6000/rs6000.c (rs6000_mode_dependent_address): Allow any
13078         offset from virtual_stack_vars_rtx and arg_pointer_rtx.
13079         * config/rs6000/predicates.md (volatile_mem_operand): Use
13080         offsettable_nonstrict_memref_p.
13081         * config/rs6000/rs6000.md (*floatsidf2_internal): Remove split check.
13082         (*floatunssidf2_internal): Likewise.
13083         (*fix_truncdfsi2_internal): Likewise.
13084         (*fix_trunctfsi2_internal): Likewise.
13085
13086 2009-07-17  Anatoly Sokolov  <aesok@post.ru>
13087
13088         * config/avr/avr-devices.c (avr_mcu_t): Add atmega8u2, atmega16u2 and
13089         atmega32u2 devices.
13090         * config/avr/t-avr (MULTILIB_MATCHES): (Ditto.).
13091
13092 2009-07-17  Richard Guenther  <rguenther@suse.de>
13093
13094         PR c/40401
13095         * tree-pass.h (pass_diagnose_omp_blocks): Declare.
13096         (pass_warn_unused_result): Likewise.
13097         (TODO_set_props): Remove.
13098         * omp-low.c (diagnose_omp_structured_block_errors): Change to
13099         run as a pass.
13100         (pass_diagnose_omp_blocks): Define.
13101         * c-decl.c (pop_file_scope): Do not finalize the CU here.
13102         (c_gimple_diagnostics_recursively): Remove.
13103         (finish_function): Do not call it.
13104         (c_write_global_declarations): Continue after errors.
13105         Finalize the CU here.
13106         * c-gimplify.c (c_genericize): Do not gimplify here.
13107         * c-common.c (c_warn_unused_result): Move ...
13108         * tree-cfg.c (do_warn_unused_result): ... here.
13109         (run_warn_unused_result): New function.
13110         (gate_warn_unused_result): New function.
13111         (pass_warn_unused_result): New pass.
13112         * c-common.h (c_warn_unused_result): Remove.
13113         * flags.h (flag_warn_unused_result): Declare.
13114         * c-opts.c (c_common_init_options): Enable flag_warn_unused_result.
13115         * opts.c (flag_warn_unused_result): Initialize to false.
13116         * toplev.c (compile_file): Add comment.
13117         * omp-low.c (create_omp_child_function): Do not register
13118         the function with the frontend.
13119         (diagnose_omp_structured_block_errors): Prepare to be
13120         called as optimization pass.
13121         (gate_diagnose_omp_blocks): New function.
13122         (pass_diagnose_omp_blocks): New pass.
13123         * cgraph.h (cgraph_optimize): Remove.
13124         (cgraph_analyze_function): Likewise.
13125         * cgraph.c (cgraph_add_new_function): Gimplify C++ thunks.
13126         * cgraphunit.c (cgraph_lower_function): Lower nested functions
13127         before their parents here.
13128         (cgraph_finalize_function): Not here.
13129         (cgraph_analyze_function): Gimplify functions here.
13130         (cgraph_finalize_compilation_unit): Continue after errors.
13131         Optimize the callgraph from here.
13132         (cgraph_optimize): Make static.
13133         * langhooks.c (write_global_declarations): Finalize the CU.
13134         * gimplify.c (gimplify_asm_expr): Do not emit ASMs with errors.
13135         (gimplify_function_tree): Assert we gimplify only once.
13136         Set PROP_gimple_any property.
13137         * tree-nested.c (gimplify_all_functions): New function.
13138         (lower_nested_functions): Gimplify all nested functions.
13139         * gimple.h (diagnose_omp_structured_block_errors): Remove.
13140         * passes.c (init_optimization_passes): Add pass_warn_unused_result
13141         and pass_diagnose_omp_blocks after gimplification.  Do not
13142         set TODO_set_props on all_lowering_passes.
13143         (execute_one_pass): Do not handle TODO_set_props.
13144         * Makefile.in (cgraphunit.o): Add $(TREE_DUMP_H) dependency.
13145         (gimplify.o): Add tree-pass.h dependency.
13146         * tree-inline.c (copy_statement_list): Properly copy STATEMENT_LIST.
13147         (copy_tree_body_r): Properly handle TARGET_EXPR like SAVE_EXPR.
13148         (unsave_r): Likewise.
13149         * c-omp.c (c_finish_omp_atomic): Set DECL_CONTEXT on the
13150         temporary variable.
13151
13152 2009-07-17  Sandra Loosemore  <sandra@codesourcery.com>
13153
13154         * doc/service.texi (Service): Restore previously removed link,
13155         which isn't broken after all.
13156
13157 2009-07-17  Richard Guenther  <rguenther@suse.de>
13158
13159         PR tree-optimization/40321
13160         * tree-ssa-pre.c (add_to_exp_gen): Also add names defined by
13161         PHI nodes to the maximal set.
13162         (make_values_for_phi): Add PHI arguments to the maximal set.
13163         (execute_pre): Dump PHI_GEN and the maximal set.
13164
13165 2009-07-17  Jakub Jelinek  <jakub@redhat.com>
13166
13167         PR c++/40780
13168         * gimplify.c (gimplify_conversion): Don't change non-conversions into
13169         VIEW_CONVERT_EXPR.
13170
13171 2009-07-16  Sandra Loosemore  <sandra@codesourcery.com>
13172
13173         * doc/extend.texi (Nested Functions): Replace broken link with
13174         textual reference.
13175         * doc/service.texi (Service): Remove broken link.
13176
13177 2009-07-16  H.J. Lu  <hongjiu.lu@intel.com>
13178
13179         PR bootstrap/40781
13180         * builtins.c (expand_builtin_memcmp): Use loc instead of
13181         EXPR_LOCATION (exp).
13182         (expand_builtin_strncmp): Likewise.
13183
13184 2009-07-17  Aldy Hernandez  <aldyh@redhat.com>
13185             Manuel López-Ibáñez  <manu@gcc.gnu.org>
13186
13187         PR 40435
13188         * tree-complex.c, tree-loop-distribution.c, tree.c, tree.h,
13189         builtins.c, fold-const.c, omp-low.c, cgraphunit.c, tree-ssa-ccp.c,
13190         tree-ssa-dom.c, gimple-low.c, expr.c, tree-ssa-ifcombine.c,
13191         c-decl.c, stor-layout.c, tree-if-conv.c, c-typeck.c, gimplify.c,
13192         calls.c, tree-sra.c, tree-mudflap.c, tree-ssa-copy.c,
13193         tree-ssa-forwprop.c, c-convert.c, c-omp.c, varasm.c,
13194         tree-inline.c, c-common.c, c-common.h, gimple.c,
13195         tree-switch-conversion.c, gimple.h, tree-cfg.c, c-parser.c,
13196         convert.c: Add location argument to fold_{unary,binary,ternary},
13197         fold_build[123], build_call_expr, build_size_arg,
13198         build_fold_addr_expr, build_call_array, non_lvalue, size_diffop,
13199         fold_build1_initializer, fold_build2_initializer,
13200         fold_build3_initializer, fold_build_call_array,
13201         fold_build_call_array_initializer, fold_single_bit_test,
13202         omit_one_operand, omit_two_operands, invert_truthvalue,
13203         fold_truth_not_expr, build_fold_indirect_ref, fold_indirect_ref,
13204         combine_comparisons, fold_builtin_*, fold_call_expr,
13205         build_range_check, maybe_fold_offset_to_address, round_up,
13206         round_down.
13207
13208 2009-07-16  Jason Merrill  <jason@redhat.com>
13209
13210         PR libstdc++/37907
13211         * c-common.c (c_common_reswords): Add __is_standard_layout
13212         and __is_trivial.
13213         * c-common.h (enum rid): Add RID_IS_STD_LAYOUT and RID_IS_TRIVIAL.
13214         * doc/implement-cxx.texi: New.
13215         * doc/gcc.texi: Include it.
13216
13217 2009-07-16  DJ Delorie  <dj@redhat.com>
13218
13219         * config/m32c/m32c.c (m32c_compare_redundant): Avoid removing
13220         compares that may be indirectly affected by previous instructions.
13221
13222 2009-07-16  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
13223
13224         * builtins.c (do_mpc_arg2): New.
13225         (fold_builtin_2): Fold builtin cpow.
13226         * real.h (HAVE_mpc_pow): New.
13227
13228 2009-07-16  Bingfeng Mei  <bmei@broadcom.com>
13229
13230         * modulo-sched.c (sms_schedule): stage_count <= 1 as correct
13231         comparison to skip unprofitable schedule
13232
13233 2009-07-16  Simon Baldwin  <simonb@google.com>
13234
13235         * gcc.c (option_map): New flag -no-canonical-prefixes.
13236         * (display_help): Print help text for new flag.
13237         * (process_command): Move options translation and language specifics
13238         and handle new flag early.  Use it to set a function pointer to a
13239         prefix builder.  Replace make_relative_prefix calls with calls to
13240         the function pointed to.  Ignore new flag in regular options handling.
13241         * doc/invoke.texi (Overall Options): Documented -no-canonical-prefixes.
13242
13243 2009-07-15  DJ Delorie  <dj@redhat.com>
13244
13245         * config/mep/mep.md (sibcall_internal): Change register to avoid
13246         argument registers.
13247         (sibcall_value_internal): Likewise.
13248
13249 2009-07-15  Eric Botcazou  <ebotcazou@adacore.com>
13250
13251         PR rtl-optimization/40710
13252         * resource.c (mark_target_live_regs): Reset DF problem to LR.
13253
13254 2009-07-15  Adam Nemet  <anemet@caviumnetworks.com>
13255
13256         * config/mips/mips.md (*extenddi_truncate<mode>,
13257         *extendsi_truncate<mode>): Change type attribute to move_type
13258         with shift_shift.  Split out code handling exts from here ...
13259         (*extend<GPR:mode>_truncate<SHORT:mode>_exts): ... to this new
13260         pattern.
13261         (*extendhi_truncateqi): Change type attribute to move_type with
13262         shift_shift.  Split out code handling exts from here ...
13263         (*extendhi_truncateqi_exts): ... to this new pattern.
13264
13265 2009-07-15  Uros Bizjak  <ubizjak@gmail.com>
13266
13267         * config/i386/sse.md (copysign<mode>3): Use "and-not" SSE instruction
13268         instead of "and" with inverted sign bit mask value.  Use
13269         "nonimmediate_operand" for operand 1 and operand 2 predicate.
13270         Allocate registers only for operand 4 and operand 5.
13271
13272 2009-07-15  Jakub Jelinek  <jakub@redhat.com>
13273
13274         PR middle-end/40747
13275         * fold-const.c (fold_cond_expr_with_comparison): When folding
13276         < and <= to MIN, make sure the MIN uses the same type as the
13277         comparison's operands.
13278
13279 2009-07-15  Richard Earnshaw  <rearnsha@arm.com>
13280
13281         * arm.md (ior_xor): New code iterator.
13282         (split for ior/xor with shift and zero-extend): New split pattern.
13283         * arm/predicates.md (subreg_lowpart_operator): New special predicate.
13284
13285 2009-07-15  Richard Guenther  <rguenther@suse.de>
13286
13287         * tree-ssa-structalias.c (make_constraint_from_heapvar): Initialize
13288         offset member.
13289
13290 2009-07-15  Richard Guenther  <rguenther@suse.de>
13291
13292         PR middle-end/40753
13293         * alias.c (ao_ref_from_mem): Reject FUNCTION_DECL and LABEL_DECL bases.
13294
13295 2009-07-15  Maxim Kuvyrkov  <maxim@codesourcery.com>
13296
13297         * config/m68k/linux-unwind.h (m68k_fallback_frame_state): Update to
13298         handle 2.6.30 kernel.
13299
13300 2009-07-15  DJ Delorie  <dj@redhat.com>
13301
13302         * config/mep/mep.md (sibcall_internal): Change register to allow
13303         for 24-bit addresses.
13304         (sibcall_value_internal): Likewise.
13305
13306 2009-07-14  Ghassan Shobaki  <ghassan.shobaki@amd.com>
13307
13308         * doc/invoke.texi: Added descriptions of the  scheduling heuristics
13309         that are enabled/disabled by the flags introduced by a previous patch.
13310
13311 2009-07-14  DJ Delorie  <dj@redhat.com>
13312
13313         * config/mep/mep.md (sibcall_internal): Include non-toggling
13314         non-jmp case.
13315         (sibcall_value_internal): Likewise.
13316
13317 2009-07-14  Taras Glek  <tglek@mozilla.com>
13318             Rafael Espindola  <espindola@google.com>
13319
13320         * doc/sourcebuild.texi: Document install-plugin target.
13321         * configure.ac: Added install-plugin target to language makefiles.
13322         * configure: Regenerate.
13323         * Makefile.in (install-plugin): Install more headers,
13324         depend on lang.install-plugin.
13325
13326 2009-07-15  Manuel López-Ibáñez  <manu@gcc.gnu.org>
13327
13328         * tree-vrp.c (vrp_evaluate_conditional): Mark strings for
13329         translation.
13330
13331 2009-07-14  DJ Delorie  <dj@redhat.com>
13332
13333         * config/mep/mep.c (mep_vliw_jmp_match): New function.
13334         * config/mep/mep-protos.h (mep_vliw_jmp_match): Prototype it.
13335         * config/mep/mep.md (sibcall_internal): Change test from
13336         mep_vliw_mode_match to mep_vliw_jmp_match.
13337         (sibcall_value_internal): Likewise.
13338
13339 2009-07-14  Uros Bizjak  <ubizjak@gmail.com>
13340
13341         * config/i386/sse.md (copysign<mode>3): New expander.
13342         * config/i386/i386-protos.h (ix86_build_signbit_mask): New prototype.
13343         * config/i386/i386.c (ix86_build_signbit_mask): Make public.
13344         Use ix86_build_const_vector.
13345         (enum ix86_builtins): Add IX86_BUILTIN_CPYSGNPS and
13346         IX86_BUILTIN_CPYSGNPD.
13347         (builtin_description): Add __builtin_ia32_copysignps and
13348         __builtin_ia32_copysignpd.
13349         (ix86_builtin_vectorized_function): Handle BUILT_IN_COPYSIGN
13350         and BUILT_IN_COPYSIGNF.
13351
13352 2009-07-13  Jason Merrill  <jason@redhat.com>
13353
13354         * builtins.c (can_trust_pointer_alignment): New fn.
13355         (get_pointer_alignment): Factor it out from here.
13356         * tree.h: Declare it.
13357
13358 2009-07-14  David Edelsohn  <edelsohn@gnu.org>
13359
13360         * config/rs6000/predicates.md (offsettable_mem_operand): Test
13361         RTX_AUTOINC class.
13362
13363 2009-07-14  Dodji Seketeli  <dodji@redhat.com>
13364
13365         PR debug/40705
13366         PR c++/403057
13367         * dwarf2.out.c (gen_type_die_with_usage): Added comment.
13368
13369 2009-07-14  Richard Guenther  <rguenther@suse.de>
13370             Andrey Belevantsev <abel@ispras.ru>
13371
13372         PR middle-end/40745
13373         * cfgexpand.c (partition_stack_vars): Do not bother to update
13374         alias information when not optimizing.
13375
13376 2009-07-14  Richard Guenther  <rguenther@suse.de>
13377             Andrey Belevantsev <abel@ispras.ru>
13378
13379         * tree-ssa-alias.h (refs_may_alias_p_1): Declare.
13380         (pt_solution_set): Likewise.
13381         * tree-ssa-alias.c (refs_may_alias_p_1): Export.
13382         * tree-ssa-structalias.c (pt_solution_set): New function.
13383         * final.c (rest_of_clean_state): Free SSA data structures.
13384         * print-rtl.c (print_decl_name): Remove.
13385         (print_mem_expr): Implement in terms of print_generic_expr.
13386         * alias.c (ao_ref_from_mem): New function.
13387         (rtx_refs_may_alias_p): Likewise.
13388         (true_dependence): Query alias-export info.
13389         (canon_true_dependence): Likewise.
13390         (write_dependence_p): Likewise.
13391         * tree-dfa.c (get_ref_base_and_extent): For void types leave
13392         size unknown.
13393         * emit-rtl.c (component_ref_for_mem_expr): Remove.
13394         (mem_expr_equal_p): Use operand_equal_p.
13395         (set_mem_attributes_minus_bitpos): Do not use
13396         component_ref_for_mem_expr.
13397         * cfgexpand.c (add_partitioned_vars_to_ptset): New function.
13398         (update_alias_info_with_stack_vars): Likewise.
13399         (partition_stack_vars): Call update_alias_info_with_stack_vars.
13400         * tree-ssa.c (delete_tree_ssa): Do not release SSA names
13401         explicitly nor clear stmt operands.
13402         Free the decl-to-pointer map.
13403         * tree-optimize.c (execute_free_datastructures): Do not free
13404         SSA data structures here.
13405         * tree-flow.h (struct gimple_df): Add decls_to_pointers member.
13406         * Makefile.in (emit-rtl.o): Add pointer-set.h dependency.
13407         (alias.o): Add tree-ssa-alias.h, pointer-set.h and $(TREE_FLOW_H)
13408         dependencies.
13409         (print-rtl.o): Add $(DIAGNOSTIC_H) dependency.
13410
13411 2009-07-13  DJ Delorie  <dj@redhat.com>
13412
13413         * config/mep/mep.h (CC1_SPEC): Tweak parameters to trigger
13414         unrolling at the right iteration count.
13415
13416         * config/mep/mep.c (mep_expand_prologue): Fix frame pointer
13417         calculations.
13418
13419 2009-07-13  Ghassan Shobaki  <ghassan.shobaki@amd.com>
13420
13421         * haifa-sched.c (rank_for_schedule): Introduced flags to
13422         enable/disable individual scheduling heuristics.
13423         * common.opt: Introduced flags to enable/disable individual
13424         heuristics in the scheduler.
13425         * doc/invoke.texi: Introduced flags to enable/disable individual
13426         heuristics in the scheduler.
13427
13428 2009-07-13  Kai Tietz  <kai.tietz@onevision.com>
13429
13430         * config/i386/t-gthr-win32 (LIB2FUNCS_EXTRA): Remove file
13431         config/i386/mingw-tls.c.
13432         * config/i386/mingw-tls.c: Removed.
13433
13434 2009-07-13  Ira Rosen  <irar@il.ibm.com>
13435
13436         * tree-vect-loop.c (get_initial_def_for_reduction): Ensure that the
13437         checks access only relevant statements.
13438         (vectorizable_reduction): Likewise.
13439
13440 2009-07-12  Kai Tietz  <kai.tietz@onevision.com>
13441
13442         * config/i386/cygming.h (TARGET_OS_CPP_BUILTINS): Define _X86_
13443         just for 32-bit case.
13444
13445 2009-07-12  Jan Hubicka  <jh@suse.cz>
13446
13447         PR tree-optimization/40585
13448         * except.c (expand_resx_expr): When there already is resume
13449         instruction, produce linked list.
13450         (build_post_landing_pads): Assert that resume is empty.
13451         (connect_post_landing_pads): Handle resume lists.
13452         (dump_eh_tree): Dump resume list.
13453
13454 2009-07-12  Ira Rosen  <irar@il.ibm.com>
13455
13456         * tree-parloops.c (loop_parallel_p): Call vect_is_simple_reduction
13457         with additional argument.
13458         * tree-vectorizer.h (enum vect_def_type): Add
13459         vect_double_reduction_def.
13460         (vect_is_simple_reduction): Add argument.
13461         * tree-vect-loop.c (vect_determine_vectorization_factor): Fix
13462         indentation.
13463         (vect_analyze_scalar_cycles_1): Detect double reduction. Call
13464         vect_is_simple_reduction with additional argument.
13465         (vect_analyze_loop_operations): Handle exit phi nodes in case of
13466         double reduction.
13467         (reduction_code_for_scalar_code): Handle additional codes by
13468         returning ERROR_MARK for them. Fix comment and indentation.
13469         (vect_is_simple_reduction): Fix comment, add argument to specify
13470         double reduction. Detect double reduction.
13471         (get_initial_def_for_induction): Fix indentation.
13472         (get_initial_def_for_reduction): Fix comment and indentation.
13473         Handle double reduction. Create initial definitions that do not
13474         require adjustment if ADJUSTMENT_DEF is NULL. Handle additional cases.
13475         (vect_create_epilog_for_reduction): Fix comment, add argument to
13476         handle double reduction. Use PLUS_EXPR in case of MINUS_EXPR in
13477         epilogue result extraction. Create double reduction phi node and
13478         replace relevant uses.
13479         (vectorizable_reduction): Call vect_is_simple_reduction with
13480         additional argument. Fix indentation. Update epilogue code treatment
13481         according to the changes in reduction_code_for_scalar_code. Check
13482         for double reduction. Call vect_create_epilog_for_reduction with
13483         additional argument.
13484         * tree-vect-stmts.c (process_use): Handle double reduction, update
13485         documentation.
13486         (vect_mark_stmts_to_be_vectorized): Handle double reduction.
13487         (vect_get_vec_def_for_operand): Likewise.
13488
13489 2009-07-12  Danny Smith  <dansmister@gmail.com>
13490
13491         * config/i386/winnt.c (i386_pe_determine_dllexport_p): Don't
13492         dllexport if !TREE_PUBLIC.
13493         (i386_pe_maybe_record_exported_symbol): Assert TREE_PUBLIC.
13494
13495 2009-07-11  Anatoly Sokolov  <aesok@post.ru>
13496
13497         * config/avr/avr.h (TARGET_CPU_CPP_BUILTINS): Redefine.
13498         (avr_extra_arch_macro) Remove declatation.
13499         * config/avr/avr.c (avr_cpu_cpp_builtins): New function.
13500         (avr_extra_arch_macro) Declare as static.
13501         * config/avr/avr-protos.h (avr_cpu_cpp_builtins): Dclare.
13502
13503 2009-07-11  Jan Hubicka  <jh@suse.cz>
13504
13505         PR middle-end/48388
13506         * except.c (can_be_reached_by_runtime): Test for NULL aka bitmap.
13507
13508 2009-07-11  Jakub Jelinek  <jakub@redhat.com>
13509
13510         PR debug/40713
13511         * dwarf2out.c (dw_fde_struct): Add in_std_section and
13512         cold_in_std_section bits.
13513         (dwarf2out_begin_prologue): Initialize them.
13514         (dwarf2out_finish): Don't emit FDE range into .debug_ranges
13515         if already covered by text_section or cold_text_section range.
13516
13517         PR rtl-optimization/40667
13518         * defaults.h (MINIMUM_ALIGNMENT): Define if not defined.
13519         * doc/tm.texi (MINIMUM_ALIGNMENT): Document it.
13520         * config/i386/i386.h (MINIMUM_ALIGNMENT): Define.
13521         * config/i386/i386.c (ix86_minimum_alignment): New function.
13522         * config/i386/i386-protos.h (ix86_minimum_alignment): New prototype.
13523         * cfgexpand.c (expand_one_var): Use MINIMIM_ALIGNMENT.
13524         * emit-rtl.c (gen_reg_rtx): Likewise.
13525         * function.c (assign_parms): Likewise.  If nominal_type needs
13526         bigger alignment than FUNCTION_ARG_BOUNDARY, use its alignment
13527         rather than passed_type's alignment.
13528
13529         PR target/40668
13530         * function.c (assign_parm_setup_stack): Adjust
13531         MEM_OFFSET (data->stack_parm) if promoted_mode is different
13532         from nominal_mode on big endian.
13533
13534 2009-07-11  Paolo Bonzini  <bonzini@gnu.org>
13535
13536         * expmed.c (emit_store_flag_1): Fix choice of zero vs. sign extension.
13537
13538 2009-07-10  DJ Delorie  <dj@redhat.com>
13539
13540         * config/mep/mep.c (mep_can_inline_p): Correct logic, and simplify.
13541
13542 2009-07-10  Mark Mitchell  <mark@codesourcery.com>
13543
13544         * config/arm/thumb2.md (thumb2_cbz): Correct computation of length
13545         attribute.
13546         (thumb2_cbnz): Likewise.
13547
13548 2009-07-10  David Daney  <ddaney@caviumnetworks.com>
13549
13550         PR target/39079
13551         * config.gcc (supported_defaults): Add synci.
13552         (with_synci): Add validation.
13553         (all_defaults): Add synci.
13554         * config/mips/mips.md (clear_cache): Use TARGET_SYNCI instead of
13555         ISA_HAS_SYNCI.
13556         (synci): Same.
13557         * config/mips/mips.opt (msynci): New option.
13558         * config/mips/mips.c (mips_override_options): Warn on use of
13559         -msynci for targets that do now support it.
13560         * gcc/config/mips/mips.h (OPTION_DEFAULT_SPECS): Add a default for
13561         msynci.
13562         * gcc/doc/invoke.texi (-msynci): Document the new option.
13563         * doc/install.texi (--with-synci): Document the new option.
13564
13565 2009-07-10  Richard Guenther  <rguenther@suse.de>
13566
13567         PR tree-optimization/40496
13568         * tree-ssa-loop-manip.c (tree_transform_and_unroll_loop): Create
13569         the PHI result with a compatible type.
13570
13571 2009-07-10  Manuel López-Ibáñez  <manu@gcc.gnu.org>
13572
13573         PR 25509
13574         PR 40614
13575         * c.opt (Wunused-result): New.
13576         * doc/invoke.texi: Document it.
13577         * c-common.c (c_warn_unused_result): Use it.
13578
13579 2009-07-09  DJ Delorie  <dj@redhat.com>
13580
13581         * targhooks.c (default_target_can_inline_p): Rename from
13582         default_target_option_can_inline_p.
13583         * targhooks.h (default_target_can_inline_p): Likewise.
13584         * target-def.h (TARGET_CAN_INLINE_P): Rename from
13585         TARGET_OPTION_CAN_INLINE_P.
13586         * config/i386/i386.c (TARGET_CAN_INLINE_P): Likewise.
13587         * config/mep/mep.c (TARGET_CAN_INLINE_P): Likewise.
13588         (mep_target_can_inline_p): Rename from
13589         mep_target_option_can_inline_p.
13590
13591         PR target/40626
13592         * config/mep/mep.h (FUNCTION_ARG_REGNO_P): Add coprocessor
13593         registers used to pass vectors.
13594
13595         * config/mep/mep.c (mep_option_can_inline_p): Remove error call.
13596
13597 2009-07-09  Tom Tromey  <tromey@redhat.com>
13598
13599         * unwind-dw2-fde-darwin.c: Include dwarf2.h.
13600         * config/mmix/mmix.c: Include dwarf2.h.
13601         * config/rs6000/darwin-fallback.c: Include dwarf2.h.
13602         * config/xtensa/unwind-dw2-xtensa.c: Include dwarf2.h.
13603         * config/sh/sh.c: Include dwarf2.h.
13604         * config/i386/i386.c: Include dwarf2.h.
13605         * Makefile.in (DWARF2_H): Remove 'elf'.
13606         * except.c: Include dwarf2.h.
13607         * unwind-dw2.c: Include dwarf2.h.
13608         * dwarf2out.c: Include dwarf2.h.
13609         * unwind-dw2-fde-glibc.c: Include dwarf2.h.
13610         * unwind-dw2-fde.c: Include dwarf2.h.
13611         * dwarf2asm.c: Include dwarf2.h.
13612
13613 2009-07-09  Maxim Kuvyrkov  <maxim@codesourcery.com>
13614
13615         * haifa-sched.c (insn_finishes_cycle_p): New static function.
13616         (max_issue): Use it.
13617         * sched-int.h (struct sched_info: insn_finishes_block_p): New
13618         scheduler hook.
13619         * sched-rgn.c (rgn_insn_finishes_block_p): Implement it.
13620         (region_sched_info): Update.
13621         * sched-ebb.c (ebb_sched_info): Update.
13622         * modulo-sched.c (sms_sched_info): Update.
13623         * sel-sched-ir.c (sched_sel_haifa_sched_info): Update.
13624
13625 2009-07-09  Maxim Kuvyrkov  <maxim@codesourcery.com>
13626
13627         * varasm.c (build_constant_desc): Don't share RTL in pool entries.
13628
13629 2009-07-09  Basile Starynkevitch  <basile@starynkevitch.net>
13630
13631         * plugin.c (try_init_one_plugin): passes RTLD_GLOBAL to dlopen.
13632
13633 2009-07-09  Jakub Jelinek  <jakub@redhat.com>
13634
13635         PR middle-end/40692
13636         * fold-const.c (fold_cond_expr_with_comparison): Don't replace
13637         arg1 with arg01 if arg1 is already INTEGER_CST.
13638
13639 2009-07-08  Adam Nemet  <anemet@caviumnetworks.com>
13640
13641         * simplify-rtx.c (simplify_binary_operation_1) <AND>:
13642         Transform (and (truncate)) into (truncate (and)).
13643
13644 2009-07-08  Adam Nemet  <anemet@caviumnetworks.com>
13645
13646         * combine.c (make_extraction): Check TRULY_NOOP_TRUNCATION before
13647         creating LHS paradoxical subregs.  Fix surrounding returns to
13648         use NULL_RTX rather than 0.
13649
13650 2009-07-08  DJ Delorie  <dj@redhat.com>
13651
13652         * config/mep/mep.c (mep_option_can_inline_p): New.
13653         (TARGET_OPTION_CAN_INLINE_P): Define.
13654
13655 2009-07-08  Mark Wielaard  <mjw@redhat.com>
13656
13657         PR debug/40659
13658         * dwarf2out.c (add_data_member_location_attribute): When we have
13659         only a constant offset don't emit a new location description using
13660         DW_OP_plus_uconst, but just add the constant with add_AT_int, when
13661         dwarf_version > 2.
13662
13663 2009-07-08  Richard Henderson  <rth@redhat.com>
13664
13665         PR target/38900
13666         * config/i386/i386.h (CONDITIONAL_REGISTER_USAGE): Move to i386.c.
13667         (enum reg_class): Add CLOBBERED_REGS.
13668         (REG_CLASS_NAMES, REG_CLASS_CONTENTS): Likewise.
13669         * config/i386/i386.c (ix86_conditional_register_usage): Moved
13670         from CONDITIONAL_REGISTER_USAGE; build CLOBBERED_REGS for 64-bit.
13671         (ix86_function_ok_for_sibcall): Tidy.  Disallow MS->SYSV sibcalls.
13672         (ix86_expand_call): Use sibcall_insn_operand when needed.  Don't
13673         force 64-bit sibcalls into R11.
13674         * config/i386/constraints.md (U): New constraint.
13675         * config/i386/i386.md (sibcall_1, sibcall_value_1): Use it.
13676         (sibcall_1_rex64, sibcall_value_1_rex64): Likewise.
13677         (sibcall_1_rex64_v, sibcall_value_1_rex64_v): Remove.
13678
13679 2009-07-08  Shujing Zhao  <pearly.zhao@oracle.com>
13680
13681         * basic-block.h (dump_regset, debug_regset): Remove duplicate
13682         prototypes.
13683         * c-objc-common.h (c_initialize_diagnostics): Ditto.
13684         * ebitmap.h (dump_ebitmap): Ditto.
13685         * optabs.h (optab_libfunc): Ditto.
13686         * tree.h (tree_expr_nonzero_warnv_p): Ditto.
13687         * tree-flow.h (vect_can_force_dr_alignment_p,
13688         get_vectype_for_scalar_type): Ditto.
13689         (vectorize_loops): Move prototype to ...
13690         * tree-vectorizer.h: ... here. Also, adjust comment.
13691         (vect_set_verbosity_level): Remove duplicate prototype.
13692         * tree-ssa-loop.c: Include tree-vectorizer.h.
13693         * Makefile.in (tree-ssa-loop.o): Depend on tree-vectorizer.h.
13694
13695 2009-07-08  Nick Clifton  <nickc@redhat.com>
13696
13697         * config/i386/unix.h (ASM_COMMENT_START): Add a space after the
13698         forward slash.
13699
13700 2009-07-08  DJ Delorie  <dj@redhat.com>
13701
13702         * config/mep/mep-ivc2.cpu (cpmovtocsar0_C3, cpmovtocsar1_C3,
13703         cpmovtocc_C3, cpmovtocsar0_P0S_P1, cpmovtocsar1_P0S_P1,
13704         cpmovtocc_P0S_P1): Mark volatile.  Note which registers are
13705         written to.
13706         * config/mep/intrinsics.md: Regenerated.
13707         * config/mep/mep.c (mep_interrupt_saved_reg): Save IVC2 control
13708         registers when asm() or calls are detected.
13709
13710 2009-07-08  Manuel López-Ibáñez  <manu@gcc.gnu.org>
13711
13712         PR c++/31246
13713         * gimplify.c (gimplify_expr): Propagate no_warning flag when
13714         gimplifying.
13715         * gimple (gimple_build_call_from_tree): Likewise.
13716         * tree-cfg.c (remove_useless_stmts_warn_notreached): Check
13717         no_warning flag before warning.
13718
13719 2009-07-07  Manuel López-Ibáñez  <manu@gcc.gnu.org>
13720
13721         * tree.c (set_expr_locus): Remove.
13722         * tree.h (EXPR_LOCUS,SET_EXPR_LOCUS,set_expr_locus): Remove.
13723         * c-typeck.c (c_finish_stmt_expr):  Replace EXPR_LOCUS by
13724         EXPR_LOCATION.
13725         * gimplify.c (internal_get_tmp_var): Likewise.
13726         (gimplify_call_expr): Likewise.
13727         (gimplify_one_sizepos): Likewise.
13728
13729 2009-07-07  Eric Botcazou  <ebotcazou@adacore.com>
13730
13731         PR debug/40666
13732         * dbxout.c (dbxout_symbol) <PARM_DECL>: Deal with parameters pointing
13733         to variables for debugging purposes.
13734
13735 2009-06-23  Mark Loeser  <mark@halcy0n.com>
13736
13737         PR build/40010
13738         * Makefile.in (gcc.pod): Depend on gcc-vers.texi.
13739
13740 2009-07-07  Manuel López-Ibáñez  <manu@gcc.gnu.org>
13741
13742         * pretty-print.c (pp_base_format): Remove %J.
13743         * c-format.c (gcc_diag_char_table, gcc_tdiag_char_table,
13744         gcc_cxxdiag_char_table): Likewise.
13745         (init_dynamic_diag_info): Likewise.
13746
13747 2009-07-07  Manuel López-Ibáñez  <manu@gcc.gnu.org>
13748
13749         * pretty-print.c (pp_base_format): Remove %H.
13750         * c-format.c (gcc_diag_char_table, gcc_tdiag_char_table,
13751         gcc_cxxdiag_char_table): Likewise.
13752         (init_dynamic_diag_info): Likewise.
13753         * config/mep/mep.c (mep_select_section): Likewise.
13754
13755 2009-07-07  Duncan Sands  <baldrick@free.fr>
13756
13757         * final.c (pass_clean_state): Give the pass a name.
13758         * passes.c (pass_rest_of_compilation): Likewise.
13759         * tree-optimize.c (pass_all_optimizations): Likewise.
13760
13761 2009-07-07  H.J. Lu  <hongjiu.lu@intel.com>
13762
13763         * config/ia64/ia64.c (ia64_handle_model_attribute): Remove
13764         an extra 'decl' for error_at.
13765
13766 2009-07-07  Jakub Jelinek  <jakub@redhat.com>
13767
13768         PR middle-end/40669
13769         * tree-tailcall.c (adjust_return_value_with_ops,
13770         create_tailcall_accumulator): Set DECL_GIMPLE_REG_P on the temporary
13771         if it has complex or vector type.
13772
13773 2009-07-07  Olivier Hainque  <hainque@adacore.com>
13774
13775         * config/alpha/t-osf4 (SHLIB_LINK): Do not hide the dummy weak
13776         pthread symbols.
13777
13778 2009-07-07  Basile Starynkevitch  <basile@starynkevitch.net>
13779
13780         * Makefile.in: added more lists of includes to PLUGIN_HEADERS.
13781
13782 2009-07-07  Manuel López-Ibáñez  <manu@gcc.gnu.org>
13783
13784         * cgraphunit.c: Replace %J by an explicit location.  Update all calls.
13785         * c-decl.c: Likewise.
13786         * function.c: Likewise.
13787         * varasm.c: Likewise.
13788         * tree-ssa.c: Likewise.
13789         * c-common.c: Likewise.
13790         * tree-cfg.c: Likewise.
13791         * config/spu/spu.c: Likewise.
13792         * config/ia64/ia64.c: Likewise.
13793         * config/v850/v850.c: Likewise.
13794
13795 2009-07-06  DJ Delorie  <dj@redhat.com>
13796
13797         * config/mep/mep-core.cpu (fsft, ssarb): Mark as VOLATILE.
13798         * config/mep/mep-ivc2.cpu (many): Add VOLATILE to more insns that make
13799         unspecified accesses to control registers.
13800         * config/mep/intrinsics.md: Regenerate.
13801         * config/mep/intrinsics.h: Regenerate.
13802         * config/mep/mep-intrin.h: Regenerate.
13803
13804 2009-07-07  Manuel López-Ibáñez  <manu@gcc.gnu.org>
13805
13806         * c-lex.c: Replace %H by an explicit location. Update all calls.
13807         * c-common.c: Likewise.
13808         * c-decl.c: Likewise.
13809         * c-typeck.c: Likewise.
13810         * fold-const.c: Likewise.
13811         * gimplify.c: Likewise.
13812         * stmt.c: Likewise.
13813         * tree-cfg.c: Likewise.
13814         * tree-ssa-loop-niter.c: Likewise.
13815         * tree-vrp.c: Likewise.
13816         * value-prof.c: Likewise.
13817
13818 2009-07-06  Diego Novillo  <dnovillo@google.com>
13819
13820         * tree-dfa.c (dump_variable): Write DECL_INITIAL for VAR
13821         if it has one.  Handle cases where VAR does not have an
13822         annotation or cfun is NULL.
13823
13824 2009-07-06  Diego Novillo  <dnovillo@google.com>
13825
13826         * tree.c: Include debug.h.
13827         (initialize_tree_contains_struct): New.
13828         (init_ttree): Call it.
13829         (tree_node_structure_for_code): Factor out of ...
13830         (tree_node_structure): ... here.
13831         * treestruct.def (TS_PHI_NODE): Remove.
13832         (TS_GIMPLE_STATEMENT): Remove.
13833
13834 2009-07-06  Diego Novillo  <dnovillo@google.com>
13835
13836         * tree-pretty-print.c (dump_generic_node): Protect against NULL op0.
13837         (debug_tree_chain): Handle cycles.
13838
13839 2009-07-06  Nick Clifton  <nickc@redhat.com>
13840             DJ Delorie  <dj@redhat.com>
13841
13842         * config.sh/lib1funcs.h (FMOVD_WORKS): Only define if
13843         __FMOVD_ENABLED__ is defined.
13844         * config/sh/sh.h
13845         (TARGET_FMOVD): Provide a default definition.
13846         (MASK_FMOVD): Likewise.
13847         (TARGET_CPU_CPP_BUILTINS): Define
13848         __FMOVD_ENABLED__ if TARGET_FMOVD is true.
13849         * config/sh/sh.md (movdf_i4): For alternative 0 use either one or
13850         two fmov instructions depending upon whether TARGET_FMOVD is enabled.
13851         (split for DF load from memory into register): Also handle
13852         MEMs which consist of REG+DISP addressing.
13853         (split for DF store from register to memory): Likewise.
13854         (movsf_ie): Always use single fp_mode.
13855         * config/sh/sh.c (sh_override_options): Do not automatically
13856         enable TARGET_MOVD for the SH2A when supporting doubles - leave
13857         that to the -mfmovd command line switch.
13858         (broken_move): Do not restrict fldi test to only the SH4 and SH4A.
13859         (fldi_ok): Always allow.
13860         * config/sh/sh.opt (mfmovd): Remove this switch.
13861         * doc/invoke.texi (-mfmovd): Remove documentation of this switch.
13862
13863 2009-07-06  J"orn Rennecke  <joern.rennecke@arc.com>
13864             Kaz Kojima  <kkojima@gcc.gnu.org>
13865
13866         PR rtl-optimization/30807
13867         * postreload.c (reload_combine): For every new use of REG_SUM,
13868         record the use of BASE.
13869
13870 2009-07-06  Jan Hubicka  <jh@suse.cz>
13871
13872         * params.def: Revert my accidental commit at 2009-06-30.
13873
13874 2009-07-04  Ian Lance Taylor  <iant@google.com>
13875
13876         PR target/40636
13877         * config/i386/msformat-c.c (mingw_format_attributes): Declare as
13878         EXPORTED_CONST.
13879         (mingw_format_attribute_overrides): Likewise.
13880
13881 2009-07-04  Jakub Jelinek  <jakub@redhat.com>
13882
13883         PR debug/40596
13884         * dwarf2out.c (based_loc_descr): For crtl->stack_realign_tried
13885         don't check cfa.reg.  Instead of cfa.indirect use
13886         fde && fde->drap_reg != INVALID_REGNUM test.
13887
13888 2009-07-04  Eric Botcazou  <ebotcazou@adacore.com>
13889
13890         * postreload.c (reload_combine): Replace CONST_REG with INDEX_REG.
13891
13892 2009-07-03  Vladimir Makarov  <vmakarov@redhat.com>
13893
13894         PR target/40587
13895         * ira.c (build_insn_chain): Use DF_LR_OUT instead of df_get_live_out.
13896
13897 2009-07-03  Richard Guenther  <rguenther@suse.de>
13898
13899         PR tree-optimization/40640
13900         * tree-switch-conversion.c (build_arrays): Perform arithmetic
13901         in original type.
13902
13903 2009-07-03  Jan Hubicka  <jh@suse.cz>
13904
13905         * ipa-inline.c (cgraph_decide_inlining_incrementally): When optimizing
13906         for size, reduce amount of inlining.
13907
13908 2009-07-03  Richard Guenther  <rguenther@suse.de>
13909
13910         PR middle-end/34163
13911         * tree-chrec.c (chrec_convert_1): Fold (T2)(t +- x) to (T2)t +- (T2)x
13912         if t +- x is known to not overflow and the conversion widens the
13913         operation.
13914         * Makefile.in (tree-chrec.o): Add $(FLAGS_H) dependency.
13915
13916 2009-07-03  Jan Hubicka  <jh@suse.cz>
13917
13918         * ipa-pure-const.c (analyze): Update loop optimizer init.
13919         * tree-ssa-loop-iv-canon.c (empty_loop_p, remove_empty_loop,
13920         try_remove_empty_loop, remove_empty_loops): Remove.
13921         * tree-ssa-loop.c (tree_ssa_empty_loop, pass_empty_loop): Remove.
13922         * tree-ssa-dce.c (find_obviously_necessary_stmts): Use finiteness info
13923         to mark regular loops as neccesary.
13924         (degenerate_phi_p): New function.
13925         (propagate_necessity, remove_dead_phis): Use it.
13926         (forward_edge_to_pdom): Likewise.
13927         (eliminate_unnecessary_stmts): Take care to remove uses of results of
13928         virtual PHI nodes that became unreachable.
13929         (perform_tree_ssa_dce): Initialize/deinitialize loop optimizer.
13930         * tree-flow.h (remove_empty_loops): Remove.
13931         * passes.c (init_optimization_passes): Remove.
13932
13933 2009-07-03  Uros Bizjak  <ubizjak@gmail.com>
13934
13935         * config/i386/i386.md (fix_trunc<mode>_fisttp_i387_1): Use
13936         can_create_pseudo_p.
13937         (*fix_trunc<mode>_i387_1): Ditto.
13938         (*floathi<mode>2_1): Ditto.
13939         (*float<SSEMODEI24:mode><X87MODEF:mode>2_1): Ditto.
13940         (*fistdi2_1): Ditto.
13941         (*fist<mode>2_1): Ditto.
13942         (frndintxf2_floor): Ditto.
13943         (*fist<mode>2_floor_1): Ditto.
13944         (frndintxf2_ceil): Ditto.
13945         (*fist<mode>2_ceil_1): Ditto.
13946         (frndintxf2_trunc): Ditto.
13947         (frndintxf2_mask_pm): Ditto.
13948         (fxam<mode>2_i387_with_temp): Ditto.
13949         * config/i386/sse.md (mulv16qi3): Ditto.
13950         (*sse2_mulv4si3): Ditto.
13951         (mulv2di3): Ditto.
13952         (sse4_2_pcmpestr): Ditto.
13953         (sse4_2_pcmpistr): Ditto.
13954
13955 2009-07-03  Jan Hubicka  <jh@suse.cz>
13956
13957         * tree-ssa-dce.c (bb_contains_live_stmts): New bitmap.
13958         (mark_stmt_necessary): Set it.
13959         (mark_operand_necessary): Set it.
13960         (mark_control_dependent_edges_necessary): Set it.
13961         (mark_virtual_phi_result_for_renaming): New function.
13962         (get_live_post_dom): New function.
13963         (forward_edge_to_pdom): New function.
13964         (remove_dead_stmt): Fix handling of control dependences.
13965         (tree_dce_init): Init new bitmap.
13966         (tree_dce_done): Free it.
13967
13968 2009-07-02  Richard Guenther  <rguenther@suse.de>
13969
13970         PR bootstrap/40617
13971         * tree-ssa-structalias.c (new_var_info): Initialize
13972         is_restrict_var.
13973
13974 2009-07-02  Jan Hubicka  <jh@suse.cz>
13975
13976         * ipa-pure-const.c (check_op): Use PTA info to see if indirect_ref is
13977         local.
13978
13979 2009-07-02  Paolo Bonzini  <bonzini@gnu.org>
13980
13981         * expmed.c (emit_cstore, emit_store_flag_1): Accept target_mode
13982         instead of recomputing it.  Adjust calls.
13983         (emit_store_flag): Adjust recursive calls.
13984
13985 2009-07-02  Richard Guenther  <rguenther@suse.de>
13986
13987         * tree-ssa-live.c (remove_unused_locals): Do not remove
13988         heap variables.
13989         * tree-ssa-structalias.c (handle_lhs_call): Delay setting
13990         of DECL_EXTERNAL for HEAP variables.
13991         (compute_points_to_sets): Set DECL_EXTERNAL for escaped
13992         HEAP variables.  Do not adjust RESTRICT vars.
13993         (find_what_var_points_to): Nobody cares if something
13994         points to READONLY.
13995
13996 2009-07-02  Ben Elliston  <bje@au.ibm.com>
13997
13998         * unwind-dw2-fde-glibc.c (_Unwind_IteratePhdrCallback): Move
13999         pc_low and pc_high declarations to the top of the function.
14000
14001 2009-07-01  DJ Delorie  <dj@redhat.com>
14002
14003         * config/mep/mep.c (mep_handle_option): Leave IVC2 control
14004         registers as fixed.
14005         (mep_interrupt_saved_reg): Save appropriate IVC2 control registers.
14006         * config/mep/mep-ivc2.cpu: Add VOLATILE to insns that make
14007         unspecified accesses to control registers.
14008         * config/mep/intrinsics.md: Regenerate.
14009         * config/mep/intrinsics.h: Regenerate.
14010         * config/mep/mep-intrin.h: Regenerate.
14011
14012 2009-07-01  Anthony Green  <green@moxielogic.com>
14013
14014         * config/moxie/moxie.c (moxie_expand_prologue): Use dec
14015         instruction when possible.
14016         (moxie_expand_prologue): Ditto.  Also, save an instruction and
14017         some complexity by popping off of $r12 instead of $sp.
14018         * config/moxie/moxie.md (movsi_pop): Don't assume $sp.  Take two
14019         operands.
14020
14021 2009-07-01  Richard Henderson  <rth@redhat.com>
14022
14023         PR bootstrap/40347
14024         * function.c (reposition_prologue_and_epilogue_notes): If epilogue
14025         contained no insns, reposition note before last insn.
14026
14027 2009-07-01  Richard Henderson  <rth@redhat.com>
14028
14029         PR debug/40431
14030         * dwarf2out.c (def_cfa_1): Revert 2009-06-11 change for
14031         DW_CFA_def_cfa_offset and DW_CFA_def_cfa.
14032
14033 2009-07-01  Michael Meissner  <meissner@linux.vnet.ibm.com>
14034
14035         PR bootstrap/40558
14036         * config/rs6000/rs6000.c (print_operand): Undo change that breaks
14037         darwin9 for printing reg addresses with %y.
14038
14039 2009-07-01  Adam Nemet  <anemet@caviumnetworks.com>
14040
14041         * combine.c (force_to_mode): Handle TRUNCATE.  Factor out
14042         truncation from operands in binary operations.
14043
14044 2009-07-01  Adam Nemet  <anemet@caviumnetworks.com>
14045
14046         Revert:
14047         2009-01-11  Adam Nemet  <anemet@caviumnetworks.com>
14048         * expmed.c (store_bit_field_1): Properly truncate the paradoxical
14049         subreg of op0 to the original op0.
14050
14051         * expmed.c (store_bit_field_1): Use a temporary as the destination
14052         instead of a paradoxical subreg when we need to truncate the result.
14053
14054 2009-07-01  DJ Delorie  <dj@redhat.com>
14055
14056         * config/mep/mep-ivc2.cpu (cmov, cmovc, cmovh): Add intrinsic
14057         names to VLIW variants.
14058         (ivc2rm, ivc2crn): Make data type consistent with non-VLIW variants.
14059         * config/mep/intrinsics.md: Regenerate.
14060         * config/mep/intrinsics.h: Regenerate.
14061         * config/mep/mep-intrin.h: Regenerate.
14062
14063 2009-07-01  Jakub Jelinek  <jakub@redhat.com>
14064
14065         PR debug/40462
14066         * jump.c (returnjump_p): Revert last patch.
14067         * dwarf2out.c (dwarf2out_begin_epilogue): Handle SEQUENCEs.
14068
14069 2009-07-01  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
14070
14071         PR target/40575
14072         * pa.md (casesi32p): Use jump table label to determine the offset
14073         of the jump table.
14074         (casesi64p): Likewise.
14075
14076         * pa.c (forward_branch_p): Return bool type.  Use instruction
14077         addresses when available.  Assert that INSN has a jump label.
14078         (pa_adjust_insn_length): Don't call forward_branch_p if INSN doesn't
14079         have a jump label.
14080
14081 2009-07-01  Richard Guenther  <rguenther@suse.de>
14082
14083         PR tree-optimization/19831
14084         * tree-ssa-dce.c (propagate_necessity): Calls to functions
14085         that only act as barriers do not make any previous stores necessary.
14086         * tree-ssa-structalias.c (handle_lhs_call): Delay making
14087         HEAP variables global, do not add a constraint from nonlocal.
14088         (find_func_aliases): Handle escapes through return statements.
14089         (compute_points_to_sets): Make escaped HEAP variables global.
14090
14091 2009-07-01  Paolo Bonzini  <bonzini@gnu.org>
14092
14093         PR bootstrap/40597
14094         * expmed.c (emit_store_flag): Perform a conversion if necessary,
14095         after reducing a DImode cstore to SImode.
14096
14097 2009-07-01  Paolo Bonzini  <bonzini@gnu.org>
14098
14099         * expr.c (expand_expr_real_1): Reinstate fallthrough to
14100         TRUTH_ANDIF_EXPR if do_store_flag returns NULL.
14101
14102 2009-07-01  Maciej W. Rozycki  <macro@linux-mips.org>
14103
14104         * config/vax/vax.h (TARGET_BSD_DIVMOD): New macro.  Set to 1.
14105         * config/vax/linux.h (TARGET_BSD_DIVMOD): New macro.  Redefine the
14106         to 0.
14107         * config/vax/vax.c (vax_init_libfuncs): Only redefine udiv_optab
14108         and umod_optab if TARGET_BSD_DIVMOD.
14109         * config/vax/lib1funcs.asm: New file.
14110         * config/vax/t-linux: New file.
14111         * config.gcc (vax-*-linux*): Set tmake_file to vax/t-linux.
14112
14113 2009-06-30  Jakub Jelinek  <jakub@redhat.com>
14114
14115         PR c++/40566
14116         * convert.c (convert_to_integer) <case COND_EXPR>: Don't convert
14117         to type arguments that have void type.
14118
14119         PR debug/40573
14120         * dwarf2out.c (gen_formal_parameter_die): Call
14121         equate_decl_number_to_die if node is different from origin.
14122
14123 2009-06-30  Anthony Green  <green@moxielogic.com>
14124
14125         Clean up moxie port for --enable-build-with-cxx.
14126         * config/moxie/moxie.c (moxie_function_value): First two
14127         parameters are const_tree, not tree.
14128         * config/moxie/moxie.h (enum reg_class): Rename CC_REG to CC_REGS.
14129         (REG_CLASS_NAMES): Ditto.
14130         (REGNO_REG_CLASS): Ditto.
14131         * config/moxie/moxie-protos.h (moxie_override_options): Declare.
14132         (moxie_function_value): Fix constyness of arguments.
14133
14134 2009-06-30  Eric Botcazou  <ebotcazou@adacore.com>
14135
14136         * cgraphunit.c (cgraph_finalize_compilation_unit): Call
14137         finalize_size_functions before further processing.
14138         * stor-layout.c: Include cgraph.h, tree-inline.h and tree-dump.h.
14139         (variable_size): Call self_referential_size on size expressions
14140         that contain a PLACEHOLDER_EXPR.
14141         (size_functions): New static variable.
14142         (copy_self_referential_tree_r): New static function.
14143         (self_referential_size): Likewise.
14144         (finalize_size_functions): New global function.
14145         * tree.c: Include tree-inline.h.
14146         (push_without_duplicates): New static function.
14147         (find_placeholder_in_expr): New global function.
14148         (substitute_in_expr) <tcc_declaration>: Return the replacement object
14149         on equality.
14150         <tcc_expression>: Likewise.
14151         <tcc_vl_exp>: If the replacement object is a constant, try to inline
14152         the call in the expression.
14153         * tree.h (finalize_size_functions): Declare.
14154         (find_placeholder_in_expr): Likewise.
14155         (FIND_PLACEHOLDER_IN_EXPR): New macro.
14156         (substitute_placeholder_in_expr): Update comment.
14157         * tree-inline.c (remap_decl): Do not unshare trees if do_not_unshare
14158         is true.
14159         (copy_tree_body_r): Likewise.
14160         (copy_tree_body): New static function.
14161         (maybe_inline_call_in_expr): New global function.
14162         * tree-inline.h (struct copy_body_data): Add do_not_unshare field.
14163         (maybe_inline_call_in_expr): Declare.
14164         * Makefile.in (tree.o): Depend on TREE_INLINE_H.
14165         (stor-layout.o): Depend on CGRAPH_H, TREE_INLINE_H, TREE_DUMP_H and
14166         GIMPLE_H.
14167
14168 2009-06-30  Richard Guenther  <rguenther@suse.de>
14169
14170         * tree-ssa-dce.c (mark_all_reaching_defs_necessary_1): Always
14171         continue walking.
14172         (propagate_necessity): Do not mark reaching defs of stores
14173         as necessary.
14174
14175 2009-06-30  Jan Hubicka  <jh@suse.cz>
14176
14177         * cfgloopanal.c (check_irred): Move into ...
14178         (mark_irreducible_loops): ... here; return true if ireducible
14179         loops was found.
14180         * ipa-pure-const.c: Include cfgloop.h and tree-scalar-evolution.h
14181         (analyze_function): Try to prove loop finiteness.
14182         * cfgloop.h (mark_irreducible_loops): Update prototype.
14183         * Makefile.in (ipa-pure-const.o): Add dependency on SCEV and CFGLOOP.
14184
14185 2009-06-30  Basile Starynkevitch  <basile@starynkevitch.net>
14186
14187         * Makefile.in (PLUGIN_HEADERS): added ggc, tree-dump, pretty-print.
14188
14189 2009-06-30  Ira Rosen  <irar@il.ibm.com>
14190
14191         PR tree-optimization/40542
14192         * tree-vect-stmts.c (vect_analyze_stmt): Don't vectorize volatile
14193         types.
14194
14195 2009-06-30  Martin Jambor  <mjambor@suse.cz>
14196
14197         PR tree-optimization/40582
14198         * tree-sra.c (build_ref_for_offset_1): Use types_compatible_p rather
14199         than useless_type_conversion_p.
14200         (generate_subtree_copies): Increment sra_stats.subtree_copies at a
14201         proper place.
14202
14203 2009-06-30  Martin Jambor  <mjambor@suse.cz>
14204
14205         PR middle-end/40554
14206         * tree-sra.c (sra_modify_expr): Add access->offset to start_offset.
14207
14208 2009-06-30  Richard Guenther  <rguenther@suse.de>
14209
14210         * tree-ssa-alias.c (walk_aliased_vdefs_1): Change interface to
14211         use ao_ref references.
14212         (walk_aliased_vdefs): Likewise.
14213         * tree-ssa-alias.h (walk_aliased_vdefs): Adjust prototype.
14214         * tree-ssa-dce.c (struct ref_data): Remove.
14215         (mark_aliased_reaching_defs_necessary_1): Use the ao_ref argument.
14216         (mark_aliased_reaching_defs_necessary): Adjust.
14217         (mark_all_reaching_defs_necessary_1): Likewise.
14218
14219 2009-06-30  Paolo Bonzini  <bonzini@gnu.org>
14220
14221         PR boostrap/40597
14222         * expmed.c (emit_cstore): New name of emit_store_flag_1.
14223         (emit_store_flag_1): Extract from emit_store_flag, adjust
14224         calls to (what now is) emit_cstore.
14225         (emit_store_flag): Call emit_store_flag_1 and also use it
14226         for what used to be recursive calls.
14227
14228 2009-06-30  Wei Guozhi  <carrot@google.com>
14229
14230         PR/40416
14231         * tree-ssa-sink.c (statement_sink_location): Stop sinking expression
14232         if the target bb post dominates from bb.
14233         * config/i386/i386.c (memory_address_length): Check existence of base
14234         register before using it.
14235
14236 2009-06-30  Nick Clifton  <nickc@redhat.com>
14237             DJ Delorie  <dj@redhat.com>
14238
14239         * config.sh/lib1funcs.h (FMOVD_WORKS): Only define if
14240         __FMOVD_ENABLED__ is defined.
14241         * config/sh/sh.h
14242         (TARGET_FMOVD): Provide a default definition.
14243         (MASK_FMOVD): Likewise.
14244         (TARGET_CPU_CPP_BUILTINS): Define
14245         __FMOVD_ENABLED__ if TARGET_FMOVD is true.
14246         * config/sh/sh.md (movdf_i4): For alternative 0 use either one or
14247         two fmov instructions depending upon whether TARGET_FMOVD is
14248         enabled.
14249         (split for DF load from memory into register): Also handle
14250         MEMs which consist of REG+DISP addressing.
14251         (split for DF store from register to memory): Likewise.
14252         * config/sh/sh.opt (mfmovd): Remove this switch.
14253         * doc/invoke.texi (-mfmovd): Remove documentation of this switch.
14254         * config/sh/sh.c (sh_override_options): Do not automatically
14255         enable TARGET_MOVD for the SH2A when supporting doubles - leave
14256         that to the -mfmovd command line switch.
14257
14258         * config/sh/sh.c (broken_move): Do not restrict fldi test to only
14259         the SH4 and SH4A.
14260         (fldi_ok): Always allow.
14261         * config/sh/sh.md (movsf_ie): Always use single fp_mode.
14262
14263 2009-06-29  DJ Delorie  <dj@redhat.com>
14264
14265         * doc/install.texi (mep-x-elf): Correct chip's full name.
14266
14267 2009-06-29  H.J. Lu  <hongjiu.lu@intel.com>
14268
14269         * doc/extend.texi: Fix typo.
14270
14271 2009-06-29  Tom Tromey  <tromey@redhat.com>
14272
14273         * dwarf2.h: Remove.
14274         * Makefile.in (DWARF2_H): New variable.
14275         (except.o): Use it.
14276         (dwarf2out.o): Likewise.
14277         (dwarf2asm.o): Likewise.
14278         * config/i386/t-i386: Use DWARF2_H.
14279         * except.c: Include elf/dwarf2.h.
14280         * unwind-dw2.c: Include elf/dwarf2.h.
14281         * dwarf2out.c: Include elf/dwarf2.h.
14282         (dw_loc_descr_struct) <dw_loc_opc>: Now a bitfield.
14283         <dtprel>: New field.
14284         (dwarf_stack_op_name): Don't handle INTERNAL_DW_OP_tls_addr.
14285         (size_of_loc_descr): Likewise.
14286         (output_loc_operands_raw): Likewise.
14287         (output_loc_operands): Handle new dtprel field.
14288         (loc_checksum): Update.
14289         (loc_descriptor_from_tree_1) <VAR_DDECL>: Set dtprel field.
14290         * unwind-dw2-fde-glibc.c: Include elf/dwarf2.h.
14291         * unwind-dw2-fde.c: Include elf/dwarf2.h.
14292         * dwarf2asm.c: Include elf/dwarf2.h.
14293         * unwind-dw2-fde-darwin.c: Include elf/dwarf2.h.
14294         * config/mmix/mmix.c: Include elf/dwarf2.h.
14295         * config/rs6000/darwin-fallback.c: Include elf/dwarf2.h.
14296         * config/xtensa/unwind-dw2-xtensa.c: Include elf/dwarf2.h.
14297         * config/sh/sh.c: Include elf/dwarf2.h.
14298         * config/i386/i386.c: Include elf/dwarf2.h.
14299
14300 2009-06-29  DJ Delorie  <dj@redhat.com>
14301
14302         * config/mep/mep.h (CPP_SPEC): Remove __cop macro.
14303
14304         * doc/extend.texi: Add MeP attributes and pragmas.
14305         * doc/invoke.text: Add MeP Options.
14306         * doc/contrib.texi: Add MeP contribution.
14307         * doc/md.texi: Add MeP constraints.
14308         * doc/install.texi: Add MeP target.
14309
14310 2009-06-30  Anatoly Sokolov  <aesok@post.ru>
14311
14312         * target.h (struct gcc_target): Add frame_pointer_required field.
14313         * target-def.h (TARGET_FRAME_POINTER_REQUIRED): New.
14314         (TARGET_INITIALIZER): Use TARGET_FRAME_POINTER_REQUIRED.
14315         * ira.c (setup_eliminable_regset): Use frame_pointer_required target
14316         hook.
14317         * reload1.c (update_eliminables): (Ditto.).
14318         * gcc/system.h (FRAME_POINTER_REQUIRED): Poison.
14319         * doc/tm.texi (FRAME_POINTER_REQUIRED): Revise documentation.
14320         (INITIAL_FRAME_POINTER_OFFSET): (Ditto.).
14321
14322         * config/arc/arc.h (FRAME_POINTER_REQUIRED): Remove macro.
14323
14324         * config/arm/arm.h (FRAME_POINTER_REQUIRED): Remove macro.
14325         * config/arm/arm.c (TARGET_FRAME_POINTER_REQUIRED): Define.
14326         (arm_frame_pointer_required): New function.
14327
14328         * config/avr/avr.h (FRAME_POINTER_REQUIRED): Remove macro.
14329         * config/avr/avr.c (TARGET_FRAME_POINTER_REQUIRED): Define macro.
14330         (avr_frame_pointer_required_p): Declare as static.
14331         * config/avr/avr-protos.h (avr_frame_pointer_required_p): Remove.
14332
14333         * config/bfin/bfin.h (FRAME_POINTER_REQUIRED): Remove macro.
14334         * config/bfin/bfin.c (TARGET_FRAME_POINTER_REQUIRED): Define.
14335         (bfin_frame_pointer_required): Make as static, change return type
14336         to bool.
14337         * config/bfin/bfin-protos.h (bfin_frame_pointer_required): Remove.
14338
14339         * config/cris/cris.h (FRAME_POINTER_REQUIRED): Remove macro.
14340         * config/cris/cris.c (TARGET_FRAME_POINTER_REQUIRED): Define macro.
14341         (cris_frame_pointer_required): New function.
14342
14343         * config/crx/crx.h (FRAME_POINTER_REQUIRED): Remove macro.
14344
14345         * config/fr30/fr30.h (FRAME_POINTER_REQUIRED): Remove macro.
14346         * config/fr30/fr30.c (TARGET_FRAME_POINTER_REQUIRED): Define macro.
14347         (fr30_frame_pointer_required): New function.
14348
14349         * config/frv/frv.h (FRAME_POINTER_REQUIRED): Remove macro.
14350         * config/frv/frv.c (TARGET_FRAME_POINTER_REQUIRED): Define.
14351         (frv_frame_pointer_required): Make as static, change return type
14352         to bool.
14353         * config/bfin/bfin-protos.h (frv_frame_pointer_required): Remove.
14354
14355         * config/i386/i386.h (FRAME_POINTER_REQUIRED): Remove macro.
14356         * config/i386/i386.c (TARGET_FRAME_POINTER_REQUIRED): Define macro.
14357         (ix86_frame_pointer_required): Make as static, change return type to
14358         bool.
14359         * config/i386/i386-protos.h (ix86_frame_pointer_required): Remove.
14360
14361         * config/m32c/m32c.h (FRAME_POINTER_REQUIRED): Remove macro.
14362         * config/m32c/m32c.c (TARGET_FRAME_POINTER_REQUIRED): Define macro.
14363
14364         * config/m32r/m32r.h (FRAME_POINTER_REQUIRED): Remove macro.
14365
14366         * config/mcore/mcore.h (CAN_ELIMINATE): Remove macro.
14367
14368         * config/mep/mep.h (FRAME_POINTER_REQUIRED): Remove macro.
14369
14370         * config/mips/mips.h (FRAME_POINTER_REQUIRED): Remove macro.
14371         * config/mips/mips.c (TARGET_FRAME_POINTER_REQUIRED): Define macro.
14372         (mips_frame_pointer_required): Make as static.
14373         * config/mips/mips-protos.h (mips_frame_pointer_required): Remove.
14374
14375         * config/mmix/mmix.h (FRAME_POINTER_REQUIRED): Remove macro.
14376         * config/mmix/mmix.c (TARGET_FRAME_POINTER_REQUIRED): Define macro.
14377         (mmix_frame_pointer_required): Mew function.
14378
14379         * config/moxie/moxie.h (FRAME_POINTER_REQUIRED): Remove macro.
14380         * config/moxie/moxie.c (TARGET_FRAME_POINTER_REQUIRED): Define macro.
14381
14382         * config/pa/pa.h (FRAME_POINTER_REQUIRED): Remove macro.
14383
14384         * config/score/score.h (FRAME_POINTER_REQUIRED): Remove macro.
14385
14386         * config/sh/sh.h (CAN_ELIMINATE): Remove macro.
14387
14388         * config/sparc/sparc.h (FRAME_POINTER_REQUIRED): Remove macro.
14389         (CAN_ELIMINATE): Redefine.
14390         * config/sparc/sparc.c (TARGET_FRAME_POINTER_REQUIRED): Define macro.
14391         (sparc_frame_pointer_required): New function.
14392         (sparc_can_eliminate): New function.
14393         * config/sparc/sparc-protos.h (sparc_can_eliminate): Declare.
14394
14395         * config/vax/vax.h (FRAME_POINTER_REQUIRED): Remove macro.
14396         * config/vax/vax.c (TARGET_FRAME_POINTER_REQUIRED): Define.
14397
14398         * config/xtensa/xtensa.h (FRAME_POINTER_REQUIRED): Remove macro.
14399         * config/xtensa/xtensa.c (TARGET_FRAME_POINTER_REQUIRED): Define.
14400         (xtensa_frame_pointer_required): Make as static, change return type
14401         to bool.
14402         * config/xtensa/xtensa-protos.h (xtensa_frame_pointer_required):
14403         Remove.
14404
14405 2009-06-29  Olatunji Ruwase  <tjruwase@google.com>
14406
14407         * doc/plugins.texi: Document PLUGIN_START_UNIT.
14408         * toplev.c (compile_file): Call PLUGIN_START_UNIT.
14409         * gcc-plugin.h (PLUGIN_START_UNIT): Added new event.
14410         * plugin.c (plugin_event_name): Added PLUGIN_START_UNIT.
14411         (register_callback): Handle PLUGIN_START_UNIT.
14412         (invoke_plugin_callbacks): Handle PLUGIN_START_UNIT.
14413
14414 2009-06-29  Eric Botcazou  <ebotcazou@adacore.com>
14415
14416         * tree.c (process_call_operands): Propagate TREE_READONLY from the
14417         operands.
14418         (PROCESS_ARG): Do not clear TREE_READONLY if CONSTANT_CLASS_P.
14419         (build3_stat): Propagate TREE_READONLY for COND_EXPR.
14420
14421 2009-06-29  Daniel Jacobowitz  <dan@codesourcery.com>
14422
14423         * config/arm/arm.h (REGISTER_MOVE_COST): Increase VFP register
14424         move cost.
14425
14426 2009-06-29  Uros Bizjak  <ubizjak@gmail.com>
14427
14428         * doc/extend.texi (Additional Floating Types): __float128 is also
14429         supported on i386 targets.
14430
14431 2009-06-29  Richard Guenther  <rguenther@suse.de>
14432
14433         PR middle-end/14187
14434         * tree-ssa-alias.h (struct pt_solution): Add vars_contains_restrict
14435         flag.
14436         (pt_solutions_same_restrict_base): Declare.
14437         * tree-ssa-structalias.c (struct variable_info): Add is_restrict_var
14438         flag.
14439         (new_var_info): Initialize is_global_var properly for SSA_NAMEs.
14440         (make_constraint_from, make_copy_constraint): Move earlier.
14441         (make_constraint_from_heapvar): New function.
14442         (make_constraint_from_restrict): Likewise.
14443         (handle_lhs_call): Use it.
14444         (find_func_aliases): Use it to track conversions to restrict
14445         qualified pointers.
14446         (struct fieldoff): Add only_restrict_pointers flag.
14447         (push_fields_onto_fieldstack): Initialize it.
14448         (create_variable_info_for): Track global restrict qualified pointers.
14449         (intra_create_variable_infos): Use make_constraint_from_heapvar.
14450         Track restrict qualified pointer arguments.
14451         (set_uids_in_ptset): Use varinfo is_global_var flag.
14452         (find_what_var_points_to): Set the vars_contains_restrict flag.
14453         Always create the points-to solution for sets including restrict tags.
14454         (pt_solutions_same_restrict_base): New function.
14455         * tree-ssa-alias.c (ptr_derefs_may_alias_p): For two restrict
14456         qualified pointers use pt_solutions_same_restrict_base as
14457         additional source for disambiguation.
14458
14459 2009-06-29  Richard Guenther  <rguenther@suse.de>
14460
14461         PR middle-end/38212
14462         * alias.c (find_base_decl): Remove.
14463         (get_deref_alias_set_1): Remove restrict handling.
14464         * c-common.c (c_apply_type_quals_to_decl): Do not set
14465         DECL_POINTER_ALIAS_SET.
14466         * gimplify.c (find_single_pointer_decl_1): Remove.
14467         (find_single_pointer_decl): Likewise.
14468         (internal_get_tmp_var): Remove restrict handling.
14469         (gimple_regimplify_operands): Likewise.
14470         * omp-low.c (expand_omp_atomic_pipeline): Do not set
14471         DECL_POINTER_ALIAS_SET. Use ref-all pointers.
14472         * print-tree.c (print_node): Do not print DECL_POINTER_ALIAS_SET.
14473         * tree.c (restrict_base_for_decl): Remove.
14474         (init_ttree): Do not allocate it.
14475         (make_node_stat): Do not set DECL_POINTER_ALIAS_SET.  Set
14476         LABEL_DECL_UID for label decls.
14477         (copy_node_stat): Do not copy restrict information.
14478         (decl_restrict_base_lookup): Remove.
14479         (decl_restrict_base_insert): Likewise.
14480         (print_restrict_base_statistics): Likewise.
14481         (dump_tree_statistics): Do not call print_restrict_base_statistics.
14482         * tree.h (DECL_POINTER_ALIAS_SET): Remove.
14483         (DECL_POINTER_ALIAS_SET_KNOWN_P): Likewise.
14484         (struct tree_decl_common): Rename pointer_alias_set to label_decl_uid.
14485         (LABEL_DECL_UID): Adjust.
14486         (DECL_BASED_ON_RESTRICT_P): Remove.
14487         (DECL_GET_RESTRICT_BASE): Likewise.
14488         (SET_DECL_RESTRICT_BASE): Likewise.
14489         (struct tree_decl_with_vis): Remove based_on_restrict_p flag.
14490
14491         * config/i386/i386.c (ix86_gimplify_va_arg): Use ref-all pointers
14492         instead of DECL_POINTER_ALIAS_SET.
14493         * config/rs6000/rs6000.c (rs6000_gimplify_va_arg): Likewise.
14494         * config/s390/s390.c (s390_gimplify_va_arg): Likewise.
14495         * config/spu/spu.c (spu_gimplify_va_arg_expr): Likewise.
14496
14497 2009-06-29  Richard Guenther  <rguenther@suse.de>
14498
14499         PR tree-optimization/40579
14500         * tree-vrp.c (vrp_evaluate_conditional): Bail out early if
14501         the IL to simplify has constants that overflowed.
14502
14503 2009-06-28  Uros Bizjak  <ubizjak@gmail.com>
14504
14505         PR tree-optimization/40550
14506         * tree-vect-generic.c (expand_vector_operations_1): Compute in
14507         vector_compute_type only when the size of vector_compute_type is
14508         less than the size of type.
14509
14510 2009-06-28  Eric Botcazou  <ebotcazou@adacore.com>
14511
14512         * fold-const.c (contains_label_1): Fix comments.
14513         (contains_label_p): Do not walk trees multiple time.
14514
14515 2009-06-28  Paolo Bonzini  <bonzini@gnu.org>
14516
14517         * config/i386/i386.h (enum ix86_fpcmp_strategy): New.
14518         * config/i386/i386.md (cbranchxf4, cstorexf4, cbranch<MODEF>4,
14519         cstore<MODEF>4, mov<X87MODEF>cc): Change predicate to
14520         ix86_fp_comparison_operator.
14521         (*fp_jcc_1_mixed, *fp_jcc_1_sse, *fp_jcc_1_387, *fp_jcc_2_mixed,
14522         *fp_jcc_2_sse, *fp_jcc_2_387): Delete
14523         (*fp_jcc_3_387, *fp_jcc_4_387, *fp_jcc_5_387, *fp_jcc_6_387,
14524         *fp_jcc_7_387, *fp_jcc_8<MODEF>_387): Eliminate call to
14525         !ix86_use_fcomi_compare, change ix86_fp_jump_nontrivial_p call
14526         to !TARGET_CMOVE, change predicate to ix86_fp_comparison_operator.
14527         (related splits): Change predicate to ix86_fp_comparison_operator.
14528         * config/i386/predicates.md: Use ix86_trivial_fp_comparison_operator
14529         instead of ix86_fp_comparison_codes.
14530         (ix86_trivial_fp_comparison_operator,
14531         ix86_fp_comparison_operator): New.
14532         * config/i386/i386-protos.h (ix86_fp_comparison_strategy): New.
14533         (ix86_expand_compare): Eliminate last two parameters.
14534         (ix86_fp_jump_nontrivial_p): Kill.
14535         * config/i386/i386.c (put_condition_code): Eliminate call to
14536         ix86_fp_comparison_codes and subsequent assertion.
14537         (ix86_fp_comparison_codes): Eliminate.
14538         (ix86_fp_swap_condition): New.
14539         (ix86_fp_comparison_arithmetics_cost, ix86_fp_comparison_fcomi_cost,
14540         ix86_fp_comparison_sahf_cost, ix86_use_fcomi_compare): Consolidate
14541         into ix86_fp_comparison_cost and ix86_fp_comparison_strategy.
14542         (ix86_prepare_fp_compare_args): Use ix86_fp_comparison_strategy
14543         and ix86_fp_swap_condition.
14544         (ix86_expand_fp_compare): Eliminate code for second jump/bypass jump.
14545         Use ix86_fp_comparison_strategy.
14546         (ix86_expand_compare): Likewise.  Eliminate last two arguments.
14547         (ix86_fp_jump_nontrivial_p): Eliminate.
14548         (ix86_expand_branch): Treat SFmode/DFmode/XFmode as simple.  Adjust
14549         call to ix86_expand_compare.
14550         (ix86_split_fp_branch, ix86_expand_setcc,
14551         ix86_expand_carry_flag_compare, ix86_expand_int_movcc,
14552         ix86_expand_fp_movcc): Eliminate code for second jump/bypass jump.
14553
14554 2009-06-28  Paolo Bonzini  <bonzini@gnu.org>
14555
14556         * config/arm/arm.c (arm_final_prescan_ins): Eliminate code
14557         related to jump_clobbers.
14558         * config/arm/arm.md (conds): Remove jump_clob case.
14559         (addsi3_cbranch, addsi3_cbranch_scratch, subsi3_cbranch, two
14560         splits): Change comparison_operator to arm_comparison_operator.
14561         (*arm_buneq, *arm_bltgt, *arm_buneq_reversed, *arm_bltgt_reversed):
14562         Eliminate.
14563
14564 2009-06-28  Paolo Bonzini  <bonzini@gnu.org>
14565
14566         * dojump.c (do_compare_rtx_and_jump): Try swapping the
14567         condition for floating point modes.
14568         * expmed.c (emit_store_flag_1): Move here a bigger part
14569         of emit_store_flag.
14570         (emit_store_flag): Try swapping the condition for floating point
14571         modes.
14572         * optabs.c (emit_cmp_and_jump_insns): Cope with constant op0 better.
14573
14574 2009-06-28  Paolo Bonzini  <bonzini@gnu.org>
14575
14576         * expr.c (expand_expr_real_1): Just use do_store_flag.
14577         (do_store_flag): Drop support for TRUTH_NOT_EXPR.  Use
14578         emit_store_flag_force.
14579         * expmed.c (emit_store_flag_force): Copy here trick
14580         previously in expand_expr_real_1.  Try reversing the comparison.
14581         (emit_store_flag_1): Work if target is NULL.
14582         (emit_store_flag): Work if target is NULL, using the result mode
14583         from the comparison.  Use split_comparison, restructure final part
14584         to simplify conditionals.
14585
14586 2009-06-28  Paolo Bonzini  <bonzini@gnu.org>
14587
14588         * builtins.c (expand_errno_check): Use do_compare_rtx_and_jump.
14589         * dojump.c (do_jump): Change handling of floating-point
14590         ops to use just do_compare_and_jump.
14591         (split_comparison): New.
14592         (do_compare_rtx_and_jump): Add here logic coming previously
14593         in do_jump, using split_comparison.
14594
14595 2009-06-27  H.J. Lu  <hongjiu.lu@intel.com>
14596
14597         PR target/40489
14598         * config/ia64/ia64.c (ia64_reorg): Check NULL insn.
14599
14600 2009-06-27  Paolo Bonzini  <bonzini@gnu.org>
14601
14602         * tree-ssa-alias.c: Fix unintentional commit.
14603
14604 2009-06-27  Paolo Bonzini  <bonzini@gnu.org>
14605
14606         * passes.c (execute_one_pass): Fix unintentional commit.
14607
14608 2009-06-27  Paolo Bonzini  <bonzini@gnu.org>
14609
14610         * df-problems.c (df_set_seen, df_unset_seen): Delete.
14611         (df_rd_local_compute, df_md_local_compute): Inline them.
14612
14613         (df_md_scratch): New.
14614         (df_md_alloc, df_md_free): Allocate/free it.
14615         (df_md_local_compute): Only include live registers in init.
14616         (df_md_transfer_function): Prune the in-set computed by
14617         the confluence function, and the gen-set too.
14618
14619 2009-06-27  Paolo Bonzini  <bonzini@gnu.org>
14620
14621         PR rtl-optimization/26854
14622         * timevar.def: Remove TV_DF_RU, add TV_DF_MD.
14623         * df-problems.c (df_rd_add_problem): Fix comment.
14624         (df_md_set_bb_info, df_md_free_bb_info, df_md_alloc,
14625         df_md_simulate_artificial_defs_at_top,
14626         df_md_simulate_one_insn, df_md_bb_local_compute_process_def,
14627         df_md_bb_local_compute, df_md_local_compute, df_md_reset,
14628         df_md_transfer_function, df_md_init, df_md_confluence_0,
14629         df_md_confluence_n, df_md_free, df_md_top_dump, df_md_bottom_dump,
14630         problem_MD, df_md_add_problem): New.
14631         * df.h (DF_MD, DF_MD_BB_INFO, struct df_md_bb_info, df_md,
14632         df_md_get_bb_info): New.
14633         (DF_LAST_PROBLEM_PLUS1): Adjust.
14634
14635         * Makefile.in (fwprop.o): Include domwalk.h.
14636         * fwprop.c: Include domwalk.h.
14637         (reg_defs, reg_defs_stack): New.
14638         (bitmap_only_bit_between): Remove.
14639         (process_defs): New.
14640         (process_uses): Use reg_defs and local_md instead of
14641         bitmap_only_bit_between and local_rd.
14642         (single_def_use_enter_block): New, from build_single_def_use_links.
14643         (single_def_use_leave_block): New.
14644         (build_single_def_use_links): Remove code moved to
14645         single_def_use_enter_block, invoke domwalk.
14646         (use_killed_between): Adjust comment.
14647
14648 2009-06-27  Paolo Bonzini  <bonzini@gnu.org>
14649
14650         * bitmap.h (bitmap_ior_and_into): New.
14651         * bitmap.c (bitmap_ior_and_into): New.
14652
14653 2009-06-27  Paolo Bonzini  <bonzini@gnu.org>
14654
14655         * domwalk.h (struct dom_walk_data): Remove all callbacks except
14656         before_dom_children_before_stmts and after_dom_children_after_stmts.
14657         Rename the two remaining callbacks to just before_dom_children and
14658         after_dom_children. Remove other GIMPLE statement walking bits.
14659         * domwalk.c (walk_dominator_tree): Remove now unsupported features.
14660         * graphite.c: Do not include domwalk.h.
14661         * tree-into-ssa.c (interesting_blocks): New global.
14662         (struct mark_def_sites_global_data): Remove it and names_to_rename.
14663         (mark_def_sites, rewrite_stmt, rewrite_add_phi_arguments,
14664         rewrite_update_stmt, rewrite_update_phi_arguments): Simplify
14665         now that they're not domwalk callbacks.
14666         (rewrite_initialize_block): Rename to...
14667         (rewrite_enter_block): ... this, place after called functions.  Test
14668         interesting_blocks, call rewrite_stmt and rewrite_add_phi_arguments.
14669         (rewrite_finalize_block): Rename to...
14670         (rewrite_leave_block): ... this, place after called functions.
14671         (rewrite_update_init_block): Rename to...
14672         (rewrite_update_enter_block): ... this, place after called functions.
14673         Test interesting_blocks, call rewrite_update_stmt and
14674         rewrite_update_phi_arguments.
14675         (rewrite_update_fini_block): Rename to...
14676         (rewrite_leave_block): ... this, place after called functions.
14677         (rewrite_blocks): Remove last argument, simplify initialization of
14678         walk_data.
14679         (mark_def_sites_initialize_block): Rename to...
14680         (mark_def_sites_block): ... this, call mark_def_sites.
14681         (mark_def_sites_blocks): Remove argument, simplify initialization of
14682         walk_data.
14683         (rewrite_into_ssa): Adjust for interesting_blocks_being a global.
14684         (update_ssa): Likewise.
14685         * tree-ssa-dom.c (optimize_stmt): Simplify now that it's not a domwalk
14686         callback.
14687         (tree_ssa_dominator_optimize): Simplify initialization of walk_data.
14688         (dom_opt_initialize_block): Rename to...
14689         (dom_opt_enter_block): ... this, place after called functions.  Walk
14690         statements here, inline propagate_to_outgoing_edges.
14691         (dom_opt_finalize_block): Rename to...
14692         (dom_opt_leave_block): ... this, place after called functions.
14693         * tree-ssa-dse.c (dse_optimize_stmt): Simplify now that it's not a
14694         domwalk callback.
14695         (dse_enter_block, dse_record_phi): New.
14696         (dse_record_phis): Delete.
14697         (dse_finalize_block): Rename to...
14698         (dse_leave_block): ... this.
14699         (tree_ssa_dse): Simplify initialization of walk_data.
14700         * tree-ssa-loop-im.c (determine_invariantness, move_computations):
14701         Adjust initialization of walk_data.
14702         * tree-ssa-loop-unswitch.c: Do not include domwalk.h.
14703         * tree-ssa-loop-phiopt.c (get_non_trapping):
14704         Adjust initialization of walk_data.
14705         * tree-ssa-loop-threadedge.c: Do not include domwalk.h.
14706         * tree-ssa-uncprop.c (uncprop_into_successor_phis): Simplify now that
14707         it's not a domwalk callback.
14708         (uncprop_initialize_block): Rename to...
14709         (dse_enter_block): ... this, call uncprop_into_successor_phis.
14710         (dse_finalize_block): Rename to...
14711         (dse_leave_block): ... this.
14712         (tree_ssa_uncprop): Simplify initialization of walk_data.
14713         * Makefile.in: Adjust dependencies.
14714
14715 2009-06-27  Richard Earnshaw  <rearnsha@arm.com>
14716
14717         * arm.md (casesi): Fix test for Thumb1.
14718         (thumb1_casesi_internal_pic): Likewise.
14719         (thumb1_casesi_dispatch): Likewise.
14720
14721 2009-06-26  Daniel Gutson  <dgutson@codesourcery.com>
14722
14723         * config/arm/arm-cores.def: Added core cortex-m0.
14724         * config/arm/arm-tune.md: Regenerated.
14725         * doc/invoke.texi: Added entry for cpu ARM Cortex-M0.
14726
14727 2009-06-26  DJ Delorie  <dj@redhat.com>
14728
14729         * config/mep/mep.opt (mfar): Remove -mfar as it doesn't do anything.
14730
14731         * config/mep/mep.c (mep_bundle_insns): Account for the fact that
14732         the scheduler doesn't tag jump insns.
14733
14734 2009-06-26  H.J. Lu  <hongjiu.lu@intel.com>
14735
14736         * c-decl.c (merge_decls): Re-indent.
14737
14738 2009-06-26  Janis Johnson  <janis187@us.ibm.com>
14739
14740         PR c/39902
14741         * tree.c (real_zerop, real_onep, real_twop, real_minus_onep):
14742         Special-case decimal float constants.
14743
14744 2009-06-26  Richard Henderson  <rth@redhat.com>
14745
14746         * function.h (struct function): Add cannot_be_copied_reason,
14747         and cannot_be_copied_set.
14748         * tree-inline.c (has_label_address_in_static_1): Rename from
14749         inline_forbidden_p_2; don't set inline_forbidden_reason here.
14750         (cannot_copy_type_1): Rename from inline_forbidden_p_op; likewise
14751         don't set inline_forbidden_reason.
14752         (copy_forbidden): New function, split out of inline_forbidden_p.
14753         (inline_forbidden_p_stmt): Don't check for nonlocal labels here.
14754         (inline_forbidden_p): Use copy_forbidden.
14755         (tree_versionable_function_p): Likewise.
14756         (inlinable_function_p): Merge into tree_inlinable_function_p.
14757         (tree_function_versioning): Remap cfun->nonlocal_goto_save_area.
14758         * ipa-cp.c (ipcp_versionable_function_p): New function.
14759         (ipcp_cloning_candidate_p): Use it.
14760         (ipcp_node_modifiable_p): Likewise.
14761
14762 2009-06-26  Olatunji Ruwase  <tjruwase@google.com>
14763
14764         * builtins.c (expand_builtin_alloca): Handle builtin alloca
14765         that is marked not to be inlined. Remove flag_mudflap use.
14766         * tree-mudflap.c: Rename mf_xform_derefs to mf_xfrom_statements.
14767         (mf_xform_statements): Mark builtin alloca calls as un-inlineable.
14768
14769 2009-06-26  Steve Ellcey  <sje@cup.hp.com>
14770
14771         PR bootstrap/40338
14772         * config/pa/t-pa-hpux10 (TARGET_LIBGCC2_CFLAGS): Add -frandom-seed.
14773         * config/pa/t-pa-hpux11 (TARGET_LIBGCC2_CFLAGS): Ditto.
14774
14775 2009-06-26  Kai Tietz  <kai.tietz@onevision.com>
14776
14777         * config/i386/mingw-tls.c (__mingwthr_key_dtor): Remove for none
14778         shared libgcc.
14779         (__mingwthr_remove_key_dtor): Likewise.
14780
14781 2009-06-26  Richard Guenther  <rguenther@suse.de>
14782
14783         * tree-ssa-structalias.c (do_ds_constraint): Simplify escape handling.
14784
14785 2009-06-26  Steven Bosscher  <steven@gcc.gnu.org>
14786
14787         PR middle-end/40525
14788         * ifcvt.c (dead_or_predicable): If predicating MERGE_BB fails,
14789         try the non-cond_exec path also.
14790
14791 2009-06-25  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
14792
14793         PR target/40468
14794         * pa.c (branch_to_delay_slot_p, branch_needs_nop_p): New functions.
14795         (output_cbranch): Use new functions.
14796         (output_lbranch, output_bb, output_bvb, output_dbra, output_movb):
14797         Likewise.
14798
14799 2009-06-25  Michael Meissner  <meissner@linux.vnet.ibm.com>
14800             Pat Haugen  <pthaugen@us.ibm.com>
14801             Revital Eres <ERES@il.ibm.com>
14802
14803         * config/rs6000/rs6000.c (print_operand): Correct lossage message
14804         for %c error.  Add %x support to print VSX registers as a unified
14805         register set, instead of separate float and altivec registers.
14806         Switch to use VECTOR_MEM_ALTIVEC_P instead of TARGET_ALTIVEC for
14807         %y case, and add support for VSX pre-modify addresses.
14808         (output_toc): Add assert for CONST containing an integer constant
14809         in the PLUS case.
14810         (rs6000_adjust_cost): Add POWER7 support.
14811         (insn_must_be_first_in_group): Ditto.
14812         (insn_must_be_last_in_group): Ditto.
14813         (rs6000_emit_popcount): Ditto.
14814         (rs6000_vector_mode_supported_p): Ditto.
14815
14816         * config/rs6000/rs6000-protos.h (rs6000_secondary_reload_class):
14817         Change some of the functions called by macros to being called
14818         through a pointer, so debug functions can be inserted if
14819         -mdebug=addr or -mdebug=cost.
14820         (rs6000_preferred_reload_class_ptr): Ditto.
14821         (rs6000_secondary_reload_class_ptr): Ditto.
14822         (rs6000_secondary_memory_needed_ptr): Ditto.
14823         (rs6000_cannot_change_mode_class_ptr): Ditto.
14824         (rs6000_secondary_reload_inner): Ditto.
14825         (rs6000_legitimize_reload_address): Ditto.
14826         (rs6000_legitimize_reload_address_ptr): Ditto.
14827         (rs6000_mode_dependent_address): Ditto.
14828         (rs6000_mode_dependent_address_ptr): Ditto.
14829
14830         * config/rs6000/rs6000.c (reg_offset_addressing_ok_p): New
14831         function to return true if the mode allows reg + integer
14832         addresses.
14833         (virtual_stack_registers_memory_p): New function to return true if
14834         the address refers to a virtual stack register.
14835         (rs6000_legitimate_offset_address_p): Move code to say whether a
14836         mode supports reg+int addressing to reg_offset_addressing_ok_p and
14837         call it.
14838         (rs6000_legitimate_address_p): Add checks for modes that only can
14839         do reg+reg addressing.  Start adding VSX support.
14840         (rs6000_legitimize_reload_address): Ditto.
14841         (rs6000_legitimize_address): Ditto.
14842         (rs6000_debug_legitimate_address_p): New debug functions for
14843         -mdebug=addr and -mdebug=cost.
14844         (rs6000_debug_rtx_costs): Ditto.
14845         (rs6000_debug_address_costs): Ditto.
14846         (rs6000_debug_adjust_cost): Ditto.
14847         (rs6000_debug_legitimize_address): Ditto.
14848         (rs6000_legitimize_reload_address_ptr): Point to call normal
14849         function or debug function.  Make functions called via pointer
14850         static.
14851         (rs6000_mode_dependent_address_ptr): Ditto.
14852         (rs6000_secondary_reload_class_ptr): Ditto.
14853         (rs6000_hard_regno_mode_ok): Add preliminary VSX support.
14854         (rs6000_emit_move): Add -mdebug=addr support.  Change an abort
14855         into a friendlier error.
14856         (rs6000_init_builtins): Add initial VSX support.
14857         (rs6000_adjust_cost): Fix some spacing issues.
14858
14859         * config/rs6000/rs6000.h (enum reg_class): Add VSX_REGS.
14860         (REG_CLASS_NAMES): Ditto.
14861         (REG_CLASS_CONTENTS): Ditto.
14862         (PREFERRED_RELOAD_CLASS): Move from a macro to calling through a
14863         pointer, to add -mdebug=addr support.
14864         (CANNOT_CHANGE_MODE_CLASS): Ditto.
14865         (SECONDARY_RELOAD_CLASS): Call through a pointer to add
14866         -mdebug=addr support.
14867         (LEGITIMIZE_RELOAD_ADDRESS): Ditto.
14868         (GO_IF_MODE_DEPENDENT_ADDRESS): Ditto.
14869         (enum rs6000_builtins): Add RS6000_BUILTIN_BSWAP_HI.
14870
14871         * config/rs6000/rs6000.md (bswaphi*): Add support for swapping
14872         16-bit values.
14873         (bswapsi*): Set attribute types for load/store.  Add combiner
14874         patterns to eliminate zero extend on 64-bit.
14875         (bswapdi*): Add support for swapping 64-bit values.  Use ldbrx and
14876         stdbrx if the hardware supports those instructions.
14877
14878 2009-06-25  Ian Lance Taylor  <iant@google.com>
14879
14880         * doc/invoke.texi (Option Summary): Mention -static-libstdc++.
14881         (Link Options): Document -static-libstdc++.
14882
14883 2009-06-25  Andrew Pinski  <andrew_pinski@playstation.sony.com>
14884
14885         PR target/38731
14886         * config/rs6000/rs6000.c (LOCAL_ALIGNMENT): Redefine to just use
14887         DATA_ALIGNMENT instead.
14888
14889 2009-06-25  Richard Guenther  <rguenther@suse.de>
14890
14891         * tree-ssa-alias.c (ref_maybe_used_by_call_p_1): Disambiguate
14892         indirect references against the callused/escaped solutions.
14893         (call_may_clobber_ref_p_1): Likewise.
14894
14895 2009-06-25  Martin Jambor  <mjambor@suse.cz>
14896
14897         PR tree-optimization/40493
14898         * tree-sra.c (sra_modify_expr): Correct BIT_FIELD_REF argument numbers.
14899         (enum unscalarized_data_handling): New type.
14900         (handle_unscalarized_data_in_subtree): Return what has been done.
14901         (load_assign_lhs_subreplacements): Handle left flushes differently.
14902         (sra_modify_assign): Use unscalarized_data_handling, simplified
14903         condition determining whether to remove the statement.
14904
14905 2009-06-25  Basile Starynkevitch  <basile@starynkevitch.net>
14906
14907         * doc/plugins.texi (Building GCC plugins): Correct typo in Makefile
14908         excerpt - @ should be doubled for texinfo.
14909
14910 2009-06-24  Ian Lance Taylor  <iant@google.com>
14911
14912         * config/arc/arc.c: Include "df.h".
14913         (arc_attribute_table): Make static.  Move higher in file.
14914         (arc_address_cost): Call SMALL_INT on INTVAL, not rtx.
14915         (output_shift): Initialize n later to avoid warning.
14916         * config/arm/arm.c (arm_attribute_table): Make static.  Move
14917         higher in file.
14918         * config/avr/avr.c (avr_attribute_table): Make static.  Move
14919         higher in file.
14920         (reg_class_tab): Change array type from int to enum reg_class.
14921         (avr_jump_mode): Change GET_MODE to GET_CODE when checking for
14922         LABEL_REF.
14923         (out_tsthi, ashlhi3_out): Don't use AS2 with "or" or "and".
14924         (lshrhi3_out): Likewise.
14925         (class_likely_spilled_p): Change return type to bool.
14926         (avr_rtx_costs): Use local code variable with enum type.
14927         * config/avr/avr.md (movmemhi): Use add_reg_note.
14928         (andhi3, andsi3): Don't use AS2 with "and".
14929         (iorhi3, iorsi3): Don't use AS2 with "or".
14930         * config/avr/avr-protos.h (class_likely_spilled_p): Update declaration.
14931         * config/crx/crx.c: Include "df.h".
14932         (crx_attribute_table): Make static.
14933         * config/m32r/m32r.c: Include "df.h".
14934         (m32r_attribute_table): Make static.  Move higher in file.
14935         (pop): Use add_reg_note.
14936         (block_move_call): Change 0 to LCT_NORMAL in function call.
14937         * config/m32r/m32r.md (movsi_insn): Remove unused local value.
14938         * config/m32r/m32r.h (INITIALIZE_TRAMPOLINE): Likewise.
14939         * config/m32r/m32r-protos.h (m32r_compute_function_type): Always
14940         declare, not just when TREE_CODE is defined.
14941         * config/m68hc11/m68hc11.c: Include "expr.h".
14942         (m68hc11_attribute_table): Make static.  Move higher in file.
14943         (m68hc11_small_indexed_indirect_p): Change 0 to VOIDmode in
14944         function call.
14945         (m68hc11_register_indirect_p): Likewise.
14946         (m68hc11_function_arg_padding): Change return type to enum
14947         direction.
14948         (emit_move_after_reload): Use add_reg_note.
14949         (m68hc11_emit_logical): Change code parameter to enum rtx_code.
14950         (m68hc11_split_logical): Likewise.
14951         (m68hc11_rtx_costs): Add local code_and outer_code variables with
14952         enum type.
14953         * config/m68hc11/predicates.md (reg_or_some_mem_operand): Change 0
14954         to VOIDmode in function call.
14955         * config/m68hc11/m68hc11-protos.h: Don't check TREE_CODE to see if
14956         tree is defined.
14957         (m68hc11_split_logical): Update declaration.
14958         (m68hc11_function_arg_padding): Update declaration.
14959         * config/mcore/mcore.c (regno_reg_class): Change form array of int
14960         to array of enum reg_class.
14961         (mcore_attribute_table): Make static.  Move higher in file.
14962         (mcore_rtx_costs): Add cast to enum type.
14963         * config/mcore/mcore.h (regno_reg_class): Update declaration.
14964         (GO_IF_LEGITIMATE_INDEX): Add cast to avoid warning.
14965         * config/sh/sh.c (sh_attribute_table): Make static.  Move higher
14966         in file.
14967         * config/sh/predicates.md (trapping_target_operand): Rename and to
14968         and_expr.
14969         * config/sparc/sparc.c (sparc_attribute_table): Make static.  Move
14970         higher in file.
14971         * config/spu/spu.c (spu_attribute_table): Make static.  Move
14972         higher in file.
14973         * config/v850/v850.c (v850_attribute_table): Make static.  Move
14974         higher in file.
14975         (v850_rtx_costs): Use local code with enum type.
14976         (expand_epilogue): Add cast.
14977         * config/v850/v850-c.c (ghs_pragma_section): Initialize repeat.
14978
14979 2009-06-23  Takashi YOSHII  <yoshii.takashi@renesas.com>
14980
14981         PR target/40515
14982         * doc/invoke.texi (SH Options): Document -m2a, -m2a-single,
14983         -m2a-single-only and -m2a-nofpu.
14984         * config/sh/sh.opt: Document m2a generates FPU code.
14985
14986 2009-06-24  Anatoly Sokolov  <aesok@post.ru>
14987
14988         * defaults.h (CAN_ELIMINATE): Provide default.
14989         * doc/tm.texi (CAN_ELIMINATE): Revise documentation.
14990         * config/alpha/alpha.h (CAN_ELIMINATE): Delete.
14991         * config/m32c/m32c.h (CAN_ELIMINATE): Delete.
14992         * config/spu/spu.h (CAN_ELIMINATE): Delete.
14993         * config/xtensa/xtensa.h (CAN_ELIMINATE): Delete.
14994         * config/moxie/moxie.h (CAN_ELIMINATE): Delete.
14995         * config/cris/cris.h (CAN_ELIMINATE): Delete.
14996         * config/mn10300/mn10300.h (CAN_ELIMINATE): Delete.
14997         * config/pa/pa64-linux.h (CAN_ELIMINATE): Delete.
14998         * config/mmix/mmix.h (CAN_ELIMINATE): Delete.
14999
15000 2009-06-24  DJ Delorie  <dj@redhat.com>
15001
15002         * mep-ext-cop.cpu: Fix copyright notice.
15003         * mep-default: Fix copyright notice.
15004         * mep-core: Fix copyright notice.
15005         * mep: Fix copyright notice.
15006         * mep-ivc2: Fix copyright notice.
15007         * mep-c5: Fix copyright notice.
15008
15009 2009-06-24  Denis Chertykov  <chertykov@gmail.com>
15010
15011         * doc/contrib.texi (Contributors):
15012
15013 2009-06-24  Andreas Krebbel  <krebbel1@de.ibm.com>
15014
15015         PR middle-end/40501
15016         * tree-ssa-math-opts.c (execute_optimize_bswap): Convert the bswap
15017         src and dst operands if necessary.
15018
15019 2009-06-23  DJ Delorie  <dj@redhat.com>
15020
15021         Add MeP port.
15022         * config.gcc: Add mep support.
15023         * recog.c: Resurrect validate_replace_rtx_subexp().
15024         * recog.h: Likewise.
15025         * config/mep/: Add new port:
15026         * config/mep/constraints.md: New file.
15027         * config/mep/default.h: New file.
15028         * config/mep/intrinsics.h: New file.
15029         * config/mep/intrinsics.md: New file.
15030         * config/mep/ivc2-template.h: New file.
15031         * config/mep/mep-c5.cpu: New file.
15032         * config/mep/mep-core.cpu: New file.
15033         * config/mep/mep-default.cpu: New file.
15034         * config/mep/mep-ext-cop.cpu: New file.
15035         * config/mep/mep-intrin.h: New file.
15036         * config/mep/mep-ivc2.cpu: New file.
15037         * config/mep/mep-lib1.asm: New file.
15038         * config/mep/mep-lib2.c: New file.
15039         * config/mep/mep-pragma.c: New file.
15040         * config/mep/mep-protos.h: New file.
15041         * config/mep/mep-tramp.c: New file.
15042         * config/mep/mep.c: New file.
15043         * config/mep/mep.cpu: New file.
15044         * config/mep/mep.h: New file.
15045         * config/mep/mep.md: New file.
15046         * config/mep/mep.opt: New file.
15047         * config/mep/predicates.md: New file.
15048         * config/mep/t-mep: New file.
15049
15050 2009-06-23  Ian Lance Taylor  <iant@google.com>
15051
15052         * configure.ac: Invoke AC_PROG_CXX.  Separate C specific warnings
15053         from loose_warn into c_loose_warn and from strict_warn into
15054         c_strict_warn.  Set and substitute warn_cxxflags.  Check for
15055         --enable-build-with-cxx.  Set and substitute
15056         ENABLE_BUILD_WITH_CXX.  Set and substitute HOST_LIBS.
15057         * Makefile.in (CXXFLAGS): New variable.
15058         (C_LOOSE_WARN, C_STRICT_WARN): New variables.
15059         (GCC_WARN_CFLAGS): Add $(C_LOOSE_WARN).  Add $(C_STRICT_WARN) if
15060         the default is the same as $(STRICT_WARN).
15061         (GCC_WARN_CXXFLAGS, WARN_CXXFLAGS): New variables.
15062         (CXX): New variable.
15063         (COMPILER): New value if ENABLE_BUILD_WITH_CXX.
15064         (COMPILER_FLAGS, LINKER, LINKER_FLAGS): Likewise.
15065         (ALL_COMPILERFLAGS, ALL_LINKERFLAGS): Likewise.
15066         (HOST_LIBS): New variable.
15067         (GCC_CFLAGS): Add $(C_LOOSE_WARN).
15068         (ALL_CXXFLAGS): New variable.
15069         (LIBS, BACKENDLIBS): Add $(HOST_LIBS).
15070         * doc/install.texi (Configuration): Document
15071         --enable-build-with-cxx, --with-stage1-ldflags,
15072         --with-stage1-libs, --with-boot-ldflags, --with-boot-libs.
15073         * configure: Rebuild.
15074
15075 2009-06-24  Ramana Radhakrishnan  <ramana.radhakrishnan@arm.com>
15076
15077         * config/arm/arm.c (arm_override_options): Fix braces and formatting
15078         from previous commit.
15079
15080 2009-06-23  Ian Lance Taylor  <iant@google.com>
15081
15082         * Makefile.in ($(out_object_file)): Depend upon $(DF_H).
15083
15084 2009-06-23  Ian Lance Taylor  <iant@google.com>
15085
15086         * reload.c (alternative_allows_const_pool_ref): Mark mem parameter
15087         with ATTRIBUTE_UNUSED.
15088
15089 2009-06-23  Michael Meissner  <meissner@linux.vnet.ibm.com>
15090             Pat Haugen  <pthaugen@us.ibm.com>
15091             Revital Eres  <eres@il.ibm.com>
15092
15093         * config.in (HAVE_AS_POPCNTD): Add default definition.
15094         (HAVE_AS_LWSYNC): Ditto.
15095
15096         * configure.ac (gcc_cv_as_powerpc_mfpgpr): Provide real binutils
15097         release number.
15098         (gcc_cv_as_powerpc_cmpb): Ditto.
15099         (gcc_cv_as_powerpc_dfp): Ditto.
15100         (gcc_cv_as_powerpc_vsx): Ditto.
15101         (gcc_cv_as_powerpc_popcntd): Add feature test for assembler
15102         supporting the popcntd/lwsync instructions.
15103         (gcc_cv_as_powerpc_lwsync): Ditto.
15104         * configure: Regenerate.
15105
15106         * config/rs6000/aix53.h (ASM_CPU_SPEC): Add support for
15107         -mcpu=native and -mcpu=power7.
15108         * config/rs6000/aix61.h (ASM_CPU_SPEC): Ditto.
15109
15110         * config/rs6000/linux64.opt (-mprofile-kernel): Move switch to be
15111         a variable instead of a mask to reduce the number of mask bits.
15112         * config/rs6000/sysv4.opt (-mbit-align): Ditto.
15113         (-mbit-word): Ditto.
15114         (-mregnames): Ditto.
15115         * config/rs6000/rs6000.opt (-mupdate): Ditto.
15116         (-mfused-madd): Ditto.
15117
15118         * config/rs6000/rs6000.opt (-mpopcntd): New switch for non-VSX ISA
15119         2.06 instructions.
15120         (-mvsx): New switch for VSX instructions.
15121         (-misel): Move from a variable to a mask to allow it to be set by
15122         -mcpu=.
15123
15124         * config/rs6000/rs6000-protos.h (rs6000_hard_regno_nregs): Change
15125         function declaration to an array declaration.
15126         (rs6000_hard_regno_nregs): New external array declaration.
15127
15128         * config/rs6000/t-rs6000 (MD_INCLUDES): Define, add all of the .md
15129         files included by rs6000.md.
15130
15131         * config/rs6000/linux64.h (SUBSUBTARGET_OVERRIDE_OPTIONS): Use
15132         SET_PROFILE_KERNEL macro to reset the -mprofile-kernel switch.
15133
15134         * config/rs6000/rs6000.c (rs6000_isel): Delete, -misel moved to be
15135         a target mask.
15136         (rs6000_debug_reg): New -mdebug= variables.
15137         (rs6000_debug_addr): Ditto.
15138         (rs6000_debug_cost): Ditto.
15139         (rs6000_pmode): New variable to hold Pmode.
15140         (rs6000_pointer_size): New variable to hold POINTER_SIZE.
15141         (rs6000_class_max_nregs): New array to hold CLASS_MAX_NREGS
15142         calculated at compiler start.
15143         (rs6000_hard_regno_nregs): Change function to an array which holds
15144         HARD_REGNO_NREGS calculated at compiler start.
15145         (rs6000_explicit_options): Delete isel field.
15146         (rs6000_vector_unit): New array to hold which vector unit
15147         supports arithmetic options for a given type.
15148         (rs6000_vector_mem): New array to hold which vector unit supports
15149         memory reference operations for a given type.
15150         (rs6000_vector_align): New array to given the alignment of each
15151         vector type.
15152         (power7_cost): New basic costs for power7.
15153         (SET_PROFILE_KERNEL): New macro for resetting -mprofile-kernel.
15154         (rs6000_hard_regno_nregs_internal): New function, moved from
15155         HARD_REGNO_NREGS, to calculate the number of registers each hard
15156         register takes for each type.
15157         (rs6000_debug_reg_print): New function for -mdebug=reg support.
15158         (rs6000_debug_vector_unit): New array, map rs6000_vector to string.
15159         (+rs6000_init_hard_regno_mode_ok): New function, move calculation
15160         of HARD_REGNO_NREGS, CLASS_MAX_NREGS, REGNO_REG_CLASS, and vector
15161         unit information here so it is calculated once at compiler startup
15162         time.
15163         (rs6000_override_options): Make -misel a target mask.  Add more
15164         power7 target masks.  Setup Pmode and POINTER_SIZE.  Add initial
15165         VSX support.  Add support for -mdebug=reg, -mdebug=addr, and
15166         -mdebug=cost.
15167         (POWERPC_MASKS): Add MASK_POPCNTD, MASK_VSX, and MASK_ISEL.
15168         (rs6000_handle_option): Move -misel from variable to target mask.
15169         (rs6000_builtin_mask_for_load): Add VSX support.
15170         (rs6000_conditional_register_usage): Ditto.
15171         (USE_ALTIVEC_FOR_ARG_P): Ditto.
15172         (function_arg_boundary): Ditto.
15173         (rs6000_expand_builtin): Ditto.
15174         (def_builtin): Make abort message a little friendlier.
15175         (rs6000_emit_int_cmove): Add support for 64-bit isel.
15176
15177         * config/rs6000/rs6000.h (ASM_CPU_POWER7_SPEC): Depend on the
15178         assembler support the popcntd instruction instead of a vsx
15179         instruction to enable power7 support.
15180         (ASM_CPU_SPEC): Add support for -mcpu=native and -mcpu=power7.
15181         (EXTRA_SPECS): Add ASM_CPU_NATIVE_SPEC to allow passing the right
15182         option to the assembler if -mcpu=native.
15183         (ASM_CPU_NATIVE_SPEC): Ditto.
15184         (TARGET_POPCNTD): If assembler doesn't support popcntd, turn off
15185         ISA 2.06 features.
15186         (TARGET_LWSYNC_INSTRUCTION): Define whether it is safe to issue
15187         the lwsync instruction.
15188         (enum processor_type): Add PROCESSOR_POWER7.
15189         (rs6000_debug_reg): New -mdebug= options.
15190         (rs6000_debug_addr): Ditto.
15191         (rs6000_debug_cost): Ditto.
15192         (rs6000_isel): Delete.
15193         (enum rs6000_vector): New enum to say what vector unit we have.
15194         (VECTOR_UNIT_*): New macros to say which vector unit has
15195         arithmetic operations for a given type.
15196         (VECTOR_MEM_*): New macros to say which vector unit has memory
15197         operations for a given type.
15198         (TARGET_LDBRX): Whether the machine supports the ldbrx
15199         instruction.
15200         (TARGET_ISEL): Delete, -misel moved to be a mask.
15201         (TARGET_ISEL64): New macro for 64-bit isel support.
15202         (UNITS_PER_VSX_WORD): New macro.
15203         (POINTER_SIZE): Move to be an external variable, rather than
15204         calculating whether we are generating 32 ot 64-bit code.
15205         (Pmode): Ditto.
15206         (STACK_BOUNDARY): Add VSX support.
15207         (LOCAL_ALIGNMENT): Ditto.
15208         (SLOW_UNALIGNED_ACCESS): Ditto.
15209         (VSX_REGNO_P): New macro for VSX support.
15210         (VFLOAT_REGNO_P): Ditto.
15211         (VINT_REGNO_P): Ditto.
15212         (VLOGICAL_REGNO_P): Ditto.
15213         (VSX_VECTOR_MODE): Ditto.
15214         (VSX_SCALAR_MODE): Ditto.
15215         (VSX_MODE): Ditto.
15216         (VSX_MOVE_MODE): Ditto.
15217         (VSX_REG_CLASS_P): Ditto.
15218         (HARD_REGNO_NREGS): Instead of calling a function, use an array
15219         lookup.
15220         (UNITS_PER_SIMD_WORD): Add VSX support.
15221         (MODES_TIEABLE_P): Ditto.
15222         (STARTING_FRAME_OFFSET): Ditto.
15223         (STACK_DYNAMIC_OFFSET): Ditto.
15224         (EPILOGUE_USES): Ditto.
15225         (REGNO_REG_CLASS): Move to array lookup.
15226         (CLASS_MAX_NREGS): Ditto.
15227         (rs6000_vector_reg_class): Add declaration.
15228         (ADDITIONAL_REGISTER_NAMES): Add VSX names for the registers that
15229         overlap with the floating point and Altivec registers.
15230
15231         * config/rs6000/e500.h (CHECK_E500_OPTIONS): Disallow -mvsx.
15232
15233         * config/rs6000/driver-rs6000.c (asm_names): New static array to
15234         give the appropriate asm switches if -mcpu=native.
15235         (host_detect_local_cpu): Add support for "asm".
15236         (host_detect_local_cpu): Follow GNU code guidelines for name.
15237
15238         * config/rs6000/sysv4.h (SUBTARGET_OVERRIDE_OPTIONS): Move
15239         -mbit-word to a variable instead of being a target mask.
15240
15241         * config/rs6000/sync.md (lwsync): If the assembler supports it,
15242         emit the lwsync instruction instead of emitting the instruction as
15243         an integer constant.
15244
15245         * config/rs6000/spe.md (spe_fixuns_truncdfsi2): Rename from
15246         fixuns_trundfsi2, move expander into rs6000.md.
15247
15248         * config/rs6000/rs6000.md (cpu): Add power7.
15249         (sel, *ptrsize): New mode attributes for 32/64-bit isel.
15250         (logical predicate patterns): Change the single instruction
15251         primitives that set CR0 to be fast_compare instead of compare.
15252         (norsi*): Ditto.
15253         (popcntwsi2): Add support for ISA 2.06 popcount instructions.
15254         (popcntddi2): Ditto.
15255         (popcount<mode>): Ditto.
15256         (floating multiply/add insns): Name the floating point
15257         multiply/add insns.
15258         (isel_signed_<mode>): Add support for -misel on 64-bit systems.
15259         (isel_unsigned_<mode>): Ditto.
15260         (fixuns_trundfsi2): Move expander here from spe.md.
15261         (smindi3): Define if we have -misel on 64-bit systems.
15262         (smaxdi3): Ditto.
15263         (umindi3): Ditto.
15264         (umaxdi3): Ditto.
15265
15266 2009-06-23  Anatoly Sokolov  <aesok@post.ru>
15267
15268         * config.gcc (avr-*-rtems*, avr-*-*): Set extra_gcc_objs and
15269         extra_objs.
15270         * config/avr/avr.c (avr_current_device): New variable.
15271         (avr_arch_types, avr_mcu_types): Move to avr-deveces.c.
15272         (avr_arch, mcu_type_s): Move to avr.h.
15273         * config/avr/avr.h (base_arch_s). Add reserved2, arch_name and
15274         default_data_section_start fields.
15275         (avr_arch): Moved from avr.c.
15276         (mcu_type_s): Moved from avr.c. Add short_sp, data_section_start and
15277         library_name fields.
15278         (avr_current_device, avr_mcu_types, avr_arch_types,
15279         avr_device_to_arch, avr_device_to_data_start,
15280         avr_device_to_startfiles, avr_device_to_devicelib): Declare.
15281         (EXTRA_SPEC_FUNCTIONS): Define.
15282         (LINK_SPEC): Remove device name to '-m ...' and '-Tdata ...' linker
15283         options mapping. Use device_to_arch and device_to_data_start insted.
15284         (STARTFILE_SPEC): Use device_to_startfile instead of crt_binutils.
15285         (CRT_BINUTILS_SPECS, EXTRA_SPECS): Remove.
15286         * config/avr/t-avr (driver-avr.o, avr-devices.o): New rules.
15287         * config/avr/driver-avr.c: New file.
15288         * config/avr/avr-devices.c: New file.
15289
15290 2009-06-23  Jakub Jelinek  <jakub@redhat.com>
15291
15292         * var-tracking.c (unshare_variable): Force initialized to
15293         be VAR_INIT_STATUS_INITIALIZED unless flag_var_tracking_uninit.
15294         (set_variable_part): Likewise.
15295         (struct variable_union_info): Remove pos_src field.
15296         (vui_vec, vui_allocated): New variables.
15297         (variable_union): Pass VAR_INIT_STATUS_UNKNOWN to unshare_variable
15298         unconditionally.  Avoid XCVECNEW/free for every sorting, for dst_l
15299         == 1 use a simpler sorting algorithm.  Compute pos field right
15300         away, don't fill in pos_src.  For dst_l == 2 avoid qsort.
15301         Avoid quadratic comparison if !flag_var_tracking_uninit.
15302         (variable_canonicalize): Pass VAR_INIT_STATUS_UNKNOWN to
15303         unshare_variable unconditionally.
15304         (dataflow_set_different_2): Removed.
15305         (dataflow_set_different): Don't traverse second hash table.
15306         (compute_bb_dataflow): Pass VAR_INIT_STATUS_UNINITIALIZED
15307         unconditionally to var_reg_set or var_mem_set.
15308         (emit_notes_in_bb): Likewise.
15309         (delete_variable_part): Pass VAR_INIT_STATUS_UNKNOWN to
15310         unshare_variable.
15311         (emit_note_insn_var_location): Don't set initialized to
15312         VAR_INIT_STATUS_INITIALIZED early.
15313         (vt_finalize): Free vui_vec if needed, clear vui_vec and
15314         vui_allocated.
15315         * rtl.c (rtx_equal_p): Don't implement on top of rtx_equal_p_cb.
15316
15317         * tree-object-size.c (addr_object_size): Instead of checking
15318         for non-NULL TREE_CHAIN of the FIELD_DECL check that there
15319         are no FIELD_DECLs following it.
15320
15321 2009-06-23  Andreas Krebbel  <krebbel1@de.ibm.com>
15322
15323         * tree-ssa-math-opts.c (find_bswap): Increase the search depth in
15324         order to match bswaps with signed source operands.
15325
15326 2009-06-23  Rainer Orth  <ro@TechFak.Uni-Bielefeld.DE>
15327
15328         * sdbout.c (sdbout_one_type): Fix braces in switch.
15329
15330 2009-06-23  Richard Guenther  <rguenther@suse.de>
15331
15332         * tree-ssa-structalias.c (struct variable_info): Add is_global_var
15333         member.
15334         (var_anything, anything_tree, var_nothing, nothing_tree, var_readonly,
15335         readonly_tree, var_escaped, escaped_tree, var_nonlocal, nonlocal_tree,
15336         var_callused, callused_tree, var_storedanything, storedanything_tree,
15337         var_integer, integer_tree): Remove global variables.
15338         (new_var_info): Do not pass new id, append the new var to the
15339         global variable vector.
15340         (do_ds_constraint): Use is_global_var member of the variable-info.
15341         (new_scalar_tmp_constraint_exp): Adjust.
15342         (create_function_info_for): Likewise.
15343         (create_variable_info_for): Likewise.
15344         (find_what_var_points_to): Remove dead code.
15345         (init_base_vars): Simplify.
15346         (compute_points_to_sets): Adjust.
15347
15348 2009-06-22  Adam Nemet  <anemet@caviumnetworks.com>
15349
15350         * combine.c (try_combine): Dump information about the insns we're
15351         combining.
15352
15353 2009-06-22  Adam Nemet  <anemet@caviumnetworks.com>
15354
15355         * combine.c (combine_simplify_rtx): Remove TRULY_NOOP_TRUNCATION
15356         check when calling force_to_mode on TRUNCATE's operand.
15357
15358 2009-06-22  Ian Lance Taylor  <iant@google.com>
15359
15360         * config/rs6000/rs6000.opt: Move msched-epilog before msched-prolog.
15361
15362 2009-06-22  Steven Bosscher  <steven@gcc.gnu.org>
15363
15364         * config/arm/arm.md (prologue_use): Set length of fake insn to 0.
15365
15366 2009-06-22  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
15367
15368         * doc/invoke.texi (Link Options): -nodefaultlibs and -nostdlib
15369         override library linkage flags such as -static-libgcc or
15370         -shared-libgcc.
15371
15372 2009-06-22  Maxim Kuvyrkov  <maxim@codesourcery.com>
15373
15374         * config/m68k/m68k-devices.def: Add line for MCF5221x.
15375
15376 2009-06-22  Ian Lance Taylor  <iant@google.com>
15377
15378         * config/linux.opt: Put mglibc ahead of muclibc.
15379
15380         * c-decl.c (diagnose_mismatched_decls): Add -Wc++-compat warning
15381         for duplicate decls.
15382
15383 2009-06-22  Matthias Klose  <doko@ubuntu.com>
15384
15385         * Makefile.in (install-plugin): Remove extra `/' after $(DESTDIR).
15386
15387 2009-06-22  Steven Bosscher  <steven@gcc.gnu.org>
15388
15389         PR objc/28050
15390         * c-parser.c (c_parser_objc_message_args): Return error_mark_node
15391         instead of NULL if a parser error occurs.
15392
15393 2009-06-22  Rainer Orth  <ro@TechFak.Uni-Bielefeld.DE>
15394
15395         * dwarf2out.c (dwarf2_debug_hooks): Initialize
15396         non-DWARF2_DEBUGGING_INFO version.
15397
15398 2009-06-22  Kai Tietz  <kai.tietz@onevision.com>
15399
15400         * config.gcc (i[34567]86-*-mingw*, x86_64-*-mingw*): Add
15401         i386/t-fprules-softfp and soft-fp/t-softfp to tmake_file.
15402
15403         * config/i386/mingw32.h (LIBGCC2_HAS_TF_MODE): Define.
15404         (LIBGCC2_TF_CEXT): Define.
15405         (TF_SIZE): Define.
15406
15407 2009-06-22  Ramana Radhakrishnan  <ramana.radhakrishnan@arm.com>
15408
15409         PR target/40463
15410         * config/arm/linux-eabi.h (CLEAR_INSN_CACHE): Fix definition.
15411
15412 2009-06-22  Ramana Radhakrishnan  <ramana.radhakrishnan@arm.com>
15413
15414         * config/arm/arm.c (arm_override_options): Disable
15415         -mcaller-super-interworking and -mcallee-super-interworking.
15416         * doc/invoke.texi (ARM Options): Document this.
15417
15418 2009-06-22  Nathan Sidwell  <nathan@codesourcery.com>
15419
15420         * config/arm/arm.c (arm_print_operand): Deal with HIGH.
15421         * config/arm/constraints.md (j): New constraint for movw operands.
15422         (N): Remove thumb2 meaning.
15423         * config/arm/arm.md (*arm_movw): Delete.
15424         (*arm_movsi_insn): Use j constraint for movw instead of N constraint.
15425         * config/arm/vfp.md (*arm_movsi_vfp, *thumb2_movsi_vfp): Likewise.
15426         * config/arm/thumb2.md (*thumb2_movsi_insn): Likewise.
15427
15428 2009-06-22  Martin Jambor  <mjambor@suse.cz>
15429
15430         PR tree-optimization/40492
15431         * tree-sra.c (sra_modify_assign): Pass zero offsets to
15432         build_ref_for_offset.
15433
15434 2009-06-22  Shujing Zhao  <pearly.zhao@oracle.com>
15435
15436         * alias.c: Use REG_P, MEM_P, CONST_INT_P, LABEL_P, CALL_P, NOTE_P and
15437         JUMP_TABLE_DATA_P predicates where applicable.
15438         * auto-inc-dec.c: Ditto.
15439         * builtins.c: Ditto.
15440         * caller-save.c: Ditto.
15441         * calls.c: Ditto.
15442         * cfgcleanup.c: Ditto.
15443         * cfglayout.c: Ditto.
15444         * cfgrtl.c: Ditto.
15445         * combine.c: Ditto.
15446         * combine-stack-adj.c: Ditto.
15447         * cse.c: Ditto.
15448         * cselib.c: Ditto.
15449         * dbxout.c: Ditto.
15450         * df-scan.c: Ditto.
15451         * dse.c: Ditto.
15452         * dwarf2asm.c: Ditto.
15453         * dwarf2out.c: Ditto.
15454         * emit-rtl.c: Ditto.
15455         * except.c: Ditto.
15456         * explow.c: Ditto.
15457         * expmed.c: Ditto.
15458         * expr.c: Ditto.
15459         * final.c: Ditto.
15460         * function.c: Ditto.
15461         * fwprop.c: Ditto.
15462         * gcse.c: Ditto.
15463         * genpreds.c: Ditto.
15464         * genrecog.c: Ditto.
15465         * ifcvt.c: Ditto.
15466         * ira-costs.c: Ditto.
15467         * ira-lives.c: Ditto.
15468         * jump.c: Ditto.
15469         * loop-iv.c: Ditto.
15470         * lower-subreg.c: Ditto.
15471         * modulo-sched.c: Ditto.
15472         * optabs.c: Ditto.
15473         * postreload.c: Ditto.
15474         * print-rtl.c: Ditto.
15475         * recog.c: Ditto.
15476         * reginfo.c: Ditto.
15477         * regmove.c: Ditto.
15478         * reload1.c: Ditto.
15479         * reload.c: Ditto.
15480         * reorg.c: Ditto.
15481         * rtlanal.c: Ditto.
15482         * rtl.c: Ditto.
15483         * sched-vis.c: Ditto.
15484         * sdbout.c: Ditto.
15485         * sel-sched-ir.c: Ditto.
15486         * simplify-rtx.c: Ditto.
15487         * targhooks.c: Ditto.
15488         * var-tracking.c: Ditto.
15489         * vmsdbgout.c: Ditto.
15490
15491 2009-06-22  Matthias Klose  <doko@ubuntu.com>
15492
15493         * Makefile.in (install-plugin): Always use DESTDIR.
15494
15495 2009-06-22  Olivier Hainque  <hainque@adacore.com>
15496
15497         * config/pa/pa.c (output_call): Don't optimize post call jumps
15498         into return address adjustments if the call may throw.
15499
15500 2009-06-21  Richard Earnshaw  <rearnsha@arm.com>
15501
15502         * arm.c (thumb1_output_casesi): New function.
15503         * arm.h (CASE_VECTOR_PC_RELATIVE): Thumb-1 code is also relative if
15504         optimizing for size or PIC.
15505         (CASE_VECTOR_SHORTEN_MODE): Handle thumb-1.
15506         * arm.md (UNSPEC_THUMB1_CASESI): New constant.
15507         (casesi): Handle Thumb-1 when optimizing for size or PIC.
15508         (thumb1_casesi_internal_pic): New expand rule.
15509         (thumb1_casesi_dispatch): New pattern.
15510         * aout.h (ASM_OUTPUT_ADDR_DIFF_ELT): Use shortened vectors for
15511         thumb-1 mode.
15512         * coff.h (JUMP_TABLES_IN_TEXT_SECTION): Thumb-1 jump tables are now
15513         in the text seciton when PIC or optimizing for size.
15514         * elf.h (JUMP_TABLES_IN_TEXT_SECTION): Likewise.
15515         * lib1funcs.asm ([__ARM_EABI__]): Add an attribute describing stack
15516         preservation properties of code.
15517         (__gnu_thumb1_case_sqi, __gnu_thumb1_case_uqi): New functions.
15518         (__gnu_thumb1_case_shi, __gnu_thumb1_case_uhi): New functions.
15519         (__gnu_thumb1_case_si): New function.
15520         * t-arm (LIB1ASMSRC): Define here.
15521         (LIB1ASMFUNCS): Add some common functions.
15522         * t-arm-elf (LIB1ASMSRC): Delete.
15523         (LIB1ASMFUNCS): Append to existing set.
15524         * t-pe (LIB1ASMSRC, LIB1ASMFUNCS): Likewise.
15525         * t-strongarm-elf (LIB1ASMSRC, LIB1ASMFUNCS): Likewise.
15526         * t-symbian (LIB1ASMFUNCS): Likewise.
15527         * t-vxworks (LIB1ASMSRC, LIB1ASMFUNCS): Likewise.
15528         * t-wince-pe (LIB1ASMSRC, LIB1ASMFUNCS): Likewise.
15529
15530 2009-06-21  Richard Guenther  <rguenther@suse.de>
15531
15532         PR tree-optimization/38729
15533         * tree-ssa-loop-niter.c (find_loop_niter_by_eval): Restrict
15534         to loops with a single exit if -fno-expensive-optimizations.
15535
15536 2009-06-21  Jakub Jelinek  <jakub@redhat.com>
15537
15538         * var-tracking.c (struct shared_hash_def, shared_hash): New types.
15539         (dataflow_set): Change vars type from htab_t to shared_hash.
15540         (shared_hash_pool, empty_shared_hash): New variables.
15541         (vars_clear): Removed.
15542         (shared_hash_shared, shared_hash_htab, shared_hash_copy,
15543         shared_hash_find_slot_unshare, shared_hash_find_slot,
15544         shared_hash_find_slot_noinsert, shared_hash_find): New
15545         static inlines.
15546         (shared_hash_unshare, shared_hash_destroy): New functions.
15547         (unshare_variable): Unshare set->vars if shared, use
15548         shared_hash_htab.
15549         (vars_copy): Use htab_traverse_noresize instead of htab_traverse.
15550         (get_init_value, find_src_set_src, dump_dataflow_set,
15551         clobber_variable_part, emit_notes_for_differences): Use
15552         shared_hash_htab.
15553         (dataflow_set_init): Remove second argument, set vars to
15554         empty_shared_hash instead of creating a new htab.
15555         (dataflow_set_clear): Call shared_hash_destroy and set vars
15556         to empty_shared_hash instead of calling vars_clear.
15557         (dataflow_set_copy): Don't call vars_copy, instead just share
15558         the src htab with dst.
15559         (variable_union): Use shared_hash_*, use initially NO_INSERT
15560         lookup if set->vars is shared.  Don't keep slot cleared before
15561         calling unshare_variable.  Unshare set->vars if needed.
15562         Even ->refcount == 1 vars must be unshared if set->vars is shared
15563         and var needs to be modified.
15564         (variable_canonicalize): New function.
15565         (dataflow_set_union): If dst->vars is empty, just share src->vars
15566         with dst->vars and traverse with variable_canonicalize to canonicalize
15567         and unshare what is needed.
15568         (dataflow_set_different): If old_set and new_set use the same shared
15569         htab, they aren't different.  If number of htab elements is different,
15570         htabs are different.  Use shared_hash_*.
15571         (dataflow_set_destroy): Call shared_hash_destroy instead of
15572         htab_delete.
15573         (compute_bb_dataflow, emit_notes_in_bb, vt_emit_notes): Don't pass
15574         second argument to dataflow_set_init.
15575         (vt_initialize): Likewise.  Initialize shared_hash_pool and
15576         empty_shared_hash, move bb in/out initialization afterwards.
15577         Use variable_htab_free instead of NULL as changed_variables del hook.
15578         (variable_was_changed): Change type of second argument to pointer to
15579         dataflow_set.  When inserting var into changed_variables, bump
15580         refcount.  Unshare set->vars if set is shared htab and slot needs to
15581         be cleared.
15582         (set_variable_part): Use shared_hash_*, use initially NO_INSERT
15583         lookup if set->vars is shared.  Unshare set->vars if needed.
15584         Even ->refcount == 1 vars must be unshared if set->vars is shared
15585         and var needs to be modified.  Adjust variable_was_changed caller.
15586         (delete_variable_part): Use shared_hash_*.  Even ->refcount == 1
15587         vars must be unshared if set->vars is shared and var needs to be
15588         modified.  Adjust variable_was_changed caller.
15589         (emit_note_insn_var_location): Don't pool_free var.
15590         (emit_notes_for_differences_1): Initialize empty_var->refcount to 0
15591         instead of 1.
15592         (vt_finalize): Call htab_delete on empty_shared_hash->htab and
15593         free_alloc_pool on shared_hash_pool.
15594
15595 2009-06-20  Anthony Green  <green@moxielogic.com>
15596
15597         * config/moxie/sfp-machine.h (__gcc_CMPtype, CMPtype): Define.
15598         * config/moxie/moxie.h (LOAD_EXTEND_OP): Define.
15599
15600 2009-06-20  Richard Guenther  <rguenther@suse.de>
15601
15602         * tree-ssa-structalias.c (find_func_aliases): For memset use
15603         a constraint from NULL if we memset to zero.
15604         * tree-ssa-alias.c (ref_maybe_used_by_call_p_1): Add builtins
15605         we explicitly handle that do not read from memory.
15606         (call_may_clobber_ref_p_1): Properly handle builtins that may
15607         set errno.
15608
15609 2009-06-20  Richard Guenther  <rguenther@suse.de>
15610
15611         PR tree-optimization/40495
15612         * tree-ssa-structalias.c (get_constraint_exp_for_temp): Remove.
15613         (new_scalar_tmp_constraint_exp): New function.
15614         (process_constraint): Do not create temporary decls.
15615         (process_all_all_constraints): Likewise.
15616         (handle_const_call): Likewise.
15617         (create_function_info_for): Do not set decl.
15618
15619 2009-06-19  Ian Lance Taylor  <iant@google.com>
15620
15621         * config/rs6000/rs6000.c (rs6000_explicit_options): Make static.
15622         (rs6000_attribute_table): Make static; move before use.
15623
15624 2009-06-19  Eric Botcazou  <ebotcazou@adacore.com>
15625
15626         * tree.c (substitute_in_expr) <COMPONENT_REF>: Tweak and reformat.
15627         <tcc_vl_exp>: Call process_call_operands on the new CALL_EXPR.
15628         Propagate the TREE_READONLY flag without overwriting it.
15629         (substitute_placeholder_in_expr) <tcc_vl_exp>: Likewise.
15630         Propagate the TREE_READONLY flag onto the result.
15631         (process_call_operands): Move around.  Use correct constant value.
15632
15633 2009-06-19  Ramana Radhakrishnan  <ramana.radhakrishnan@arm.com>
15634
15635         PR target/40482
15636         * config/arm/arm.c (thumb_shiftable_const): Truncate val to 32 bits.
15637         * config/arm/arm.md: Likewise.
15638
15639 2009-06-19  Ian Lance Taylor  <iant@google.com>
15640
15641         * tree-cfg.c (gimple_redirect_edge_and_branch): Change ERROR_MARK
15642         to GIMPLE_ERROR_MARK.
15643
15644         * c-typeck.c (build_conditional_expr): Add op1_original_type and
15645         op2_original_type parameters.  Warn about using different enum types.
15646         * c-parser.c (c_parser_conditional_expression): Pass original
15647         types to build_conditional_expr.
15648         * c-tree.h (build_conditional_expr): Update declaration.
15649
15650 2009-06-19  Ian Lance Taylor  <iant@google.com>
15651
15652         * config/i386/i386.c (ix86_function_specific_save): Test that
15653         fields match values, rather than testing the values are in a
15654         certain range.
15655
15656 2009-06-19  Richard Guenther  <rguenther@suse.de>
15657
15658         * tree-ssa-alias.c (ptr_deref_may_alias_decl_p): Handle
15659         ADDR_EXPR pointers.
15660         (ptr_derefs_may_alias_p): Likewise.
15661         (ptr_deref_may_alias_ref_p_1): New function.
15662         (ptr_deref_may_alias_ref_p): Likewise.
15663         (ref_maybe_used_by_call_p_1): Handle builtins that are not
15664         covered by looking at the ESCAPED solution.
15665         (call_may_clobber_ref_p_1): Likewise.
15666         * tree-ssa-structalias.c (get_constraint_for_ptr_offset):
15667         Handle NULL_TREE offset.  Do not produce redundant constraints.
15668         (process_all_all_constraints): New helper function.
15669         (do_structure_copy): Use it.
15670         (handle_lhs_call): Likewise.
15671         (find_func_aliases): Handle some builtins with pointer arguments
15672         and/or return values explicitly.
15673
15674 2009-06-19  Ian Lance Taylor  <iant@google.com>
15675
15676         * varasm.c (const_rtx_hash_1): Remove const qualifier from shift.
15677
15678 2009-06-19  Ian Lance Taylor  <iant@google.com>
15679
15680         * rtl.h (SUBREG_PROMOTED_UNSIGNED_P): Add cast to int.
15681
15682 2009-06-19  Ian Lance Taylor  <iant@google.com>
15683
15684         * ggc-page.c (ggc_pch_write_object): Initialize emptyBytes.
15685         * sdbout.c (sdb_debug_hooks): Initialize non-SDB_DEBUGGING_INFO
15686         version.
15687
15688         * c-decl.c (finish_decl): If -Wc++-compat, warn about
15689         uninitialized const.
15690
15691 2009-06-19  Ian Lance Taylor  <iant@google.com>
15692
15693         * dse.c (struct store_info): Rename bitmap field to bmap.  Change
15694         all uses.
15695
15696         * c-decl.c (in_struct, struct_types): Remove.
15697         (struct c_binding): Add in_struct field.
15698         (c_binding_ptr): Define type, along with VEC.
15699         (struct c_struct_parse_info): Define.
15700         (struct_parse_info): New static variable.
15701         (bind): Initialize in_struct field.
15702         (start_struct): Remove enclosing_in_struct and
15703         enclosing_struct_types parameters.  Add
15704         enclosing_struct_parse_info parameter.  Change all callers.  Set
15705         struct_parse_info rather than in_struct and struct_types.
15706         (grokfield): If -Wc++-compat and there is a symbol binding for the
15707         field name, set the in_struct flag and push it on the
15708         struct_parse_info->fields vector.
15709         (warn_cxx_compat_finish_struct): New static function.
15710         (finish_struct): Remove enclosing_in_struct and
15711         enclosing_struct_types parameters.  Add
15712         enclosing_struct_parse_info parameter.  Change all callers.  Don't
15713         set C_TYPE_DEFINED_IN_STRUCT here.  Call
15714         warn_cxx_compat_finish_struct.  Free struct_parse_info and set to
15715         parameter.  Only push on struct_types if warn_cxx_compat.
15716         (finish_enum): Only push on struct_types if warn_cxx_compat.
15717         (declspecs_add_type): Add loc parameter.  Change all callers.
15718         Change all error calls to error_at.  Pass loc, not input_location,
15719         to pedwarn calls.  Warn if -Wc++-compat and a typedef name is
15720         defined in a struct.  If -Wc++-compat and parsing a struct, record
15721         that a typedef name was used.
15722         * c-parser.c (c_parser_declspecs): Get location to pass to
15723         declspecs_add_type.
15724         (c_parser_struct_or_union_specifier): Update calls to start_struct
15725         and finish_struct.
15726         * c-tree.h (struct c_struct_parse_info): Declare.
15727         (finish_struct, start_struct): Update declarations.
15728         (declspecs_add_type): Update declaration.
15729
15730 2009-06-19  Ian Lance Taylor  <iant@google.com>
15731
15732         * c-decl.c (grokdeclarator): If -Wc++-compat, warn about a global
15733         variable with an anonymous type.
15734
15735 2009-06-19  Uros Bizjak  <ubizjak@gmail.com>
15736
15737         * see.c: Remove for real.
15738
15739 2009-06-19  Uros Bizjak  <ubizjak@gmail.com>
15740
15741         * optabs.h (enum optab_index): Add new OTI_significand.
15742         (significand_optab): Define corresponding macro.
15743         * optabs.c (init_optabs): Initialize significand_optab.
15744         * genopinit.c (optabs): Implement significand_optab using
15745         significand?f2 patterns.
15746         * builtins.c (expand_builtin_mathfn): Handle
15747         BUILT_IN_SIGNIFICAND{,F,L}.
15748         (expand_builtin): Expand BUILT_IN_SIGNIFICAND{,F,L} using
15749         expand_builtin_mathfn if flag_unsafe_math_optimizations is set.
15750
15751         * config/i386/i386.md (significandxf2, significand<mode>2): New
15752         expanders to implement significandf, significand and significandl
15753         built-ins as inline x87 intrinsics.
15754
15755 2009-06-18  Anatoly Sokolov  <aesok@post.ru>
15756
15757         * config/avr/avr.c (avr_override_options): Remove setting value of
15758         PARAM_INLINE_CALL_COST.
15759
15760 2009-06-18  Richard Henderson  <rth@redhat.com>
15761
15762         PR 40488
15763         * tree-pass.h (TDF_ASMNAME): New.
15764         * tree-dump.c (dump_options): Add asmname.
15765         * doc/invoke.texi: Document it.
15766
15767         * tree-pretty-print.c (maybe_dump_asm_name): Merge into...
15768         (dump_decl_name): ...here.
15769         (dump_function_name): New flags arg; mind TDF_ASMNAME.
15770         (dump_generic_node): Update dump_function_name calls.
15771         (print_call_name): New flags arg; update all dump calls.
15772         * diagnostic.h (print_call_name): Update.
15773         * gimple-pretty-print.c (dump_gimple_call): Update.
15774
15775 2009-06-18  H.J. Lu  <hongjiu.lu@intel.com>
15776
15777         PR target/40470
15778         * config/i386/i386.h (CLASS_LIKELY_SPILLED_P): Add SSE_FIRST_REG.
15779
15780 2009-06-18  Diego Novillo  <dnovillo@google.com>
15781
15782         * doc/plugins.texi: Document plugin_is_GPL_compatible.
15783         * plugin.c (str_license): Declare.
15784         (try_init_one_plugin): Assert that the symbol
15785         'plugin_is_GPL_compatible' exists.
15786
15787 2009-06-18  Sergei Dyshel  <sergeid@il.ibm.com>
15788
15789         * see.c: Remove.
15790         * Makefile.in (OBJS-common): Remove see.o.
15791         (see.o): Remove.
15792         * common.opt (fsee): Mark as preserved for backward compatibility.
15793         * opts.c (common_handle_option): Add OPT_fsee to the backward
15794         compatibility section.
15795         * passes.c (init_optimization_passes, pass_see): Remove pass.
15796         * timevar.def (TV_SEE): Remove.
15797         * tree-pass.h (pass_see): Remove declaration.
15798         * doc/invoke.texi (-fsee): Remove documentation.
15799
15800 2009-06-18  Martin Jambor  <mjambor@suse.cz>
15801
15802         * tree-sra.c: Include statistics.h
15803         (sra_stats): New variable.
15804         (sra_initialize): Clear sra_stats.
15805         (create_access_replacement): Increment sra_stats.replacements.
15806         (get_access_replacement): Do not return twice.
15807         (analyze_all_variable_accesses): Increment statistics counter by the
15808         number of scalarized aggregates.
15809         (generate_subtree_copies): Increment sra_stats.subtree_copies.
15810         (sra_modify_expr): Increment sra_stats.exprs.
15811         (load_assign_lhs_subreplacements): Increment sra_stats.subreplacements.
15812         (sra_modify_assign): Increment sra_stats.exprs,
15813         sra_stats.separate_lhs_rhs_handling and sra_stats.deleted.
15814         (perform_intra_sra): Update statistics counters.
15815         * Makefile.in (tree-sra.o): Add statistics.h to dependencies.
15816
15817 2009-06-18  Sandra Loosemore  <sandra@codesourcery.com>
15818
15819         * config/arm/arm.c (TARGET_SCALAR_MODE_SUPPORTED_P): Redefine.
15820         (arm_scalar_mode_supported_p): New function.
15821
15822 2009-06-18  Paul Brook  <paul@codesourcery.com>
15823             Sandra Loosemore  <sandra@codesourcery.com>
15824
15825         * config/arm/sfp-machine.h (_FP_NANFRAC_H, _FP_NANSIGN_H): Define.
15826         (__extendhfsf2, __truncsfhf2): Define.
15827         * config/arm/fp16.c: New file.
15828         * config/arm/t-bpabi (LIB2FUNCS_STATIC_EXTRA): Add fp16.c.
15829         * config/arm/t-symbian (LIB2FUNCS_STATIC_EXTRA):  Add fp16.c.
15830
15831 2009-06-18  Sandra Loosemore  <sandra@codesourcery.com>
15832
15833         * doc/extend.texi (Half-Precision): New section.
15834         * doc/invoke.texi (Option Summary): List -mfp16-format.
15835         (ARM Options): List neon-fp16 as -mfpu value.  Document -mfp16-format.
15836         * config/arm/arm.opt (mfp16-format=): New.
15837         * config/arm/arm.c: Include intl.h.
15838         (TARGET_INVALID_PARAMETER_TYPE): Redefine.
15839         (TARGET_INVALID_RETURN_TYPE): Redefine.
15840         (TARGET_PROMOTED_TYPE): Redefine.
15841         (TARGET_CONVERT_TO_TYPE): Redefine.
15842         (arm_fp16_format): Define.
15843         (all_fpus): Add entry for neon-fp16.
15844         (fp_model_for_fpu): Likewise.
15845         (struct fp16_format): Declare.
15846         (all_fp16_formats): Define.
15847         (arm_init_libfuncs): Add entries for HFmode conversions and arithmetic
15848         functions.
15849         (arm_override_options): Set arm_fp16_format. Call sorry for fp16
15850         and no ldrh.
15851         (arm_legitimate_index_p): Treat HFmode like HImode.
15852         (thumb1_legitimate_address_p): Make it recognize HFmode constants.
15853         (coproc_secondary_reload_class): Special-case HFmode.
15854         (arm_print_operand): Add 'z' specifier for vld1.16/vst1.16.
15855         (arm_hard_regno_mode_ok): Allow HFmode values in VFP registers.
15856         (arm_init_fp16_builtins): New.
15857         (arm_init_builtins): Call it.
15858         (arm_invalid_parameter_type): New.
15859         (arm_invalid_return_type): New.
15860         (arm_promoted_type): New.
15861         (arm_convert_to_type).
15862         (arm_file_start): Deal with neon-fp16 as fpu_name.  Emit tag for fp16
15863         format.
15864         (arm_emit_fp16_const): New function.
15865         (arm_mangle_type): Mangle __fp16 as "Dh".
15866         * config/arm/arm.h (TARGET_VFPD32): Make it know about
15867         FPUTYPE_NEON_FP16.
15868         (TARGET_NEON_FP16): New.
15869         (TARGET_NEON): Make it know about FPUTYPE_NEON_FP16.
15870         (enum fputype): Add FPUTYPE_NEON_FP16.
15871         (enum arm_fp16_format_type): Declare.
15872         (arm_fp16_format): Declare.
15873         (LARGEST_EXPONENT_IS_NORMAL): Define.
15874         * config/arm/arm-protos.h (arm_emit_fp16_const): Declare.
15875         * config/arm/arm-modes.def (HFmode): Define.
15876         * config/arm/vfp.md (*movhf_vfp): New.
15877         (extendhfsf2): New.
15878         (truncsfhf2): New.
15879         * config/arm/arm.md (fpu): Add neon_fp16.
15880         (floatsihf2, floatdihf2): New.
15881         (fix_trunchfsi2, fix_trunchfdi2): New.
15882         (truncdfhf2): New.
15883         (extendhfdf2): New.
15884         (movhf): New.
15885         (*arm32_movhf): New.
15886         (*thumb1_movhf): New.
15887         (consttable_2): Add check for HFmode constants.
15888         (consttable_4): Handle HFmode constants.
15889
15890 2009-06-18  Uros Bizjak  <ubizjak@gmail.com>
15891
15892         * convert.c (convert_to_integer): Convert (int)logb() into ilogb().
15893
15894 2009-06-17  Olivier Hainque  <hainque@adacore.com>
15895
15896         * collect2.c (main): Use CONST_CAST2 to perform char ** to
15897         const char ** conversion in AIX specific section.
15898
15899 2009-06-17  H.J. Lu  <hongjiu.lu@intel.com>
15900
15901         * config/i386/i386.c (ix86_special_builtin_type): Remove
15902         UINT64_FTYPE_PINT.  Add UINT64_FTYPE_PUNSIGNED.
15903         (bdesc_special_args): Updated.
15904         (ix86_init_mmx_sse_builtins): Likewise.
15905         (ix86_expand_special_args_builtin): Likewise.
15906
15907 2009-06-17  Richard Henderson  <rth@redhat.com>
15908
15909         * tree-pretty-print.c (maybe_dump_asm_name): New.
15910         (dump_decl_name): Use it.
15911         (PRINT_FUNCTION_NAME): Merge into...
15912         (dump_function_name): ... here.  Use maybe_dump_asm_name.
15913
15914 2009-06-17  Cary Coutant  <ccoutant@google.com>
15915
15916         * dbxout.c (dbxout_source_line): Add is_stmt parameter.
15917         Change caller.
15918         * debug.c (struct gcc_debug_hooks): Change placeholder for
15919         source_line hook.
15920         (debug_nothing_int_charstar_int): Replaced by...
15921         (debug_nothing_int_charstar_int_bool): ...this.
15922         * debug.h (struct gcc_debug_hooks): Add is_stmt parameter to
15923         source_line prototype.
15924         (debug_nothing_int_charstar_int): Replaced by...
15925         (debug_nothing_int_charstar_int_bool): ...this.
15926         * defaults.h (SUPPORTS_DISCRIMINATOR): New constant.
15927         * dwarf2out.c (dwarf2out_source_line): Add is_stmt parameter.
15928         Output is_stmt operand when necessary.
15929         * final.c (final_scan_insn): Pass is_stmt to source_line debug hook.
15930         (notice_source_line): Add is_stmt parameter.
15931         * sdbout.c (sdbout_source_line): Add is_stmt parameter.
15932         * vmsdbgout.c (vmsdbgout_source_line): Add is_stmt parameter.
15933         Change callers.
15934         * xcoffout.c (xcoffout_source_line): Add is_stmt parameter.
15935         * xcoffout.h (xcoffout_source_line): Add is_stmt parameter.
15936
15937 2009-06-17  Ian Lance Taylor  <iant@google.com>
15938
15939         * expr.c (struct move_by_pieces_d): Rename from move_by_pieces.
15940         Change all uses.
15941         (struct store_by_pieces_d): Rename from store_by_pieces.  Change
15942         call uses.
15943
15944 2009-06-17  Adam Nemet  <anemet@caviumnetworks.com>
15945
15946         * tree.h (STRIP_NOPS, STRIP_SIGN_NOPS,
15947         STRIP_USELESS_TYPE_CONVERSION): Use tree_strip_nop_conversions,
15948         tree_strip_sign_nop_conversions and
15949         tree_ssa_strip_useless_type_conversions rather than stripping
15950         the operations here.
15951         (tree_strip_nop_conversions, tree_strip_sign_nop_conversions):
15952         Declare them.
15953         * gimple.h (tree_ssa_strip_useless_type_conversions): Declare it.
15954         * tree-ssa.c (tree_ssa_strip_useless_type_conversions): New function.
15955         * tree.c (tree_nop_conversion, tree_sign_nop_conversion,
15956         tree_strip_nop_conversions, tree_strip_sign_nop_conversions): New
15957         functions.
15958
15959 2009-06-17  Michael Eager  <eager@eagercon.com>
15960
15961         * config/rs6000/constraints.md (register_constraint "d"): New.
15962         * config/rs6000/dfp.md (movsd_store, extendsddd2, extendsdtd2,
15963         truncddsd2, *negdd2_fpr, *absdd2_fpr, *nabsdd2_fpr,
15964         *movdd_hardfloat32, *movdd_hardfloat64_mfpgpr, *movdd_hardfloat64,
15965         *negtd2_fp, *abstd2_fpr, *nabstd2_fpr, *movtd_internal, extendddtd2,
15966         trunctddd2, adddd3, addtd3, subdd3, subtd3, muldd3, multd3, divdd3,
15967         divtd3, *cmpdd_internal1, *cmptd_internal1, floatditd2, ftruncdd2,
15968         fixdddi2, ftrunctd2, fixtddi2): replace 'f' constraint with 'd'
15969         * config/rs6000/ppu_intrinsics.h (__mffs, __mtfsf, __mtfsfi, __fabs,
15970         __fnabs, __fmadd, __fmsub, __fnmadd, __fnmsub, __fsel, __frsqrte,
15971         __fsqrt, __fmul, __fmuls, __frsp, __fcfid, __fctid, __fctidz, __fctiw,
15972         __fctiwz): Same.
15973         * config/rs6000/rs6000.md (*extendsfdf2_fpr, *truncdfsf2_fpr,
15974         *fseldfsf4, *negdf2_fpr, *absdf2_fpr, *nabsdf2_fpr, *adddf3_fpr,
15975         *subdf3_fpr, *muldf3_fpr, *divdf3_fpr, recipdf3, fred, sqrtdf2,
15976         *fseldfdf4, *fselsfdf4, *floatsidf2_internal, *floatunssidf2_internal,
15977         *fix_truncdfsi2_internal, fix_truncdfsi2_internal_gfxopt,
15978         fix_truncdfsi2_mfpgpr, fctiwz, btruncdf2, ceildf2, floordf2, rounddf2,
15979         stfiwx, floatdidf2, fix_truncdfdi2, floatdisf2_internal1,
15980         *movdf_hardfloat32, *movdf_hardfloat64_mfpgpr, *movdf_hardfloat64,
15981         *movtf_internal, *extenddftf2_internal, trunctfdf2_internal1,
15982         trunctfdf2_internal2, trunctfsf2_fprs, fix_trunc_helper,
15983         *fix_trunctfsi2_internal, negtf2_internal, *movdi_internal32,
15984         *movdi_mfpgpr, *movdi_internal64, *movdf_update1, *movdf_update2,
15985         *cmpdf_internal1, *cmptf_internal1, *cmptf_internal2): Same.
15986         * doc/md.texi: Describe PowerPC 'd' constraint, update 'f' constraint.
15987
15988 2009-06-16  Ian Lance Taylor  <iant@google.com>
15989
15990         * profile.c (total_num_never_executed): Don't define.
15991         (compute_branch_probabilities): Don't count or print
15992         num_never_executed.
15993         (init_branch_prob): Don't set total_num_never_executed.
15994         (end_branch_prob): Don't print total_num_never_executed.
15995
15996 2009-06-17  David Daney  <ddaney@caviumnetworks.com>
15997
15998         * jump.c (cleanup_barriers): Handle case of no insns before a barrier.
15999
16000 2009-06-17  David Edelsohn  <edelsohn@gnu.org>
16001
16002         * config/rs6000/dfp.md (nabsdd2_fpr): Correct mode.
16003         (nabstd2_fpr): Same.
16004
16005 2009-06-17  Steve Ellcey  <sje@cup.hp.com>
16006
16007         * expr.c (expand_assignment): Change complex type check.
16008
16009 2009-06-17  Basile Starynkevitch  <basile@starynkevitch.net>
16010
16011         * doc/plugins.texi (Building GCC plugins): Added new section.
16012
16013 2009-06-17  Ian Lance Taylor  <iant@google.com>
16014
16015         * c-pch.c (get_ident): Don't set size of templ array.
16016         (pch_init): Don't set size of partial_pch array.
16017
16018         * c-typeck.c (digest_init): If -Wc++-compat, warn about using a
16019         string constant to intialize an array whose size is the length of
16020         the string.
16021
16022 2009-06-17  Richard Guenther  <rguenther@suse.de>
16023
16024         PR tree-optimization/40389
16025         * tree-ssa-structalias.c (handle_rhs_call): Restrict NRV case
16026         to addressable types.
16027         * gimple.c (walk_stmt_load_store_addr_ops): Likewise.
16028
16029 2009-06-17  Richard Guenther  <rguenther@suse.de>
16030
16031         PR middle-end/40460
16032         * tree-chrec.h (build_polynomial_chrec): If we cannot determine
16033         if there is no evolution of left in the loop bail out.
16034         * tree-chrec.c (chrec_fold_multiply_poly_poly): CSE one
16035         chrec_fold_multiply.
16036
16037 2009-06-16  J"orn Rennecke  <joern.rennecke@arc.com>
16038             Janis Johnson  <janis187@us.ibm.com>
16039
16040         PR target/39254
16041         * config/rs6000/rs6000.c (rs6000_emit_move): Don't emit a USE
16042         for the symbol ref of a constant that is the source of a move
16043         - nor for any other not-obvious-label-ref constants.
16044
16045 2009-06-16  Olatunji Ruwase  <tjruwase@google.com>
16046
16047         * plugin.c (position_pass): Skip newly inserted pass during list
16048         traversal to avoid repeated insertion.
16049
16050 2009-06-16  Ian Lance Taylor  <iant@google.com>
16051
16052         * vec.h (VEC_stack_alloc): Define different version if
16053         GATHER_STATISTICS is defined, to accept and ignore MEM_STAT.
16054         (DEF_VEC_ALLOC_FUNC_P_STACK): Remove MEM_STAT_DECL.
16055         (DEF_VEC_ALLOC_FUNC_O_STACK): Likewise.
16056         (DEF_VEC_ALLOC_FUNC_I_STACK): Likewise.
16057
16058 2009-06-16  H.J. Lu  <hongjiu.lu@intel.com>
16059
16060         * config.gcc (extra_headers): Add ia32intrin.h for x86.
16061
16062         * config/i386/i386.c (ix86_builtins): Add IX86_BUILTIN_BSRSI,
16063         IX86_BUILTIN_BSRDI.  IX86_BUILTIN_RDPMC, IX86_BUILTIN_RDTSC.
16064         IX86_BUILTIN_RDTSCP.  IX86_BUILTIN_ROLQI, IX86_BUILTIN_ROLHI,
16065         IX86_BUILTIN_RORQI and IX86_BUILTIN_RORHI.
16066         (ix86_special_builtin_type): Add UINT64_FTYPE_VOID,
16067         UINT64_FTYPE_PINT, INT_FTYPE_INT, UINT64_FTYPE_INT,
16068         INT64_FTYPE_INT64, UINT16_FTYPE_UINT16_INT and UINT8_FTYPE_UINT8_INT.
16069         (bdesc_special_args): Add __builtin_ia32_rdtsc and
16070         __builtin_ia32_rdtscp.
16071         (bdesc_args): Add __builtin_ia32_bsrsi, __builtin_ia32_bsrdi,
16072         __builtin_ia32_rolqi, __builtin_ia32_rolhi, __builtin_ia32_rorqi
16073         and __builtin_ia32_rorhi.
16074         (ix86_init_mmx_sse_builtins): Handle UINT64_FTYPE_VOID,
16075         UINT64_FTYPE_PINT, INT_FTYPE_INT, UINT64_FTYPE_INT,
16076         INT64_FTYPE_INT64, UINT16_FTYPE_UINT16_INT and UINT8_FTYPE_UINT8_INT.
16077         (ix86_expand_args_builtin): Likewise.
16078         (ix86_expand_special_args_builtin): Likewise.
16079
16080         * config/i386/i386.md (UNSPECV_RDTSCP): New.
16081         (UNSPECV_RDTSC): Likewise.
16082         (UNSPECV_RDPMC): Likewise.
16083         (*bsr): Renamed to ...
16084         (bsr): This
16085         (*bsr_rex64): Renamed to ...
16086         (bsr_rex64): This.
16087         (rdpmc): New.
16088         (*rdpmc): Likewise.
16089         (*rdpmc_rex64): Likewise.
16090         (rdtsc): Likewise.
16091         (*rdtsc): Likewise.
16092         (*rdtsc_rex64): Likewise.
16093         (rdtscp): Likewise.
16094         (*rdtscp): Likewise.
16095         (*rdtscp_rex64): Likewise.
16096
16097         * config/i386/ia32intrin.h: New.
16098
16099         * config/i386/x86intrin.h: Include <ia32intrin.h>.
16100
16101 2009-06-16  Ian Lance Taylor  <iant@google.com>
16102
16103         * ira-build.c (copy_info_to_removed_store_destinations):
16104         Initialize parent_a.
16105
16106 2009-06-16  Ian Lance Taylor  <iant@google.com>
16107
16108         * c-decl.c (grokdeclarator): Change size_varies to bool.
16109
16110 2009-06-16  Ian Lance Taylor  <iant@google.com>
16111
16112         * sel-sched.c: Make forward declarations of move_op_hooks and
16113         fur_hooks explicitly extern.
16114
16115 2009-06-16  Ian Lance Taylor  <iant@google.com>
16116
16117         * df-problems.c (df_byte_lr_alloc): Don't set problem_data to itself.
16118         * vec.c (vec_gc_o_reserve_1): Don't set alloc to itself.
16119
16120 2009-06-16  Ian Lance Taylor  <iant@google.com>
16121
16122         * resource.c (mark_referenced_resources): Change
16123         include_delayed_effects parameter to bool.  Change all callers.
16124         (mark_end_of_function_resources): Likewise.
16125         * reorg.c (insn_references_resource_p): Likewise.
16126         (insn_sets_resource_p): Likewise.
16127         * resource.h (mark_referenced_resources): Update declaration.
16128         (mark_end_of_function_resources): Update declaration.
16129
16130 2009-06-16  David Edelsohn  <edelsohn@gnu.org>
16131
16132         * config/rs6000/aix.h (LIBSTDCXX_STATIC): Remove -lstdc++.
16133
16134 2009-06-16  David Edelsohn  <edelsohn@gnu.org>
16135
16136         * doc/install.texi (*-*-aix): Update explanation of XLC bootstrap.
16137         GCC can bootstrap on AIX with GNU Binutils 2.20.
16138
16139 2009-06-16  Ian Lance Taylor  <iant@google.com>
16140
16141         * Makefile.in (tree-vect-stmts.o): Depend upon $(TOPLEV_H).
16142
16143 2009-06-16  Ian Lance Taylor  <iant@google.com>
16144
16145         * toplev.h (floor_log2): If GCC_VERSION >= 3004, declare as static
16146         inline, not extern inline.
16147         (exact_log2): Likewise.
16148         * toplev.c (floor_log2): Only define if GCC_VERSION < 3004. Don't
16149         test CLZ_HWI.
16150         (exact_log2): Likewise, but don't test CTZ_HWI.
16151
16152 2009-06-16  Ian Lance Taylor  <iant@google.com>
16153
16154         * bitmap.c (bitmap_clear): Don't declare as inline.
16155         * gimple.c (gimplify_assign): Likewise.
16156         * tree-ssa-sccvn.c (vn_nary_op_compute_hash): Likewise.
16157         * haifa-sched.c (insn_cost): Don't declare with HAIFA_INLINE.
16158         (sched_scan_info): Remove duplicate definition.
16159
16160 2009-06-16  Ian Lance Taylor  <iant@google.com>
16161
16162         * c-common.c (skip_evaluation): Don't define.
16163         (c_inhibit_evaluation_warnings): Define global variable.
16164         (overflow_warning): Check c_inhibit_evaluation_warnings rather
16165         than skip_evaluation.
16166         (convert_and_check, warn_for_div_by_zero): Likewise.
16167         * c-common.h (skip_evaluation): Don't declare.
16168         (c_inhibit_evaluation_warnings): Declare.
16169         * c-parser.c (c_parser_typeof_specifier): Set
16170         c_inhibit_evaluation_warnings rather than skip_evaluation.
16171         (c_parser_conditional_expression): Likewise.
16172         (c_parser_binary_expression): Likewise.
16173         (c_parser_sizeof_expression): Likewise.
16174         (c_parser_alignof_expression): Likewise.
16175         * c-typeck.c (build_indirect_ref): Check
16176         c_inhibit_evaluation_warnings rather than skip_evaluation.
16177         (build_conditional_expr, build_binary_op): Likewise.
16178
16179 2009-06-16  Richard Guenther  <rguenther@suse.de>
16180
16181         * tree-ssa-alias.c (is_escape_site): Remove.
16182         * tree-ssa-alias.h (enum escape_type): Remove.
16183         (is_escape_site): Likewise.
16184         * tree-ssa-structalias.c (find_func_aliases): Handle escapes
16185         via casts and asms without deferring to is_escape_site.
16186
16187 2009-06-16  Jakub Jelinek  <jakub@redhat.com>
16188
16189         PR middle-end/40446
16190         * expr.c (expand_expr_real_1) <case VIEW_CONVERT_EXPR>: Don't
16191         use gen_lowpart if op0 has complex mode.
16192
16193 2009-06-16  Richard Guenther  <rguenther@suse.de>
16194
16195         * tree-ssa-structalias.c (do_ds_constraint): Stores in global
16196         variables add them to ESCAPED.
16197         (find_func_aliases): Do not make all indirectly stored values escaped.
16198
16199 2009-06-16  Rafael Avila de Espindola  <espindola@google.com>
16200
16201         * config/i386/winnt.c (i386_pe_encode_section_info): Update call to
16202         make_decl_one_only.
16203
16204 2009-06-16  Martin Jambor  <mjambor@suse.cz>
16205
16206         PR tree-optimization/40432
16207         * tree-sra.c (sra_modify_assign): When creating VIEW_CONVERT_EXPR,
16208         check whether we need to force gimple register operand.
16209
16210 2009-06-16  Martin Jambor  <mjambor@suse.cz>
16211
16212         PR tree-optimization/40413
16213         * tree-sra.c (load_assign_lhs_subreplacements): Pass offset to
16214         build_ref_for_offset.
16215         (propagate_subacesses_accross_link): Fix a typo in a comment.
16216
16217 2009-06-16  Ira Rosen  <irar@il.ibm.com>
16218
16219         * tree-parloops.c (loop_parallel_p): Call vect_is_simple_reduction
16220         with additional parameter.
16221         * tree-vectorizer.h (enum vect_def_type): Add new value
16222         vect_nested_cycle.
16223         (enum vect_relevant): Add comments.
16224         (vect_is_simple_reduction): Add new argument.
16225         * tree-vect-loop.c (vect_analyze_scalar_cycles_1): Add comments.
16226         Detect nested cycles.
16227         (vect_is_simple_reduction): Update documentation, add an argument to
16228         distinguish inner-loop reduction from nested cycle, detect nested
16229         cycles, fix printings and indentation, don't swap operands in case
16230         of nested cycle.
16231         (get_initial_def_for_reduction): Handle subtraction.
16232         (vect_create_epilog_for_reduction): Add new argument to specify
16233         reduction variable.
16234         (vect_finalize_reduction): Handle subtraction, fix comments.
16235         (vectorizable_reduction): Handle nested cycles. In case of nested
16236         cycle keep track of the reduction variable position. Call
16237         vect_is_simple_reduction with additional parameter. Use original
16238         statement code in reduction epilogue for nested cycle. Call
16239         vect_create_epilog_for_reduction with additional parameter.
16240         * tree-vect-patterns.c (vect_recog_dot_prod_pattern): Assert
16241         inner-loop vectorization.
16242         (vect_recog_widen_sum_pattern): Likewise.
16243         * tree-vect-stmts.c (process_use): Distinguish between nested cycles
16244         and reductions.
16245         (vect_mark_stmts_to_be_vectorized): Likewise.
16246         (vect_get_vec_def_for_operand): Handle nested cycles.
16247
16248 2009-06-16  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
16249
16250         * doc/invoke.texi (Debugging Options): Fix option index entries
16251         for -fdump-statistics, -frandom-seed add entries for
16252         -fdump-tree-original, -fdump-tree-optimized, -frandom-seed.
16253         (FRV Options): Fix entries for -mTLS, -mtls.
16254         (HPPA Options): Fix entries for -mgnu-ld, -mhp-ld.
16255         (i386 and x86-64 Options): Fix entry for -mno-red-zone.
16256         (M68hc1x Options): Fix @itemx for -mnominmax.
16257         (MCore Options): Fix entry for -mno-lsim.
16258         (MMIX Options): Fix entry for -mabi=mmixware.
16259         (PDP-11 Options): Fix entry for -mbcopy-builtin.
16260
16261 2009-06-16  Basile Starynkevitch  <basile@starynkevitch.net>
16262
16263         * doc/plugins.texi (Interacting with the GCC Garbage Collector):
16264         Mention the plugin mode of gengtype.
16265         * doc/gty.texi (Source Files Containing Type Information): Likewise.
16266         * gengtype.c: Updated copyright.
16267         (plugin_files, nb_plugin_files) Added new static variables.
16268         (measure_input_list) Care about plugin_files.
16269         (write_rtx_next): Added early return in plugin mode.
16270         (create_file): Updated copyright year in generated file. Added
16271         asserts.
16272         (oprintf): Added early return if NULL outf.
16273         (get_output_file_with_visibility): Care of plugin_files.
16274         (get_output_file_name): May return null.
16275         (write_local): Added early return.
16276         (put_mangled_filename): Ditto.
16277         (finish_root_table): Added check for base_files.
16278         (write_roots): Care about null when plugins.
16279         (main): Added plugin mode.
16280
16281 2009-06-15  Ian Lance Taylor  <iant@google.com>
16282
16283         * df-problems.c (df_simulate_one_insn_forwards): Fix braces in switch.
16284         * gcov.c (read_count_file): Add braces around variables declared
16285         before label.
16286
16287         * c.opt (Wjump-misses-init): New warning.
16288         * c-opts.c (c_common_handle_option): Set warn_jump_misses_init for
16289         -Wall and -Wc++-compat if not already set.
16290         (c_common_post_options): Clear warn_jump_misses_init if it was not
16291         set.
16292         * c-decl.c (struct c_binding): Change type field to a union with
16293         new label field.  Make it the first field in the struct.  Update
16294         references to type to use u.type instead.
16295         (struct c_spot_bindings): Define.
16296         (struct c_goto_bindings): Define.
16297         (c_goto_bindings_p): Define, along with VECs.
16298         (struct c_label_vars): Define.
16299         (struct c_scope): Add has_label_bindings field.
16300         (bind_label, set_spot_bindings): New static functions.
16301         (decl_jump_unsafe, update_spot_bindings): New static functions.
16302         (update_label_decls): New static function.
16303         (pop_scope): Call update_label_decls.  Don't call c_end_vm_scope.
16304         Update binding u.label field to shadowed field.
16305         (c_binding_start_stmt_expr): New function.
16306         (c_binding_end_stmt_expr): New function.
16307         (pushdecl): Don't call c_begin_vm_scope.
16308         (make_label): Add defining and p_label_vars parameters.  Change
16309         all callers.
16310         (lookup_label): Correct test for whether a label has not yet been
16311         defined.  Call bind_label rather than bind.
16312         (warn_about_goto): New static function.
16313         (lookup_label_for_goto): New function.
16314         (declare_label): Call bind_label rather than bind.
16315         (check_earlier_gotos): New static function.
16316         (define_label): Don't give errors about jumping into statement
16317         expressions or scopes of variably modified types.  Call
16318         set_spot_bindings and check_earlier_gotos.  Call bind_label
16319         instead of bind.  Don't set label_context_stack_se or
16320         label_context_stack_vm.
16321         (c_get_switch_bindings): New function.
16322         (c_release_switch_bindings): New function.
16323         (c_check_switch_jump_warnings): New function.
16324         (start_function): Don't set label_context_stack_se or
16325         label_context_stack_vm.
16326         (finish_function): Likewise.
16327         * c-typeck.c (label_context_stack_se): Don't define.
16328         (label_context_stack_vm): Don't define.
16329         (c_finish_goto_label): Call lookup_label_for_goto rather than
16330         lookup_label.  Don't give errors about jumping into a statement
16331         expression or the scope of a variably modified type.  Don't set
16332         label_context_stack_se or label_context_stack_vm.
16333         (struct c_switch): Remove blocked_stmt_expr and blocked_vm
16334         fields.  Add bindings field.
16335         (c_start_case): Don't set deleted fields.  Set bindings field.
16336         (do_case): Rework order of tests.  Don't check blocked_stmt_expr
16337         or blocked_vm.  Call c_check_switch_jump_warnings.
16338         (c_finish_case): Don't test blocked_stmt_expr field.  Call
16339         c_release_switch_bindings.
16340         (c_begin_stmt_expr): Don't increment blocked_stmt_expr in
16341         c_switch_stack.  Don't walk label_context_stack_se labels.  Don't
16342         set label_context_stack_se.  Call c_bindings_start_stmt_expr.
16343         (c_finish_stmt_expr): Don't decrement blocked_stmt_expr in
16344         c_switch_stack.  Don't walk label_context_stack_se labels.  Don't
16345         set label_context_stack_se.  Call c_bindings_end_stmt_expr.
16346         (c_begin_vm_scope, c_end_vm_scope): Don't define.
16347         * c-tree.h (C_DECL_UNJUMPABLE_STMT_EXPR): Don't define.
16348         (C_DECL_UNDEFINABLE_STMT_EXPR): Don't define.
16349         (C_DECL_UNJUMPABLE_VM): Don't define.
16350         (C_DECL_UNDEFINABLE_VM): Don't define.
16351         (struct c_label_list): Don't define.
16352         (struct c_label_context_se): Don't define.
16353         (struct c_label_context_vm): Don't define.
16354         (struct c_spot_bindings): Declare.
16355         (c_bindings_start_stmt_expr): Declare.
16356         (c_bindings_end_stmt_expr): Declare.
16357         (lookup_label_for_goto): Declare.
16358         (c_get_switch_bindings, c_release_switch_bindings): Declare.
16359         (c_check_switch_jump_warnings): Declare.
16360         (label_context_stack_se, label_context_stack_vm): Don't declare.
16361         (c_finish_goto_label): Update declaration.
16362         (c_begin_vm_scope, c_end_vm_scope): Don't declare.
16363         * doc/invoke.texi (Option Summary): Mention -Wjump-misses-init.
16364         (Warning Options): Document -Wjump-misses-init.
16365
16366 2009-06-15  Jakub Jelinek  <jakub@redhat.com>
16367
16368         * tree-object-size.c (addr_object_size): Fix a pasto in the last
16369         change.
16370
16371 2009-06-15  Rafael Avila de Espindola  <espindola@google.com>
16372
16373         * cgraph.c (cgraph_make_node_local): Use DECL_COMDAT_GROUP.
16374
16375 2009-06-15  Aldy Hernandez  <aldyh@redhat.com>
16376
16377         * except.c (init_eh): Use BUILTINS_LOCATION when calling build_decl.
16378
16379 2009-06-15  Aldy Hernandez  <aldyh@redhat.com>
16380
16381         * tree-eh.c (lower_try_finally_switch): Initialize tf_loc.
16382
16383 2009-06-15  Rafael Avila de Espindola  <espindola@google.com>
16384
16385         * cgraphunit.c (cgraph_function_versioning,save_inline_function_body):
16386         Use DECL_COMDAT_GROUP instead of DECL_ONE_ONLY.
16387         * cgraph.c (cgraph_create_virtual_clone): Use DECL_COMDAT_GROUP.
16388         * config/i386/i386.c (ix86_file_end): Compute DECL_COMDAT_GROUP.
16389         * dwarf2asm.c (dw2_force_const_mem): Update call to
16390         make_decl_one_only.
16391         * langhooks-def.h (lhd_comdat_group, LANG_HOOKS_COMDAT_GROUP): Remove.
16392         (LANG_HOOKS_DECLS): Remove LANG_HOOKS_COMDAT_GROUP.
16393         * langhooks.c (lhd_comdat_group): Remove.
16394         * langhooks.h (lang_hooks_for_decls): Remove comdat_group.
16395         * tree.h (DECL_COMDAT_GROUP): New.
16396         (DECL_ONE_ONLY): Use DECL_COMDAT_GROUP.
16397         (tree_decl_with_vis): Add comdat_group. Remove one_only.
16398         (make_decl_one_only): Change signature.
16399         * varasm.c (get_emutls_init_templ_addr, emutls_decl): Update call to
16400         make_decl_one_only.
16401         (make_decl_one_only): Change signature.
16402         (default_elf_asm_named_section): Use DECL_COMDAT_GROUP.
16403
16404 2009-06-15  Richard Guenther  <rguenther@suse.de>
16405
16406         PR middle-end/40439
16407         * tree.c (widest_int_cst_value): Fix bootstrap on 32bit HWI hosts.
16408
16409 2009-06-14  Andreas Krebbel  <Andreas.Krebbel@de.ibm.com>
16410
16411         * tree-ssa-math-opts.c: Remove extra divide.
16412
16413 2009-06-14  Andreas Krebbel  <Andreas.Krebbel@de.ibm.com>
16414
16415         * config/s390/s390.md ("bswap<mode>2"): Only available on z900.
16416
16417 2009-06-14  Andreas Krebbel  <Andreas.Krebbel@de.ibm.com>
16418
16419         * passes.c: Add bswap pass.
16420         * tree-pass.h: Add pass_optimize_bswap declaration.
16421         * tree-ssa-math-opts.c: Include diagnostics.h for print_gimple_stmt.
16422         Include rtl.h, expr.h and optabs.h for optab_handler check.
16423         (struct symbolic_number, pass_optimize_bswap): New definition.
16424         (do_shift_rotate, verify_symbolic_number_p): New functions.
16425         (find_bswap_1, find_bswap, execute_optimize_bswap): New functions.
16426         (gate_optimize_bswap): New function.
16427         * tree.c (widest_int_cst_value): New function.
16428         * tree.h (widest_int_cst_value): Prototype added.
16429
16430 2009-06-14  Steven Bosscher  <steven@gcc.gnu.org>
16431
16432         * cfgcleanup.c (old_insns_match_p): Remove code to substitute
16433         REG_EQUAL/REG_EQUIV notes.
16434
16435 2009-06-14  Richard Guenther  <rguenther@suse.de>
16436
16437         PR middle-end/40389
16438         * gimple.c (walk_stmt_load_store_addr_ops): The LHS of a call
16439         has its address taken if NRV was applied and it is addressable.
16440         * tree-ssa-structalias.c (get_constraint_for_address_of): New
16441         function split out from ...
16442         (get_constraint_for_1): ... here.
16443         (handle_rhs_call): Use it to mark the return slot escaped if
16444         it is addressable and NRV was applied.
16445
16446 2009-06-13  Aldy Hernandez  <aldyh@redhat.com>
16447
16448         * config/rs6000/rs6000-protos.h (altivec_resolve_overloaded_builtin):
16449         Change first argument type to location_t.
16450         * config/rs6000/rs6000-c.c (altivec_resolve_overloaded_builtin): Same.
16451         Do not set input_location.
16452         Use loc instead of input_location throughout.
16453
16454 2009-06-13  Richard Guenther  <rguenther@suse.de>
16455
16456         PR tree-optimization/40421
16457         * tree-predcom.c (should_unroll_loop_p): Remove.
16458         (tree_predictive_commoning_loop): Use can_unroll_loop_p.
16459
16460 2009-06-13  Michael Meissner  <meissner@linux.vnet.ibm.com>
16461
16462         * config/rs6000/rs6000-c.c (altivec_resolve_overloaded_builtin):
16463         Add location argument.
16464
16465 2009-06-13  Aldy Hernandez  <aldyh@redhat.com>
16466
16467         * config/alpha/alpha.c (alpha_build_builtin_va_list): Pass location to
16468         build_decl.
16469         * config/s390/s390.c (s390_build_builtin_va_list): Same.
16470         (s390_gimplify_va_arg): Pass location to create_artificial_label.
16471         * config/spu/spu-protos.h: Add location to
16472         spu_resolve_overloaded_builtin.
16473         * config/spu/spu.c (spu_build_builtin_va_list): Pass location to
16474         spu_build_builtin_va_list.
16475         * config/spu/spu-c.c (spu_resolve_overloaded_builtin): Add location
16476         argument.  Pass location to build_function_call_vec.
16477         * config/sh/sh.c (sh_build_builtin_va_list): Pass location to
16478         build_decl.
16479         (emit_fpu_switch): Same.
16480         (sh_gimplify_va_arg_expr): Pass location to create_artificial_label.
16481         * config/xtensa/xtensa.c (xtensa_build_builtin_va_list): Pass location
16482         to build_decl and create_artificial_label.
16483         (xtensa_gimplify_va_arg_expr): Same.
16484         * config/stormy16/stormy16.c (xstormy16_build_builtin_va_list): Same.
16485         (xstormy16_gimplify_va_arg_expr): Same.
16486         * config/iq2000/iq2000.c (iq2000_expand_prologue): Same.
16487         * config/arm/arm.c (arm_build_builtin_va_list): Same.
16488         * config/mips/mips.c (mips_build_builtin_va_list): Same.
16489         (mips16_build_function_stub): Same.
16490         (mips16_build_call_stub): Same.
16491
16492 2009-06-13  Richard Earnshaw  <rearnsha@arm.com>
16493
16494         PR target/40327
16495         * arm/constraints.md (Pa, Pb): New constraints.
16496         * arm/arm.md (thumb1_addsi3): Support more complex additions.  Add a
16497         split pattern to deal with them.
16498
16499 2009-06-13  Joerg Sonnenberger  <joerg@britannica.bec.de>
16500
16501         * doc/invoke.texi: Add missing option -Wp,OPTION in list,
16502         fix index entry for -Xpreprocessor.
16503
16504 2009-06-12  Aldy Hernandez  <aldyh@redhat.com>
16505
16506         * config/rs6000/rs6000-c.c (altivec_resolve_overloaded_builtin):
16507         Add location argument to build_decl call.
16508         * config/rs6000/rs6000.c (rs6000_build_builtin_va_list): Same.
16509         (rs6000_init_builtins): Same.
16510         (spe_init_builtins): Same.
16511         (rs6000_gimplify_va_arg): Add location argument to
16512         create_artificial_label call.
16513
16514 2009-06-12  Steven Bosscher  <steven@gcc.gnu.org>
16515
16516         * timevar.def (TV_COMBINE_STACK_ADJUST): New timevar.
16517         * combine-stack-adj.c (pass_stack_adjustments): Use it.
16518         * Makefile.in: Fix GGC dependency for gcse.o.
16519
16520 2009-06-12  Aldy Hernandez  <aldyh@redhat.com>
16521
16522         * tree-pretty-print.c (dump_generic_node): Dump column numbers.
16523         * gimple-pretty-print.c (dump_gimple_stmt): Same.
16524         * gimplify.c (gimplify_modify_expr): Set location for GIMPLE_ASSIGNs
16525         created.
16526         * c-parser.c (c_parser_binary_expression): Use current column while
16527         building binary operations.
16528         * common.opt (fshow-column): Enable by default.
16529         * tree-vrp.c (check_array_ref): Use warning_at.
16530         (check_array_bounds): Use location from call back if expr has no
16531         location.
16532         * tree.h: Add location argument to maybe_fold_*.
16533         * tree-ssa-ccp.c (ccp_fold): Pass location to maybe_fold_*.
16534         (maybe_fold_offset_to_array_ref): Add location argument and use it.
16535         (maybe_fold_offset_to_component_ref): Same.
16536         (maybe_fold_offset_to_reference): Same.
16537         (maybe_fold_offset_to_address): Same.
16538         (maybe_fold_stmt_indirect): Same.
16539         (maybe_fold_stmt_addition): Same.
16540         (fold_stmt_r): Pass location to maybe_fold_*.
16541         (fold_gimple_assign): Same.
16542         * c-tree.h: Add location argument to finish_decl,
16543         default_function_array_conversion, store_init_value.
16544         * c-decl.c (define_label): Use error_at.
16545         (c_make_fname_decl): Pass location to finish_decl.
16546         (finish_decl): New location argument.
16547         (build_compound_literal): Pass location to store_init_value.
16548         (grokdeclarator): Pass location to finish_decl.
16549         (grokfield): Same.
16550         * c-typeck.c (array_to_pointer_conversion): New location argument.
16551         (function_to_pointer_conversion): Same.
16552         (default_function_array_conversion): Same.
16553         (parser_build_unary_op): Pass location to overflow_warning.
16554         (parser_build_binary_op): Same.  Use warning_at.
16555         (build_unary_op): Pass location to array_to_pointer_conversion.
16556         (build_c_cast): Pass location to digest_init.
16557         (build_modify_expr): New location argument.
16558         (convert_for_assignment): Same.
16559         (store_init_value): Same.
16560         (digest_init): Same.
16561         (output_init_element): Pass location to digest_init and
16562         array_to_pointer_conversion.
16563         (c_finish_return): Pass location to convert_for_assignment.
16564         * gimplify.c (gimplify_conversion): Pass location to
16565         maybe_fold_offset_to_address.
16566         * tree-ssa-forwprop.c (forward_propagate_addr_expr_1): Pass location
16567         to maybe_fold_stmt_addition.
16568         * c-omp.c (c_finish_omp_atomic): Pass new location to
16569         build_modify_expr.
16570         (c_finish_omp_for): Same.
16571         * c-common.c (overflow_warning): New argument.
16572         * c-common.h: New argument to build_modify_expr, overflow_warning.
16573         * c-parser.c (c_parser_declaration_or_fndef): Pass location to
16574         finish_decl.
16575         (c_parser_initializer): Pass location to
16576         default_function_array_conversion.
16577         (c_parser_initelt): Same.
16578         (c_parser_initval): Same.
16579         (c_parser_asm_operands): Same.
16580         (c_parser_expr_no_commas): Same.  Pass location to build_modify_expr.
16581         (c_parser_conditional_expression): Same.
16582         (c_parser_binary_expression): Add location info to stack.  Use it.
16583         (c_parser_unary_expression): Pass location to
16584         default_function_array_conversion, parser_build_unary_op,
16585         build_indirect_ref, c_parser_postfix_expression_after_primary.
16586         (c_parser_postfix_expression_after_primary): New location argument.
16587         Use it.
16588         (c_parser_expression_conv): Pass location to
16589         default_function_array_conversion.
16590         (c_parser_expr_list): Same.
16591         (c_parser_omp_atomic): Same.
16592         (c_parser_omp_for_loop): Same.
16593         * c-tree.h (struct c_declarator): Add comment to id_loc.
16594         (build_array_declarator): New argument.
16595         * c-decl.c (build_array_declarator): Add location argument.
16596         (grokdeclarator): Set id_loc for cdk_array.
16597         * c-parser.c (c_parser_direct_declarator_inner): Pass location to
16598         build_array_declarator.
16599         * tree.c (build_omp_clause): Add location argument.
16600         * tree.h (OMP_CLAUSE_HAS_LOCATION): New macro.
16601         (OMP_CLAUSE_LOCATION): New macro.
16602         (struct tree_omp_clause): Add location field.
16603         (build_omp_clause): Add argument.
16604         * cp/pt.c (tsubst_omp_for_iterator): Pass location to
16605         build_omp_clause.
16606         * cp/parser.c (cp_parser_omp_var_list_no_open): Same.
16607         (cp_parser_omp_clause_collapse): Same.
16608         (cp_parser_omp_clause_default): Same.
16609         (cp_parser_omp_clause_if): Same.
16610         (cp_parser_omp_clause_nowait): Same.
16611         (cp_parser_omp_clause_num_threads): Same.
16612         (cp_parser_omp_clause_ordered): Same.
16613         (cp_parser_omp_clause_schedule): Same.
16614         (cp_parser_omp_clause_untied): Same.
16615         (cp_parser_omp_for_loop): Same.
16616         (cp_parser_omp_parallel): Pass location to c_split_parallel_clauses.
16617         * c-tree.h (c_start_case): Add location argument.
16618         (c_process_expr_stmt): Same.
16619         (c_finish_goto_*): Same.
16620         * tree-parloops.c (initialize_reductions): Pass location to
16621         build_omp_clause.
16622         (create_parallel_loop): Same.
16623         * fortran/trans-openmp.c (gfc_trans_omp_variable_list): Same.
16624         (gfc_trans_omp_reduction_list): Same.
16625         (gfc_trans_omp_clauses): Same.
16626         (gfc_trans_omp_do): Same.
16627         * c-typeck.c (c_finish_goto_label): Same.
16628         (c_finish_goto_ptr): New location argument.
16629         (c_start_case): Same.
16630         (emit_side_effect_warnings): Same.
16631         (c_process_expr_stmt): Same.
16632         (c_finish_stmt_expr): Same.
16633         (c_finish_omp_clauses): Use error_at instead of error.
16634         * gimplify.c (gimplify_adjust_omp_clauses_1): Pass location to
16635         build_omp_clause.
16636         * c-omp.c (c_split_parallel_clauses): New location argument.
16637         * tree-nested.c (convert_nonlocal_reference_stmt): Pass location
16638         to build_omp_clause.
16639         (convert_local_reference_stmt): Same.
16640         (convert_gimple_call): Same.
16641         * c-common.h (c_split_parallel_clauses): New argument.
16642         * c-parser.c (c_parser_statement_after_labels): Pass location to
16643         c_finish_goto_label.
16644         (c_parser_switch_statement): Pass location to c_start_case.
16645         (c_parser_for_statement): Pass location to c_finish_expr_stmt,
16646         and c_process_expr_stmt.
16647         (c_parser_omp_variable_list): Add location argument.
16648         (c_parser_omp_clause_collapse): Pass location to build_omp_clause.
16649         (c_parser_omp_clause_default): Same.
16650         (c_parser_omp_clause_if): Same.
16651         (c_parser_omp_clause_num_threads): Same.
16652         (-c_parser_omp_clause_ordered): Same.
16653         (c_parser_omp_clause_reduction): Pass location to
16654         c_parser_omp_variable_list.
16655         (c_parser_omp_clause_schedule): Pass location to build_omp_clause.
16656         (c_parser_omp_clause_untied): Same.
16657         (c_parser_omp_for_loop): Pass location to c_process_expr_stmt.
16658         (c_parser_omp_parallel): Pass location to c_split_parallel_clauses.
16659
16660         * c-tree.h (check_for_loop_decls, undeclared_variable,
16661         build_component_ref, build_array_ref, build_external_ref,
16662         c_expr_sizeof_expr, c_expr_sizeof_type, parser_build_unary_op,
16663         build_conditional_expr, build_compound_expr, c_cast_expr,
16664         build_c_cast, build_asm_expr, c_end_compound_stmt, c_finish_stmt_expr,
16665         c_finish_return, c_finish_omp_parallel, c_finish_omp_task): New
16666         argument.
16667         * c-semantics.c (build_stmt): Same.
16668         (build_case_label): Same.
16669         * c-decl.c (c_finish_incomplete_decl): Pass location on down.
16670         (undeclared_variable): New argument.
16671         (make_label): Same.
16672         (lookup_label): Pass location on down.
16673         (define_label): Same.
16674         (finish_decl): Same.
16675         (build_compound_literal): Same.
16676         (finish_struct): Same.
16677         (finish_function): Do not set location here.
16678         (check_for_loop_decls): New argument.
16679         * tree.c (save_expr): Set location.
16680         (build_empty_stmt): New argument.
16681         * tree.h (build_empty_stmt): New argument to build_empty_stmt.
16682         (CAN_HAVE_LOCATION_P): Make sure we have a non empty node.
16683         * builtins.c (gimplify_va_arg_expr): Use locations.
16684         (expand_builtin_sync_operation): Same.
16685         * c-typeck.c (build_component_ref): New argument.
16686         (build_array_ref): Same.
16687         (build_external_ref): Same.
16688         (c_expr_sizeof_expr): Same.
16689         (c_expr_sizeof_type): Same.
16690         (parser_build_unary_op): Same.
16691         (build_conditional_expr): Same.
16692         (build_compound_expr): Pass location on down.
16693         (build_compound_expr): New argument.
16694         (build_c_cast): Same.
16695         (c_cast_expr): Same.
16696         (build_asm_expr): Same.
16697         (c_finish_return): Same.
16698         (c_process_expr_stmt): Pass location on down.
16699         (c_finish_stmt_expr): New argument.
16700         (push_clenaup): Same.
16701         (c_finish_omp_parallel): Same.
16702         (c_finish_omp_task): Same.
16703         * gimplify.c (gimplify_call_expr): Pass location on down.
16704         * c-omp.c (c_finish_omp_master): New argument.
16705         (c_finish_omp_critical): Same.
16706         (c_finish_omp_ordered): Same.
16707         (c_finish_omp_barrier): Same.
16708         (-c_finish_omp_taskwait): Same.
16709         (c_finish_omp_atomic): Same.
16710         (c_finish_omp_flush): Same.
16711         * tree-inline.c (copy_tree_body_r): Pass location on down.
16712         (inline_forbidden_p): Remove use of input_location.
16713         * c-gimplify.c (c_build_bind_expr): New argument.
16714         * c-common.c (c_common_truthvalue_conversion): Pass location on down.
16715         (c_sizeof_or_alignof_type): New argument.
16716         (c_alignof_expr): Same.
16717         (build_va_arg): Same.
16718         (c_add_case_label): Same.
16719         * c-common.h (c_sizeof_or_alignof_type, c_alignof_expr,
16720         c_sizeof, c_alignof, build_va_arg, build_stmt, build_case_label,
16721         c_build_bind_expr, objc_build_selector_expr, objc_build_throw_stmt,
16722         c_finish_omp_master, c_finish_omp_critical, c_finish_omp_ordered,
16723         c_finish_omp_barrier, c_finish_omp_atomic, c_finish_omp_flush,
16724         c_finish_omp_taskwait, c_finish_omp_for, c_split_parallel_clauses):
16725         New argument.
16726         * stub-objc.c (objc_build_selector_expr): Same.
16727         (objc_build_throw_stmt): Same.
16728         * c-parser.c (c_parser_declaration_or_fndef): Pass location on down.
16729         (c_parser_initelt): Same.
16730         (c_parser_compound_statement): Same.
16731         (c_parser_compound_statement_nostart): Same.
16732         (c_parser_label): Same.
16733         (c_parser_statement_after_labels): Same.
16734         (c_parser_if_body): Same.
16735         (c_parser_else_body): Same.
16736         (c_parser_if_statement): Same.
16737         (c_parser_switch_statement): Same.
16738         (c_parser_while_statement): Same.
16739         (c_parser_do_statement): Same.
16740         (c_parser_for_statement): Same.
16741         (c_parser_asm_statement): Same.
16742         (c_parser_conditional_expression): Same.
16743         (c_parser_binary_expression): Same.
16744         (c_parser_cast_expression): Same.
16745         (c_parser_unary_expression): Same.
16746         (c_parser_sizeof_expression): Same.
16747         (c_parser_alignof_expression): Same.
16748         (c_parser_postfix_expression): Same.
16749         (c_parser_expression): Same.
16750         (c_parser_objc_receiver): Same.
16751         (c_parser_omp_variable_list): Same.
16752         (c_parser_omp_structured_block): Same.
16753         (c_parser_omp_atomic): New argument.
16754         (c_parser_omp_barrier): Same.
16755         (c_parser_omp_critical): Same.
16756         (c_parser_omp_flush): Pass location on down.
16757         (c_parser_omp_for_loop): New argument.
16758         (c_parser_omp_for): Same.
16759         (c_parser_omp_master): Same.
16760         (c_parser_omp_ordered): Same.
16761         (c_parser_omp_sections_scope): Same.
16762         (c_parser_omp_sections): Same.
16763         (c_parser_omp_parallel): Same.
16764         (c_parser_omp_single): Same.
16765         (c_parser_omp_task): Same.
16766         (c_parser_omp_taskwait): Pass location on down.
16767         (c_parser_omp_construct): Same.
16768         (c_parser_omp_threadprivate): Same.
16769         * dwarf2asm.c, targhooks.c, optabs.c, tree.c, tree.h, target.h,
16770         builtins.c, omp-low.c, cgraphunit.c, tree-call-cdce.c,
16771         tree-ssa-alias.c, gimple-low.c, c-tree.h, expr.c, tree-parloops.c,
16772         c-decl.c, tree-eh.c, langhooks.c, function.c, stor-layout.c,
16773         c-typeck.c, gimplify.c, c-pragma.c, expmed.c, except.c, coverage.c,
16774         emit-rtl.c, cfgexpand.c, tree-mudflap.c, varasm.c, tree-nested.c,
16775         rtl.h, tree-inline.c, tree-profile.c, c-common.c, c-common.h,
16776         tree-switch-conversion.c, tree-cfg.c, ipa-struct-reorg.c, c-parser.c,
16777         config/i386/i386.c, stmt.c:
16778         Add location argument to the following function definitions and/or
16779         function calls: build_decl, objcp_start_struct, objcp_finish_struct,
16780         start_struct, finish_struct, PUSH_FIELD, create_artificial_label,
16781         cp_make_fname_decl, pushtag, implicitly_declare, c_make_fname_decl,
16782         build_compound_literal, parser_xref_tag, resolve_overloaded_builtin,
16783         do_case, c_finish_bc_stmt, build_compound_literal,
16784         build_function_call.
16785         * c-decl.c (build_compound_literal): Add location argument.
16786         Make all diagnostic calls use location.
16787         (start_struct): Same.
16788         (finish_struct): Same.
16789         (start_enum): Same.
16790         (build_enumerator): Same.
16791         (start_function): Same.
16792         (grokdeclarator): Make all diagnostic calls use location.
16793         (store_parm_decls_oldstyle): Same.
16794         * c-typeck.c (build_function_call): Add location argument.
16795         Make all diagnostic calls use location.
16796         (do_case): Same.
16797         (c_finish_bc_stmt): Same.
16798         * tree-nested.c (get_trampoline_type): Add argument.
16799         Pass location to build_decl.
16800         (lookup_tramp_for_decl): Pass location to get_trampoline_type.
16801         * rtl.h (RTL_LOCATION): New.
16802         * c-common.c (c_add_case_label): Add location argument.
16803         Make all diagnostic calls use location.
16804         * c-common.h: Add location argument to make_fname_decl, do_case,
16805         c_add_case_label, build_function_call, resolve_overloaded_builtin.
16806         * c-parser.c (c_parser_enum_specifier): Rename ident_loc to enum_loc.
16807         Set it appropriately for every case.  Pass enum_loc to start_enum
16808         call.  Pass value_loc first to build_enumerator.  Pass enum_loc to
16809         parser_xref_tag.
16810         (c_parser_struct_or_union_specifier): Save location.  Use it for
16811         start_struct, finish_struct, and parser_xref_tag.
16812
16813 2009-06-12  Ian Lance Taylor  <iant@google.com>
16814
16815         * fold-const.c (fold_unary): Rename local variable and to and_expr.
16816
16817         * c-opts.c (c_common_handle_option): For -Wc++-compat set
16818         cpp_opts->warn_cxx_operator_names.
16819
16820 2009-06-12  Andrew Pinski  <andrew_pinski@playstation.sony.com>
16821
16822         PR tree-opt/38865
16823         * tree-ssa-sccvn.c (visit_reference_op_load): If vn_reference_lookup
16824         is returns NULL and OP is a VCE, look through the VCE.
16825
16826 2009-06-12  Ian Lance Taylor  <iant@google.com>
16827
16828         PR bootstrap/40430
16829         * collect2.c (main): Use CONST_CAST2 in code inside #if
16830         LINK_ELIMINATE_DUPLICATE_LDIRECTORIES.
16831
16832 2009-06-12  Joey Ye  <joey.ye@intel.com>
16833
16834         PR middle-end/39146
16835         * cfgexpand.c (get_decl_align_unit): Update
16836         max_used_stack_slot_alignment with align instead of
16837         stack_alignment_needed.
16838
16839         * function.c (assign_stack_local_1): Update
16840         max_used_stack_slot_alignment with alignment_in_bits instead
16841         of stack_alignment_needed.
16842         (locate_and_pad_parm): Don't update max_used_stack_slot_alignment
16843         here.
16844
16845 2009-06-12  Jakub Jelinek  <jakub@redhat.com>
16846
16847         * dwarf2out.c (last_var_location_insn): New variable.
16848         (dwarf2out_end_epilogue): Clear last_var_location_insn.
16849         (dwarf2out_var_location): Don't record anything after last real
16850         insn.  Only change labels if there were any real instructions
16851         in between last note and this one, or if changed sections.
16852
16853 2009-06-11  Richard Henderson  <rth@redhat.com>
16854
16855         * alpha.c (alpha_expand_prologue): Add a REF_CFA_REGISTER
16856         note when storing the frame pointer in a register.
16857         (FRP): Don't redefine to nothing for epilogue.
16858         (alpha_expand_epilogue): Mark register and sp restores.
16859         (unicosmk_gen_dsib): Don't mark weird frame pointer adjust.
16860
16861         * config/alpha/alpha.c (alpha_emit_setcc): Fix test for
16862         when gen_lowpart is needed.
16863
16864 2009-06-11  Richard Henderson  <rth@redhat.com>
16865
16866         * dwarf2out.c (def_cfa_1): Likewise for DW_CFA_cfa_offset.
16867
16868         * dwarf2out.c (need_data_align_sf_opcode): New.
16869         (div_data_align): Move earlier.
16870         (def_cfa_1, reg_save): Use it.
16871
16872 2009-06-11  H.J. Lu  <hongjiu.lu@intel.com>
16873
16874         * config/i386/i386.c (OPTION_MASK_ISA_CRC32_SET): New.
16875         (OPTION_MASK_ISA_CRC32_UNSET): Likewise.
16876         (ix86_handle_option): Handle OPT_mcrc32.
16877         (ix86_target_string): Add -mcrc32.
16878         (bdesc_args): Enable crc32 builtins with OPTION_MASK_ISA_CRC32.
16879
16880         * config/i386/i386.h (TARGET_CRC32): New.
16881
16882         * config/i386/i386.md (sse4_2_crc32<mode>): Also check TARGET_CRC32.
16883         (sse4_2_crc32di): Likewise.
16884
16885         * config/i386/i386.opt (mcrc32): New.
16886
16887         * doc/invoke.texi: Document -mcrc32.
16888
16889 2009-06-11  Richard Henderson  <rth@redhat.com>
16890
16891         * common.opt (gdwarf-): Accept a version number.
16892         * doc/invoke.texi (gdwarf-): Update docs.
16893         * opth-gen.awk: Special case -gdwarf+ to OPT_gdwarfplus.
16894         * opts.c (common_handle_option) [OPT_gdwarf_]: Verify dwarf
16895         version level, and record it.
16896
16897         * dwarf2.h (DW_CIE_VERSION): Remove.
16898         * dwarf2out.c (DWARF_VERSION): Remove.
16899         (add_fde_cfi): Skip DW_CFA_set_loc addition for dwarf3.
16900         (output_call_frame_info): Use CIE version 3 for dwarf3,
16901         or if the return register column is out of range for version 1.
16902         (dwarf_stack_op_name): Add all dwarf3 values.
16903         (DEBUG_PUBTYPES_SECTION): New.
16904         (size_of_die) [dw_val_class_die_ref]: Handle DW_FORM_ref_addr
16905         encoding change for dwarf3.
16906         (output_die) [dw_val_class_die_ref]: Likewise.
16907         (output_compilation_unit_header): Emit correct version for dwarf3.
16908         (output_line_info): Likewise.
16909         (output_pubnames): Update for DWARF_VERSION removal.
16910         (output_aranges): Likewise.
16911         (gen_subprogram_die): Emit DW_OP_call_frame_cfa if emitting dwarf3.
16912         (dwarf2out_init): Don't ifdef DEBUG_PUBTYPES_SECTION.
16913         (dwarf2out_finish): Likewise.
16914
16915 2009-06-11  David Daney  <ddaney@caviumnetworks.com>
16916
16917         * system.h (gcc_assert, gcc_unreachable): Revert accidental commit
16918         in r148403.
16919
16920 2009-06-11  David Daney  <ddaney@caviumnetworks.com>
16921
16922         PR c/39252
16923         * doc/extend.texi ( __builtin_unreachable): Document new builtin.
16924         * builtins.c (expand_builtin_unreachable): New function.
16925         (expand_builtin): Handle BUILT_IN_UNREACHABLE case.
16926         * builtins.def (BUILT_IN_UNREACHABLE): Add new builtin.
16927         * cfgcleanup.c (try_optimize_cfg): Delete empty blocks with no
16928         successors.
16929         * cfgrtl.c (rtl_verify_flow_info): Handle empty blocks when
16930         searching for missing barriers.
16931
16932 2009-06-11  Francois-Xavier Coudert  <fxcoudert@gcc.gnu.org>
16933
16934         * config/darwin.h (LINK_COMMAND_SPEC): Adjust spec to link libcov
16935         when -fprofile-generate* was passed.
16936         * config/darwin9.h (LINK_COMMAND_SPEC): Likewise.
16937
16938 2009-06-11  Anthony Green  <green@moxielogic.com>
16939
16940         * config/moxie/moxie.md: Define length attribute for all instructions.
16941         (rCC): Define.
16942         (*b<cond:code>): Support limited branch ranges for new PC-relative
16943         branch instructions.
16944         * config/moxie/moxie.h (HAS_LONG_UNCOND_BRANCH): Define.
16945
16946 2009-06-11  Jakub Jelinek  <jakub@redhat.com>
16947
16948         * config/i386/i386.c (min_insn_size): Use get_attr_length
16949         for normal insns other than TYPE_MULTI, TYPE_OTHER and TYPE_FCMP.
16950         For __asm return 0.
16951
16952         * config/i386/i386.c (ix86_pad_returns): Use emit_jump_insn_before
16953         instead of emit_insn_before.
16954
16955 2009-06-10  Ian Lance Taylor  <iant@google.com>
16956
16957         PR bootstrap/40408
16958         * graphite.c (add_conditions_to_domain): Change SWITCH_EXPR to
16959         GIMPLE_SWITCH.
16960
16961 2009-06-10  Revital Eres  <eres@il.ibm.com>
16962
16963         * passes.c (init_optimization_passes): Reschedule
16964         predictive-commoning pass before complete unroll pass.
16965
16966 2009-06-10  Martin Jambor  <mjambor@suse.cz>
16967
16968         * cgraph.c (cgraph_node_can_be_local_p): New function.
16969         (cgraph_make_node_local): New function.
16970         * cgraph.h (cgraph_node_can_be_local_p): Declare.
16971         (cgraph_make_node_local): Declare.
16972
16973 2009-06-10  Nathan Froyd  <froydnj@codesourcery.com>
16974
16975         * tree.h (tree_base): Add packed_flag and user_align fields.
16976         Decrease size of spare field.
16977         (TYPE_USER_ALIGN): Use user_align from tree_base.
16978         (DECL_USER_ALIGN): Likewise.
16979         (TYPE_PACKED): Use packed_flag from tree_base.
16980         (DECL_PACKED): Likewise.
16981         (tree_type): Delete packed_flag and user_align fields.  Widen
16982         precision field.  Widen mode field and shuffle fields to align
16983         mode on an 8-bit boundary.
16984         (tree_decl_common): Delete decl_flag_1 and user_align fields.
16985         Renumber decl_flag_* fields.  Fix comments.  Widen
16986         decl_common_unused field.
16987         (DECL_HAS_VALUE_EXPR_P): Adjust for renumbering of decl_flag_* fields.
16988         (DECL_EXTERNAL): Likewise.
16989         (DECL_BIT_FIELD): Likewise.
16990         (DECL_NONADDRESSABLE_P): Likewise.
16991         (TYPE_DECL_SUPRESS_DEBUG): Likewise.
16992         * config/arm/arm-modes.def (XImode): Make it an INT_MODE.
16993
16994 2009-06-10  Ian Lance Taylor  <iant@google.com>
16995
16996         * vec.h (DEF_VEC_ALLOC_I): Use DEF_VEC_NONALLOC_FUNCS_I.
16997         (DEF_VEC_ALLOC_P): Use DEF_VEC_NONALLOC_FUNCS_P.
16998         (DEF_VEC_ALLOC_O): Use DEF_VEC_NONALLOC_FUNCS_O.
16999         (DEF_VEC_ALLOC_FUNC_P): Only define VEC_OP (T,A,alloc).
17000         (DEF_VEC_NONALLOC_FUNCS_P): New macro, broken out of old
17001         DEF_VEC_ALLOC_FUNC_P.
17002         (DEF_VEC_ALLOC_FUNC_O): Only define VEC_OP (T,A,alloc).
17003         (DEF_VEC_NONALLOC_FUNCS_O): New macro, broken out of old
17004         DEF_VEC_ALLOC_FUNC_O.
17005         (DEF_VEC_ALLOC_FUNC_I): Only define VEC_OP (T,A,alloc).
17006         (DEF_VEC_NONALLOC_FUNCS_I): New macro, broken out of old
17007         DEF_VEC_ALLOC_FUNC_I.
17008         (vec_stack_p_reserve, vec_stack_p_reserve_exact): Declare.
17009         (vec_stack_p_reserve_exact_1): Declare.
17010         (vec_stack_o_reserve, vec_stack_o_reserve_exact): Declare.
17011         (vec_stack_free): Declare.
17012         (VEC_stack_alloc): Define.
17013         (DEF_VEC_ALLOC_P_STACK, DEF_VEC_ALLOC_FUNC_P_STACK): Define.
17014         (DEF_VEC_ALLOC_O_STACK, DEF_VEC_ALLOC_FUNC_O_STACK): Define.
17015         (DEF_VEC_ALLOC_I_STACK, DEF_VEC_ALLOC_FUNC_I_STACK): Define.
17016         * vec.c (void_p): New type.  Call DEF_VEC_P and DEF_VEC_ALLOC_P
17017         for void_p.
17018         (stack_vecs): New static variable.
17019         (vec_stack_p_reserve_exact_1): New function.
17020         (vec_stack_o_reserve_1): New static function.
17021         (vec_stack_p_reserve, vec_stack_p_reserve_exact): New functions.
17022         (vec_stack_o_reserve, vec_stack_o_reserve_exact): New functions.
17023         (vec_stack_free): New function.
17024         * df-scan.c (df_ref): Use DEF_VEC_P and DEF_VEC_ALLOC_P_STACK.
17025         (VEC_df_ref_stack_alloc): Define.
17026         (df_mw_hardreg_ptr): New type.  Use DEF_VEC_P and
17027         DEF_VEC_ALLOC_P_STACK.
17028         (VEC_df_mw_hardreg_ptr_stack_alloc): Define.
17029         (struct df_collection_rec): Change _vec fields to VEC.  Remove
17030         _use fields.
17031         (df_free_collection_rec): Adjust for new fields.
17032         (df_insn_rescan): Use new df_collection_rec fields.
17033         (df_notes_rescan, df_canonize_collection_rec): Likewise.
17034         (df_ref_create_structure, df_ref_record): Likewise.
17035         (df_get_conditional_uses, df_get_call_refs): Likewise.
17036         (df_insn_refs_collect, df_bb_refs_collect): Likewise.
17037         (df_bb_refs_record, df_record_entry_block_defs): Likewise.
17038         (df_record_exit_block_uses, df_bb_verify): Likewise.
17039         (df_swap_refs): Change ref_vec parameter to VEC.  Change all callers.
17040         (df_sort_and_compress_refs): Change ref_vec parameter to VEC.
17041         Remove count parameter.  Change return type to void.  Change all
17042         callers.
17043         (df_sort_and_compress_mws): Change mw_vec parameter to VEC.
17044         Remove count parameter.  Change return type to void.  Change all
17045         callers.
17046         (df_install_refs): Change old_vec parameter to VEC.  Remove count
17047         parameter.  Change all callers.
17048         (df_install_mws): Change old_vec parameter to VEC.  Remove count
17049         parameter.  Change all callers.
17050         (df_refs_verify): Change new_rec parameter to VEC.  Change call
17051         callers.
17052         (df_mws_verify): Likewise.
17053
17054 2009-06-10  Alexandre Oliva  <aoliva@redhat.com>
17055
17056         * gcc.c (compare_files): Cast munmap argumento to caddr_t.
17057
17058 2009-06-10  H.J. Lu  <hongjiu.lu@intel.com>
17059
17060         * doc/extend.texi: Add description for __builtin_ia32_crc32di.
17061
17062 2009-06-10  Anthony Green  <green@moxielogic.com>
17063
17064         * config/moxie/crti.asm: New file.
17065         * config/moxie/crtn.asm: New file.
17066         * config/moxie/moxie.c: New file.
17067         * config/moxie/moxie.h: New file.
17068         * config/moxie/sfp-machine.h: New file.
17069         * config/moxie/moxie-protos.h: New file.
17070         * config/moxie/t-moxie: Created.
17071         * config/moxie/t-moxie-softfp: Created.
17072         * config/moxie/moxie.md: Created.
17073         * config/moxie/constraints.md: Created.
17074         * config.gcc: Add moxie support.
17075         * doc/md.texi (Machine Constraints): Add moxie constraints.
17076         * doc/contrib.texi (Contributors): Mention moxie port.
17077         * doc/install.texi (Specific): Mention the moxie port.
17078
17079 2009-06-09  Ian Lance Taylor  <iant@google.com>
17080
17081         * system.h (HAVE_DESIGNATED_INITIALIZERS): Don't define if
17082         compiling with C++.
17083         * optabs.c (optab_table): Only use designated initializers if
17084         HAVE_DESIGNATED_INITIALIZERS is defined.
17085         (convert_optab_table): Likewise.
17086         (init_optabs): Always call init_insn_codes if
17087         HAVE_DESIGNATED_INITIALIZERS is not defined.
17088
17089 2009-06-09  Ian Lance Taylor  <iant@google.com>
17090
17091         * targhooks.c (default_builtin_vectorized_function): Change fn
17092         parameter to unsigned int.
17093         (default_builtin_vectorized_conversion): Change code parameter to
17094         unsigned int.
17095         (default_builtin_reciprocal): Change fn parameter to unsigned int.
17096         * targhooks.h: Update declarations.
17097         * config/rs6000/rs6000.c (rs6000_builtin_conversion): Change code
17098         parameter to unsigned int.
17099
17100         * c-typeck.c (comptypes_check_enum_int): New static function.
17101         (comptypes_internal): Add enum_and_int_p parameter.  Change all
17102         callers.
17103         (comp_target_types): Add location parameter.  Change all callers.
17104         (tagged_types_tu_compatible_p): Add enum_and_int_p parameter.
17105         Change all callers.
17106         (function_types_compatible_p, type_lists_compatible_p): Likewise.
17107         (build_conditional_expr): Add colon_loc parameter.  Change all
17108         callers.
17109         (convert_for_assignment): Add location parameter.  Change all callers.
17110         * c-parser.c (c_parser_conditional_expression): Pass location of
17111         colon to build_conditional_expr.
17112         * c-tree.h (build_conditional_expr): Update declaration.
17113
17114 2009-06-09  Sebastian Pop  <sebastian.pop@amd.com>
17115
17116         * graphite.c: Revert previous patch.
17117
17118 2009-06-09  Sebastian Pop  <sebastian.pop@amd.com>
17119
17120         PR bootstrap/40103
17121         * graphite.c: Remove pragma GCC diagnostic warning "-Wc++-compat".
17122
17123 2009-06-09  Ghassan Shobaki  <ghassan.shobaki@amd.com>
17124
17125         * tree-ssa-loop-prefetch.c
17126         (loop_prefetch_arrays): Fixed a portability problem in printf format
17127         string.
17128
17129 2009-06-09  Martin Jambor  <mjambor@suse.cz>
17130
17131         PR tree-optimization/40351
17132         * tree-sra.c (propagate_subacesses_accross_link): Check that a
17133         refrence to a potential artifical subaccess can be constructed.
17134
17135 2009-06-08  Kaz Kojima  <kkojima@gcc.gnu.org>
17136
17137         * config/sh/sh-protos.h (sh_optimization_options): Declare.
17138         (sh_override_options): Likewise.
17139         * config/sh/sh.c: Include params.h.
17140         (sh_optimization_options): New.
17141         (sh_override_options): Likewise.
17142         * config/sh/sh.c (OPTIMIZATION_OPTIONS): Use sh_optimization_options.
17143         (OVERRIDE_OPTIONS): Use sh_override_options.
17144
17145 2009-06-08  Jakub Jelinek  <jakub@redhat.com>
17146
17147         * dwarf2out.c (emit_cfa_remember): New variable.
17148         (add_fde_cfi): If emit_cfa_remember, recurse to add
17149         DW_CFA_remember_state first.
17150         (dwarf2out_begin_epilogue): Don't add_fde_cfi DW_CFA_remember_state,
17151         instead just set emit_cfa_remember.
17152
17153 2009-06-08  Jan Hubicka  <jh@suse.cz>
17154
17155         PR debug/40126
17156         * dwarf2out.c (dwarf2out_abstract_function): Free decl_loc_table.
17157
17158 2009-06-08  Jan Hubicka  <jh@suse.cz>
17159
17160         PR middle-end/39834
17161         * cgraphunit.c (save_inline_function_body): Do not copy transform
17162         hooks for saved inline bodies.
17163         * ipa-passes.c (do_per_function): Do not add the hoks multiple times
17164         for given function.
17165
17166 2009-06-08  Adam Nemet  <anemet@caviumnetworks.com>
17167
17168         * jump.c (returnjump_p): Handle delayed branches.  Add missing
17169         function comment.
17170
17171 2009-06-08  Jan Hubicka  <jh@suse.cz>
17172
17173         PR middle-end/40102
17174         * cgraph.c (cgraph_create_edge_including_clones): Also asume that the
17175         original node might've been modified.
17176         * tree-inline.c (copy_bb): Do not assume that all clones are the same.
17177
17178 2009-06-08  Jakub Jelinek  <jakub@redhat.com>
17179
17180         * tree-object-size.c (addr_object_size): Add OSI argument.
17181         Handle also INDIRECT_REF with SSA_NAME inside of it as base address.
17182         (compute_builtin_object_size, expr_object_size): Adjust callers.
17183         (plus_stmt_object_size): Call addr_object_size instead of
17184         compute_builtin_object_size.
17185
17186 2009-06-08  Ghassan Shobaki  <ghassan.shobaki@amd.com>
17187             Dwarakanath Rajagopal  <dwarak.rajagopal@amd.com>
17188
17189         * tree-ssa-loop-prefetch.c
17190         (gather_memory_references): Introduced a counter for the number of
17191         memory references.
17192         (anything_to_prefetch_p): Introduced a counter for the number of
17193         prefetches.
17194         (is_loop_prefetching_profitable): New function with a cost model
17195         for prefetching.
17196         (loop_prefetch_arrays): Use the new cost model to determine if
17197         prefetching is profitable.
17198         * params.def (MIN_INSN_TO_PREFETCH_RATIO,
17199         PREFETCH_MIN_INSN_TO_MEM_RATIO): New parameters.
17200         * params.h (MIN_INSN_TO_PREFETCH_RATIO,
17201         PREFETCH_MIN_INSN_TO_MEM_RATIO): New parameters.
17202         * doc/invoke.texi (MIN_INSN_TO_PREFETCT_RATIO,
17203         PREFETCH_MIN_INSN_TO_MEM_RATIO): New parameters.
17204
17205 2009-06-08  Michael Matz  <matz@suse.de>
17206
17207         PR debug/40012
17208         * cfgexpand.c (set_rtl): Store place also in DECL_RTL, if all
17209         partitions use the same.
17210         (expand_one_var): Deal with DECL_RTL sometimes begin set also
17211         for basevars of SSA_NAMEs.
17212         (expand_used_vars): Reset TREE_USED for basevars of SSA_NAMEs,
17213         to not expand them twice.
17214         (gimple_expand_cfg): Clear DECL_RTL for those decls that have
17215         multiple places.
17216
17217 2009-06-08  Alexandre Oliva  <aoliva@redhat.com>
17218
17219         * common.opt (fcompare-debug=, fcompare-debug-second): New.
17220         (fdump-final-insns=, gtoggle): New.
17221         * doc/invoke.texi: Document them.
17222         * final.c (rest_of_clean_state): Dump final insn stream.
17223         * gcc.c (invoke_as): Hook in -fcompare-debug.
17224         (static_spec_functions): Add compare-debug-dump-opt,
17225         compare-debug-self-opt and compare-debug-auxbase-opt.
17226         (compare_debug, compare_debug_second, compare_debug_opt): New.
17227         (switches_debug_check, n_switches_debug_check): New.
17228         (debug_auxbase_opt, debug_check_temp_file): New.
17229         (process_command): Handle -fno-compare-debug, -fcompare-debug and
17230         -fcompare-debug=*.
17231         (do_self_spec): Handle arguments after switches.
17232         (do_spec_1): Add .gk extension to temp file basenames for compare.
17233         (check_live_switch): Take SWITCH_IGNORE into account, and earlier.
17234         (cc1_options): Use it instead of normal auxbase computation for
17235         the second compare-debug compilation.
17236         (compare_files): New.
17237         (main): Set up and implement compare debug mode.
17238         (compare_debug_dump_opt_spec_function): New.
17239         (compare_debug_self_opt_spec_function): New.
17240         (compare_debug_auxbase_opt_spec_function): New.
17241         * toplev.c (process_options): Handle flag_gtoggle,
17242         flag_dump_final_insns.
17243         * coverage.c (coverage_begin_output): Don't overwrite .gcno file
17244         during -fcompare-debug-second compilation.
17245
17246 2009-06-07  Ian Lance Taylor  <iant@google.com>
17247
17248         * dwarf2.h (enum dwarf_location_atom): Add INTERNAL_DW_OP_tls_addr.
17249         * dwarf2out.c (INTERNAL_DW_OP_tls_addr): Don't #define.
17250
17251         * c-common.c (c_do_switch_warnings): Don't exit early for -Wswitch
17252         with no default node.  Change warning with %H to warning_at.
17253         Don't clear warn_switch around case checking.
17254         * doc/invoke.texi (Warning Options): Clarify distinction between
17255         -Wswitch and -Wswitch-enum.
17256
17257 2009-06-07  Bernhard Reutner-Fischer  <aldot@gcc.gnu.org>
17258
17259         * tree-pass.h (TODO_update_ssa_any): Document internal use only.
17260
17261 2009-06-07  Bernhard Reutner-Fischer  <aldot@gcc.gnu.org>
17262
17263         * gbl-ctors.h: Add header guard.
17264
17265 2009-06-07  Bernhard Reutner-Fischer  <aldot@gcc.gnu.org>
17266
17267         * tree-flow.h (make_value_handle, set_value_handle, sort_vuses,
17268         sort_vuses_heap, vn_lookup_or_add, vn_lookup_or_add_with_stmt,
17269         vn_lookup_or_add_with_vuses, vn_add, vn_add_with_vuses,
17270         vn_lookup_with_stmt, vn_lookup, vn_lookup_with_vuses): Remove
17271         prototypes for removed functions.
17272         (expressions_equal_p): Move to ...
17273         * tree-ssa-sccvn.h: ... here and ...
17274         * matrix-reorg.c: ... adjust includes.
17275
17276 2009-06-07  Bernhard Reutner-Fischer  <aldot@gcc.gnu.org>
17277
17278         * ipa-struct-reorg.c (do_reorg_1): Fix whitespace in dump output.
17279
17280 2009-06-07  Bernhard Reutner-Fischer  <aldot@gcc.gnu.org>
17281
17282         * c-decl.c (finish_decl): Use bool for variable was_incomplete.
17283         (finish_function): Remove erroneous whitespace.
17284
17285 2009-06-07  Bernhard Reutner-Fischer  <aldot@gcc.gnu.org>
17286
17287         * tree-cfg.c (gimple_merge_blocks): Commentary typo fix.
17288         (verify_stmts): Print statement who's gimple_bb is set to a wrong BB
17289
17290 2009-06-07  Bernhard Reutner-Fischer  <aldot@gcc.gnu.org>
17291
17292         * errors.c (internal_error): Commentary typo fix.
17293         * gimple-iterator.c (gsi_insert_seq_on_edge): Ditto.
17294         * tree-ssa-pre.c: Ditto.
17295
17296 2009-06-07  Bernhard Reutner-Fischer  <aldot@gcc.gnu.org>
17297
17298         * basic-block.h (ENTRY_BLOCK, EXIT_BLOCK): Document that neither of
17299         them is supposed to hold actual statements.
17300
17301 2009-06-06  Ian Lance Taylor  <iant@google.com>
17302
17303         * doc/extend.texi (Attribute Syntax): Document that C++ labels on
17304         empty statements can now have attributes.
17305
17306 2009-06-05  Shujing Zhao  <pearly.zhao@oracle.com>
17307
17308         * config/mips/mips.c: Use REG_P and CONST_INT_P where applicable.
17309         * config/mips/mips.md: Ditto.
17310
17311 2009-06-05  Nathan Froyd  <froydnj@codesourcery.com>
17312
17313         * config/rs6000/eabi.asm (__eabi_convert): Don't define if
17314         _RELOCATABLE.
17315         (__eabi_uconvert): Likewise.
17316
17317 2009-06-05  Nathan Froyd  <froydnj@codesourcery.com>
17318
17319         * config/rs6000/ppc-asm.h: Protect auto-host.h inclusion and
17320         CFI_* definitions with IN_GCC.
17321
17322 2009-06-05  David Edelsohn  <edelsohn@gnu.org>
17323
17324         * xcoffout.h (xcoffout_source_line): Update prototype.
17325
17326 2009-06-05  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
17327
17328         * builtins.c (do_mpc_ckconv, do_mpc_arg1): Use
17329         mpc_realref/mpc_imagref instead of MPC_RE/MPC_IM.
17330
17331 2009-06-05  Jakub Jelinek  <jakub@redhat.com>
17332
17333         PR middle-end/40340
17334         * tree-ssa-live.c (remove_unused_scope_block_p): Don't prune
17335         inlined_function_outer_scope_p blocks for artificial inlines
17336         even at -g0/-g1.
17337         * tree.c (tree_nonartificial_location): Rewrite using
17338         block_nonartificial_location.
17339
17340 2009-06-05  Revital Eres  <eres@il.ibm.com>
17341             Leehod Baruch  <leehod@il.ibm.com>
17342
17343         * expr.c (expand_assignment): Expand MISALIGNED_INDIRECT_REF.
17344         (expand_expr_real_1): Remove comment.
17345         * tree-vect-data-refs.c (vect_enhance_data_refs_alignment):
17346         Vectorize misaligned access when the target supports it.
17347         (vect_supportable_dr_alignment): Check for unaligned access support.
17348         * tree-vect-stmts.c (vectorizable_store): Generate misaligned store
17349         and remove asset.
17350
17351 2009-06-05  Julian Brown  <julian@codesourcery.com>
17352
17353         * config/arm/ieee754-df.S (cmpdf2): Avoid writing below SP.
17354         * config/arm/ieee754-sf.S (cmpsf2): Likewise.
17355
17356 2009-06-05  Richard Guenther  <rguenther@suse.de>
17357
17358         PR bootstrap/40350
17359         * dwarf2out.c (dwarf2out_begin_function): Mark discriminator
17360         as possibly unused.
17361
17362 2009-06-05  Jakub Jelinek  <jakub@redhat.com>
17363
17364         * config/s390/s390.c (global_not_special_regno_p): New static inline.
17365         (save_gprs): Don't tell unwinder when a global register is saved.
17366         (s390_emit_epilogue): Emit needed epilogue unwind info.
17367
17368 2009-06-05  Alexandre Oliva  <aoliva@redhat.com>
17369
17370         * dwarf2out.c (deferred_asm_name): New.
17371         (add_name_and_src_coords_attributes): Defer creation of
17372         DW_AT_MIPS_linkage_name attribute if DECL_ASSEMBLER_NAME was not
17373         computed yet.
17374         (move_linkage_attr): New.
17375         (dwarf2out_finish): Revisit deferrals and emit attributes at the
17376         right place.
17377
17378 2009-06-05  Alexandre Oliva  <aoliva@redhat.com>
17379
17380         * tree-nested.c (finalize_nesting_tree_1): Declare the
17381         frame_decl in the binding tree.
17382
17383 2009-06-04  Cary Coutant  <ccoutant@google.com>
17384
17385         * basic-block.h (struct basic_block_def): Add discriminator field.
17386         * dbxout.c (dbxout_source_line): Add new parameter.  Change all
17387         callers.
17388         * debug.c (do_nothing_debug_hooks): Add additional entry.
17389         (debug_nothing_int_charstar_int): New function.
17390         * debug.h (struct gcc_debug_hooks): Add parameter to source_line hook.
17391         (debug_nothing_int_charstar_int): New declaration.
17392         * dwarf2out.c (dwarf2out_source_line): Add new parameter.  Write
17393         discriminator value in .loc directive.
17394         * final.c (last_discriminator): New variable.
17395         (discriminator): New variable.
17396         (final_start_function): Initialize above variables, pass current
17397         discriminator to debug hook.
17398         (notice_source_line): Check for discriminator change.
17399         * gimple-pretty-print.c (dump_bb_header): Print discriminator value.
17400         * sdbout.c (sdbout_source_line): New parameter.
17401         * tree-cfg.c (struct locus_discrim_map): New structure type.
17402         (discriminator_per_locus): New hash table.
17403         (build_gimple_cfg): Allocate and free discriminator hash table.
17404         (make_edges): Call assign_discriminator.
17405         (locus_map_hash): New function.
17406         (locus_map_eq): New function.
17407         (next_discriminator_for_locus): New function.
17408         (same_line_p): New function.
17409         (assign_discriminator): New function.
17410         (make_cond_expr_edges): Call assign_discriminator.
17411         (make_gimple_switch_edges): Likewise.
17412         (first_non_label_stmt): New function.
17413         * vmsdbgout.c (vmsdbgout_source_line): Add new parameter.  Change
17414         all callers.
17415         * xcoffout.c (xcoffout_source_line): Add new parameter.
17416
17417         * configure.ac (gcc_cv_as_discriminator): New configury check for
17418         gas support for discriminator.
17419         * configure: Regenerate.
17420         * config.in: Regenerate.
17421
17422 2009-06-04  Ramana Radhakrishnan  <ramana.radhakrishnan@arm.com>
17423
17424         * config/arm/arm.c (thumb2_legitimate_index_p): Initialize
17425         val after checking for integers.
17426
17427 2009-06-04  Uros Bizjak  <ubizjak@gmail.com>
17428
17429         * config/i386/i386.h (X86_64_MS_REGPARM_MAX): Rename from
17430         X64_REGPARM_MAX.
17431         (REGPARM_MAX): Use X86_64_MS_REGPARM_MAX.
17432         (X86_64_MS_SSE_REGPARM_MAX): Rename from X64_SSE_REGPARM_MAX.
17433         (SSE_REGPARM_MAX): Use X86_64_MS_SSE_REGPARM_MAX.
17434         * config/i386/i386.c: Use X86_64_MS_REGPARM_MAX instead of
17435         X64_REGPARM_MAX.  Use X86_64_MS_SSE_REGPARM_MAX instead of
17436         X64_SSE_REGPARM_MAX.
17437         * config/i386/i386.md: Use X86_64_MS_SSE_REGPARM_MAX instead of
17438         X64_SSE_REGPARM_MAX.
17439
17440 2009-06-04  Alexandre Oliva  <aoliva@redhat.com>
17441
17442         * gcc.c (report_times_to_file): New.
17443         (execute): Implement it.
17444         (process_command): Support -time=.
17445         * doc/invoke.texi: Document it.
17446
17447 2009-06-04  Alexandre Oliva  <aoliva@redhat.com>
17448
17449         * tree-ssa-live.c (remove_unused_scope_block_p): Keep variables
17450         that have value exprs.
17451
17452 2009-06-04  Alexandre Oliva  <aoliva@redhat.com>
17453
17454         * dwarf2asm.c (dw2_force_const_mem): Defer creation of
17455         declarations for constants until...
17456         (dw2_output_indirect_constant_1): ... this point.
17457
17458 2009-06-04  Richard Earnshaw  <rearnsha@arm.com>
17459
17460         PR target/10242
17461         * arm.md (arm_addsi3): Don't try to split an add with an
17462         eliminable register until after reload has completed.
17463
17464 2009-06-03  Ian Lance Taylor  <iant@google.com>
17465
17466         * dummy-checksum.c (executable_checksum): Use EXPORTED_CONST.
17467         * genattrtab.c (write_length_unit_log): Likewise.
17468         * genchecksum.c (dosum): Likewise.
17469         * gengtype.c (write_rtx_next): Likewise.
17470         (finish_root_table, write_roots): Likewise.
17471         * gimple.c (gimple_ops_offset_): Likewise.
17472         * tree-nomudflap.c (gt_ggc_r_gt_tree_mudflap_h): Likewise.
17473         * config/arc/arc.c (arc_attribute_table): Likewise.
17474         * config/arm/arm.c (arm_attribute_table): Likewise.
17475         * config/avr/avr.c (avr_attribute_table): Likewise.
17476         * config/crx/crx.c (crx_attribute_table): Likewise.
17477         * config/m32r/m32r.c (m32r_attribute_table): Likewise.
17478         * config/m68hc11/m68hc11.c (m68hc11_attribute_table): Likewise.
17479         * config/mcore/mcore.c (mcore_attribute_table): Likewise.
17480         * config/rs6000/rs6000.c (rs6000_attribute_table): Likewise.
17481         * config/sh/sh.c (sh_attribute_table): Likewise.
17482         * config/sparc/sparc.c (sparc_attribute_table): Likewise.
17483         * config/spu/spu.c (spu_attribute_table): Likewise.
17484         * config/v850/v850.c (v850_attribute_table): Likewise.
17485
17486         * config/alpha/alpha.c (vms_attribute_table): Make static.
17487         * config/bfin/bfin.c (bfin_attribute_table): Likewise.
17488         * config/h8300/h8300.c (h8300_attribute_table): Likewise.
17489         * config/mips/mips.c (mips_attribute_table): Likewise.
17490
17491         * Makefile.in (dummy-checksum.o): Depend upon $(CONFIG_H) and
17492         $(SYSTEM_H).
17493         (cc1-checksum.o): Likewise.
17494
17495 2009-06-03  Steve Ellcey  <sje@cup.hp.com>
17496
17497         * config/ia64/vect.md (*movv2sf_internal): Handle big endian case.
17498
17499 2009-06-03  Jakub Jelinek  <jakub@redhat.com>
17500
17501         * config/rs6000/rs6000.c (rs6000_emit_stack_reset): Return generated
17502         insn if it is changing sp.  Use gen_add3_insn instead of
17503         conditionally gen_addsi3 and gen_adddi3.
17504         (offset_below_red_zone_p): New static inline function.
17505         (rs6000_emit_epilogue): Emit needed epilogue unwind info.
17506         Use gen_add3_insn instead of conditionally gen_addsi3 and gen_adddi3.
17507         * config/rs6000/ppc-asm.h: Include auto-host.h.
17508         (CFI_STARTPROC, CFI_ENDPROC, CFI_DEF_CFA_REGISTER, CFI_OFFSET,
17509         CFI_RESTORE): Define.
17510         * config/rs6000/crtresxgpr.asm: Add unwind info.
17511         * config/rs6000/crtresxfpr.asm: Likewise.
17512         * config/rs6000/crtresgpr.asm: Likewise.
17513         * config/rs6000/crtresfpr.asm: Likewise.
17514         * config/rs6000/crtsavgpr.asm: Likewise.
17515         * config/rs6000/crtsavfpr.asm: Likewise.
17516
17517         * dwarf2out.c (output_cfi_directive): Pass 1 instead of 0 to second
17518         argument of DWARF2_FRAME_REG_OUT macros.
17519
17520 2009-06-03  Julian Brown  <julian@codesourcery.com>
17521
17522         * config/arm/arm.c (arm_hard_regno_mode_ok): Permit values of four
17523         words or less (including TImode) in core registers.
17524
17525 2009-06-03  Richard Guenther  <rguenther@suse.de>
17526
17527         PR middle-end/40328
17528         * fold-const.c (fold_convert): Fold the build COMPLEX_EXPR.
17529
17530 2009-06-03  Andrey Belevantsev  <abel@ispras.ru>
17531
17532         * statistics.c (statistics_counter_event): Do not record event
17533         in pass dump if its number == -1.
17534         (curr_statistics_hash): Add assert that we never get passes
17535         with static number == -1.
17536
17537 2009-06-03  Richard Guenther  <rguenther@suse.de>
17538             Andrey Belevantsev  <abel@ispras.ru>
17539
17540         * cfgexpand.c (discover_nonconstant_array_refs_r): Make only
17541         non-BLKmode arrays addressable.
17542
17543 2009-06-03  Maxim Kuvyrkov  <maxim@codesourcery.com>
17544
17545         * config/m68k/linux.h (HAVE_GAS_BALIGN_AND_P2ALIGN): Move to ...
17546         * config/m68k/m68k.h: ... here.
17547
17548 2009-06-03  Martin Jambor  <mjambor@suse.cz>
17549
17550         PR tree-optimization/40323
17551         * ipa-prop.c (get_ssa_def_if_simple_copy): Break if not single
17552         assignment.
17553
17554 2009-06-03  Richard Guenther  <rguenther@suse.de>
17555
17556         * tree-ssa-sccvn.c (copy_reference_ops_from_ref): Use DECL_SIZE
17557         consistently.
17558
17559 2009-06-03  Shujing Zhao  <pearly.zhao@oracle.com>
17560
17561         * config/sh/predicates.md: Use REG_P, MEM_P, CONST_INT_P, LABEL_P,
17562         JUMP_P, CALL_P, NONJUMP_INSN_P, NOTE_P, BARRIER_P and
17563         JUMP_TABLE_DATA_P where applicable.
17564         * config/sh/sh.c: Ditto.
17565         * config/sh/sh.h: Ditto.
17566         * config/sh/sh.md: Ditto.
17567         * config/sh/symbian.c: Ditto.
17568
17569 2009-06-03  Uros Bizjak  <ubizjak@gmail.com>
17570
17571         * config/i386/driver-i386.c (describe_cache): Optimize
17572         concatenation of strings.  Use snprintf instead of sprintf.
17573         (host_detect_local_cpu): Ditto.  Ignore -march and -mtune for native
17574         target when not compiling with GCC.
17575
17576 2009-06-02  Kaz Kojima  <kkojima@gcc.gnu.org>
17577
17578         * config/sh/sh.c: Revert last change.
17579         (sh_expand_epilogue): Emit a blockage insn before the frame
17580         pointer adjustment unconditionally.
17581
17582 2009-06-02  Richard Sandiford  <r.sandiford@uk.ibm.com>
17583
17584         * config/pa/pa-hpux.h (LINK_SPEC): Remove "%<fwhole-program".
17585         * config/pa/pa-hpux10.h (LINK_SPEC): Likewise.
17586         * config/pa/pa-hpux11.h (LINK_SPEC): Likewise.
17587         * gcc.c (set_collect_gcc_options): Don't add -fwhole-program
17588         to COLLECT_GCC_OPTIONS.
17589
17590 2009-06-02  Richard Sandiford  <r.sandiford@uk.ibm.com>
17591
17592         * collect2.c (target_system_root): New variable.
17593         (main): Handle --sysroot=.
17594         (ignore_library): Strip the sysroot from the library path.
17595
17596 2009-06-02  Richard Sandiford  <r.sandiford@uk.ibm.com>
17597
17598         * Makefile.in (COLLECT2_OBJS): Add collect2-aix.o.
17599         (collect2.o): Depend on collect2-aix.h.
17600         (collect2-aix.o): New rule.
17601         * collect2-aix.h: New file.
17602         * collect2-aix.c: Likewise.
17603         * collect2.c: Include collect2-aix.h.  Don't undefine
17604         OBJECT_FORMAT_COFF if CROSS_AIX_SUPPORT is defined.
17605         Guard native includes with #ifndef CROSS_DIRECTORY_STRUCTURE.
17606         Use TARGET_AIX_VERSION instead of _AIX51.
17607         * config/rs6000/aix43.h (TARGET_AIX_VERSION): Define.
17608         * config/rs6000/aix51.h (TARGET_AIX_VERSION): Likewise.
17609         * config/rs6000/aix52.h (TARGET_AIX_VERSION): Likewise.
17610         * config/rs6000/aix53.h (TARGET_AIX_VERSION): Likewise.
17611         * config/rs6000/aix61.h (TARGET_AIX_VERSION): Likewise.
17612
17613 2009-06-02  Richard Sandiford  <r.sandiford@uk.ibm.com>
17614
17615         * collect2.c (ignore_library): Avoid premature post-increment
17616         and null deference.
17617
17618 2009-06-02  Richard Sandiford  <r.sandiford@uk.ibm.com>
17619
17620         * Makefile.in (libgcc.mvars): Add TARGET_SYSTEM_ROOT.
17621         * config/rs6000/aix.h (LINK_SYSCALLS_SPEC): Add %R to the
17622         !CROSS_DIRECTORY_STRUCTURE alternative and use it for
17623         CROSS_DIRECTORY_STRUCTURE too.
17624         (LINK_LIBG_SPEC): Likewise.
17625         (LIB_SPEC): Add %R to sysroot paths.
17626         * config/rs6000/aix43.h (CPP_SPEC): Add %R to sysroot paths.
17627         (CPLUSPLUS_CPP_SPEC, LIB_SPEC): Likewise.
17628         * config/rs6000/aix51.h: As for aix43.h.
17629         * config/rs6000/aix52.h: Likewise.
17630         * config/rs6000/aix53.h: Likewise.
17631         * config/rs6000/aix61.h: Likewise.
17632         * config/rs6000/t-aix52 (SHLIB_LINK): Add $(TARGET_SYSTEM_ROOT)
17633         to the beginning of sysroot paths.
17634
17635 2009-06-02  Alexandre Oliva  <aoliva@redhat.com>
17636
17637         * print_rtl (print_rtx): Don't print modes in EXPR_LISTs and
17638         INSN_LISTs that are out of the REG_NOTE range.
17639
17640 2009-06-02  Alexandre Oliva  <aoliva@redhat.com>
17641
17642         * loop-unroll.c (struct iv_to_split): Add pointer to next.
17643         (struct var_to_expand): Likewise.
17644         (struct opt_info): Add head and tail for linked lists of the above.
17645         (analyze_insn_to_expand_var): Initialize next.
17646         (analyze_iv_to_split_insn): Likewise.
17647         (analyze_insns_in_loop): Create linked lists.
17648         (allocate_basic_variable): Simplify for use without hash table.
17649         (insert_var_expansion_initialization): Likewise, make it type-safer.
17650         (combine_var_copies_in_loop_exit): Likewise.
17651         (apply_opt_in_copies): Walk lists rather than hash tables.
17652         (release_var_copies): Simplified and inlined by hand into...
17653         (free_opt_info): ... this function.
17654
17655 2009-06-02  Richard Guenther  <rguenther@suse.de>
17656
17657         * tree-ssa-sccvn.c (copy_reference_ops_from_ref): Use DECL_SIZE
17658         for field decls.
17659
17660 2009-06-02  Alexandre Oliva  <aoliva@redhat.com>
17661
17662         * cfgexpand.c (gimple_expand_cfg): Discard the source location
17663         only for builtins that are not overridden.
17664
17665 2009-06-02  Alexandre Oliva  <aoliva@redhat.com>
17666
17667         * gengtype.c (adjust_field_rtx_def): Add NOTE_INSN_DELETED_LABEL's
17668         label string.
17669
17670 2009-06-02  Alexandre Oliva  <aoliva@redhat.com>
17671
17672         * df-core.c (df_ref_debug): Honor -fdump-noaddr.
17673
17674 2009-06-02  Alexandre Oliva  <aoliva@redhat.com>
17675
17676         * combine.c (move_deaths): Compare LUIDs within the same BB only.
17677
17678 2009-06-02  Alexandre Oliva  <aoliva@redhat.com>
17679
17680         * common.opt (fdump-unnumbered-links): New.
17681         * doc/invoke.texi (-fdump-unnumbered-links): Document it.
17682         * print-rtl.c (flag_dump_unnumbered_links): New.
17683         (print_rtx): Test it.
17684
17685 2009-06-02  Richard Earnshaw  <rearnsha@arm.com>
17686
17687         * arm.c (arm_get_frame_offsets): Prefer using r3 for padding a
17688         push/pop multiple to 8-byte alignment.
17689
17690 2009-06-01  Jakub Jelinek  <jakub@redhat.com>
17691
17692         * config/i386/i386.c (queued_cfa_restores): New static variable.
17693         (ix86_add_cfa_restore_note, ix86_add_queued_cfa_restore_notes): New
17694         functions.
17695         (pro_epilogue_adjust_stack): Call ix86_add_queued_cfa_restore_notes.
17696         (ix86_emit_restore_reg_using_pop): Add RED_OFFSET argument.
17697         Set RTX_FRAME_RELATED_P immediately after adding a REG_CFA_* note.
17698         Call ix86_add_cfa_restore_note instead of adding REG_CFA_OFFSET
17699         note unconditionally.
17700         (ix86_emit_restore_regs_using_mov): Likewise.
17701         (ix86_emit_restore_sse_regs_using_mov): Likewise.
17702         (ix86_emit_restore_regs_using_pop): Add RED_OFFSET argument, pass
17703         it through to ix86_emit_restore_reg_using_pop.
17704         (ix86_emit_leave): Add RED_OFFSET argument.  Call
17705         ix86_add_queued_cfa_restore_notes.  Call ix86_add_cfa_restore_note
17706         instead of adding REG_CFA_OFFSET note unconditionally.
17707         (ix86_expand_epilogue): Compute RED_OFFSET, pass it down to
17708         the above functions.  Call ix86_add_queued_cfa_restore_notes when
17709         needed.
17710
17711         * dwarf2out.c (dwarf2out_cfi_label): Add FORCE argument, if true,
17712         force output of the label even for dwarf2out_do_cfi_asm.
17713         (add_fde_cfi): If -g2 and above and cfi might change CFA,
17714         force creation of CFI label and chain DW_CFA_set_loc jumping to it
17715         for convert_cfa_to_fb_loc_list.  Adjust other dwarf2out_cfi_label
17716         caller.
17717         (dwarf2out_stack_adjust, dwarf2out_frame_debug,
17718         dwarf2out_begin_epilogue, dwarf2out_frame_debug_restore_state): Adjust
17719         dwarf2out_cfi_label callers.
17720         * tree.h (dwarf2out_cfi_label): Adjust prototype.
17721         * config/arm/arm.c (thumb_pushpop, thumb1_output_function_prologue):
17722         Adjust dwarf2out_cfi_label callers.
17723         * config/vax/vax.c (vax_output_function_prologue): Likewise.
17724
17725         * config/i386/i386.h (struct machine_cfa_state,
17726         struct machine_function): Guard with ifndef USED_FOR_TARGET
17727         instead of not IN_LIBGCC2 and not in IN_TARGET_LIBS.
17728
17729         PR other/40024
17730         * emutls.c (__emutls_get_address): Change arr->size to mean number
17731         of allocated arr->data entries instead of # of slots + 1.
17732
17733         PR middle-end/40316
17734         * recog.c (peep2_reinit_state): New function.
17735         (peephole2_init_state): Use it at the end of a basic block and also
17736         when seeing a RTX_FRAME_RELATED_P insn.
17737
17738 2009-06-01  Steve Ellcey  <sje@cup.hp.com>
17739
17740         * ia64.md (floatdirf2, fix_truncrfdi, floatunsdirf,
17741         fixuns_truncrfdi2): New.
17742         (fix_truncxfdi2_alts, fixuns_truncxfdi2_alts,
17743         *nmaddsf4_alts, *nmadddf4_alts, *nmadddf4_truncsf_alts,
17744         *mulxf3_alts, *mulxf3_truncsf_alts, *mulxf3_truncdf_alts,
17745         *maddxf4_alts, *maddxf4_alts_truncsf, *maddxf4_alts_truncdf,
17746         *nmaddxf4_alts, *nmaddxf4_truncsf_alts, *nmaddxf4_truncdf_alts,
17747         *recip_approx): Remove.
17748         (divsi3 modsi3, udivsi3, umodsi3, divsi3_internal, divdi3,
17749         moddi3, udivdi3, umoddi3, divdi3_internal_lat, divdi3_internal_thr,
17750         divsf3, sqrtsf2, divdf3, sqrtdf2, divxf3, sqrtxf2): Modify and
17751         move to div.md.
17752         * div.md (fix_truncrfdi2_alts, fixuns_truncrfdi2_alt,
17753         setf_exp_rf): New.
17754
17755 2009-06-01  Ian Lance Taylor  <iant@google.com>
17756
17757         * attribs.c (register_attribute): Use CONST_CAST.
17758         * collect2.c (main): Use CONST_CAST2.
17759         (scan_prog_file): Likewise.
17760         * gcc.c (process_command, main): Likewise.
17761         * toplev.c (toplev_main): Likewise.
17762
17763         * c-typeck.c (handle_warn_cast_qual): New static function,
17764         partially broken out of build_c_cast.
17765         (build_c_cast): Call handle_warn_cast_qual.
17766         * doc/invoke.texi (Warning Options): Document new effect of
17767         -Wcast-qual.
17768
17769 2009-06-01  Aldy Hernandez  <aldyh@redhat.com>
17770
17771         * diagnostic.c (diagnostic_build_prefix): Always print columns.
17772         (diagnostic_report_current_module): Print columns.
17773         * common.opt (flag_show_column): Enable by default.
17774
17775 2009-06-01  Luis Machado  <luisgpm@br.ibm.com>
17776
17777         * alias.c (find_base_term): Check for NULL term before returning.
17778
17779 2009-06-01  Maxim Kuvyrkov  <maxim@codesourcery.com>
17780
17781         Revert due to PR40320:
17782         2009-06-01  Maxim Kuvyrkov  <maxim@codesourcery.com>
17783         * calls.c (emit_library_call_value_1): Don't force_operand for move
17784         and push insns.
17785
17786 2009-06-01  Olivier Hainque  <hainque@adacore.com>
17787             Eric Botcazou  <ebotcazou@adacore.com>
17788
17789         * tree.h (CONSTRUCTOR_BITFIELD_P): True if NODE, a FIELD_DECL, is
17790         to be processed as a bitfield for constructor output purposes.
17791         * output.h (initializer_constant_valid_for_bitfield_p): Declare
17792         new function.
17793         * varasm.c (oc_local_state): New type, output_constructor
17794         local state to support communication with helpers.
17795         (oc_outer_state): New type, output_constructor outer state of
17796         relevance in recursive calls.
17797         (output_constructor_array_range): New output_constructor helper,
17798         extracted code for an array range element.
17799         (output_constructor_regular_field): New output_constructor helper,
17800         extracted code for an element that is not a bitfield.
17801         (output_constructor_bitfield): New output_constructor helper,
17802         extracted code for a bitfield element.  Accept an OUTER state
17803         argument for recursive processing.  Recurse on record or array
17804         CONSTRUCTOR values, possibly past noop conversions.
17805         (initializer_constant_valid_for_bitfield_p): New predicate.  Whether
17806         VALUE is a valid constant-valued expression for use in a static
17807         bit-field initializer.
17808         (output_constructor): Rework to use helpers.  Accept and honor an
17809         OUTER state argument for recursive calls.  Return total size.  Be
17810         prepared for nested constructors initializing bitfields.
17811         (output_constant): Feed OUTER in calls to output_constructor.
17812
17813 2009-06-01  Maxim Kuvyrkov  <maxim@codesourcery.com>
17814
17815         * calls.c (emit_library_call_value_1): Don't force_operand for move
17816         and push insns.
17817
17818 2009-06-01  Nick Clifton  <nickc@redhat.com>
17819
17820         * doc/invoke.texi (IA-64 Options): Fix typo.
17821
17822 2009-06-01  Ira Rosen  <irar@il.ibm.com>
17823
17824         PR tree-optimization/39129
17825         * tree-vect-loop-manip.c (conservative_cost_threshold): Change the
17826         printed message.
17827         (vect_do_peeling_for_loop_bound): Use
17828         LOOP_REQUIRES_VERSIONING_FOR_ALIGNMENT and
17829         LOOP_REQUIRES_VERSIONING_FOR_ALIAS macros.
17830         (vect_loop_versioning): Likewise.
17831         (vect_create_cond_for_alias_checks): Fix indentation.
17832         * tree-vectorizer.h (struct _loop_vec_info): Fix indentation of the
17833         macros.
17834         (LOOP_REQUIRES_VERSIONING_FOR_ALIGNMENT): Define.
17835         (LOOP_REQUIRES_VERSIONING_FOR_ALIAS): Likewise.
17836         * tree-vect-loop.c (vect_analyze_loop_form): Change "too many BBs" to
17837         "control flow in loop".
17838         (vect_estimate_min_profitable_iters): Use
17839         LOOP_REQUIRES_VERSIONING_FOR_ALIGNMENT and
17840         LOOP_REQUIRES_VERSIONING_FOR_ALIAS macros.
17841         * tree-vect-data-refs.c (vect_enhance_data_refs_alignment): Likewise.
17842         (vect_create_data_ref_ptr): Don't mention array dimension in printing.
17843         * tree-vect-stmts.c (vectorizable_store): Replace the check that the
17844         statement belongs to a group of strided accesses with the exact code
17845         check.
17846         (vectorizable_load): Likewise.
17847         * tree-vect-slp.c (vect_analyze_slp_instance): Spell out "basic block".
17848         (vect_slp_analyze_bb, vect_slp_transform_bb): Likewise.
17849
17850 2009-06-01  Gerald Pfeifer  <gerald@pfeifer.com>
17851
17852         * config/freebsd-stdint.h: New file.
17853         * config.gcc (*-*-freebsd): Set use_gcc_stdint=wrap.
17854         Add freebsd-stdint.h to tm_file.
17855
17856 2009-06-01  Richard Earnshaw  <rearnsha@arm.com>
17857
17858         * arm/thumb2.md (thumb2_zero_extendhidi2): New insn and split.
17859         (thumb2_extendhidi2): Likewise.
17860
17861 2009-05-31  Ian Lance Taylor  <iant@google.com>
17862
17863         * regstat.c (regstat_n_sets_and_refs): Remove duplicate definition.
17864
17865 2009-05-31  Ian Lance Taylor  <iant@google.com>
17866
17867         * Makefile.in (except.o): Depend upon gt-except.h, not gt-$(EXCEPT_H).
17868         (ipa-cp.o): Depend upon $(FIBHEAP_H) and $(PARAMS_H).
17869         (ipa-reference.o): Depend upon gt-ipa-reference.h.
17870
17871 2009-05-31  Jason Merrill  <jason@redhat.com>
17872
17873         * tree-pretty-print.c (print_call_name): Take the callee, not the
17874         call itself.  Make non-static.  Use dump_function_name for functions.
17875         (dump_generic_node): Adjust.
17876         * diagnostic.h: Declare print_call_name.
17877         * gimple-pretty-print.c (dump_gimple_call): Use it.
17878
17879 2009-05-31  Kaz Kojima  <kkojima@gcc.gnu.org>
17880
17881         * config/sh/sh.md (ashldi3_std): New define_expand.
17882         (ashldi3): Use it.
17883
17884 2009-05-31  Kaz Kojima  <kkojima@gcc.gnu.org>
17885
17886         PR target/40313
17887         * config/sh/sh.c: Include debug.h.
17888         (sh_expand_epilogue): Emit a blockage insn before the frame
17889         pointer adjustment also when dwarf2out_do_frame returns true.
17890
17891 2009-05-31  Richard Earnshaw  <rearnsha@arm.com>
17892
17893         * arm/thumb2.md (thumb2_extendsidi2): Add a split sub-pattern.
17894         (thumb2_extendqidi2): New pattern.
17895
17896 2009-05-31  Ira Rosen  <irar@il.ibm.com>
17897
17898         * tree-vect-loop-manip.c (slpeel_update_phi_nodes_for_guard1): Don't
17899         mark phis for renaming.
17900         * tree-vectorizer.c (vect_memsyms_to_rename): Remove.
17901         (vectorize_loops): Don't allocate and free vect_memsyms_to_rename.
17902         Call mark_sym_for_renaming.
17903         * tree-vectorizer.h (vect_memsyms_to_rename): Remove.
17904         * tree-vect-loop.c (vect_transform_loop): Remove
17905         vect_memsyms_to_rename initialization and a call to
17906         mark_set_for_renaming.
17907
17908 2009-05-31  Jakub Jelinek  <jakub@redhat.com>
17909
17910         PR middle-end/40304
17911         * config/i386/i386.c (pro_epilogue_adjust_stack): Mark insns
17912         frame related even if !set_cfa && style < 0.
17913
17914 2009-05-30  Kai Tietz  <kai.tietz@onevision.com>
17915
17916         * config/i386/mingw-tls.c: New file.
17917         * config/i386/t-gthr-win32 (LIB2FUNCS_EXTRA): Add mingw-tls.c file.
17918         * gthr-win32.h (MINGW32_SUPPORTS_MT_EH): Define it for targets
17919         defining _WIN32 but not __CYGWIN__.
17920
17921 2009-05-29  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
17922
17923         * configure.ac: Add MPC support.
17924
17925         * config.in, configure: Regenerate.
17926
17927 2009-05-29  Richard Henderson  <rth@redhat.com>
17928
17929         * cfgcleanup.c (try_crossjump_to_edge): Only skip past
17930         NOTE_INSN_BASIC_BLOCK.
17931         * cfglayout.c (duplicate_insn_chain): Copy epilogue insn marks.
17932         Duplicate NOTE_INSN_EPILOGUE_BEG notes.
17933         * cfgrtl.c (can_delete_note_p): Allow NOTE_INSN_EPILOGUE_BEG
17934         to be deleted.
17935         * dwarf2out.c (struct cfa_loc): Change indirect field to bitfield,
17936         add in_use field.
17937         (add_cfi): Disable check redefining cfa away from drap.
17938         (lookup_cfa_1): Add remember argument; handle remember/restore.
17939         (lookup_cfa): Pass remember argument.
17940         (cfa_remember): New.
17941         (compute_barrier_args_size_1): Remove sibcall check.
17942         (dwarf2out_frame_debug_def_cfa): New.
17943         (dwarf2out_frame_debug_adjust_cfa): New.
17944         (dwarf2out_frame_debug_cfa_offset): New.
17945         (dwarf2out_frame_debug_cfa_register): New.
17946         (dwarf2out_frame_debug_cfa_restore): New.
17947         (dwarf2out_frame_debug): Handle REG_CFA_* notes.
17948         (dwarf2out_begin_epilogue): New.
17949         (dwarf2out_frame_debug_restore_state): New.
17950         (dw_cfi_oprnd1_desc): Handle DW_CFA_remember_state,
17951         DW_CFA_restore_state.
17952         (output_cfi_directive): Likewise.
17953         (convert_cfa_to_fb_loc_list): Likewise.
17954         (dw_cfi_oprnd1_desc): Handle DW_CFA_restore.
17955         * dwarf2out.h: Update.
17956         * emit-rtl.c (try_split): Don't split RTX_FRAME_RELATED_P.
17957         (copy_insn_1): Early out for null.
17958         * final.c (final_scan_insn): Call dwarf2out_begin_epilogue
17959         and dwarf2out_frame_debug_restore_state.
17960         * function.c (prologue, epilogue, sibcall_epilogue): Remove.
17961         (prologue_insn_hash, epilogue_insn_hash): New.
17962         (free_after_compilation): Adjust freeing accordingly.
17963         (record_insns): Create hash table if needed; push insns into
17964         hash instead of array.
17965         (maybe_copy_epilogue_insn): New.
17966         (contains): Search hash table instead of array.
17967         (sibcall_epilogue_contains): Remove.
17968         (thread_prologue_and_epilogue_insns): Split eh_return insns
17969         and mark them as epilogues.
17970         (reposition_prologue_and_epilogue_notes): Rewrite epilogue
17971         scanning in terms of basic blocks.
17972         * insn-notes.def (CFA_RESTORE_STATE): New.
17973         * jump.c (returnjump_p_1): Accept EH_RETURN.
17974         (eh_returnjump_p_1, eh_returnjump_p): New.
17975         * reg-notes.def (CFA_DEF_CFA, CFA_ADJUST_CFA, CFA_OFFSET,
17976         CFA_REGISTER, CFA_RESTORE): New.
17977         * rtl.def (EH_RETURN): New.
17978         * rtl.h (eh_returnjump_p, maybe_copy_epilogue_insn): Declare.
17979
17980         * config/bfin/bfin.md (UNSPEC_VOLATILE_EH_RETURN): Remove.
17981         (eh_return_internal): Use eh_return rtx; split w/ epilogue.
17982
17983         * config/i386/i386.c (gen_push): Update cfa state.
17984         (pro_epilogue_adjust_stack): Add set_cfa argument.  When true,
17985         add a CFA_ADJUST_CFA note.
17986         (ix86_dwarf_handle_frame_unspec): Remove.
17987         (ix86_expand_prologue): Update cfa state.
17988         (ix86_emit_restore_reg_using_pop): New.
17989         (ix86_emit_restore_regs_using_pop): New.
17990         (ix86_emit_leave): New.
17991         (ix86_emit_restore_regs_using_mov): Add CFA_RESTORE notes.
17992         (ix86_expand_epilogue): Add notes for unwinding the epilogue.
17993         * config/i386/i386.h (struct machine_cfa_state): New.
17994         (ix86_cfa_state): New.
17995         * config/i386/i386.md (UNSPEC_EH_RETURN): Remove.
17996         (eh_return_internal): Merge from eh_return_<mode>,
17997         use eh_return rtx, split w/ epilogue.
17998
17999 2009-05-29  Ian Lance Taylor  <iant@google.com>
18000
18001         * builtins.c (validate_gimple_arglist): Don't use va_arg with
18002         enum type.
18003         * calls.c (emit_library_call_value_1): Likewise.
18004
18005         * c-typeck.c (c_build_va_arg): New function.
18006         * c-tree.h (c_build_va_arg): Declare.
18007         * c-parser.c (c_parser_postfix_expression): Call c_build_va_arg
18008         instead of build_va_arg.
18009
18010 2009-05-29  Eric Botcazou  <ebotcazou@adacore.com>
18011
18012         * tree-ssa-loop-ivopts.c (strip_offset_1) <MULT_EXPR>: New case.
18013         (force_expr_to_var_cost) <NEGATE_EXPR>: Likewise.
18014         (ptr_difference_cost): Use affine combinations to compute it.
18015         (difference_cost): Likewise.
18016         (get_computation_cost_at): Compute more accurate cost for addresses
18017         if the ratio is a multiplier allowed in addresses.
18018         For non-addresses, consider that an additional offset or symbol is
18019         added only once.
18020
18021 2009-05-29  Jakub Jelinek  <jakub@redhat.com>
18022
18023         * config/i386/i386.c (ix86_decompose_address): Avoid useless
18024         0 displacement.  Add 0 displacement if base is %[er]bp or %r13.
18025
18026         * config/i386/i386.md (prefix_data16, prefix_rep): Set to 0 for
18027         TYPE_SSE{MULADD,4ARG,IADD1,CVT1} by default.
18028         (prefix_rex): For UNIT_MMX don't imply the prefix by default
18029         if MODE_DI.
18030         (prefix_extra): Default to 2 for TYPE_SSE{MULADD,4ARG} and
18031         to 1 for TYPE_SSE{IADD1,CVT1}.
18032         (prefix_vex_imm8): Removed.
18033         (length_vex): Only pass 1 as second argument to
18034         ix86_attr_length_vex_default if prefix_extra is 0.
18035         (modrm): For TYPE_INCDEC only set to 0 if not TARGET_64BIT.
18036         (length): For prefix vex computation use length_immediate
18037         attribute instead of prefix_vex_imm8.
18038         (cmpqi_ext_3_insn, cmpqi_ext_3_insn_rex64,
18039         addqi_ext_1, addqi_ext_1_rex64, *testqi_ext_0, andqi_ext_0,
18040         *andqi_ext_0_cc, *iorqi_ext_0, *xorqi_ext_0, *xorqi_cc_ext_1,
18041         *xorqi_cc_ext_1_rex64): Override modrm attribute to 1.
18042         (extendsidi2_rex64, extendhidi2, extendqidi2, extendhisi2,
18043         *extendhisi2_zext, extendqihi2, extendqisi2, *extendqisi2_zext): Emit
18044         a space in between the operands.
18045         (*anddi_1_rex64, *andsi_1): Likewise.  Override prefix_rex to 1
18046         if one operand is 0xff and the other one si, di, bp or sp.
18047         (*andhi_1): Override prefix_rex to 1 if one operand is 0xff and the
18048         other one si, di, bp or sp.
18049         (*btsq, *btrq, *btcq, *btdi_rex64, *btsi): Add mode attribute.
18050         (*ffssi_1, *ffsdi_1, ctzsi2, ctzdi2): Add
18051         type and mode attributes.
18052         (*bsr, *bsr_rex64, *bsrhi): Add type attribute.
18053         (*cmpfp_i_mixed, *cmpfp_iu_mixed): For TYPE_SSECOMI, clear
18054         prefix_rep attribute and set prefix_data16 attribute iff MODE_DF.
18055         (*cmpfp_i_sse, *cmpfp_iu_sse): Clear prefix_rep attribute and set
18056         prefix_data16 attribute iff MODE_DF.
18057         (*movsi_1): For TYPE_SSEMOV MODE_SI set prefix_data16 attribute.
18058         (fix_trunc<mode>di_sse): Set prefix_rex attribute.
18059         (*adddi_4_rex64, *addsi_4): Use const128_operand instead of
18060         constm128_operand in length_immediate computation.
18061         (*addhi_4): Likewise.  Fix mode attribute to MODE_HI.
18062         (anddi_1_rex64): Use movzbl/movzwl instead of movzbq/movzwq.
18063         (*avx_ashlti3, sse2_ashlti3, *avx_lshrti3, sse2_lshrti3): Set
18064         length_immediate attribute to 1.
18065         (x86_fnstsw_1, x86_fnstcw_1, x86_fldcw_1): Fix length attribute.
18066         (*movdi_1_rex64): Override prefix_rex or prefix_data16 attributes
18067         for certain alternatives.
18068         (*movdf_nointeger, *movdf_integer_rex64, *movdf_integer): Override
18069         prefix_data16 attribute if MODE_V1DF.
18070         (*avx_setcc<mode>, *sse_setcc<mode>, *sse5_setcc<mode>): Set
18071         length_immediate to 1.
18072         (set_got_rex64, set_rip_rex64): Remove length attribute, set
18073         length_address to 4, set mode attribute to MODE_DI.
18074         (set_got_offset_rex64): Likewise.  Set length_immediate to 0.
18075         (fxam<mode>2_i387): Set length attribute to 4.
18076         (*prefetch_sse, *prefetch_sse_rex, *prefetch_3dnow,
18077         *prefetch_3dnow_rex): Override length_address attribute.
18078         (sse4_2_crc32<mode>): Override prefix_data16 and prefix_rex
18079         attributes.
18080         * config/i386/predicates.md (ext_QIreg_nomode_operand): New predicate.
18081         (constm128_operand): Removed.
18082         * config/i386/i386.c (memory_address_length): For
18083         disp && !index && !base in 64-bit mode account for SIB byte if
18084         print_operand_address can't optimize disp32 into disp32(%rip)
18085         and UNSPEC doesn't imply (%rip) addressing.  Add 1 to length
18086         for fs: or gs: segment.
18087         (ix86_attr_length_immediate_default): When checking if shortform
18088         is possible, truncate immediate to the length of the non-shortened
18089         immediate.
18090         (ix86_attr_length_address_default): Ignore MEM_P operands
18091         with X constraint.
18092         (ix86_attr_length_vex_default): Only check for DImode on
18093         GENERAL_REG_P operands.
18094         * config/i386/sse.md (<sse>_comi, <sse>_ucomi): Clear
18095         prefix_rep attribute, set prefix_data16 attribute iff MODE_DF.
18096         (sse_cvttps2pi): Clear prefix_rep attribute.
18097         (sse2_cvttps2dq, *sse2_cvtpd2dq, sse2_cvtps2pd): Clear prefix_data16
18098         attribute.
18099         (*sse2_cvttpd2dq): Don't clear prefix_rep attribute.
18100         (*avx_ashr<mode>3, ashr<mode>3, *avx_lshr<mode>3, lshr<mode>3,
18101         *avx_ashl<mode>3, ashl<mode>3): Set length_immediate attribute to 1
18102         iff operand 2 is const_int_operand.
18103         (*vec_dupv4si, avx_shufpd256_1, *avx_shufpd_<mode>,
18104         sse2_shufpd_<mode>): Set length_immediate attribute to 1.
18105         (sse2_pshufd_1): Likewise.  Set prefix attribute to maybe_vex
18106         instead of vex.
18107         (sse2_pshuflw_1, sse2_pshufhw_1): Set length_immediate to 1 and clear
18108         prefix_data16.
18109         (sse2_unpckhpd, sse2_unpcklpd, sse2_storehpd, *vec_concatv2df): Set
18110         prefix_data16 attribute for movlpd and movhpd instructions.
18111         (sse2_loadhpd, sse2_loadlpd, sse2_movsd): Likewise.  Override
18112         length_immediate for shufpd instruction.
18113         (sse2_movntsi, sse3_lddqu): Clear prefix_data16 attribute.
18114         (avx_cmpp<avxmodesuffixf2c><mode>3,
18115         avx_cmps<ssemodesuffixf2c><mode>3, *avx_maskcmp<mode>3,
18116         <sse>_maskcmp<mode>3, <sse>_vmmaskcmp<mode>3,
18117         avx_shufps256_1, *avx_shufps_<mode>, sse_shufps_<mode>,
18118         *vec_dupv4sf_avx, *vec_dupv4sf): Set length_immediate attribute to 1.
18119         (*avx_cvtsi2ssq, *avx_cvtsi2sdq): Set length_vex attribute to 4.
18120         (sse_cvtsi2ssq, sse2_cvtsi2sdq): Set prefix_rex attribute to 1.
18121         (sse2_cvtpi2pd, sse_loadlps, sse2_storelpd): Override
18122         prefix_data16 attribute for the first alternative to 1.
18123         (*avx_loadlps): Override length_immediate for the first alternative.
18124         (*vec_concatv2sf_avx): Override length_immediate and prefix_extra
18125         attributes for second alternative.
18126         (*vec_concatv2sf_sse4_1): Override length_immediate and
18127         prefix_data16 attributes for second alternative.
18128         (*vec_setv4sf_avx, *avx_insertps, vec_extract_lo_<mode>,
18129         vec_extract_hi_<mode>, vec_extract_lo_v16hi,
18130         vec_extract_hi_v16hi, vec_extract_lo_v32qi,
18131         vec_extract_hi_v32qi): Set prefix_extra and length_immediate to 1.
18132         (*vec_setv4sf_sse4_1, sse4_1_insertps, *sse4_1_extractps): Set
18133         prefix_data16 and length_immediate to 1.
18134         (*avx_mulv2siv2di3, *avx_mulv4si3, sse4_2_gtv2di3): Set prefix_extra
18135         to 1.
18136         (*avx_<code><mode>3, *avx_eq<mode>3, *avx_gt<mode>3): Set
18137         prefix_extra attribute for variants that don't have 0f prefix alone.
18138         (*avx_pinsr<ssevecsize>): Likewise.  Set length_immediate to 1.
18139         (*sse4_1_pinsrb, *sse2_pinsrw, *sse4_1_pinsrd, *sse4_1_pextrb,
18140         *sse4_1_pextrb_memory, *sse2_pextrw, *sse4_1_pextrw_memory,
18141         *sse4_1_pextrd): Set length_immediate to 1.
18142         (*sse4_1_pinsrd): Likewise.  Set prefix_extra to 1.
18143         (*sse4_1_pinsrq, *sse4_1_pextrq): Set prefix_rex and length_immediate
18144         to 1.
18145         (*vec_extractv2di_1_rex64_avx, *vec_extractv2di_1_rex64,
18146         *vec_extractv2di_1_avx, *vec_extractv2di_1_sse2): Override
18147         length_immediate to 1 for second alternative.
18148         (*vec_concatv2si_avx, *vec_concatv2di_rex64_avx): Override
18149         prefix_extra and length_immediate attributes for the first
18150         alternative.
18151         (vec_concatv2si_sse4_1): Override length_immediate to 1 for the
18152         first alternative.
18153         (*vec_concatv2di_rex64_sse4_1): Likewise.  Override prefix_rex
18154         to 1 for the first and third alternative.
18155         (*vec_concatv2di_rex64_sse): Override prefix_rex to 1 for the second
18156         alternative.
18157         (*sse2_maskmovdqu, *sse2_maskmovdqu_rex64): Override length_vex
18158         attribute.
18159         (*sse_sfence, sse2_mfence, sse2_lfence): Override length_address
18160         attribute to 0.
18161         (*avx_phaddwv8hi3, *avx_phadddv4si3, *avx_phaddswv8hi3,
18162         *avx_phsubwv8hi3, *avx_phsubdv4si3, *avx_phsubswv8hi,
18163         *avx_pmaddubsw128, *avx_pmulhrswv8hi3, *avx_pshufbv16qi3,
18164         *avx_psign<mode>3): Set prefix_extra attribute to 1.
18165         (ssse3_phaddwv4hi3, ssse3_phadddv2si3, ssse3_phaddswv4hi3,
18166         ssse3_phsubwv4hi3, ssse3_phsubdv2si3, ssse3_phsubswv4hi3,
18167         ssse3_pmaddubsw, *ssse3_pmulhrswv4hi, ssse3_pshufbv8qi3,
18168         ssse3_psign<mode>3): Override prefix_rex attribute.
18169         (*avx_palignrti): Override prefix_extra and length_immediate to 1.
18170         (ssse3_palignrti): Override length_immediate to 1.
18171         (ssse3_palignrdi): Override length_immediate to 1, override
18172         prefix_rex attribute.
18173         (abs<mode>2): Override prefix_rep to 0, override prefix_rex attribute.
18174         (sse4a_extrqi): Override length_immediate to 2.
18175         (sse4a_insertqi): Likewise.  Override prefix_data16 to 0.
18176         (sse4a_insertq): Override prefix_data16 to 0.
18177         (avx_blendp<avxmodesuffixf2c><avxmodesuffix>,
18178         avx_blendvp<avxmodesuffixf2c><avxmodesuffix>,
18179         avx_dpp<avxmodesuffixf2c><avxmodesuffix>, *avx_mpsadbw,
18180         *avx_pblendvb, *avx_pblendw, avx_roundp<avxmodesuffixf2c>256,
18181         avx_rounds<avxmodesuffixf2c>256): Override prefix_extra
18182         and length_immediate to 1.
18183         (sse4_1_blendp<ssemodesuffixf2c>, sse4_1_dpp<ssemodesuffixf2c>,
18184         sse4_2_pcmpestr, sse4_2_pcmpestri, sse4_2_pcmpestrm,
18185         sse4_2_pcmpestr_cconly, sse4_2_pcmpistr, sse4_2_pcmpistri,
18186         sse4_2_pcmpistrm, sse4_2_pcmpistr_cconly): Override prefix_data16
18187         and length_immediate to 1.
18188         (sse4_1_blendvp<ssemodesuffixf2c>): Override prefix_data16 to 1.
18189         (sse4_1_mpsadbw, sse4_1_pblendw): Override length_immediate to 1.
18190         (*avx_packusdw, avx_vtestp<avxmodesuffixf2c><avxmodesuffix>,
18191         avx_ptest256): Override prefix_extra to 1.
18192         (sse4_1_roundp<ssemodesuffixf2c>, sse4_1_rounds<ssemodesuffixf2c>):
18193         Override prefix_data16 and length_immediate to 1.
18194         (sse5_pperm_zero_v16qi_v8hi, sse5_pperm_sign_v16qi_v8hi,
18195         sse5_pperm_zero_v8hi_v4si, sse5_pperm_sign_v8hi_v4si,
18196         sse5_pperm_zero_v4si_v2di, sse5_pperm_sign_v4si_v2di,
18197         sse5_vrotl<mode>3, sse5_ashl<mode>3, sse5_lshl<mode>3): Override
18198         prefix_data16 to 0 and prefix_extra to 2.
18199         (sse5_rotl<mode>3, sse5_rotr<mode>3): Override length_immediate to 1.
18200         (sse5_frcz<mode>2, sse5_vmfrcz<mode>2): Don't override prefix_extra
18201         attribute.
18202         (*sse5_vmmaskcmp<mode>3, sse5_com_tf<mode>3,
18203         sse5_maskcmp<mode>3, sse5_maskcmp<mode>3, sse5_maskcmp_uns<mode>3):
18204         Override prefix_data16 and prefix_rep to 0, length_immediate to 1
18205         and prefix_extra to 2.
18206         (sse5_maskcmp_uns2<mode>3, sse5_pcom_tf<mode>3): Override
18207         prefix_data16 to 0, length_immediate to 1 and prefix_extra to 2.
18208         (*avx_aesenc, *avx_aesenclast, *avx_aesdec, *avx_aesdeclast,
18209         avx_vpermilvar<mode>3,
18210         avx_vbroadcasts<avxmodesuffixf2c><avxmodesuffix>,
18211         avx_vbroadcastss256, avx_vbroadcastf128_p<avxmodesuffixf2c>256,
18212         avx_maskloadp<avxmodesuffixf2c><avxmodesuffix>,
18213         avx_maskstorep<avxmodesuffixf2c><avxmodesuffix>):
18214         Override prefix_extra to 1.
18215         (aeskeygenassist, pclmulqdq): Override length_immediate to 1.
18216         (*vpclmulqdq, avx_vpermil<mode>, avx_vperm2f128<mode>3,
18217         vec_set_lo_<mode>, vec_set_hi_<mode>, vec_set_lo_v16hi,
18218         vec_set_hi_v16hi, vec_set_lo_v32qi, vec_set_hi_v32qi): Override
18219         prefix_extra and length_immediate to 1.
18220         (*avx_vzeroall, avx_vzeroupper, avx_vzeroupper_rex64): Override
18221         modrm to 0.
18222         (*vec_concat<mode>_avx): Override prefix_extra and length_immediate
18223         to 1 for the first alternative.
18224         * config/i386/mmx.md (*mov<mode>_internal_rex64): Override
18225         prefix_rep, prefix_data16 and/or prefix_rex attributes in certain
18226         cases.
18227         (*mov<mode>_internal_avx, *movv2sf_internal_rex64,
18228         *movv2sf_internal_avx, *movv2sf_internal): Override
18229         prefix_rep attribute for certain alternatives.
18230         (*mov<mode>_internal): Override prefix_rep or prefix_data16
18231         attributes for certain alternatives.
18232         (*movv2sf_internal_rex64_avx): Override prefix_rep and length_vex
18233         attributes for certain alternatives.
18234         (*mmx_addv2sf3, *mmx_subv2sf3, *mmx_mulv2sf3,
18235         *mmx_<code>v2sf3_finite, *mmx_<code>v2sf3, mmx_rcpv2sf2,
18236         mmx_rcpit1v2sf3, mmx_rcpit2v2sf3, mmx_rsqrtv2sf2, mmx_rsqit1v2sf3,
18237         mmx_haddv2sf3, mmx_hsubv2sf3, mmx_addsubv2sf3,
18238         *mmx_eqv2sf3, mmx_gtv2sf3, mmx_gev2sf3, mmx_pf2id, mmx_pf2iw,
18239         mmx_pi2fw, mmx_floatv2si2, mmx_pswapdv2sf2, *mmx_pmulhrwv4hi3,
18240         mmx_pswapdv2si2): Set prefix_extra attribute to 1.
18241         (mmx_ashr<mode>3, mmx_lshr<mode>3, mmx_ashl<mode>3): Set
18242         length_immediate to 1 if operand 2 is const_int_operand.
18243         (*mmx_pinsrw, mmx_pextrw, mmx_pshufw_1, *vec_dupv4hi,
18244         *vec_extractv2si_1): Set length_immediate attribute to 1.
18245         (*mmx_uavgv8qi3): Override prefix_extra attribute to 1 if
18246         using old 3DNOW insn rather than SSE/3DNOW_A.
18247         (mmx_emms, mmx_femms): Clear modrm attribute.
18248
18249 2009-05-29  Martin Jambor  <mjambor@suse.cz>
18250
18251         * tree-sra.c:  New implementation of SRA.
18252
18253         * params.def (PARAM_SRA_MAX_STRUCTURE_SIZE): Removed.
18254         (PARAM_SRA_MAX_STRUCTURE_COUNT): Removed.
18255         (PARAM_SRA_FIELD_STRUCTURE_RATIO): Removed.
18256         * params.h (SRA_MAX_STRUCTURE_SIZE): Removed.
18257         (SRA_MAX_STRUCTURE_COUNT): Removed.
18258         (SRA_FIELD_STRUCTURE_RATIO): Removed.
18259         * doc/invoke.texi (sra-max-structure-size): Removed.
18260         (sra-field-structure-ratio): Removed.
18261
18262 2009-05-29  Jakub Jelinek  <jakub@redhat.com>
18263
18264         PR middle-end/40291
18265         * builtins.c (expand_builtin_memcmp): Convert len to sizetype
18266         before expansion.
18267
18268 2009-05-29  Andrey Belevantsev  <abel@ispras.ru>
18269
18270         PR rtl-optimization/40101
18271         * sel-sched-ir.c (get_seqno_by_preds): Allow returning negative
18272         seqno.  Adjust comment.
18273         * sel-sched.c (find_seqno_for_bookkeeping): Assert that when
18274         inserting bookkeeping before a jump, the jump is not scheduled.
18275         When no positive seqno found, provide a value.  Add comment.
18276
18277 2009-05-29  Richard Guenther  <rguenther@suse.de>
18278
18279         * tree-ssa-alias.c (nonaliasing_component_refs_p): Remove
18280         short-cutting on the first component.
18281
18282 2009-05-29  Jakub Jelinek  <jakub@redhat.com>
18283
18284         PR middle-end/39958
18285         * omp-low.c (scan_omp_1_op): Call remap_type on TREE_TYPE
18286         for trees other than decls/types.
18287
18288 2009-05-29  Richard Guenther  <rguenther@suse.de>
18289
18290         * tree-ssa-operands.c (get_expr_operands): Do not handle
18291         INDIRECT_REFs in the handled-component case.  Remove
18292         unused get_ref_base_and_extent case.
18293         * tree-dfa.c (get_ref_base_and_extent): Avoid calling
18294         tree_low_cst and host_integerp where possible.
18295         * tree-ssa-structalias.c (equiv_class_label_eq): Check hash
18296         codes for equivalence.
18297         * dce.c (find_call_stack_args): Avoid redundant bitmap queries.
18298
18299 2009-05-29  David Billinghurst <billingd@gcc.gnu.org>
18300
18301         * config.gcc: Add i386/t-fprules-softfp and soft-fp/t-softfp
18302         to tmake_file for i[34567]86-*-cygwin*.
18303
18304 2009-05-29  Jakub Jelinek  <jakub@redhat.com>
18305
18306         PR target/40017
18307         * config/rs6000/rs6000-c.c (_Bool_keyword): New variable.
18308         (altivec_categorize_keyword, init_vector_keywords,
18309         rs6000_cpu_cpp_builtins): Define _Bool as conditional macro
18310         similar to bool.
18311
18312 2009-05-29  Kai Tietz  <kai.tietz@onevision.com>
18313
18314         * tree.c (handle_dll_attribute): Check if node is
18315         of kind FUNCTION_DECL for DECL_DECLARED_INLINE_P check.
18316
18317 2009-05-29  Richard Earnshaw  <rearnsha@arm.com>
18318
18319         * config/arm/thumb2.md (thumb2_zero_extendsidi2): Add a split
18320         component.
18321         (thumb2_zero_extendqidi2): Likewise.
18322
18323 2009-05-28  Kaz Kojima  <kkojima@gcc.gnu.org>
18324
18325         * config/sh/sh.c (sh_expand_t_scc): Use gen_xorsi3_movrt
18326         instead of gen_movrt.
18327         * config/sh/sh.md (movrt): Remove.
18328
18329 2009-05-28  Steve Ellcey  <sje@cup.hp.com>
18330
18331         * doc/invoke.texi (IA-64 Options):
18332         Add -msdata, -mfused-madd, -mno-inline-float-divide,
18333         -mno-inline-int-divide, -mno-inline-sqrt, -msched-spec-ldc,
18334         -msched-spec-control-ldc, -msched-prefer-non-data-spec-insns,
18335         -msched-prefer-non-control-spec-insns,
18336         -msched-stop-bits-after-every-cycle,
18337         -msched-count-spec-in-critical-path,
18338         -msel-sched-dont-check-control-spec, -msched-fp-mem-deps-zero-cost
18339         -msched-max-memory-insns-hard-limit, -msched-max-memory-insns.
18340         Remove -mt, -pthread, -msched-ldc, -mno-sched-control-ldc,
18341         and -msched-spec-verbose.
18342
18343 2009-05-28  Joseph Myers  <joseph@codesourcery.com>
18344
18345         * config/arm/lib1funcs.asm (__clear_cache): Define if L_clear_cache.
18346         * config/arm/linux-eabi.h (CLEAR_INSN_CACHE): Define to give an
18347         error if used.
18348         * config/arm/t-linux-eabi (LIB1ASMFUNCS): Add _clear_cache.
18349
18350 2009-05-28  Richard Guenther  <rguenther@suse.de>
18351
18352         * tree-ssa-alias.c (ao_ref_init): New function.
18353         (ao_ref_base): Likewise.
18354         (ao_ref_base_alias_set): Likewise.
18355         (ao_ref_alias_set): Likewise.
18356         (refs_may_alias_p_1): Change signature.
18357         (refs_may_alias_p): Adjust.
18358         (refs_anti_dependent_p): Likewise.
18359         (refs_output_dependent_p): Likewise.
18360         (call_may_clobber_ref_p_1): Change signature.
18361         (call_may_clobber_ref_p): Adjust.
18362         (stmt_may_clobber_ref_p_1): New function split out from ...
18363         (stmt_may_clobber_ref_p): ... here.
18364         (maybe_skip_until): Adjust signature.
18365         (get_continuation_for_phi): Likewise.
18366         (walk_non_aliased_vuses): Likewise.
18367         * tree-ssa-alias.h (struct ao_ref_s): New structure type.
18368         (ao_ref_init): Declare.
18369         (ao_ref_base): Likewise.
18370         (ao_ref_alias_set): Likewise.
18371         (stmt_may_clobber_ref_p_1): Likewise.
18372         (walk_non_aliased_vuses): Adjust.
18373         * tree-ssa-sccvn.c (ao_ref_init_from_vn_reference): New function.
18374         (get_ref_from_reference_ops): remove.
18375         (vn_reference_lookup_2): Adjust signature.
18376         (vn_reference_lookup_3): Do not re-build trees.  Handle unions.
18377         (vn_reference_lookup_pieces): Adjust signature, do not re-build trees.
18378         (vn_reference_lookup): Adjust.
18379         (vn_reference_insert): Likewise.
18380         (vn_reference_insert_pieces): Adjust signature.
18381         (visit_reference_op_call): Adjust.
18382         * tree-ssa-pre.c (get_expr_type): Simplify.
18383         (phi_translate_1): Adjust.
18384         (compute_avail): Likewise.
18385         (translate_vuse_through_block): Do not re-build trees.
18386         (value_dies_in_block_x): Likewise.
18387         * tree-ssa-sccvn.h (struct vn_reference_s): Add type and alias-set
18388         fields.
18389         (vn_reference_lookup_pieces): Adjust declaration.
18390         (vn_reference_insert_pieces): Likewise.
18391
18392 2009-05-28  Benjamin Kosnik  <bkoz@redhat.com>
18393
18394         * tree-ssa-copy.c (replace_exp_1): Move op for warning-free use
18395         with checking disabled.
18396
18397 2009-05-28  Dave Korn  <dave.korn.cygwin@gmail.com>
18398
18399         PR target/37216
18400
18401         * configure.ac (HAVE_GAS_ALIGNED_COMM):  Add autoconf test and
18402         macro definition for support of three-operand format aligned
18403         .comm directive in assembler on cygwin/pe/mingw target OS.
18404         * configure:  Regenerate.
18405         * config.h:  Regenerate.
18406
18407         * config/i386/winnt.c (i386_pe_asm_output_aligned_decl_common):  Use
18408         aligned form of .comm directive if -mpe-aligned-commons is in effect.
18409         * config/i386/cygming.opt (-mpe-aligned-commons):  Add new option.
18410
18411         * doc/invoke.texi (-mpe-aligned-commons):  Document new target option.
18412         * doc/tm.texi (ASM_OUTPUT_COMMON):  Document zero size commons.
18413
18414 2009-05-28  Ira Rosen  <irar@il.ibm.com>
18415
18416         PR tree-optimization/40254
18417         * tree-data-ref.c (dr_analyze_innermost): Take POFFSET into account
18418         in analysis of basic blocks.
18419
18420 2009-05-28  Adam Nemet  <anemet@caviumnetworks.com>
18421
18422         PR middle-end/33699
18423         * target.h (struct gcc_target): Fix indentation.  Add const_anchor.
18424         * target-def.h (TARGET_CONST_ANCHOR): New macro.
18425         (TARGET_INITIALIZER): Use it.
18426         * cse.c (CHEAPER): Move it up to the other macros.
18427         (insert): Rename this ...
18428         (insert_with_costs): ... to this.  Add cost parameters.  Update
18429         function comment.
18430         (insert): New function.  Call insert_with_costs.
18431         (compute_const_anchors, insert_const_anchor, insert_const_anchors,
18432         find_reg_offset_for_const, try_const_anchors): New functions.
18433         (cse_insn): Call try_const_anchors.  Adjust cost of src_related
18434         when using a const-anchor.  Call insert_const_anchors.
18435         * config/mips/mips.c (mips_set_mips16_mode): Set targetm.const_anchor.
18436         * doc/tm.texi (Misc): Document TARGET_CONST_ANCHOR.
18437
18438 2009-05-28  Alexandre Oliva  <aoliva@redhat.com>
18439
18440         * tree-inline.c (remap_decls): Enable nonlocalized variables
18441         when not optimizing.
18442
18443 2009-05-28  Alexandre Oliva  <aoliva@redhat.com>
18444
18445         * tree-ssa-live.c (remove_unused_locals): Skip when not optimizing.
18446         Simplify other tests involving optimize.
18447
18448 2009-05-27  Tom Tromey  <tromey@redhat.com>
18449
18450         * unwind-dw2.c (_Unwind_DebugHook): New function.
18451         (uw_install_context): Call _Unwind_DebugHook.
18452
18453 2009-05-27  Tom Tromey  <tromey@redhat.com>
18454
18455         * system.h (CONST_CAST2): Use C++ const_cast when compiled as C++
18456
18457 2009-05-27  Ian Lance Taylor  <iant@google.com>
18458
18459         * Makefile.in (LINKER, LINKER_FLAGS): Define.
18460         (LINKER_FOR_BUILD, BUILD_LINKERFLAGS): Define.
18461         (ALL_LINKERFLAGS): Define.
18462         (xgcc$(exeext)): Change $(COMPILER) to $(LINKER).
18463         (cpp$(exeext), cc1-dummy$(exeext), cc1$(exeext)): Likewise.
18464         (collect2$(exeext), mips-tfile, mips-tdump): Likewise.
18465         (gcov$(exeext), gcov-dump$(exeext)): Likewise.
18466         (build/gen%$(build_exeext)): Change $(COMPILER_FOR_BUILD) to
18467         $(LINKER_FOR_BUILD).
18468         (build/gcov-iov$(build_exeext)): Likewise.
18469
18470 2009-05-27  Julian Brown  <julian@codesourcery.com>
18471
18472         * gcse.c (target.h): Include.
18473         (can_assign_to_reg_without_clobbers_p): Check that the target allows
18474         copy of argument to a pseudo register.
18475
18476 2009-05-27  Diego Novillo  <dnovillo@google.com>
18477
18478         * tree-ssa-live.c (dump_scope_block): Document arguments.
18479         (dump_scope_blocks): Document.
18480         (debug_scope_blocks): New.
18481         * tree-flow.h (debug_scope_blocks): Declare.
18482
18483 2009-05-21  Denis Chertykov  <denisc@overta.ru>
18484
18485         * doc/contrib.texi (Contributors): Add myself to the list.
18486
18487 2009-05-27  Olivier Hainque  <hainque@adacore.com>
18488
18489         * expr.c (target_align): New function.  Alignment the TARGET of an
18490         assignment may be assume to have.
18491         (highest_pow2_factor_for_target): Use it instead of relying on
18492         immediate tree attributes of TARGET, not necessarily honored when
18493         intermediate bitfields are involved.
18494
18495 2009-05-27  H.J. Lu  <hongjiu.lu@intel.com>
18496
18497         PR target/40266
18498         * config/i386/driver-i386.c (host_detect_local_cpu): Support
18499         AVX, SSE4, AES, PCLMUL and POPCNT.
18500
18501 2009-05-27  Diego Novillo  <dnovillo@google.com>
18502
18503         * tree-pretty-print.c (dump_location): New.
18504         (dump_generic_node): Call it.
18505         Factor code to handle BLOCK nodes ...
18506         (dump_block_node): ... here.
18507
18508 2009-05-27  Rafael Avila de Espindola  <espindola@google.com>
18509
18510         * Makefile.in (GCC_PLUGIN_H): New. Replace all uses of gcc-plugin.h
18511         with it.
18512         * doc/plugins.texi: Document that gcc-plugin.h must be the first to be
18513         included.
18514         * gcc-plugin.h: Include config.h and system.h.
18515         (IN_GCC): Define if not defined.
18516
18517 2009-05-27  Hans-Peter Nilsson  <hp@axis.com>
18518
18519         PR middle-end/40249
18520         * Makefile.in (CRTSTUFF_CFLAGS): Replace -fno-inline-functions
18521         with -fno-inline.
18522
18523 2009-05-27  Shujing Zhao  <pearly.zhao@oracle.com>
18524
18525         * config/m32r/m32r.c: Use REG_P, MEM_P and CONST_INT_P where
18526         applicable.
18527         * config/m32r/m32r.h: Ditto.
18528         * config/m32r/m32r.md: Ditto.
18529         * config/m32r/predicates.md: Ditto.
18530
18531 2009-05-27  Alexandre Oliva  <aoliva@redhat.com>
18532
18533         * cgraph.c (dump_cgraph_node): Honor -fdump-noaddr.
18534
18535 2009-05-26  Basile Starynkevitch  <basile@starynkevitch.net>
18536
18537         * doc/plugins.texi
18538         (Loading plugins): typo.
18539         (Plugin callbacks): Documented PLUGIN_INFO, PLUGIN_GGC_START,
18540         PLUGIN_GGC_MARKING, PLUGIN_GGC_END, PLUGIN_REGISTER_GGC_ROOTS.
18541         (Interacting with the GCC Garbage Collector): Added new section.
18542         (Giving information about a plugin): Added new section for
18543         PLUGIN_INFO.
18544         * ggc.h (ggc_register_root_tab): Added declaration.
18545         * gcc-plugin.h (PLUGIN_GGC_START, PLUGIN_GGC_MARKING)
18546         (PLUGIN_GGC_END, PLUGIN_REGISTER_GGC_ROOTS): Added new events.
18547         (register_callback): Improved comment in declaration.
18548         * ggc-common.c (const_ggc_root_tab_t) Added new typedef for vectors.
18549         (extra_root_vec) Added static variable for dynamic roots registration.
18550         (ggc_register_root_tab) Added new routine.
18551         (ggc_mark_roots) Added iteration inside extra_root_vec, and invoke
18552         PLUGIN_GGC_MARKING event.
18553         * ggc-zone.c: Include plugin.h.
18554         (ggc_collect): Invoke PLUGIN_GGC_START & PLUGIN_GGC_END events.
18555         * ggc-page.c: Include plugin.h.
18556         (ggc_collect): Invoke PLUGIN_GGC_START & PLUGIN_GGC_END events.
18557         * plugin.c (plugin_event_name): added names of PLUGIN_GGC_START,
18558         PLUGIN_GGC_MARKING, PLUGIN_GGC_END, PLUGIN_REGISTER_GGC_ROOTS
18559         (register_callback): check lack of callbacks for
18560         pseudo-events. Added handling of PLUGIN_REGISTER_GGC_ROOTS,
18561         PLUGIN_GGC_START, PLUGIN_GGC_MARKING, PLUGIN_GGC_END.
18562         (invoke_plugin_callbacks): Handle PLUGIN_GGC_START,
18563         PLUGIN_GGC_MARKING, PLUGIN_GGC_END, PLUGIN_REGISTER_GGC_ROOTS.
18564         * Makefile.in (ggc-common.o, ggc-zone.o, ggc-page.o): Added
18565         dependency on plugin.h.
18566         (plugin.o): Added dependency on ggc.h...
18567
18568 2009-05-26  Richard Guenther  <rguenther@suse.de>
18569
18570         PR middle-end/40248
18571         Revert
18572         * expr.c (expand_expr_real_1): Avoid calling do_store_flag
18573         with mismatched comparison modes.
18574
18575         * expr.c (expand_expr_real_1): Expand the operand of a
18576         VIEW_CONVERT_EXPR in its natural mode.
18577
18578 2009-05-26  Ian Lance Taylor  <iant@google.com>
18579
18580         * Makefile.in (COMPILER, COMPILER_FLAGS): Define.
18581         (COMPILER_FOR_BUILD, BUILD_COMPILERFLAGS): Define.
18582         (ALL_COMPILERFLAGS): Define.
18583         (.c.o, xgcc$(exeext), cpp$(exeext)): Use $(COMPILER).
18584         (cc1-dummy$(exeext), cc1$(exeext)): Likewise.
18585         (collect2$(exeext), collect2.o): Likewise.
18586         (c-opts.o, c-cppbuiltin.o, c-pch.o, gcc.o, gccspec.o): Likewise.
18587         (gcc-options.o, version.o, prefix.o, toplev.o): Likewise.
18588         ($(out_object_file), mips-tfile, mips-tdump): Likewise.
18589         (libbackend.o, intl.o, cppdefault.o): Likewise.
18590         (gcov$(exeext), gcov-dump$(exeext)): Likewise.
18591         (build/%.o): Use $(COMPILER_FOR_BUILD).
18592         (build/gen%$(build_exeext)): Likewise.
18593         (build/gcov-iov$(build_exeext)): LIkewise.
18594         * config/t-darwin (darwin.o): Use $(COMPILER).
18595         (darwin-c.o, darwin-f.o, darwin-driver.o): Likewise.
18596         * config/t-sol2 (sol2-c.o): Likewise.
18597         (sol2.o): Likewise.
18598         * config/t-vxworks (vxworks.o): Likewise.
18599         * config/x-darwin (host-darwin.o): Likewise.
18600         * config/x-hpux (host-hpux.o): Likewise.
18601         * config/x-linux (host-linux.o): Likewise.
18602         * config/x-solaris (host-solaris.o): Likewise.
18603         * config/alpha/x-alpha (driver-alpha.o): Likewise.
18604         * config/arm/t-arm (arm-c.o): Likewise.
18605         * config/arm/t-pe (pe.o): Likewise.
18606         * config/arm/t-wince-pe (pe.o): Likewise.
18607         * config/i386/t-cygming (winnt.o): Likewise.
18608         (winnt-cxx.o, winnt-stubs.o, msformat-c.o): Likewise.
18609         * config/i386/t-cygwin (cygwin1.o): Likewise.
18610         (cygwin2.o): Likewise.
18611         * config/i386/t-i386 (i386-c.o): Likewise.
18612         * config/i386/t-interix (winnt.o): Likewise.
18613         * config/i386/t-netware (netware.o): Likewise.
18614         * config/i386/t-nwld (nwld.o): Likewise.
18615         * config/i386/x-darwin (host-i386-darwin.o): Likewise.
18616         * config/i386/x-i386 (driver-i386.o): Likewise.
18617         * config/i386/x-cygwin (host-cygwin.o): Likewise.
18618         * config/i386/x-mingw32 (host-mingw32.o): Likewise.
18619         * config/ia64/t-ia64 (ia64-c.o): Likewise.
18620         * config/m32c/t-m32c (m32c-pragma.o): Likewise.
18621         * config/mips/x-native (driver-native.o): Likewise.
18622         * config/rs6000/t-rs6000 (rs6000-c.o): Likewise.
18623         * config/rs6000/x-darwin (host-ppc-darwin.o): Likewise.
18624         * config/rs6000/x-darwin64 (host-ppc64-darwin.o): Likewise.
18625         * config/rs6000/x-rs6000 (driver-rs6000.o): Likewise.
18626         * config/score/t-score-elf (score7.o): Likewise.
18627         (score3.o): Likewise.
18628         * config/sh/t-sh (sh-c.o): Likewise.
18629         * config/sh/t-symbian (sh-c.o): Likewise.
18630         (symbian.o): Likewise.
18631         * config/spu/t-spu-elf (spu-c.o): Likewise.
18632         * config/v850/t-v850 (v850-c.o): Likewise.
18633         * config/v850/t-v850e (v850-c.o): Likewise.
18634
18635 2009-05-26  Richard Guenther  <rguenther@suse.de>
18636
18637         PR tree-optimization/40122
18638         * tree-ssa-ccp.c (ccp_fold): Fold vector CONSTRUCTORs to
18639         VECTOR_CSTs if possible.
18640         (fold_gimple_assign): Likewise.
18641
18642 2009-05-26  Richard Guenther  <rguenther@suse.de>
18643
18644         PR middle-end/40252
18645         * fold-const.c (fold_binary): Use the correct types for building
18646         rotates.
18647
18648 2009-05-26  Richard Guenther  <rguenther@suse.de>
18649
18650         * tree-vect-data-refs.c (vect_create_data_ref_ptr): Remove
18651         redundant calls to merge_alias_info.
18652         (bump_vector_ptr): Likewise.
18653         * tree-ssa-copy.c (merge_alias_info): Remove.
18654         (replace_exp_1): Remove call to merge_alias_info.
18655         (propagate_tree_value): Likewise.
18656         (fini_copy_prop): Propagate points-to info.
18657         * tree-flow.h (merge_alias_info): Remove.
18658
18659 2009-05-07  Hariharan Sandanagobalane <hariharan@picochip.com>
18660
18661         * config/picochip/picochip.C (PARAM_INLINE_CALL_COST): Remove.
18662
18663 2009-05-25  Jan Hubicka  <jh@suse.cz>
18664
18665         * cgraph.c (dump_cgraph_node): Dump size/time/benefit.
18666         * cgraph.h (struct inline_summary): New filed self_wize,
18667         size_inlining_benefit, self_time and time_inlining_benefit.
18668         (struct cgraph_global_info): Replace insns by time ans size fields.
18669         * ipa-cp (ipcp_cloning_candidate_p): Base estimate on size
18670         (ipcp_estimate_growth, ipcp_insert_stage): Likewise.
18671         (ipcp_update_callgraph): Do not touch function bodies.
18672         * ipa-inline.c: Include except.h
18673         (MAX_TIME): New constant.
18674         (overall_insns): Remove.
18675         (leaf_node_p): New.
18676         (overall_size, max_benefit): New static variables.
18677         (cgraph_estimate_time_after_inlining): New function.
18678         (cgraph_estimate_size_after_inlining): Rewrite using benefits.
18679         (cgraph_clone_inlined_nodes): Update size.
18680         (cgraph_mark_inline_edge): Update size.
18681         (cgraph_estimate_growth): Use size info.
18682         (cgraph_check_inline_limits): Check size.
18683         (cgraph_default_inline_p): Likewise.
18684         (cgraph_edge_badness): Compute badness based on benefit and size cost.
18685         (cgraph_decide_recursive_inlining): Check size.
18686         (cgraph_decide_inlining_of_small_function): Update size; dump sizes
18687         and times.
18688         (cgraph_decide_inlining): Likewise.
18689         (cgraph_decide_inlining_incrementally): Likewise; honor
18690         PARAM_EARLY_INLINING_INSNS.
18691         (likely_eliminated_by_inlining_p): New predicate.
18692         (estimate_function_body_sizes): New function.
18693         (compute_inline_parameters): Use it.
18694         * except.c (must_not_throw_labels): New function.
18695         * except.h (must_not_throw_labels): Declare.
18696         * tree-inline.c (init_inline_once): Kill inlining_weigths
18697         * tree-ssa-structalias.c: Avoid uninitialized warning.
18698         * params.def (PARAM_MAX_INLINE_INSNS_SINGLE): Reduce to 300.
18699         (PARAM_MAX_INLINE_INSNS_AUTO): Reduce to 60.
18700         (PARAM_INLINE_CALL_COST): Remove.
18701         (PARAM_EARLY_INLINING_INSNS): New.
18702
18703 2009-05-25  Richard Guenther  <rguenther@suse.de>
18704
18705         PR tree-optimization/36327
18706         * tree-ssa-alias.c (walk_non_aliased_vuses): Add second walker
18707         callback for reference translation or lookup at the point of may-defs.
18708         * tree-ssa-alias.h (walk_non_aliased_vuses): Adjust prototype.
18709         * tree-ssa-sccvn.c (get_ref_from_reference_ops): Bail out
18710         for union COMPONENT_REFs.
18711         (vn_reference_lookup_3): New callback.  Lookup from memset
18712         and CONSTRUCTOR assignment, translate through struct copies.
18713         (vn_reference_lookup_pieces): Make sure to not free the
18714         passed operands array.  Adjust walk_non_aliased_vuses call.
18715         (vn_reference_lookup): Adjust walk_non_aliased_vuses call,
18716         make sure we do not leak memory.
18717
18718 2009-05-25  Richard Guenther  <rguenther@suse.de>
18719
18720         * tree-ssa-alias.h (dump_points_to_solution): Declare.
18721         * tree-inline.c (expand_call_inline): Reset the escaped and
18722         callused solutions.
18723         * tree-ssa-structalias.c (pass_build_ealias): New.
18724         * tree-pass.h (pass_build_ealias): Declare.
18725         * passes.c (init_optimization_passes): Add PTA during
18726         early optimizations.
18727         * tree-ssa-alias.c (dump_alias_info): Dump the ESCAPED
18728         and CALLUSED solutions.
18729         (dump_points_to_solution): New function, split out from ...
18730         (dump_points_to_info_for): ... here.
18731         * tree-parloops.c (parallelize_loops): Reset the escaped and
18732         callused solutions.
18733
18734 2009-05-25  Rainer Orth  <ro@TechFak.Uni-Bielefeld.DE>
18735
18736         PR bootstrap/40027
18737         * config/i386/i386.c (USE_HIDDEN_LINKONCE): Only define if missing.
18738         * config/i386/sol2.h [!TARGET_GNU_LD] (USE_HIDDEN_LINKONCE): Define.
18739
18740 2009-05-25  Ira Rosen  <irar@il.ibm.com>
18741
18742         PR tree-optimization/40238
18743         * tree-vect-stmts.c (vect_init_vector): Insert initialization
18744         statements after basic block's labels.
18745         * tree-vect-slp.c (vect_slp_transform_bb): Call destroy_bb_vec_info()
18746         to free the allocated memory.
18747
18748 2009-05-24  Kaz Kojima  <kkojima@gcc.gnu.org>
18749
18750         * gcc/config/sh/sh.c (sh_set_return_address): Mark store of
18751         return address with a USE.
18752
18753 2009-05-24  Richard Guenther  <rguenther@suse.de>
18754
18755         PR middle-end/40233
18756         * tree.c (make_vector_type): Build the TYPE_DEBUG_REPRESENTATION_TYPEs
18757         array type from the main variant of the inner type.
18758
18759 2009-05-24  Jan-Benedict Glaw  <jbglaw@lug-owl.de>
18760
18761         * config/vax/vax-protos.h (legitimate_constant_address_p): Change
18762         definition to bool (from int) to un-break build.
18763         (legitimate_constant_p, vax_mode_dependent_address_p): Likewise.
18764
18765 2009-05-24  Paolo Bonzini  <bonzini@gnu.org>
18766
18767         * tree-ssa-operands.h (push_stmt_changes, pop_stmt_changes,
18768         discard_stmt_changes): Delete.
18769         * tree-ssa-operands.c (scb_stack): Delete.
18770         (init_ssa_operands): Do not initialize it.
18771         (fini_ssa_operands): Do not free it.
18772         (push_stmt_changes, pop_stmt_changes, discard_stmt_changes): Delete.
18773
18774         * tree-cfg.c (replace_uses_by): Replace pop_stmt_changes with
18775         update_stmt, remove the others.  Fix comments.
18776         * tree-dfa.c (optimize_stack_restore): Likewise.
18777         * tree-ssa-forwprop.c (forward_propagate_addr_expr): Likewise.
18778         * tree-ssa-loop-ivopts.c (rewrite_use): Likewise.
18779         * tree-ssa-dce.c (eliminate_unnecessary_stmts): Likewise.
18780         * tree-ssa-ccp.c (optimize_stack_restore, execute_fold_all_builtins):
18781         Likewise.
18782         * tree-ssa-propagate.c (substitute_and_fold): Likewise.
18783         * tree-ssa-dom.c (propagate_rhs_into_lhs): Likewise.
18784         (dom_opt_finalize_block): Likewise, adjusting access to
18785         stmts_to_rescan.
18786         (optimize_stmt): Likewise, adjusting access to stmts_to_rescan.
18787         (stmts_to_rescan): Change item type to gimple.
18788         (tree_ssa_dominator_optimize): Change type of stmts_to_rescan.
18789
18790 2009-05-24  Ira Rosen  <irar@il.ibm.com>
18791
18792         * doc/passes.texi (Tree-SSA passes): Document SLP pass.
18793         * tree-pass.h (pass_slp_vectorize): New pass.
18794         * params.h (SLP_MAX_INSNS_IN_BB): Define.
18795         * timevar.def (TV_TREE_SLP_VECTORIZATION): Define.
18796         * tree-vectorizer.c (timevar.h): Include.
18797         (user_vect_verbosity_level): Declare.
18798         (vect_location): Fix comment.
18799         (vect_set_verbosity_level): Update user_vect_verbosity_level
18800         instead of vect_verbosity_level.
18801         (vect_set_dump_settings): Add an argument. Ignore user defined
18802         verbosity if dump flags require higher level of verbosity. Print to
18803         stderr only for loop vectorization.
18804         (vectorize_loops): Update call to vect_set_dump_settings.
18805         (execute_vect_slp): New function.
18806         (gate_vect_slp): Likewise.
18807         (struct gimple_opt_pass pass_slp_vectorize): New.
18808         * tree-vectorizer.h (struct _bb_vec_info): Define along macros to
18809         access its members.
18810         (vec_info_for_bb): New function.
18811         (struct _stmt_vec_info): Add bb_vinfo and a macro for its access.
18812         (VECTORIZATION_ENABLED): New macro.
18813         (SLP_ENABLED, SLP_DISABLED): Likewise.
18814         (vect_is_simple_use): Add bb_vec_info argument.
18815         (new_stmt_vec_info, vect_analyze_data_ref_dependences,
18816         vect_analyze_data_refs_alignment, vect_verify_datarefs_alignment,
18817         vect_analyze_data_ref_accesses, vect_analyze_data_refs,
18818         vect_schedule_slp, vect_analyze_slp): Likewise.
18819         (vect_analyze_stmt): Add slp_tree argument.
18820         (find_bb_location): Declare.
18821         (vect_slp_analyze_bb, vect_slp_transform_bb): Likewise.
18822         * tree-vect-loop.c (new_loop_vec_info): Adjust function calls.
18823         (vect_analyze_loop_operations, vect_analyze_loop,
18824         get_initial_def_for_induction, vect_create_epilog_for_reduction,
18825         vect_finalize_reduction, vectorizable_reduction,
18826         vectorizable_live_operation, vect_transform_loop): Likewise.
18827         * tree-data-ref.c (dr_analyze_innermost): Update comment,
18828         skip evolution analysis if analyzing a basic block.
18829         (dr_analyze_indices): Likewise.
18830         (initialize_data_dependence_relation): Skip the test whether the
18831         object is invariant for basic blocks.
18832         (compute_all_dependences): Skip dependence analysis for data
18833         references in basic blocks.
18834         (find_data_references_in_stmt): Don't fail in case of invariant
18835         access in basic block.
18836         (find_data_references_in_bb): New function.
18837         (find_data_references_in_loop): Move code to
18838         find_data_references_in_bb and add a call to it.
18839         (compute_data_dependences_for_bb): New function.
18840         * tree-data-ref.h (compute_data_dependences_for_bb): Declare.
18841         * tree-vect-data-refs.c (vect_check_interleaving): Adjust to the case
18842         that STEP is 0.
18843         (vect_analyze_data_ref_dependence): Check for interleaving in case of
18844         unknown dependence in basic block and fail in case of dependence in
18845         basic block.
18846         (vect_analyze_data_ref_dependences): Add bb_vinfo argument, get data
18847         dependence instances from either loop or basic block vectorization
18848         info.
18849         (vect_compute_data_ref_alignment): Check if it is loop vectorization
18850         before calling nested_in_vect_loop_p.
18851         (vect_compute_data_refs_alignment): Add bb_vinfo argument, get data
18852         dependence instances from either loop or basic block vectorization
18853         info.
18854         (vect_verify_datarefs_alignment): Likewise.
18855         (vect_enhance_data_refs_alignment): Adjust function calls.
18856         (vect_analyze_data_refs_alignment): Likewise.
18857         (vect_analyze_group_access): Fix printing. Skip different checks if
18858         DR_STEP is 0. Keep strided stores either in loop or basic block
18859         vectorization data structure. Fix indentation.
18860         (vect_analyze_data_ref_access): Fix comments, allow zero step in
18861         basic blocks.
18862         (vect_analyze_data_ref_accesses): Add bb_vinfo argument, get data
18863         dependence instances from either loop or basic block vectorization
18864         info.
18865         (vect_analyze_data_refs): Update comment. Call
18866         compute_data_dependences_for_bb to analyze basic blocks.
18867         (vect_create_addr_base_for_vector_ref): Check for outer loop only in
18868         case of loop vectorization. In case of basic block vectorization use
18869         data-ref itself as a base.
18870         (vect_create_data_ref_ptr): In case of basic block vectorization:
18871         don't advance the pointer, add new statements before the current
18872         statement.  Adjust function calls.
18873         (vect_supportable_dr_alignment): Support only aligned accesses in
18874         basic block vectorization.
18875         * common.opt (ftree-slp-vectorize): New flag.
18876         * tree-vect-patterns.c (widened_name_p): Adjust function calls.
18877         (vect_pattern_recog_1): Likewise.
18878         * tree-vect-stmts.c (process_use): Likewise.
18879         (vect_init_vector): Add new statements in the beginning of the basic
18880         block in case of basic block SLP.
18881         (vect_get_vec_def_for_operand): Adjust function calls.
18882         (vect_finish_stmt_generation): Likewise.
18883         (vectorizable_call): Add assert that it is loop vectorization, adjust
18884         function calls.
18885         (vectorizable_conversion, vectorizable_assignment): Likewise.
18886         (vectorizable_operation): In case of basic block SLP, take
18887         vectorization factor from statement's type and skip the relevance
18888         check. Adjust function calls.
18889         (vectorizable_type_demotion): Add assert that it is loop
18890         vectorization, adjust function calls.
18891         (vectorizable_type_promotion): Likewise.
18892         (vectorizable_store): Check for outer loop only in case of loop
18893         vectorization. Adjust function calls. For basic blocks, skip the
18894         relevance check and don't advance pointers.
18895         (vectorizable_load): Likewise.
18896         (vectorizable_condition): Add assert that it is loop vectorization,
18897         adjust function calls.
18898         (vect_analyze_stmt): Add argument. In case of basic block SLP, check
18899         that it is not reduction, get vector type, call only supported
18900         functions, skip loop specific parts.
18901         (vect_transform_stmt): Check for outer loop only in case of loop
18902         vectorization.
18903         (new_stmt_vec_info): Add new argument and initialize bb_vinfo.
18904         (vect_is_simple_use): Fix comment, add new argument, fix conditions
18905         for external definition.
18906         * passes.c (pass_slp_vectorize): New pass.
18907         * tree-vect-slp.c (find_bb_location): New function.
18908         (vect_get_and_check_slp_defs): Add argument, adjust function calls,
18909         check for patterns only in loops.
18910         (vect_build_slp_tree): Add argument, adjust function calls, fail in
18911         case of multiple types in basic block SLP.
18912         (vect_mark_slp_stmts_relevant): New function.
18913         (vect_supported_load_permutation_p): Fix comment.
18914         (vect_analyze_slp_instance): Add argument. In case of basic block
18915         SLP, take vectorization factor from statement's type, check that
18916         unrolling factor is 1. Adjust function call. Save SLP instance in
18917         either loop or basic block vectorization structure. Return FALSE,
18918         if SLP failed.
18919         (vect_analyze_slp): Add argument. Get strided stores groups from
18920         either loop or basic block vectorization structure. Return FALSE
18921         if basic block SLP failed.
18922         (new_bb_vec_info): New function.
18923         (destroy_bb_vec_info, vect_slp_analyze_node_operations,
18924         vect_slp_analyze_operations, vect_slp_analyze_bb): Likewise.
18925         (vect_schedule_slp): Add argument. Get SLP instances from either
18926         loop or basic block vectorization structure. Set vectorization factor
18927         to be 1 for basic block SLP.
18928         (vect_slp_transform_bb): New function.
18929         * params.def (PARAM_SLP_MAX_INSNS_IN_BB): Define.
18930
18931 2009-05-23  Mark Mitchell  <mark@codesourcery.com>
18932
18933         * final.c (shorten_branches): Do not align labels for jump tables.
18934         (final_scan_insn): Use JUMP_TABLE_DATA_P.
18935
18936 2009-05-23  Eric Botcazou  <ebotcazou@adacore.com>
18937
18938         * doc/passes.texi: Standardize spelling of RTL, Tree and Tree SSA.
18939         Remove outdated reference to flow.c and fix nits.
18940         * doc/gccint.texi: Tweak RTL description.
18941         * doc/rtl.texi: Likewise.
18942
18943 2009-05-23  Denis Chertykov  <chertykov@gmail.com>
18944
18945         * config/avr/avr.c: Change my email address.
18946         * config/avr/avr.h: Likewise.
18947         * config/avr/avr.md: Likewise.
18948         * config/avr/avr-protos.h: Likewise.
18949         * config/avr/libgcc.S: Likewise.
18950
18951 2009-05-22  Trevor Smigiel <Trevor_Smigiel@playstation.sony.com>
18952
18953         * config/spu/spu-protos.h (aligned_mem_p, spu_valid_mov): Remove.
18954         (spu_split_load, spu_split_store): Change return type to int.
18955         (spu_split_convert): Declare.
18956         * config/spu/predicates.md (spu_mem_operand): Remove.
18957         (spu_mov_operand): Update.
18958         (spu_dest_operand, shiftrt_operator, extend_operator): Define.
18959         * config/spu/spu.c (regno_aligned_for_load): Remove.
18960         (reg_aligned_for_addr, spu_expand_load): Define.
18961         (spu_expand_extv): Reimplement and handle MEM.
18962         (spu_expand_insv): Handle MEM.
18963         (spu_sched_reorder): Handle insn's with length 0.
18964         (spu_legitimate_address_p): Reimplement.
18965         (store_with_one_insn_p): Return TRUE for any mode with size
18966         larger than 16 bytes.
18967         (address_needs_split): Define.
18968         (spu_expand_mov): Call spu_split_load and spu_split_store for MEM
18969         operands.
18970         (spu_convert_move): Define.
18971         (spu_split_load): Use spu_expand_load and change all MEM's to TImode.
18972         (spu_split_store): Change all MEM's to TImode.
18973         (spu_init_expanders): Preallocate registers that correspond to
18974         LAST_VIRTUAL_REG+1 and LAST_VIRTUAL_REG+2 and set them with
18975         mark_reg_pointer.
18976         (spu_split_convert): Define.
18977         * config/spu/spu.md (QHSI, QHSDI): New mode iterators.
18978         (_move<mode>, _movdi, _movti): Update predicate and condition.
18979         (load, store): Change to define_split.
18980         (extendqiti2, extendhiti2, extendsiti2, extendditi2): Simplify to
18981         extend<mode>ti2.
18982         (zero_extendqiti2, zero_extendhiti2, <v>lshr<mode>3_imm): Define.
18983         (lshr<mode>3, lshr<mode>3_imm, lshr<mode>3_re): Simplify to one
18984         define_insn_and_split of lshr<mode>3.
18985         (shrqbybi_<mode>, shrqby_<mode>): Simplify to define_expand.
18986         (<v>ashr<mode>3_imm): Define.
18987         (extv, extzv, insv): Allow MEM operands.
18988         (trunc_shr_ti<mode>, trunc_shr_tidi, shl_ext_<mode>ti,
18989         shl_ext_diti, sext_trunc_lshr_tiqisi, zext_trunc_lshr_tiqisi,
18990         sext_trunc_lshr_tihisi, zext_trunc_lshr_tihisi): Define for combine.
18991         (_spu_convert2): Change to define_insn_and_split and remove the
18992         corresponding define_peephole2.
18993         (stack_protect_set, stack_protect_test, stack_protect_test_si):
18994         Change predicates to memory_operand.
18995
18996 2009-05-22  Mark Mitchell  <mark@codesourcery.com>
18997
18998         * config/arm/thumb2.md: Add 16-bit multiply instructions.
18999
19000 2009-05-21  Michael Meissner  <meissner@linux.vnet.ibm.com>
19001
19002         PR tree-optimization/40219
19003         * tree.c (iterative_hash_expr): Make sure the builtin function is
19004         a normal builtin function and not a front end or back end builtin
19005         before indexing into the built_in_decls array.
19006
19007 2009-05-22  Richard Guenther  <rguenther@suse.de>
19008
19009         PR middle-end/38964
19010         * alias.c (write_dependence_p): Do not use TBAA for answering
19011         anti-dependence or output-dependence.
19012         * tree-ssa-structalias.c (set_uids_in_ptset): Remove TBAA pruning code.
19013         (emit_pointer_definition): Remove.
19014         (emit_alias_warning): Likewise.
19015         (find_what_var_points_to): Remove TBAA pruning code.
19016         (find_what_p_points_to): Likewise.  Do not warn about strict-aliasing
19017         violations.
19018         (compute_points_to_sets): Remove code computing the set of
19019         dereferenced pointers.
19020         * tree-data-ref.c (dr_may_alias_p): Properly use the split
19021         oracle for querying anti and output dependencies.
19022         * tree-ssa-alias.c (refs_may_alias_p_1): Add argument specifying
19023         if TBAA may be applied.
19024         (refs_anti_dependent_p): New function.
19025         (refs_output_dependent_p): Likewise.
19026         * tree-ssa-alias.h (refs_anti_dependent_p): Declare.
19027         (refs_output_dependent_p): Likewise.
19028         * doc/tree-ssa.texi (Memory model): New section.
19029         * doc/c-tree.texi (CHANGE_DYNAMIC_TYPE_EXPR): Remove.
19030         * doc/gimple.texi (GIMPLE_CHANGE_DYNAMIC_TYPE): Remove.
19031         * cfgexpand.c (expand_gimple_basic_block): Do not handle
19032         GIMPLE_CHANGE_DYNAMIC_TYPE or CHANGE_DYNAMIC_TYPE_EXPR.
19033         * expr.c (expand_expr_real_1): Likewise.
19034         * gimple-low.c (lower_stmt): Likewise.
19035         * gimple-pretty-print.c (dump_gimple_stmt): Likewise.
19036         (dump_gimple_cdt): Remove.
19037         * gimple.c (gss_for_code): Do not handle GIMPLE_CHANGE_DYNAMIC_TYPE.
19038         (gimple_size): Likewise.
19039         (walk_gimple_op): Likewise.
19040         (is_gimple_stmt): Likewise.
19041         (walk_stmt_load_store_addr_ops): Likewise.
19042         (gimple_build_cdt): Remove.
19043         * gimple.def (GIMPLE_CHANGE_DYNAMIC_TYPE): Remove.
19044         * gimple.h (gimple_cdt_new_type): Remove.
19045         (gimple_cdt_new_type_ptr): Likewise.
19046         (gimple_cdt_set_new_type): Likewise.
19047         (gimple_cdt_location): Likewise.
19048         (gimple_cdt_location_ptr): Likewise.
19049         (gimple_cdt_set_location): Likewise.
19050         * gimplify.c (gimplify_expr): Do not handle CHANGE_DYNAMIC_TYPE_EXPR.
19051         * tree-cfg.c (remove_useless_stmts_1): Do not handle
19052         GIMPLE_CHANGE_DYNAMIC_TYPE.
19053         (verify_types_in_gimple_stmt): Likewise.
19054         * tree-inline.c (estimate_num_insns): Likewise.
19055         (expand_call_inline): Do not copy DECL_NO_TBAA_P.
19056         (copy_decl_to_var): Likewise.
19057         (copy_result_decl_to_var): Likewise.
19058         * tree-pretty-print.c (dump_generic_node): Do not handle
19059         CHANGE_DYNAMIC_TYPE_EXPR.
19060         * tree-ssa-dce.c (mark_stmt_if_obviously_necessary): Likewise.
19061         * tree-ssa-operands.c (get_expr_operands): Likewise.
19062         * tree-ssa-structalias.c (struct variable_info): Remove
19063         no_tbaa_pruning member.
19064         (new_var_info): Do not set it based on DECL_NO_TBAA_P.
19065         (unify_nodes): Do not copy it.
19066         (find_func_aliases): Do not handle GIMPLE_CHANGE_DYNAMIC_TYPE.
19067         (dump_solution_for_var): Do not dump no_tbaa_pruning state.
19068         (set_uids_in_ptset): Do not check it.
19069         (find_what_var_points_to): Likewise.
19070         (compute_tbaa_pruning): Remove.
19071         (compute_points_to_sets): Do not call it.
19072         * tree.c (walk_tree_1): Do not handle CHANGE_DYNAMIC_TYPE_EXPR.
19073         * tree.def (CHANGE_DYNAMIC_TYPE_EXPR): Remove.
19074         * tree.h (CHANGE_DYNAMIC_TYPE_NEW_TYPE): Remove.
19075         (CHANGE_DYNAMIC_TYPE_LOCATION): Likewise.
19076         (DECL_NO_TBAA_P): Likewise.
19077         (struct tree_decl_common): Move no_tbaa_flag to unused flags section.
19078         * omp-low.c (copy_var_decl): Do not copy DECL_NO_TBAA_P.
19079         (expand_omp_atomic_pipeline): Do not set it.
19080         * print-tree.c (print_node): Do not dump it.
19081         * tree-ssa-copyrename.c (copy_rename_partition_coalesce): Remove
19082         redundant check.
19083
19084 2009-05-22 Vladimir Makarov <vmakarov@redhat.com>
19085
19086         PR target/39856
19087         * reg-stack.c (subst_stack_regs_pat): Remove gcc_assert for note
19088         for clobber.
19089
19090 2009-05-22  Mark Mitchell  <mark@codesourcery.com>
19091
19092         * tree.c (handle_dll_attribute): Mark dllexport'd inlines as
19093         non-external.
19094
19095 2009-05-22  Ben Elliston  <bje@au.ibm.com>
19096
19097         * Makefile.in (bversion.h, s-bversion): New targets.
19098         (TOPLEV_H): Add bversion.h.
19099         * toplev.h: Include "bversion.h".
19100         (ATTRIBUTE_GCC_DIAG): When building with checking disabled, use
19101         the __format__ attribute only if compiling with the same version
19102         of GCC as the sources (the "build version").
19103
19104 2009-05-22  Ben Elliston  <bje@au.ibm.com>
19105
19106         * c-format.c (handle_format_attribute): Fix comment typo.
19107
19108 2009-05-21  Steve Ellcey  <sje@cup.hp.com>
19109
19110         PR target/37846
19111         * config/ia64/ia64.opt (mfused-madd): New.
19112         * config/ia64/ia64.h (TARGET_DEFAULT): Set MASK_FUSED_MADD.
19113         * config/ia64/hpux.h (TARGET_DEFAULT): Ditto.
19114         * config/ia64/ia64.md (maddsf4, msubsf4, nmaddsf4,
19115         madddf4, madddf4_trunc, msubdf4, msubdf4_trunc, nmadddf4,
19116         nmadddf4_truncsf, maddxf4, maddxf4_truncsf, maddxf4_truncdf,
19117         msubxf4, msubxf4_truncsf msubxf4_truncdf, nmaddxf4,
19118         nmaddxf4_truncsf, nmaddxf4_truncdf): Check TARGET_FUSED_MADD.
19119         * config/ia64/vect.md (addv2sf3, subv2sf3): Force fpma/fpms
19120         instruction if !TARGET_FUSED_MADD.
19121         (fpma, fpms): Remove colon from name.
19122
19123 2009-05-22  Richard Guenther  <rguenther@suse.de>
19124
19125         * tree-ssa-sccvn.c (copy_reference_ops_from_ref): Record
19126         TMR_ORIGINAL.  Always either record TMR_SYMBOL or TMR_BASE.
19127         * tree-ssa-pre.c (create_component_ref_by_pieces_1): Handle
19128         TARGET_MEM_REF.
19129         (create_expression_by_pieces): Only convert if necessary.
19130         * gimplify.c (gimplify_expr): Handle TARGET_MEM_REF.
19131         * tree-ssa-loop-im.c (gen_lsm_tmp_name): Handle INTEGER_CST.
19132
19133 2009-05-21  Adam Nemet  <anemet@caviumnetworks.com>
19134
19135         * config/mips/mips.md (*extzv_trunc<mode>_exts): Turn into a
19136         regular pattern from a template and rename it ...
19137         (*extzv_truncsi_exts): ... to this.
19138
19139 2009-05-21  Richard Guenther  <rguenther@suse.de>
19140
19141         * cgraph.h (struct cgraph_node): Remove inline_decl member.
19142         * ipa-inline.c (cgraph_mark_inline_edge): Do not check it.
19143         (cgraph_default_inline_p): Likewise.
19144         (cgraph_decide_inlining_incrementally): Likewise.
19145
19146 2009-05-21  H.J. Lu  <hongjiu.lu@intel.com>
19147             Uros Bizjak  <ubizjak@gmail.com>
19148
19149         * config/i386/cpuid.h (bit_MOVBE): New.
19150
19151         * config/i386/driver-i386.c (host_detect_local_cpu): Check movbe.
19152
19153         * config/i386/i386.c (OPTION_MASK_ISA_MOVBE_SET): New.
19154         (OPTION_MASK_ISA_MOVBE_UNSET): Likewise.
19155         (ix86_handle_option): Handle OPT_mmovbe.
19156         (ix86_target_string): Add -mmovbe.
19157         (pta_flags): Add PTA_MOVBE.
19158         (processor_alias_table): Add PTA_MOVBE to "atom".
19159         (override_options): Handle PTA_MOVBE.
19160
19161         * config/i386/i386.h (TARGET_MOVBE): New.
19162
19163         * config/i386/i386.md (bswapsi2): Check TARGET_MOVBE.
19164         (*bswapsi_movbe): New.
19165         (*bswapdi_movbe): Likewise.
19166         (bswapdi2): Renamed to ...
19167         (*bswapdi_1): This.
19168         (bswapdi2): New expander.
19169
19170         * config/i386/i386.opt (mmovbe): New.
19171
19172         * doc/invoke.texi: Document -mmovbe.
19173
19174 2009-05-21  Taras Glek  <tglek@mozilla.com>
19175
19176         * plugin.c (try_init_one_plugin): Updated to new plugin_init API.
19177         * gcc-plugin.h (plugin_init): Updated signature.
19178         * gcc-plugin.h (plugin_name_args): Moved to this header.
19179         * doc/plugins.texi (plugin_init): Updated documention to reflect
19180         API change.
19181         * doc/plugins.texi (plugin_name_args): Added to documention.
19182
19183 2009-05-21  Mark Mitchell  <mark@codesourcery.com>
19184
19185         * config/arm/neon.md (*mul<mode>3add<mode>_neon): New pattern.
19186         (*mul<mode>3neg<mode>add<mode>_neon): Likewise.
19187
19188 2009-05-21  Shujing Zhao  <pearly.zhao@oracle.com>
19189
19190         * config/i386/i386.c: Use REG_P, MEM_P, CONST_INT_P, LABEL_P and
19191         JUMP_TABLE_DATA_P predicates where applicable.
19192         * config/i386/predicates.md: Ditto.
19193         * config/i386/sse.md: Ditto.
19194
19195 2009-05-21  Jakub Jelinek  <jakub@redhat.com>
19196
19197         * config/i386/i386.md (adddi_4_rex64, addsi_4, addhi_4): For
19198         operand2 -128 override length_immediate attribute to 1.
19199         * config/i386/predicates.md (constm128_operand): New predicate.
19200
19201         * config/i386/i386.c (memory_address_length): Handle %r12
19202         the same as %rsp and %r13 the same as %rbp.  For %rsp and %rbp
19203         also check REGNO.
19204         (ix86_attr_length_address_default): For MODE_SI lea in 64-bit
19205         mode look through optional ZERO_EXTEND and SUBREG.
19206         * config/i386/i386.md (R12_REG): New define_constant.
19207         (prefix_data16): For sse unit set also for MODE_TI insns.
19208         (prefix_rex): For -m32 always return 0.  For TYPE_IMOVX
19209         insns set if operand 1 is ext_QIreg_operand.
19210         (modrm): For TYPE_IMOV clear only if not MODE_DI.  For
19211         TYPE_{ALU{,1},ICMP,TEST} insn clear if there is non-shortened
19212         immediate.
19213         (*movdi_extzv_1, zero_extendhidi2, zero_extendqidi2): Change
19214         mode from MODE_DI to MODE_SI.
19215         (movdi_1_rex64): Override modrm and length_immediate attributes
19216         only for movabs (TYPE_IMOV, alternative 2).
19217         (zero_extendsidi2_rex64): Clear prefix_0f attribute if TYPE_IMOVX.
19218         (*float<SSEMODEI24:mode><MODEF:mode>2_mixed_interunit,
19219         *float<SSEMODEI24:mode><MODEF:mode>2_mixed_nointerunit,
19220         *float<SSEMODEI24:mode><MODEF:mode>2_sse_interunit,
19221         *float<SSEMODEI24:mode><MODEF:mode>2_sse_nointerunit): Set
19222         prefix_rex attribute if DImode.
19223         (*adddi_1_rex64, *adddi_2_rex64, *adddi_3_rex64, *adddi_5_rex64,
19224         *addsi_1, *addsi_1_zext, *addsi_2, *addsi_2_zext, *addsi_3,
19225         *addsi_3_zext, *addsi_5, *addhi_1_lea, *addhi_1, *addhi_2, *addhi_3,
19226         *addhi_5, *addqi_1_lea, *addqi_1): Override length_immediate
19227         attribute to 1 if TYPE_ALU and operand 2 is const128_operand.
19228         (pro_epilogue_adjust_stack_1, pro_epilogue_adjust_stack_rex64):
19229         Likewise.  For TYPE_IMOV clear length_immediate attribute.
19230         (*ashldi3_1_rex64, *ashldi3_cmp_rex64, *ashldi3_cconly_rex64,
19231         *ashlsi3_1, *ashlsi3_1_zext, *ashlsi3_cmp, **ashlsi3_cconly,
19232         *ashlsi3_cmp_zext, *ashlhi3_1_lea, *ashlhi3_1, *ashlhi3_cmp,
19233         *ashlhi3_cconly, *ashlqi3_1_lea, *ashlqi3_1, *ashlqi3_cmp,
19234         *ashlqi3_cconly): Override length_immediate attribute to 0 if TYPE_ALU
19235         or one operand TYPE_ISHIFT.
19236         (*ashrdi3_1_one_bit_rex64, *ashrdi3_one_bit_cmp_rex64,
19237         *ashrdi3_one_bit_cconly_rex64, *ashrsi3_1_one_bit,
19238         *ashrsi3_1_one_bit_zext, *ashrsi3_one_bit_cmp,
19239         *ashrsi3_one_bit_cconly, *ashrsi3_one_bit_cmp_zext,
19240         *ashrhi3_1_one_bit, *ashrhi3_one_bit_cmp, *ashrhi3_one_bit_cconly,
19241         *ashrqi3_1_one_bit, *ashrqi3_1_one_bit_slp, *ashrqi3_one_bit_cmp,
19242         *ashrqi3_one_bit_cconly, *lshrdi3_1_one_bit_rex64,
19243         *lshrdi3_cmp_one_bit_rex64, *lshrdi3_cconly_one_bit_rex64,
19244         *lshrsi3_1_one_bit, *lshrsi3_1_one_bit_zext, *lshrsi3_one_bit_cmp,
19245         *lshrsi3_one_bit_cconly, *lshrsi3_cmp_one_bit_zext,
19246         *lshrhi3_1_one_bit, *lshrhi3_one_bit_cmp, *lshrhi3_one_bit_cconly,
19247         *lshrqi3_1_one_bit, *lshrqi3_1_one_bit_slp, *lshrqi2_one_bit_cmp,
19248         *lshrqi2_one_bit_cconly, *rotlsi3_1_one_bit_rex64, *rotlsi3_1_one_bit,
19249         *rotlsi3_1_one_bit_zext, *rotlhi3_1_one_bit, *rotlqi3_1_one_bit_slp,
19250         *rotlqi3_1_one_bit, *rotrdi3_1_one_bit_rex64, *rotrsi3_1_one_bit,
19251         *rotrsi3_1_one_bit_zext, *rotrhi3_one_bit, *rotrqi3_1_one_bit,
19252         *rotrqi3_1_one_bit_slp): Override length_immediate attribute to 0,
19253         set mode attribute, don't override length attribute.
19254         (*btsq, *btrq, *btcq, *btdi_rex64, *btsi): Set prefix_0f attribute
19255         to 1.
19256         (return_internal_long): Set length attribute to 2 instead of 1.
19257         (*strmovqi_rex_1, *strsetqi_rex_1, *rep_stosqi_rex64,
19258         *cmpstrnqi_nz_rex_1, *cmpstrnqi_rex_1, *strlenqi_rex_1): Clear
19259         prefix_rex attribute.
19260         * config/i386/predicates.md (ext_QIreg_operand, const128_operand):
19261         New predicates.
19262         (memory_displacement_only_operand): Always return 0 for TARGET_64BIT.
19263
19264 2009-05-21  Ramana Radhakrishnan  <ramana.radhakrishnan@arm.com>
19265
19266         * config/arm/thumb2.md (orsi_notsi_si): Fix typo in pattern.
19267
19268 2009-05-20  Ian Lance Taylor  <iant@google.com>
19269
19270         * tree.c (build_tree_list_vec_stat): New function.
19271         (ctor_to_vec): New function.
19272         (build_nt_call_vec): New function.
19273         (build_call_array): Change args to be a const pointer.
19274         (build_call_vec): New function.
19275         * tree.h (build_nt_call_vec): Declare.
19276         (build_tree_list_vec_stat): Declare.
19277         (build_tree_list_vec): Define.
19278         (build_call_array): Update declaration.
19279         (build_call_vec): Declare.
19280         (ctor_to_vec): Declare.
19281         * c-common.c (tree_vector_cache): New static variable.
19282         (make_tree_vector): New function.
19283         (release_tree_vector): New function.
19284         (make_tree_vector_single): New function.
19285         (make_tree_vector_copy): New function.
19286         * c-common.h (tree_vector_cache, make_tree_vector): Declare.
19287         (make_tree_vector_single, make_tree_vector_copy): Declare.
19288         * c-parser.c (cached_expr_list_1, cached_expr_list_2): Remove.
19289         (c_parser_expr_list): Don't manage cache here, instead call
19290         make_tree_vector.
19291         (c_parser_release_expr_list): Remove static function.
19292         (c_parser_vec_to_tree_list): Remove static function.
19293         (c_parser_attributes): Call build_tree_list_vec instead of
19294         c_parser_vec_to_tree_list.  Call release_tree_vector instead of
19295         c_parser_release_expr_list.
19296         (c_parser_postfix_expression_after_primary): Likewise.
19297         (c_parser_objc_keywordexpr): Likewise.
19298
19299 2009-05-20  Sandra Loosemore  <sandra@codesourcery.com>
19300
19301         * doc/tm.texi (Misc): Document TARGET_INVALID_PARAMETER_TYPE,
19302         TARGET_INVALID_RETURN_TYPE, TARGET_PROMOTED_TYPE, and
19303         TARGET_CONVERT_TO_TYPE.
19304         * hooks.c (hook_tree_const_tree_null): Define.
19305         * hooks.h (hook_tree_const_tree_null): Declare.
19306         * target.h (struct gcc_target):  Add invalid_parameter_type,
19307         invalid_return_type, promoted_type, and convert_to_type fields.
19308         * target-def.h (TARGET_INVALID_PARAMETER_TYPE): Define.
19309         (TARGET_INVALID_RETURN_TYPE): Define.
19310         (TARGET_PROMOTED_TYPE): Define.
19311         (TARGET_CONVERT_TO_TYPE): Define.
19312         (TARGET_INITIALIZER): Update for new fields.
19313         * c-decl.c (grokdeclarator): Check targetm.invalid_return_type.
19314         (grokparms): Check targetm.invalid_parameter_type.
19315         * c-typeck.c (default_conversion): Check targetm.promoted_type.
19316         * c-convert.c (convert): Check targetm.convert_to_type.
19317
19318 2009-05-20  Adam Nemet  <anemet@caviumnetworks.com>
19319
19320         * config/mips/mips.md (*extenddi_truncate<mode>,
19321         *extendsi_truncate<mode>): Emit exts if supported.  Add attribute
19322         defintions.
19323         (*extendhi_truncateqi): New define_insn_and_sptit.
19324
19325 2009-05-20  Jakub Jelinek  <jakub@redhat.com>
19326
19327         PR middle-end/40204
19328         * fold-const.c (fold_binary) <case BIT_AND_EXPR>: Avoid infinite
19329         recursion if build_int_cst_type returns the same INTEGER_CST as arg1.
19330
19331 2009-05-20  Eric Botcazou  <ebotcazou@adacore.com>
19332
19333         * fold-const.c (build_fold_addr_expr_with_type): Take the address of
19334         the operand of VIEW_CONVERT_EXPR.
19335
19336 2009-05-20  H.J. Lu  <hongjiu.lu@intel.com>
19337
19338         * config/i386/driver-i386.c (host_detect_local_cpu): Check
19339         extended family and model for Intel processors.  Support Intel Atom.
19340
19341 2009-05-20  Olivier Hainque  <hainque@adacore.com>
19342
19343         * gstab.h (stab_code_type): Define, to be used instead of the
19344         __stab_debug_code enum, made anonymous.  Add 2009 to the copyright
19345         notice.
19346         * dbxout.c (STAB_CODE_TYPE): Remove #define and replace use
19347         occurrences by stab_code_type.
19348         * mips-tfile.c (STAB_CODE_TYPE): Remove #define, unused.
19349
19350 2009-05-20  Martin Jambor  <mjambor@suse.cz>
19351
19352         * tree-flow.h (insert_edge_copies_seq): Undeclare.
19353         (sra_insert_before): Likewise.
19354         (sra_insert_after): Likewise.
19355         (sra_init_cache): Likewise.
19356         (sra_type_can_be_decomposed_p): Likewise.
19357         * tree-mudflap.c (insert_edge_copies_seq): Copied here from tree-sra.c
19358         * tree-sra.c (sra_type_can_be_decomposed_p): Made static.
19359         (sra_insert_before): Likewise.
19360         (sra_insert_after): Likewise.
19361         (sra_init_cache): Likewise.
19362         (insert_edge_copies_seq): Made static and moved upwards.
19363
19364         * tree-complex.c (extract_component): Added VIEW_CONVERT_EXPR switch
19365         case.
19366
19367         * tree-flow-inline.h (contains_view_convert_expr_p): New function.
19368
19369         * ipa-prop.c (get_ssa_def_if_simple_copy): New function.
19370         (determine_cst_member_ptr): Call get_ssa_def_if_simple_copy to skip
19371         simple copies.
19372
19373 2009-05-20  Richard Guenther  <rguenther@suse.de>
19374
19375         * expr.c (expand_expr_real_1): Avoid calling do_store_flag
19376         with mismatched comparison modes.
19377
19378 2009-05-20  Ramana Radhakrishnan  <ramana.radhakrishnan@arm.com>
19379
19380         * config/arm/arm.md (*arm_iorsi3): Refactored for only ARM.
19381         (peephole ior (reg, int) -> mov, ior): Refactored for only ARM.
19382         * config/arm/thumb2.md (*thumb_andsi_not_shiftsi_si): Allow bic
19383         with shifts for Thumb2.
19384         (orsi_notsi): New for orn.
19385         (*thumb_orsi_notshiftsi_si): Allow orn with shifts.
19386         (*thumb2_iorsi3): Rewrite support for iorsi for Thumb2.
19387         * config/arm/arm.c (const_ok_for_op): Split case for IOR for Thumb2.
19388         (arm_gen_constant): Set can_invert for IOR and Thumb2, Add comments.
19389         Don't invert remainder for IOR.
19390
19391 2009-05-19  Zdenek Dvorak  <ook@ucw.cz>
19392
19393         PR tree-optimization/40087
19394         * tree-ssa-loop-niter.c (number_of_iterations_ne_max,
19395         number_of_iterations_ne): Rename never_infinite argument.
19396         (number_of_iterations_lt_to_ne, number_of_iterations_lt,
19397         number_of_iterations_le): Handle pointer-type ivs when
19398         exit_must_be_taken is false.
19399         (number_of_iterations_cond):  Do not always assume that
19400         exit_must_be_taken if the control variable is a pointer.
19401
19402 2009-05-19  Andrew Pinski  <andrew_pinski@playstation.sony.com>
19403
19404         * c-typeck.c (build_binary_op): Allow % on integal vectors.
19405         * doc/extend.texi (Vector Extension): Document that % is allowed too.
19406
19407 2009-05-19  H.J. Lu  <hongjiu.lu@intel.com>
19408
19409         * config/i386/i386.c (ix86_avoid_jump_mispredicts): Check
19410         ASM_OUTPUT_MAX_SKIP_PAD instead of ASM_OUTPUT_MAX_SKIP_ALIGN.
19411
19412 2009-05-19  Manuel López-Ibáñez  <manu@gcc.gnu.org>
19413
19414         PR c/40172
19415         * c.opt (Wlogical-op): Disabled by default.
19416         * c-opt (c_common_post_options): Do not enable Wlogical-op with
19417         Wextra.
19418         * doc/invoke.texi (Wlogical-op): Likewise.
19419
19420 2009-05-19  Eric Botcazou  <ebotcazou@adacore.com>
19421
19422         * tree-scalar-evolution.c (follow_ssa_edge_expr) <NOP_EXPR>: Turn
19423         into CASE_CONVERT.
19424         <PLUS_EXPR>: Strip useless type conversions instead of type nops.
19425         Propagate the type of the first operand.
19426         <ASSERT_EXPR>: Simplify.
19427         (follow_ssa_edge_in_rhs): Use gimple_expr_type to get the type.
19428         Rewrite using the RHS code as discriminant.
19429         <NOP_EXPR>: Turn into CASE_CONVERT.
19430         <PLUS_EXPR>: Propagate the type of the first operand.
19431
19432 2009-05-19  Steve Ellcey  <sje@cup.hp.com>
19433
19434         * config/ia64/ia64-protos.h (ia64_dconst_0_5): New.
19435         (ia64_dconst_0_375): New.
19436         * config/ia64/ia64.c (ia64_override_options): Remove
19437         -minline-sqrt-min-latency warning.
19438         (ia64_dconst_0_5_rtx, ia64_dconst_0_5): New.
19439         (ia64_dconst_0_375_rtx, ia64_dconst_0_375): New
19440         * config/ia64/ia64.md (*sqrt_approx): Remove.
19441         (sqrtsf2): Remove #if 0.
19442         (sqrtsf2_internal_thr): Rewrite and move to div.md.
19443         (sqrtdf): Remove assert.
19444         (sqrtdf2_internal_thr): Rewrite and move to div.md.
19445         (sqrtxf2): Remove #if 0.
19446         (sqrtxf2_internal_thr): Rewrite and move to div.md.
19447         * div.md (sqrt_approx_rf): New.
19448         (sqrtsf2_internal_thr): New implementation.
19449         (sqrtsf2_internal_lat): New.
19450         (sqrtdf2_internal_thr: New implementation.
19451         (sqrtxf2_internal): New implementation.
19452
19453 2009-05-19  Francois-Xavier Coudert  <fxcoudert@gmail.com>
19454             Hans-Peter Nilsson  <hp@axis.com>
19455
19456         * defaults.h (UINT_FAST64_TYPE, INTPTR_TYPE, UINTPTR_TYPE)
19457         (WCHAR_TYPE, MODIFIED_WCHAR_TYPE, PTRDIFF_TYPE, WINT_TYPE)
19458         (INTMAX_TYPE, UINTMAX_TYPE, SIG_ATOMIC_TYPE, INT8_TYPE, INT16_TYPE)
19459         (INT32_TYPE, INT64_TYPE, UINT8_TYPE, UINT16_TYPE, UINT32_TYPE)
19460         (UINT64_TYPE, INT_LEAST8_TYPE, INT_LEAST16_TYPE, INT_LEAST32_TYPE)
19461         (INT_LEAST64_TYPE, UINT_LEAST8_TYPE, UINT_LEAST16_TYPE)
19462         (UINT_LEAST32_TYPE, UINT_LEAST64_TYPE, INT_FAST8_TYPE)
19463         (INT_FAST16_TYPE, INT_FAST32_TYPE, INT_FAST64_TYPE)
19464         (UINT_FAST8_TYPE, UINT_FAST16_TYPE, UINT_FAST32_TYPE)
19465         (SIZE_TYPE, PID_TYPE, CHAR16_TYPE, CHAR32_TYPE): Move defaults here...
19466         * c-common.c: ...from here.
19467
19468 2009-05-19  Manuel López-Ibáñez  <manu@gcc.gnu.org>
19469
19470         * c-common.c (warn_logical_operator): Remove unnecessary conditionals.
19471
19472 2009-05-19  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
19473
19474         * builtins.c (do_mpc_arg1): Separate MPFR/MPC C rounding types.
19475
19476 2009-05-19  Ben Elliston  <bje@au.ibm.com>
19477
19478         * unwind-dw2-fde.c (fde_unencoded_compare): Replace type punning
19479         assignments with memcpy calls.
19480         (add_fdes): Likewise.
19481         (binary_search_unencoded_fdes): Likewise.
19482         (linear_search_fdes): Eliminate type puns.
19483
19484 2009-05-19  Richard Guenther  <rguenther@suse.de>
19485
19486         * tree-ssa-forwprop.c (forward_propagate_addr_expr_1): Do
19487         not falsely claim to have propagated into all uses.
19488
19489 2009-05-19  Ben Elliston  <bje@au.ibm.com>
19490
19491         * doc/invoke.texi (C Dialect Options): Update OpenMP specification
19492         version to v3.0.
19493
19494 2009-05-18  Kaz Kojima  <kkojima@gcc.gnu.org>
19495
19496         * config/sh/sh-protos.h (sh_legitimate_address_p): Remove.
19497         * config/sh/sh.c (sh_legitimate_address_p): Make static.
19498         (TARGET_LEGITIMATE_ADDRESS_P): New.
19499         * config/sh/sh.h (GO_IF_LEGITIMATE_ADDRESS): Delete.
19500         * config/sh/sh.md: Clean up references to GO_IF_LEGITIMATE_ADDRESS.
19501
19502 2009-05-18  Dodji Seketeli  <dodji@redhat.com>
19503
19504         PR debug/40109
19505         * dwarf2out.c (gen_type_die_with_usage): Generate the DIE as a
19506         child of the containing namespace's DIE.
19507
19508 2009-05-18  Adam Nemet  <anemet@caviumnetworks.com>
19509
19510         * config/mips/mips.md (*zero_extend<GPR:mode>_trunc<SHORT:mode>,
19511         *zero_extendhi_truncqi):  Move after the zero_extend patterns.
19512         (*extenddi_truncate<mode>, *extendsi_truncate<mode>): Move after the
19513         extend patterns.
19514
19515 2009-05-18  H.J. Lu  <hongjiu.lu@intel.com>
19516
19517         PR target/39942
19518         * config/i386/i386.c (ix86_avoid_jump_misspredicts): Replace
19519         gen_align with gen_pad.
19520         (ix86_reorg): Check ASM_OUTPUT_MAX_SKIP_PAD instead of
19521         #ifdef ASM_OUTPUT_MAX_SKIP_ALIGN.
19522
19523         * config/i386/i386.h (ASM_OUTPUT_MAX_SKIP_PAD): New.
19524         * config/i386/x86-64.h (ASM_OUTPUT_MAX_SKIP_PAD): Likewise.
19525
19526         * config/i386/i386.md (align): Renamed to ...
19527         (pad): This.  Replace ASM_OUTPUT_MAX_SKIP_ALIGN with
19528         ASM_OUTPUT_MAX_SKIP_PAD.
19529
19530 2009-05-18  Andreas Schwab  <schwab@linux-m68k.org>
19531
19532         * config.gcc: Fix variable syntax.
19533
19534         PR target/39531
19535         * config/m68k/m68k.c (output_andsi3): Mask off sign bit copies
19536         before calling exact_log2.
19537         (output_iorsi3): Likewise.
19538         (output_xorsi3): Likewise.
19539
19540 2009-05-18  Kaz Kojima  <kkojima@gcc.gnu.org>
19541
19542         * config/sh/sh.c (expand_cbranchdi4): Use a scratch register
19543         for the none zero constant operand except for EQ and NE
19544         comprisons even when the first operand is R0.
19545
19546 2009-05-18  Andreas Krebbel  <krebbel1@de.ibm.com>
19547
19548         * config/s390/2064.md: Remove trailing whitespaces.
19549         * config/s390/2084.md: Likewise.
19550         * config/s390/constraints.md: Likewise.
19551         * config/s390/fixdfdi.h: Likewise.
19552         * config/s390/libgcc-glibc.ver: Likewise.
19553         * config/s390/s390-modes.def: Likewise.
19554         * config/s390/s390-protos.h: Likewise.
19555         * config/s390/s390.c: Likewise.
19556         * config/s390/s390.h: Likewise.
19557         * config/s390/s390.md: Likewise.
19558         * config/s390/tpf-unwind.h: Likewise.
19559
19560 2009-05-18  Maxim Kuvyrkov  <maxim@codesourcery.com>
19561
19562         * config/m68k/m68k.c (m68k_legitimize_address): Fix typo in signature.
19563
19564 2009-05-18  Maxim Kuvyrkov  <maxim@codesourcery.com>
19565
19566         M68K TLS support.
19567         * configure.ac (m68k-*-*): Check if binutils support TLS.
19568         * configure: Regenerate.
19569         * config/m68k/predicates.md (symbolic_operand): Extend comment.
19570         * config/m68k/constraints.md (Cu): New constraint.
19571         * config/m68k/m68k.md (UNSPEC_GOTOFF): Remove.
19572         (UNSPEC_RELOC16, UNSPEC_RELOC32): New constants.
19573         (movsi): Handle TLS symbols.
19574         (addsi3_5200): Handle XTLS symbols, indent.
19575         * config/m68k/m68k-protos.h (m68k_legitimize_tls_address): Declare.
19576         (m68k_tls_reference_p): Declare.
19577         (m68k_legitimize_address): Declare.
19578         (m68k_unwrap_symbol): Declare.
19579         * config/m68k/m68k.opt (mxtls): New option.
19580         * config/m68k/m68k.c (ggc.h): Include.
19581         (m68k_output_dwarf_dtprel): Implement hook.
19582         (TARGET_HAVE_TLS, TARGET_ASM_OUTPUT_DWARF_DTPREL): Define.
19583         (m68k_expand_prologue): Load GOT pointer when function needs it.
19584         (m68k_illegitimate_symbolic_constant_p): Handle TLS symbols.
19585         (m68k_legitimate_constant_address_p): Same.
19586         (m68k_decompose_address): Handle TLS references.
19587         (m68k_get_gp): New static function.
19588         (enum m68k_reloc): New contants.
19589         (TLS_RELOC_P): New macro.
19590         (m68k_wrap_symbol): New static function.
19591         (m68k_unwrap_symbol): New function.
19592         (m68k_final_prescan_insn_1): New static function.
19593         (m68k_final_prescan_insn): New function.
19594         (m68k_move_to_reg, m68k_wrap_symbol_into_got_ref): New static
19595         functions.
19596         (legitimize_pic_address): Handle TLS references..
19597         (m68k_tls_get_addr, m68k_get_tls_get_addr)
19598         (m68k_libcall_value_in_a0_p)
19599         (m68k_call_tls_get_addr, m68k_read_tp, m68k_get_m68k_read_tp)
19600         (m68k_call_m68k_read_tp): Helper variables and functions for ...
19601         (m68k_legitimize_tls_address): Handle TLS references.
19602         (m68k_tls_symbol_p, m68k_tls_reference_p_1, m68k_tls_reference_p):
19603         New functions.
19604         (m68k_legitimize_address): Handle TLS symbols.
19605         (m68k_get_reloc_decoration): New static function.
19606         (m68k_output_addr_const_extra): Handle UNSPEC_RELOC16 and
19607         UNSPEC_RELOC32.
19608         (m68k_output_dwarf_dtprel): Implement hook.
19609         (print_operand_address): Handle UNSPEC_RELOC16 adn UNSPEC_RELOC32.
19610         (m68k_libcall_value): Return result in A0 instead of D0 when asked by
19611         m68k_call_* routines.
19612         (sched_attr_op_type): Handle TLS symbols.
19613         (gt-m68k.h): Include.
19614         * config/m68k/m68k.h (FINAL_PRESCAN_INSN): Define.
19615         (LEGITIMATE_PIC_OPERAND_P): Support TLS.
19616
19617 2009-05-18  Martin Jambor  <mjambor@suse.cz>
19618
19619         * ipa-prop.c (ipa_check_stmt_modifications): Removed.
19620         (visit_store_addr_for_mod_analysis): New function.
19621         (ipa_detect_param_modifications): Use walk_stmt_load_store_addr_ops.
19622         (determine_cst_member_ptr): Use gimple_assign_single_p.
19623         (ipa_get_stmt_member_ptr_load_param): Use gimple_assign_single_p.
19624         (ipa_analyze_call_uses): Use !gimple_assign_rhs2 rather than number of
19625         operands.  Don't check number of operands of a NOP_EXPR.
19626
19627 2009-05-18  Eric Fisher  <joefoxreal@gmail.com>
19628
19629         * doc/tree-ssa.texi (SSA Operands): Fix a mistake.
19630
19631 2009-05-17  Manuel López-Ibáñez  <manu@gcc.gnu.org>
19632
19633         PR c/40172
19634         * c-common.c (warn_logical_operator): Don't warn if one of
19635         expression isn't always true or false.
19636
19637 2009-05-17  Kai Tietz  <kai.tietz@onevision.com>
19638
19639         * config/i386/biarch32.h: New file.
19640         * config.gcc: Add for target i386-w64-* the biarch32.h to tm_file.
19641
19642 2009-05-17  Adam Nemet  <anemet@caviumnetworks.com>
19643
19644         * config/mips/mips.md (*zero_extend<mode>_trunchi,
19645         *zero_extend<mode>_truncqi): Merge these into ...
19646         (*zero_extend<GPR:mode>_trunc<SHORT:mode>): ... this new pattern.
19647         Name the pattern following this as *zero_extendhi_truncqi.
19648
19649 2009-05-16  Brad Lucier  <lucier@math.purdue.edu>
19650
19651         PR middle-end/39301
19652         * hwint.h: Add macro HOST_WIDEST_INT_PRINT.
19653         * bitmap.c (bitmap_descriptor): Make fields HOST_WIDEST_INT.
19654         (output_info): Make field HOST_WIDEST_INT.
19655         (print_statistics): Use HOST_WIDEST_INT_PRINT.
19656         (dump_bitmat_statistics): Same.
19657
19658 2009-05-16  Francois-Xavier Coudert  <fxcoudert@gmail.com>
19659
19660         * config.gcc (use_gcc_stdint):  Set to wrap.
19661         * config/darwin.h (SIG_ATOMIC_TYPE, INT8_TYPE, INT16_TYPE,
19662         INT32_TYPE, INT64_TYPE, UINT8_TYPE, UINT16_TYPE, UINT32_TYPE,
19663         UINT64_TYPE, INT_LEAST8_TYPE, INT_LEAST16_TYPE, INT_LEAST32_TYPE,
19664         INT_LEAST64_TYPE, UINT_LEAST8_TYPE, UINT_LEAST16_TYPE,
19665         UINT_LEAST32_TYPE, UINT_LEAST64_TYPE, INT_FAST8_TYPE,
19666         INT_FAST16_TYPE, INT_FAST32_TYPE, INT_FAST64_TYPE,
19667         UINT_FAST8_TYPE, UINT_FAST16_TYPE, UINT_FAST32_TYPE,
19668         UINT_FAST64_TYPE, INTPTR_TYPE, UINTPTR_TYPE): Define.
19669
19670 2009-05-16  Joseph Myers  <joseph@codesourcery.com>
19671
19672         * config.gcc (mips*-*-*): Support arch_32, arch_64, tune_32 and
19673         tune_64.
19674         * config/mips/mips.h (MIPS_ABI_DEFAULT, MULTILIB_ABI_DEFAULT):
19675         Move definitions earlier.
19676         (OPT_ARCH64, OPT_ARCH32): Define.
19677         (OPTION_DEFAULT_SPECS): Add entries for arch_32, arch_64, tune_32
19678         and tune_64.
19679
19680 2009-05-16  Richard Earnshaw  <rearnsha@arm.com>
19681
19682         PR target/40153
19683         * arm.md (cstoresi_nltu_thumb1): Use a neg of ltu as the pattern name
19684         implies.
19685
19686 2009-05-16  Richard Earnshaw  <rearnsha@arm.com>
19687
19688         * arm.md (movdi2): Copy non-reg values to DImode registers.
19689
19690 2009-05-16  Jakub Jelinek  <jakub@redhat.com>
19691
19692         PR target/39942
19693         * final.c (label_to_max_skip): New function.
19694         (label_to_alignment): Only use LABEL_TO_ALIGNMENT if
19695         CODE_LABEL_NUMBER <= max_labelno.
19696         * output.h (label_to_max_skip): New prototype.
19697         * config/i386/i386.c (ix86_avoid_jump_misspredicts): Renamed to...
19698         (ix86_avoid_jump_mispredicts): ... this.  Don't define if
19699         ASM_OUTPUT_MAX_SKIP_ALIGN isn't defined.  Update comment.
19700         Handle CODE_LABELs with >= 16 byte alignment or with
19701         max_skip == (1 << align) - 1.
19702         (ix86_reorg): Don't call ix86_avoid_jump_mispredicts if
19703         ASM_OUTPUT_MAX_SKIP_ALIGN isn't defined.
19704
19705         PR target/39942
19706         * config/i386/x86-64.h (ASM_OUTPUT_MAX_SKIP_ALIGN): Don't emit second
19707         .p2align 3 if MAX_SKIP is smaller than 7.
19708         * config/i386/linux.h (ASM_OUTPUT_MAX_SKIP_ALIGN): Likewise.
19709
19710 2009-05-15  Ian Lance Taylor  <iant@google.com>
19711
19712         * alias.c (struct alias_set_entry_d): Rename from struct
19713         alias_set_entry.  Change all uses.
19714         * except.c (struct call_site_record_d): Rename from struct
19715         call_site_record.  Change all uses.
19716         * except.h (struct eh_region_d): Rename from struct eh_region.
19717         Change all uses.
19718         * gcse.c (struct hash_table_d): Rename from struct hash_table.
19719         Change all uses.
19720         * graphite.c (struct ivtype_map_elt_d): Rename fromstruct
19721         ivtype_map_elt.  Change all uses.
19722         (struct rename_map_elt_d): Rename fromstruct rename_map_elt.
19723         Change all uses.
19724         (struct ifsese_d): Rename fromstruct ifsese.  Change all uses.
19725         * graphite.h (struct name_tree_d): Rename from struct name_tree.
19726         Change all uses.
19727         (struct sese_d): Rename from struct sese.  Change all uses.
19728         * omega.h (struct eqn_d): Rename from struct eqn.  Change all uses.
19729         (struct omega_pb_d): Rename from struct omega_pb.  Change all uses.
19730         * optabs.h (struct optab_d): Rename from struct optab.  Change all
19731         uses.
19732         (struct convert_optab_d): Rename from struct convert_optab.
19733         Change all uses.
19734         * tree-pass.h (struct ipa_opt_pass_d): Rename fromstruct
19735         ipa_opt_pass.  Change all uses.
19736         * tree-predcom.c (struct dref_d): Rename from struct dref.  Change
19737         all uses.
19738
19739         * c-decl.c (pushtag): If -Wc++-compat, warn if the tag is already
19740         defined as a typedef.
19741         (grokdeclarator): If -Wc++-compat, warn if a typedef is already
19742         defined as a tag.
19743
19744 2009-05-15  Manuel López-Ibáñez  <manu@gcc.gnu.org>
19745
19746         PR 16302
19747         * fold-const.c (make_range,build_range_check,merge_ranges): Move
19748         declaration to...
19749         (merge_ranges): Returns bool.
19750         * tree.h (make_range): .. to here.
19751         (build_range_check): Likewise.
19752         (merge_ranges): Likewise. Renamed from merge_ranges.
19753         * c-typeck.c (parser_build_binary_op): Update calls to
19754         warn_logical_operator.
19755         * c-common.c (warn_logical_operator): Add new warning.
19756         * c-common.h (warn_logical_operator): Update declaration.
19757
19758 2009-05-15  Manuel López-Ibáñez  <manu@gcc.gnu.org>
19759
19760         * ira-conflicts.c (add_insn_allocno_copies): Fix wrong conditional.
19761
19762 2009-05-15  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
19763
19764         * doc/install.texi: Document MPC requirements, flags etc.
19765
19766         * builtins.c (do_mpc_arg1, fold_builtin_ccos): New.
19767         (fold_builtin_cexp): Ensure we get a complex REAL_TYPE.
19768         Evaluate constant arguments.
19769         (fold_builtin_carg): Ensure we get a complex REAL_TYPE.
19770         (fold_builtin_1): Likewise, also evaluate constant arguments.
19771         Remove superfluous break.
19772         (do_mpc_ckconv): New.
19773         * real.h: Include mpc.h.
19774         * toplev.c (print_version): Output MPC version info if available.
19775
19776 2009-05-15  Sandra Loosemore  <sandra@codesourcery.com>
19777
19778         * fold-const.c (fold_convert_const_real_from_real): Check for overflow.
19779
19780 2009-05-15  H.J. Lu  <hongjiu.lu@intel.com>
19781
19782         * config/i386/i386.c (ix86_reorg): Call optimize_function_for_speed_p
19783         only once.
19784
19785 2009-05-15  Jan Hubicka  <jh@suse.cz>
19786
19787         * doc/invoke.texi (max-early-inliner-iterations): New flag.
19788         * ipa-inline.c (enum inlining_mode): New INLINE_SIZE_NORECURSIVE.
19789         (try_inline): Fix return value.
19790         (cgraph_decide_inlining_incrementally): Honor new value.
19791         (cgraph_early_inlining): Handle indirect inlining.
19792         * params.def (PARAM_EARLY_INLINER_MAX_ITERATIONS): New.
19793
19794 2009-05-15  Jan Hubicka  <jh@suse.cz>
19795
19796         * cgraph.h (struct cgraph_node): Add finalized_by_frotnend flag.
19797         * cgraphunit.c (cgraph_finalize_function): Set it.
19798         (cgraph_expand_function): Use it.
19799
19800 2009-05-15  Sandra Loosemore  <sandra@codesourcery.com>
19801
19802         * real.c (encode_ieee_half): Define.
19803         (decode_ieee_half): Define.
19804         (ieee_half_format): Define.
19805         (arm_half_format): Define.
19806         * real.h (ieee_half_format): Declare.
19807         (arm_half_format): Declare.
19808
19809 2009-05-15  Sandra Loosemore  <sandra@codesourcery.com>
19810
19811         * optabs.c (prepare_float_lib_cmp):  Test that the comparison,
19812         swapped, and reversed optabs exist before trying to use them.
19813
19814 2009-05-15  Paul Brook  <paul@codesourcery.com>
19815             Sandra Loosemore  <sandra@codesourcery.com>
19816
19817         * config/arm/arm.c (neon_vector_mem_operand): Handle element/structure
19818         loads.  Allow PRE_DEC.
19819         (output_move_neon): Handle PRE_DEC.
19820         (arm_print_operand): Add 'A' for neon structure loads.
19821         * config/arm/arm-protos.h (neon_vector_mem_operand): Update prototype.
19822         * config/arm/neon.md (neon_mov): Update comment.
19823         * config/arm/constraints.md (Un, Us): Update neon_vector_mem_operand
19824         calls.
19825         (Um): New constraint.
19826
19827 2009-05-15  Jan Hubicka  <jh@suse.cz>
19828
19829         Revert the following patch until testsuite fallout is fixed:
19830         * cgraph.c (dump_cgraph_node): Dump size/time/benefit.
19831         * cgraph.h (struct inline_summary): New filed self_wize,
19832         size_inlining_benefit, self_time and time_inlining_benefit.
19833         (struct cgraph_global_info): Replace insns by time ans size fields.
19834         * ipa-cp (ipcp_cloning_candidate_p): Base estimate on size
19835         (ipcp_estimate_growth, ipcp_insert_stage): Likewise.
19836         (ipcp_update_callgraph): Do not touch function bodies.
19837         * ipa-inline.c: Include except.h
19838         (MAX_TIME): New constant.
19839         (overall_insns): Remove
19840         (overall_size, max_benefit): New static variables.
19841         (cgraph_estimate_time_after_inlining): New function.
19842         (cgraph_estimate_size_after_inlining): Rewrite using benefits.
19843         (cgraph_clone_inlined_nodes): Update size.
19844         (cgraph_mark_inline_edge): Update size.
19845         (cgraph_estimate_growth): Use size info.
19846         (cgraph_check_inline_limits): Check size.
19847         (cgraph_default_inline_p): Likewise.
19848         (cgraph_edge_badness): Compute badness based on benefit and size cost.
19849         (cgraph_decide_recursive_inlining): Check size.
19850         (cgraph_decide_inlining_of_small_function): Update size; dump sizes
19851         and times.
19852         (cgraph_decide_inlining): Likewise.
19853         (cgraph_decide_inlining_incrementally): Likewise; honor
19854         PARAM_EARLY_INLINING_INSNS.
19855         (likely_eliminated_by_inlining_p): New predicate.
19856         (estimate_function_body_sizes): New function.
19857         (compute_inline_parameters): Use it.
19858         * except.c (must_not_throw_labels): New function.
19859         * except.h (must_not_throw_labels): Declare.
19860         * tree-inline.c (init_inline_once): Kill inlining_weigths
19861         * tree-ssa-structalias.c: Avoid uninitialized warning.
19862         * params.def (PARAM_MAX_INLINE_INSNS_SINGLE): Reduce to 300.
19863         (PARAM_MAX_INLINE_INSNS_AUTO): Reduce to 60.
19864         (PARAM_INLINE_CALL_COST): Remove.
19865         (PARAM_EARLY_INLINING_INSNS): New.
19866
19867 2009-05-15  Richard Guenther  <rguenther@suse.de>
19868
19869         * tree-ssa-pre.c (eliminate): Use TODO_update_ssa_only_virtuals,
19870         not TODO_update_ssa.
19871
19872 2009-05-15  Richard Guenther  <rguenther@suse.de>
19873
19874         PR tree-optimization/39999
19875         * gimple.h (gimple_expr_type): Use the expression type looking
19876         through useless conversions.
19877         * tree-ssa-sccvn.c (vn_nary_op_lookup_stmt): Use gimple_expr_type.
19878         (vn_nary_op_insert_stmt): Likewise.
19879         (simplify_binary_expression): Likewise.
19880
19881 2009-05-15  Richard Guenther  <rguenther@suse.de>
19882
19883         * common.opt (-ftree-forwprop, -ftree-phiprop, -ftree-pta):
19884         New options, enabled by default.
19885         * doc/invoke.texi (-ftree-forwprop, -ftree-phiprop, -ftree-pta):
19886         Document.
19887         * tree-ssa-forwprop.c (gate_forwprop): Use flag_tree_forwprop.
19888         * tree-ssa-phiprop.c (gate_phiprop): Use flag_tree_phiprop.
19889         * tree-ssa-structalias.c (gate_tree_pta): New function.
19890         (pass_build_alias): Use it.
19891
19892 2009-05-15  Joseph Myers  <joseph@codesourcery.com>
19893
19894         * tree-ssa-forwprop.c (forward_propagate_addr_expr_1): Also
19895         recurse on an invariant address if a conversion from a pointer
19896         type to a wider integer type is involved.
19897
19898 2009-05-15  Jan Hubicka  <jh@suse.cz>
19899
19900         * cgraph.c (dump_cgraph_node): Dump size/time/benefit.
19901         * cgraph.h (struct inline_summary): New filed self_wize,
19902         size_inlining_benefit, self_time and time_inlining_benefit.
19903         (struct cgraph_global_info): Replace insns by time ans size fields.
19904         * ipa-cp (ipcp_cloning_candidate_p): Base estimate on size
19905         (ipcp_estimate_growth, ipcp_insert_stage): Likewise.
19906         (ipcp_update_callgraph): Do not touch function bodies.
19907         * ipa-inline.c: Include except.h
19908         (MAX_TIME): New constant.
19909         (overall_insns): Remove
19910         (overall_size, max_benefit): New static variables.
19911         (cgraph_estimate_time_after_inlining): New function.
19912         (cgraph_estimate_size_after_inlining): Rewrite using benefits.
19913         (cgraph_clone_inlined_nodes): Update size.
19914         (cgraph_mark_inline_edge): Update size.
19915         (cgraph_estimate_growth): Use size info.
19916         (cgraph_check_inline_limits): Check size.
19917         (cgraph_default_inline_p): Likewise.
19918         (cgraph_edge_badness): Compute badness based on benefit and size cost.
19919         (cgraph_decide_recursive_inlining): Check size.
19920         (cgraph_decide_inlining_of_small_function): Update size; dump sizes
19921         and times.
19922         (cgraph_decide_inlining): Likewise.
19923         (cgraph_decide_inlining_incrementally): Likewise; honor
19924         PARAM_EARLY_INLINING_INSNS.
19925         (likely_eliminated_by_inlining_p): New predicate.
19926         (estimate_function_body_sizes): New function.
19927         (compute_inline_parameters): Use it.
19928         * except.c (must_not_throw_labels): New function.
19929         * except.h (must_not_throw_labels): Declare.
19930         * tree-inline.c (init_inline_once): Kill inlining_weigths
19931         * tree-ssa-structalias.c: Avoid uninitialized warning.
19932         * params.def (PARAM_MAX_INLINE_INSNS_SINGLE): Reduce to 300.
19933         (PARAM_MAX_INLINE_INSNS_AUTO): Reduce to 60.
19934         (PARAM_INLINE_CALL_COST): Remove.
19935         (PARAM_EARLY_INLINING_INSNS): New.
19936         doc/invoke.texi (max-inline-insns-auto, early-inlining-insns): Update.
19937         (inline-call-cost): Remove.
19938         (early-inlining-insns): New.
19939
19940 2009-05-15  Eric Botcazou  <ebotcazou@adacore.com>
19941
19942         * dbxout.c (dbxout_range_type): Add LOW and HIGH parameters.  Use them
19943         for bounds.
19944         (print_int_cst_bounds_in_octal_p): Likewise.
19945         (dbxout_type): Adjust calls to above functions.  Be prepared to deal
19946         with subtypes.
19947         * dwarf2out.c (base_type_die): Likewise.
19948         (is_subrange_type): Delete.
19949         (subrange_type_die): Add LOW and HIGH parameters.  Use them for bounds.
19950         (modified_type_die): Call subrange_type_for_debug_p on subtypes.
19951         * fold-const.c (fold_truth_not_expr) <CONVERT_EXPR>: Do not strip it
19952         if the destination type is boolean.
19953         (build_range_check): Do not special-case subtypes.
19954         (fold_sign_changed_comparison): Likewise.
19955         (fold_unary): Likewise.
19956         * langhooks-def.h (LANG_HOOKS_GET_SUBRANGE_BOUNDS): Define.
19957         (LANG_HOOKS_FOR_TYPES_INITIALIZER): Add LANG_HOOKS_GET_SUBRANGE_BOUNDS.
19958         * langhooks.h (lang_hooks_for_types): Add get_subrange_bounds.
19959         * tree.c (subrange_type_for_debug_p): New predicate based on the
19960         former is_subrange_type.
19961         * tree.h (subrange_type_for_debug_p): Declare.
19962         * tree-chrec.c (avoid_arithmetics_in_type_p): Delete.
19963         (convert_affine_scev): Remove call to above function.
19964         (chrec_convert_aggressive): Likewise.
19965         * tree-ssa.c (useless_type_conversion_p_1): Do not specifically return
19966         false for conversions involving subtypes.
19967         * tree-vrp.c (vrp_val_max): Do not special-case subtypes.
19968         (vrp_val_min): Likewise.
19969         (needs_overflow_infinity): Likewise.
19970         (extract_range_from_unary_expr): Likewise.
19971
19972 2009-05-15  Paolo Bonzini  <bonzini@gnu.org>
19973
19974         * config/frv/frv.h: Clean up references to GO_IF_LEGITIMATE_ADDRESS.
19975         * config/frv/frv.c: Likewise.
19976         * config/s390/s390.c: Likewise.
19977         * config/sparc/sparc.h: Likewise.
19978         * config/i386/i386.h: Likewise.
19979         * config/i386/i386.c: Likewise.
19980         * config/crx/crx.c: Likewise.
19981         * config/m68hc11/m68hc11.h: Likewise.
19982         * config/iq2000/iq2000.c: Likewise.
19983         * config/mn10300/mn10300.h: Likewise.
19984         * config/mn10300/mn10300.c: Likewise.
19985         * config/m68k/m68k.c: Likewise.
19986         * config/rs6000/rs6000.c: Likewise.
19987         * config/rs6000/xcoff.h: Likewise.
19988         * config/rs6000/linux64.h: Likewise.
19989         * config/rs6000/sysv4.h: Likewise.
19990         * config/score/score3.c: Likewise.
19991         * config/score/score7.c: Likewise.
19992         * config/score/score.c: Likewise.
19993         * config/arm/arm.md: Likewise.
19994         * config/mips/mips.c: Likewise.
19995         * config/mips/mips.md: Likewise.
19996         * config/bfin/bfin.h: Likewise.
19997         * config/pa/pa.c: Likewise.
19998         * config/pa/constraints.md: Likewise.
19999
20000         * config/pdp11/pdp11-protos.h (legitimate_address_p): Delete.
20001         * config/pdp11/pdp11.c (legitimate_address_p): Delete.
20002         * config/pdp11/pdp11.h: Use memory_address_p instead.
20003
20004 2009-05-14  Ian Lance Taylor  <iant@google.com>
20005
20006         * passes.c (finish_optimization_passes): Change i to int.
20007         * plugin.c (plugins_active_p): Change event to int.
20008         (dump_active_plugins): Likewise.
20009         * reginfo.c (invalid_mode_change_p): Change to to unsigned int.
20010         Add cast.
20011         * tree.c (tree_range_check_failed): Change c to unsigned int.
20012         (omp_clause_range_check_failed): Likewise.
20013         (build_common_builtin_nodes): Change mode to int.  Add cast.
20014         * config/ia64/ia64.c (is_emitted): Change r to unsigned int.
20015         (ia64_hard_regno_rename_ok, ia64_eh_uses): Likewise.
20016
20017         * c-typeck.c (build_unary_op): If -Wc++-compat, warn about using
20018         ++ or -- with a variable of enum type.
20019
20020 2009-05-14  Steven Bosscher  <steven@gcc.gnu.org>
20021
20022         PR driver/40144
20023         * opts.c (common_handle_option): Add OPT_fcse_skip_blocks as a no-op.
20024
20025 2009-05-14  Steven Bosscher  <steven@gcc.gnu.org>
20026
20027         * store-motion.c: Do not include params.h
20028         * Makefile.in: Fix dependencies for various files.
20029
20030 2009-05-14  Steven Bosscher  <steven@gcc.gnu.org>
20031
20032         * auto-inc-dec.c: Fix pass description, remove apparent
20033         accidental duplication.
20034
20035 2009-05-14  H.J. Lu  <hongjiu.lu@intel.com>
20036
20037         PR middle-end/40147
20038         * ipa-utils.h (memory_identifier_string): Moved to ...
20039         * tree.h (memory_identifier_string): Here.  Add GTY(()).
20040
20041 2009-05-14  Paolo Bonzini  <bonzini@gnu.org>
20042
20043         * doc/tm.texi (TARGET_LEGITIMATE_ADDRESS_P): Refer mainly to this
20044         in the former documentation of...
20045         (GO_IF_LEGITIMATE_ADDRESS): ... this.
20046         * ira-conflicts.c (get_dup_num): Use address_operand.
20047         * targhooks.c (default_legitimate_address_p): New.
20048         * targhooks.h (default_legitimate_address_p): New.
20049         * reload.c (strict_memory_address_p) [!GO_IF_LEGITIMATE_ADDRESS]:
20050         Call hook.
20051         * recog.c (memory_address_p) [!GO_IF_LEGITIMATE_ADDRESS]: Call hook.
20052         * target.h (struct target): Add legitimate_address_p.
20053         * target-def.h (TARGET_LEGITIMATE_ADDRESS_P): New.
20054         (TARGET_INITIALIZER): Include it.
20055
20056         * config/alpha/alpha.h (GO_IF_LEGITIMATE_ADDRESS): Delete.
20057         * config/alpha/alpha-protos.h (alpha_legitimate_address_p): Remove.
20058         * config/alpha/alpha.c (alpha_legitimate_address_p): Make static.
20059         (TARGET_LEGITIMATE_ADDRESS_P): New.
20060
20061         * config/frv/frv.h (GO_IF_LEGITIMATE_ADDRESS): Delete.
20062         (REG_OK_STRICT_P): Delete.
20063         * config/frv/frv-protos.h (frv_legitimate_address_p): Rename to...
20064         (frv_legitimate_address_p_1): ... this.
20065         * config/frv/frv.c (frv_legitimate_address_p): Forward to...
20066         (frv_legitimate_address_p_1): ... the renamed old
20067         frv_legitimate_address_p.
20068         * config/frv/predicates.md: Adjust calls to frv_legitimate_address_p.
20069         (TARGET_LEGITIMATE_ADDRESS_P): New.
20070
20071         * config/s390/s390.h (GO_IF_LEGITIMATE_ADDRESS): Delete.
20072         * config/s390/s390-protos.h (legitimate_address_p): Remove.
20073         * config/s390/s390.c (legitimate_address_p): Rename to...
20074         (s390_legitimate_address_p): ... this, make static.
20075         (legitimize_address): Adjust call.
20076         (TARGET_LEGITIMATE_ADDRESS_P): New.
20077         * config/s390/constraints.md ("e"): Call strict_memory_address_p.
20078
20079         * config/m32c/m32c.h (GO_IF_LEGITIMATE_ADDRESS): Delete.
20080         * config/m32c/m32c-protos.h (m32c_legitimate_address_p): Remove.
20081         * config/m32c/m32c.c (m32c_legitimate_address_p): Make static.
20082         (TARGET_LEGITIMATE_ADDRESS_P): New.
20083
20084         * config/spu/spu.h (GO_IF_LEGITIMATE_ADDRESS): Delete.
20085         * config/spu/spu-protos.h (spu_legitimate_address): Remove.
20086         * config/spu/spu.c (spu_legitimate_address): Rename to...
20087         (spu_legitimate_address_p): ... this, make static.
20088         (TARGET_LEGITIMATE_ADDRESS_P): New.
20089
20090         * config/sparc/sparc.h (GO_IF_LEGITIMATE_ADDRESS): Delete.
20091         * config/sparc/sparc-protos.h (legitimate_address_p): Remove.
20092         * config/sparc/sparc.c (legitimate_address_p): Rename to...
20093         (sparc_legitimate_address_p): ... this, make static and return bool.
20094         (legitimize_address): Adjust call.
20095         (TARGET_LEGITIMATE_ADDRESS_P): New.
20096
20097         * config/i386/i386.h (GO_IF_LEGITIMATE_ADDRESS): Delete.
20098         * config/i386/i386-protos.h (legitimate_address_p): Remove.
20099         * config/i386/i386.c (legitimate_address_p): Rename to...
20100         (ix86_legitimate_address_p): ... this, make static.
20101         (constant_address_p): Move after it, adjust call.
20102         (TARGET_LEGITIMATE_ADDRESS_P): New.
20103
20104         * config/avr/avr.h (GO_IF_LEGITIMATE_ADDRESS): Delete.
20105         * config/avr/avr-protos.h (legitimate_address_p): Remove.
20106         * config/avr/avr.c (legitimate_address_p): Rename to...
20107         (avr_legitimate_address_p): ... this, make static.
20108         (legitimize_address): Adjust call.
20109         (TARGET_LEGITIMATE_ADDRESS_P): New.
20110
20111         * config/crx/crx.h (GO_IF_LEGITIMATE_ADDRESS): Delete.
20112         * config/crx/crx-protos.h (crx_legitimate_address_p): Remove.
20113         * config/crx/crx.c (crx_legitimate_address_p): Make static.
20114         (TARGET_LEGITIMATE_ADDRESS_P): New.
20115
20116         * config/xtensa/xtensa.h (GO_IF_LEGITIMATE_ADDRESS): Delete.
20117         * config/xtensa/xtensa-protos.h (xtensa_legitimate_address_p): Remove.
20118         * config/xtensa/xtensa.c (xtensa_legitimate_address_p): Make static.
20119         (TARGET_LEGITIMATE_ADDRESS_P): New.
20120
20121         * config/stormy16/stormy16.h (GO_IF_LEGITIMATE_ADDRESS): Delete.
20122         * config/stormy16/stormy16-protos.h (xstormy16_legitimate_address_p):
20123         Remove.
20124         * config/stormy16/stormy16.c (xstormy16_legitimate_address_p):
20125         Make static.
20126         (TARGET_LEGITIMATE_ADDRESS_P): New.
20127
20128         * config/m68hc11/m68hc11.h (GO_IF_LEGITIMATE_ADDRESS): Delete.
20129         * config/m68hc11/m68hc11-protos.h (m68hc11_go_if_legitimate_address):
20130         Remove.
20131         * config/m68hc11/m68hc11.c (m68hc11_go_if_legitimate_address):
20132         Rename to...
20133         (m68hc11_legitimate_address_p): ... this, make static.
20134         (go_if_legitimate_address_internal): Rename to...
20135         (m68hc11_legitimate_address_p_1): ... this.
20136         (legitimize_address): Adjust call.
20137         (TARGET_LEGITIMATE_ADDRESS_P): New.
20138
20139         * config/iq2000/iq2000.h (GO_IF_LEGITIMATE_ADDRESS): Delete.
20140         * config/iq2000/iq2000-protos.h (iq2000_legitimate_address_p): Remove.
20141         * config/iq2000/iq2000.c (iq2000_legitimate_address_p): Make static.
20142         (TARGET_LEGITIMATE_ADDRESS_P): New.
20143
20144         * config/mn10300/mn10300.h (GO_IF_LEGITIMATE_ADDRESS): Delete.
20145         * config/mn10300/mn10300-protos.h (legitimate_address_p): Remove.
20146         * config/mn10300/mn10300.c (legitimate_address_p): Rename to...
20147         (mn10300_legitimate_address_p): ... this, make static.
20148         (TARGET_LEGITIMATE_ADDRESS_P): New.
20149
20150         * config/m68k/m68k.h (GO_IF_LEGITIMATE_ADDRESS): Delete.
20151         * config/m68k/m68k-protos.h (m68k_legitimate_address_p): Remove.
20152         * config/m68k/m68k.c (m68k_legitimate_address_p): Make static.
20153         (TARGET_LEGITIMATE_ADDRESS_P): New.
20154
20155         * config/rs6000/rs6000.h (GO_IF_LEGITIMATE_ADDRESS): Delete.
20156         (REG_OK_STRICT_FLAG, REG_OK_FOR_BASE_P, REG_OK_FOR_INDEX_P): Delete.
20157         (INT_REG_OK_FOR_BASE_P, INT_REG_OK_FOR_INDEX_P): Move above.
20158         * config/rs6000/rs6000.h (GO_IF_LEGITIMATE_ADDRESS): Delete.
20159         * config/rs6000/rs6000-protos.h (rs6000_legitimate_address): Remove.
20160         * config/rs6000/rs6000.c (rs6000_legitimate_address): Rename to...
20161         (rs6000_legitimate_address_p): ... this, make static.
20162         (TARGET_LEGITIMATE_ADDRESS_P): New.
20163         (REG_MODE_OK_FOR_BASE_P): Delete.
20164         (rs6000_legitimize_reload_address): Use INT_REG_OK_FOR_BASE_P.
20165
20166         * config/picochip/picochip.h (GO_IF_LEGITIMATE_ADDRESS): Delete.
20167         * config/picochip/picochip-protos.h (picochip_legitimate_address_p):
20168         Delete.
20169         * config/picochip/picochip.c (picochip_legitimate_address_p): Make
20170         static, adjust types.
20171         (TARGET_LEGITIMATE_ADDRESS_P): New.
20172
20173         * config/score/score.h (GO_IF_LEGITIMATE_ADDRESS): Delete.
20174         * config/score/score.c (score_address_p): Rename to...
20175         (score_legitimate_address_p): ... this.
20176         (TARGET_LEGITIMATE_ADDRESS_P): New.
20177         * config/score/score3.c (score3_address_p): Rename to...
20178         (score3_legitimate_address_p): ... this.
20179         * config/score/score7.c (score7_address_p): Rename to...
20180         (score7_legitimate_address_p): ... this.
20181
20182         * config/arm/arm.h (ARM_GO_IF_LEGITIMATE_ADDRESS,
20183         THUMB2_GO_IF_LEGITIMATE_ADDRESS, THUMB1_GO_IF_LEGITIMATE_ADDRESS,
20184         GO_IF_LEGITIMATE_ADDRESS): Delete.
20185         * config/arm/arm-protos.h (thumb1_legitimate_address_p,
20186         thumb2_legitimate_address_p): Delete.
20187         (arm_legitimate_address_p): Rename to...
20188         (arm_legitimate_address_outer_p): ... this.
20189         * config/arm/constraints.md ("Uq"): Adjust call.
20190         * config/arm/predicates.md (arm_extendqisi_mem_op): Likewise.
20191         * config/arm/arm.c (arm_legitimate_address_p): New, rename old one
20192         to...
20193         (arm_legitimate_address_outer_p): ... this.
20194         (thumb1_legitimate_address_p, thumb2_legitimate_address_p): Make
20195         static.
20196         (TARGET_LEGITIMATE_ADDRESS_P): New.
20197
20198         * config/mips/mips.h (GO_IF_LEGITIMATE_ADDRESS): Delete.
20199         * config/mips/mips-protos.h (mips_legitimate_address_p): Remove.
20200         * config/mips/mips.c (mips_legitimate_address_p): ... Make static.
20201         (TARGET_LEGITIMATE_ADDRESS_P): New.
20202
20203         * config/vax/vax.h (GO_IF_LEGITIMATE_ADDRESS): Delete.
20204         * config/vax/vax-protos.h (legitimate_address_p): Remove.
20205         * config/vax/vax.c (legitimate_address_p): Rename to...
20206         (vax_legitimate_address_p): ... this, make static.
20207         (TARGET_LEGITIMATE_ADDRESS_P): New.
20208
20209         * config/h8300/h8300.h (GO_IF_LEGITIMATE_ADDRESS): Delete.
20210         * config/h8300/h8300-protos.h (h8300_legitimate_address_p): Remove.
20211         * config/h8300/h8300.c (h8300_legitimate_address_p): ... Make static.
20212         (TARGET_LEGITIMATE_ADDRESS_P): New.
20213
20214         * config/mmix/mmix.h (GO_IF_LEGITIMATE_ADDRESS): Delete.
20215         * config/mmix/mmix-protos.h (mmix_legitimize_address): Remove.
20216         * config/mmix/mmix.c (mmix_legitimate_address): Rename to...
20217         (mmix_legitimate_address_p): ... this, make static.
20218         (TARGET_LEGITIMATE_ADDRESS_P): New.
20219
20220         * config/bfin/bfin.h (GO_IF_LEGITIMATE_ADDRESS): Delete.
20221         * config/bfin/bfin-protos.h (bfin_legitimate_address_p): Remove.
20222         * config/bfin/bfin.c (bfin_legitimate_address_p): ... Make static.
20223         (TARGET_LEGITIMATE_ADDRESS_P): New.
20224
20225 2009-05-14  Paolo Bonzini  <bonzini@gnu.org>
20226
20227         * config/arm/arm.h (PROMOTE_FUNCTION_MODE): Remove handling
20228         of MODE_COMPLEX_INT.
20229
20230 2009-05-14  Rainer Orth  <ro@TechFak.Uni-Bielefeld.DE>
20231
20232         * config/alpha/alpha.c (alpha_initialize_trampoline): Change 0 to
20233         LCT_NORMAL in function call.
20234         * mips-tdump.c (print_file_desc): Add cast to enum type.
20235         * mips-tfile.c (add_ext_symbol): Add casts to enum types.
20236         (mark_stabs): Add casts to enum types.
20237         (parse_stabs_common): Add casts to enum types.
20238
20239 2009-05-13  Adam Nemet  <anemet@caviumnetworks.com>
20240
20241         * config/mips/mips.c (mips_print_operand) <REG, MEM, default>:
20242         Check for invalid values of LETTER.
20243
20244 2009-05-13  Taras Glek  <tglek@mozilla.com>
20245
20246         * attribs.c (register_attribute): moved out attribute registration
20247         into register_attribute.
20248         * doc/plugins.texi: Documented register_attribute and
20249         PLUGIN_ATTRIBUTES.
20250         * gcc-plugin.h: Added forward decl for register_attribute.
20251         * gcc-plugin.h (plugins_event): Added PLUGIN_ATTRIBUTES.
20252         * plugin.c (register_callback, invoke_plugin_callbacks): Added
20253         PLUGIN_ATTRIBUTES boilerplate.
20254
20255 2009-05-14  Dave Korn  <dave.korn.cygwin@gmail.com>
20256
20257         * config/i386/msformat-c.c (ms_printf_length_specs):  Use enumeration
20258         values even in sentinel and empty entries.
20259         (ms_printf_flag_specs):  Likewise.
20260         (ms_scanf_flag_specs):  Likewise.
20261         (ms_strftime_flag_specs):  Likewise.
20262         (ms_print_char_table):  Likewise.
20263         (ms_scan_char_table):  Likewise.
20264         (ms_time_char_table):  Likewise.
20265
20266 2009-05-13  Doug Kwan  <dougkwan@google.com>
20267
20268         * tree-ssa-sccvn.c (compare_ops): Stabilize qsort.
20269
20270 2009-05-13  Adam Nemet  <anemet@caviumnetworks.com>
20271
20272         * config/mips/mips.md (store): Add attributes for QI and HI.
20273         Update comment.
20274         (truncdisi2, truncdihi2, truncdiqi2): Merge these into ...
20275         (truncdi<mode>2): ... this new pattern.
20276
20277 2009-05-13  Brad Hards  <bradh@kde.org>
20278
20279         * Makefile.in (TEXI_GCCINT_FILES): Add plugins.texi.
20280
20281 2009-05-14  Jakub Jelinek  <jakub@redhat.com>
20282             Ben Elliston <bje@au.ibm.com>
20283
20284         PR middle-end/40035
20285         * dse.c (check_mem_read_rtx): Guard against width == -1.
20286
20287 2009-05-13  Michael Matz  <matz@suse.de>
20288
20289         PR middle-end/39976
20290         * tree-outof-ssa.c (maybe_renumber_stmts_bb): New function.
20291         (trivially_conflicts_p): New function.
20292         (insert_backedge_copies): Use it.
20293
20294 2009-05-13  Janis Johnson  <janis187@us.ibm.com>
20295
20296         * c-pragma.c (enum pragma_switch_t): Prefix constants with PRAGMA_.
20297         (handle_stdc_pragma): Use new enum constant names.
20298         (handle_pragma_float_const_decimal64): Ditto.
20299
20300 2009-05-13  Ian Lance Taylor  <iant@google.com>
20301
20302         * Makefile.in (build/gencheck.o): Depend upon all-tree.def, not
20303         tree.def.
20304
20305 2009-05-13  Nathan Sidwell  <nathan@codesourcery.com>
20306
20307         * config/m68k/t-uclinux (M68K_MLIB_CPU): Check for FL_UCLINUX.
20308         * config/m68k/m68k-devices.def: Add FL_UCLINUX to 68020 and 54455
20309         multilibs.
20310         * config/m68k/m68k.h (FL_UCLINUX): Define.
20311
20312 2009-05-13  Jan Hubicka  <jh@suse.cz>
20313
20314         * options.c (gfc_post_options): -fwhole-program imply -fwhole-file.
20315
20316 2009-05-12  Kaz Kojima  <kkojima@gcc.gnu.org>
20317
20318         * config/sh/sh.h (OVERRIDE_OPTIONS): Clear flag_schedule_insns
20319         unless -fschedule-insns is specified.
20320
20321 2009-05-12  Kaz Kojima  <kkojima@gcc.gnu.org>
20322
20323         PR target/39561
20324         * config/sh/sh.h (OPTIMIZATION_OPTIONS): Don't set
20325         TARGET_EXPAND_CBRANCHDI4.
20326         * config/sh/sh.md (cbranchdi4): Don't check TARGET_EXPAND_CBRANCHDI4.
20327         * config/sh/sh.opt (mexpand-cbranchdi): Remove.
20328         (cmpeqdi): Fix comment.
20329
20330 2009-05-12  Kaz Kojima  <kkojima@gcc.gnu.org>
20331
20332         * config/sh/sh-protos.h (sh_legitimate_index_p): Declare.
20333         (sh_legitimate_address_p): Likewise.
20334         * config/sh/sh.c (sh_legitimate_index_p): New.
20335         (sh_legitimate_address_p): Likewise.
20336         * config/sh/sh.h (REG_OK_FOR_BASE_P): Add STRICT parameter.
20337         (REG_OK_FOR_INDEX_P, SUBREG_OK_FOR_INDEX_P): Likewise.
20338         (MODE_DISP_OK_4, MODE_DISP_OK_8): Remove.
20339         (MAYBE_BASE_REGISTER_RTX_P): New macro.
20340         (MAYBE_INDEX_REGISTER_RTX_P): Likewise.
20341         (BASE_REGISTER_RTX_P): Use MAYBE_BASE_REGISTER_RTX_P.
20342         (INDEX_REGISTER_RTX_P): Use MAYBE_INDEX_REGISTER_RTX_P.
20343         (GO_IF_LEGITIMATE_INDEX): Use sh_legitimate_index_p.
20344         (GO_IF_LEGITIMATE_ADDRESS): Use sh_legitimate_address_p.
20345
20346 2009-05-12  Jan Hubicka  <jh@suse.cz>
20347
20348         * tree-inline.c (estimate_operator_cost): Add operands;
20349         when division happens by constant, it is cheap.
20350         (estimate_num_insns): Loads and stores are not having cost of 0;
20351         EH magic stuff is cheap; when computing runtime cost of switch,
20352         use log2 base of amount of its cases; builtin_expect has cost of 0;
20353         compute cost for moving return value of call.
20354         (init_inline_once): Initialize time_based flags.
20355         * tree-inline.h (eni_weights_d): Add time_based flag.
20356
20357 2009-05-12  Paolo Bonzini  <bonzini@gnu.org>
20358
20359         * df-core.c: Update head documentation.
20360
20361 2009-05-12  Michael Meissner  <meissner@linux.vnet.ibm.com>
20362
20363         PR bootstrap/40118
20364         * rs6000.c (rs6000_generate_compare): Use op1b instead of
20365         shadowing exisiting variable op1.
20366
20367 2009-05-12  Uros Bizjak  <ubizjak@gmail.com>
20368
20369         PR target/37179
20370         * config/i386/driver-i386.c (processor_signatures): New enum.
20371         (SIG_GEODE): Move from vendor_signatures to processor_signatures.
20372         (host_detect_local_cpu): For SIG_AMD vendor, check for SIG_GEODE
20373         processor signature to detect geode processor.
20374
20375 2009-05-12  Paolo Bonzini  <bonzini@gnu.org>
20376
20377         Revert:
20378
20379         2009-05-12  Paolo Bonzini  <bonzini@gnu.org>
20380
20381         * optabs.c (prepare_cmp_insn): Temporarily disable test that
20382         causes spurious differences between trunk and cond-optab branch.
20383
20384 2009-05-12  Paolo Bonzini  <bonzini@gnu.org>
20385
20386         * dojump.c (compare_from_rtx): Delete.
20387         * expmed.c (emit_store_flag): Only try cstore_optab.  Canonicalize
20388         any MODE_CC mode to the cstorecc4 pattern.  Use prepare_operand, fail
20389         if the comparison does not satisfy the predicate; test predicates for
20390         operands 2 and 3 of a cstore pattern.  Don't try cstore optab
20391         further if one existing pattern fails.
20392         * expr.h (compare_from_rtx): Delete.
20393         (prepare_operand): Declare it.
20394         * optabs.c: Change "lib call" to "libcall" throughout.
20395         (bcc_gen_fctn, setcc_gen_code, trap_rtx,
20396         HAVE_conditional_trap, emit_cmp_insn): Delete.
20397         (can_compare_p): Delete cmp_optab case.
20398         (prepare_float_lib_cmp): Return an rtx and a machine mode.
20399         Accept other parameters by value.
20400         (prepare_operand): Make non-static.
20401         (prepare_cmp_insn): Return an rtx and a machine mode.  Accept
20402         other parameters by value.  Try to widen operands here based on
20403         an optab_methods argument and looking at cbranch_optab.
20404         (emit_cmp_and_jump_insn_1): Accept test and mode, remove widening
20405         loop.  Use cbranch_optab directly.
20406         (emit_cmp_and_jump_insns): Fix comment.  Adjust call to
20407         prepare_cmp_insn and emit_cmp_and_jump_insn_1, remove obsolete
20408         assertion.
20409         (emit_conditional_move, emit_conditional_add): Inline what's needed
20410         of compare_from_rtx, using new prepare_cmp_insn for the rest.
20411         (init_optabs): Init cmp_optab with UNKNOWN, cbranch_optab
20412         with COMPARE.  Move cmov_optab and cstore_optab above
20413         with cbranch_optab, move cmp_optab down with ucmp_optab,
20414         remove tst_otpab.  Do not initialize trap_rtx.
20415         (gen_cond_trap): Do it here.  Use ctrap_optab.  Test predicate
20416         for trap code.  Do not check HAVE_conditional_trap.  Use
20417         prepare_cmp_insn.  Accept no predicate for operand 3.
20418         * optabs.h (OTI_cmp): Mark as used only for libcalls.
20419         (OTI_ctrap, ctrap_optab): New.
20420         (tst_optab): Delete.
20421         (bcc_gen_fctn, setcc_gen_code, emit_cmp_insn): Delete.
20422         * ifcvt.c (find_if_header): Replace HAVE_conditional_trap
20423         with lookup of ctrap_optab.
20424         * genopinit.c (cmp_optab, tst_optab, bcc_gen_fctn, setcc_gen_code):
20425         Delete.
20426         (ctrap_optab): New.
20427
20428         * combine.c (combine_simplify_rtx, simplify_set): Do not
20429         special case comparing against zero for cc0 machines.
20430         * simplify-rtx.c (simplify_binary_operation_1): Never remove
20431         COMPARE on cc0 machines.
20432         (simplify_relational_operation): Return a new expression when
20433         a COMPARE could be removed.
20434         * final.c (final_scan_insn): Compare cc_status values
20435         against LHS of a (compare FOO (const_int 0)) cc0 source.
20436         Also check if cc_status.value is the full compare.
20437
20438         * doc/md.texi (bCC, sCC, tstMM, cmpMM): Delete.
20439         (cstoreMM4): Document.
20440         (conditional_trap): Document ctrapMM4 instead.
20441         (sync_compare_and_swapMM): Refer to cbranchcc4.
20442         (Dependent Patterns): Eliminate obsolete information referring to
20443         the old jump optimization phase.
20444         (Canonicalization): Include cbranchcc4 case, omit canonicalization
20445         of compares with 0 on cc0 machines.
20446         (Jump Patterns): Refer to MODE_CC jump patterns preferably,
20447         avoiding references to cc0.  Remove text about storing operands
20448         in cmpMM.
20449         * doc/tm.texi (Condition Codes): Include blurb on different
20450         condition code representations, separate into subsections for
20451         CC0, MODE_CC and conditional execution.
20452
20453         * config/alpha/alpha-protos.h (alpha_emit_conditional_branch,
20454         alpha_emit_setcc): Accept operands and a machine mode.
20455         * config/alpha/alpha.c (alpha_emit_conditional_branch):
20456         Get code/op0/op1 from operands, use machine mode argument
20457         instead of alpha_compare.fp_p.  Emit the branch here.
20458         (alpha_emit_setcc): Likewise, and return boolean.
20459         (alpha_emit_conditional_move): Likewise.  Assert that
20460         cmp_op_mode == cmp_mode, and simplify accordingly.
20461         * config/alpha/alpha.h (struct alpha_compare, alpha_compare): Delete.
20462         * config/alpha/alpha.md (cmpdf, cmptf, cmpdi, bCC, sCC): Delete.
20463         (cbranchdf4, cbranchtf4, cbranchdi4, cstoredf4, cstoretf4,cstoredi4):
20464         Delete.
20465         (stack probe test): Use cbranchdi4.
20466         * config/alpha/predicates.md (alpha_cbranch_operator): New.
20467
20468         * config/arc/arc.c (gen_compare_reg): Do not emit cmp.
20469         * config/arc/arc.h (movsicc, movsfcc): Use it.
20470         (movdicc, *movdicc_insn, movdfcc, *movdfcc_insn): Remove.
20471         (cbranchsi4, cstoresi4): New.
20472         (cmpsi, bCC and sCC expanders): Remove.
20473
20474         * config/arm/arm.c (arm_compare_op0, arm_compare_op1): Delete.
20475         * config/arm/arm.h (arm_compare_op0, arm_compare_op1): Delete.
20476         * config/arm/predicates.md (arm_comparison_operator): Only include
20477         floating-point operators if there is a hardware floating-point unit.
20478         * config/arm/arm.md (cbranchsi4, cstoresi4): Enable for TARGET_32BIT,
20479         deferring to cbranch_cc and cstore_cc respectively.
20480         (cbranchsf4, cbranchdf4, cbranchdi4, cstoresf4, cstoredf4, cstoredi4,
20481         cbranch_cc, cstore_cc): New.
20482         (movsicc, movsfcc, movdfcc): Do not use arm_compare_op0 and
20483         arm_compare_op1.
20484         (bCC, sCC, cmpsi, cmpsf, cmpdf, cmpdi): Delete.
20485
20486         * config/avr/avr-protos.h (out_tstsi, out_tsthi): Adjust prototype.
20487         * config/avr/avr.c (out_tstsi, out_tsthi): Get the tested operand
20488         as an argument.
20489         (adjust_insn_length): Adjust calls.
20490         (avr_reorg): Handle (compare (foo) (const_int 0)).
20491         * config/avr/avr.md (tstqi, tsthi, tstsi): Remove.
20492         (*negated_tstqi, *negated_tsthi, *negated_tstsi): Unmacroize.
20493         (*reversed_tsthi, *reversed_tstsi): Add a scratch for simplicity.
20494         (cmpqi, cmphi, cmpsi): Prepend asterisk, fuse tst[qhs]i here.
20495         (bCC): Remove.
20496         (cbranchqi4, cbranchhi4, cbranchsi4): New.
20497         (tst -> sbrc/sbrs peephole2, cpse peephole): Wrap RHS with COMPARE.
20498
20499         * config/bfin/bfin.md (cmpbi, cmpsi, bCC, sCC): Delete.
20500         (cbranchsi4, cstorebi4, cstoresi4): New.
20501         (movbisi): This insn is duplicate, split it to zero_extend.
20502         * config/bfin/bfin.c (bfin_compare_op0, bfin_compare_op1): Delete
20503         (bfin_gen_compare): Do not use them.  Emit VOIDmode SET, not BImode.
20504         (bfin_optimize_loop): Use cbranch expander.
20505         * config/bfin/bfin.h (bfin_compare_op0, bfin_compare_op1): Delete.
20506         * config/bfin/predicates.md (bfin_cbranch_operator): Rename to...
20507         (bfin_bimode_comparison_operator): ... this.
20508         (bfin_direct_comparison_operator): New.
20509
20510         * config/cris/cris.c (cris_normal_notice_update_cc): Look
20511         inside (compare FOO (const_int 0)).
20512         (cris_rtx_costs): Handle ZERO_EXTRACT.
20513         * config/cris/cris.md (tstdi, tst<mode>, cmpdi): Delete.
20514         (*tstdi_non_v32): Fold in *cmpdi_non_v32.
20515         (*tstdi_v32): Delete.
20516         (*cmpdi_non_v32): Add M alternative for operand 1.
20517         (cmpsi, cmp<mode>): Make private.
20518         (*tstsi, *tst<mode>_cmp, *tst<mode>_non_cmp, *btst): Wrap LHS
20519         with COMPARE.
20520         (cbranch<mode>4, cbranchdi4, cstore<mode>4): New.
20521
20522         * config/crx/crx.md (cstore<mode>4, cbranchcc4): New.
20523         (cmp<mode>, bCOND_internal, b<code>, s<code>): Delete.
20524         (cbranch<mode>4, sCOND_internal): Use ordered_comparison_operator.
20525         (cc_reg_operand): New.
20526         (any_cond): Delete.
20527         * config/crx/crx.c (crx_compare_op0, crx_compare_op1,
20528         crx_expand_compare, crx_expand_branch, crx_expand_scond): Delete.
20529         * config/crx/crx.h (crx_compare_op0, crx_compare_op1): Delete.
20530         * config/crx/crx-protos.h (crx_expand_compare, crx_expand_branch,
20531         crx_expand_scond): Delete.
20532
20533         * config/fr30/fr30.md (cmp<mode>, bCC): Delete.
20534         (cbranchsi4): New.
20535         * config/fr30/fr30.c (fr30_compare_op0, fr30_compare_op1): Delete
20536         * config/fr30/fr30.h (fr30_compare_op0, fr30_compare_op1): Delete.
20537
20538         * config/frv/frv.md (cbranchsi4, cbranchsf4, cbranchdf4,
20539         cstoresi4, cstoresf4, cstoredf4): New.
20540         (cmpdi, cmpsi, cmpsf, cmpdf, bCC, sCC): Remove.
20541         * config/frv/frv-protos.h (frv_emit_cbranch, frv_emit_scc):
20542         Receive the entire operands array.
20543         * config/frv/frv.h (frv_compare_op0, frv_compare_op1): Delete.
20544         * config/frv/frv.c (frv_compare_op0, frv_compare_op1): Delete.
20545         * config/frv/frv-protos.h (frv_emit_cbranch, frv_emit_scc):
20546         Get test/op0/op1 from the operands array.
20547         (frv_emit_cond_move): Get test/op0/op1 from the test_rtx.
20548
20549         * config/h8300/h8300-protos.h (h8300_expand_branch): Accept operands.
20550         (h8300_expand_store): New.
20551         * config/h8300/h8300.c (h8300_rtx_costs): Handle (compare FOO
20552         (const_int 0)).
20553         (h8300_expand_branch): Emit compare here.  Adjust for new arguments.
20554         (h8300_expand_store): New.
20555         * config/h8300/h8300.md (btst combine patterns): Wrap with COMPARE
20556         or do not try to produce (set (cc0) REG).
20557         (peepholes): Wrap arguments with COMPARE.  Add a peephole to
20558         change a compare into a move to a scratch register.  Disable some
20559         peepholes when comparing with zero.
20560         (tstsi, tsthi, tstsi, cmpqi): Make private.
20561         (cmphi): Delete.
20562         (bCC, sCC): Delete.
20563         (cbranchqi4, cbranchhi4, cbranchsi4, cstoreqi4, cstorehi4,
20564         cstoresi4): New.
20565
20566         * config/i386/i386.c (ix86_expand_int_movcc, ix86_expand_int_addcc,
20567         ix86_expand_fp_movcc): Set ix86_compare_op0 and ix86_compare_op1.
20568         (ix86_emit_i387_log1p): Use gen_cbranchxf4.
20569         (ix86_emit_i387_log1p): Use cbranchxf2.
20570         (ix86_expand_setcc): Return void.
20571         * config/i386/i386-protos.h (ix86_expand_setcc): Return void.
20572         * config/i386/i386.md (cmpti, cmpdi, cmpsi, cmphi, cmpqi, cmpxf,
20573         cmp<MODEF>, cmpcc): Remove.
20574         (cbranchti4, cbranchdi4, cbranchsi4, cbranchhi4, cbranchqi4,
20575         cbranchxf4, cbranch<MODEF>4, cbranchcc4, cstoredi4, cstoresi4,
20576         cstorehi4, cstoreqi4, cstorexf4, cstore<MODEF>4, cstorecc): New.
20577         (sCC and bCC expanders): Remove.
20578         (stack_protect_test): Use cbranchcc4.
20579
20580         * config/ia64/ia64-protos.h (ia64_compare_op0, ia64_compare_op1):
20581         Delete.
20582         (ia64_expand_compare): Accept three rtx by reference and return void.
20583         * config/ia64/ia64.c (ia64_compare_op0, ia64_compare_op1): Delete.
20584         (ia64_expand_compare): Replace op0/op1 with *op0/*op1.  Get code
20585         from *expr.  Update *expr with the BImode comparison to do.
20586         * config/ia64/ia64.md (cmpbi, cmpsi, cmpdi, cmpsf, cmpdf, cmpxf,
20587         cmptf, bCC, sCC, conditional_trap): Delete.
20588         (cbranchbi4, cbranchsi4, cbranchdi4, cbranchsf4, cbranchdf4,
20589         cbranchxf4, cbranchtf4, cstorebi4, cstoresi4, cstoredi4, cstoresf4,
20590         cstoredf4, cstorexf4, cstoretf4, ctrapbi4, ctrapsi4, ctrapdi4,
20591         ctrapsf4, ctrapdf4, ctrapxf4, ctraptf4): New.
20592         * config/ia64/predicates.md (ia64_cbranch_operator): New.
20593
20594         * config/iq2000/iq2000-protos.h (gen_conditional_branch): Change
20595         type of last argument.
20596         * config/iq2000/iq2000.c (branch_cmp, branch_type): Remove.
20597         (gen_conditional_branch): Get code/cmp0/cmp1 from operands,
20598         use machine mode argument instead of branch_type.  Remove dead
20599         code for floating-point comparisons.
20600         * config/iq2000/iq2000.h (branch_cmp, branch_type): Remove.
20601         * config/iq2000/iq2000.md (cmpsi, cmpdi, cmpsf, cmpdf, tstsi, bCC):
20602         Remove.
20603         (cbranchsi4, cstoresi4): New.
20604         * config/iq2000/predicates.md (reg_or_const_operand): New.
20605
20606         * config/m32c/m32c.md (cbranch splitter): Use match_op_dup.
20607         * config/m32c/m32c.md (any_cond, gl_cond): Delete.
20608         (b<code>_op): Rewrite to...
20609         (bcc_op): ... this, using match_operator.
20610         (s<code>_op): Rewrite to...
20611         (scc_op): ... this, using match_operator.
20612         (s<code>_24_op): Rewrite to...
20613         (scc_op_24): ... this, using match_operator.
20614         (s<code>_<mode>): Rewrite to...
20615         (cstore<mode>4): ... this, using match_operator.
20616         (s<code>_<mode>_24): Rewrite to...
20617         (cstore<mode>4_24): ... this, using match_operator.
20618         * config/m32c/m32c-protos.h (m32c_cmp_flg_0, m32c_pend_compare,
20619         m32c_unpend_compare, m32c_expand_scc): Delete.
20620         * config/m32c/m32c.c (compare_op0, compare_op1, m32c_cmp_flg_0,
20621         m32c_pend_compare, m32c_unpend_compare, m32c_expand_scc): Delete.
20622         (m32c_expand_movcc): Change NE to EQ if necessary.
20623         (m32c_init_libfuncs): Modify cstore optab instead of setcc_gen_code.
20624
20625         * config/m32r/m32r-protos.h (gen_cond_store): New.
20626         * config/m32r/m32r.c (m32r_compare_op0, m32r_compare_op1): Delete.
20627         (gen_cond_store): New, from sCC patterns.
20628         (m32r_expand_block_move): Use cbranchsi4.
20629         * config/m32r/m32r.h (m32r_compare_op0, m32r_compare_op1): Delete.
20630         * config/m32r/m32r.md (cmpsi, bCC, sCC): Delete.
20631         (cbranchsi4, cstoresi4): New.
20632
20633         * config/m68hc11/m68hc11.c (m68hc11_compare_op0, m68hc11_compare_op1):
20634         Delete.
20635         (m68hc11_rtx_costs_1, m68hc11_rtx_costs): Handle ZERO_EXTRACT.
20636         (m68hc11_notice_update_cc): Look into a compare with 0.
20637         * config/m68hc11/m68hc11.h (m68hc11_compare_op0, m68hc11_compare_op1):
20638         Delete.
20639         * config/m68hc11/m68hc11.md (tstsi, tsthi, tstqi, cmpsi,
20640         cmphi, cmpqi, bCC): Delete.
20641         (cbranchsi4, cbranchhi4, cbranchqi4): New.
20642         (tstqi_1, tstqi_z_used, tstqi_1, bitcmpqi, bitcmpqi_z_used,
20643         bitcmpqi_12, bitcmphi, various splits and peephole2s): Wrap cc0<-reg
20644         sets with COMPARE.
20645
20646         * config/m68k/predicates.md (m68k_cstore_comparison_operator,
20647         const0_operand, const1_operand, m68k_subword_comparison_operand): New.
20648         * config/m68k/constraints.md (H): New.
20649         * config/m68k/m68k.md (tstdi): Remove define_expand, use name for
20650         the define_insn below.
20651         (tstsi, tsthi, tst<FP:mode>, cmphi, cmpqi, cmp<FP:mode>): Delete.
20652         (*tstsi_internal_68020_cf, *tstsi_internal, *tsthi_internal,
20653         *tstqi_internal, tst<mode>_6881, tst<mode>_cf, many unnamed
20654         patterns): Wrap RHS with COMPARE.
20655         (tst<FP>_68881, tst<FP>_cf): Use const0_operand.
20656         (*cmpdi_internal): Name this pattern.
20657         (cmpdi): Change to define_insn.
20658         (cbranchdi4, cstoredi4, cbranchsi4, cstoresi4, cbranchhi4, cstorehi4,
20659         cbranchqi4, cstoreqi4, cbranch<FP:mode>4, cstore<FP:mode>4): New.
20660         (scc0_di, scc0_di_5200, scc_di): Use the ordered_comparison_operator
20661         predicate.
20662         (seq, sne, sgt, sgtu, slt, sltu, sge, sgeu, sle, sleu, sordered,
20663         sunordered, suneq, sunge, sungt, sunle, sunlt, sltgt): Delete
20664         (conditional_trap): Change to...
20665         (ctrapdi4, ctrapsi4, ctraphi4, ctrapqi4): ... these.
20666         (*conditional_trap): Use the ordered_comparison_operator and
20667         const1_operand predicates.
20668         * config/m68k/m68k.c (m68k_last_compare_had_fp_operands): Delete.
20669         (m68k_expand_prologue): Use ctrapsi4 instead of cmpsi+conditional_trap.
20670         (m68k_rtx_costs): Look for ZERO_EXTRACT in a COMPARE.
20671         * config/m68k/m68k.h (m68k_last_compare_had_fp_operands): Delete.
20672
20673         * config/mcore/mcore-protos.h (arch_compare_op0, arch_compare_op1,
20674         mcore_modify_comparison, mcore_gen_compare_reg): Remove.
20675         (mcore_gen_compare): New.
20676         * config/mcore/mcore.c (arch_compare_op0, arch_compare_op1): Delete.
20677         (mcore_modify_comparison, mcore_gen_compare_reg): Fold into...
20678         (mcore_gen_compare): ... this.
20679         * config/mcore/mcore.md (cmpsi, bCC, sCC): Remove.
20680         (cbranchsi4, cstoresi4): New, using mcore_gen_compare.
20681         (stack probe pattern): Use cbranchsi4.
20682
20683         * config/mips/predicates.md (mips_cstore_operator): New.
20684         * config/mips/mips-ps-3d.md (movv2sfcc): Do not use cmp_operands.
20685         * config/mips/mips.md (any_cond): Delete.
20686         (conditional_trap): Rename to ctrap<GPR:mode>4.  Adjust predicates,
20687         always succeed.
20688         (fixuns_truncdfsi2, fixuns_truncdfdi2, fixuns_truncsfsi2,
20689         fixuns_truncsfdi2): Use cbranch patterns.
20690         (cmp<GPR:mode>, cmp<SCALARF:mode>): Delete.
20691         (b<code>): Change to cbranch<GPR:mode>4 and cbranch<SCALARF:mode>4.
20692         Adjust call to mips_expand_conditional_branch.
20693         (seq, sne, slt<u>, sle<u>, sgt<u>, sge<u>): Change to
20694         cstore<GPR:mode>4.
20695         * config/mips/mips-protos.h (mips_expand_conditional_branch,
20696         mips_expand_scc, mips_expand_conditional_trap): Adjust prototypes.
20697         * config/mips/mips.c (cmp_operands): Delete.
20698         (mips_emit_compare): Get comparison operands from *op0/*op1.
20699         (mips_expand_scc): Get code/op0/op1/target from operands.  Assert
20700         that it succeeds.  Use op0/op1 instead of cmp_operands.
20701         (mips_expand_conditional_branch, mips_expand_conditional_move,
20702         mips_expand_conditional_trap): Likewise.
20703         (mips_block_move_loop): Use cbranch patterns.
20704         * config/mips/mips.h (cmp_operands): Delete.
20705
20706         * config/mmix/mmix.c (mmix_valid_comparison): Delete.
20707         (mmix_gen_compare_reg): Just return a register in the right CC mode.
20708         * config/mmix/mmix.h (mmix_compare_op0, mmix_compare_op1): New.
20709         * config/mmix/mmix.md (cmpdi, cmpdf): Remove.
20710         (*cmpcc_folded): Rename to...
20711         (*cmpdi_folded): this.
20712         (*cmpcc): Rename to...
20713         (*cmps): ... this.
20714         (movdfcc, movdicc): Adjust for new semantics of mmix_gen_compare_reg.
20715         (bCC): Remove.
20716         (cbranchdi4): New.
20717         (cbranchdf4): New.  Handle invalid comparisons here.
20718         * config/mmix/predicates.md (float_comparison_operator): New.
20719
20720         * config/mn10300/mn10300.c (mn10300_rtx_costs): Consider 0 and
20721         zero_extract to be cheap in (compare (zero_extract) (const_int 0).
20722         * config/mn10300/mn10300.md (tst): Delete.
20723         (*tst_extqisi_am33, *tst_extqisi, *tst_exthisi_am33, *tst_exthisi):
20724         Name these patterns and wrap RHS in a compare.
20725         (*cmpsi): Make this pattern private.  Include tst.
20726         (*cmpsf): Make this pattern private.
20727         (and and zero_extract cc0 set): Wrap RHS in a COMPARE.
20728         (compare with zero peepholes): Likewise.
20729         (bCC): Remove.
20730         (cbranchsi4, cbranchsf4): New.
20731         (casesi): Use cbranchsi4.
20732
20733         * config/pa/pa.c (hppa_compare_op0, hppa_compare_op1,
20734         hppa_branch_type): Delete.
20735         (return_addr_rtx): Use cbranchsi4.
20736         (emit_bcond_fp): Accept all operands.  Replace CODE with NE.
20737         Emit CCFPmode comparison here.
20738         (gen_cmp_fp): Delete, now part of emit_bcond_fp.
20739         * config/pa/pa.h (enum cmp_type, hppa_compare_op0, hppa_compare_op1,
20740         hppa_branch_type): Delete.
20741         * config/pa/pa.md (cmpdi, cmpsi, cmpsf, cmpdf, sCC, bCC): Delete.
20742         (movsicc, movdicc): Remove references to hppa_compare_op0,
20743         hppa_compare_op1 and compare_from_rtx.
20744         (cbranchdi4, cbranchsi4, cbranchsf4, cbranchdf4, cstoresi4): New.
20745         (casesi): Use cbranchsi4.
20746
20747         * config/pdp11/pdp11-protos.h (output_jump): Change prototype.
20748         * config/pdp11/pdp11.c (output_jump): Embed opcodes here.
20749         * config/pdp11/pdp11.md (register_or_const0_operand): New.
20750         (cmpdf, cmphi, cmpqi): Make private.  Add tst alternatives.
20751         (cmpsi, tstsi, tstdf, tsthi, tstqi): Delete.
20752         (bCC): Delete.
20753         (cbranchdf4, cbranchhi4, cbranchqi4): New.
20754         (*branch, *branch_inverted): New.
20755
20756         * config/picochip/picochip.md (cbranchhi4): Use
20757         ordered_comparison_operator.
20758         (cmphi, bCC): Remove.
20759
20760         * config/rs6000/predicates.md (rs6000_cbranch_operator): New.
20761         (trap_comparison_operator): Delete.
20762         * config/rs6000/rs6000-protos.h (rs6000_emit_sCOND,
20763         rs6000_emit_cbranch): Accept mode and operands.
20764         * config/rs6000/rs6000.c (rs6000_compare_op0, rs6000_compare_op1,
20765         rs6000_compare_fp_p): Delete.
20766         (rs6000_generate_compare): Accept mode and comparison.  Extract code
20767         and op0/op1 from there.  Replace references to rs6000_compare_op0
20768         and rs6000_compare_op1.
20769         (rs6000_emit_sCOND): Adjust call to rs6000_generate_compare and
20770         extract result from passed operands.
20771         (rs6000_emit_cbranch): Adjust call to rs6000_generate_compare and
20772         extract loc from passed operands.
20773         (rs6000_emit_cmove): Likewise.
20774         * config/rs6000/rs6000.h (rs6000_compare_op0, rs6000_compare_op1,
20775         rs6000_compare_fp_p): Delete.
20776         * config/rs6000/rs6000.md (cmp<GPR>, cmp<FP>, bCC, sCC): Delete.
20777         (cbranch<GPR>4, cbranch<FP>4): New.
20778         (cstore<mode>4): New.  Consolidate here all choices about when to use
20779         portable or specialized sCC sequences.
20780         (stack_protect_test): Use cbranchsi4.
20781         (conditional_trap): Replace with ctrap<GPR>4.
20782         (conditional trap insn): Replace trap_comparison_operator with
20783         ordered_comparison_operator.
20784
20785         * config/s390/s390.c (s390_compare_op0, s390_compare_op1): Delete.
20786         (s390_emit_prologue): Use ctrap.
20787         * config/s390/s390.h (s390_compare_op0, s390_compare_op1): Delete.
20788         * config/s390/predicates.md (s390_eqne_operator, s390_scond_operator):
20789         New predicates replacing...
20790         * config/s390/s390.md (COMPARE, SCOND): ... these iterators.
20791         (cmp<GPR>, cmp<FP>, cmpcc): Delete.
20792         (trunc patterns): Use emit_cmp_and_jump_insns instead of cmp/branch.
20793         (add<mode>cc): Do not use s390_compare_op0/op1.
20794         (s<code>): Change to...
20795         (cstore<mode>4): ... this. Do not use s390_compare_op0/op1.
20796         (seq): Change to...
20797         (cstorecc4): ... this.  Handle EQ or NE equally.
20798         (*sne): Un-privatize for use in cstorecc4.
20799         (b<code>): Change to...
20800         (cbranch<GPR>4, cbranch<FP>4, cbranchcc4): ... these.
20801         (conditional_trap): Replace with...
20802         (ctrap<GPR>4, ctrap<FP>4): ... these.
20803         (stack_protect): Use cbranchcc4.
20804
20805         * config/score/score-conv.h (cmp_op0, cmp_op1): Delete.
20806         * config/score/score-protos.h (score_gen_cmp): Delete.
20807         * config/score/score.c (cmp_op0, cmp_op1, score_gen_cmp): Delete.
20808         (score_block_move-loop): Use cbranchsi4.
20809         * config/score/score.md (cbranchsi4): New.
20810         (cmpsi, bCC): Delete.
20811         * config/score/score3.c (cmp_op0, cmp_op1, score3_gen_cmp): Delete.
20812         (score3_movsicc): Use ops[1] operands instead of cmp_op0/cmp_op1.
20813         * config/score/score7.c (cmp_op0, cmp_op1, score7_gen_cmp): Delete.
20814         (score7_movsicc): Use ops[1] operands instead of cmp_op0/cmp_op1.
20815         * config/score/score3.h (score3_gen_cmp): Delete.
20816         * config/score/score7.h (score7_gen_cmp): Delete.
20817
20818         * config/sh/sh-protos.h (prepare_scc_operands): Rename to...
20819         (sh_emit_scc_to_t): ... this.  Return void.
20820         (from_compare): Rename to...
20821         (sh_emit_compare_and_branch): ... this.
20822         (sh_emit_compare_and_set): New.
20823         (sh_expand_t_scc): Accept operands.
20824         * config/sh/predicates.md (sh_float_comparison_operator): New.
20825         * config/sh/sh.c (sh_compare_op0, sh_compare_op1): Delete.
20826         (prepare_scc_operands): Rename to...
20827         (sh_emit_scc_to_t): ... this.  Return void.  Get op0/op1 from
20828         arguments.
20829         (sh_emit_cheap_store_flag): New.
20830         (sh_emit_set_t_insn): New.
20831         (from_compare): Rename to...
20832         (sh_emit_compare_and_branch): ... this.  Accept mode.  Rewrite
20833         handling of TARGET_SH2E floating point to avoid recursive call.
20834         Generate branch here.
20835         (sh_emit_compare_and_set): New.
20836         (sh_expand_t_scc): Get op0/op1 from arguments.
20837         (sh_emit_cheap_store_flag): New.
20838         * config/sh/sh.md (cbranchdi4, cbranchsi4): Include -mno-cbranchdi
20839         cases.
20840         (cbranchdi4_i): Use an "I08" constraint instead of an "i" constraint.
20841         (cmpsi, cmpdi, cmpsf, cmpdf): Delete.
20842         (movsicc, movdicc): Do nothing when it recreated operands from
20843         sh_compare_*. Use sh_emit_cheap_store_flag.  Adjust call to
20844         prepare_scc_operands (now sh_emit_scc_to_t).
20845         (udivdi3): Use cstoresi4.
20846         (beq_media, bne_media, bge_media, bgtu_media, bgeu_media, beq,
20847         bne, bgt, blt, ble, bge, bgtu, bltu, bgeu, bleu, bunordered): Delete.
20848         (cbranchint4_media, cbranchfp4_media): New.
20849         (casesi): Use cbranchdi4.
20850         (seq, slt, sle, sgt, sge, sgtu, sltu, sgeu, sne, sleu, sunordered):
20851         Delete.
20852         (cstore4_media, cstoresi4, cstoredi4, cstoresf4, cstoredf4): New.
20853         (movnegt): Remove second operand.
20854         (cbranchsf4, cbranchdf4): New.
20855         (stack_protect): Use cbranchdi4/cbranchsi4.
20856
20857         * config/sparc/sparc.c (sparc_compare_op0, sparc_compare_op1): Delete.
20858         (gen_compare_reg): Accept comparison, extract part of it to...
20859         (gen_compare_reg_1): ... this.
20860         (gen_compare_operator): Delete.
20861         (gen_v9_scc): Accept separate destination, comparison code and arms.
20862         Do not use sparc_compare_op0/sparc_compare_op1.
20863         (emit_scc_insn, emit_conditional_branch_insn): New.
20864         (emit_v9_brxx): Make static.  Remove useless assertion.
20865         (sparc_emit_float_lib_cmp): Return RTL instead of calling
20866         emit_cmp_insn.
20867         (sparc_expand_compare_and_swap_12): Use gen_compare_reg_1+cbranchcc4.
20868         * config/sparc/sparc-protos.h (gen_compare_reg,
20869         sparc_emit_float_lib_cmp): Adjust prototype.
20870         (emit_scc_insn, emit_conditional_branch_insn): New.
20871         (gen_v9_scc, emit_v9_brxx_insn, gen_compare_operator): Delete.
20872         * config/sparc/sparc.h (sparc_compare_op0, sparc_compare_op1): Delete.
20873         * config/sparc/sparc.md (P, I, F, V32, V32I, V64, V64I): Move all
20874         iterators to the top.
20875         (cmpsi, cmpdi, cmpsf, cmpdf, cmptf, seqsi_special_extend,
20876         snesi_special_extend, sCC, bCC, seqdi_special_trunc,
20877         snedi_special_trunc): Delete.
20878         (seqdi_special, snedi_special): Use expansion of seqdi_special_trunc
20879         and snedi_special_trunc.
20880         (cstoresi4, cstoredi4, cstore<F:mode>4, cbranchcc4, cbranchsi4,
20881         cbranchdi4, cbranch<F:mode>4): New.
20882         (mov<I:mode>cc, mov<F:mode>cc): Handle sparc_emit_float_lib_cmp
20883         here.  Use gen_compare_reg instead of gen_compare_operator.
20884         (conditional_trap): Replace with...
20885         (ctrapsi4, ctrapdi4): ... this.
20886         (stack_protect_test): Use cbranchcc4.
20887
20888         * config/spu/spu-protos.h (spu_emit_branch_or_set): Change second
20889         argument to rtx.
20890         * config/spu/spu.c (spu_compare_op0, spu_compare_op1): Remove.
20891         (spu_emit_branch_or_set): Get code/op0/op1 from second argument.
20892         Change spu_compare_op0/op1 to op0/op1 throughout.  Get target
20893         from operands[0] or operands[3] depending on is_set.
20894         * config/spu/spu.h (spu_compare_op0, spu_compare_op1): Remove.
20895         * config/spu/spu.md (cmp<mode:VQHSI>, cmp<mode:DTI>, cmp<mode:VSF>,
20896         cmpdf, bCC), sCC: Remove.
20897         (cbranch<mode:VQHSI>4, cbranch<mode:DTI>, cbranch<mode:VSF>4,
20898         cbranchdf4, cstore<mode:VQHSI>4, cstore<mode:DTI>, cstore<mode:VSF>4,
20899         cstoredf4): New.
20900         (mov<mode>cc): Accept ordered_comparison_operator, adjust call to
20901         spu_emit_branch_or_set.
20902
20903         * config/stormy16/stormy16-protos.h (xstormy16_emit_cbranch):
20904         Add two arguments.
20905         * config/stormy16/stormy16.h (xstormy16_compare_op0,
20906         xstormy16_compare_op1): Delete.
20907         * config/stormy16/stormy16.c (xstormy16_compare_op0,
20908         xstormy16_compare_op1): Delete.
20909         (xstormy16_emit_cbranch): Get op0/op1 from the new arguments.
20910         Adjust calls.
20911         * config/stormy16/stormy16.md (cbranchsi4, cbranchhi4): New.
20912         (cmphi, cmpsi, bCC): Remove.
20913
20914         * config/v850/v850.md (tstsi, cmpsi): Fold into...
20915         (*cmpsi): ... this one.
20916         (cbranchsi4, cstoresi4): New.
20917         (bCC expanders): Delete.
20918         (sCC insns): Fold into...
20919         (*setcc): ... this one.
20920         (casesi): Do not use gen_cmpsi and gen_bgtu.
20921         (various splits): Wrap "naked" RHS of a cc0 set with COMPARE.
20922         (movsicc): Simplify.
20923         * config/v850/v850.c (v850_rtx_costs): Handle ZERO_EXTRACT in COMPARE.
20924
20925         * config/vax/vax-protos.h (cond_name): New.
20926         (vax_output_conditional_branch): Remove.
20927         * config/vax/vax.c (cond_name): New.
20928         (vax_output_conditional_branch): Remove.
20929         * config/vax/vax.h (PRINT_OPERAND): Dispatch %c to cond_name.
20930         * config/vax/vax.md (tst<VAXint>, tst<VAXfp>): Remove.
20931         (cmp<VAXint>, cmp<VAXfp>): Privatize.  Add constraints for tst.
20932         (bit<VAXint>): Wrap source with (compare).
20933         (b<code> and following unnamed pattern): Rename to *branch and
20934         *branch_reversed.  Change macroization to match_operator.
20935         (cbranch<VAXint>4, cbranch<VAXfp>4): New.
20936
20937         * config/xtensa/predicates.md (xtensa_cstoresi_operator): New.
20938         * config/xtensa/xtensa-protos.h (xtensa_expand_conditional_branch):
20939         Change last argument to machine_mode.
20940         (xtensa_expand_scc): Add machine_mode argument.
20941         * config/xtensa/xtensa.c (branch_cmp, branch_type): Remove.
20942         (gen_conditional_move, xtensa_expand_conditional_branch,
20943         xtensa_expand_scc, xtensa_expand_conditional_move): Use mode
20944         instead of branch_type, fetch cmp0/cmp1/test_code from operands[].
20945         Adjust operand numbers.
20946         * config/xtensa/xtensa.h (enum cmp_type, branch_cmp, branch_type):
20947         Delete.
20948         * config/xtensa/xtensa.md (any_cond, any_scc): Delete.
20949         (cmpsi, cmpsf, b<code>, s<code>): Delete.
20950         (cbranchsi4, cbranchsf4, cstoresi4, cstoresf4): New.
20951
20952 2009-05-12  Paolo Bonzini  <bonzini@gnu.org>
20953
20954         * optabs.c (prepare_cmp_insn): Temporarily disable test that
20955         causes spurious differences between trunk and cond-optab branch.
20956
20957 2009-05-12  Alexandre Oliva  <aoliva@redhat.com>
20958
20959         PR target/37137
20960         * doc/install.texi (STAGE1_TFLAGS, BUILD_CONFIG): Document.
20961
20962 2009-05-12  Alexandre Oliva  <aoliva@redhat.com>
20963
20964         * tree.c (iterative_hash_pointer): Delete.
20965         (iterative_hash_expr): Short-circuit handling of NULL pointer.
20966         Hash UIDs and versions of SSA names.  Don't special-case built-in
20967         function declarations.
20968
20969 2009-05-11  Ian Lance Taylor  <iant@google.com>
20970
20971         PR bootstrap/40103
20972         * graphite.c: Force -Wc++-compat to only be a warning before
20973         #including "cloog/cloog.h".
20974
20975 2009-05-11  Martin Jambor  <mjambor@suse.cz>
20976
20977         * ipa-cp.c (ipcp_cloning_candidate_p): Add missing return false.
20978
20979 2009-05-11  Jan Hubicka  <jh@suse.cz>
20980
20981         * tree-ssa-loop-ivcanon.c: Include target.h
20982         (struct loop_size): new structure.
20983         (constant_after_peeling): New predicate.
20984         (tree_estimate_loop_size): New function.
20985         (estimated_unrolled_size): Rewrite for new estimates.
20986         (try_unroll_loop_completely): Use new estimates.
20987         * Makefile.in (tree-ssa-loop-ivcanon.o): Add dependenc on target.h
20988
20989 2009-05-11  Andrew Pinski  <andrew_pinski@playstation.sony.com>
20990
20991         * config/spu/spu-c.c (spu_categorize_keyword): Update for recent
20992         libcpp interface change.
20993         (spu_macro_to_expand): Likewise.
20994
20995 2009-05-11  Paolo Bonzini  <bonzini@gnu.org>
20996
20997         PR tree-optimization/40026
20998         * gimplify.c (gimplify_init_constructor): Change initial conditional
20999         to assertion.  Rewrite TREE_OPERAND (*expr_p, 1) after
21000         optimize_compound_literals_in_ctor.
21001
21002 2009-05-11  Nathan Sidwell  <nathan@codesourcery.com>
21003
21004         * config/m68k/m68k-devices.def (52274, 52277, 5301x, 5225x, 51xx):
21005         New devices.
21006         * doc/invoke.texi (M680x0 Options): Document new coldfire cpus.
21007
21008 2009-05-11  H.J. Lu  <hongjiu.lu@intel.com>
21009
21010         * tree-vect-data-refs.c (vect_analyze_group_access): Use
21011         HOST_WIDE_INT for gap.
21012
21013 2009-05-11  Ira Rosen  <irar@il.ibm.com>
21014
21015         PR tree-optimization/40074
21016         * tree-vect-data-refs.c (vect_analyze_group_access): Take gaps into
21017         account in group size and step comparison.
21018
21019 2009-05-11  Richard Guenther  <rguenther@suse.de>
21020
21021         * passes.c (init_optimization_passes): Strip now incorrect comment.
21022         (execute_function_todo): Do not set PROP_alias.
21023         * tree-pass.h (PROP_alias): Remove.
21024         * tree-ssa-structalias.c (pass_build_alias): Do not provide PROP_alias.
21025         * tree-if-conv.c (pass_if_conversion): Do not require PROP_alias.
21026         * tree-nrv.c (pass_return_slot): Likewise.
21027         * tree-object-size.c (pass_object_sizes): Likewise.
21028         * tree-ssa-dom.c (pass_dominator): Likewise.
21029         (pass_phi_only_cprop): Likewise.
21030         * tree-ssa-dse.c (pass_dse): Likewise.
21031         * tree-ssa-phiopt.c (pass_phiopt): Likewise.
21032         (pass_cselim): Likewise.
21033         * tree-ssa-pre.c (pass_pre): Likewise.
21034         (pass_fre): Likewise.
21035         * tree-ssa-reassoc.c (pass_reassoc): Likewise.
21036         * tree-ssa-sink.c (pass_sink_code): Likewise.
21037         * tree-stdarg.c (pass_stdarg): Likewise.
21038         * tree-tailcall.c (pass_tail_calls): Likewise.
21039         * tree-vrp.c (pass_vrp): Likewise.
21040
21041 2009-05-10  Ian Lance Taylor  <iant@google.com>
21042
21043         * basic-block.h (enum profile_status): Break out of struct
21044         control_flow_graph.
21045         * cgraph.h (struct inline_summary): Break out of struct
21046         cgraph_local_info.
21047         * cgraphunit.c (enum cgraph_order_sort_kind): New enum, broken out
21048         of struct cgraph_order_sort.
21049         * combine.c (enum undo_kind): New enum, broken out of struct undo.
21050         * cse.c (struct branch_path): Break out of struct
21051         cse_basic_block_data.
21052         * except.h (enum eh_region_type): Break out of struct eh_region.
21053         * gcc.c (enum add_del): Break out of struct modify_target.
21054         * genrecog.c (enum decision_type): Break out of struct decision_test.
21055         * ggc-page.c (struct ggc_pch_ondisk): Break out of struct
21056         ggc_pch_data.
21057         * matrix-reorg.c (struct free_info): Break out of struct matrix_info.
21058         * regmove.c (enum match_use): New enum, broken out of struct match.
21059         * sched-int.h (enum post_call_group): New enum, broken out of
21060         struct deps.
21061         (struct deps_reg): Break out of struct deps.
21062         * target.h (struct asm_int_op): Break out of struct gcc_target.
21063         * tree-eh.c (struct goto_queue_node): Break out of struct
21064         leh_tf_state.
21065         * tree-inline.h (enum copy_body_cge_which): Break out of
21066         copy_body_data.
21067         * tree-pass.h (enum opt_pass_type): Break out of struct opt_pass.
21068
21069         * c-decl.c (in_struct, struct_types): New static variables.
21070         (pushtag): Add loc parameter.  Change all callers.
21071         (lookup_tag): Add ploc parameter.  Change all callers.
21072         (check_compound_literal_type): New function.
21073         (parser_xref_tag): Add loc parameter.  Change all callers.  If
21074         -Wc++-compat, warn about struct/union/enum types defined within a
21075         struct or union.
21076         (start_struct): Add enclosing_in_struct, enclosing_struct_types,
21077         and loc parameters.  Change all callers.  Change error calls to
21078         error_at, using loc.  For a redefinition, if the location of the
21079         original definition is known, report it.  Set in_struct and
21080         struct_types.  If -Wc++-compat warn if in sizeof, typeof, or alignof.
21081         (finish_struct): Add new parameters enclosing_in_struct and
21082         enclosing_struct_types.  Change all callers.  Set
21083         C_TYPE_DEFINED_IN_STRUCT for all struct/union/enum types defined
21084         in the struct.  If in a struct, add this struct to struct_types.
21085         (start_enum): Add loc parameter.  Change all callers.  Use
21086         error_at for errors, using loc.  For a redefinition, if the
21087         location of the original definition is known, report it.  If in a
21088         struct, add this enum type to struct_types.  If -Wc++-compat warn
21089         if in sizeof, typeof, or alignof.
21090         * c-parser.c (disable_extension_diagnostics): Disable -Wc++-compat.
21091         (enable_extension_diagnostics): Reenable -Wc++-compat if appropriate.
21092         (c_parser_enum_specifier): Get enum location for start_enum.
21093         (c_parser_struct_or_union_specifier): Get struct location for
21094         start_struct.  Save in_struct and struct_types status between
21095         start_struct and finish_struct.
21096         (c_parser_cast_expression): Get location of cast.
21097         (c_parser_alignof_expression): Get location of type.
21098         (c_parser_postfix_expression): Likewise.
21099         (c_parser_postfix_expression_after_paren_type): Add type_loc
21100         parameter.  Change all callers.  Call check_compound_literal_type.
21101         Use type_loc for error about variable size type.
21102         * c-typeck.c (build_external_ref): If -Wc++-compat, warn about a use
21103         of an enum constant from an enum type defined in a struct or union.
21104         (c_cast_expr): Add loc parameter.  Change all callers.  If
21105         -Wc++-compat, warn about defining a type in a cast.
21106         * c-tree.h (C_TYPE_DEFINED_IN_STRUCT): Define.
21107         (start_enum, start_struct, finish_struct): Update declarations.
21108         (parser_xref_tag, c_cast_expr): Update declarations.
21109         (check_compound_literal_type): Declare.
21110
21111 2009-05-11  Ben Elliston  <bje@au.ibm.com>
21112
21113         * config/rs6000/rs6000-c.c (altivec_categorize_keyword): Update
21114         for recent libcpp interface change.
21115         (rs6000_macro_to_expand): Likewise.
21116
21117 2009-05-10  Michael Matz  <matz@suse.de>
21118
21119         PR target/40031
21120         * config/arm/arm.c (require_pic_register): Emit on entry edge,
21121         not at entry of function.
21122
21123 2009-05-10  Richard Guenther  <rguenther@suse.de>
21124
21125         PR tree-optimization/40081
21126         Revert
21127         * tree-sra.c (instantiate_element): Instantiate scalar replacements
21128         using the main variant of the element type.  Do not fiddle with
21129         TREE_THIS_VOLATILE or TREE_SIDE_EFFECTS.
21130
21131         * tree-sra.c (sra_type_can_be_decomposed_p): Do not decompose
21132         structs with volatile fields.
21133
21134 2009-05-10  Jan Hubicka  <jh@suse.cz>
21135
21136         * tree-inline.c (delete_unreachable_blocks_update_callgraph): Declare.
21137         (estimate_move_cost): Assert that it does not get called for
21138         VOID_TYPE_P.
21139         (estimate_num_insns): Skip VOID types in argument handling.
21140         (optimize_inline_calls): Delete unreachable blocks and verify that
21141         callgraph is valid.
21142
21143 2009-05-10  Jan Hubicka  <jh@suse.cz>
21144
21145         * cgraphbuild.c (record_reference): Use cgraph_mark_address_taken_node.
21146         * cgraph.c (cgraph_mark_address_taken_node): New function.
21147         (dump_cgraph_node): Dump new flag.
21148         * cgraph.h (struct cgraph_node): Add address_taken.
21149         (cgraph_mark_address_taken_node): New function.
21150         * ipa.c (cgraph_postorder): Prioritize functions with address taken
21151         since new direct calls can be born.
21152
21153 2009-05-10  Joseph Myers  <joseph@codesourcery.com>
21154
21155         * c-lex.c (c_lex_with_flags): Expect cpp_hashnode in
21156         tok->val.node.node.
21157
21158 2009-05-10  Jan Hubicka  <jh@suse.cz>
21159
21160         PR middle-end/40084
21161         * cgraph.c (cgraph_update_edges_for_call_stmt_node): Take old_call
21162         argument; rewrite.
21163         (cgraph_update_edges_for_call_stmt): Take old_decl argument.
21164         * cgraph.h (cgraph_update_edges_for_call_stmt): Update prototype.
21165         * tree-inline.c (copy_bb): Set frequency correctly.
21166         (fold_marked_statements): Update call to
21167         cgraph_update_edges_for_call_stmt.
21168
21169 2009-05-10  Joseph Myers  <joseph@codesourcery.com>
21170
21171         * config/arc/arc.c (arc_handle_interrupt_attribute): Use %qE for
21172         identifiers in diagnostics.
21173         * config/arm/arm.c (arm_handle_fndecl_attribute,
21174         arm_handle_isr_attribute): Likewise.
21175         * config/avr/avr.c (avr_handle_progmem_attribute,
21176         avr_handle_fndecl_attribute, avr_handle_fntype_attribute): Likewise.
21177         * config/bfin/bfin.c (handle_int_attribute,
21178         bfin_handle_longcall_attribute, bfin_handle_l1_text_attribute,
21179         bfin_handle_l1_data_attribute, bfin_handle_longcall_attribute,
21180         bfin_handle_l1_text_attribute, bfin_handle_l1_data_attribute):
21181         Likewise.
21182         * config/darwin.c (darwin_handle_kext_attribute,
21183         darwin_handle_weak_import_attribute): Likewise.
21184         * config/h8300/h8300.c (h8300_handle_fndecl_attribute,
21185         h8300_handle_eightbit_data_attribute,
21186         h8300_handle_tiny_data_attribute): Likewise.
21187         * config/i386/i386.c (ix86_handle_cconv_attribute,
21188         ix86_handle_abi_attribute, ix86_handle_struct_attribute): Likewise.
21189         * config/i386/winnt.c (ix86_handle_shared_attribute,
21190         ix86_handle_selectany_attribute): Likewise.
21191         * config/ia64/ia64.c (ia64_handle_model_attribute): Likewise.
21192         * config/m32c/m32c.c (function_vector_handler): Likewise.
21193         * config/m68hc11/m68hc11.c (m68hc11_handle_page0_attribute,
21194         m68hc11_handle_fntype_attribute): Likewise.
21195         * config/m68k/m68k.c (m68k_handle_fndecl_attribute): Likewise.
21196         * config/mcore/mcore.c (mcore_handle_naked_attribute): Likewise.
21197         * config/mips/mips.c (mips_insert_attributes,
21198         mips_merge_decl_attributes, mips_expand_builtin): Likewise.
21199         * config/rs6000/rs6000.c (rs6000_handle_longcall_attribute,
21200         rs6000_handle_struct_attribute): Likewise.
21201         * config/sh/sh.c (sh_insert_attributes,
21202         sh_handle_resbank_handler_attribute,
21203         sh_handle_interrupt_handler_attribute,
21204         sh2a_handle_function_vector_handler_attribute,
21205         sh_handle_sp_switch_attribute, sh_handle_trap_exit_attribute):
21206         Likewise.
21207         * config/sh/symbian.c (sh_symbian_mark_dllimport): Likewise.
21208         * config/spu/spu.c (spu_handle_fndecl_attribute,
21209         spu_handle_vector_attribute): Likewise.
21210         * config/stormy16/stormy16.c
21211         (xstormy16_handle_interrupt_attribute): Likewise.
21212         * config/v850/v850-c.c (ghs_pragma_section): Likewise.
21213         * config/v850/v850.c (v850_handle_interrupt_attribute): Likewise.
21214
21215 2009-05-10  Joseph Myers  <joseph@codesourcery.com>
21216
21217         * pretty-print.h (struct pretty_print_info): Add translate_identifiers.
21218         (pp_translate_identifiers): New.
21219         (pp_identifier): Only conditionally translate identifier to locale
21220         character set.
21221         * pretty-print.c (pp_construct): Set pp_translate_identifiers.
21222         (pp_base_tree_identifier): Only conditionally translate identifier
21223         to locale character set.
21224         * c-pretty-print.c (M_): Define.
21225         (pp_c_type_specifier, pp_c_primary_expression): Mark English
21226         fragments for conditional translation with M_.
21227         * tree-pretty-print.c (maybe_init_pretty_print): Disable
21228         identifier translation.
21229
21230 2009-05-10  Richard Guenther  <rguenther@suse.de>
21231
21232         PR tree-optimization/40081
21233         * tree-sra.c (instantiate_element): Instantiate scalar replacements
21234         using the main variant of the element type.  Do not fiddle with
21235         TREE_THIS_VOLATILE or TREE_SIDE_EFFECTS.
21236
21237 2009-05-09  Jan Hubicka  <jh@suse.cz>
21238
21239         PR middle-end/40080
21240         * cgraphunit.c (cgraph_materialize_all_clones): Do not redirect
21241         indirect calls; verify cgraph afterwards.
21242
21243 2009-05-09  Jan Hubicka  <jh@suse.cz>
21244
21245         PR bootstrap/40082
21246         * ipa.c (update_inlined_to_pointer): New function.
21247         (cgraph_remove_unreachable_nodes): Use it.
21248
21249 2009-05-09  Jan Hubicka  <jh@suse.cz>
21250
21251         * tree-eh.c (struct leh_state): Remove prev_try.
21252         (lower_try_finally, lower_catch, lower_eh_filter, lower_cleanup): Do
21253         not track prev_try.
21254         * except.c (gen_eh_region_cleanup, duplicate_eh_regions,
21255         copy_eh_region_1, copy_eh_region, redirect_eh_edge_to_label,
21256         remove_eh_handler_and_replace, foreach_reachable_handler,
21257         verify_eh_region, verify_eh_tree): Remove tracking of prev_try pointer.
21258         * except.h (struct eh_region): Remove eh_region_u_cleanup.
21259         (gen_eh_region_cleanup): Update prototype.
21260
21261 2009-05-09  Jan Hubicka  <jh@suse.cz>
21262
21263         PR middle-end/40043
21264         * except.c (copy_eh_region): Always set prev_try.
21265         (redirect_eh_edge_to_label): Find outer try.
21266         (foreach_reachable_handler): When looking for prev try
21267         handle case where previous try is not going to be taken.
21268
21269 2009-05-07  Michael Meissner  <meissner@linux.vnet.ibm.com>
21270
21271         PR tree-optimization/40049
21272         * tree-vect-stmts.c (vectorizable_operation): If the machine has
21273         only vector/vector shifts, convert the type of the constant to the
21274         appropriate type to avoid building incorrect trees, which
21275         eventually have problems with garbage collection.
21276
21277 2009-05-08  Joseph Myers  <joseph@codesourcery.com>
21278
21279         * fold-const.c (fold_binary): Do not fold multiplication by 1 or
21280         -1 for complex floating-point types if honoring signed zeros.
21281
21282 2009-05-08  Jan Hubicka  <jh@suse.cz>
21283
21284         * cgraphbuild.c (compute_call_stmt_bb_frequency): Accept function
21285         argument; handle correctly when profile is absent.
21286         (build_cgraph_edges): Update.
21287         (rebuild_cgraph_edges): Update.
21288         * cgraph.c: Do not include varray.h.
21289         (cgraph_set_call_stmt_including_clones): New function.
21290         (cgraph_create_edge_including_clones): Likewise
21291         (cgraph_update_edges_for_call_stmt_node): New static cfunction.
21292         (cgraph_update_edges_for_call_stmt): Handle clones.
21293         (cgraph_remove_node): Handle clone tree.
21294         (cgraph_remove_node_and_inline_clones): New function.
21295         (dump_cgraph_node): Dump clone tree.
21296         (cgraph_clone_node): Handle clone tree.
21297         (clone_function_name): Bring here from tree-inline.c.
21298         (cgraph_create_virtual_clone): New function.
21299         * cgraph.h (ipa_replace_map): Move here from ipa.h.
21300         (cgraph_clone_info): New function.
21301         (strut cgraph_node): Add clone_info and new clone tree pointers.
21302         (cgraph_remove_node_and_inline_clones,
21303         cgraph_set_call_stmt_including_clones,
21304         cgraph_create_edge_including_clones,
21305         cgraph_create_virtual_clone): Declare.
21306         (cgraph_function_versioning): Use VEC argument.
21307         (compute_call_stmt_bb_frequency): Update prototype.
21308         (cgraph_materialize_all_clones): New function.
21309         * ipa-cp.c (ipcp_update_cloned_node): Remove.
21310         (ipcp_create_replace_map): Update to VECtors.
21311         (ipcp_update_callgraph): Use virtual clones.
21312         (ipcp_update_bb_counts, ipcp_update_edges_counts): Remove.
21313         (ipcp_update_profiling): Do not update local profiling.
21314         (ipcp_insert_stage): Use VECtors and virtual clones.
21315         * cgraphunit.c (verify_cgraph_node): Verify clone tree.
21316         (clone_of_p): New function.
21317         (cgraph_preserve_function_body_p): Use clone tree.
21318         (cgraph_optimize): Materialize clones.
21319         (cgraph_function_versioning): Update for VECtors.
21320         (save_inline_function_body): Use clone tree.
21321         (cgraph_materialize_clone): New function.
21322         (cgraph_materialize_all_clones): Likewise.
21323         * ipa-inline.c (cgraph_default_inline_p): Use analyzed flags.
21324         * ipa.c: Include gimple.h.
21325         (cgraph_remove_unreachable_nodes): Use clone tree.
21326         * ipa-prop.c (ipa_note_param_call): Update call to
21327         compute_call_stmt_bb_frequencycall.
21328         * ipa-prop.h (ipa_replace_map): Move to cgraph.h.
21329         * tree-inline.c: Do not include varray.h or gt-tree-inline.h.
21330         (copy_bb): Handle updating of clone tree; add new edge when new call
21331         appears.
21332         (expand_call_inline): Be strict about every call having edge.
21333         (clone_fn_id_num, clone_function_name): Move to cgraph.c.
21334         (delete_unreachable_blocks_update_callgraph): New function.
21335         (tree_function_versioning): Use VECtors; always remove unreachable
21336         blocks and fold conditionals.
21337         * tree-inline.h: Do not include varray.h.
21338         (tree_function_versioning): Remove.
21339         * Makefile.in (GTFILES): Remove tree-inline.c
21340         * passes.c (do_per_function): Do only functions having body.
21341         * ipa-struct-reorg.c (do_reorg_1, collect_data_accesses): Handle clone
21342         tree.
21343
21344 2009-05-08  H.J. Lu  <hongjiu.lu@intel.com>
21345             Andrew Morrow  <acm@google.com>
21346
21347         PR c/36892
21348         * c-common.c (c_common_attribute_table): Permit deprecated
21349         attribute to take an optional argument.
21350         (handle_deprecated_attribute): If the optional argument to
21351         __attribute__((deprecated)) is not a string ignore the attribute
21352         and emit a warning.
21353
21354         * c-decl.c (grokdeclarator): Updated warn_deprecated_use call.
21355         * c-typeck.c (build_component_ref): Likewise.
21356         (build_external_ref): Likewise.
21357
21358         * toplev.c (warn_deprecated_use): Add an attribute argument.
21359         Emit the message associated with __attribute__((deprecated)).
21360
21361         * toplev.h (warn_deprecated_use): Updated.
21362
21363         * doc/extend.texi: Document new optional parameter to
21364         __attribute__((deprecated))
21365
21366 2009-05-08  Michael Eager <eager@eagercon.com>
21367
21368         * config/rs6000/rs6000.md (*movdf_softfloat32): replace
21369         !TARGET_DOUBLE_FLOAT with TARGET_SINGLE_FLOAT.
21370
21371 2009-05-08  Richard Guenther  <rguenther@suse.de>
21372
21373         PR tree-optimization/40062
21374         * tree-scalar-evolution.c (follow_ssa_edge_in_condition_phi):
21375         Avoid exponential behavior.
21376
21377 2009-05-08  Paolo Bonzini  <bonzini@gnu.org>
21378
21379         PR rtl-optimization/33928
21380         PR 26854
21381         * fwprop.c (use_def_ref, get_def_for_use, bitmap_only_bit_bitween,
21382         process_uses, build_single_def_use_links): New.
21383         (update_df): Update use_def_ref.
21384         (forward_propagate_into): Use get_def_for_use instead of use-def
21385         chains.
21386         (fwprop_init): Call build_single_def_use_links and let it initialize
21387         dataflow.
21388         (fwprop_done): Free use_def_ref.
21389         (fwprop_addr): Eliminate duplicate call to df_set_flags.
21390         * df-problems.c (df_rd_simulate_artificial_defs_at_top,
21391         df_rd_simulate_one_insn): New.
21392         (df_rd_bb_local_compute_process_def): Update head comment.
21393         (df_chain_create_bb): Use the new RD simulation functions.
21394         * df.h (df_rd_simulate_artificial_defs_at_top,
21395         df_rd_simulate_one_insn): New.
21396         * opts.c (decode_options): Enable fwprop at -O1.
21397         * doc/invoke.texi (-fforward-propagate): Document this.
21398
21399 2009-05-08  Joseph Myers  <joseph@codesourcery.com>
21400
21401         PR c/24581
21402         * c-typeck.c (build_binary_op): Handle arithmetic between one real
21403         and one complex operand specially.
21404         * tree-complex.c (some_nonzerop): Do not identify a real value as
21405         zero if flag_signed_zeros.
21406
21407 2009-05-08  Paolo Bonzini  <bonzini@gnu.org>
21408
21409         PR rtl-optimization/33928
21410         * loop-invariant.c (record_use): Fix && vs. || mishap.
21411
21412 2009-05-08  Paolo Bonzini  <bonzini@gnu.org>
21413
21414         PR rtl-optimization/33928
21415         * loop-invariant.c (struct use): Add addr_use_p.
21416         (struct def): Add n_addr_uses.
21417         (struct invariant): Add cheap_address.
21418         (create_new_invariant): Set cheap_address.
21419         (record_use): Accept df_ref.  Set addr_use_p and update n_addr_uses.
21420         (record_uses): Pass df_ref to record_use.
21421         (get_inv_cost): Do not add inv->cost to comp_cost for cheap addresses
21422         used only as such.
21423
21424 2009-05-08  Kaz Kojima  <kkojima@gcc.gnu.org>
21425
21426         * config/sh/sh.c: Do not include c-pragma.h.
21427
21428 2009-05-07  Andrew Pinski  <andrew_pinski@playstation.sony.com>
21429
21430         * config/spu/spu.c: Remove include of c-common.h.
21431
21432 2009-05-07  Janis Johnson  <janis187@us.ibm.com>
21433
21434         PR c/39037
21435         * c-common.h (mark_valid_location_for_stdc_pragma,
21436         valid_location_for_stdc_pragma_p, set_float_const_decimal64,
21437         clear_float_const_decimal64, float_const_decimal64_p): New.
21438         * c.opt (Wunsuffixed-float-constants): New.
21439         * c-lex.c (interpret_float): Use pragma FLOAT_CONST_DECIMAL64 for
21440         unsuffixed float constant, handle new warning.
21441         * c-cppbuiltin.c (c_cpp_builtins): Use cast for double constants.
21442         * c-decl.c (c_scope): New flag float_const_decimal64.
21443         (set_float_const_decimal64, clear_float_const_decimal64,
21444         float_const_decimal64_p): New.
21445         (push_scope): Set new flag.
21446         * c-parser.c (c_parser_translation_unit): Mark when it's valid
21447         to use STDC pragmas.
21448         (c_parser_external_declaration): Ditto.
21449         (c_parser_compound_statement_nostart): Ditto.
21450         * c-pragma.c (valid_location_for_stdc_pragma,
21451         mark_valid_location_for_stdc_pragma,
21452         valid_location_for_stdc_pragma_p, handle_stdc_pragma,
21453         handle_pragma_float_const_decimal64): New.
21454         (init_pragma): Register new pragma FLOAT_CONST_DECIMAL64.
21455         * cp/semantics.c (valid_location_for_stdc_pragma_p,
21456         set_float_const_decimal64, clear_float_const_decimal64,
21457         float_const_decimal64_p): New dummy functions.
21458         * doc/extend.texi (Decimal Float): Remove statement that the
21459         pragma, and suffix for double constants, are not supported.
21460         * doc/invoke.texi (Warning Options): List new option.
21461         (-Wunsuffixed-float-constants): New.
21462
21463 2009-05-08  Steven Bosscher  <steven@gcc.gnu.org>
21464
21465         * config/i386/i386.c: Do not include c-common.h.
21466
21467 2009-05-07  Mark Heffernan  <meheff@google.com>
21468
21469         * doc/invoke.texi (Debugging Options): Document change of debugging
21470         dump location.
21471         * opts.c (decode_options): Make dump_base_name relative to
21472         aux_base_name directory.
21473
21474 2009-05-07  Hariharan Sandanagobalane <hariharan@picochip.com>
21475
21476         * config/picochip/picochip.h (NO_DOLLAR_IN_LABEL): Added.
21477         * config/picochip/libgccExtras/divmod15.asm : Removed redefiniton.
21478
21479 2009-05-07  Rafael Avila de Espindola  <espindola@google.com>
21480
21481         * Makefile.in (install-plugin): Simplify a bit.
21482
21483 2009-05-07  Paolo Bonzini  <bonzini@gnu.org>
21484
21485         * Makefile.in (OBJS-common): Add regcprop.o.
21486         (regcprop.o): New.
21487         * timevar.def (TV_CPROP_REGISTERS): New.
21488         * regrename.c (regrename_optimize): Return 0.
21489         (rest_of_handle_regrename): Delete.
21490         (pass_rename_registers): Point to regrename_optimize.
21491         (struct value_data_entry, struct value_data,
21492         kill_value_one_regno, kill_value_regno, kill_value,
21493         set_value_regno, init_value_data, kill_clobbered_value,
21494         kill_set_value, kill_autoinc_value, copy_value,
21495         mode_change_ok, maybe_mode_change, find_oldest_value_reg,
21496         replace_oldest_value_reg, replace_oldest_value_addr,
21497         replace_oldest_value_mem, copyprop_hardreg_forward_1,
21498         debug_value_data, validate_value_data): Move...
21499         * regcprop.c: ... here.
21500         (rest_of_handle_cprop): Delete.
21501         (pass_cprop_hardreg): Point to copyprop_hardreg_forward.
21502
21503 2009-05-07  Jakub Jelinek  <jakub@redhat.com>
21504
21505         PR middle-end/40057
21506         * dojump.c (prefer_and_bit_test): Use immed_double_const instead of
21507         GEN_INT for 1 << bitnum.
21508         (do_jump) <case BIT_AND_EXPR>: Use build_int_cst_wide_type instead of
21509         build_int_cst_type.
21510
21511 2009-05-07  Uros Bizjak  <ubizjak@gmail.com>
21512
21513         * doc/md.texi (Standard Pattern Names For Generation) [sync_nand]:
21514         Remove wrong description of "nand" operation.
21515
21516 2009-05-06  Richard Guenther  <rguenther@suse.de>
21517             Adam Nemet  <anemet@caviumnetworks.com>
21518
21519         * gimple.def (GIMPLE_ASSIGN): Fix incorrect information in the
21520         comment.  Add that if LHS is not a gimple register, then RHS1 has
21521         to be a single object (GIMPLE_SINGLE_RHS).
21522
21523 2009-05-06  Adam Nemet  <anemet@caviumnetworks.com>
21524
21525         * expr.c (get_def_for_expr): Move it up in the file.
21526         (store_field): When expanding a bit-field store, look at the
21527         defining gimple stmt for the masking conversion.
21528
21529 2009-05-06  Janis Johnson  <janis187@us.ibm.com>
21530
21531         PR middle-end/39986
21532         * dfp.c (encode_decimal32, decode_decimal32, encode_decimal64,
21533         decode_decimal64, encode_decimal128, decode_decimal128): Avoid
21534         32-bit memcpy into long.
21535
21536 2009-05-06  Jakub Jelinek  <jakub@redhat.com>
21537
21538         * dwarf2out.c (new_reg_loc_descr): Don't ever create DW_OP_regX.
21539         (one_reg_loc_descriptor): Create DW_OP_regX here instead of calling
21540         new_reg_loc_descr.
21541         (loc_by_reference): If loc is DW_OP_regX, change it into DW_OP_bregX 0
21542         instead of appending DW_OP_deref*.
21543
21544 2009-05-06  Michael Matz  <matz@suse.de>
21545
21546         PR middle-end/40021
21547         * cfgexpand.c (maybe_cleanup_end_of_block): New static function.
21548         (expand_gimple_cond): Use it to cleanup CFG and superfluous jumps.
21549
21550 2009-05-06  Rafael Avila de Espindola  <espindola@google.com>
21551
21552         * Makefile.in (install-plugin): Fix srcdir handling.
21553
21554 2009-05-06  Andrey Belevantsev  <abel@ispras.ru>
21555
21556         * tree-ssa.c (execute_update_address_taken): Handle TARGET_MEM_REF
21557         when processing for not_regs_needed bitmap.
21558         * gimple.c (walk_stmt_load_store_addr_ops): When visiting address,
21559         handle TARGET_MEM_REF in lhs.  Check TMR_BASE for NULL while
21560         handling it for rhs.
21561
21562 2009-05-06  H.J. Lu  <hongjiu.lu@intel.com>
21563
21564         * config/i386/i386.md (unnamed inc/dec peephole): Use
21565         optimize_insn_for_size_p instead of optimize_size.
21566         * config/i386/predicates.md (incdec_operand): Likewise.
21567         (aligned_operand): Likewise.
21568         * config/i386/sse.md (divv8sf3): Likewise.
21569         (sqrtv8sf2): Likewise.
21570
21571 2009-05-06  H.J. Lu  <hongjiu.lu@intel.com>
21572
21573         * config/i386/i386.c (ix86_build_signbit_mask): Make it static.
21574
21575         * config/i386/i386-protos.h (ix86_build_signbit_mask): Removed.
21576
21577 2009-05-06  H.J. Lu  <hongjiu.lu@intel.com>
21578
21579         * config/i386/i386.md (*avx_<code><mode>3_finite): Replace
21580         ssemodesuffixf2c with avxmodesuffixf2c.
21581
21582 2009-05-06  Joseph Myers  <joseph@codesourcery.com>
21583
21584         PR c/40032
21585         * c-decl.c (grokdeclarator): Handle incomplete type of unnamed field.
21586
21587 2009-05-05  Jakub Jelinek  <jakub@redhat.com>
21588
21589         * tree.h: Remove DECL_BY_REFERENCE from private_flag comment.
21590         (struct tree_base): Adjust spacing for 8 bit boundaries.
21591         (struct tree_decl_common): Add decl_by_reference_flag bit.
21592         (DECL_BY_REFERENCE): Adjust.
21593         * print-tree.c (print_node): For VAR_DECL, PARM_DECL or RESULT_DECL,
21594         print DECL_BY_REFERENCE bit.
21595         * dbxout.c (DECL_ACCESSIBILITY_CHAR): Revert last change.
21596         * dwarf2out.c (loc_by_reference, gen_decl_die): Check
21597         DECL_BY_REFERENCE for all VAR_DECLs, not just non-static ones.
21598         (gen_variable_die): Likewise.  Check TREE_PRIVATE/TREE_PROTECTED
21599         unconditionally.
21600
21601         PR middle-end/39666
21602         * gimplify.c (gimplify_switch_expr): If case labels cover the whole
21603         range of the type, but default label is missing, add it with one
21604         of the existing labels instead of adding a new label for it.
21605
21606 2009-05-05  Joseph Myers  <joseph@codesourcery.com>
21607
21608         * dwarf.h: Remove.
21609
21610 2009-05-05  Rafael Avila de Espindola  <espindola@google.com>
21611
21612         * Makefile.in (enable_plugin, plugin_includedir): New.
21613         (install): Depend on install-plugin.
21614         (PLUGIN_HEADERS): New.
21615         (install-plugin): New.
21616         * config.gcc: Add vxworks-dummy.h to tm_file for x86 and x86-64.
21617
21618 2009-05-05  Richard Guenther  <rguenther@suse.de>
21619
21620         PR tree-optimization/40022
21621         * tree-ssa-phiprop.c (struct phiprop_d): Exchange vop_stmt for
21622         the only vuse.
21623         (phivn_valid_p): Fix tuplification error, simplify.
21624         (phiprop_insert_phi): Add dumps.
21625         (propagate_with_phi): Simplify.
21626
21627 2009-05-05  Richard Guenther  <rguenther@suse.de>
21628
21629         PR middle-end/40023
21630         * builtins.c (gimplify_va_arg_expr): Properly build the address.
21631
21632 2009-05-05  Shujing Zhao  <pearly.zhao@oracle.com>
21633
21634         * tree.h (strip_float_extensions): Remove duplicate declaration.
21635         (build_low_bits_mask, debug_fold_checksum, expand_function_end,
21636         expand_function_start, stack_protect_prologue, stack_protect_epilogue,
21637         block_ultimate_origin): Rearrange the declarations line to match the
21638         comment that indicates the .c file which the functions are defined.
21639         (dwarf2out_*, set_decl_rtl): Add comment.
21640         (get_base_address): Adjust comment.
21641         (change_decl_assembler_name, maybe_fold_*, build_addr): Rearrange the
21642         declarations line and add comment.
21643         (is_builtin_name): Add blank after function name, for clarity.
21644
21645 2009-05-04  Joseph Myers  <joseph@codesourcery.com>
21646
21647         * attribs.c (decl_attributes): Use %qE for identifiers in
21648         diagnostics.
21649         * cgraphunit.c (verify_cgraph_node): Translate function names to
21650         locale character set in diagnostics.
21651         * coverage.c (get_coverage_counts): Use %qE for identifiers in
21652         diagnostics.
21653         * doc/invoke.texi (-finstrument-functions-exclude-function-list):
21654         Document that functions are named in UTF-8.
21655         * expr.c (expand_expr_real_1): Translate function names to locale
21656         character set in diagnostics.
21657         * gimplify.c (omp_notice_variable, omp_is_private,
21658         gimplify_scan_omp_clauses): Use %qE for identifiers in
21659         diagnostics.
21660         * langhooks.c (lhd_print_error_function): Translate function names
21661         to locale character set.
21662         * langhooks.h (decl_printable_name): Document that return value is
21663         in internal character set.
21664         * stmt.c: Include pretty-print.h
21665         (tree_conflicts_with_clobbers_p): Use %qE for identifiers in
21666         diagnostics.
21667         (resolve_operand_name_1): Translate named operand name to locale
21668         character set.
21669         * stor-layout.c (finalize_record_size): Use %qE for identifiers in
21670         diagnostics.
21671         * toplev.c (announce_function): Translate function names to locale
21672         character set.
21673         (warn_deprecated_use): Use %qE for identifiers in diagnostics.
21674         (default_tree_printer): Use pp_identifier or translate identifiers
21675         to locale character set.  Mark "<anonymous>" for translation.
21676         * tree-mudflap.c (mx_register_decls, mudflap_finish_file): Use %qE
21677         for identifiers in diagnostics.
21678         * tree.c (handle_dll_attribute): Use %qE for identifiers in
21679         diagnostics.
21680         * varasm.c (output_constructor): Use %qE for identifiers in
21681         diagnostics.
21682
21683 2009-05-04  Rafael Avila de Espindola  <espindola@google.com>
21684
21685         * configure.ac: use ` ` instead of $()
21686         * configure: Regenerate.
21687
21688 2009-05-05  Ben Elliston  <bje@au.ibm.com>
21689
21690         * config/pa/linux-atomic.c: Eliminate conditional include of
21691         errno.h on non-LP64 systems to simplify build requirements.
21692
21693 2009-05-04  Joseph Myers  <joseph@codesourcery.com>
21694
21695         * c-common.c (handle_mode_attribute): Use %qE for identifiers in
21696         diagnostics.
21697         * c-decl.c (check_bitfield_type_and_width): Make orig_name a tree
21698         and pass value to identifier_to_locale.
21699         (warn_variable_length_array): Make name a tree.
21700         (grokdeclarator): Separate diagnostic texts for named and unnamed
21701         declarators.  Use %qE for named declarators.
21702         * c-parser.c (c_lex_one_token): Use %qE for identifiers in
21703         diagnostics.
21704         * c-pragma.c (pop_alignment, handle_pragma_pack): Use %qE for
21705         identifiers in diagnostics.
21706         * c-typeck.c (push_member_name, start_init): Pass identifiers to
21707         identifier_to_locale.  Mark "anonymous" strings for translation.
21708
21709 2009-05-04  Michael Eager <eager@eagercon.com>
21710
21711         * config/rs6000/rs6000.c (rs6000_legitimate_address): Allow
21712         address for DImode/DFmode only if double-precision FP regs.
21713
21714 2009-05-04  Michael Eager <eager@eagercon.com>
21715
21716         * config/rs6000/rs6000.c (rs6000_libcall_value): Add
21717         TARGET_SINGLE_FLOAT check.
21718
21719 2009-05-04  Michael Eager <eager@eagercon.com>
21720
21721         * config/rs6000/xilinx.h: Add CPP_SPEC for -mxilinx-fpu options.
21722
21723 2009-05-04  Michael Eager <eager@eagercon.com>
21724
21725         * gcc/config.gcc (powerpc-xilinx-eabi*): Add tm t-xilinx
21726         * config/rs6000/t-xilinx: New
21727
21728 2009-05-04  Paolo Bonzini  <bonzini@gnu.org>
21729
21730         * doc/tm.texi (LEGITIMIZE_ADDRESS): Revise documentation.
21731         * gcc/defaults.h (LEGITIMIZE_ADDRESS): Delete.
21732         * gcc/explow.c (memory_address): Use target hook.
21733         * gcc/targhooks.c (default_legitimize_address): New.
21734         * gcc/targhooks.h (default_legitimize_address): New.
21735         * gcc/target.h (legitimize_address): New.
21736         * gcc/target-def.h (TARGET_LEGITIMIZE_ADDRESS): New.
21737         (TARGET_INITIALIZER): Include it.
21738         * gcc/system.h (LEGITIMIZE_ADDRESS): Poison.
21739
21740         * config/bfin/bfin-protos.h (legitimize_address): Remove.
21741         * config/bfin/bfin.c (legitimize_address): Remove.
21742         * config/bfin/bfin.h (LEGITIMIZE_ADDRESS): Remove.
21743         * config/m68hc11/m68hc11-protos.h (m68hc11_legitimize_address):
21744         Remove.
21745         * config/m68hc11/m68hc11.c (m68hc11_legitimize_address): Remove.
21746         * config/m68hc11/m68hc11.h (LEGITIMIZE_ADDRESS): Remove.
21747
21748         * gcc/config/arm/arm.h (LEGITIMIZE_ADDRESS, ARM_LEGITIMIZE_ADDRESS,
21749         THUMB_LEGITIMIZE_ADDRESS, THUMB2_LEGITIMIZE_ADDRESS): Delete.
21750         * gcc/config/s390/s390.h (LEGITIMIZE_ADDRESS): Delete.
21751         * gcc/config/m32c/m32c.h (LEGITIMIZE_ADDRESS): Delete.
21752         * gcc/config/sparc/sparc.h (LEGITIMIZE_ADDRESS): Delete.
21753         * gcc/config/m32r/m32r.h (LEGITIMIZE_ADDRESS): Delete.
21754         * gcc/config/i386/i386.h (LEGITIMIZE_ADDRESS): Delete.
21755         * gcc/config/sh/sh.h (LEGITIMIZE_ADDRESS): Delete.
21756         * gcc/config/avr/avr.h (LEGITIMIZE_ADDRESS): Delete.
21757         * gcc/config/m68hc11/m68hc11.h (LEGITIMIZE_ADDRESS): Delete.
21758         * gcc/config/iq2000/iq2000.h (LEGITIMIZE_ADDRESS): Delete.
21759         * gcc/config/mn10300/mn10300.h (LEGITIMIZE_ADDRESS): Delete.
21760         * gcc/config/m68k/m68k.h (LEGITIMIZE_ADDRESS): Delete.
21761         * gcc/config/score/score.h (LEGITIMIZE_ADDRESS): Delete.
21762         * gcc/config/pa/pa.h (LEGITIMIZE_ADDRESS): Delete.
21763         * gcc/config/mips/mips.h (LEGITIMIZE_ADDRESS): Delete.
21764         * gcc/config/alpha/alpha.h (LEGITIMIZE_ADDRESS): Delete.
21765         * gcc/config/frv/frv.h (LEGITIMIZE_ADDRESS): Delete.
21766         * gcc/config/spu/spu.h (LEGITIMIZE_ADDRESS): Delete.
21767         * gcc/config/xtensa/xtensa.h (LEGITIMIZE_ADDRESS): Delete.
21768         * gcc/config/cris/cris.h (LEGITIMIZE_ADDRESS): Delete.
21769         * gcc/config/rs6000/rs6000.h (LEGITIMIZE_ADDRESS): Delete.
21770         * gcc/config/picochip/picochip.h (LEGITIMIZE_ADDRESS): Delete.
21771
21772         * gcc/config/s390/s390-protos.h (legitimize_address): Delete.
21773         * gcc/config/m32c/m32c-protos.h (m32c_legitimize_address): Delete.
21774         * gcc/config/sparc/sparc-protos.h (legitimize_address): Delete.
21775         * gcc/config/i386/i386-protos.h (legitimize_address): Delete.
21776         * gcc/config/avr/avr-protos.h (legitimize_address): Delete.
21777         * gcc/config/mn10300/mn10300-protos.h (legitimize_address): Delete.
21778         * gcc/config/score/score-protos.h (score_legitimize_address): Delete.
21779         * gcc/config/arm/arm-protos.h (arm_legitimize_address,
21780         (thumb_legitimize_address): Delete.
21781         * gcc/config/pa/pa-protos.h (hppa_legitimize_address): Delete.
21782         * gcc/config/mips/mips-protos.h (mips_legitimize_address): Delete.
21783         * gcc/config/alpha/alpha-protos.h (alpha_legitimize_address): Delete.
21784         * gcc/config/frv/frv-protos.h (frv_legitimize_address): Delete.
21785         * gcc/config/spu/spu-protos.h (spu_legitimize_address): Delete.
21786         * gcc/config/xtensa/xtensa-protos.h (xtensa_legitimize_address):
21787         Delete.
21788         * gcc/config/rs6000/rs6000-protos.h (rs6000_legitimize_address):
21789         Delete.
21790
21791         * config/arm/arm.c (arm_legitimize_address): Maybe call Thumb version.
21792         * config/m32c/m32c.c (m32c_legitimize_address): Standardize.
21793         * config/m32r/m32r.c (m32r_legitimize_address): New.
21794         * config/m68k/m68k.c (m68k_legitimize_address): New.
21795         * config/score/score.c (score_legitimize_address): Standardize.
21796         * config/score/score3.c (score3_legitimize_address): Standardize.
21797         * config/score/score3.h (score3_legitimize_address): Adjust.
21798         * config/score/score7.c (score7_legitimize_address): Standardize.
21799         * config/score/score7.h (score7_legitimize_address): Adjust.
21800         * config/sh/sh.c (sh_legitimize_address): New.
21801         * config/iq2000/iq2000.c (iq2000_legitimize_address): New.
21802
21803         * gcc/config/s390/s390.c (legitimize_address): Rename to...
21804         (s390_legitimize_address): ... this.
21805         * gcc/config/sparc/sparc.c (legitimize_address): Rename to...
21806         (sparc_legitimize_address): ... this.
21807         * gcc/config/i386/i386.c (legitimize_address): Rename to...
21808         (ix86_legitimize_address): ... this.
21809         * gcc/config/avr/avr.c (legitimize_address): Rename to...
21810         (avr_legitimize_address): ... this.
21811         * gcc/config/mn10300/mn10300.c (legitimize_address): Rename to...
21812         (mn10300_legitimize_address): ... this.
21813         * config/alpha/alpha.c (alpha_legitimize_address): Wrap...
21814         (alpha_legitimize_address_1): ... the old alpha_legitimize_address.
21815         (alpha_expand_mov): Adjust call.
21816
21817         * config/frv/frv.c (frv_legitimize_address): Return x on failure.
21818         * config/spu/spu.c (spu_legitimize_address): Likewise.
21819         * config/xtensa/xtensa.c (xtensa_legitimize_address): Likewise.
21820         * config/rs6000/rs6000.c (rs6000_legitimize_address): Likewise.
21821
21822 2009-05-04  Joseph Myers  <joseph@codesourcery.com>
21823
21824         * intl.c (locale_encoding, locale_utf8): New.
21825         (gcc_init_libintl): Initialize locale_encoding and locale_utf8.
21826         * intl.h (locale_encoding, locale_utf8): Declare.
21827         * pretty-print.c: Include ggc.h.  Include iconv.h if HAVE_ICONV.
21828         (pp_base_tree_identifier, decode_utf8_char, identifier_to_locale):
21829         New.
21830         * pretty-print.h (pp_identifier): Call identifier_to_locale on ID
21831         argument.
21832         (pp_tree_identifier): Define to call pp_base_tree_identifier.
21833         (pp_base_tree_identifier): Declare as function.
21834         (identifier_to_locale): Declare.
21835         * Makefile.in (pretty-print.o): Update dependencies.
21836         * varasm.c (finish_aliases_1): Use %qE for identifiers in diagnostics.
21837
21838 2009-05-04  Richard Guenther  <rguenther@suse.de>
21839
21840         PR middle-end/40015
21841         * builtins.c (fold_builtin_memory_op): Do not decay to element
21842         type if the size matches the whole array.
21843
21844 2009-05-04  Kazu Hirata  <kazu@codesourcery.com>
21845
21846         * expmed.c (synth_mult): When trying out a shift, pass the result
21847         of a signed shift.
21848
21849 2009-05-04  Kazu Hirata  <kazu@codesourcery.com>
21850
21851         * expmed.c (shiftsub_cost): Rename to shiftsub0_cost.
21852         (shiftsub1_cost): New.
21853         (init_expmed): Compute shiftsub1_cost.
21854         (synth_mult): Optimize multiplications by constants of the form
21855         -(2^^m-1) for some constant positive integer m.
21856
21857 2009-05-03  Richard Guenther  <rguenther@suse.de>
21858
21859         PR c/39983
21860         * c-typeck.c (array_to_pointer_conversion): Do not built
21861         ADDR_EXPRs of arrays of pointer-to-element type.
21862         * c-gimplify.c (c_gimplify_expr): Revert change fixing
21863         up wrong ADDR_EXPRs after-the-fact.
21864         * c-common.c (strict_aliasing_warning): Strip pointer
21865         conversions for obtaining the original type.
21866         * builtins.c (fold_builtin_memset): Handle array types.
21867         (fold_builtin_memory_op): Handle folded POINTER_PLUS_EXPRs
21868         and array types
21869
21870 2009-05-03  Richard Guenther  <rguenther@suse.de>
21871
21872         PR middle-end/23329
21873         * tree-ssa.c (useless_type_conversion_p_1): Use get_deref_alias_set.
21874         Do not lose casts from array types with unknown extent to array
21875         types with known extent.
21876         * tree-ssa-copy.c (may_propagate_copy): Remove hack checking for
21877         alias set compatibility.
21878
21879 2009-05-03  Manuel López-Ibáñez  <manu@gcc.gnu.org>
21880
21881         * flags.h (extra_warnings): Delete.
21882         * toplev.c (process_options): Handle Wuninitialized here.
21883         * opts.c (extra_warnings): Delete.
21884         (set_Wextra): Delete.
21885         (common_handle_option): -Wextra can be handled automatically.
21886         * c-opts.c (c_common_handle_option): Delete obsolete code.
21887         (c_common_post_options): Simplify comment.
21888         * common.opt (W): Add Var.
21889         (Wextra): Add Var.
21890         (Wuninitialized): Initialize to -1.
21891
21892 2009-05-03  Adam Nemet  <anemet@caviumnetworks.com>
21893             Richard Guenther  <rguenther@suse.de>
21894
21895         * expr.c (get_def_for_expr): New function.
21896         (expand_expr_real_1) <PLUS_EXPR, MINUS_EXPR>: Adjust to work with
21897         SSA rather than trees.
21898         <MULT_EXPR>: Likewise.  Use subexp0 and subexp1 instead of
21899         TREE_OPERAND (exp, 0) and TREE_OPERAND (exp, 1).
21900
21901 2009-05-03  Joseph Myers  <joseph@codesourcery.com>
21902
21903         * c-common.c (reswords): Add _Imaginary.
21904         * c-common.c (enum rid): Add RID_IMAGINARY.
21905
21906 2009-05-03  Paolo Bonzini  <bonzini@gnu.org>
21907
21908         * tree.h (TYPE_VECTOR_OPAQUE): Fix documentation.
21909         Patch by Richard Guenther.
21910
21911 2009-05-03  Anatoly Sokolov  <aesok@post.ru>
21912
21913         * defaults.h (FRAME_POINTER_REQUIRED): Provide default.
21914         * doc/tm.texi (FRAME_POINTER_REQUIRED): Revise documentation.
21915         * config/alpha/alpha.h (FRAME_POINTER_REQUIRED): Delete.
21916         * config/s390/s390.h (FRAME_POINTER_REQUIRED): Delete.
21917         * config/spu/spu.h (FRAME_POINTER_REQUIRED): Delete.
21918         * config/sh/sh.h (FRAME_POINTER_REQUIRED): Delete.
21919         * config/pdp11/pdp11.h (FRAME_POINTER_REQUIRED): Delete.
21920         * config/stormy16/stormy16.h (FRAME_POINTER_REQUIRED): Delete.
21921         * config/m68hc11/m68hc11.h (FRAME_POINTER_REQUIRED): Delete.
21922         * config/iq2000/iq2000.h (FRAME_POINTER_REQUIRED): Delete.
21923         * config/mn10300/mn10300.h (FRAME_POINTER_REQUIRED): Delete.
21924         * config/ia64/ia64.h (FRAME_POINTER_REQUIRED): Delete.
21925         * config/m68k/m68k.h (FRAME_POINTER_REQUIRED): Delete.
21926         * config/rs6000/rs6000.h (FRAME_POINTER_REQUIRED): Delete.
21927         * config/picochip/picochip.h (FRAME_POINTER_REQUIRED): Delete.
21928         * config/mcore/mcore.h (FRAME_POINTER_REQUIRED): Delete.
21929         * config/h8300/h8300.h (FRAME_POINTER_REQUIRED): Delete.
21930         * config/v850/v850.h (FRAME_POINTER_REQUIRED): Delete.
21931
21932 2009-05-02  Richard Guenther  <rguenther@suse.de>
21933
21934         PR tree-optimization/39940
21935         * tree-ssa-pre.c (eliminate): Make sure we may propagate before
21936         doing so.
21937
21938 2009-05-02  Richard Guenther  <rguenther@suse.de>
21939
21940         PR middle-end/40001
21941         * tree-ssa.c (execute_update_addresses_taken): Properly check
21942         if we can mark a variable DECL_GIMPLE_REG_P.
21943         * gimple.c (is_gimple_reg): Re-order check for DECL_GIMPLE_REG_P
21944         back to the end of the function.
21945         (is_gimple_reg_type): Remove complex type special casing.
21946         * gimplify.c (gimplify_bind_expr): Do not set DECL_GIMPLE_REG_P
21947         if not optimizing.
21948
21949 2009-05-02  Ben Elliston  <bje@au.ibm.com>
21950
21951         * doc/collect2.texi (Collect2): Document search path behaviour
21952         when configured with --with-ld.
21953
21954 2009-05-02  Jan Hubicka  <jh@suse.cz>
21955
21956         * tree-ssa-coalesce.c (coalesce_cost): Do not take ciritical
21957         parameter; update callers.
21958         (coalesce_cost_edge): EH edges are costier because they needs
21959         splitting even if not critical and even more costier when there are
21960         multiple EH predecestors.
21961
21962 2009-05-02  Jan Hubicka  <jh@suse.cz>
21963
21964         * except.c (remove_eh_handler_and_replace): Handle updating after
21965         removing TRY blocks.
21966
21967 2009-05-02  Eric Botcazou  <ebotcazou@adacore.com>
21968
21969         * store-motion.c (compute_store_table): Add ENABLE_CHECKING guard.
21970
21971 2009-05-02  Steven Bosscher  <steven@gcc.gnu.org>
21972
21973         * varasm.c: Do not include c-pragma.h.
21974         * attribs.c: Do not incude c-common.h.
21975
21976 2009-05-01  Michael Matz  <matz@suse.de>
21977
21978         * calls.c (initialize_argument_information): Handle SSA names like
21979         decls with a non MEM_P DECL_RTL.
21980
21981 2009-05-01  Steven Bosscher  <steven@gcc.gnu.org>
21982
21983         * ipa-reference.c: Do not include c-common.h, include splay-tree.h.
21984         * ipa-utils.c: Likewise.
21985         * ipa-type-escape.c: Likewise.
21986         * cgraphunit.c Do not include c-common.h.
21987         * ipa-pure-const.c: Likewise.
21988         * tree-if-conv.c: Likewise.
21989         * matrix-reorg.c: Do not include c-common.h and c-tree.h.
21990         * ipa-struct-reorg.c: Likewise.
21991         * tree-nomudflap.c: Likewise.
21992         * tree-ssa-structalias.c: Likewise.
21993
21994 2009-05-01  Steven Bosscher  <steven@gcc.gnu.org>
21995
21996         * store-motion.c: Many cleanups to make this pass a first-class
21997         citizen instead of an appendix to gcse load motion.  Add TODO list
21998         to make this pass faster/cleaner/better.
21999
22000         (struct ls_expr): Post gcse.c-split cleanups.
22001         Rename to st_expr.  Rename "loads" field to "antic_stores".  Rename
22002         "stores" field to "avail_stores".
22003         (pre_ldst_mems): Rename to store_motion_mems.
22004         (pre_ldst_table): Rename to store_motion_mems_table.
22005         (pre_ldst_expr_hash): Rename to pre_st_expr_hash, update users.
22006         (pre_ldst_expr_eq): Rename to pre_st_expr_eq, update users.
22007         (ldst_entry): Rename to st_expr_entry, update users.
22008         (free_ldst_entry): Rename to free_st_expr_entry, update users.
22009         (free_ldst_mems): Rename to free_store_motion_mems, update users.
22010         (enumerate_ldsts): Rename to enumerate_store_motion_mems,
22011         update caller.
22012         (first_ls_expr): Rename to first_st_expr, update users.
22013         (next_ls_expr): Rename to next_st_expr, update users.
22014         (print_ldst_list): Rename to print_store_motion_mems.  Print names of
22015         fields properly for store motion instead of names inherited from load
22016         motion in gcse.c.
22017         (ANTIC_STORE_LIST, AVAIL_STORE_LIST): Remove.
22018         (LAST_AVAIL_CHECK_FAILURE): Explain what this is.  Undefine when we
22019         are done with it.
22020
22021         (ae_kill): Rename to st_kill, update users.
22022         (ae_gen): Rename to st_avloc, update users.
22023         (transp): Rename to st_transp, update users.
22024         (pre_insert_map): Rename to st_insert_map, update users.
22025         (pre_delete_map): Rename to st_delete_map, update users.
22026         (insert_store, build_store_vectors, free_store_memory,
22027         one_store_motion_pass): Update for abovementioned changes.
22028
22029         (gcse_subst_count, gcse_create_count): Remove.
22030         (one_store_motion_pass): New statistics counters "n_stores_deleted"
22031         and "n_stores_created", local variables.
22032
22033         (extract_mentioned_regs, extract_mentioned_regs_1): Rewrite to
22034         use for_each_rtx.
22035
22036         (regvec, compute_store_table_current_insn): Remove.
22037         (reg_set_info, reg_clear_last_set): Remove.
22038         (compute_store_table): Use DF caches instead of local dataflow
22039         solvers.
22040
22041 2009-05-01  Joseph Myers  <joseph@codesourcery.com>
22042
22043         * c-objc-common.c (c_tree_printer): Print identifiers with
22044         pp_identifier, not pp_string.  Mark "({anonymous})" for
22045         translation.
22046         * c-pretty-print.c (pp_c_ws_string): New.
22047         (pp_c_cv_qualifier, pp_c_type_specifier,
22048         pp_c_specifier_qualifier_list, pp_c_parameter_type_list,
22049         pp_c_storage_class_specifier, pp_c_function_specifier,
22050         pp_c_attributes, pp_c_bool_constant, pp_c_constant,
22051         pp_c_primary_expression, pp_c_postfix_expression,
22052         pp_c_unary_expression, pp_c_shift_expression,
22053         pp_c_relational_expression, pp_c_equality_expression,
22054         pp_c_logical_and_expression, pp_c_logical_or_expression): Mostly
22055         use pp_string and pp_c_ws_string in place of pp_identifier and
22056         pp_c_identifier for non-identifiers.  Mark English strings for
22057         translation.
22058         * c-pretty-print.h (pp_c_ws_string): Declare.
22059
22060 2009-04-30  Paul Pluzhnikov  <ppluzhnikov@google.com>
22061             Roland McGrath <roland@redhat.com>
22062
22063         * configure.ac (HAVE_LD_BUILDID): New check for ld --build-id support.
22064         (ENABLE_LD_BUILDID): New configuration option.
22065         * gcc.c [HAVE_LD_BUILDID and ENABLE_LD_BUILDID]
22066         (LINK_BUILDID_SPEC): New macro.
22067         (init_spec): If defined, prepend it between LINK_EH_SPEC and
22068         link_spec.
22069         * doc/install.texi: Document --enable-linker-build-id option.
22070         * configure: Rebuild.
22071         * config.in: Rebuild.
22072
22073 2009-04-30  Adam Nemet  <anemet@caviumnetworks.com>
22074
22075         * config/mips/mips.h (FRAME_GROWS_DOWNWARD,
22076         MIPS_GP_SAVE_AREA_SIZE): Define new macros.
22077         (STARTING_FRAME_OFFSET): Return 0 if FRAME_GROWS_DOWNWARD.  Use
22078         MIPS_GP_SAVE_AREA_SIZE.
22079         * config/mips/mips.c (struct mips_frame_info): Update comment
22080         before arg_pointer_offset and hard_frame_pointer_offset.
22081         (mips_compute_frame_info): Update diagram before function: to
22082         correctly use stack_pointer_rtx for fp_sp_offset and gp_sp_offset, to
22083         indicate the position of frame_pointer_rtx with -fstack-protector and
22084         to show args_size.  Don't allocate cprestore area for leaf functions
22085         if FRAME_GROWS_DOWNWARD.  Use MIPS_GP_SAVE_AREA_SIZE to set
22086         cprestore_size.
22087         (mips_initial_elimination_offset): Update for FRAME_GROWS_DOWNWARD.
22088
22089 2009-04-30  Michael Matz  <matz@suse.de>
22090
22091         PR tree-optimization/39955
22092         * config/rs6000/rs6000.c (rs6000_check_sdmode): Also check SSA_NAMEs.
22093
22094 2009-04-30  Dave Korn  <dave.korn.cygwin@gmail.com>
22095
22096         * ira.c (setup_cover_and_important_classes):  Use safe macro
22097         REG_CLASS_FOR_CONSTRAINT instead of calling regclass_for_constraint
22098         directly.
22099         * genpreds.c (write_tm_preds_h):  Output suitable definition of
22100         REG_CLASS_FOR_CONSTRAINT.
22101
22102 2009-04-30  Rafael Avila de Espindola  <espindola@google.com>
22103
22104         * alloc-pool.c (alloc_pool_descriptor): Use an insert_opion value
22105         instead of an int.
22106         * bitmap.c (bitmap_descriptor): Likewise.
22107         * ggc-common.c (loc_descriptor): Likewise.
22108         * varray.c (varray_descriptor): Likewise.
22109         * vec.c (vec_descriptor): Likewise.
22110
22111 2009-04-30  Eric Botcazou  <ebotcazou@adacore.com>
22112
22113         * Makefile.in (dce.o): Add $(EXCEPT_H).
22114         * dce.c: Include except.h and delete redundant vector definitions.
22115         (deletable_insn_p): Return false for non-call insns that can throw
22116         if DF is running.
22117
22118 2009-04-30  Steven Bosscher  <steven@gcc.gnu.org>
22119
22120         * gcse.c (ae_gen): Remove.
22121         (can_assign_to_reg_p): Rename to can_assign_to_reg_without_clobbers_p
22122         and make non-static function to make it available in store-motion.c.
22123         Update call sites with search-and-replace.
22124         (enumerate_ldsts, reg_set_info, reg_clear_last_set, store_ops_ok,
22125         extract_mentioned_regs, extract_mentioned_regs_helper,
22126         find_moveable_store, compute_store_table, load_kills_store, find_loads,
22127         store_killed_in_insn, store_killed_after, store_killed_before,
22128         build_store_vectors, insert_insn_start_basic_block, insert-store,
22129         remove_reachable_equiv_notes, replace_store_insn, delete_store,
22130         free_store_memory, one_store_motion_pass, gate_rtl_store_motion,
22131         execute_rtl_store_motion, pass_rtl_store_motion): Move to...
22132         * store-motion.c: ...new file.  Also copy data structures from gcse.c
22133         and clean up to remove parts not used by store motion.
22134         * rtl.h (can_assign_to_reg_without_clobbers_p): Add prototype.
22135         * Makefile.in (store-motion.o): New rule. Add to OBJS-common.
22136
22137 2009-04-30  Ramana Radhakrishnan  <ramana.radhakrishnan@arm.com>
22138
22139         PR target/38571
22140         * config/arm/arm.h (FUNCTION_BOUNDARY): Set to 16 for thumb
22141         when optimizing for size.
22142
22143 2009-04-30  Hans-Peter Nilsson  <hp@axis.com>
22144
22145         * gcse.c (gcse_constant_p): Fix typo in last change.
22146
22147 2009-04-30  Rafael Avila de Espindola  <espindola@google.com>
22148
22149         * plugin.c: Include plugin-version.h only if ENABLE_PLUGIN is defined.
22150
22151 2009-04-30  Andreas Krebbel  <krebbel1@de.ibm.com>
22152
22153         * gcse.c (gcse_constant_p): Make sure the constant is sharable.
22154
22155 2009-04-29  James E. Wilson  <wilson@codesourcery.com>
22156
22157         * config/mips/mips.c (mips_add_offset): Use gen_int_mode for
22158         CONST_HIGH_PART result.
22159
22160 2009-04-29  Anatoly Sokolov  <aesok@post.ru>
22161
22162         * config/avr/avr.c (initial_elimination_offset): Rename to
22163         avr_initial_elimination_offset.
22164         (frame_pointer_required_p): Rename to avr_frame_pointer_required_p,
22165         change return type to bool.
22166         (avr_can_eliminate): New function.
22167         * config/avr/avr.h (CAN_ELIMINATE): Use avr_can_eliminate.
22168         (FRAME_POINTER_REQUIRED): Use avr_frame_pointer_required_p.
22169         (INITIAL_ELIMINATION_OFFSET): Use avr_initial_elimination_offset.
22170         * config/avr/avr-protos.h (initial_elimination_offset): Rename to
22171         avr_initial_elimination_offset.
22172         (frame_pointer_required_p): Rename to avr_frame_pointer_required_p.
22173         (avr_initial_elimination_offset): Define.
22174
22175 2009-04-29  Eric Botcazou  <ebotcazou@adacore.com>
22176             Steven Bosscher  <steven@gcc.gnu.org>
22177
22178         PR rtl-optimization/39938
22179         * Makefile.in (cfgrtl.o): Add $(INSN_ATTR_H).
22180         * cfgrtl.c: Include insn-attr.h.
22181         (rest_of_pass_free_cfg): New function.
22182         (pass_free_cfg): Use rest_of_pass_free_cfg as execute function.
22183         * resource.c (init_resource_info): Remove call to df_analyze.
22184
22185 2009-04-29  Richard Guenther  <rguenther@suse.de>
22186
22187         PR target/39943
22188         * config/i386/i386.c (ix86_vectorize_builtin_conversion): Only
22189         allow conversion to signed integers.
22190
22191 2009-04-29  Richard Guenther  <rguenther@suse.de>
22192
22193         * tree-cfg.c (verify_gimple_assign_binary): Allow vector
22194         shifts of floating point vectors if the shift amount is
22195         a constant multiple of the element size.
22196
22197 2009-04-29  Andreas Krebbel  <krebbel1@de.ibm.com>
22198             Michael Matz  <matz@suse.de>
22199
22200         PR middle-end/39927
22201         PR bootstrap/39929
22202         * tree-outof-ssa.c (emit_partition_copy): New function.
22203         (insert_partition_copy_on_edge, insert_rtx_to_part_on_edge,
22204         insert_part_to_rtx_on_edge): Perform the partition base var
22205         copy using emit_partition_copy.
22206         (insert_value_copy_on_edge): Convert constants to the right mode.
22207         (insert_rtx_to_part_on_edge): Add UNSIGNEDSRCP parameter.
22208         (elim_create): Pass the sign of the src to insert_rtx_to_part_on_edge.
22209
22210 2009-04-29  Bernd Schmidt  <bernd.schmidt@analog.com>
22211
22212         * config/bfin/bfin.c (bfin_optimize_loop): If we need a scratch reg,
22213         scan backwards to try to find a constant to initialize it.
22214
22215         * config/bfin/bfin.c (bfin_optimize_loop): When looking for the last
22216         insn before the loop_end instruction, don't look past labels.
22217
22218 2009-04-29  Richard Guenther  <rguenther@suse.de>
22219
22220         PR middle-end/39937
22221         * tree-ssa-forwprop.c (forward_propagate_addr_expr_1): Do not
22222         loose type conversions.
22223         (forward_propagate_addr_expr): Fix tuplification bug.  Remove
22224         stmts only if there are no uses of its definition.
22225
22226 2009-04-29  Bernd Schmidt  <bernd.schmidt@analog.com>
22227
22228         * config/bfin/bfin.h (splitting_loops): Declare.
22229         * config/bfin/bfin-protos.h (WA_05000257, WA_05000283, WA_05000315):
22230         Reorder bit definitions to be ascending.
22231         (WA_LOAD_LCREGS, ENABLE_WA_LOAD_LCREGS): New macros.
22232         * config/bfin/bfin.c (splitting_loops): New variable.
22233         (bfin_cpus): Add WA_LOAD_LCREGS as needed.
22234         (struct loop_info): Remove members INIT and LOOP_INIT.
22235         (bfin_optimize_loop): Don't set them.  Reorder the code that generates
22236         the LSETUP sequence.  Allow LC to be loaded from any register, but
22237         also add a case to push/pop a PREG scratch if ENABLE_WA_LOAD_LCREGS.
22238         (bfin_reorg_loops): When done, split all BB_ENDs with splitting_loops
22239         set to 1.
22240         * config/bfin/bfin.md (loop_end splitter): Use splitting_loops instead
22241         of reload_completed.
22242
22243         From Jie Zhang:
22244         * config/bfin/bfin.md (movsi_insn): Refine constraints.
22245
22246 2009-04-29  Rafael Avila de Espindola  <espindola@google.com>
22247
22248         * Makefile.in (PLUGIN_VERSION_H): New.
22249         (OBJS-common): Remove plugin-version.o.
22250         (plugin.o): Depend on (PLUGIN_VERSION_H).
22251         (plugin-version.o): Remove.
22252         * configure: Regenerate
22253         * configure.ac: Create plugin-version.h.
22254         * gcc-plugin.h (plugin_gcc_version): Remove.
22255         (plugin_default_version_check): Change signature.
22256         * plugin-version.c: Remove.
22257         * plugin.c: Include plugin-version.h.
22258         (str_plugin_gcc_version_name): Remove.
22259         (try_init_one_plugin): Pass gcc version to plugin_init.
22260         (plugin_default_version_check): Both gcc and plugin versions are now
22261         arguments.
22262
22263 2009-04-29  Bernd Schmidt  <bernd.schmidt@analog.com>
22264
22265         * config/bfin/bfin.c (bfin_optimize_loop): Unify handling of
22266         problematic last insns.  Test for TYPE_CALL rather than CALL_P.
22267         Remove special case testing for last insn of inner loops. Don't fail
22268         if the loop ends with a jump, emit an extra nop instead.
22269
22270         * config/bfin/bfin.c (bfin_register_move_cost): Test for subsets of
22271         DREGS rather than comparing directly.  Remove code that tries to
22272         account for latencies.
22273
22274 2009-04-29  Richard Guenther  <rguenther@suse.de>
22275
22276         PR tree-optimization/39941
22277         * tree-ssa-pre.c (eliminate): Schedule update-ssa after
22278         eliminating an indirect call.
22279
22280 2009-04-29  Richard Guenther  <rguenther@suse.de>
22281
22282         * tree-cfg.c (verify_types_in_gimple_reference): Add require_lvalue
22283         parameter.  Allow invariants as base if !require_lvalue.
22284         (verify_gimple_assign_single): Adjust.
22285
22286 2009-04-29  Bernd Schmidt  <bernd.schmidt@analog.com>
22287
22288         * config/bfin/bfin.md (sp_or_sm, spm_string, spm_name): New macro.
22289         (ss<spm_name>hi3, ss<spm_name>hi3_parts, ss<spm_name>hi3_low_parts,
22290         ss<spm_name_hi3_high_parts): New patterns, replacing ssaddhi3,
22291         ssubhi3, ssaddhi3_parts and sssubhi3_parts.
22292         (flag_mulhi3_parts): Produce a HImode output rather than trying to set
22293         a VEC_SELECT.
22294         * config/bfin/bfin.c (bfin_expand_builtin,
22295         case BFIN_BUILTIN_CPLX_SQU): Adjust accordingly.
22296
22297 2009-04-28  Richard Guenther  <rguenther@suse.de>
22298
22299         * tree-vect-loop.c (get_initial_def_for_induction): Use
22300         correct types for pointer increment.
22301
22302 2009-04-29  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
22303
22304         * toplev.c (print_version): Update GMP version string calculation.
22305
22306 2009-04-28  Eric Botcazou  <ebotcazou@adacore.com>
22307
22308         PR rtl-optimization/39938
22309         * resource.c (init_resource_info): Add call to df_analyze.
22310
22311 2009-04-28  Uros Bizjak  <ubizjak@gmail.com>
22312
22313         * config/alpha/alpha.md (usegp): Cast the result of
22314         alpha_find_lo_sum_using_gp to enum attr_usegp.
22315         * config/alpha/alpha.c (override_options): Remove end-of-structure
22316         marker element from cpu_table.  Use array size of cpu_table to handle
22317         -mcpu and -mtune options.
22318         (tls_symbolic_operand_type): Change 0 to TLS_MODEL_NONE.
22319
22320 2009-04-28  Joseph Myers  <joseph@codesourcery.com>
22321
22322         * config.gcc (powerpc*-*-* | rs6000-*-*): Add
22323         rs6000/option-defaults.h to tm_file.  Support cpu_32, cpu_64,
22324         tune_32 and tune_64.
22325         * doc/install.texi (--with-cpu-32, --with-cpu-64): Document
22326         support on PowerPC.
22327         * config/rs6000/rs6000.h (OPTION_DEFAULT_SPECS): Move to ...
22328         * config/rs6000/option-defaults.h: ... here.  New file.
22329         (OPT_64, OPT_32): Define.
22330         (MASK_64BIT): Define to 0 if not already defined.
22331         (OPT_ARCH64, OPT_ARCH32): Define.
22332         (OPTION_DEFAULT_SPECS): Add entries for cpu_32, cpu_64, tune_32
22333         and tune_64.
22334
22335 2009-04-28  Ramana Radhakrishnan  <ramana.radhakrishnan@arm.com>
22336
22337         * config/arm/arm.c (arm_override_options): Emit error on using
22338         fpa with AAPCS.
22339
22340 2009-04-28  Uros Bizjak  <ubizjak@gmail.com>
22341
22342         PR rtl-optimization/39914
22343         * ira-conflicts.c (ira_build_conflicts): Prohibit call used
22344         registers for allocnos created from user-defined variables only
22345         when not optimizing.
22346
22347 2009-04-28  Richard Guenther  <rguenther@suse.de>
22348
22349         PR middle-end/39937
22350         * fold-const.c (fold_binary): Use distribute_real_division only
22351         on float types.
22352
22353 2009-04-28  Steve Ellcey  <sje@cup.hp.com>
22354
22355         * config.gcc (hppa*64*-*-hpux11*): Set use_gcc_stdint and
22356         add hpux-stdint.h to tm_file.
22357         (hppa[12]*-*-hpux11*): Ditto.
22358         (ia64*-*-hpux*): Ditto.
22359         * config/hpux-stdint.h: New.
22360         * config/ia64/hpux.h (TARGET_OS_CPP_BUILTINS): Set
22361         __STDC_EXT__ for all compiles.
22362         * config/pa/pa-hpux.h: Ditto.
22363         * config/pa/pa-hpux10.h: Ditto.
22364         * config/pa/pa-hpux11.h: Ditto.
22365
22366 2009-04-28  Catherine Moore  <clm@codesourcery.com>
22367
22368         * debug.h (set_name): Add comment.
22369
22370 2009-04-28  Andrew Pinski  <pinskia@gmail.com>
22371
22372         PR target/39929
22373         * config/darwin.c (machopic_gen_offset): Check
22374         currently_expanding_to_rtl if current_ir_type returns IR_GIMPLE.
22375         * config/arm/arm.c (require_pic_register): Likewise.
22376
22377 2009-04-28  Paolo Bonzini  <bonzini@gnu.org>
22378
22379         * config/m32c/m32c.c (TARGET_PROMOTE_FUNCTION_RETURN,
22380         m32c_promote_function_return, TARGET_PROMOTE_PROTOTYPES,
22381         m32c_promote_prototypes): Delete.
22382
22383 2009-04-28  Michael Matz  <matz@suse.de>
22384
22385         PR middle-end/39922
22386         * tree-outof-ssa.c (insert_value_copy_on_edge): Don't convert
22387         constants.
22388
22389 2009-04-28  Richard Guenther  <rguenther@suse.de>
22390
22391         * tree-vect-stmts.c (vect_get_vec_def_for_operand): Fix type error.
22392
22393 2009-04-28  Ramana Radhakrishnan  <ramana.radhakrishnan@arm.com>
22394
22395         * config/arm/arm-cores.def: Add support for arm1156t2f-s.
22396         * doc/invoke.texi (ARM Options): Document support for arm1156t2f-s.
22397         * config/arm/arm-tune.md: Regenerate.
22398
22399 2009-04-28  Alexander Monakov  <amonakov@ispras.ru>
22400
22401         * sel-sched-ir.c (maybe_tidy_empty_bb): Do not attempt to delete a
22402         block if there are complex incoming edges.
22403         (sel_merge_blocks): Remove useless assert.
22404         (sel_redirect_edge_and_branch): Check that edge was redirected.
22405         * sel-sched-ir.h (_eligible_successor_edge_p): Remove assert.
22406         (sel_find_rgns): Delete declaration.
22407         * sel-sched.c (purge_empty_blocks): Attempt to remove first block of
22408         the region when it is not a preheader.
22409
22410 2009-04-28  Uros Bizjak  <ubizjak@gmail.com>
22411
22412         PR c/39323
22413         * config/alpha/elf.h (MAX_OFILE_ALIGNMENT): Sync with elfos.h
22414
22415 2009-04-28  Richard Guenther  <rguenther@suse.de>
22416
22417         * tree.h (SSA_NAME_VALUE): Remove.
22418         (struct tree_ssa_name): Remove value_handle member.
22419         * tree-vrp.c (execute_vrp): Initialize/free the value-handle
22420         array for jump threading.
22421         * tree-ssa-propagate.c (ssa_prop_init): Do not initialize
22422         SSA_NAME_VALUEs.
22423         * print-tree.c (print_node): Do not dump SSA_NAME_VALUEs.
22424         * tree-flow.h (threadedge_initialize_values): Declare.
22425         (threadedge_finalize_values): Likewise.
22426         * tree-ssa-threadedge.c (ssa_name_values): New global variable.
22427         (SSA_NAME_VALUE): Define.
22428         (threadedge_initialize_values): New function.
22429         (threadedge_finalize_values): Likewise.
22430         * tree-ssa-dom.c (ssa_name_values): New global variable.
22431         (SSA_NAME_VALUE): Define.
22432         (tree_ssa_dominator_optimize): Initialize/free the value-handle array.
22433
22434 2009-04-28  Ira Rosen  <irar@il.ibm.com>
22435
22436         * tree-vect-loop-manip.c (vect_create_cond_for_alias_checks):
22437         Use REPORT_VECTORIZED_LOCATIONS instead
22438         REPORT_VECTORIZED_LOOPS.
22439         * tree-vectorizer.c (vect_verbosity_level): Make static.
22440         (vect_loop_location): Rename to vect_location.
22441         (vect_set_verbosity_level): Update comment.
22442         (vect_set_dump_settings): Use REPORT_VECTORIZED_LOCATIONS
22443         and vect_location.
22444         (vectorize_loops): Fix comment. Use REPORT_VECTORIZED_LOCATIONS
22445         and vect_location. Use REPORT_UNVECTORIZED_LOCATIONS
22446         instead REPORT_UNVECTORIZED_LOOPS.
22447         * tree-vectorizer.h (enum vect_def_type): Rename vect_invariant_def
22448         and vect_loop_def to vect_external_def and vect_internal_def.
22449         (enum verbosity_levels): Rename REPORT_VECTORIZED_LOOPS
22450         and REPORT_UNVECTORIZED_LOOPS to REPORT_VECTORIZED_LOCATIONS and
22451         REPORT_UNVECTORIZED_LOCATIONS.
22452         (enum vect_relevant): Update comment. Rename vect_unused_in_loop
22453         and vect_used_in_loop and to vect_unused_in_scope and
22454         vect_used_in_scope.
22455         (STMT_VINFO_RELEVANT_P): Use vect_unused_in_scope.
22456         (vect_verbosity_level): Remove declaration.
22457         (vect_analyze_operations): Likewise.
22458         (vect_analyze_stmt): Declare.
22459         * tree-vect-loop.c (vect_determine_vectorization_factor): Use
22460         REPORT_UNVECTORIZED_LOCATIONS.
22461         (vect_get_loop_niters): Fix indentation.
22462         (vect_analyze_loop_form): Use REPORT_UNVECTORIZED_LOCATIONS.
22463         (vect_analyze_loop_operations): New function.
22464         (vect_analyze_loop): Call vect_analyze_loop_operations instead of
22465         vect_analyze_operations.
22466         (vect_is_simple_reduction): Use new names.
22467         (vectorizable_live_operation, vect_transform_loop): Likewise.
22468         * tree-vect-data-refs.c (vect_check_interleaving): Add a return value
22469         to specify whether the data references can be a part of interleaving
22470         chain.
22471         (vect_analyze_data_ref_dependence): Use new names.
22472         (vect_analyze_data_refs_alignment, vect_analyze_data_refs): Likewise.
22473         (vect_create_addr_base_for_vector_ref): Remove redundant code.
22474         * tree-vect-patterns.c (widened_name_p): Use new names.
22475         (vect_recog_dot_prod_pattern): Likewise.
22476         * tree-vect-stmts.c (vect_stmt_relevant_p): Use new names.
22477         (process_use, vect_mark_stmts_to_be_vectorized,
22478         vect_model_simple_cost, vect_model_store_cost,
22479         vect_get_vec_def_for_operand, vect_get_vec_def_for_stmt_copy,
22480         vectorizable_call, vectorizable_conversion, vectorizable_assignment,
22481         vectorizable_operation, vectorizable_type_demotion,
22482         vectorizable_type_promotion, vectorizable_store, vectorizable_load,
22483         vectorizable_condition): Likewise.
22484         (vect_analyze_operations): Split into vect_analyze_loop_operations
22485         and ...
22486         (vect_analyze_stmt): ... new function.
22487         (new_stmt_vec_info): Use new names.
22488         (vect_is_simple_use): Use new names and fix comment.
22489         * tree-vect-slp.c (vect_get_and_check_slp_defs): Use new names.
22490         (vect_build_slp_tree, vect_analyze_slp, vect_schedule_slp): Likewise.
22491
22492 2009-04-28  Uros Bizjak  <ubizjak@gmail.com>
22493
22494         PR target/39911
22495         * config/i386/i386.c (print_operand) ['Z']: Handle floating point
22496         and integer modes for x87 operands.  Do not ICE for unsupported size,
22497         generate error instead.  Generate error for unsupported operand types.
22498         ['z']: Do not handle HImode memory operands specially.  Warning
22499         for floating-point operands.  Fallthru to 'Z' for unsupported operand
22500         types.  Do not ICE for unsupported size, generate error instead.
22501         (output_387_binary_op): Use %Z to output operands.
22502         (output_fp_compare): Ditto.
22503         (output_387_reg_move): Ditto.
22504
22505 2009-04-28  Ben Elliston  <bje@au.ibm.com>
22506
22507         PR c++/35652
22508         Revert:
22509
22510         2009-03-27  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
22511
22512         * builtins.c (c_strlen): Do not warn here.
22513         * c-typeck.c (build_binary_op): Adjust calls to pointer_int_sum.
22514         * c-common.c (pointer_int_sum): Take an explicit location.
22515         Warn about offsets out of bounds.
22516         * c-common.h (pointer_int_sum): Adjust declaration.
22517
22518 2009-04-27  Ian Lance Taylor  <iant@google.com>
22519
22520         * collect2.c (is_ctor_dtor): Change type of ret field in struct
22521         names to symkind.
22522         * dce.c (run_fast_df_dce): Change type of old_flags to int.
22523         * df-core.c (df_set_flags): Change return type to int.  Change
22524         type of old_flags to int.
22525         (df_clear_flags): Likewise.
22526         * df-scan.c (df_def_record_1): Change 0 to VOIDmode.
22527         (df_get_conditional_uses): Likewise.
22528         * df.h (df_set_flags, df_clear_flags): Update declarations.
22529         * dwarf2out.c (struct indirect_string_node): Change type of form
22530         field to enum dwarf_form.
22531         (AT_string_form): Change return type to enum dwarf_form.
22532         * fixed-value.c (fixed_compare): Add cast to enum type.
22533         * fwprop.c (update_df): Change 0 to VOIDmode.
22534         * gensupport.c: Change 0 to UNKNOWN.
22535         * gimple.h (gimple_cond_code): Add cast to enum type.
22536         * haifa-sched.c (reemit_notes): Add cast to enum type.
22537         * hooks.c (hook_int_void_no_regs): Remove function.
22538         * hooks.h (hook_int_void_no_regs): Remove declaration.
22539         * optabs.c (expand_widen_pattern_expr): Change 0 to VOIDmode.
22540         * predict.c (combine_predictions_for_insn): Add casts to enum type.
22541         * real.c (real_arithmetic): Add cast to enum type.
22542         (real_compare): Likewise.
22543         * target.h (struct gcc_target): Change return type of
22544         branch_target_register_class to enum reg_class.
22545         * target-def.h (TARGET_BRANCH_TARGET_REGISTER_CLASS): Define as
22546         default_branch_target_register_class.
22547         * targhooks.c (default_branch_target_register_class): New function.
22548         * targhooks.h (default_branch_target_register_class): Declare.
22549         * tree-data-ref.c (print_direction_vector): Add cast to enum type.
22550         * tree-vect-data-refs.c (vect_supportable_dr_alignment): Remove
22551         cast to int.
22552         * tree-vect-loop.c (vect_create_epilog_for_reduction): Change 0 to
22553         ERROR_MARK.
22554         * tree-vect-slp.c (vect_build_slp_tree): Change 0 to
22555         vect_uninitialized_def.  Change 0 to ERROR_MARK.
22556         * tree-vect-stmts.c (supportable_widening_operation): Don't
22557         initialize icode1 and icode2.
22558         * tree-vectorizer.h (enum vect_def_type): Add vect_uninitialized_def.
22559         * config/sol2-c.c (cmn_err_length_specs): Change 0 to FMT_LEN_none
22560         and to STD_C89.
22561         (cmn_err_flag_specs): Change 0 to STD_C89.
22562         (cmn_err_char_table): Likewise.
22563         * config/arm/arm.c (get_arm_condition_code): Change type of code
22564         to enum arm_cond_code.
22565         (IWMMXT_BUILTIN): Change 0 to UNKNOWN.
22566         (IWMMXT_BUILTIN2): Likewise.
22567         (neon_builtin_type_bits): Don't define typedef.
22568         (neon_builtin_datum): Change type of bits field to int.
22569         (arm_expand_neon_args): Add cast to enum type.
22570         * config/ia64/ia64.c (tls_symbolic_operand_type): Change 0 to
22571         TLS_MODEL_NONE.
22572         * config/i386/i386.c (bdesc_multi_arg): Change 0 to UNKNOWN.  Add
22573         casts to enum type.
22574         * config/mips/mips.c (LOONGSON_BUILTIN_ALIAS): Change 0 to
22575         MIPS_FP_COND_f.
22576         * config/mips/mips.md (jal_macro): Return enum constant.
22577         (single_insn): Likewise.
22578         * config/rs6000/rs6000.c (bdesc_altivec_preds): Change 0 to
22579         CODE_FOR_nothing.
22580         * config/rs6000/rs6000-c.c (altivec_overloaded_builtins): Add
22581         casts to enum type.
22582         * config/s390/s390.c (s390_tune_flags): Change type to int.
22583         (s390_arch_flags): Likewise.
22584         (s390_handle_arch_option): Change flags field of struct pta to int.
22585         * config/s390/s390.h (s390_tune_flags): Update declaration.
22586         (s390_arch_flags): Likewise.
22587         * config/sh/sh.c (prepare_move_operands): Compare
22588         tls_symbolic_operand result with enum constant.
22589         (sh_reorg): Change PUT_MODE to PUT_REG_NOTE_KIND.
22590         (sh_expand_prologue): Add cast to enum type.
22591         (sh_expand_epilogue): Likewise.
22592         (tls_symbolic_operand): Change return type to enum tls_model.
22593         (fpscr_set_from_mem): Add cast to enum type.
22594         (legitimize_pic_address): Compare tls_symbolic_operand result with
22595         enum constant.
22596         (sh_target_reg_class): Change return type to enum reg_class.
22597         * config/sh/sh.h (OVERRIDE_OPTIONS): Change CPU_xxx to
22598         PROCESSOR_xxx.
22599         * config/sh/sh-protos.h (tls_symbolic_operand): Update declaration.
22600         * config/sparc/sparc.c (sparc_override_options): Add cast to enum type.
22601         * config/sparc/sparc.md (empty_delay_slot): Return enum constant.
22602         (pic, calls_alloca, calls_eh_return, leaf_function): Likewise.
22603         (delayed_branch, tls_call_delay): Likewise.
22604         (eligible_for_sibcall_delay): Likewise.
22605         (eligible_for_return_delay): Likewise.
22606         * config/spu/spu.c (expand_builtin_args): Add cast to enum type.
22607         (spu_expand_builtin_1): Likewise.
22608
22609         * c-typeck.c (convert_for_assignment): Issue -Wc++-compat warnings
22610         for all types of conversions.
22611         (output_init_element): Issue -Wc++-compat warning if needed when
22612         initializing a bitfield with enum type.
22613         * c-parser.c (c_parser_expression): Set original_type to
22614         original_type of right hand operand of comma operator.
22615
22616 2009-04-27  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
22617
22618         * doc/c-tree.texi (Types, Functions, Expression trees): Fix
22619         grammar nits.
22620         * doc/cfg.texi (Maintaining the CFG, Liveness information): Likewise.
22621         * doc/cpp.texi (Standard Predefined Macros)
22622         (Implementation-defined behavior): Likewise.
22623         * doc/extend.texi (Function Attributes, Type Attributes): Likewise.
22624         * doc/gimple.texi (GIMPLE Exception Handling)
22625         (@code{GIMPLE_ASSIGN}): Likewise.
22626         * doc/install.texi (Prerequisites, Configuration, Specific): Likewise.
22627         * doc/invoke.texi (Warning Options, Optimize Options)
22628         (AVR Options, Darwin Options): Likewise.
22629         (Optimize Options): Reformulate -fwhole-program description.
22630         * doc/loop.texi (Lambda): Likewise.
22631         * doc/md.texi (Output Template, Define Constraints)
22632         (Standard Names, Insn Splitting): Likewise.
22633         * doc/options.texi (Option properties): Likewise.
22634         * doc/passes.texi (Tree-SSA passes): Likewise.
22635         * doc/rtl.texi (Side Effects, Assembler, Insns): Likewise.
22636         * doc/tm.texi (Register Classes, Old Constraints, Scalar Return)
22637         (File Names and DBX): Likewise.
22638         * doc/trouble.texi (Incompatibilities): Likewise.
22639
22640 2009-04-27  Trevor Smigiel  <trevor_smigiel@playstation.sony.com>
22641
22642         * spu.c (spu_machine_dependent_reorg): Make sure branch label on hint
22643         instruction is correct.
22644
22645 2009-04-27  Trevor Smigiel  <trevor_smigiel@playstation.sony.com>
22646
22647         Allow non-constant arguments to conversion intrinsics.
22648         * spu-protos.h (exp2_immediate_p, spu_gen_exp2): Declare.
22649         * predicates.md (spu_inv_exp2_operand, spu_exp2_operand): New.
22650         * spu.c (print_operand): Handle 'v' and 'w'.
22651         (exp2_immediate_p, spu_gen_exp2): Define.
22652         * spu-builtins.def (spu_convts, spu_convtu, spu_convtf_0,
22653         spu_convtf_1): Update parameter descriptions.
22654         * spu-builtins.md (spu_csflt, spu_cuflt, spu_cflts, spu_cfltu): Update.
22655         * constraints.md ('v', 'w'): New.
22656         * spu.md (UNSPEC_CSFLT, UNSPEC_CFLTS, UNSPEC_CUFLT, UNSPEC_CFLTU):
22657         Remove.
22658         (i2f, I2F): New define_mode_attr.
22659         (floatsisf2, floatv4siv4sf2, fix_truncsfsi2, fix_truncv4sfv4si2,
22660         floatunssisf2, floatunsv4siv4sf2, fixuns_truncsfsi2,
22661         fixuns_truncv4sfv4si2):  Update to use mode attribute.
22662         (float<mode><i2f>2_mul, float<mode><i2f>2_div,
22663         fix_trunc<mode><f2i>2_mul, floatuns<mode><i2f>2_mul,
22664         floatuns<mode><i2f>2_div, fixuns_trunc<mode><f2i>2_mul): New
22665         patterns for combine.
22666
22667 2009-04-27  Steven Bosscher  <steven@gcc.gnu.org>
22668
22669         * dbgcnt.def (cprop1, cprop2, gcse, jump_bypass): Remove
22670         (cprop, hoist, pre, store_motion): New debug counters.
22671         * tree-pass.h (pass_tracer): Move to list of gimple passes, it
22672         is not an RTL pass anymore.
22673         (pass_profiling): Remove extern decl for pass removed in 2005.
22674         (pass_gcse, pass_jump_bypass): Remove.
22675         * final.c (rest_of_clean_state): Set flag_rerun_cse_after_global_opts
22676         to 0 for clean state.
22677         * toplev.h (flag_rerun_cse_after_global_opts): Add extern declaration.
22678         * cse.c (gate_handle_cse_after_global_opts,
22679         rest_of_handle_cse_after_global_opts): New functions.
22680         (pass_cse_after_global_opts): New pass, does local CSE.
22681         * timevar.def (TV_GCSE, TV_CPROP1, TV_CPROP2, TV_BYPASS): Remove.
22682         (TV_CPROP): New timevar.
22683         * gcse.c (flag_rerun_cse_after_global_opts): New global variable.
22684         (run_jump_opt_after_gcse, max_gcse_regno): Remove global vars.
22685         (gcse_main, recompute_all_luids): Remove.
22686         (compute_hash_table_work): Call max_reg_num instead of reading
22687         max_gcse_regno.
22688         (cprop_jump): Don't set run_jump_opt_after_gcse.
22689         (constprop_register): Always allow to alter jumps.
22690         (cprop_insn): Likewise.
22691         (do_local_cprop): Likewise.
22692         (local_cprop_pass): Likewise.  Return non-zero if something changed.
22693         (cprop): Remove function, fold interesting bits into one_cprop_pass.
22694         (find_implicit_sets): Add note about missed optimization opportunity.
22695         (one_cprop_pass): Rewrite to be "the" CPROP pass, called from the
22696         pass_rtl_cprop execute function.
22697         Don't bother tracking the pass number, each pass gets its own dumpfile
22698         now anyway.
22699         Always allow to alter jumpsand bypass jumps.
22700         (bypass_block): Don't ignore regno >= max_gcse_regno, find_bypass_set
22701         will just find no suitable set.
22702         (pre_edge_insert): Fix dumping, this function is for PRE only.
22703         (one_pre_gcse_pass): Rewrite to be "the" PRE pass, called from the
22704         pass_rtl_pre execute function.
22705         (hoist_code): Return non-zero if something changed.  Keep track of
22706         substitutions and insertions for statistics gathering similar to PRE.
22707         (one_code_hoisting_pass): Rewrite to be "the" code hoisting pass,
22708         called from the pass_rtl_hoist execute function.  Show pass statistics.
22709         (compute_store_table): Use max_reg_num directly instead of using the
22710         formerly global max_gcse_regno.
22711         (build_store_vectors): Likewise.
22712         (replace_store_insn): Fix dumping.
22713         (store_motion): Rename to ...
22714         (one_store_motion_pass): ... this.  Rewrite to be "the" STORE_MOTION
22715         pass, called from the pass_rtl_store_motion execute function.  Keep
22716         track of substitutions and insertions for statistics gathering similar
22717         to PRE.
22718         (bypass_jumps): Remove, fold interesting bits into ...
22719         (one_cprop_pass): ... this.  Rewrite to be "the" CPROP pass, called
22720         from the pass_rtl_cprop execute function.
22721         (gate_handle_jump_bypass, rest_of_handle_jump_bypass,
22722         pass_jump_bypass): Remove.
22723         (gate_handle_gcse, rest_of_handle_gcse): Remove.
22724         (gate_rtl_cprop, execute_rtl_cprop, pass_rtl_cprop): New.
22725         (gate_rtl_pre, execute_rtl_pre, pass_rtl_pre): New.
22726         (gate_rtl_hoist, execute_rtl_hoist, pass_rtl_hoist): New.
22727         (gate_rtl_store_motion, execute_rtl_store_motion,
22728         pass_rtl_store_motion): New.
22729         * common.opt: Remove flag_cse_skip_blocks, adjust documentation to
22730         make it clear that -fcse-skip-blocks is a no-op for backward compat.
22731         * passes.c (init_optimization_passes): Remove pass_gcse and
22732         pass_jump_bypass.  Schedule cprop, pre, hoist, cprop, store_motion,
22733         and cse_after_global_opts in place of pass_gcse.  Schedule cprop
22734         instead of pass_jump_bypass.
22735
22736 2009-04-27  Richard Guenther  <rguenther@suse.de>
22737
22738         PR middle-end/39928
22739         * gimplify.c (gimplify_expr): If we are required to create
22740         a temporary make sure it ends up as register.
22741
22742 2009-04-27  H.J. Lu  <hongjiu.lu@intel.com>
22743
22744         PR target/39903
22745         * config/i386/i386.c (construct_container): Don't call
22746         gen_reg_or_parallel with BLKmode on X86_64_SSE_CLASS,
22747         X86_64_SSESF_CLASS and X86_64_SSEDF_CLASS.
22748
22749 2009-04-27  Michael Matz  <matz@suse.de>
22750
22751         * ssaexpand.h (struct ssaexpand): Member 'values' is a bitmap.
22752         (get_gimple_for_ssa_name): Adjust, lookup using SSA_NAME_DEF_STMT.
22753         * tree-ssa-live.h (find_replaceable_exprs): Return a bitmap.
22754         (dump_replaceable_exprs): Take a bitmap.
22755         * cfgexpand.c (gimple_cond_pred_to_tree): Handle bitmap instead of
22756         array.
22757         (expand_gimple_basic_block): Likewise.
22758         * tree-ssa-ter.c (struct temp_expr_table_d): Make
22759         replaceable_expressions member a bitmap.
22760         (free_temp_expr_table): Pass back and deal with bitmap, not gimple*.
22761         (mark_replaceable): Likewise.
22762         (find_replaceable_in_bb, dump_replaceable_exprs): Likewise.
22763         * tree-outof-ssa.c (remove_ssa_form): 'values' is a bitmap.
22764
22765 2009-04-27  Richard Guenther  <rguenther@suse.de>
22766
22767         * tree-cfg.c (remove_useless_stmts): Verify stmts afterwards.
22768         (verify_stmts): Dispatch to gimple/type verification code.
22769         * tree-inline.c (remap_gimple_op_r): Work around C++ FE
22770         issue with call argument types.
22771
22772 2009-04-27  Michael Matz  <matz@suse.de>
22773
22774         * tree-into-ssa.c (regs_to_rename, mem_syms_to_rename): Remove.
22775         (init_update_ssa, delete_update_ssa, update_ssa): Remove references
22776         to above.
22777
22778 2009-04-27  Richard Sandiford  <rdsandiford@googlemail.com>
22779             Eric Botcazou  <ebotcazou@adacore.com>
22780
22781         * resource.c (find_basic_block): Use BLOCK_FOR_INSN to look up
22782         a label's basic block.
22783         (mark_target_live_regs): Tidy and rework obsolete comments.
22784         Change back DF problem to LIVE.  If a label starts a basic block,
22785         assume that all registers that used to be live then still are.
22786         (init_resource_info): If a label starts a basic block, set its
22787         BLOCK_FOR_INSN accordingly.
22788         (fini_resource_info): Undo the setting of BLOCK_FOR_INSN.
22789
22790 2009-04-27  Richard Guenther  <rguenther@suse.de>
22791
22792         * tree-flow-inline.h (function_ann): Remove.
22793         (get_function_ann): Likewise.
22794         * tree-dfa.c (create_function_ann): Remove.
22795         * tree-flow.h (struct static_var_ann_d): Remove.
22796         (struct function_ann_d): Likewise.
22797         (union tree_ann_d): Remove fdecl member.
22798         (function_ann_t): Remove.
22799         (function_ann, get_function_ann, create_function_ann): Remove
22800         declarations.
22801
22802 2009-04-27  Uros Bizjak  <ubizjak@gmail.com>
22803
22804         * config/alpha/alpha.c (code_for_builtin): Declare as enum insn_code.
22805
22806 2009-04-27  Jan Hubicka  <jh@suse.cz>
22807
22808         * ipa-pure-const.c (struct funct_state_d): New fields
22809         state_previously_known, looping_previously_known; remove
22810         state_set_in_source.
22811         (analyze_function): Use new fields.
22812         (propagate): Avoid assumption that state_set_in_source imply
22813         nonlooping.
22814
22815         * tree-ssa-loop-niter.c (finite_loop_p): New function.
22816         * tree-ssa-loop-ivcanon.c (empty_loop_p): Use it.
22817         * cfgloop.h (finite_loop_p): Declare.
22818
22819 2009-04-26  Michael Matz  <matz@suse.de>
22820
22821         * tree-flow.h (tree_ann_common_d): Remove aux and value_handle members.
22822
22823 2009-04-26  Michael Matz  <matz@suse.de>
22824
22825         * tree-pass.h (pass_del_ssa, pass_mark_used_blocks,
22826         pass_free_cfg_annotations, pass_free_datastructures): Remove decls.
22827         * gimple-low.c (mark_blocks_with_used_vars, mark_used_blocks,
22828         pass_mark_used_blocks): Remove.
22829         * tree-optimize.c (pass_free_datastructures,
22830         execute_free_cfg_annotations, pass_free_cfg_annotations): Remove.
22831         * passes.c (init_optimization_passes): Don't call
22832         pass_mark_used_blocks, remove dead code.
22833
22834 2009-04-26  H.J. Lu  <hongjiu.lu@intel.com>
22835
22836         * tree-outof-ssa.c (rewrite_trees): Add ATTRIBUTE_UNUSED.
22837         * tree-ssa-live.h (register_ssa_partition): Likewise.
22838
22839 2009-04-26  Michael Matz  <matz@suse.de>
22840
22841         Expand from SSA.
22842         * builtins.c (fold_builtin_next_arg): Handle SSA names.
22843         * tree-ssa-copyrename.c (rename_ssa_copies): Use ssa_name() directly.
22844         * tree-ssa-coalesce.c (create_outofssa_var_map): Mark only useful
22845         SSA names.
22846         (compare_pairs): Swap cost comparison.
22847         (coalesce_ssa_name): Don't use change_partition_var.
22848         * tree-nrv.c (struct nrv_data): Add modified member.
22849         (finalize_nrv_r): Set it.
22850         (tree_nrv): Use it to update statements.
22851         (pass_nrv): Require PROP_ssa.
22852         * tree-mudflap.c (mf_decl_cache_locals,
22853         mf_build_check_statement_for): Use make_rename_temp.
22854         (pass_mudflap_2): Require PROP_ssa, run ssa update at finish.
22855         * alias.c (find_base_decl): Handle SSA names.
22856         * emit-rtl (set_reg_attrs_for_parm): Make non-static.
22857         (component_ref_for_mem_expr): Don't leak SSA names into RTL.
22858         * rtl.h (set_reg_attrs_for_parm): Declare.
22859         * tree-optimize.c (pass_cleanup_cfg_post_optimizing): Rename
22860         to "optimized", remove unused locals at finish.
22861         (execute_free_datastructures): Make global, call
22862         delete_tree_cfg_annotations.
22863         (execute_free_cfg_annotations): Don't call
22864         delete_tree_cfg_annotations.
22865
22866         * ssaexpand.h: New file.
22867         * expr.c (toplevel): Include ssaexpand.h.
22868         (expand_assignment): Handle SSA names the same as register variables.
22869         (expand_expr_real_1): Expand SSA names.
22870         * cfgexpand.c (toplevel): Include ssaexpand.h.
22871         (SA): New global variable.
22872         (gimple_cond_pred_to_tree): Fold TERed comparisons into predicates.
22873         (SSAVAR): New macro.
22874         (set_rtl): New helper function.
22875         (add_stack_var): Deal with SSA names, use set_rtl.
22876         (expand_one_stack_var_at): Likewise.
22877         (expand_one_stack_var): Deal with SSA names.
22878         (stack_var_size_cmp): Use code (SSA_NAME / DECL) as tie breaker
22879         before unique numbers.
22880         (expand_stack_vars): Use set_rtl.
22881         (expand_one_var): Accept SSA names, add asserts for them, feed them
22882         to above subroutines.
22883         (expand_used_vars): Expand all partitions (without default defs),
22884         then only the local decls (ignoring those expanded already).
22885         (expand_gimple_cond): Remove edges when jumpif() expands an
22886         unconditional jump.
22887         (expand_gimple_basic_block): Don't clear EDGE_EXECUTABLE here,
22888         or remove abnormal edges.  Ignore insns setting the LHS of a TERed
22889         SSA name.
22890         (gimple_expand_cfg): Call into rewrite_out_of_ssa, initialize
22891         members of SA; deal with PARM_DECL partitions here; expand
22892         all PHI nodes, free tree datastructures and SA.  Commit instructions
22893         on edges, clear EDGE_EXECUTABLE and remove abnormal edges here.
22894         (pass_expand): Require and destroy PROP_ssa, verify SSA form, flow
22895         info and statements at start, collect garbage at finish.
22896         * tree-ssa-live.h (struct _var_map): Remove partition_to_var member.
22897         (VAR_ANN_PARTITION) Remove.
22898         (change_partition_var): Don't declare.
22899         (partition_to_var): Always return SSA names.
22900         (var_to_partition): Only accept SSA names.
22901         (register_ssa_partition): Only check argument.
22902         * tree-ssa-live.c (init_var_map): Don't allocate partition_to_var
22903         member.
22904         (delete_var_map): Don't free it.
22905         (var_union): Only accept SSA names, simplify.
22906         (partition_view_init): Mark only useful SSA names as used.
22907         (partition_view_fini): Only deal with SSA names.
22908         (change_partition_var): Remove.
22909         (dump_var_map): Use ssa_name instead of partition_to_var member.
22910         * tree-ssa.c (delete_tree_ssa): Don't remove PHI nodes on RTL
22911         basic blocks.
22912         * tree-outof-ssa.c (toplevel): Include ssaexpand.h and expr.h.
22913         (struct _elim_graph): New member const_dests; nodes member vector of
22914         ints.
22915         (set_location_for_edge): New static helper.
22916         (create_temp): Remove.
22917         (insert_partition_copy_on_edge, insert_part_to_rtx_on_edge,
22918         insert_value_copy_on_edge, insert_rtx_to_part_on_edge): New functions.
22919         (new_elim_graph): Allocate const_dests member.
22920         (clean_elim_graph): Truncate const_dests member.
22921         (delete_elim_graph): Free const_dests member.
22922         (elim_graph_size): Adapt to new type of nodes member.
22923         (elim_graph_add_node): Likewise.
22924         (eliminate_name): Likewise.
22925         (eliminate_build): Don't take basic block argument, deal only with
22926         partition numbers, not variables.
22927         (get_temp_reg): New static helper.
22928         (elim_create): Use it, deal with RTL temporaries instead of trees.
22929         (eliminate_phi): Adjust all calls to new signature.
22930         (assign_vars, replace_use_variable, replace_def_variable): Remove.
22931         (rewrite_trees): Only do checking.
22932         (edge_leader, stmt_list, leader_has_match, leader_match): Remove.
22933         (same_stmt_list_p, identical_copies_p, identical_stmt_lists_p,
22934         init_analyze_edges_for_bb, fini_analyze_edges_for_bb,
22935         contains_tree_r, MAX_STMTS_IN_LATCH,
22936         process_single_block_loop_latch, analyze_edges_for_bb,
22937         perform_edge_inserts): Remove.
22938         (expand_phi_nodes): New global function.
22939         (remove_ssa_form): Take ssaexpand parameter.  Don't call removed
22940         functions, initialize new parameter, remember partitions having a
22941         default def.
22942         (finish_out_of_ssa): New global function.
22943         (rewrite_out_of_ssa): Make global.  Adjust call to remove_ssa_form,
22944         don't reset in_ssa_p here, don't disable TER when mudflap.
22945         (pass_del_ssa): Remove.
22946         * tree-flow.h (struct var_ann_d): Remove out_of_ssa_tag and
22947         partition members.
22948         (execute_free_datastructures): Declare.
22949         * Makefile.in (SSAEXPAND_H): New variable.
22950         (tree-outof-ssa.o, expr.o, cfgexpand.o): Depend on SSAEXPAND_H.
22951         * basic-block.h (commit_one_edge_insertion): Declare.
22952         * passes.c (init_optimization_passes): Move pass_nrv and
22953         pass_mudflap2 before pass_cleanup_cfg_post_optimizing, remove
22954         pass_del_ssa, pass_free_datastructures, pass_free_cfg_annotations.
22955         * cfgrtl.c (commit_one_edge_insertion): Make global, don't declare.
22956         (redirect_branch_edge): Deal with super block when expanding, split
22957         out jump patching itself into ...
22958         (patch_jump_insn): ... here, new static helper.
22959
22960 2009-04-26  Michael Matz  <matz@suse.de>
22961
22962         * tree-ssa-copyrename.c (rename_ssa_copies): Don't iterate
22963         beyond num_ssa_names.
22964         * tree-ssa-ter.c (free_temp_expr_table): Likewise.
22965         * tree-ssa-coalesce.c (create_outofssa_var_map): Likewise.
22966
22967 2009-04-26  Jakub Jelinek  <jakub@redhat.com>
22968
22969         PR inline-asm/39543
22970         * fwprop.c (forward_propagate_asm): New function.
22971         (forward_propagate_and_simplify): Propagate also into __asm, if it
22972         doesn't increase the number of referenced registers.
22973
22974         PR c/39889
22975         * stmt.c (warn_if_unused_value): Look through NON_LVALUE_EXPR.
22976
22977 2009-04-26  Jakub Jelinek  <jakub@redhat.com>
22978
22979         * tree-nested.c (get_nonlocal_vla_type): If not optimizing, call
22980         note_nonlocal_vla_type for nonlocal VLAs.
22981         (note_nonlocal_vla_type, note_nonlocal_block_vlas,
22982         contains_remapped_vars, remap_vla_decls): New functions.
22983         (convert_nonlocal_reference_stmt): If not optimizing, call
22984         note_nonlocal_block_vlas on GIMPLE_BIND block vars.
22985         (nesting_copy_decl): Return {VAR,PARM,RESULT}_DECL unmodified
22986         if it wasn't found in var_map.
22987         (finalize_nesting_tree_1): Call remap_vla_decls.  If outermost
22988         GIMPLE_BIND doesn't have gimple_bind_block, chain debug_var_chain
22989         to BLOCK_VARS (DECL_INITIAL (root->context)) instead of calling
22990         declare_vars.
22991         * gimplify.c (nonlocal_vlas): New variable.
22992         (gimplify_var_or_parm_decl): Add debug VAR_DECLs for non-local
22993         referenced VLAs.
22994         (gimplify_body): Create and destroy nonlocal_vlas.
22995
22996         * dwarf2out.c (loc_descr_plus_const): New function.
22997         (build_cfa_aligned_loc, tls_mem_loc_descriptor,
22998         mem_loc_descriptor, loc_descriptor_from_tree_1,
22999         descr_info_loc, gen_variable_die): Use it.
23000
23001         * tree.h (DECL_BY_REFERENCE): Note that it is also valid for
23002         !TREE_STATIC VAR_DECLs.
23003         * dwarf2out.c (loc_by_reference, gen_decl_die): Handle
23004         DECL_BY_REFERENCE on !TREE_STATIC VAR_DECLs.
23005         (gen_variable_die): Likewise.  Don't look at TREE_PRIVATE if
23006         DECL_BY_REFERENCE is valid.
23007         * dbxout.c (DECL_ACCESSIBILITY_CHAR): Don't look at TREE_PRIVATE
23008         for PARM_DECLs, RESULT_DECLs or !TREE_STATIC VAR_DECLs.
23009         * tree-nested.c (get_nonlocal_debug_decl, get_local_debug_decl):
23010         Copy DECL_BY_REFERENCE.
23011         (struct nesting_copy_body_data): New type.
23012         (nesting_copy_decl): New function.
23013         (finalize_nesting_tree_1): Remap types of debug_var_chain variables,
23014         if they have variable length.
23015
23016 2009-04-26  Michael Matz  <matz@suse.de>
23017
23018         * tree-sra.c (sra_build_assignment): Don't use into_ssa mode,
23019         mark new temporaries for renaming.
23020
23021 2009-04-26  Joseph Myers  <joseph@codesourcery.com>
23022
23023         PR c/39581
23024         * c-decl.c (global_bindings_p): Return negative value.
23025         (c_variable_size): New.  Based on variable_size from
23026         stor-layout.c.
23027         (grokdeclarator): Call c_variable_size not variable_size.
23028
23029 2009-04-26  Uros Bizjak  <ubizjak@gmail.com>
23030
23031         * config/i386/i386.c (print_operand) ['z']: Fix typo.
23032
23033 2009-04-26  Kai Tietz  <kai.tietz@onevision.com>
23034
23035         * config/i386/mingw-w64.h (STANDARD_INCLUDE_DIR):
23036         Redefine it to just use mingw/include.
23037         (ASM_SPEC): Rules for -m32 and -m64.
23038         (LINK_SPEC): Use Likewise.
23039         (SPEC_32): New define.
23040         (SPEC_64): Likewise.
23041         (SUB_LINK_SPEC): Likewise.
23042         (MULTILIB_DEFAULTS): New define.
23043         * config/i386/t-mingw-w64 (MULTILIB_OPTIONS):
23044         Add multilib options.
23045         (MULTILIB_DIRNAMES): Likewise.
23046         (MULTILIB_OSDIRNAMES): Likewise.
23047         (LIBGCC): Likewise.
23048         (INSTALL_LIBGCC): Likewise.
23049
23050 2009-04-26  Joseph Myers  <joseph@codesourcery.com>
23051
23052         PR c/39556
23053         * c-tree.h (enum c_inline_static_type): New.
23054         (record_inline_static): Declare.
23055         * c-decl.c (struct c_inline_static, c_inline_statics,
23056         record_inline_static, check_inline_statics): New.
23057         (pop_file_scope): Call check_inline_statics.
23058         (start_decl): Call record_inline_static instead of pedwarning
23059         directly for static in inline function.
23060         * c-typeck.c (build_external_ref): Call record_inline_static
23061         instead of pedwarning directly for static referenced in inline
23062         function.
23063
23064 2009-04-26  Steven Bosscher  <steven@gcc.gnu.org>
23065
23066         * df-scan.c (df_insn_rescan): Salvage insn's LUID if the insn is
23067         not new but only being rescanned.
23068         * gcse.c (uid_cuid, max_uid, INSN_CUID, max_cuid, struct reg_set,
23069         reg_set_table, REG_SET_TABLE_SLOP, reg_set_in_block,
23070         alloc_reg_set_mem, free_reg_set_mem, record_one_set,
23071         record_set_info, compute_set, grealloc): Remove.
23072         (recompute_all_luids): New function.
23073         (gcse_main): Don't compute sets, and don't do related memory
23074         allocations/free-ing.  If something changed before the end of the
23075         pass, update LUIDs using recompute_all_luids.
23076         (alloc_gcse_mem): Don't compute LUIDs.  Don't allocate reg_set memory.
23077         (free_gcse_mem): Don't free it either.
23078         (oprs_unchanged_p, load_killed_in_block, record_last_reg_set_info):
23079         Use the df insn LUIDs.
23080         (load_killed_in_block): Likewise.
23081         (compute_hash_table_work): Don't compute reg_set_in_block.
23082         (compute_transp): Use DF_REG_DEF_CHAINs.
23083         (local_cprop_pass): Don't use compute_sets and related functions.
23084         (one_cprop_pass, pre_gcse, one_pre_gcse_pass, one_code_hoisting_pass):
23085         Use get_max_uid() instead of max_cuid.
23086         (insert_insn_end_basic_block, pre_insert_copy_insn,
23087         update_ld_motion_stores): Don't try to
23088         keep reg_set tables up to date.
23089         (pre_insert_copies): Use df insn LUIDs.
23090         (sbitmap pre_redundant_insns): Replace with uses of INSN_DELETED_P.
23091         (reg_set_info): Don't use extra bitmap argument.
23092         (compute_store_table): Don't compute reg_set_in_block.  Use DF scan
23093         information to compute regs_set_in_block.
23094         (free_store_memory, store_motion): Don't nullify reg_set_in_block.
23095         (bypass_jumps): Don't use compute_sets and friends.
23096
23097 2009-04-26  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
23098
23099         PR testsuite/39710
23100         * opts.c (undocumented_msg): Do not leave blank even with
23101         ENABLE_CHECKING.
23102
23103 2009-04-25  Joseph Myers  <joseph@codesourcery.com>
23104
23105         * c-decl.c (build_enumerator): Allow values folding to integer
23106         constants but not integer constant expressions with a pedwarn if
23107         pedantic.
23108
23109 2009-04-25  Joseph Myers  <joseph@codesourcery.com>
23110
23111         PR c/39582
23112         * c-typeck.c (c_expr_sizeof_type): Create a C_MAYBE_CONST_EXPR
23113         with non-null C_MAYBE_CONST_EXPR_PRE if size of a variable-length
23114         type is an integer constant.
23115
23116 2009-04-25  Uros Bizjak  <ubizjak@gmail.com>
23117
23118         PR target/39897
23119         * config/i386/i386.c (print_operand) ['z']: Revert handling of
23120         HImode operands.
23121
23122 2009-04-25  Joseph Myers  <joseph@codesourcery.com>
23123
23124         PR c/39564
23125         * c-decl.c (grokdeclarator): Diagnose declarations of functions
23126         with variably modified return type and no storage class
23127         specifiers, except for the case of nested functions.  Distinguish
23128         extern declarations of functions with variably modified return
23129         types from those of objects with variably modified types.
23130
23131 2009-04-25  Jan Hubicka  <jh@suse.cz>
23132
23133         * tree.c (list_equal_p): New function.
23134         * tree.h (list_equal_p): Declare.
23135         * coretypes.h (edge_def, edge, const_edge, basic_block_def
23136         basic_block_def, basic_block, const_basic_block): New.
23137         * tree-eh.c (make_eh_edge): EH edges are not abnormal.
23138         (redirect_eh_edge): New function.
23139         (make_eh_edge_update_phi): EH edges are not abnormal.
23140         * except.c: Include tree-flow.h.
23141         (list_match): New function.
23142         (eh_region_replaceable_by_p): New function.
23143         (replace_region): New function.
23144         (hash_type_list): New function.
23145         (hash_eh_region): New function.
23146         (eh_regions_equal_p): New function.
23147         (merge_peers): New function.
23148         (remove_unreachable_regions): Verify EH tree when checking;
23149         merge peers.
23150         (copy_eh_region_1): New function.
23151         (copy_eh_region): New function.
23152         (push_reachable_handler): New function.
23153         (build_post_landing_pads, dw2_build_landing_pads): Be ready for
23154         regions without label but with live RESX.
23155         * except.h (redirect_eh_edge_to_label): New.
23156         * tree-flow.h (redirect_eh_edge): New.
23157         * coretypes.h (edge_def, edge, const_edge, basic_block_def
23158         basic_block_def, basic_block, const_basic_block): Remove.
23159         * Makefile.in (except.o): Add dependency on tree-flow.h
23160         * tree-cfg.c (gimple_redirect_edge_and_branch): Handle EH edges.
23161         * basic-block.h (edge, const_edge, basic_block, const_basic_block):
23162         Remove.
23163
23164 2009-04-25  Eric Botcazou  <ebotcazou@adacore.com>
23165
23166         PR bootstrap/39645
23167         * config/sparc/sparc.c (sparc_gimplify_va_arg): Set TREE_ADDRESSABLE
23168         on the destination of memcpy.
23169
23170 2009-04-25  Paolo Bonzini  <bonzini@gnu.org>
23171
23172         * doc/tm.texi (REGNO_OK_FOR_BASE_P, REGNO_MODE_OK_FOR_BASE_P,
23173         REGNO_MODE_OK_FOR_REG_BASE_P, REGNO_MODE_CODE_OK_FOR_BASE_P,
23174         REGNO_OK_FOR_INDEX_P): Mention strict/nonstrict difference.
23175
23176 2009-04-25  Jan Hubicka  <jh@suse.cz>
23177
23178         * tree-eh.c (tree_remove_unreachable_handlers): Handle shared labels.
23179         (tree_empty_eh_handler_p): Allow non-EH predecestors; allow region
23180         to be reached by different label than left.
23181         (update_eh_edges): Update comment; remove edge_to_remove if possible
23182         and return true if suceeded.
23183         (cleanup_empty_eh): Accept sharing map; handle shared regions.
23184         (cleanup_eh): Compute sharing map.
23185         * except.c (remove_eh_handler_and_replace): Add argument if we should
23186         update regions.
23187         (remove_unreachable_regions): Update for label sharing.
23188         (label_to_region_map): Likewise.
23189         (get_next_region_sharing_label): New function.
23190         (remove_eh_handler_and_replace): Add update_catch_try parameter; update
23191         prev_try pointers.
23192         (remove_eh_handler): Update.
23193         (remove_eh_region_and_replace_by_outer_of): New function.
23194         * except.h (struct eh_region): Add next_region_sharing_label.
23195         (remove_eh_region_and_replace_by_outer_of,
23196         get_next_region_sharing_label): Declare.
23197         * tree-cfgcleanup.c (tree_forwarder_block_p): Simplify.
23198
23199 2009-04-25  Jan Hubicka  <jh@suse.cz>
23200
23201         * tree-cfg.c (split_critical_edges): Split also edges where we can't
23202         insert code even if they are not critical.
23203
23204 2009-04-25  Jan Hubicka  <jh@suse.cz>
23205
23206         * tree-cfg.c (gimple_can_merge_blocks_p): EH edges are unmergable.
23207         (gimple_can_remove_branch_p): EH edges won't remove branch by
23208         redirection.
23209         * tree-inline.c (update_ssa_across_abnormal_edges): Do handle
23210         updating of non-abnormal EH edges.
23211         * tree-cfg.c (gimple_can_merge_blocks_p): EH edges are unmergable.
23212         (gimple_can_remove_branch_p): EH edges are unremovable by redirection.
23213         (split_critical_edges): Split also edges where emitting code on them
23214         will lead to splitting later.
23215
23216 2009-04-25  Uros Bizjak  <ubizjak@gmail.com>
23217             H.J. Lu  <hongjiu.lu@intel.com>
23218
23219         PR target/39590
23220         * configure.ac (HAVE_AS_IX86_FILDQ): On x86 targets check whether
23221         the configured assembler supports fildq and fistpq mnemonics.
23222         (HAVE_AS_IX86_FILDS): Rename from HAVE_GAS_FILDS_FISTS.
23223         * configure: Regenerated.
23224         * config.in: Ditto.
23225
23226         * config/i386/i386.c (print_operand): Handle 'Z'.
23227         ['z']: Remove handling of special fild/fist suffixes.
23228         (output_fix_trunc): Use '%Z' to output suffix of fist{,p,tp} insn.
23229         * config/i386/i386.md (*floathi<mode>2_i387): Use '%Z' to output
23230         suffix of fild insn.
23231         (*floatsi<mode>2_vector_mixed): Ditto.
23232         (*float<SSEMODEI24:mode><MODEF:mode>2_mixed_interunit): Ditto.
23233         (*float<SSEMODEI24:mode><MODEF:mode>2_mixed_nointerunit): Ditto.
23234         (*float<SSEMODEI24:mode><X87MODEF:mode>2_i387_with_temp): Ditto.
23235         (*float<SSEMODEI24:mode><X87MODEF:mode>2_i387): Ditto.
23236         * config/i386/gas.h (GAS_MNEMONICS): Remove.
23237
23238 2009-04-25  Ben Elliston  <bje@au.ibm.com>
23239
23240         * genrecog.c (validate_pattern): Do not warn for VOIDmode CALLs as
23241         the source of a set operation.
23242
23243 2009-04-25  Anatoly Sokolov  <aesok@post.ru>
23244
23245         * target.h (struct gcc_target): Add case_values_threshold field.
23246         * target-def.h (TARGET_CASE_VALUES_THRESHOLD): New.
23247         (TARGET_INITIALIZER): Use TARGET_CASE_VALUES_THRESHOLD.
23248         * targhooks.c (default_case_values_threshold): New function.
23249         * targhooks.h (default_case_values_threshold): Declare function.
23250         * stmt.c (expand_case): Use case_values_threshold target hook.
23251         * expr.h (case_values_threshold): Remove declartation.
23252         * expr.c (case_values_threshold): Remove function.
23253         * doc/tm.texi (CASE_VALUES_THRESHOLD): Revise documentation.
23254
23255         * config/avr/avr.h (CASE_VALUES_THRESHOLD): Remove macro.
23256         * config/avr/avr.c (TARGET_CASE_VALUES_THRESHOLD): Define macro.
23257         (avr_case_values_threshold): Declare as static.
23258         * config/avr/avr-protos.h (avr_case_values_threshold): Remove.
23259
23260         * config/avr/mn10300.h (CASE_VALUES_THRESHOLD): Remove macro.
23261         * config/avr/mn10300.c (TARGET_CASE_VALUES_THRESHOLD): Define macro.
23262         (mn10300_case_values_threshold): New function.
23263
23264 2009-04-24  H.J. Lu  <hongjiu.lu@intel.com>
23265
23266         * ira.c (setup_cover_and_important_classes): Add enum cast.
23267
23268 2009-04-24  Vladimir Makarov  <vmakarov@redhat.com>
23269
23270         * genpreds.c (write_enum_constraint_num): Output definition of
23271         CONSTRAINT_NUM_DEFINED_P macro.
23272         * ira.c (setup_cover_and_important_classes): Use
23273         CONSTRAINT_NUM_DEFINED_P instead of CONSTRAINT__LIMIT in #ifdef.
23274
23275 2009-04-24  DJ Delorie  <dj@redhat.com>
23276
23277         * config/sh/sh.h (LIBGCC2_DOUBLE_TYPE_SIZE): Test
23278         __SH2A_SINGLE_ONLY__ also.
23279
23280 2009-04-24  Steve Ellcey  <sje@cup.hp.com>
23281
23282         * config/ia64/ia64.md (movfs_internal): Allow flt constants.
23283         (movdf_internal): Ditto.
23284         * config/ia64/ia64.c (ia64_legitimate_constant_p): Allow
23285         SFmode and DFmode constants.
23286         (ia64_print_operand): Add 'G' format for printing
23287         floating point constants.
23288
23289 2009-04-24  Richard Guenther  <rguenther@suse.de>
23290
23291         * tree-vrp.c (extract_range_from_binary_expr): Handle overflow
23292         from unsigned additions.
23293
23294 2009-04-24  Joseph Myers  <joseph@codesourcery.com>
23295
23296         * c-typeck.c (set_init_index): Allow array designators that are
23297         not integer constant expressions with a pedwarn if pedantic.
23298
23299 2009-04-24  Bernd Schmidt  <bernd.schmidt@analog.com>
23300
23301         * simplify-rtx.c (simplify_binary_operation_1, case AND): Result is
23302         zero if no overlap in nonzero bits between the operands.
23303
23304 2009-04-24  Ian Lance Taylor  <iant@google.com>
23305
23306         * combine.c (record_value_for_reg): Change 0 to VOIDmode, twice.
23307         (record_dead_and_set_regs): Likewise.
23308         * df.h (struct df_mw_hardreg): Change flags field to int.
23309         (struct df_base_ref): Likewise.
23310         (struct df): Change changeable_flags field to int.
23311         * df-scan.c (df_defs_record): Change clobber_flags to int.
23312         * dwarf2.h (enum dwarf_tag): Make lo_user and hi_user values enum
23313         constants rather than #define macros.
23314         (enum dwarf_attribute, enum dwarf_location_atom): Likewise.
23315         (enum dwarf_type, enum dwarf_endianity_encoding): Likewise.
23316         (enum dwarf_calling_convention): Likewise.
23317         (enum dwarf_line_number_x_ops): Likewise.
23318         (enum dwarf_call_frame_info): Likewise.
23319         (enum dwarf_source_language): Likewise.
23320         * dwarf2out.c (int_loc_descriptor): Add cast to enum type.
23321         (add_calling_convention_attribute): Likewise.
23322         * fold-const.c (fold_undefer_overflow_warnings): Add cast to enum type.
23323         (combine_comparisons): Change compcode to int.  Add cast to enum type.
23324         * genrecog.c (maybe_both_true_2): Change c to int.
23325         (write_switch): Likewise.  Add cast to enum type.
23326         * gimplify.c (gimplify_omp_for): Handle return values from
23327         gimplify_expr using MIN rather than bitwise or.
23328         (gimplify_expr): Add cast to enum type.
23329         * ipa-prop.c (update_jump_functions_after_inlining): Change
23330         IPA_BOTTOM to IPA_JF_UNKNOWN.
23331         * ira.c (setup_class_subset_and_memory_move_costs): Change mode to int.
23332         Add casts to enum type.
23333         (setup_cover_and_important_classes): Change cl to int.  Add casts
23334         to enum type.
23335         (setup_class_translate): Change cl and mode to int.
23336         (ira_init_once): Change mode to int.
23337         (free_register_move_costs): Likewise.
23338         (setup_prohibited_mode_move_regs): Add casts to enum type.
23339         * langhooks.c (add_builtin_function_common): Rework assertion that
23340         value fits bitfield.
23341         * mcf.c (add_fixup_edge): Change type parameter to edge_type.
23342         * omega.c (omega_do_elimination): Avoid math on enum types.
23343         * optabs.c (expand_vec_shift_expr): Remove casts to int.
23344         * opts.c (set_debug_level): Change 2 to enum constant.  Use new
23345         int local to handle integral_argment value.
23346         * regmove.c (try_auto_increment): Change PUT_MODE to
23347         PUT_REG_NOTE_KIND.
23348         * reload.c (push_secondary_reload): Add casts to enum type.
23349         (secondary_reload_class, find_valid_class): Likewise.
23350         * reload1.c (emit_input_reload_insns): Likewise.
23351         * rtl.h (NOTE_VAR_LOCATION_STATUS): Likewise.
23352         * sel-sched.c (init_hard_regs_data): Change cur_mode to int.
23353         * sel-sched-ir.c (hash_with_unspec_callback): Change 0 to enum
23354         constant.
23355         * tree.c (build_common_builtin_nodes): Add casts to enum type.
23356         * tree-complex.c (complex_lattice_t): Typedef to int rather than
23357         enum type.
23358         (expand_complex_libcall): Add casts to enum type.
23359         * tree-into-ssa.c (get_ssa_name_ann): Change 0 to enum constant.
23360         * tree-vect-loop.c (vect_model_reduction_cost): Compare reduc_code
23361         with ERROR_MARK, not NUM_TREE_CODES.
23362         (vect_create_epilog_for_reduction): Likewise.
23363         (vectorizable_reduction): Don't initialize epiloc_reduc_code.
23364         When not using it, set it to ERROR_MARK rather than NUM_TREE_CODES.
23365         * tree-vect-patterns.c (vect_pattern_recog_1): Change vec_mode to
23366         enum machine_mode.
23367         * tree-vect-stmts.c (new_stmt_vec_info): Change 0 to
23368         vect_unused_in_loop.  Change 0 to loop_vect.
23369         * tree-vectorizer.c (vect_set_verbosity_level): Add casts to enum type.
23370         * var-tracking.c (get_init_value): Change return type to enum
23371         var_init_status.
23372         * vec.h (DEF_VEC_FUNC_P) [iterate]: Cast 0 to type T.
23373         * config/arm/arm.c (fp_model_for_fpu): Change to array to enum
23374         arm_fp_model.
23375         (arm_override_options): Add casts to enum type.
23376         (arm_emit_tls_decoration): Likewise.
23377         * config/i386/i386.c (ix86_function_specific_restore): Add casts
23378         to enum type.
23379         * config/i386/i386-c.c (ix86_pragma_target_parse): Likewise.
23380         * config/ia64/ia64.c (ia64_expand_compare): Change magic to int.
23381         * config/rs6000/rs6000.c (rs6000_override_options): Add casts to
23382         enum type.
23383         * config/s390/s390.c (code_for_builtin_64): Change to array of
23384         enum insn_code.
23385         (code_for_builtin_31): Likewise.
23386         (s390_expand_builtin): Change code_for_builtin to enum insn_code
23387         const *.
23388         * config/sparc/sparc.c (sparc_override_options): Change value
23389         field in struct code_model to enum cmodel.  In initializer change
23390         0 to NULL and add cast to enum type.
23391
23392         * c-typeck.c (build_modify_expr): Add lhs_origtype parameter.
23393         Change all callers.  Issue a -Wc++-compat warning using
23394         lhs_origtype if necessary.
23395         (convert_for_assignment): Issue -Wc++-compat warnings about
23396         invalid conversions to enum type on assignment.
23397         * c-common.h (build_modify_expr): Update declaration.
23398
23399 2009-04-24  Nick Clifton  <nickc@redhat.com>
23400
23401         * config/iq2000/iq2000.c (function_arg): Handle TImode values.
23402         (function_arg_advance): Likewise.
23403         * config/iq2000/iq2000.md (movsi_internal2): Fix the length of the
23404         5th alternative.
23405
23406 2009-04-24  Andreas Krebbel  <krebbel1@de.ibm.com>
23407
23408         * config/s390/constraints.md ('I', 'J'): Fix condition.
23409
23410 2009-04-24  Diego Novillo  <dnovillo@google.com>
23411
23412         * gengtype-parse.c (parse_error): Add newline after message.
23413
23414 2009-04-24  H.J. Lu  <hongjiu.lu@intel.com>
23415
23416         * config/i386/sse.md (avxmodesuffixs): Removed.
23417         (*avx_pinsr<avxmodesuffixs>): Renamed to ...
23418         (*avx_pinsr<ssevecsize>): This.
23419
23420 2009-04-24  Bernd Schmidt  <bernd.schmidt@analog.com>
23421
23422         * loop-iv.c (replace_single_def_regs): Look for REG_EQUAL notes;
23423         follow chains of regs with a single definition, and allow expressions
23424         that are function_invariant_p.
23425         (simple_rhs_p): Allow expressions that are function_invariant_p.
23426
23427 2009-04-24  Paolo Bonzini  <bonzini@gnu.org>
23428
23429         PR middle-end/39867
23430         * fold-const.c (fold_cond_expr_with_comparison): When folding
23431         > and >= to MAX, make sure the MAX uses the same type as the
23432         comparison's operands.
23433
23434 2009-04-24  Nick Clifton  <nickc@redhat.com>
23435
23436         * config/frv/frv.c (frv_frame_access): Do not use reg+reg
23437         addressing for DImode accesses.
23438         (frv_print_operand_address): Handle PLUS case.
23439         * config/frv/frv.h (FIXED_REGISTERS): Mark link register as fixed.
23440
23441 2009-04-24  Jakub Jelinek  <jakub@redhat.com>
23442
23443         PR rtl-optimization/39794
23444         * alias.c (canon_true_dependence): Add x_addr argument.
23445         * rtl.h (canon_true_dependence): Adjust prototype.
23446         * cse.c (check_dependence): Adjust canon_true_dependence callers.
23447         * cselib.c (cselib_invalidate_mem): Likewise.
23448         * gcse.c (compute_transp): Likewise.
23449         * dse.c (scan_reads_nospill): Likewise.
23450         (record_store, check_mem_read_rtx): Likewise.  For non-const-or-frame
23451         addresses pass base->val_rtx as mem_addr, for const-or-frame addresses
23452         canon_base_addr of the group, plus optional offset.
23453         (struct group_info): Rename canon_base_mem to
23454         canon_base_addr.
23455         (get_group_info): Set canon_base_addr to canon_rtx of base, not
23456         canon_rtx of base_mem.
23457
23458 2009-04-23  Paolo Bonzini  <bonzini@gnu.org>
23459
23460         * config/sh/sh.c (sh_expand_prologue, sh_expand_epilogue):
23461         Use memory_address_p instead of GO_IF_LEGITIMATE_ADDRESS.
23462
23463 2009-04-23  Ulrich Weigand  <Ulrich.Weigand@de.ibm.com>
23464
23465         * config/spu/spu-builtins.h: Delete file.
23466
23467         * config/spu/spu.h (enum spu_builtin_type): Move here from
23468         spu-builtins.h.
23469         (struct spu_builtin_description): Likewise.  Add GTY marker.
23470         Do not use enum spu_function_code or enum insn_code.
23471         (spu_builtins): Add extern declaration.
23472
23473         * config/spu/spu.c: Do not include "spu-builtins.h".
23474         (enum spu_function_code, enum spu_builtin_type_index,
23475         V16QI_type_node, V8HI_type_node, V4SI_type_node, V2DI_type_node,
23476         V4SF_type_node, V2DF_type_node, unsigned_V16QI_type_node,
23477         unsigned_V8HI_type_node, unsigned_V4SI_type_node,
23478         unsigned_V2DI_type_node): Move here from spu-builtins.h.
23479         (spu_builtin_types): Make static.  Add GTY marker.
23480         (spu_builtins): Add extern declaration with GTY marker.
23481         Include "gt-spu.h".
23482
23483         * config/spu/spu-c.c: Do not include "spu-builtins.h".
23484         (spu_resolve_overloaded_builtin): Do not use spu_function_code.
23485         Check programmatically whether all parameters are scalar.
23486
23487         * config/spu/t-spu-elf (spu.o, spu-c.o): Update dependencies.
23488
23489 2009-04-23  Eric Botcazou  <ebotcazou@adacore.com>
23490
23491         * gimplify.c (gimplify_modify_expr_rhs) <VAR_DECL>: Do not do a direct
23492         assignment from the constructor either if the target is volatile.
23493
23494 2009-04-23  Daniel Jacobowitz  <dan@codesourcery.com>
23495
23496         * config/arm/arm.md (insv): Do not share operands[0].
23497
23498 2009-04-23  Nathan Sidwell  <nathan@codesourcery.com>
23499
23500         * config/vxlib-tls.c (active_tls_threads): Delete.
23501         (delete_hook_installed): New.
23502         (tls_delete_hook): Don't delete the delete hook.
23503         (tls_destructor): Delete it here.
23504         (__gthread_set_specific): Adjust installing the delete hook.
23505         (tls_delete_hook): Use __gthread_enter_tsd_dtor_context and
23506         __gthread_leave_tsd_dtor_context.
23507
23508 2009-04-23  Rafael Avila de Espindola  <espindola@google.com>
23509
23510         * c-format.c (gcc_tdiag_char_table): Add support for %E.
23511
23512 2009-04-23  Uros Bizjak  <ubizjak@gmail.com>
23513
23514         * config/alpha/alpha.c (alpha_legitimize_reload_address): Add cast to
23515         enum type.
23516         (alpha_rtx_costs): Ditto.
23517         (emit_unlikely_jump): Use add_reg_note.
23518         (emit_frame_store_1): Ditto.
23519         (alpha_expand_prologue): Ditto.
23520         (alpha_expand_builtin): Change 0 to EXPAND_NORMAL in function call.
23521         * config/alpha/alpha.c (Unicos/Mk address splitter): Use add_reg_note.
23522
23523 2009-04-23  Nick Clifton  <nickc@redhat.com>
23524
23525         * config/v850/v850.md (epilogue): Remove suppressed code.
23526         (return): Rename to return_simple and remove test of frame size.
23527         * config/v850/v850.c (expand_epilogue): Rename call to gen_return
23528         to gen_return_simple.
23529
23530 2009-04-22  Jing Yu  <jingyu@google.com>
23531
23532         PR testsuite/39781
23533         * config/arm/arm.h: Define HANDLE_PRAGMA_PACK_PUSH_POP.
23534
23535 2009-04-22  Andrew Pinski  <andrew_pinski@playstation.sony.com>
23536
23537         PR C/31499
23538         * c-typeck.c (process_init_element): Treat VECTOR_TYPE like ARRAY_TYPE
23539         and RECORD_TYPE/UNION_TYPE.  When outputing the actual element and the
23540         value is a VECTOR_CST, the element type is the element type of the
23541         vector.
23542
23543 2009-04-22  DJ Delorie  <dj@redhat.com>
23544
23545         * config/m32c/m32c.h: Update GTY annotations to new syntax.
23546
23547 2009-04-22  Jakub Jelinek  <jakub@redhat.com>
23548
23549         * alias.c (find_base_term): Move around LO_SUM case, so that
23550         CONST falls through into PLUS/MINUS handling.
23551
23552         PR c/39855
23553         * fold-const.c (fold_binary) <case LSHIFT_EXPR>: When optimizing
23554         into 0, use omit_one_operand.
23555
23556 2009-04-23  Ben Elliston  <bje@au.ibm.com>
23557
23558         * config/rs6000/linux-unwind.h (get_regs): Remove type
23559         puns. Change the type of `pc' to an array of unsigned ints and
23560         update all users.  Constify frame24.
23561
23562 2009-04-22  DJ Delorie  <dj@redhat.com>
23563
23564         * config/m32c/m32c.c (m32c_special_page_vector_p): Move
23565         declarations before code.
23566         (current_function_special_page_vector): Likewise.
23567         (m32c_expand_insv): Silence a warning.
23568
23569 2009-04-21  Taras Glek  <tglek@mozilla.com>
23570
23571         * alias.c: Update GTY annotations to new syntax.
23572         * basic-block.h: Likewise.
23573         * bitmap.h: Likewise.
23574         * c-common.h: Likewise.
23575         * c-decl.c: Likewise.
23576         * c-parser.c: Likewise.
23577         * c-pragma.c: Likewise.
23578         * c-tree.h: Likewise.
23579         * cfgloop.h: Likewise.
23580         * cgraph.h: Likewise.
23581         * config/alpha/alpha.c: Likewise.
23582         * config/arm/arm.h: Likewise.
23583         * config/avr/avr.h: Likewise.
23584         * config/bfin/bfin.c: Likewise.
23585         * config/cris/cris.c: Likewise.
23586         * config/darwin.c: Likewise.
23587         * config/frv/frv.c: Likewise.
23588         * config/i386/i386.c: Likewise.
23589         * config/i386/i386.h: Likewise.
23590         * config/i386/winnt.c: Likewise.
23591         * config/ia64/ia64.h: Likewise.
23592         * config/iq2000/iq2000.c: Likewise.
23593         * config/mips/mips.c: Likewise.
23594         * config/mmix/mmix.h: Likewise.
23595         * config/pa/pa.c: Likewise.
23596         * config/pa/pa.h: Likewise.
23597         * config/rs6000/rs6000.c: Likewise.
23598         * config/s390/s390.c: Likewise.
23599         * config/sparc/sparc.c: Likewise.
23600         * config/xtensa/xtensa.c: Likewise.
23601         * cselib.h: Likewise.
23602         * dbxout.c: Likewise.
23603         * dwarf2out.c: Likewise.
23604         * except.c: Likewise.
23605         * except.h: Likewise.
23606         * fixed-value.h: Likewise.
23607         * function.c: Likewise.
23608         * function.h: Likewise.
23609         * gimple.h: Likewise.
23610         * integrate.c: Likewise.
23611         * optabs.c: Likewise.
23612         * output.h: Likewise.
23613         * real.h: Likewise.
23614         * rtl.h: Likewise.
23615         * stringpool.c: Likewise.
23616         * tree-data-ref.c: Likewise.
23617         * tree-flow.h: Likewise.
23618         * tree-scalar-evolution.c: Likewise.
23619         * tree-ssa-address.c: Likewise.
23620         * tree-ssa-alias.h: Likewise.
23621         * tree-ssa-operands.h: Likewise.
23622         * tree.c: Likewise.
23623         * tree.h: Likewise.
23624         * varasm.c: Likewise.
23625         * varray.h: Likewise.
23626         * vec.h: Likewise.
23627         * coretypes.h: Do not define GTY macro if it is already defined.
23628         * doc/gty.texi: Update GTY documentation to new syntax.
23629         * gengtype-lex.l: Enforce attribute-like syntax for GTY
23630         annotations on structs.
23631         * gengtype-parse.c: Likewise.
23632
23633 2009-04-22  Mark Heffernan  <meheff@google.com>
23634
23635         * gcc.c (LINK_COMMAND_SPEC): Link with gcov with -fprofile-generate=.
23636
23637 2009-04-22  Kazu Hirata  <kazu@codesourcery.com>
23638
23639         * config/arm/arm.c (arm_rtx_costs_1): Use power_of_two_operand
23640         where appropriate.
23641
23642 2009-04-22  Kazu Hirata  <kazu@codesourcery.com>
23643
23644         * config/arm/arm.c (arm_size_rtx_costs): Treat a PLUS with a shift
23645         the same as a PLUS without a shift.  Increase the cost of a
23646         CONST_INT in MULT.
23647
23648 2009-04-22  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
23649
23650         * Makefile.in: Update dependencies.
23651         * errors.c (warning): Remove unused parameter 'opt'. Returns 'void'.
23652         * errors.h: Remove bogus comment about compatibility.
23653         (warning): Update declaration.
23654         * genautomata.c: Update all calls to warning.
23655         * gimple.c: Do not include errors.h. Include toplev.h.
23656         * tree-ssa-structalias.c: Do not include errors.h.
23657         * omega.c: Likewise.
23658         * tree-ssa-reassoc.c: Likewise.
23659         * config/spu/spu-c.c: Likewise.
23660         * config/spu/t-spu-elf: Update dependencies.
23661
23662 2009-04-22  Richard Guenther  <rguenther@suse.de>
23663
23664         PR tree-optimization/39824
23665         * tree-ssa-ccp.c (fold_const_aggregate_ref): For INDIRECT_REFs
23666         make sure the types are compatible.
23667
23668 2009-04-22  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
23669
23670         PR c++/14875
23671         * c-common.c (c_parse_error): Take a token_flags parameter.
23672         Use token_type for the token type instead.
23673         Pass token_flags to cpp_type2name.
23674         * c-common.h (c_parse_error): Update declaration.
23675         * c-parser.c (c_parser_error): Pass 0 as token flags.
23676
23677 2009-04-22  Andrey Belevantsev  <abel@ispras.ru>
23678
23679         PR rtl-optimization/39580
23680         * sel-sched-ir.c (insert_in_history_vect): Remove incorrect gcc_assert.
23681
23682 2009-04-22  Ulrich Weigand  <Ulrich.Weigand@de.ibm.com>
23683
23684         * function.c (expand_function_end): Do not emit a jump to the "naked"
23685         return label for fall-through returns.
23686         * except.c (sjlj_emit_function_exit): Always place the call to the
23687         unregister function at the location installed by expand_function_end.
23688
23689 2009-04-22  Richard Guenther  <rguenther@suse.de>
23690
23691         PR tree-optimization/39845
23692         * tree-switch-conversion.c (build_arrays): Add new referenced vars.
23693         (gen_inbound_check): Likewise.
23694
23695 2009-04-22  Nathan Sidwell  <nathan@codesourcery.com>
23696
23697         * gthr-vxworks.h (struct __gthread_once_t): Add alignment and
23698         padding for PPC.
23699         (__GTHREAD_ONCE_INIT): Adjust ppc initializer.
23700         * config/vxlib.c (__gthread_once): Add race guard for PPC.
23701
23702 2009-04-22  Paolo Bonzini  <bonzini@gnu.org>
23703
23704         * config/sh/sh.c (shift_insns_rtx, shiftcosts, gen_shifty_op,
23705         sh_dynamicalize_shift_p, shl_and_scr_length): Truncate
23706         shift counts to avoid out-of-bounds array accesses.
23707
23708 2009-04-22  Paolo Bonzini  <bonzini@gnu.org>
23709
23710         * config/sparc/sparc.h (POINTER_SIZE): Fix comment.
23711         (Pmode): Move above.
23712
23713 2009-04-22  Uros Bizjak  <ubizjak@gmail.com>
23714
23715         * config/alpha/alpha.c: Use REG_P, MEM_P, CONST_INT_P, JUMP_P,
23716         NONJUMP_INSN_P, CALL_P, LABEL_P and NOTE_P predicates instead of
23717         GET_CODE macro.  Use IN_RANGE macro where appropriate.
23718         * config/alpha/alpha.h: Ditto.
23719         * config/alpha/alpha.md: Ditto.
23720         * config/alpha/constraints.md: Ditto.
23721         * config/alpha/predicates.md: Ditto.
23722
23723 2009-04-22  Paolo Bonzini  <bonzini@gnu.org>
23724
23725         * defaults.h (GO_IF_MODE_DEPENDENT_ADDRESS): Provide empty default.
23726         * config/frv/frv.h (GO_IF_MODE_DEPENDENT_ADDRESS): Delete.
23727         * config/s390/s390.h (GO_IF_MODE_DEPENDENT_ADDRESS): Delete.
23728         * config/m32c/m32c.h (GO_IF_MODE_DEPENDENT_ADDRESS): Delete.
23729         * config/spu/spu.h (GO_IF_MODE_DEPENDENT_ADDRESS): Delete.
23730         * config/i386/i386.h (GO_IF_MODE_DEPENDENT_ADDRESS): Delete.
23731         * config/sh/sh.h (GO_IF_MODE_DEPENDENT_ADDRESS): Delete.
23732         * config/pdp11/pdp11.h (GO_IF_MODE_DEPENDENT_ADDRESS): Delete.
23733         * config/avr/avr.h (GO_IF_MODE_DEPENDENT_ADDRESS): Delete.
23734         * config/crx/crx.h (GO_IF_MODE_DEPENDENT_ADDRESS): Delete.
23735         * config/fr30/fr30.h (GO_IF_MODE_DEPENDENT_ADDRESS): Delete.
23736         * config/m68hc11/m68hc11.h (GO_IF_MODE_DEPENDENT_ADDRESS): Delete.
23737         * config/cris/cris.h (GO_IF_MODE_DEPENDENT_ADDRESS): Delete.
23738         * config/iq2000/iq2000.h (GO_IF_MODE_DEPENDENT_ADDRESS): Delete.
23739         * config/mn10300/mn10300.h (GO_IF_MODE_DEPENDENT_ADDRESS): Delete.
23740         * config/ia64/ia64.h (GO_IF_MODE_DEPENDENT_ADDRESS): Delete.
23741         * config/m68k/m68k.h (GO_IF_MODE_DEPENDENT_ADDRESS): Delete.
23742         * config/picochip/picochip.h (GO_IF_MODE_DEPENDENT_ADDRESS): Delete.
23743         * config/arc/arc.h (GO_IF_MODE_DEPENDENT_ADDRESS): Delete.
23744         * config/mcore/mcore.h (GO_IF_MODE_DEPENDENT_ADDRESS): Delete.
23745         * config/score/score.h (GO_IF_MODE_DEPENDENT_ADDRESS): Delete.
23746         * config/arm/arm.h (GO_IF_MODE_DEPENDENT_ADDRESS): Delete.
23747         * config/pa/pa.h (GO_IF_MODE_DEPENDENT_ADDRESS): Delete.
23748         * config/mips/mips.h (GO_IF_MODE_DEPENDENT_ADDRESS): Delete.
23749         * config/v850/v850.h (GO_IF_MODE_DEPENDENT_ADDRESS): Delete.
23750         * config/mmix/mmix.h (GO_IF_MODE_DEPENDENT_ADDRESS): Delete.
23751         * config/bfin/bfin.h (GO_IF_MODE_DEPENDENT_ADDRESS): Delete.
23752
23753 2009-04-22  Laurynas Biveinis  <laurynas.biveinis@gmail.com>
23754
23755         * cfghooks.c (tidy_fallthru_edges): Remove find_basic_blocks
23756         references from comments.
23757         * cfgbuild.c (count_basic_blocks): Delete.
23758         (find_basic_blocks_1): Delete.
23759         (find_basic_blocks): Delete.
23760         * except.c (finish_eh_generation): Make static.  Move comment from
23761         except.h here.  Remove find_basic_blocks references from comments.
23762         * except.h (finish_eh_generation): Delete.
23763         * basic-block.h (find_basic_blocks): Delete.
23764         * config/sh/sh.c (sh_output_mi_thunk): Delete a "#if 0" block.
23765
23766 2009-04-22  Dave Korn  <dave.korn.cygwin@gmail.com>
23767
23768         * sdbout.c (sdbout_symbol):  Pass VOIDmode to eliminate_regs.
23769         (sdbout_parms):  Likewise.
23770
23771 2009-04-21  Kaz Kojima  <kkojima@gcc.gnu.org>
23772
23773         * config/sh/sh.c (prepare_cbranch_operands): Use
23774         LAST_AND_UNUSED_RTX_CODE instead of CODE_FOR_nothing.
23775         (expand_cbranchdi4): Likewise.
23776         (from_compare): Add cast to enum type.
23777         (expand_cbranchsi4): Use add_reg_note.
23778         (output_stack_adjust, push, pop, sh_expand_prologue): Likewise.
23779         (sh_insn_length_adjustment): Use sh_cpu_attr instead of sh_cpu.
23780         (sh_initialize_trampoline): Change 0 to LCT_NORMAL in function call.
23781         (sh_expand_builtin): Change 0 to EXPAND_NORMAL in function call.
23782         * config/sh/sh.md (cbranchsi4): Use LAST_AND_UNUSED_RTX_CODE
23783         instead of CODE_FOR_nothing.
23784         (cbranchdi4): Likewise.  Fix the order of arguments for
23785         gen_rtx_fmt_ee.
23786         (push_fpscr): Use add_reg_note.
23787         (pop_fpscr, movdf_i4+1, reload_outdf__RnFRm+3, reload_outdf__RnFRm+4,
23788         reload_outdf__RnFRm+5, fpu_switch+1, fpu_switch+2): Likewise.
23789
23790 2009-04-21  Joseph Myers  <joseph@codesourcery.com>
23791
23792         * ABOUT-GCC-NLS, ChangeLog, ChangeLog-1997, ChangeLog-1998,
23793         ChangeLog-1999, ChangeLog-2000, ChangeLog-2001, ChangeLog-2002,
23794         ChangeLog-2003, ChangeLog-2004, ChangeLog-2005, ChangeLog-2006,
23795         ChangeLog-2007, ChangeLog-2008, ChangeLog.dataflow, ChangeLog.lib,
23796         ChangeLog.ptr, ChangeLog.tree-ssa, ChangeLog.tuples, FSFChangeLog,
23797         FSFChangeLog.10, FSFChangeLog.11, LANGUAGES, ONEWS, acinclude.m4,
23798         config/alpha/gnu.h, config/alpha/libgcc-alpha-ldbl.ver,
23799         config/alpha/t-osf4, config/alpha/t-vms, config/alpha/va_list.h,
23800         config/alpha/x-vms, config/arc/t-arc,
23801         config/arm/README-interworking, config/arm/arm-c.c,
23802         config/arm/gentune.sh, config/arm/libgcc-bpabi.ver,
23803         config/arm/t-arm, config/arm/t-arm-elf, config/arm/t-arm-softfp,
23804         config/arm/t-bpabi, config/arm/t-linux, config/arm/t-linux-eabi,
23805         config/arm/t-netbsd, config/arm/t-pe, config/arm/t-strongarm-elf,
23806         config/arm/t-symbian, config/arm/t-vxworks, config/arm/t-wince-pe,
23807         config/avr/t-avr, config/bfin/elf.h, config/bfin/libgcc-bfin.ver,
23808         config/bfin/linux.h, config/bfin/t-bfin, config/bfin/t-bfin-elf,
23809         config/bfin/t-bfin-linux, config/bfin/t-bfin-uclinux,
23810         config/bfin/uclinux.h, config/cris/mulsi3.asm, config/cris/t-cris,
23811         config/cris/t-elfmulti, config/crx/t-crx,
23812         config/darwin-ppc-ldouble-patch.def, config/darwin-sections.def,
23813         config/divmod.c, config/fr30/t-fr30, config/frv/libgcc-frv.ver,
23814         config/frv/t-frv, config/frv/t-linux, config/h8300/genmova.sh,
23815         config/h8300/t-h8300, config/i386/athlon.md,
23816         config/i386/darwin-libgcc.10.4.ver,
23817         config/i386/darwin-libgcc.10.5.ver, config/i386/libgcc-glibc.ver,
23818         config/i386/mach.h, config/i386/netbsd.h, config/i386/t-crtpc,
23819         config/i386/t-cygming, config/i386/t-cygwin, config/i386/t-i386,
23820         config/i386/t-linux64, config/i386/t-nwld,
23821         config/i386/t-rtems-i386, config/i386/t-sol2-10,
23822         config/i386/x-mingw32, config/ia64/div.md, config/ia64/elf.h,
23823         config/ia64/ia64.opt, config/ia64/libgcc-glibc.ver,
23824         config/ia64/libgcc-ia64.ver, config/ia64/linux.h,
23825         config/ia64/sysv4.h, config/ia64/t-hpux, config/ia64/t-ia64,
23826         config/iq2000/abi, config/iq2000/lib2extra-funcs.c,
23827         config/iq2000/t-iq2000, config/libgcc-glibc.ver,
23828         config/m32r/libgcc-glibc.ver, config/m32r/t-linux,
23829         config/m32r/t-m32r, config/m68hc11/t-m68hc11,
23830         config/m68k/t-floatlib, config/m68k/t-linux, config/m68k/t-mlibs,
23831         config/m68k/t-uclinux, config/mcore/t-mcore,
23832         config/mcore/t-mcore-pe, config/mips/20kc.md, config/mips/4130.md,
23833         config/mips/5400.md, config/mips/5500.md, config/mips/crti.asm,
23834         config/mips/crtn.asm, config/mips/irix-crti.asm,
23835         config/mips/irix-crtn.asm, config/mips/libgcc-mips16.ver,
23836         config/mips/mips-dsp.md, config/mips/mips-dspr2.md,
23837         config/mips/mips-fixed.md, config/mips/sb1.md,
23838         config/mips/sr71k.md, config/mips/t-elf, config/mips/t-gofast,
23839         config/mips/t-iris6, config/mips/t-isa3264,
23840         config/mips/t-libgcc-mips16, config/mips/t-linux64,
23841         config/mips/t-mips, config/mips/t-r3900, config/mips/t-rtems,
23842         config/mips/t-sb1, config/mips/t-sde, config/mips/t-sdemtk,
23843         config/mips/t-slibgcc-irix, config/mips/t-sr71k, config/mips/t-st,
23844         config/mips/t-vr, config/mips/t-vxworks, config/mmix/t-mmix,
23845         config/mn10300/t-linux, config/mn10300/t-mn10300,
23846         config/pa/pa32-regs.h, config/pa/t-hpux-shlib, config/pa/t-linux,
23847         config/pa/t-linux64, config/pa/t-pa64, config/pdp11/t-pdp11,
23848         config/picochip/libgccExtras/clzsi2.asm,
23849         config/picochip/t-picochip, config/rs6000/darwin-ldouble-format,
23850         config/rs6000/darwin-libgcc.10.4.ver,
23851         config/rs6000/darwin-libgcc.10.5.ver,
23852         config/rs6000/libgcc-ppc-glibc.ver, config/rs6000/ppc-asm.h,
23853         config/rs6000/t-aix43, config/rs6000/t-aix52,
23854         config/rs6000/t-darwin, config/rs6000/t-fprules,
23855         config/rs6000/t-fprules-fpbit, config/rs6000/t-linux64,
23856         config/rs6000/t-lynx, config/rs6000/t-netbsd,
23857         config/rs6000/t-ppccomm, config/rs6000/t-ppcendian,
23858         config/rs6000/t-ppcgas, config/rs6000/t-rs6000,
23859         config/rs6000/t-rtems, config/rs6000/t-spe,
23860         config/rs6000/t-vxworks, config/s390/libgcc-glibc.ver,
23861         config/score/t-score-elf, config/sh/divcost-analysis,
23862         config/sh/libgcc-glibc.ver, config/sh/t-netbsd, config/sh/t-sh,
23863         config/sh/t-sh64, config/sh/t-superh, config/sh/t-symbian,
23864         config/sparc/libgcc-sparc-glibc.ver, config/sparc/sol2-bi.h,
23865         config/sparc/sol2-gas.h, config/sparc/sol2-gld-bi.h,
23866         config/sparc/t-elf, config/sparc/t-linux64, config/sparc/t-sol2,
23867         config/stormy16/stormy-abi, config/stormy16/t-stormy16,
23868         config/t-darwin, config/t-libunwind, config/t-libunwind-elf,
23869         config/t-linux, config/t-lynx, config/t-slibgcc-elf-ver,
23870         config/t-slibgcc-sld, config/t-sol2, config/t-vxworks,
23871         config/udivmod.c, config/udivmodsi4.c, config/v850/t-v850,
23872         config/v850/t-v850e, config/xtensa/t-xtensa, diagnostic.def,
23873         gdbinit.in, glimits.h, gstab.h, gsyms.h, java/ChangeLog,
23874         java/ChangeLog.ptr, java/ChangeLog.tree-ssa, libgcc-std.ver,
23875         limitx.h, version.c, xcoff.h: Add copyright and license notices.
23876         * config/h8300/genmova.sh: Include copyright and license notices
23877         in generated output.
23878         * config/h8300/mova.md: Regenerate.
23879         * doc/install.texi2html: Include word "Copyright" in copyright
23880         notice and use name "Free Software Foundation, Inc.".
23881         * ChangeLog, ChangeLog-2000, ChangeLog-2001, ChangeLog-2002,
23882         ChangeLog-2003, ChangeLog-2004, ChangeLog-2005, ChangeLog-2006,
23883         ChangeLog-2007, ChangeLog-2008: Correct dates.
23884
23885 2009-04-21  Eric Botcazou  <ebotcazou@adacore.com>
23886
23887         * c-common.c (c_common_truthvalue_conversion): Use LOCATION to build
23888         NE_EXPR operations as well.
23889         * c-parser.c (c_parser_condition): Do not set location information on
23890         the condition.
23891         (c_parser_conditional_expression): Likewise.
23892         (c_parser_binary_expression): Set location information on operators.
23893         * c-typeck.c (build_unary_op) <TRUTH_NOT_EXPR>: Reset the location if
23894         TRUTH_NOT_EXPR has been folded.
23895         * fold-const.c (fold_truth_not_expr): Copy location information from
23896         the incoming expression to the outgoing one.
23897         * gimplify.c (shortcut_cond_r): Add locus parameter.  Pass it to
23898         recursive calls on the LHS of the operator but pass that of the
23899         operator to recursive calls on the RHS of the operator.  Set it
23900         on the COND_EXPR.
23901         (shortcut_cond_expr): Set the locus of the operator on the second
23902         COND_EXPR and that of the expression on the first in degenerate cases.
23903         Pass the locus of the expression to calls to shortcut_cond_r.
23904         Set the locus of the 'then' block on the associated jump, if any.
23905         (gimplify_boolean_expr): Add locus parameter.  Set it on the COND_EXPR.
23906         (gimplify_expr) <TRUTH_ANDIF_EXPR>: Pass the locus of the outer
23907         expression to call to gimplify_boolean_expr.
23908
23909 2009-04-21  Kai Tietz  <kai.tietz@onevision.com>
23910
23911         * config.gcc: Add additional configuration for
23912         i686-w64-mingw* and x86_64-w64-mingw* triplet.
23913         * config/i386/mingw-w64.h: New mingw-w64 specific header.
23914         (CPP_SPEC): Redefine for allowing -municode option.
23915         (STARTFILE_SPEC): Likewise.
23916         * config/i386/t-mingw-w64: New.
23917         * config/i386/mingw-w64.opt: New.
23918         (municode): Add new target option.
23919         * doc/invoke.texi (municode): Add documentation for new option.
23920
23921 2009-04-21  Ian Lance Taylor  <iant@google.com>
23922
23923         * config/rs6000/rs6000-c.c (altivec_resolve_overloaded_builtin):
23924         Correct test for number of arguments.
23925         * config/spu/spu-c.c (spu_resolve_overloaded_builtin): Likewise.
23926
23927 2009-04-21  Andreas Schwab  <schwab@linux-m68k.org>
23928
23929         * config/m68k/linux.h (FINALIZE_TRAMPOLINE): Use enum for second
23930         argument of emit_library_call.
23931
23932 2009-04-21  Richard Guenther  <rguenther@suse.de>
23933
23934         PR middle-end/39829
23935         * gimple.c (walk_stmt_load_store_addr_ops): Catch addresses
23936         inside VIEW_CONVERT_EXPRs.
23937
23938 2009-04-21  Martin Jambor  <mjambor@suse.cz>
23939
23940         * tree-switch-conversion.c (build_constructors): Split a long line.
23941         (constructor_contains_same_values_p): New function.
23942         (build_one_array): Create assigns of constants if possible, do not
23943         call mark_sym_for_renaming, call update_stmt.
23944         (build_arrays): Call make_ssa_name (create_tmp_var ()) instead of
23945         make_rename_temp.  Do not call mark_symbols_for_renaming, call
23946         update_stmt.
23947         (gen_def_assigns): Do not call mark_symbols_for_renaming or
23948         find_new_referenced_vars, call update_stmt.
23949         (gen_inbound_check): Use create_tmp_var and create ssa names manually
23950         instead of calling make_rename_temp.  Do not call
23951         find_new_referenced_vars or mark_symbols_for_renaming, call
23952         update_stmt.
23953
23954 2009-04-21  Richard Guenther  <rguenther@suse.de>
23955
23956         PR tree-optimization/39827
23957         * tree-ssa-phiprop.c (propagate_with_phi): Check SSA_NAME is in range.
23958         (tree_ssa_phiprop): Pass the correct array size.
23959
23960 2009-04-21  Uros Bizjak  <ubizjak@gmail.com>
23961
23962         * config/alpha/alpha.md (tune): Add cast to enum attr_tune.
23963
23964 2009-04-21  Manuel López-Ibáñez  <manu@gcc.gnu.org>
23965
23966         PR 16202
23967         * c-typeck.c (lvalue_p): Move declaration ...
23968         * c-common.h (lvalue_p): ... to here.
23969         * c-common.c (candidate_equal_p): New.
23970         (add_tlist): Use it.
23971         (merge_tlist): Use it.
23972         (warn_for_collisions_1): Likewise.
23973         (warning_candidate_p): Accept more candidates.
23974         (verify_tree): A warning candidate can be an expression. Use
23975         candidate_equal_p.
23976
23977 2009-04-21  Ben Elliston  <bje@au.ibm.com>
23978
23979         PR target/5267
23980         * doc/invoke.texi (RS/6000 and PowerPC Options): Add documentation
23981         for -mcall-eabi, -mcall-aixdesc, -mcall-freebsd and -mcall-openbsd
23982         options.  Remove -mcall-solaris documentation.
23983
23984 2009-04-21  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
23985
23986         PR c++/13358
23987         * doc/invoke.texi (-Wlong-long): Update description.
23988         * c-lex (interpret_integer): Only warn if there was no previous
23989         overflow and -Wlong-long is enabled.
23990         * c-decl.c (declspecs_add_type): Drop redundant flags.
23991         * c.opt (Wlong-long): Init to -1.
23992         * c-opts.c (sanitize_cpp_opts): Synchronize cpp's warn_long_long
23993         and front-end warn_long_long. Wlong-long only depends on other
23994         flags if it is uninitialized.
23995         * c-parser.c (disable_extension_diagnostics): warn_long_long is
23996         the same for CPP and FE.
23997         (restore_extension_diagnostics): Likewise.
23998
23999 2009-04-20  Ian Lance Taylor  <iant@google.com>
24000
24001         Fix enum conversions which are invalid in C++:
24002         * auto-inc-dec.c (attempt_change): Change 0 to SET in function call.
24003         * calls.c (store_one_arg): Change 0 to EXPAND_NORMAL in function call.
24004         * cse.c (hash_rtx_cb): Change 0 to VOIDmode in function call.
24005         * dbgcnt.c (dbg_cnt_set_limit_by_name): Add cast to enum type.
24006         * dbxout.c (dbxout_symbol): Change 0 to VOIDmode in function call.
24007         (dbxout_parms): Likewise.
24008         * df-core.c (df_set_flags): Change changeable_flags parameter to int.
24009         (df_clear_flags): Likewise.
24010         * df-problems.c (df_rd_bb_local_compute_process_def): Change
24011         top_flag parameter to int.
24012         (df_chain_create_bb_process_use): Likewise.
24013         (df_chain_add_problem): Change chain_flags parameter to unsigned int.
24014         Remove cast.
24015         * df-scan.c (df_ref_create): Change ref_flags parameter to int.
24016         (df_ref_create_structure, df_def_record_1): Likewise.
24017         (df_defs_record, df_uses_record, df_get_call_refs): Likewise.
24018         (df_notes_rescan): Change 0 to VOIDmode in function call.
24019         (df_get_call_refs, df_insn_refs_collect): Likewise.
24020         (df_bb_regs_collect): Likewise.
24021         (df_entry_block_defs_collect): Likewise.
24022         (df_exit_block_uses_collect): Likewise.
24023         * df.h: Update declarations.
24024         * double-int.c (double_int_divmod): Add cast to enum type.
24025         * dse.c (replace_inc_dec): Reverse parameters to gen_int_mode.
24026         * dwarf2out.c (new_reg_loc_descr): Add casts to enum type.
24027         (based_loc_descr): Likewise.
24028         (loc_descriptor_from_tree_1): Change first_op and second_op to
24029         enum dwarf_location_atom.  Add cast to enum type.
24030         * expmed.c (init_expmed): Change 0 to SET in function call.
24031         * expr.c (init_expr_target): Change 0 to VOIDmode in function call.
24032         (expand_expr_real_1): Change 0 to EXPAND_NORMAL in function call.
24033         (do_store_flag): Likewise.
24034         * fixed-value.h (struct fixed_value): Change mode to enum
24035         machine_mode.
24036         * function.c (assign_parms): Change 0 to VOIDmode in function call.
24037         * genautomata.c (insert_automaton_decl): Change 1 to INSERT in
24038         function call.
24039         (insert_insn_decl, insert_decl, insert_state): Likewise.
24040         (automata_list_finish): Likewise.
24041         * genrecog.c (process_define_predicate): Add cast to enum type.
24042         * gensupport.c (init_predicate_table): Add cast to enum type.
24043         * gimple.c (gimple_build_return): Change 0 to ERROR_MARK in
24044         function call.
24045         (gimple_build_call_1, gimple_build_label): Likewise.
24046         (gimple_build_goto, gimple_build_asm_1): Likewise.
24047         (gimple_build_switch_1, gimple_build_cdt): Likewise.
24048         * gimple.h (GIMPLE_CHECK): Change 0 to ERROR_MARK in function call.
24049         (enum fallback): Rename from enum fallback_t.
24050         (fallback_t): Typedef as int.
24051         * gimple-low.c (lower_builtin_setjmp): Change TSI_SAME_STMT to
24052         GSI_SAME_STMT in function call.
24053         * ira.c (setup_class_subset_and_memory_move_costs): Add casts to
24054         enum type.
24055         (setup_reg_class_relations): Likewise.
24056         (setup_reg_class_nregs): Change cl to int.  Add casts to enum type.
24057         (setup_prohibited_class_mode_regs): Add cast to enum type.
24058         (setup_prohibited_mode_move_regs): Likewise.
24059         * ira-costs.c (record_reg_classes): Change rclass to enum reg_class.
24060         (record_address_regs): Change i to enum reg_class.
24061         * lists.c (alloc_EXPR_LIST): Add cast to enum type.
24062         * machmode.h (GET_MODE_CLASS): Cast value to enum mode_class.
24063         (GET_MODE_WIDER_MODE): Cast value to enum machine_mode.
24064         (GET_MODE_2XWIDER_MODE): Likewise.
24065         (GET_CLASS_NARROWEST_MODE): Likewise.
24066         * omp-low.c (expand_omp_for): Add cast to enum type.
24067         * optabs.c (debug_optab_libfuncs): Add casts to enum type.
24068         * opts.c (enable_warning_as_error): Change kind to diagostic_t.
24069         * postreload.c (reload_cse_simplify_operands): Change rclass local
24070         to enum reg_class.
24071         * predict.c (combine_predictions_for_insn): Change best_predictor
24072         and predictor to enum br_predictor.
24073         (combine_predictions_for_bb): Likewise.
24074         (build_predict_expr): Change assignment to PREDICT_EXPR_OUTCOME to
24075         use SET_PREDICT_EXPR_OUTCOME.
24076         * real.c (real_arithmetic): Change icode to code in function call.
24077         * reginfo.c (init_move_cost): Add casts to enum type.
24078         (init_reg_sets_1, init_fake_stack_mems): Likewise.
24079         * regmove.c (regclass_compatible_p): Change class0 and class1 to
24080         enum reg_class.
24081         * reload.c (find_valid_class): Add casts to enum type.
24082         (push_reload): Change 0 to NO_REGS in function call.
24083         (find_reloads): Change this_alternative to array of enum
24084         reg_class.  Remove some now-unnecessary casts.
24085         (make_memloc): Change 0 to VOIDmode in function call.
24086         * reload1.c (reload): Change 0 to VOIDmode in function call.
24087         (eliminate_regs_1, elimination_effects): Likewise.
24088         (eliminate_regs_in_insn): Likewise.
24089         (emit_input_reload_insns): Add cast to enum type.
24090         (delete_output_reload): Change 0 to VOIDmode in function call.
24091         * reorg.c (insn_sets_resource_p): Convert include_delayed_effects
24092         to enum type in function call.
24093         * tree.h (PREDICT_EXPR_OUTCOME): Add cast to enum type.
24094         (SET_PREDICT_EXPR_OUTCOME): Define.
24095         * tree-dump.c (get_dump_file_info): Change phase parameter to int.
24096         (get_dump_file_name, dump_begin, dump_enabled_p): Likewise.
24097         (dump_initialized_p, dump_flag_name, dump_end): Likewise.
24098         (dump_function): Likewise.
24099         * tree-dump.h: Update declarations.
24100         * tree-pass.h: Update declarations.
24101         * varasm.c (assemble_integer): Change mclass to enum mode_class.
24102         * config/arm/arm.c (thumb_legitimize_reload_address): Add cast to
24103         enum type.
24104         (arm_rtx_costs_1): Correct parenthesization.
24105         (arm_rtx_costs): Add casts to enum type.
24106         (adjacent_mem_locations): Reverse arguments to const_ok_for_op.
24107         (vfp_emit_fstmd): Use add_rg_note.
24108         (emit_multi_reg_push, emit_sfm): Likewise.
24109         (thumb_set_frame_pointer): Likewise.
24110         (arm_expand_prologue): Likewise.
24111         (arm_regno_class): Change return type to enum reg_class.
24112         (thumb1_expand_prologue): Use add_reg_note.
24113         * config/arm/arm-protos.h (arm_regno_class): Update declaration.
24114         * config/arm/arm.h (INITIALIZE_TRAMPOLINE): Change 0 to LCT_NORMAL
24115         in function call.
24116         * config/arm/gentune.sh: Add cast to enum type.
24117         * config/arm/arm-tune.md: Rebuild.
24118         * config/i386/i386.c (ix86_expand_prologue): Use add_reg_note.
24119         (ix86_split_fp_branch, predict_jump): Likewise.
24120         (ix86_expand_multi_arg_builtin): Change sub_code from enum
24121         insn_code to enum rtx_code.
24122         (ix86_builtin_vectorized_function): Add cast to enum type.
24123         * config/i386/i386.md (truncdfsf2): Change slot to enum
24124         ix86_stack_slot.
24125         (truncxf<mode>2, isinf<mode>2): Likewise.
24126         * config/i386/i386-c.c (ix86_pragma_target_parse): Add cast to
24127         enum type.
24128         * config/ia64/ia64.c (ia64_split_tmode_move): Use add_reg_note.
24129         (spill_restore_mem, do_spill, ia64_expand_prologue): Likewise.
24130         (insert_bundle_state): Change 1 to INSERT in function call.
24131         (ia64_add_bundle_selector_before): Likewise.
24132         * config/ia64/ia64.md (cpu attr): Add cast to enum type.
24133         (save_stack_nonlocal): Change 0 to LCT_NORMAL in function call.
24134         (restore_stack_nonlocal): Likewise.
24135         * config/mips/mips.h (MIPS_ICACHE_SYNC): Change 0 to LCT_NORMAL in
24136         function call.
24137         * config/mips/mips.c (mips_binary_cost): Change 0 to SET in
24138         function call.
24139         (mips_rtx_costs): Likewise.
24140         (mips_override_options): Add casts to enum type.
24141         * config/mips/sdemtk.h (MIPS_ICACHE_SYNC): Change 0 to LCT_NORMAL
24142         in function call.
24143         * config/pa/pa.c (legitimize_pic_address): Use add_reg_note.
24144         (store_reg, set_reg_plus_d): Likewise.
24145         (hppa_expand_prologue, hppa_profile_hook): Likewise.
24146         * config/rs6000/rs6000.c (rs6000_init_hard_regno_mode_ok): Add
24147         cast to enum type.
24148         (altivec_expand_vec_set_builtin): Change 0 to EXPAND_NORMAL in
24149         function call.
24150         (emit_unlikely_jump): Use add_reg_note.
24151         (rs6000_emit_allocate_stack): Likewise.
24152         (rs6000_frame_related, rs6000_emit_prologue): Likewise.
24153         (output_toc): Change 1 to INSERT in function call.
24154         (output_profile_hook): Change 0 to LCT_NORMAL in function call.
24155         (rs6000_initialize_trampoline): Likewise.
24156         (rs6000_init_dwarf_reg_sizes_extra): Change 0 to EXPAND_NORMAL in
24157         function call.
24158         * config/s390/s390.c (s390_rtx_costs): Add cast to enum type.
24159         (s390_expand_movmem): Change 0 to OPTAB_DIRECT in function call.
24160         (s390_expand_setmem, s390_expand_cmpmem): Likewise.
24161         (save_gprs): Use add_reg_note.
24162         (s390_emit_prologue): Likewise.
24163         (s390_expand_builtin): Change 0 to EXPAND_NORMAL in function call.
24164         * config/sparc/sparc.c (sparc_expand_prologue): Use add_reg_note.
24165         (sparc_fold_builtin): Add cast to enum type.
24166         * config/spu/spu.c (spu_emit_branch_or_set): Change ior_code to
24167         enum insn_code.
24168         (spu_expand_prologue): Use add_reg_note.
24169         (expand_builtin_args): Change 0 to EXPAND_NORMAL in function call.
24170
24171 2009-04-20  Ian Lance Taylor  <iant@google.com>
24172
24173         * c-parser.c (c_parser_attributes): Change VEC back to tree list.
24174         (c_parser_postfix_expression_after_primary): Get VEC for list of
24175         arguments.  Get original types of arguments.  Call
24176         build_function_call_vec.
24177         (cached_expr_list_1, cached_expr_list_2): New static variables.
24178         (c_parser_expr_list): Change return type to VEC *.  Add
24179         p_orig_types parameter.  Change all callers.
24180         (c_parser_release_expr): New static function.
24181         (c_parser_vec_to_tree_list): New static function.
24182         * c-typeck.c (build_function_call): Rewrite to build a VEC and
24183         call build_function_call_vec.
24184         (build_function_call_vec): New function, based on old
24185         build_function_call.
24186         (convert_arguments): Remove nargs and argarray parameters.  Change
24187         values to a VEC.  Add origtypes parameter.
24188         (build_modify_expr): Add rhs_origtype parameter.  Change all callers.
24189         (convert_for_assignment): Add origtype parameter.  Change all
24190         callers.  If warn_cxx_compat, check for conversion to an enum
24191         type when calling a function.
24192         (store_init_value): Add origtype parameter.  Change all callers.
24193         (digest_init): Likewise.
24194         (struct init_node): Add origtype field.
24195         (add_pending_init): Add origtype parameter.  Change all callers.
24196         (output_init_element): Likewise.
24197         (output_pending_init_elements): Pass origtype from init_node to
24198         output_init_element.
24199         (process_init_element): Pass origtype from c_expr to
24200         output_init_element.
24201         (c_finish_return): Add origtype parameter.  Change all callers.
24202         * c-common.c (sync_resolve_size): Change params to VEC *.  Change
24203         caller.
24204         (sync_resolve_params): Likewise.
24205         (sync_resolve_return): Change params to first_param.  Change caller.
24206         (resolve_overloaded_builtins): Change params to VEC *.  Change
24207         callers.  Save first parameter around call to build_function_call_vec.
24208         * c-decl.c (finish_decl): Add origtype parameter.  Change all
24209         callers.  Call build_function_call_vec rather than
24210         build_function_call for cleanup.
24211         * c-tree.h: Update declarations.
24212         * c-common.h: Update declarations.
24213         * stub-objc.c (objc_rewrite_function_call): Change parameter from
24214         params to first_param.
24215         * target.h (struct gcc_target): Change resolve_overloaded_builtin
24216         params parameter from tree to void *.
24217         * config/rs6000/rs6000-c.c (altivec_resolve_overloaded_builtin):
24218         Change arglist parameter to have type void *, and to be a pointer
24219         to a VEC.
24220         * config/rs6000/rs6000-protos.h
24221         (altivec_resolve_overloaded_builtin): Update declaration.
24222         * config/spu/spu-c.c (spu_resolved_overloaded_builtin): Change
24223         fnargs parameter to have type void *, and to be a pointer to a
24224         VEC.  Call build_function_call_vec instead of
24225         build_function_call.
24226         * config/spu/spu-protos.h (spu_expand_builtin): Update declaration.
24227
24228 2009-04-20  Joey Ye  <joey.ye@intel.com>
24229             Xuepeng Guo  <xuepeng.guo@intel.com>
24230             H.J. Lu  <hongjiu.lu@intel.com>
24231
24232         * config/i386/atom.md: Add bypasses with ix86_dep_by_shift_count.
24233
24234         * config/i386/i386.c (LEA_SEARCH_THRESHOLD): New macro.
24235         (IX86_LEA_PRIORITY): Likewise.
24236         (distance_non_agu_define): New function.
24237         (distance_agu_use): Likewise.
24238         (ix86_lea_for_add_ok): Likewise.
24239         (ix86_dep_by_shift_count): Likewise.
24240
24241         * config/i386/i386.md: Call ix86_lea_for_add_ok to decide we
24242         should split for LEA.
24243
24244         * config/i386/i386-protos.h (ix86_lea_for_add_ok): Declare new
24245         function.
24246         (ix86_dep_by_shift_count): Likewise.
24247
24248 2009-04-20  Richard Guenther  <rguenther@suse.de>
24249
24250         * expr.c (handled_component_p): Move ...
24251         * tree.h (handled_component_p): ... here.
24252         * tree.def: Re-order BIT_FIELD_REF, COMPONENT_REF,
24253         ARRAY_REF, ARRAY_RANGE_REF, VIEW_CONVERT_EXPR, IMAGPART_EXPR
24254         and REALPART_EXPR to be in one group.
24255
24256 2009-04-20  Richard Guenther  <rguenther@suse.de>
24257
24258         * basic-block.h (get_all_dominated_blocks): Declare.
24259         * dominance.c (get_all_dominated_blocks): New function.
24260         * tree-cfg.c (get_all_dominated_blocks): Remove.
24261         (remove_edge_and_dominated_blocks): Adjust.
24262         * tree-ssa-phiprop.c (tree_ssa_phiprop_1): Fold in ...
24263         (tree_ssa_phiprop): ... here.  Use get_all_dominated_blocks
24264         instead of recursing.
24265
24266 2009-04-20  Doug Kwan  <dougkwan@google.com>
24267
24268         * cgraph.h (cgraph_node_ptr): New type for vector functions.
24269         (struct cgraph_node_set_def): New type.
24270         (cgraph_node_set) New type. Also declare vector functions.
24271         (struct cgraph_node_set_element_def): New type.
24272         (cgraph_node_set_element): Ditto.
24273         (cgraph_node_set_iterator): New iterator type.
24274         (cgraph_node_set_new, cgraph_node_set_find, cgraph_node_set_add,
24275         cgraph_node_set_remove, dump_cgraph_node_set,
24276         debug_cgraph_node_set): New prototypes.
24277         (csi_end_p, csi_next, csi_node, csi_start, cgraph_node_in_set_p,
24278         cgraph_node_set_size): New inlines.
24279         * tree-pass.h (struct cgraph_node_set_def): New decl to avoid
24280         including cgraph.h.
24281         (struct ipa_opt_pass): Add struct cgraph_node_set_def
24282         argument to function 'write_summary'.
24283         * ipa.c: Include ggc.h.
24284         (hash_cgraph_node_set_element,
24285         eq_cgraph_node_set_element, cgraph_node_set_new,
24286         cgraph_node_set_add, cgraph_node_set_remove,
24287         cgraph_node_set_find, dump_cgraph_node_set,
24288         debug_cgraph_node_set): New functions.
24289         * Makefile.in (ipa.o): Add dependency on GGC_H.
24290
24291 2009-04-20  Ira Rosen  <irar@il.ibm.com>
24292
24293         PR tree-optimization/39675
24294         * tree-vect-loop.c (vect_transform_loop): Remove currently redundant
24295         check of the return code of vect_schedule_slp. Check that
24296         stmt_vec_info still exists for the statement, before checking its
24297         vectorization type.
24298
24299 2009-04-20  Michael Matz  <matz@suse.de>
24300
24301         * Makefile.in (generated_files): Take out $(simple_generated_c).
24302
24303 2009-04-19  Dave Korn  <dave.korn.cygwin@gmail.com>
24304
24305         * config/i386/cygwin-stdint.h (INTPTR_TYPE):  Remove "long".
24306         (UINTPTR_TYPE):  Likewise.
24307
24308 2009-04-19  Joseph Myers  <joseph@codesourcery.com>
24309
24310         PR c/37481
24311         * c-typeck.c (digest_init): Check for initializing an array with a
24312         string literal.
24313
24314 2009-04-19  Joseph Myers  <joseph@codesourcery.com>
24315
24316         PR c/19771
24317         * c-semantics.c (pop_stmt_list): Propagate
24318         STATEMENT_LIST_HAS_LABEL to parent statement list.
24319
24320 2009-04-19  Adam Nemet  <anemet@caviumnetworks.com>
24321
24322         * config/mips/mips.h (mips_tune_attr): New macro.
24323         * config/mips/mips.md (cpu): Use it.
24324
24325 2009-04-19  Joseph Myers  <joseph@codesourcery.com>
24326
24327         PR c/38243
24328         * c-decl.c (shadow_tag_warned): Diagnose use of restrict when
24329         declaring a tag.
24330
24331 2009-04-19  Diego Novillo  <dnovillo@google.com>
24332
24333         * toplev.c (compile_file): Move call to coverage_finish ...
24334         * cgraphunit.c (ipa_passes): ... here.
24335         Call cgraph_process_new_functions.
24336         * ipa-utils.c (get_base_var): Handle CONSTRUCTOR.
24337         * Makefile.in (cgraphunit.o): Add dependency on COVERAGE_H.
24338
24339 2009-04-19  Jan Hubicka  <jh@suse.cz>
24340
24341         * cgraph.c (cgraph_create_edge, cgraph_set_call_stmt): Set proper
24342         cfun.
24343         (dump_cgraph_node): Dump can throw external flag.
24344         * ipa-pure-const.c (propagate): Fix propagation of nothrow flags.
24345
24346 2009-04-19  Manuel López-Ibáñez  <manu@gcc.gnu.org>
24347
24348         PR c/32061
24349         PR c++/36954
24350         * doc/invoke.texi: Add -Wlogical-op to -Wextra.
24351         * common.opt (Wlogical-op): Move from here...
24352         * c.opt (Wlogical-op): ... to here.
24353         * c-typeck.c (parser_build_binary_op): Update call to
24354         warn_logical_operator.
24355         * c-opts.c (c_common_post_options): Enable warn_logical_op with
24356         extra_warnings.
24357         * c-common.c (warn_logical_op): Update.
24358         * c-common.h (warn_logical_op): Update declaration.
24359
24360 2009-04-19  Eric Botcazou  <ebotcazou@adacore.com>
24361
24362         * tree.c (protected_set_expr_location): Fix formatting.
24363
24364 2009-04-18  Joseph Myers  <joseph@codesourcery.com>
24365
24366         PR c/27676
24367         * c-typeck.c (readonly_warning): new.
24368         (build_unary_op, build_modify_expr): Use readonly_warning for
24369         storing into something readonly but not const-qualified.
24370
24371 2009-04-18  Joseph Myers  <joseph@codesourcery.com>
24372
24373         PR c/22367
24374         * c-typeck.c (build_unary_op): Check for taking address of
24375         expression of type void.
24376
24377 2009-04-18  Joseph Myers  <joseph@codesourcery.com>
24378
24379         PR c/35210
24380         * c-typeck.c (build_function_call): Check for calling a function
24381         with qualified void return types.  Call require_complete_type when
24382         generating a trap.
24383
24384 2009-04-18  Jan Hubicka  <jh@suse.cz>
24385
24386         * cgraph.c (cgraph_make_edge, dump_cgraph_node, cgraph_set_call_stmt):
24387         Set nothrow flag.
24388         * cgraph.h (struct function): Reduce loop_nest to 30 bits; add
24389         can_throw_external flag.
24390         * ipa-reference.c (ipa_utils_reduced_inorder): Update call.
24391         * ipa-pure-const.c (ignore_edge): New function.
24392         (propagate): Compute order for NOTHROW computation; set NOTHROWs
24393         only over can_throw_external edges.
24394         (local_pure_const): Add nothrow flag.
24395         * ipa-utils.c (searchc): Add ignore_edge callback.
24396         (ipa_utils_reduced_inorder): Add ignore_edge callback.
24397         * ipa-utils.h (ipa_utils_reduced_inorder): Update prototype.
24398         (set_nothrow_function_flags): Update cgraph.
24399         * tree-cfg.c (verify_stmt): Relax nothrow checking when in IPA mode.
24400
24401 2009-04-18  Richard Guenther  <rguenther@suse.de>
24402
24403         PR middle-end/39804
24404         * tree-ssa-ccp.c (fold_stmt_1): New function factored from ...
24405         (fold_stmt): ... this and ...
24406         (fold_stmt_inplace): ... this.
24407         (fold_stmt_1): Fold references in calls and asms.
24408         * tree-cfg.c (remove_useless_stmts_cond): Use fold_stmt.
24409
24410 2009-04-18  Kazu Hirata  <kazu@codesourcery.com>
24411
24412         * tree-vrp.c (ssa_name_nonzero_p): Remove.
24413         * tree.h: Remove the prototype for ssa_name_nonzero_p.
24414
24415 2009-04-18  Kazu Hirata  <kazu@codesourcery.com>
24416
24417         * tree.c (function_args_count): Remove.
24418         * tree.h: Remove the prototype for function_args_count.
24419
24420 2009-04-18  Kazu Hirata  <kazu@codesourcery.com>
24421
24422         * tree-iterator.c (expr_only): Remove.
24423         * tree.h: Remove the prototype for expr_only.
24424
24425 2009-04-18  Kazu Hirata  <kazu@codesourcery.com>
24426
24427         * reginfo.c (cannot_change_mode_set_regs): Remove.
24428         * rtl.h: Remove the prototype for cannot_change_mode_set_regs.
24429
24430 2009-04-08  Anatoly Sokolov  <aesok@post.ru>
24431
24432         * config/avr/avr.md (*rotlsi3_8, *rotlsi3_16, *rotlsi3_24 ): Check
24433         whether operands 0 and 1 overlaps.
24434
24435 2009-04-18  Manuel López-Ibáñez  <manu@gcc.gnu.org>
24436
24437         PR middle-end/36902
24438         * tree-vrp.c (check_array_ref): Pass a location_t instead of a
24439         pointer. Use warning_at instead of warning.
24440         (search_for_addr_array): Likewise.
24441         (check_array_bounds): Likewise.
24442         (check_all_array_refs): Check that the incoming edge is not in the
24443         list of edges to be removed.
24444         (check_all_array_refs): Avoid the temporal pointer.
24445         (vrp_visit_cond_stmt): Fix typo.
24446         (simplify_switch_using_ranges): Handle the case where the switch
24447         index is an integer constant.
24448
24449 2009-04-18  Adam Nemet  <anemet@caviumnetworks.com>
24450
24451         * config/mips/mips.c (mips_final_postscan_insn): Make it static.
24452
24453 2009-04-18  Kazu Hirata  <kazu@codesourcery.com>
24454
24455         * doc/extend.texi, doc/invoke.texi: Fix typos.
24456
24457 2009-04-17  Cary Coutant  <ccoutant@google.com>
24458
24459         * tree-flow-inline.h (get_lineno): Fix inverted test.
24460
24461 2009-04-17  Diego Novillo  <dnovillo@google.com>
24462
24463         * tree-ssa-pre.c (create_expression_by_pieces): Remove
24464         assertion for AVAIL_OUT.
24465
24466 2009-04-17  Mike Frysinger  <vapier@gentoo.org>
24467
24468         PR target/38627
24469         * config/sh/lib1funcs.asm [__ELF__ && __linux__]: Add .note.GNU-stack.
24470         * config/sh/linux-atomic.asm: Likewise.
24471
24472 2009-04-17  Diego Novillo  <dnovillo@google.com>
24473
24474         * except.c (debug_eh_tree): New.
24475         (struct eh_region, struct eh_status): Move ...
24476         * except.h: ... here.
24477         (add_type_for_runtime): Declare extern.
24478         (lookup_type_for_runtime): Likewise.
24479         (debug_eh_tree): Declare.
24480         * Makefile.in (GTFILES): List except.h before except.c
24481
24482 2009-04-17  Diego Novillo  <dnovillo@google.com>
24483
24484         * omp-low.c (create_omp_child_function): Set DECL_CONTEXT for DECL.
24485         * cgraphunit.c (cgraph_build_static_cdtor): Likewise.
24486         * tree-dfa.c (find_referenced_vars_in): Factor out of ...
24487         (find_vars_r): ... here.
24488         * tree-flow.h (find_referenced_vars_in): Declare.
24489         * tree-ssa-pre.c (create_expression_by_pieces): Assert
24490         that AVAIL_OUT exists for BLOCK.
24491         * Makefile.in (CGRAPH_H): Add dependency on cif-code.def
24492         (tree-loop-distribution.o): Fix dependency on TREE_VECTORIZER_H.
24493         (tree-parloops.o): Likewise.
24494
24495 2009-04-17  Simon Baldwin  <simonb@google.com>
24496
24497         * toplev.c (default_tree_printer): Add handling for %E format.
24498
24499 2009-04-17  Diego Novillo  <dnovillo@google.com>
24500
24501         * tree-pretty-print.c (dump_generic_node): Add break after
24502         TREE_BINFO handler.  Handle COMPLEX_TYPE, REAL_TYPE and
24503         FIXED_POINT_TYPE.  Handle NULL TREE_TYPEs.  Handle METHOD_TYPE and
24504         FUNCTION_TYPE together.  Call print_struct_decl when printing
24505         structures and TDF_SLIM is not given.
24506         (print_struct_decl): Fix logic for detecting recursion.
24507
24508 2009-04-17  Rafael Avila de Espindola  <espindola@google.com>
24509
24510         PR 31567
24511         * gcc.c (create_at_file): New.
24512         (compile_input_file_p): New.
24513         (do_spec_1): Use @args files for %i. Use create_at_file for %o.
24514         * main.c (main): Update call to toplev_main.
24515         * toplev.c (toplev_main): Change signature. Call expandargv.
24516         * toplev.h (toplev_main): Change signature.
24517
24518 2009-04-17  Eric Botcazou  <ebotcazou@adacore.com>
24519
24520         * dwarf2out.c (field_byte_offset): Use the type size as the field size
24521         if the latter is not constant.
24522
24523 2009-04-17  David Edelsohn  <edelsohn@gnu.org>
24524
24525         * dbxout.c (xcoff_debug_hooks): Add set_name_debug_nothing.
24526
24527 2009-04-17  Eric Botcazou  <ebotcazou@adacore.com>
24528
24529         * dbxout.c (dbxout_block): Reinstate test on TREE_USED.
24530         * tree-ssa-live.c (remove_unused_scope_block_p): Update TREE_USED bit.
24531
24532 2009-04-17  Richard Guenther  <rguenther@suse.de>
24533
24534         * tree-ssa-structalias.c (get_constraint_for_component_ref):
24535         Handle component references view-converting an invariant address.
24536
24537 2009-04-17  Adam Nemet  <anemet@caviumnetworks.com>
24538
24539         * doc/tm.texi (TARGET_DEFAULT_TARGET_FLAGS,
24540         TARGET_MIN_ANCHOR_OFFSET, TARGET_MAX_ANCHOR_OFFSET,
24541         TARGET_HAVE_SRODATA_SECTION, TARGET_HAVE_TLS,
24542         TARGET_UNWIND_TABLES_DEFAULT, TARGET_TERMINATE_DW2_EH_FRAME_INFO):
24543         Use @deftypevr rather than @deftypevar.
24544
24545 2009-04-17  Richard Guenther  <rguenther@suse.de>
24546
24547         * tree-ssa-forwprop.c (get_prop_dest_stmt): Clean up tuplification.
24548         (get_prop_source_stmt): Likewise.
24549         (can_propagate_from): Likewise.
24550
24551 2009-04-17  Andrew Stubbs  <ams@codesourcery.com>
24552
24553         * configure.ac: Add new AC_SUBST for TM_ENDIAN_CONFIG,
24554         TM_MULTILIB_CONFIG and TM_MULTILIB_EXCEPTIONS_CONFIG.
24555         (--with-multilib-list): Add default value.
24556         * configure: Regenerate.
24557         * Makefile.in (TM_ENDIAN_CONFIG): Define.
24558         (TM_MULTILIB_CONFIG, TM_MULTILIB_EXCEPTIONS_CONFIG): Define.
24559         * config.gcc (sh-*-*): Switch to using TM_ENDIAN_CONFIG,
24560         TM_MULTILIB_CONFIG, and TM_MULTILIB_EXCEPTIONS_CONFIG.
24561         Don't add default cpu to multilib list unnecessarily, but do enable
24562         the relevant compiler option..
24563         Add support for --with-multilib-list=<blank> and
24564         --with-multilib-list=!<somelib> to supress unwanted multilibs.
24565         * config/sh/t-sh (DEFAULT_ENDIAN, OTHER_ENDIAN): New variables.
24566         (MULTILIB_ENDIAN, MULTILIB_CPUS): Delete variables.
24567         (MULTILIB_OPTIONS): Redefine using OTHER_ENDIAN and
24568         TM_MULTILIB_CONFIG.
24569         (MULTILIB_EXCEPTIONS): Add TM_MULTILIB_EXCEPTIONS_CONFIG.
24570         (MULTILIB_OSDIRNAMES): New variable.
24571         * config/sh/t-1e: Delete file.
24572         * config/sh/t-mlib-sh1: Delete file.
24573         * config/sh/t-mlib-sh2: Delete file.
24574         * config/sh/t-mlib-sh2a: Delete file.
24575         * config/sh/t-mlib-sh2a-nofpu: Delete file.
24576         * config/sh/t-mlib-sh2a-single: Delete file.
24577         * config/sh/t-mlib-sh2a-single-only: Delete file.
24578         * config/sh/t-mlib-sh2e: Delete file.
24579         * config/sh/t-mlib-sh3e: Delete file.
24580         * config/sh/t-mlib-sh4: Delete file.
24581         * config/sh/t-mlib-sh4-nofpu: Delete file.
24582         * config/sh/t-mlib-sh4-single: Delete file.
24583         * config/sh/t-mlib-sh4-single-only: Delete file.
24584         * config/sh/t-mlib-sh4a: Delete file.
24585         * config/sh/t-mlib-sh4a-nofpu: Delete file.
24586         * config/sh/t-mlib-sh4a-single: Delete file.
24587         * config/sh/t-mlib-sh4a-single-only: Delete file.
24588         * config/sh/t-mlib-sh4al: Delete file.
24589         * config/sh/t-mlib-sh5-32media: Delete file.
24590         * config/sh/t-mlib-sh5-32media-nofpu: Delete file.
24591         * config/sh/t-mlib-sh5-64media: Delete file.
24592         * config/sh/t-mlib-sh5-64media-nofpu: Delete file.
24593         * config/sh/t-mlib-sh5-compact: Delete file.
24594         * config/sh/t-mlib-sh5-compact-nofpu: Delete file.
24595         * config/sh/t-linux: Don't override MULTILIB_EXCEPTIONS.
24596         * doc/install.texi (Options specification): Add
24597         --with-multilib-list and --with-endian.
24598
24599 2009-04-17  Rafael Avila de Espindola  <espindola@google.com>
24600
24601         * Makefile.in (REVISION_s): Always include quotes. Change ifdef to use
24602         REVISION_c.
24603         (OBJS-common): Add plugin-version.o.
24604         (plugin-version.o): New.
24605         * gcc-plugin.h (plugin_gcc_version): New.
24606         (plugin_default_version_check): New.
24607         (plugin_init_func, plugin_init): Add version argument.
24608         * plugin-version.c: New.
24609         * plugin.c (str_plugin_gcc_version_name): New.
24610         (try_init_one_plugin): Read plugin_gcc_version from the plugin and
24611         pass it to the init function.
24612         (plugin_default_version_check): New.
24613
24614 2009-04-17  Richard Guenther  <rguenther@suse.de>
24615
24616         * tree-ssa-alias.c (refs_may_alias_p_1): Do not use TBAA
24617         for decl-vs-decl disambiguation.
24618
24619 2009-04-17  Andreas Krebbel  <krebbel1@de.ibm.com>
24620
24621         * config/s390/s390.h (s390_tune_attr): New macro definition.
24622         * config/s390/s390.md (cpu attribute): Map to s390_tune_attr.
24623
24624 2009-04-17  Richard Guenther  <rguenther@suse.de>
24625
24626         * tree-ssa-ccp.c (struct fold_stmt_r_data): Remove.
24627         (fold_stmt_r): Likewise.
24628         (maybe_fold_reference): New function.
24629         (fold_gimple_assign): Handle cases fold_stmt_r did.
24630         (fold_stmt): Do not use fold_stmt_r.
24631         (fold_stmt_inplace): Likewise.
24632
24633 2009-04-17  Richard Guenther  <rguenther@suse.de>
24634
24635         * tree-ssa-dom.c (gimple_assign_unary_useless_conversion_p): Remove.
24636         (record_equivalences_from_stmt): Remove useless checks and
24637         simplifications.
24638         * tree-ssa-pre.c (eliminate): Avoid converting a constant if
24639         the type is already suitable.
24640
24641 2009-04-17  Paolo Bonzini  <bonzini@gnu.org>
24642
24643         * config/sh/sh.h (FUNCTION_VALUE): Fix call to sh_promote_prototypes.
24644
24645 2009-04-17  Uros Bizjak  <ubizjak@gmail.com>
24646
24647         * config/arm/sfp-machine.h (__gcc_CMPtype): New typedef.
24648         (CMPtype): Define as __gcc_CMPtype.
24649
24650 2009-04-17  Aurelien Jarno  <aurelien@aurel32.net>
24651
24652         * config.gcc: Add soft-fp/t-softfp and i386/t-linux to tmake_file
24653         for i[34567]86-*-kfreebsd*-gnu*, x86_64-*-kfreebsd*-gnu*.
24654
24655 2009-04-17  Richard Guenther  <rguenther@suse.de>
24656
24657         PR tree-optimization/39746
24658         * tree-ssa-alias.c (ref_maybe_used_by_call_p_1): Remove
24659         special-casing for builtins and static variable use/def.
24660         (call_may_clobber_ref_p_1): Likewise.
24661
24662 2009-04-16  Ian Lance Taylor  <iant@google.com>
24663
24664         * df.h: Include "timevar.h".
24665         (struct df_problem): Change tv_id field to timevar_id_t.
24666         * tree-pass.h: Include "timevar.h".
24667         (struct opt_pass): Change tv_id field to timevar_id_t.
24668         * timevar.h (timevar_id_t): Define TV_NONE.
24669         * passes.c (execute_one_ipa_transform_pass): Check for tv_id !=
24670         TV_NONE rather than tv_id != 0.
24671         (execute_one_pass): Likewise.
24672         * Makefile.in (DF_H): Add $(TIMEVAR_H).
24673         (TREE_PASS_H): Define.  Change all instances of tree-pass.h in
24674         dependencies to $(TREE_PASS_H).
24675         * bt-load.c (pass_branch_target_load_optimize1): Set tv_id field
24676         to TV_NONE.
24677         (pass_branch_target_load_optimize2): Likewise.
24678         * cfglayout.c (pass_into_cfg_layout_mode): Likewise.
24679         (pass_outof_cfg_layout_mode): Likewise.
24680         * cgraphbuild.c (pass_remove_cgraph_callee_edges): Likewise.
24681         (pass_rebuild_cgraph_edges): Likewise.
24682         (pass_remove_cgraph_callee_edges): Likewise.
24683         * df-core.c (pass_df_initialize_opt): Likewise.
24684         (pass_df_initialize_no_opt): Likewise.
24685         (pass_df_finish): Likewise.
24686         * emit-rtl.c (pass_unshare_all_rtl): Likewise.
24687         * except.c (pass_set_nothrow_function_flags): Likewise.
24688         (pass_convert_to_eh_region_ranges): Likewise.
24689         * final.c (pass_compute_alignments): Likewise.
24690         * function.c (pass_instantiate_virtual_regs): Likewise.
24691         (pass_init_function): Likewise.
24692         (pass_leaf_regs): Likewise.
24693         (pass_match_asm_constraints): Likewise.
24694         * gimple-low.c (pass_lower_cf): Likewise.
24695         (pass_mark_used_blocks): Likewise.
24696         * init-regs.c (pass_initialize_regs): Likewise.
24697         * integrate.c (pass_initial_value_sets): Likewise.
24698         * ira.c (pass_ira): Likewise.
24699         * jump.c (pass_cleanup_barriers): Likewise.
24700         * omp-low.c (pass_expand_omp): Likewise.
24701         (pass_lower_omp): Likewise.
24702         * matrix-reorg.c (pass_ipa_matrix_reorg): Likewise.
24703         * recog.c (pass_split_all_insns): Likewise.
24704         (pass_split_after_reload): Likewise.
24705         (pass_split_before_regstack): Likewise.
24706         (pass_split_before_sched2): Likewise.
24707         (pass_split_for_shorten_branches): Likewise.
24708         * reginfo.c (pass_reginfo_init): Likewise.
24709         (pass_subregs_of_mode_init): Likewise.
24710         (pass_subregs_of_mode_finish): Likewise.
24711         * passes.c (pass_postreload): Likewise.
24712         * stack-ptr-mod.c (pass_stack_ptr_mod): Likewise.
24713         * tree-cfg.c (pass_remove_useless_stmts): Likewise.
24714         (pass_warn_function_return): Likewise.
24715         (pass_warn_function_noreturn): Likewise.
24716         * tree-complex.c (pass_lower_complex): Likewise.
24717         (pass_lower_complex_O0): Likewise.
24718         * tree-if-conv.c (pass_if_conversion): Likewise.
24719         * tree-into-ssa.c (pass_build_ssa): Likewise.
24720         * tree-mudflap.c (pass_mudflap_1): Likewise.
24721         (pass_mudflap_2): Likewise.
24722         * tree-nomudflap.c (pass_mudflap_1): Likewise.
24723         (pass_mudflap_2): Likewise.
24724         * tree-nrv.c (pass_return_slot): Likewise.
24725         * tree-object-size.c (pass_object_sizes): Likewise.
24726         * tree-optimize.c (pass_all_optimizations): Likewise.
24727         (pass_early_local_passes): Likewise.
24728         (pass_all_early_optimizations): Likewise.
24729         (pass_cleanup_cfg): Likewise.
24730         (pass_cleanup_cfg_post_optimizing): Likewise.
24731         (pass_free_datastructures): Likewise.
24732         (pass_free_cfg_annotations): Likewise.
24733         (pass_fixup_cfg): Likewise.
24734         (pass_init_datastructures): Likewise.
24735         * tree-ssa.c (pass_early_warn_uninitialized): Likewise.
24736         (pass_late_warn_uninitialized): Likewise.
24737         (pass_update_address_taken): Likewise.
24738         * tree-ssa-ccp.c (pass_fold_builtins): Likewise.
24739         * tree-ssa-math-opts.c (pass_cse_reciprocals): Likewise.
24740         (pass_cse_sincos): Likewise.
24741         (pass_convert_to_rsqrt): Likewise.
24742         * tree-ssa-structalias.c (pass_build_alias): Likewise.
24743         * tree-stdarg.c (pass_stdarg): Likewise.
24744         * tree-tailcall.c (pass_tail_recursion): Likewise.
24745         (pass_tail_calls): Likewise.
24746         * tree-vect-generic.c (pass_lower_vector): Likewise.
24747         (pass_lower_vector_ssa): Likewise.
24748         * tree-vectorizer.c (pass_ipa_increase_alignment): Likewise.
24749
24750 2009-04-16  Joseph Myers  <joseph@codesourcery.com>
24751
24752         * config/mips/mips.c (mips_rtx_cost_data): Use SOFT_FP_COSTS in
24753         XLR entry.
24754         * config/mips/mips.h (MIPS_ISA_LEVEL_SPEC, MIPS_ARCH_FLOAT_SPEC):
24755         Handle -march=xlr.
24756         * config/mips/xlr.md (ir_xlr_alu): Also accept insn types move,
24757         logical and signext.
24758
24759 2009-04-16  Kaz Kojima  <kkojima@gcc.gnu.org>
24760
24761         PR target/39767
24762         * config/sh/predicates.md (arith_operand): Check if the operand
24763         of TRUNCATE is a REG.
24764
24765 2009-04-16  Kazu Hirata  <kazu@codesourcery.com>
24766
24767         * cfgrtl.c (delete_insn_chain_and_edges): Remove.
24768         * rtl.h: Remove the prototype for delete_insn_chain_and_edges.
24769
24770 2009-04-16  Kazu Hirata  <kazu@codesourcery.com>
24771
24772         * tree-iterator.c (tsi_split_statement_list_after,
24773         tsi_split_statement_list_before): Remove.
24774         * tree-iterator.h: Remove the prototypes for
24775         tsi_split_statement_list_after and tsi_split_statement_list_before.
24776
24777 2009-04-16  Kazu Hirata  <kazu@codesourcery.com>
24778
24779         * tree-ssa-propagate.c (stmt_makes_single_load): Remove.
24780         * tree-ssa-propagate.h: Remove the prototype for
24781         stmt_makes_single_load.
24782
24783 2009-04-16  Kazu Hirata  <kazu@codesourcery.com>
24784
24785         * emit-rtl.c (set_mem_attrs_from_reg): Remove.
24786         * rtl.h: Remove the prototype for set_mem_attrs_from_reg.
24787
24788 2009-04-16  Kazu Hirata  <kazu@codesourcery.com>
24789
24790         * tree-iterator.c (EXPR_LAST_BODY): Remove.
24791
24792 2009-04-16  Kazu Hirata  <kazu@codesourcery.com>
24793
24794         * except.c (eh_region_outer_p): Remove.
24795         * except.h: Remove the prototype for eh_region_outer_p.
24796
24797 2009-04-16  Kazu Hirata  <kazu@codesourcery.com>
24798
24799         * function.c (current_function_assembler_name): Remove.
24800         * function.h: Remove the prototype for
24801         current_function_assembler_name.
24802
24803 2009-04-16  Ian Lance Taylor  <iant@google.com>
24804
24805         * rtlanal.c (alloc_reg_note): New function, broken out of add_reg_note.
24806         (add_reg_note): Call alloc_reg_note.
24807         * rtl.h (alloc_reg_note): Declare.
24808         * combine.c (try_combine): Use alloc_reg_note.
24809         (recog_for_combine, move_deaths): Likewise.
24810         (distribute_notes): Use alloc_reg_note and add_reg_note.
24811         * haifa-sched.c (sched_create_recovery_edges): Use add_reg_note.
24812         * combine-stack-adj.c (adjust_frame_related_expr): Likewise.
24813         * reload1.c (eliminate_regs_1): Use alloc_reg_note.
24814
24815 2009-04-16  Vladimir Makarov  <vmakarov@redhat.com>
24816
24817         PR rtl-optimization/39762
24818         * ira-int.h (ira_register_move_cost, ira_may_move_in_cost,
24819         ira_may_move_out_cost): Add comments about way of their usage.
24820         (ira_get_register_move_cost, ira_get_may_move_cost): New functions.
24821
24822         * ira-conflicts.c (process_regs_for_copy): Use function
24823         ira_get_register_move_cost instead of global
24824         ira_register_move_cost.
24825
24826         * ira-color.c (update_copy_costs, calculate_allocno_spill_cost,
24827         color_pass, move_spill_restore, update_curr_costs): Ditto.
24828
24829         * ira-lives.c (process_single_reg_class_operands): Ditto.
24830
24831         * ira-emit.c (emit_move_list): Ditto.
24832
24833         * ira-costs.c (copy_cost): Don't call ira_init_register_move_cost.
24834         (record_reg_classes): Ditto.  Use functions
24835         ira_get_register_move_cost and ira_get_may_move_cost instead of
24836         global vars ira_register_move_cost, ira_may_move_out_cost and
24837         ira_may_move_in_cost.
24838         (record_address_regs): Don't call ira_init_register_move_cost.
24839         Use function ira_get_may_move_cost instead of global
24840         ira_may_move_in_cost.
24841         (process_bb_node_for_hard_reg_moves): Use function
24842         ira_get_register_move_cost instead of global ira_register_move_cost.
24843         (ira_costs): Don't call ira_init_register_move_cost.
24844
24845 2009-04-16  Richard Guenther  <rguenther@suse.de>
24846
24847         * tree-cfg.c (verify_gimple_assign_binary):
24848         Allow POINTER_PLUS_EXPR-like PLUS_EXPR for vectors.
24849         * ipa-struct-reorg.c (gen_size): Fold the built expressions.
24850         (create_general_new_stmt): Note that this function is broken.
24851
24852 2009-04-16  Rafael Avila de Espindola  <espindola@google.com>
24853
24854         * common.opt (fhelp): Add Var(help_flag).
24855         * gcc-plugin.h (plugin_info): Add help.
24856         * plugin.c (plugin_name_args): Add help.
24857         (register_plugin_info): Set plugin->help.
24858         (print_help_one_plugin): New.
24859         (print_plugins_help): New.
24860         * plugin.h (print_plugins_help): New.
24861         * toplev.c (toplev_main): Call print_plugins_help if needed.
24862
24863 2009-04-16  Richard Guenther  <rguenther@suse.de>
24864
24865         * gimple.c (gimple_copy): Do not clear addresses_taken bitmap.
24866         (gimple_ior_addresses_taken_1): New function.
24867         (gimple_ior_addresses_taken): Likewise.
24868         * gimple.h (struct gimple_statement_with_ops_base): Remove
24869         addresses_taken member.
24870         (gimple_ior_addresses_taken): Declare.
24871         (gimple_addresses_taken, gimple_addresses_taken_ptr,
24872         gimple_set_addresses_taken): Remove.
24873         * ipa-reference.c (mark_address): New function.
24874         (scan_stmt_for_static_refs): Use it for marking addresses taken.
24875         * tree-ssa-operands.c (add_to_addressable_set): Rename to ...
24876         (mark_address_taken): ... this.  Just set TREE_ADDRESSABLE.
24877         (gimple_add_to_addresses_taken): Remove.
24878         (get_tmr_operands): Call mark_address_taken.
24879         (get_asm_expr_operands): Likewise.
24880         (get_expr_operands): Likewise.
24881         (build_ssa_operands): Do not clear the addresses_taken bitmap.
24882         (free_stmt_operands): Do not free it.
24883         * tree-ssa.c (delete_tree_ssa): Likewise.
24884         (execute_update_addresses_taken): Use gimple_ior_addresses_taken.
24885
24886 2009-04-16  Richard Guenther  <rguenther@suse.de>
24887
24888         * gimple.h (walk_stmt_load_store_addr_ops): Declare.
24889         (walk_stmt_load_store_ops): Likewise.
24890         * gimple.c (get_base_loadstore): New function.
24891         (walk_stmt_load_store_addr_ops): Likewise.
24892         (walk_stmt_load_store_ops): Likewise.
24893         * ipa-pure-const.c (check_op): Simplify.
24894         (check_load, check_store): New functions.
24895         (check_stmt): Use walk_stmt_load_store_ops.
24896         * ipa-reference.c (mark_load): Adjust signature.
24897         (mark_store): Likewise.
24898         (scan_stmt_for_static_refs): Use walk_stmt_load_store_addr_ops.
24899
24900 2009-04-16  Rafael Avila de Espindola  <espindola@google.com>
24901
24902         * gcc-plugin.h (plugin_event): Add PLUGIN_INFO.
24903         (plugin_info): New.
24904         * opts.c (common_handle_option): Don't call print_version.
24905         * plugin.c (plugin_name_args): Add version.
24906         (register_plugin_info): New.
24907         (register_callback): Handle PLUGIN_INFO.
24908         (try_init_one_plugin): New.
24909         (init_one_plugin): Use try_init_one_plugin. Only free plugin_name_args
24910         if failed to init.
24911         (finalize_one_plugin): New.
24912         (finalize_plugins): New.
24913         (print_one_plugin): New.
24914         (print_plugins_versions): New.
24915         * plugin.h (print_plugins_versions): New.
24916         (finalize_plugins): New.
24917         * toplev.c (compile_file): Don't call initialize_plugins.
24918         (print_version): Call print_plugins_versions.
24919         (toplev_main): Call initialize_plugins. Print version if needed.
24920         Call finalize_plugins.
24921
24922 2009-04-16  Rafael Avila de Espindola  <espindola@google.com>
24923
24924         * common.opt (fversion): New.
24925         * gcc.c (print_version): New.
24926         (process_command): Don't print the version. Just set print_version.
24927         (main): Print version. Call subprocesses if print_version and
24928         verbose_flag are set.
24929         * opts.c (common_handle_option): Handle OPT_fversion.
24930
24931 2009-04-16  Richard Guenther  <rguenther@suse.de>
24932             Ira Rosen  <irar@il.ibm.com>
24933
24934         PR tree-optimization/39698
24935         * tree-vect-loop.c (get_initial_def_for_reduction): Use the
24936         type of the reduction variable.  Only generate the def if
24937         it is needed.
24938
24939         * omp-low.c (expand_omp_for_generic): When converting to a pointer
24940         make sure to first convert to an integer of the same precision.
24941         * tree-vect-loop-manip.c (vect_update_ivs_after_vectorizer): Retain
24942         the type of the evolution correctly in computing the new
24943         induction variable base.
24944
24945 2009-04-16  Richard Guenther  <rguenther@suse.de>
24946
24947         PR middle-end/39625
24948         * tree-cfg.c (make_blocks): Split statements with to-be
24949         abnormal SSA names on the lhs.
24950
24951 2009-04-16  Paolo Bonzini  <bonzini@gnu.org>
24952
24953         * c-common.c (vector_targets_convertible_p, vector_types_convertible_p):
24954         Use TYPE_VECTOR_OPAQUE instead of targetm.vector_opaque_p.
24955         * c-typeck.c (really_start_incremental_init): Likewise.
24956         * target-def.h (TARGET_VECTOR_OPAQUE_P): Remove.
24957         (TARGET_INITIALIZER): Remove it.
24958         * target.h (struct target): Remove vector_opaque_p.
24959         * tree.c (build_opaque_vector_type): New.
24960         * tree.h (TYPE_VECTOR_OPAQUE): New.
24961         (build_opaque_vector_type): Declare.
24962         * doc/tm.texi (TARGET_VECTOR_OPAQUE_P): Remove.
24963         * config/rs6000/rs6000.c (build_opaque_vector_type,
24964         rs6000_is_vector_type, TARGET_VECTOR_OPAQUE_P): Remove.
24965         (rs6000_init_builtins): Use build_opaque_vector_type for
24966         opaque_V4SI_type_node.
24967
24968 2009-04-15  Catherine Moore  <clm@codesourcery.com>
24969
24970         * debug.h (set_name):  Declare.
24971         * dwarf2out.c (dwarf2out_set_name): Declare.
24972         (dwarf2_debug_hooks): Add set_name.
24973         (find_AT_string): New.
24974         (add_AT_string): Call find_AT_string.
24975         (dwarf2out_set_name): New.
24976         * cp/decl.c (grokdeclarator): Call set_name.
24977         * vmsdbgout.c (vmsdbg_debug_hooks): Add set_name_debug_nothing.
24978         * debug.c (do_nothing_debug_hooks):  Likewise.
24979         * dbxout.c (dbx_debug_hooks): Likewise.
24980         * sdbout.c (sdb_debug_hooks): Likewise.
24981
24982 2009-04-15  Michael Eager  <eager@eagercon.com>
24983
24984         * config/rs6000/rs6000.c (rs6000_function_value): Set function return
24985         reg for single-precision FPU.
24986         * config/rs6000/rs6000.md (movsi_internal1): Only for
24987         !TARGET_SINGLE_FPU.
24988         (movsi_internal1_single): New. Add pattern to move SI values to/from
24989         single-precision FP regs.
24990
24991 2009-04-15  Richard Guenther  <rguenther@suse.de>
24992
24993         * omp-low.c (lower_rec_input_clauses): Build correct address
24994         expressions.
24995         (expand_omp_for_generic): Fix multiplication type.
24996         * tree-loop-distribution.c (build_size_arg): Build a size_t argument.
24997         (generate_memset_zero): Fix types.
24998         * tree-profile.c (prepare_instrumented_value): Correctly
24999         widen a pointer.
25000
25001 2009-04-15  Ian Lance Taylor  <iant@google.com>
25002
25003         * c.opt (Wenum-compare): Enable for C and Objc.  Initialize to -1.
25004         * c-opts.c (c_common_handle_option): For C, set warn_enum_compare
25005         for -Wall and for -Wc++-compat.
25006         (c_common_post_options): For C++, set warn_enum_compare if not
25007         already set.
25008         * c-tree.h (struct c_expr): Add field original_type.
25009         (build_external_ref): Update declaration.
25010         * c-parser.c (c_parser_braced_init): Set original_type.
25011         (c_parser_initelt): Likewise.
25012         (c_parser_expr_no_commas): Likewise.
25013         (c_parser_conditional_expression): Likewise.
25014         (c_parser_cast_expression): Likewise.
25015         (c_parser_unary_expression): Likewise.  Pull setting of
25016         original_code to top of function.
25017         (c_parser_sizeof_expression): Set original_type.
25018         (c_parser_alignof_expression): Likewise.
25019         (c_parser_postfix_expression): Likewise.  Pull setting of
25020         original_code to top of function.
25021         (c_parser_postfix_expression_after_paren_type): Set original_type.
25022         (c_parser_postfix_expression_after_primary): Likewise.
25023         (c_parser_expression): Likewise.
25024         * c-typeck.c (build_external_ref): Add type parameter.  Change all
25025         callers.
25026         (c_expr_sizeof_expr): Set original_type field.
25027         (parser_build_unary_op): Likewise.
25028         (parser_build_binary_op): Likewise.  Optionally warn about
25029         comparisons of enums of different types.
25030         (digest_init): Set original_type field.
25031         (really_start_incremental_init): Likewise.
25032         (push_init_level, pop_init_level): Likewise.
25033         * doc/invoke.texi (Warning Options): -Wenum-compare now
25034         supported in C.
25035
25036 2009-04-15  Richard Guenther  <rguenther@suse.de>
25037
25038         * tree-ssa-pre.c (eliminate): When replacing a PHI node carry
25039         out a necessary conversion.
25040         * tree-ssa-sccvn.c (run_scc_vn): Also assign value-ids to
25041         names we didn't value number.
25042         * tree-mudflap.c (mf_build_check_statement_for): Use correct types.
25043
25044 2009-04-15  Richard Guenther  <rguenther@suse.de>
25045
25046         PR tree-optimization/39764
25047         * tree-ssa-ccp.c (get_value): Canonicalize value with
25048         canonicalize_float_value.
25049
25050 2009-04-15  Jan Hubicka  <jh@suse.cz>
25051
25052         * builtins.def (va_start, va_end, va_copy): Fix my previous commit.
25053         Wrong version of patch.
25054
25055 2009-04-15  Jan Hubicka  <jh@suse.cz>
25056
25057         * builtins.def (va_start, va_end, va_copy): Mark nothrow.
25058
25059 2009-04-15  Nathan Sidwell  <nathan@codesourcery.com>
25060
25061         * config/rs6000/rs6000.c (rs6000_init_builtins): Set TYPE_NAME of
25062         our distinct integral and vector types.
25063
25064 2009-04-15  Rafael Avila de Espindola  <espindola@google.com>
25065
25066         * class.c (build_vtbl_ref_1): Remove call to assemble_external.
25067         * init.c (build_vtbl_address): Remove call to assemble_external.
25068
25069 2009-04-14  Daniel Jacobowitz  <dan@codesourcery.com>
25070
25071         * config/rs6000/rs6000.c (rs6000_dwarf_register_span): Fix debug
25072         output for other floating point modes.
25073
25074 2009-04-14  Diego Novillo  <dnovillo@google.com>
25075
25076         * diagnostic.c (diagnostic_report_diagnostic): Do not
25077         warn about loaded plugins for DK_ERROR and DK_WARNING.
25078         * c-decl.c (declspecs_add_type): Move call to
25079         invoke_plugin_callbacks ...
25080         * c-parser.c (c_parser_declspecs): ... here.
25081         * plugin.c (dump_active_plugins): Tidy output.
25082
25083 2009-04-14  Diego Novillo  <dnovillo@google.com>
25084             Le-Chun Wu  <lcwu@google.com>
25085
25086         * configure.ac: Add --enable-plugin support.
25087         Define ENABLE_PLUGIN and PLUGINLIBS when specified.
25088         * Makefile.in (PLUGIN_H): Define.
25089         Export ENABLE_PLUGIN and GMPINC to site.exp.
25090         Add PLUGINLIBS to link command.
25091         Add/modify dependencies for plugin.o and files including plugin.h.
25092         (plugin.o): New.
25093         * config.in: Regenerate.
25094
25095         * opts.c (common_handle_option): Handle OPT_fplugin_ and
25096         OPT_fplugin_arg_.
25097
25098 2009-04-14  Le-Chun Wu  <lcwu@google.com>
25099
25100         * tree-pass.h (register_one_dump_file): Add a prototype for
25101         register_one_dump_file.
25102         * toplev.c (compile_file): Call initialize_plugins.
25103         (do_compile): Call invoke_plugin_callbacks.
25104         (toplev_main): Call invoke_plugin_callbacks.
25105         * common.opt: Add -fplugin= and -fplugin-arg-.
25106         * gcc-plugin.h: New public header file for plugins to include.
25107         * plugin.c: New source file.
25108         * plugin.h: New internal header file.
25109         * passes.c (register_one_dump_file): Make it external.
25110
25111         * c-parser.c (c_parser_declspecs): Call invoke_plugin_callbacks.
25112
25113 2009-04-14  Diego Novillo  <dnovillo@google.com>
25114
25115         * doc/plugins.texi: New.
25116         * doc/gccint.texi: Add reference to Plugins chapter.
25117         * doc/invoke.texi: Document -fplugin and -fplugin-arg
25118         * diagnostic.c (diagnostic_report_diagnostic): Warn about
25119         loaded plugins, if any.
25120         * timevar.def (TV_PLUGIN_INIT): Define.
25121         (TV_PLUGIN_RUN): Define.
25122         * plugin.c: Include timevar.h
25123         (plugins_active_p): New.
25124         (dump_active_plugins): New.
25125         (debug_active_plugins): New.
25126
25127 2009-04-14  Joseph Myers  <joseph@codesourcery.com>
25128
25129         * config/sol2.h (LINK_ARCH32_SPEC_BASE): Use %R with absolute
25130         library paths.
25131         * config/sparc/sol2-bi.h (LINK_ARCH64_SPEC_BASE): Likewise.
25132
25133 2009-04-14  Kazu Hirata  <kazu@codesourcery.com>
25134
25135         * config/arm/arm.c (arm_rtx_costs_1): Treat a minus with a shift
25136         the same as a minus without a shift.
25137
25138 2009-04-14  Nick Clifton  <nickc@redhat.com>
25139
25140         * config/stormy16/stormy16.md (ineqbranch_1): Do not assume that
25141         comparisons with small integers will always produce a short
25142         branch.
25143
25144 2009-04-14  Rafael Avila de Espindola  <espindola@google.com>
25145
25146         Merge:
25147         2008-12-19  Diego Novillo  <dnovillo@google.com>
25148
25149         * cgraph.c (dump_cgraph_node): Show memory address of NODE.
25150
25151 2009-04-14  Richard Guenther  <rguenther@suse.de>
25152
25153         * tree-cfg.c (verify_gimple_assign_unary): Adjust vector code
25154         verification.
25155         (verify_gimple_assign_binary): Likewise.  Handle shifts and
25156         rotates correctly.
25157         (verify_gimple_phi): Print the mismatched argument position.
25158         * tree-vect-loop-manip.c (vect_update_ivs_after_vectorizer):
25159         Fix types.
25160         (vect_update_init_of_dr): Likewise.
25161         * matrix-reorg.c (transform_access_sites): Do what the
25162         comment suggests.
25163         * omp-low.c (expand_omp_atomic_pipeline): Use the correct types.
25164
25165 2009-04-13  Michael Eager  <eager@eagercon.com>
25166
25167         * config/rs6000/rs6000-c.c: generate defines if rs6000_xilinx_fpu:
25168         _XFPU, _XFPU_SP_LITE, _XFPU_SP_FULL, _XFPU_DP_LITE, _XFPU_DP_FULL
25169         * config/rs6000/xilinx.h: New.  Spec for powerpc-xilinx-eabi
25170         * config.gcc (powerpc-xilinx-eabi): add xilinx.h to tm_file,
25171         remove duplicate config
25172
25173 2009-04-13  Dwarakanath Rajagopal  <dwarak.rajagopal@amd.com>
25174
25175         * ipa-inline.c (cgraph_decide_inlining_of_small_function): Dump
25176         file_name:line_number type locator of the call site.
25177
25178 2009-04-13  Vladimir Makarov  <vmakarov@redhat.com>
25179
25180         * genautomata.c: Put blank after comma.
25181         (automaton_decls): New.
25182         (struct unit_usage): Add comments to member next.
25183         (store_alt_unit_usage): Keep the list ordered.
25184         (unit_present_on_list_p, equal_alternatives_p): New.
25185         (check_regexp_units_distribution): Check units distribution
25186         correctness correctly.
25187         (main): Don't write automata if error is found.  Return correct
25188         exit code.
25189
25190         * config/m68k/cf.md (cfv4_ds): Remove.
25191         (cfv4_pOEP1, cfv4_sOEP1, cfv4_pOEP2,cfv4_sOEP2, cfv4_pOEP3,
25192         cfv4_sOEP3): Assign to cfv4_oep instead of cfv4_ds.
25193
25194         * config/rs6000/power4.md (lsuq_power4, iq_power4, fpq_power4,
25195         power4-load-ext, power4-store, power4-store-update,
25196         power4-fpstore, power4-fpstore-update, power4-two, power4-three,
25197         power4-insert, power4-compare, power4-lmul-cmp, power4-imul-cmp,
25198         power4-lmul, , power4-imul, power4-imul3, power4-sdiv,
25199         power4-sqrt, power4-isync): Modify reservation to make correct
25200         unit distribution to automata.
25201
25202         * config/rs6000/power5.md (iq_power5, fpq_power5, power5-store,
25203         power5-store-update, power5-two, power5-three, power5-lmul,
25204         power5-imul, power5-imul3, power5-sdiv, power5-sqrt): Ditto.
25205
25206 2009-04-13  Adam Nemet  <anemet@caviumnetworks.com>
25207
25208         * except.c (pass_set_nothrow_function_flags): Set name and add
25209         TODO_dump_func.
25210         (set_nothrow_function_flags): Mention in the dump file when
25211         changing a function to nothrow.
25212
25213 2009-04-13  Ozkan Sezer  <sezeroz@gmail.com>
25214
25215         PR/39066
25216         * gbl-ctors.h (DO_GLOBAL_CTORS_BODY): Use __SIZE_TYPE__
25217         instead of unsigned long.
25218
25219 2009-04-13  Ramana Radhakrishnan  <ramana.radhakrishnan@arm.com>
25220
25221         * config/arm/arm.c (return_used_this_function): Remove.
25222         (arm_output_function_prologue): Remove use of
25223         return_used_this_function.
25224         (output_return_instruction): Replace use of
25225         return_used_this_function
25226         by cfun->machine->return_used_this_function.
25227         (arm_output_epilogue): Likewise.
25228         (arm_output_function_epilogue): Likewise.
25229         (thumb_unexpanded_epilogue): Likewise.
25230         * config/arm/arm.h (struct machine_function):
25231         New member return_used_this_function.
25232
25233 2009-04-12  Mark Mitchell  <mark@codesourcery.com>
25234
25235         * doc/install.texi: Correct description of default directory for
25236         --with-gxx-include-dir.
25237
25238 2009-04-12  Eric Botcazou  <ebotcazou@adacore.com>
25239
25240         * fold-const.c (build_range_check): Properly deal with enumeral and
25241         boolean base types.
25242
25243 2009-04-12  Steven Bosscher  <steven@gcc.gnu.org>
25244
25245         * doc/invoke.texi (max_gcse_passes): Remove documentation.
25246         * params.def (PARAM_MAX_GCSE_PASSES): Remove.
25247         * params.h (MAX_GCSE_PASSES): Remove.
25248         * gcse.c (gcse_main): Run CPROP1, PRE or HOIST, and CPROP2
25249         in sequence.  Remove ability to run multiple passes.
25250         (bypass_jumps): Report run as third CPROP pass.
25251
25252 2009-04-12  Adam Nemet  <anemet@caviumnetworks.com>
25253
25254         PR middle-end/39651
25255         * except.c (can_throw_external): Look at each insn in a SEQUENCE
25256         when deciding whether the whole SEQUENCE can throw.
25257
25258 2009-04-12  Uros Bizjak  <ubizjak@gmail.com>
25259
25260         PR target/39740
25261         * config/alpha/predicates.md (local_symbolic_operand): Return 1 for
25262         offseted label references.
25263
25264 2009-04-11  Jan Hubicka  <jh@suse.cz>
25265
25266         * tree-ssa-pre.c (eliminate): Fix call of update_stmt.
25267
25268 2009-04-11  Richard Guenther  <rguenther@suse.de>
25269
25270         PR middle-end/39732
25271         * tree-inline.c (declare_return_variable): Mark DECL_BY_REFERENCE
25272         return variables as TREE_ADDRESSABLE.
25273
25274 2009-04-11  Richard Guenther  <rguenther@suse.de>
25275
25276         PR tree-optimization/39713
25277         * tree-ssa-sccvn.c (vn_get_expr_for): Make sure built
25278         reference trees have SSA_NAME operands.
25279
25280 2009-04-11  Richard Guenther  <rguenther@suse.de>
25281
25282         PR c/39712
25283         * c-gimplify.c (c_gimplify_expr): Adjust check for mismatched
25284         address expressions.
25285
25286 2009-04-11  Dave Korn  <dave.korn.cygwin@gmail.com>
25287
25288         * config/i386/cygwin-stdint.h (INT_LEAST32_TYPE):  Update to
25289         match changes in Cygwin 1.7
25290         (UINT_LEAST32_TYPE, INT_FAST16_TYPE, INT_FAST32_TYPE,
25291         UINT_FAST16_TYPE, UINT_FAST32_TYPE):  Likewise.
25292
25293 2009-04-10  Paolo Bonzini  <bonzini@gnu.org>
25294
25295         PR tree-optimization/39701
25296         * doc/invoke.texi (Optimization Options): Document change in
25297         meaning and initialization of -fdelete-null-pointer-checks.
25298
25299 2009-04-10  H.J. Lu  <hongjiu.lu@intel.com>
25300
25301         PR middle-end/39701
25302         * common.opt (-fdelete-null-pointer-checks): Initialize to 1.
25303
25304         * opts.c (decode_options): Don't set flag_delete_null_pointer_checks
25305         here.
25306
25307         * doc/invoke.texi: Update -fdelete-null-pointer-checks.
25308
25309 2009-04-10  Chao-ying Fu  <fu@mips.com>
25310
25311         * doc/tm.texi (Instruction Output): Document
25312         TARGET_ASM_FINAL_POSTSCAN_INSN.
25313         * target.h (final_postscan_insn): New field in asm_out.
25314         * target-def.h (TARGET_ASM_FINAL_POSTSCAN_INSN): New define.
25315         (TARGET_ASM_OUT): Add TARGET_ASM_FINAL_POSTSCAN_INSN.
25316         * final.c (final_scan_insn): Call
25317         targetm.asm_out.final_postscan_insn after outputting
25318         an asm macro and a normal instruction.
25319
25320         * config/mips/mips.h (FINAL_PRESCAN_INSN): New define.
25321         * config/mips/mips-protos.h (mips_final_prescan_insn): Declare.
25322         * config/mips/mips.c (mips_at_reg_p): New for_each_rtx callback.
25323         (mips_final_prescan_insn, mips_final_postscan_insn): New functions.
25324         (TARGET_ASM_FINAL_POSTSCAN_INSN): New define.
25325
25326 2009-04-10  Paolo Bonzini  <bonzini@gnu.org>
25327
25328         PR middle-end/39701
25329         * fold-const.c (tree_single_nonzero_warnv_p): Pass non-static
25330         variables as non-NULL even with -fdelete-null-pointer-checks.
25331
25332 2009-04-10  H.J. Lu  <hongjiu.lu@intel.com>
25333
25334         * config/rs6000/darwin-vecsave.asm: Remove extra "*/".
25335
25336 2009-04-09  H.J. Lu  <hongjiu.lu@intel.com>
25337
25338         PR target/39678
25339         * config/i386/i386.c (classify_argument): Handle SCmode with
25340         (bit_offset % 64) != 0.
25341
25342 2009-04-09  Sandra Loosemore  <sandra@codesourcery.com>
25343
25344         * doc/invoke.texi (Optimize Options): Add cross-reference to
25345         -Q --help=optimizers examples.
25346
25347 2009-04-10  Ben Elliston  <bje@au.ibm.com>
25348
25349         PR target/36800
25350         * config/rs6000/rs6000.c (rs6000_gimplify_va_arg): Do not set
25351         regalign for the reg == fpr and TDmode case.
25352
25353 2009-04-09  David Ayers  <ayers@fsfe.org>
25354
25355         PR objc/29200
25356         * objc/objc-act.c (warn_with_method): Remove helper function.
25357         (check_duplicates): Call warning and inform directly.
25358         (really_start_method): Likewise.
25359
25360 2009-04-09  Paolo Bonzini  <bonzini@gnu.org>
25361
25362         * expmed.c (expand_divmod): Always use a comparison for a division
25363         by a large unsigned integer.
25364
25365         * fold-const.c (tree_single_nonzero_warnv_p): Always treat decls
25366         for things others than variables or functions as nonzero.
25367
25368 2009-04-09  Nick Clifton  <nickc@redhat.com>
25369
25370         * unwind-compat.c: Change copyright header to refer to version
25371         3 of the GNU General Public License with version 3.1 of the
25372         GCC Runtime Library Exception and to point readers at the
25373         COPYING3 and COPYING3.RUNTIME files and the FSF's license web page.
25374         * config/alpha/crtfastmath.c: Likewise.
25375         * config/alpha/linux-unwind.h: Likewise.
25376         * config/alpha/qrnnd.asm: Likewise.
25377         * config/alpha/vms-crt0-64.c: Likewise.
25378         * config/alpha/vms-crt0.c: Likewise.
25379         * config/alpha/vms-dwarf2.asm: Likewise.
25380         * config/alpha/vms-dwarf2eh.asm: Likewise.
25381         * config/alpha/vms-psxcrt0-64.c: Likewise.
25382         * config/alpha/vms-psxcrt0.c: Likewise.
25383         * config/alpha/vms_tramp.asm: Likewise.
25384         * config/arc/initfini.c: Likewise.
25385         * config/arc/lib1funcs.asm: Likewise.
25386         * config/arm/bpabi-v6m.S: Likewise.
25387         * config/arm/bpabi.S: Likewise.
25388         * config/arm/bpabi.c: Likewise.
25389         * config/arm/crti.asm: Likewise.
25390         * config/arm/crtn.asm: Likewise.
25391         * config/arm/ieee754-df.S: Likewise.
25392         * config/arm/ieee754-sf.S: Likewise.
25393         * config/arm/lib1funcs.asm: Likewise.
25394         * config/arm/libunwind.S: Likewise.
25395         * config/arm/linux-atomic.c: Likewise.
25396         * config/arm/mmintrin.h: Likewise.
25397         * config/arm/pr-support.c: Likewise.
25398         * config/arm/unaligned-funcs.c: Likewise.
25399         * config/arm/unwind-arm.c: Likewise.
25400         * config/arm/unwind-arm.h: Likewise.
25401         * config/avr/libgcc.S: Likewise.
25402         * config/bfin/crti.s: Likewise.
25403         * config/bfin/crtlibid.s: Likewise.
25404         * config/bfin/crtn.s: Likewise.
25405         * config/bfin/lib1funcs.asm: Likewise.
25406         * config/bfin/linux-unwind.h: Likewise.
25407         * config/cris/arit.c: Likewise.
25408         * config/cris/cris_abi_symbol.c: Likewise.
25409         * config/darwin-64.c: Likewise.
25410         * config/darwin-crt2.c: Likewise.
25411         * config/darwin-crt3.c: Likewise.
25412         * config/darwin.h: Likewise.
25413         * config/dbxelf.h: Likewise.
25414         * config/dfp-bit.c: Likewise.
25415         * config/dfp-bit.h: Likewise.
25416         * config/elfos.h: Likewise.
25417         * config/fixed-bit.c: Likewise.
25418         * config/fixed-bit.h: Likewise.
25419         * config/fp-bit.c: Likewise.
25420         * config/fp-bit.h: Likewise.
25421         * config/fr30/crti.asm: Likewise.
25422         * config/fr30/crtn.asm: Likewise.
25423         * config/fr30/lib1funcs.asm: Likewise.
25424         * config/freebsd-spec.h: Likewise.
25425         * config/frv/cmovd.c: Likewise.
25426         * config/frv/cmovh.c: Likewise.
25427         * config/frv/cmovw.c: Likewise.
25428         * config/frv/frvbegin.c: Likewise.
25429         * config/frv/frvend.c: Likewise.
25430         * config/frv/lib1funcs.asm: Likewise.
25431         * config/glibc-stdint.h: Likewise.
25432         * config/h8300/clzhi2.c: Likewise.
25433         * config/h8300/crti.asm: Likewise.
25434         * config/h8300/crtn.asm: Likewise.
25435         * config/h8300/ctzhi2.c: Likewise.
25436         * config/h8300/fixunssfsi.c: Likewise.
25437         * config/h8300/lib1funcs.asm: Likewise.
25438         * config/h8300/parityhi2.c: Likewise.
25439         * config/h8300/popcounthi2.c: Likewise.
25440         * config/i386/ammintrin.h: Likewise.
25441         * config/i386/att.h: Likewise.
25442         * config/i386/avxintrin.h: Likewise.
25443         * config/i386/biarch64.h: Likewise.
25444         * config/i386/bmmintrin.h: Likewise.
25445         * config/i386/cpuid.h: Likewise.
25446         * config/i386/cross-stdarg.h: Likewise.
25447         * config/i386/crtfastmath.c: Likewise.
25448         * config/i386/crtprec.c: Likewise.
25449         * config/i386/cygming-crtbegin.c: Likewise.
25450         * config/i386/cygming-crtend.c: Likewise.
25451         * config/i386/cygwin.asm: Likewise.
25452         * config/i386/emmintrin.h: Likewise.
25453         * config/i386/gmm_malloc.h: Likewise.
25454         * config/i386/gthr-win32.c: Likewise.
25455         * config/i386/i386.h: Likewise.
25456         * config/i386/immintrin.h: Likewise.
25457         * config/i386/linux-unwind.h: Likewise.
25458         * config/i386/linux64.h: Likewise.
25459         * config/i386/mm3dnow.h: Likewise.
25460         * config/i386/mmintrin-common.h: Likewise.
25461         * config/i386/mmintrin.h: Likewise.
25462         * config/i386/nmmintrin.h: Likewise.
25463         * config/i386/pmm_malloc.h: Likewise.
25464         * config/i386/pmmintrin.h: Likewise.
25465         * config/i386/smmintrin.h: Likewise.
25466         * config/i386/sol2-c1.asm: Likewise.
25467         * config/i386/sol2-ci.asm: Likewise.
25468         * config/i386/sol2-cn.asm: Likewise.
25469         * config/i386/sol2-gc1.asm: Likewise.
25470         * config/i386/tmmintrin.h: Likewise.
25471         * config/i386/unix.h: Likewise.
25472         * config/i386/w32-unwind.h: Likewise.
25473         * config/i386/wmmintrin.h: Likewise.
25474         * config/i386/x86-64.h: Likewise.
25475         * config/i386/x86intrin.h: Likewise.
25476         * config/i386/xmmintrin.h: Likewise.
25477         * config/ia64/crtbegin.asm: Likewise.
25478         * config/ia64/crtend.asm: Likewise.
25479         * config/ia64/crtfastmath.c: Likewise.
25480         * config/ia64/crti.asm: Likewise.
25481         * config/ia64/crtn.asm: Likewise.
25482         * config/ia64/fde-glibc.c: Likewise.
25483         * config/ia64/lib1funcs.asm: Likewise.
25484         * config/ia64/linux-unwind.h: Likewise.
25485         * config/ia64/quadlib.c: Likewise.
25486         * config/ia64/unwind-ia64.c: Likewise.
25487         * config/linux.h: Likewise.
25488         * config/m32c/m32c-lib1.S: Likewise.
25489         * config/m32c/m32c-lib2-trapv.c: Likewise.
25490         * config/m32c/m32c-lib2.c: Likewise.
25491         * config/m32r/initfini.c: Likewise.
25492         * config/m68hc11/larith.asm: Likewise.
25493         * config/m68hc11/m68hc11-crt0.S: Likewise.
25494         * config/m68k/cf.md: Likewise.
25495         * config/m68k/crti.s: Likewise.
25496         * config/m68k/crtn.s: Likewise.
25497         * config/m68k/lb1sf68.asm: Likewise.
25498         * config/m68k/linux-unwind.h: Likewise.
25499         * config/mcore/crti.asm: Likewise.
25500         * config/mcore/crtn.asm: Likewise.
25501         * config/mcore/lib1.asm: Likewise.
25502         * config/mips/linux-unwind.h: Likewise.
25503         * config/mips/loongson.h: Likewise.
25504         * config/mips/mips16.S: Likewise.
25505         * config/mmix/crti.asm: Likewise.
25506         * config/mmix/crtn.asm: Likewise.
25507         * config/pa/fptr.c: Likewise.
25508         * config/pa/hpux-unwind.h: Likewise.
25509         * config/pa/lib2funcs.asm: Likewise.
25510         * config/pa/linux-atomic.c: Likewise.
25511         * config/pa/linux-unwind.h: Likewise.
25512         * config/pa/milli64.S: Likewise.
25513         * config/pa/quadlib.c: Likewise.
25514         * config/pa/stublib.c: Likewise.
25515         * config/picochip/libgccExtras/adddi3.asm: Likewise.
25516         * config/picochip/libgccExtras/ashlsi3.asm: Likewise.
25517         * config/picochip/libgccExtras/ashlsi3.c: Likewise.
25518         * config/picochip/libgccExtras/ashrsi3.asm: Likewise.
25519         * config/picochip/libgccExtras/ashrsi3.c: Likewise.
25520         * config/picochip/libgccExtras/cmpsi2.asm: Likewise.
25521         * config/picochip/libgccExtras/divmod15.asm: Likewise.
25522         * config/picochip/libgccExtras/divmodhi4.asm: Likewise.
25523         * config/picochip/libgccExtras/divmodsi4.asm: Likewise.
25524         * config/picochip/libgccExtras/longjmp.asm: Likewise.
25525         * config/picochip/libgccExtras/lshrsi3.asm: Likewise.
25526         * config/picochip/libgccExtras/lshrsi3.c: Likewise.
25527         * config/picochip/libgccExtras/parityhi2.asm: Likewise.
25528         * config/picochip/libgccExtras/popcounthi2.asm: Likewise.
25529         * config/picochip/libgccExtras/setjmp.asm: Likewise.
25530         * config/picochip/libgccExtras/subdi3.asm: Likewise.
25531         * config/picochip/libgccExtras/ucmpsi2.asm: Likewise.
25532         * config/picochip/libgccExtras/udivmodhi4.asm: Likewise.
25533         * config/picochip/libgccExtras/udivmodsi4.asm: Likewise.
25534         * config/rs6000/750cl.h: Likewise.
25535         * config/rs6000/altivec.h: Likewise.
25536         * config/rs6000/biarch64.h: Likewise.
25537         * config/rs6000/crtresfpr.asm: Likewise.
25538         * config/rs6000/crtresgpr.asm: Likewise.
25539         * config/rs6000/crtresxfpr.asm: Likewise.
25540         * config/rs6000/crtresxgpr.asm: Likewise.
25541         * config/rs6000/crtsavfpr.asm: Likewise.
25542         * config/rs6000/crtsavgpr.asm: Likewise.
25543         * config/rs6000/darwin-asm.h: Likewise.
25544         * config/rs6000/darwin-fallback.c: Likewise.
25545         * config/rs6000/darwin-fpsave.asm: Likewise.
25546         * config/rs6000/darwin-ldouble.c: Likewise.
25547         * config/rs6000/darwin-tramp.asm: Likewise.
25548         * config/rs6000/darwin-unwind.h: Likewise.
25549         * config/rs6000/darwin-vecsave.asm: Likewise.
25550         * config/rs6000/darwin-world.asm: Likewise.
25551         * config/rs6000/e500crtres32gpr.asm: Likewise.
25552         * config/rs6000/e500crtres64gpr.asm: Likewise.
25553         * config/rs6000/e500crtres64gprctr.asm: Likewise.
25554         * config/rs6000/e500crtrest32gpr.asm: Likewise.
25555         * config/rs6000/e500crtrest64gpr.asm: Likewise.
25556         * config/rs6000/e500crtresx32gpr.asm: Likewise.
25557         * config/rs6000/e500crtresx64gpr.asm: Likewise.
25558         * config/rs6000/e500crtsav32gpr.asm: Likewise.
25559         * config/rs6000/e500crtsav64gpr.asm: Likewise.
25560         * config/rs6000/e500crtsav64gprctr.asm: Likewise.
25561         * config/rs6000/e500crtsavg32gpr.asm: Likewise.
25562         * config/rs6000/e500crtsavg64gpr.asm: Likewise.
25563         * config/rs6000/e500crtsavg64gprctr.asm: Likewise.
25564         * config/rs6000/eabi-ci.asm: Likewise.
25565         * config/rs6000/eabi-cn.asm: Likewise.
25566         * config/rs6000/eabi.asm: Likewise.
25567         * config/rs6000/linux-unwind.h: Likewise.
25568         * config/rs6000/linux64.h: Likewise.
25569         * config/rs6000/paired.h: Likewise.
25570         * config/rs6000/paired.md: Likewise.
25571         * config/rs6000/ppc64-fp.c: Likewise.
25572         * config/rs6000/ppu_intrinsics.h: Likewise.
25573         * config/rs6000/rs6000.h: Likewise.
25574         * config/rs6000/si2vmx.h: Likewise.
25575         * config/rs6000/sol-ci.asm: Likewise.
25576         * config/rs6000/sol-cn.asm: Likewise.
25577         * config/rs6000/spe.h: Likewise.
25578         * config/rs6000/spu2vmx.h: Likewise.
25579         * config/rs6000/sysv4.h: Likewise.
25580         * config/rs6000/tramp.asm: Likewise.
25581         * config/rs6000/vec_types.h: Likewise.
25582         * config/s390/linux-unwind.h: Likewise.
25583         * config/s390/tpf-unwind.h: Likewise.
25584         * config/score/crti.asm: Likewise.
25585         * config/score/crtn.asm: Likewise.
25586         * config/sh/crt1.asm: Likewise.
25587         * config/sh/crti.asm: Likewise.
25588         * config/sh/crtn.asm: Likewise.
25589         * config/sh/divtab-sh4-300.c: Likewise.
25590         * config/sh/divtab-sh4.c: Likewise.
25591         * config/sh/divtab.c: Likewise.
25592         * config/sh/lib1funcs-4-300.asm: Likewise.
25593         * config/sh/lib1funcs-Os-4-200.asm: Likewise.
25594         * config/sh/lib1funcs.asm: Likewise.
25595         * config/sh/lib1funcs.h: Likewise.
25596         * config/sh/linux-atomic.asm: Likewise.
25597         * config/sh/linux-unwind.h: Likewise.
25598         * config/sh/shmedia.h: Likewise.
25599         * config/sh/sshmedia.h: Likewise.
25600         * config/sh/ushmedia.h: Likewise.
25601         * config/sparc/crtfastmath.c: Likewise.
25602         * config/sparc/linux-unwind.h: Likewise.
25603         * config/sparc/sol2-c1.asm: Likewise.
25604         * config/sparc/sol2-ci.asm: Likewise.
25605         * config/sparc/sol2-cn.asm: Likewise.
25606         * config/spu/divmodti4.c: Likewise.
25607         * config/spu/divv2df3.c: Likewise.
25608         * config/spu/float_disf.c: Likewise.
25609         * config/spu/float_unsdidf.c: Likewise.
25610         * config/spu/float_unsdisf.c: Likewise.
25611         * config/spu/float_unssidf.c: Likewise.
25612         * config/spu/mfc_multi_tag_release.c: Likewise.
25613         * config/spu/mfc_multi_tag_reserve.c: Likewise.
25614         * config/spu/mfc_tag_release.c: Likewise.
25615         * config/spu/mfc_tag_reserve.c: Likewise.
25616         * config/spu/mfc_tag_table.c: Likewise.
25617         * config/spu/multi3.c: Likewise.
25618         * config/spu/spu_internals.h: Likewise.
25619         * config/spu/spu_intrinsics.h: Likewise.
25620         * config/spu/spu_mfcio.h: Likewise.
25621         * config/spu/vec_types.h: Likewise.
25622         * config/spu/vmx2spu.h: Likewise.
25623         * config/stormy16/stormy16-lib2.c: Likewise.
25624         * config/svr4.h: Likewise.
25625         * config/sync.c: Likewise.
25626         * config/v850/lib1funcs.asm: Likewise.
25627         * config/vxlib-tls.c: Likewise.
25628         * config/vxlib.c: Likewise.
25629         * config/vxworks-dummy.h: Likewise.
25630         * config/xtensa/crti.asm: Likewise.
25631         * config/xtensa/crtn.asm: Likewise.
25632         * config/xtensa/ieee754-df.S: Likewise.
25633         * config/xtensa/ieee754-sf.S: Likewise.
25634         * config/xtensa/lib1funcs.asm: Likewise.
25635         * config/xtensa/lib2funcs.S: Likewise.
25636         * config/xtensa/linux-unwind.h: Likewise.
25637         * config/xtensa/unwind-dw2-xtensa.c: Likewise.
25638         * config/xtensa/unwind-dw2-xtensa.h: Likewise.
25639         * coretypes.h: Likewise.
25640         * crtstuff.c: Likewise.
25641         * defaults.h: Likewise.
25642         * dwarf2.h: Likewise.
25643         * emutls.c: Likewise.
25644         * gbl-ctors.h: Likewise.
25645         * gcov-io.h: Likewise.
25646         * ginclude/float.h: Likewise.
25647         * ginclude/iso646.h: Likewise.
25648         * ginclude/stdarg.h: Likewise.
25649         * ginclude/stdbool.h: Likewise.
25650         * ginclude/stddef.h: Likewise.
25651         * ginclude/stdfix.h: Likewise.
25652         * ginclude/stdint-gcc.h: Likewise.
25653         * ginclude/tgmath.h: Likewise.
25654         * gthr-aix.h: Likewise.
25655         * gthr-dce.h: Likewise.
25656         * gthr-gnat.c: Likewise.
25657         * gthr-gnat.h: Likewise.
25658         * gthr-lynx.h: Likewise.
25659         * gthr-mipssde.h: Likewise.
25660         * gthr-nks.h: Likewise.
25661         * gthr-posix.c: Likewise.
25662         * gthr-posix.h: Likewise.
25663         * gthr-posix95.h: Likewise.
25664         * gthr-rtems.h: Likewise.
25665         * gthr-single.h: Likewise.
25666         * gthr-solaris.h: Likewise.
25667         * gthr-tpf.h: Likewise.
25668         * gthr-vxworks.h: Likewise.
25669         * gthr-win32.h: Likewise.
25670         * gthr.h: Likewise.
25671         * libgcc2.c: Likewise.
25672         * libgcc2.h: Likewise.
25673         * libgcov.c: Likewise.
25674         * tsystem.h: Likewise.
25675         * typeclass.h: Likewise.
25676         * unwind-c.c: Likewise.
25677         * unwind-compat.h: Likewise.
25678         * unwind-dw2-fde-compat.c: Likewise.
25679         * unwind-dw2-fde-darwin.c: Likewise.
25680         * unwind-dw2-fde-glibc.c: Likewise.
25681         * unwind-dw2-fde.c: Likewise.
25682         * unwind-dw2-fde.h: Likewise.
25683         * unwind-dw2.c: Likewise.
25684         * unwind-dw2.h: Likewise.
25685         * unwind-generic.h: Likewise.
25686         * unwind-pe.h: Likewise.
25687         * unwind-sjlj.c: Likewise.
25688         * unwind.inc: Likewise.
25689         * config/arm/neon-gen.ml: Change generated copyright header to
25690         refer to version 3 of the GNU General Public License with
25691         version 3.1 of the GCC Runtime Library Exception and to point
25692         readers at the COPYING3 and COPYING3.RUNTIME files and the
25693         FSF's license web page.
25694         * config/arm/arm_neon.h: Regenerate.
25695
25696 2009-04-09  Jakub Jelinek  <jakub@redhat.com>
25697
25698         * config/cris/cris.md: Change copyright header to refer to version
25699         3 of the GNU General Public License.
25700         * doc/install.texi2html: Change copyright header to refer to version
25701         3 of the GNU General Public License and to point readers at the
25702         COPYING3 file and the FSF's license web page.
25703         * config/vax/linux.h: Likewise.
25704
25705 2009-04-09  Paolo Bonzini  <bonzini@gnu.org>
25706
25707         * config/i386/i386.md (cmpcc): New.
25708         * config/i386/sync.md (sync_compare_and_swap*): Set FLAGS_REG.
25709         (sync_compare_and_swap_cc*): Delete.
25710
25711         * config/s390/s390.c (s390_compare_emitted): Remove.
25712         (s390_emit_compare): Handle MODE_CC s390_compare_op0 like
25713         s390_compare_emitted used to be handled.  Assert that modes match.
25714         (s390_emit_compare_and_swap): Use s390_emit_compare, do not
25715         refer to sync_compare_and_swap_ccsi.
25716         * config/s390/s390.h (s390_compare_emitted): Remove.
25717         * config/s390/s390.md (seq): Look for MODE_CC s390_compare_op0
25718         instead of s390_compare_emitted.
25719         (stack_protect_test, sync_compare_and_swap_cc): Set s390_compare_op0
25720         instead of s390_compare_emitted.
25721         * config/s390/s390.md (cmpcc): New.
25722         (sync_compare_and_swapqi, sync_compare_and_swaphi): Clobber
25723         CC_REGNUM, do not pretend it's set.
25724         (sync_compare_and_swap_cc*): Delete.
25725         * config/s390/predicates.md (cc_reg_operand): New.
25726
25727         * expr.c (sync_compare_and_swap_cc): Delete.
25728         * optabs.h (sync_compare_and_swap_cc): Delete.
25729         * optabs.c (prepare_cmp_insn): Ignore which specific CCmode
25730         is being used with can_compare_p.
25731         (emit_cmp_and_jump_insn_1): Likewise when looking in the optab.
25732         (find_cc_set): New.
25733         (expand_bool_compare_and_swap): Do not use sync_compare_and_swap_cc,
25734         look for a MODE_CC set instead.  Use emit_store_flag.
25735         (expand_compare_and_swap_loop): Likewise, with some additional
25736         complication to avoid a force_reg when useless.  Use
25737         emit_cmp_and_jump_insns.
25738         * genopinit.c (optabs): Delete sync_compare_and_swap_cc.
25739         * doc/md.texi (sync_compare_and_swap_cc): Merge with
25740         sync_compare_and_swap documentation.
25741
25742 2009-04-09  Jan Hubicka  <jh@suse.cz>
25743
25744         * except.c (find_prev_try): Break out from ....
25745         (duplicate_eh_regions): ... here; properly update prev_try pointers
25746         when duplication part of tree.
25747         (dump_eh_tree): Improve dumping.
25748         (verify_eh_region): New.
25749         (verify_eh_tree): Use it.
25750
25751 2009-04-06  Richard Guenther  <rguenther@suse.de>
25752
25753         * c-gimplify.c (c_gimplify_expr): Fix the invalid GENERIC
25754         &ARRAY addresses by adjusting their types and prepending
25755         a conversion.
25756         * tree-cfg.c (verify_gimple_assign_single): Verify that
25757         addresses are correct.
25758
25759 2009-04-09  Richard Guenther  <rguenther@suse.de>
25760
25761         * tree-ssa-ccp.c (maybe_fold_stmt_addition): Move non-constant
25762         indices into an array reference if possible.
25763         * tree-ssa-forwprop.c (tree_ssa_forward_propagate_single_use_vars):
25764         Fold POINTER_PLUS_EXPR statements with invariant address.
25765
25766 2009-04-09  Alan Modra  <amodra@bigpond.net.au>
25767
25768         PR target/39634
25769         * config.gcc (powerpc64-*-linux*): Always build biarch.
25770
25771 2009-04-09  Joseph Myers  <joseph@codesourcery.com>
25772
25773         PR c/39613
25774         * c-typeck.c (do_case): If case label is not an INTEGER_CST, fold
25775         it and pedwarn if this results in an INTEGER_CST.
25776
25777 2009-04-08  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
25778
25779         * doc/install.texi: Update minimum GMP version.  Remove obsolete
25780         text in MPFR section.
25781
25782 2009-04-08  Jakub Jelinek  <jakub@redhat.com>
25783
25784         * dwarf2out.c (class_scope_p): New static inline.
25785         (class_or_namespace_scope_p): Use it.
25786         (gen_variable_die): Use DW_TAG_member tag for static data member
25787         declarations instead of DW_TAG_variable.
25788
25789         PR middle-end/39573
25790         * omp-low.c (expand_omp_taskreg): Finalize taskreg static local_decls
25791         variables.
25792
25793 2009-04-08  Richard Guenther  <rguenther@suse.de>
25794
25795         * tree-ssa-sccvn.c (valueize_refs): Do not continue to
25796         valueize random data.
25797
25798 2009-04-08  David Edelsohn  <edelsohn@gnu.org>
25799
25800         * config.gcc (aix tm_file):  Add aix-stdint.h.
25801         (aix tm clause use_gcc_stdint):  Set to wrap.
25802         * config/rs6000/aix-stdint.h:  New file.
25803
25804 2009-04-08  Richard Guenther  <rguenther@suse.de>
25805
25806         PR middle-end/36291
25807         * tree-dfa.c (add_referenced_var): Do not recurse into
25808         global initializers.
25809         * tree-ssa-ccp.c (get_symbol_constant_value): Add newly
25810         exposed variables.
25811         (fold_const_aggregate_ref): Likewise.
25812
25813 2009-04-08  Paolo Bonzini  <bonzini@gnu.org>
25814
25815         * recog.c (ordered_comparison_operator): New.
25816         * gensupport.c (std_preds): Add it.
25817         * doc/md.texi (Machine-Independent Predicates): Document it.
25818
25819 2009-04-08  Jan Hubicka  <jh@suse.cz>
25820
25821         * tree-eh.c (cleanup_eh): When not optimizing, do not try EH merging.
25822         * function.h (rtl_eh): Remove exception_handler_label_map.
25823         * except.c (ehl_hash, ehl_eq, add_ehl_entry,
25824         remove_exception_handler_label, for_each_eh_label_1): Remove.
25825         (rtl_remove_unreachable_regions): Remove.
25826         (convert_from_eh_region_ranges): Do not remove unreachable regions.
25827         (find_exception_handler_labels): Don't build the hashtable.
25828         (maybe_remove_eh_handler): Remove.
25829         (for_each_eh_label): Rewrite to walk the tree.
25830         (rest_of_handle_eh): Do not cleanup cfg prior EH construction.
25831         * except.h (maybe_remove_eh_handler): Remove.
25832         * passes.c (init_optimization_passes): Schedule second EH cleanup
25833         before out-of-ssa.
25834         * cfgrtl.c (rtl_delete_block, rtl_merge_blocks,
25835         cfg_layout_merge_blocks): Do not call maybe_remove_eh_handler.
25836
25837 2009-04-08  Paolo Bonzini  <bonzini@gnu.org>
25838
25839         * genoutput.c (validate_optab_operands): New.
25840         (gen_insn, gen_expand): Call it.
25841
25842         * genflags.c (gen_insn): Detect misused iterators.
25843         (main): Pass line_no to gen_insn, exit with status 1 on error.
25844
25845         * genextract.c (line_no): Make global.
25846         (VEC_safe_set_locstr): Change assertion to error message.
25847         (main): Exit with status 1 on error.
25848
25849 2009-04-08  Joseph Myers  <joseph@codesourcery.com>
25850
25851         PR c/39614
25852         PR c/39673
25853         * c-common.h (C_MAYBE_CONST_EXPR_PRE, C_MAYBE_CONST_EXPR_EXPR,
25854         C_MAYBE_CONST_EXPR_INT_OPERANDS, C_MAYBE_CONST_EXPR_NON_CONST,
25855         EXPR_INT_CONST_OPERANDS): Remove duplicate definitions.
25856         * c-convert.c (convert): Do not call fold on results of conversion
25857         functions when the result is a C_MAYBE_CONST_EXPR.
25858         * c-parser.c (c_parser_postfix_expression): Do not fold condition
25859         of __builtin_choose_expr.
25860         * c-typeck.c (remove_c_maybe_const_expr): New.
25861         (build_unary_op, build_conditional_expr, build_compound_expr,
25862         build_binary_op, c_objc_common_truthvalue_conversion): Call
25863         remove_c_maybe_const_expr on any input C_MAYBE_CONST_EXPR with
25864         integer operands.
25865
25866 2009-04-08  Bingfeng Mei  <bmei@broadcom.com>
25867
25868         * fold-const.c (const_binop): Combine two VECTOR_CST under operation
25869         CODE to produce a new one. Add a prototype to use fold_convert_const
25870
25871 2009-04-08  Danny Smith  <dannysmith@users.sourceforge.net>
25872
25873         PR bootstrap/39660
25874         * config/i386/host-mingw32.c (mingw32_gt_pch_use_address): Don't
25875         mix declarations and code.
25876
25877 2009-04-08  Ben Elliston  <bje@au.ibm.com>
25878
25879         * gcc.c: Replace `CC' with `GCC' throughout.
25880
25881 2009-04-07  H.J. Lu  <hongjiu.lu@intel.com>
25882
25883         * doc/invoke.texi: Document Atom support.
25884
25885 2009-04-07  Jason Merrill  <jason@redhat.com>
25886
25887         PR c++/25185
25888         * c-common.h, c-common.c: Add flag_pretty_templates.
25889         * c-opts.c (c_common_handle_option): Set it.
25890         * c.opt: Add -fno-pretty-templates.
25891         * doc/invoke.texi (C++ Dialect Options): Likewise.
25892
25893 2009-04-07  Uros Bizjak  <ubizjak@gmail.com>
25894
25895         * config/ia64/ia64.c (ia64_builtins): Add IA64_BUILTIN_HUGE_VALQ.
25896         (ia64_init_builtins): Handle IA64_BUILTIN_HUGE_VALQ.
25897         (ia64_expand_builtin): Likewise.
25898
25899 2009-04-07  Martin Jambor  <mjambor@suse.cz>
25900
25901         * tree-ssa-alias.c (refs_may_alias_p_1): Check for
25902         is_gimple_min_invariant rather than CONSTANT_CLASS_P so that invariant
25903         ADDR_EXPRS are include too.
25904
25905 2009-04-07  Richard Guenther  <rguenther@suse.de>
25906
25907         * tree-ssa-alias.c (ref_maybe_used_by_call_p_1): Non-aliased
25908         decls are only used if passes as parameters or if they are
25909         local statics and the call is not to a builtin.
25910         (call_may_clobber_ref_p_1): Likewise.
25911
25912 2009-04-07  Paolo Bonzini  <bonzini@gnu.org>
25913
25914         * expr.c (do_store_flag): Remove last argument.  Simplify code
25915         to avoid duplication of tests already done by can_compare_p.
25916         (expand_expr_real_1): Adjust caller.
25917
25918 2009-04-07  Paolo Bonzini  <bonzini@gnu.org>
25919
25920         * optabs.c (can_compare_p): Test the predicate of a
25921         cbranch and cstore pattern.
25922
25923 2009-04-07  Paolo Bonzini  <bonzini@gnu.org>
25924
25925         * expr.c (convert_move): Use emit_store_flag instead of
25926         "emulating" it.
25927
25928 2009-04-07  Paolo Bonzini  <bonzini@gnu.org>
25929
25930         * config/i386/i386.c (ix86_compare_emitted): Remove.
25931         (ix86_expand_compare, ix86_expand_branch): Handle MODE_CC
25932         ix86_compare_op0 like ix86_compare_emitted used to be handled.
25933         * config/i386/i386.h (ix86_compare_emitted): Remove.
25934         * config/i386/i386.md (stack_protect_test): Set ix86_compare_op0
25935         instead of ix86_compare_emitted.
25936         * config/i386/sync.md (sync_compare_and_swap_cc): Likewise.
25937
25938 2009-04-07  Andrew Stubbs  <ams@codesourcery.com>
25939
25940         * config.gcc (sh-*-*): Add sysroot-suffix.h to tm_file.
25941         Add t-sysroot-suffix to tmake_file.
25942         * config/print-sysroot-suffix.sh: New file.
25943         * config/t-sysroot-suffix: New file.
25944
25945 2009-04-07  Ben Elliston  <bje@au.ibm.com>
25946
25947         * libgcc2.c (INFINITY): Use __builtin_huge_val, not __builtin_inf,
25948         as the latter produces a warning when the target does not support
25949         infinity.
25950
25951 2009-04-07  Ben Elliston  <bje@au.ibm.com>
25952
25953         * dfp.c: Replace type punning assignments with memcpy throughout.
25954         * Makefile.in (dfp.o-warn): Remove.
25955
25956 2009-04-07  Alan Modra  <amodra@bigpond.net.au>
25957
25958         PR target/39634
25959         * config.gcc: Merge powerpc-*-linux* and powerpc64-*-linux*.
25960         Include soft-fp/t-softfp after rs6000/t-linux64.
25961
25962 2009-04-06  Eric Botcazou  <ebotcazou@adacore.com>
25963
25964         * stor-layout.c (set_sizetype): Use the full precision of their
25965         machine mode for bitsize types.
25966
25967 2009-04-06  H.J. Lu  <hongjiu.lu@intel.com>
25968
25969         * config/i386/i386.md: Revert 2 accidental checkins.
25970
25971 2009-04-06  Joey Ye  <joey.ye@intel.com>
25972             Xuepeng Guo  <xuepeng.guo@intel.com>
25973             H.J. Lu  <hongjiu.lu@intel.com>
25974
25975         Atom pipeline model, tuning and insn selection.
25976         * config.gcc (atom): Add atom config options and target.
25977
25978         * config/i386/atom.md: New.
25979
25980         * config/i386/i386.c (atom_cost): New cost.
25981         (m_ATOM): New macro flag.
25982         (initial_ix86_tune_features): Set m_ATOM.
25983         (x86_accumulate_outgoing_args): Likewise.
25984         (x86_arch_always_fancy_math_387): Likewise.
25985         (processor_target): Add Atom cost.
25986         (cpu_names): Add Atom cpu name.
25987         (override_options): Set Atom ISA.
25988         (ix86_issue_rate): New case PROCESSOR_ATOM.
25989         (ix86_adjust_cost): Likewise.
25990
25991         * config/i386/i386.h (TARGET_ATOM): New target macro.
25992         (ix86_tune_indices): Add X86_TUNE_OPT_AGU.
25993         (TARGET_OPT_AGU): New target option.
25994         (target_cpu_default): Add TARGET_CPU_DEFAULT_atom.
25995         (processor_type): Add PROCESSOR_ATOM.
25996
25997         * config/i386/i386.md (cpu): Add new value "atom".
25998         (use_carry, movu): New attr.
25999         (atom.md): Include atom.md.
26000         (adddi3_carry_rex64): Set attr "use_carry".
26001         (addqi3_carry): Likewise.
26002         (addhi3_carry): Likewise.
26003         (addsi3_carry): Likewise.
26004         (*addsi3_carry_zext): Likewise.
26005         (subdi3_carry_rex64): Likewise.
26006         (subqi3_carry): Likewise.
26007         (subhi3_carry): Likewise.
26008         (subsi3_carry): Likewise.
26009         (x86_movdicc_0_m1_rex64): Likewise.
26010         (*x86_movdicc_0_m1_se): Likewise.
26011         (x86_movsicc_0_m1): Likewise.
26012         (*x86_movsicc_0_m1_se): Likewise.
26013         (*adddi_1_rex64): Emit add insn as much as possible.
26014         (*addsi_1): Likewise.
26015         (return_internal): Set atom_unit.
26016         (return_internal_long): Likewise.
26017         (return_pop_internal): Likewise.
26018         (*rcpsf2_sse): Set atom_sse_attr attr.
26019         (*qrt<mode>2_sse): Likewise.
26020         (*prefetch_sse): Likewise.
26021
26022         * config/i386/i386-c.c (ix86_target_macros_internal): New case
26023         PROCESSOR_ATOM.
26024         (ix86_target_macros_internal): Likewise.
26025
26026         * config/i386/sse.md (cpu): Set attr "atom_sse_attr".
26027         (*prefetch_sse_rex): Likewise.
26028         (sse_rcpv4sf2): Likewise.
26029         (sse_vmrcpv4sf2): Likewise.
26030         (sse_sqrtv4sf2): Likewise.
26031         (<sse>_vmsqrt<mode>2): Likewise.
26032         (sse_ldmxcsr): Likewise.
26033         (sse_stmxcsr): Likewise.
26034         (*sse_sfence): Likewise.
26035         (sse2_clflush): Likewise.
26036         (*sse2_mfence): Likewise.
26037         (*sse2_lfence): Likewise.
26038         (avx_movup<avxmodesuffixf2c><avxmodesuffix>): Set attr "movu".
26039         (<sse>_movup<ssemodesuffixf2c>): Likewise.
26040         (avx_movdqu<avxmodesuffix>): Likewise.
26041         (avx_lddqu<avxmodesuffix>): Likewise.
26042         (sse2_movntv2di): Change attr "type" to "ssemov".
26043         (sse2_movntsi): Likewise.
26044         (rsqrtv8sf2): Change attr "type" to "sseadd".
26045         (sse3_addsubv2df3): Set attr "atom_unit".
26046         (sse3_h<plusminus_insn>v4sf3): Likewise.
26047         (*sse2_pmaddwd): Likewise.
26048         (*vec_extractv2di_1_rex64): Likewise.
26049         (*vec_extractv2di_1_avx): Likewise.
26050         (sse2_psadbw): Likewise.
26051         (ssse3_phaddwv8hi3): Likewise.
26052         (ssse3_phaddwv4hi3): Likewise.
26053         (ssse3_phadddv4si3): Likewise.
26054         (ssse3_phadddv2si3): Likewise.
26055         (ssse3_phaddswv8hi3): Likewise.
26056         (ssse3_phaddswv4hi3): Likewise.
26057         (ssse3_phsubwv8hi3): Likewise.
26058         (ssse3_phsubwv4hi3): Likewise.
26059         (ssse3_phsubdv4si3): Likewise.
26060         (ssse3_phsubdv2si3): Likewise.
26061         (ssse3_phsubswv8hi3): Likewise.
26062         (ssse3_phsubswv4hi3): Likewise.
26063         (ssse3_pmaddubsw128): Likewise.
26064         (sse3_pmaddubsw: Likewise.
26065         (ssse3_palignrti): Likewise.
26066         (ssse3_palignrdi): Likewise.
26067
26068 2009-04-06  Gerald Pfeifer  <gerald@pfeifer.com>
26069
26070         * doc/install.texi (Specific): Fix two cross-references to MinGW.
26071
26072 2009-04-06  Richard Guenther  <rguenther@suse.de>
26073
26074         PR tree-optimization/28868
26075         * tree-ssa-pre.c (inserted_phi_names): New bitmap to keep track
26076         of which PHI results we inserted.
26077         (insert_into_preds_of_block): Record inserted PHIs.
26078         (eliminate): Eliminate redundant PHI nodes.
26079         (init_pre): Init inserted_phi_names.
26080
26081 2009-04-06  Richard Guenther  <rguenther@suse.de>
26082
26083         PR tree-optimization/39643
26084         * tree-ssa-ccp.c (ccp_fold): Fold REALPART_EXPRs and
26085         IMAGPART_EXPRs of complex constants.
26086         (execute_fold_all_builtins): If we folded a call queue
26087         TODO_update_address_taken.
26088
26089 2009-04-06  Jan Hubicka  <jh@suse.cz>
26090
26091         PR middle-end/39659
26092         * except.c (remove_unreachable_regions): Propagate may_contain_throw
26093         flag.
26094
26095 2009-04-06  Andrew Stubbs  <ams@codesourcery.com>
26096
26097         * config/sh/lib1funcs.asm (ic_invalidate): Move ICBI out of the
26098         delay slot.
26099         (ic_invalidate_array): Likewise.
26100
26101 2009-04-06  Hariharan Sandanagobalane  <hariharan@picochip.com>
26102
26103         * calls.c (emit_library_call_value_1): Fix a problem with parameter
26104         alignment for library calls.
26105
26106 2009-04-06  Danny Smith  <dannysmith@users.sourceforge.net>
26107
26108         * config.gcc (mingw32 tm_file):  Add mingw-stdint.h.
26109         (mingw32 tm clause use_gcc_stdint):  Set to wrap.
26110         * config/i386/mingw-stdint.h:  New file.
26111
26112 2009-04-05  Richard Guenther  <rguenther@suse.de>
26113
26114         PR tree-optimization/39648
26115         * tree-ssa-sccvn.c (vn_reference_fold_indirect): Work around
26116         our &A vs. &A[0] IL deficiencies.
26117
26118 2009-04-04  Jan Hubicka  <jh@suse.cz>
26119
26120         * except.c (sjlj_find_directly_reachable_regions): Be ready for
26121         removed toplevel regions.
26122         (sjlj_mark_call_sites): Likewise.
26123
26124 2009-04-04  Dave Korn  <dave.korn.cygwin@gmail.com>
26125
26126         * config.gcc (cygwin tm_file):  Add cygwin-stdint.h.
26127         (cygwin tm clause use_gcc_stdint):  Set to wrap.
26128         * config/i386/cygwin-stdint.h:  New file.
26129
26130 2009-04-04  Richard Guenther  <rguenther@suse.de>
26131
26132         * Makefile.in (tree-ssa-copy.o): Add $(CFGLOOP_H) dependency.
26133         * tree-ssa-copy.c (init_copy_prop): Do not propagate through
26134         single-argument PHIs if we are in loop-closed SSA form.
26135         * tree-vect-loop-manip.c (slpeel_add_loop_guard): Pass extra guards
26136         for the pre-condition.
26137         (slpeel_tree_peel_loop_to_edge): Likewise.
26138         (vect_build_loop_niters): Take an optional sequence to append stmts.
26139         (vect_generate_tmps_on_preheader): Likewise.
26140         (vect_do_peeling_for_loop_bound): Take extra guards for the
26141         pre-condition.
26142         (vect_do_peeling_for_alignment): Adjust.  Unconditionally apply
26143         the cost model check.
26144         (vect_loop_versioning): Take stmt and stmt list to put pre-condition
26145         guards if we are going to peel.  Do not apply versioning in that case.
26146         * tree-vectorizer.h (vect_loop_versioning): Adjust declaration.
26147         (vect_do_peeling_for_loop_bound): Likewise.
26148         * tree-vect-loop.c (vect_transform_loop): If we are peeling for
26149         loop bound only record extra pre-conditions, do not apply loop
26150         versioning.
26151
26152 2009-04-04  Richard Guenther  <rguenther@suse.de>
26153
26154         * tree-ssa-operands.c (pop_stmt_changes): Remove automatic
26155         renaming code.
26156
26157 2009-04-04  Jan Hubicka  <jh@suse.cz>
26158
26159         * tree-ssa-uncprop.c (associate_equivalences_with_edges): Use
26160         last_basic_block for size of bb->index indexed array.
26161         * bt-load.c (compute_defs_uses_and_gen, compute_kill,
26162         compute_out, link_btr_uses, build_btr_def_use_webs,
26163         build_btr_def_use_webs, migrate_btr_defs): Likewise.
26164
26165 2009-04-04  Jan Hubicka  <jh@suse.cz>
26166
26167         * except.c (remove_eh_handler_and_replace): Break out from ...
26168         (remove_eh_handler): ... here.
26169         (bring_to_root): New function.
26170         (remove_unreachable_regions): Collect MUST_NOT_THROW, unify runtime
26171         handled ones, bring others to root of tree.
26172
26173 2009-04-04  Jan Hubicka  <jh@suse.cz>
26174
26175         * tree-eh.c (tree_empty_eh_handler_p): Pattern match more curefully.
26176         (all_phis_safe_to_merge): New function.
26177         (update_info): New structure.
26178         (make_eh_edge_and_update_phi, update_eh_edges): New functions.
26179         (cleanup_empty_eh): Update SSA if possible.
26180
26181 2009-04-04  Richard Guenther  <rguenther@suse.de>
26182
26183         * tree-ssa.c (verify_ssa): With -O0 we do not need VOPs.
26184         * tree-ssa-operands.c (append_vdef): Do not append VOPs at -O0.
26185         (append_vuse): Likewise.
26186
26187 2009-04-04  Jakub Jelinek  <jakub@redhat.com>
26188
26189         * unwind-dw2.h (_Unwind_FrameState): Add REG_UNDEFINED enum value.
26190         * unwind-dw2.c (execute_cfa_program): Set how to REG_UNDEFINED
26191         instead of REG_UNSAVED for DW_CFA_undefined.
26192         (uw_update_context_1): Handle REG_UNDEFINED the same as REG_UNSAVED.
26193         (uw_update_context): If RA column is REG_UNDEFINED, mark it as
26194         outermost frame.
26195
26196 2009-04-04  Richard Earnshaw  <rearnsha@arm.com>
26197
26198         PR target/39501
26199         * arm.md (movsfcc): Disable if not TARGET_HARD_FLOAT.
26200
26201 2009-04-04  Richard Guenther  <rguenther@suse.de>
26202
26203         PR tree-optimization/8781
26204         PR tree-optimization/37892
26205         * tree-ssa-sccvn.h (vn_reference_fold_indirect): Declare.
26206         * tree-ssa-sccvn.c (vn_reference_fold_indirect): New function.
26207         (valueize_refs): Call it for *& valueizations.
26208         (shared_reference_ops_from_ref): Rename to ...
26209         (valueize_shared_reference_ops_from_ref): ... this and valueize.
26210         (shared_reference_ops_from_call): Rename to ...
26211         (valueize_shared_reference_ops_from_call): ... this and valueize.
26212         (vn_reference_lookup): Update.
26213         (visit_reference_op_call): Likewise.
26214         * tree-ssa-pre.c (phi_translate_1): Fold *&.
26215         (eliminate): Value-replace the call address in call statements.
26216
26217 2009-04-04  Richard Guenther  <rguenther@suse.de>
26218
26219         PR tree-optimization/39636
26220         * tree-ssa-forwprop.c
26221         (forward_propagate_addr_into_variable_array_index): Check for
26222         GIMPLE_ASSIGN before accessing the rhs code.
26223
26224 2009-04-03  Jason Merrill  <jason@redhat.com>
26225
26226         * stor-layout.c (set_sizetype): Set TYPE_CANONICAL.
26227
26228 2009-04-03  Steve Ellcey  <sje@cup.hp.com>
26229
26230         * config/ia64/ia64.md (extendsfdf2, extendsfxf2, extenddfxf2,
26231         truncdfsf2, truncxfsf2, truncxfdf2, floatdixf2, fix_truncsfdi2,
26232         fix_truncdfdi2, fix_truncxfdi2, fix_truncxfdi2_alts, floatunsdisf2,
26233         floatunsdidf2, floatunsdixf2, fixuns_truncsfdi2, fixuns_truncdfdi2,
26234         fixuns_truncxfdi2, fixuns_truncxfdi2_alts, divsi3_internal,
26235         smuldi3_highpart, umuldi3_highpart, ctzdi2, *getf_exp_xf,
26236         divdi3_internal_lat, divdi3_internal_thr, mulditi3, *mulditi3_internal,
26237         umulditi3, *umulditi3_internal, addsf3, mulsf3, abssf2, negsf2,
26238         *nabssf2, sminsf3, smaxsf3, *maddsf4, *msubsf4, *nmulsf3, *nmaddsf4,
26239         *nmaddsf4_alts, divsf3, *sqrt_approx, sqrtsf2, sqrtsf2_internal_thr,
26240         adddf3, *adddf3_trunc, muldf3, *muldf3_trunc, absdf2, negdf2, *nabsdf2,
26241         smindf3, smaxdf3, *madddf4, *madddf4_trunc, *msubdf4, *msubdf4_trunc,
26242         *nmuldf3, *nmuldf3_trunc, *nmadddf4, *nmadddf4_alts, *nmadddf4_truncsf,
26243         *nmadddf4_truncsf_alts, divdf3, sqrtdf2, sqrtdf2_internal_thr, divxf3,
26244         sqrtxf2, sqrtxf2_internal_thr, *recip_approx):
26245         Use fr_reg_or_fp01_operand instead of fr_register_operand
26246
26247         * config/ia64/div.md (extend<mode>rf2, truncrf<mode>2,
26248         recip_approx_rf, divsf3_internal_thr, divsf3_internal_lat,
26249         divdf3_internal_thr, divdf3_internal_lat divxf3_internal): Ditto.
26250
26251 2009-04-03  Vladimir Makarov  <vmakarov@redhat.com>
26252
26253         PR rtl-optimization/39607
26254         PR rtl-optimization/39631
26255
26256         Revert:
26257
26258         2009-03-30  Vladimir Makarov  <vmakarov@redhat.com>
26259         * reload.c (push_reload, find_dummy_reload): Use df_get_live_out
26260         instead of DF_LR_OUT.
26261         * ira-lives.c (process_bb_node_lives): Ditto.
26262         * ira-color.c (ira_loop_edge_freq): Use df_get_live_{out,in}
26263         instead of DF_LR_{OUT,IN}.
26264         * ira-emit.c (generate_edge_moves, add_ranges_and_copies): Ditto.
26265         * ira-build.c (create_bb_allocnos, create_loop_allocnos): Ditto.
26266
26267 2009-04-03  Steven Bosscher  <steven@gcc.gnu.org>
26268
26269         * omp-low.c (pass_expand_omp): Don't claim to provide PROP_gimple_lomp.
26270         (execute_lower_omp): Always run but take the short way out if -fopenmp
26271         is not given.
26272         (gate_lower_omp): Remove, forcing the pass manager to always run the
26273         pass and always set PROP_gimple_lomp.
26274         (pass_lower_omp): Remove gate function.
26275         * matrix-reorg.c (pass_ipa_matrix_reorg): Don't claim to provide
26276         PROP_trees.  Instead, require it.
26277         * ipa-cp.c (pass_ipa_cp): Likewise.
26278         * ipa-inline.c (pass_early_inline): Don't claim to provide PROP_cfg.
26279         (pass_ipa_early_inline, pass_inline_parameters, pass_ipa_inline): Idem.
26280         * tree-profile.c (pass_tree_profile): Don't claim to provide PROP_cfg
26281         and PROP_gimple_leh.
26282
26283 2009-04-03  Richard Guenther  <rguenther@suse.de>
26284
26285         PR middle-end/13146
26286         PR tree-optimization/23940
26287         PR tree-optimization/33237
26288         PR middle-end/33974
26289         PR middle-end/34093
26290         PR tree-optimization/36201
26291         PR tree-optimization/36230
26292         PR tree-optimization/38049
26293         PR tree-optimization/38207
26294         PR tree-optimization/38230
26295         PR tree-optimization/38301
26296         PR tree-optimization/38585
26297         PR middle-end/38895
26298         PR tree-optimization/38985
26299         PR tree-optimization/39299
26300         * tree-ssa-structalias.h: Remove.
26301         * tree-ssa-operands.h (NULL_USE_OPERAND_P): Make of type use_operand_p.
26302         (NULL_DEF_OPERAND_P): Make of type def_operand_p.
26303         (struct vuse_element_d): Remove.
26304         (struct vuse_vec_d): Likewise.
26305         (VUSE_VECT_NUM_ELEM, VUSE_VECT_ELEMENT_NC, VUSE_ELEMENT_PTR_NC,
26306         VUSE_ELEMENT_VAR_NC, VUSE_VECT_ELEMENT, VUSE_ELEMENT_PTR,
26307         SET_VUSE_VECT_ELEMENT, SET_VUSE_ELEMENT_VAR, SET_VUSE_ELEMENT_PTR,
26308         VUSE_ELEMENT_VAR): Likewise.
26309         (struct voptype_d): Likewise.
26310         (NUM_VOP_FREE_BUCKETS): Likewise.
26311         (struct ssa_operands): Remove vop_free_buckets and mpt_table fields.
26312         (struct stmt_operands_d): Remove.
26313         (VUSE_OP_PTR, VUSE_OP, SET_VUSE_OP, VUSE_NUM, VUSE_VECT,
26314         VDEF_RESULT_PTR, VDEF_RESULT, VDEF_OP_PTR, VDEF_OP, SET_VDEF_OP,
26315         VDEF_NUM, VDEF_VECT): Likewise.
26316         (copy_virtual_operands): Remove.
26317         (operand_build_cmp): Likewise.
26318         (create_ssa_artificial_load_stmt): Likewise.
26319         (enum ssa_op_iter_type): Remove ssa_op_iter_vdef.
26320         (struct ssa_operand_iterator_d): Remove vuses, vdefs, mayusesm
26321         vuse_index and mayuse_index members.  Pack and move done and iter_type
26322         members to the front.
26323         (SSA_OP_VMAYUSE): Remove.
26324         (SSA_OP_VIRTUAL_USES): Adjust.
26325         (FOR_EACH_SSA_VDEF_OPERAND): Remove.
26326         (unlink_stmt_vdef): Declare.
26327         (add_to_addressable_set): Remove.
26328         * tree-vrp.c (stmt_interesting_for_vrp): Adjust.
26329         (vrp_visit_stmt): Likewise.
26330         * doc/tree-ssa.texi (Alias analysis): Update.
26331         * doc/invoke.texi (max-aliased-vops): Remove docs.
26332         (avg-aliased-vops): Likewise.
26333         * tree-into-ssa.c (syms_to_rename): Remove.
26334         (need_to_update_vops_p): Likewise.
26335         (need_to_initialize_update_ssa_p): Rename to ...
26336         (update_ssa_initialized_fn): ... this.  Track function we are
26337         initialized for.
26338         (symbol_marked_for_renaming): Simplify.
26339         (add_new_name_mapping): Do not set need_to_update_vops_p.
26340         (dump_currdefs): Use SYMS_TO_RENAME.
26341         (rewrite_update_stmt): Always walk all uses/defs.
26342         (dump_update_ssa): Adjust.
26343         (init_update_ssa): Take function argument.  Track what we are
26344         initialized for.
26345         (delete_update_ssa): Reset SYMS_TO_RENAME and update_ssa_initialized_fn.
26346         (create_new_def_for): Initialize for cfun, assert we are initialized
26347         for cfun.
26348         (mark_sym_for_renaming): Simplify.
26349         (mark_set_for_renaming): Do not initialize update-ssa.
26350         (need_ssa_update_p): Simplify.  Take function argument.
26351         (name_mappings_registered_p): Assert we ask for the correct function.
26352         (name_registered_for_update_p): Likewise.
26353         (ssa_names_to_replace): Likewise.
26354         (release_ssa_name_after_update_ssa): Likewise.
26355         (update_ssa): Likewise.  Use SYMS_TO_RENAME.
26356         (dump_decl_set): Do not print a newline.
26357         (debug_decl_set): Do it here.
26358         (dump_update_ssa): And here.
26359         * tree-ssa-loop-im.c (move_computations): Adjust.
26360         (movement_possibility): Likewise.
26361         (determine_max_movement): Likewise.
26362         (gather_mem_refs_stmt): Likewise.
26363         * tree-dump.c (dequeue_and_dump): Do not handle SYMBOL_MEMORY_TAG
26364         or NAME_MEMORY_TAG.
26365         * tree-complex.c (update_all_vops): Remove.
26366         (expand_complex_move): Adjust.
26367         * tree-ssa-loop-niter.c (chain_of_csts_start): Use NULL_TREE.
26368         Simplify test for memory referencing statement.  Exclude
26369         non-invariant ADDR_EXPRs.
26370         * tree-pretty-print.c (dump_generic_node): Do not handle memory tags.
26371         * tree-loop-distribution.c (generate_memset_zero): Adjust.
26372         (rdg_flag_uses): Likewise.
26373         * tree-tailcall.c (suitable_for_tail_opt_p): Remove memory-tag
26374         related code.
26375         (tree_optimize_tail_calls_1): Also split the
26376         edge from the entry block if we have degenerate PHI nodes in
26377         the first basic block.
26378         * tree.c (init_ttree): Remove memory-tag related code.
26379         (tree_code_size): Likewise.
26380         (tree_node_structure): Likewise.
26381         (build7_stat): Re-write to be build6_stat.
26382         * tree.h (MTAG_P, TREE_MEMORY_TAG_CHECK, TMR_TAG): Remove.
26383         (SSA_VAR_P): Adjust.
26384         (struct tree_memory_tag): Remove.
26385         (struct tree_memory_partition_tag): Likewise.
26386         (union tree_node): Adjust.
26387         (build7): Re-write to be build6.
26388         * tree-pass.h (pass_reset_cc_flags): Remove.
26389         (TODO_update_address_taken): New flag.
26390         (pass_simple_dse): Remove.
26391         * ipa-cp.c (ipcp_update_callgraph): Update SSA form.
26392         * params.h (MAX_ALIASED_VOPS): Remove.
26393         (AVG_ALIASED_VOPS): Likewise.
26394         * omp-low.c (expand_omp_taskreg): Update SSA form.
26395         * tree-ssa-dse.c (dse_optimize_stmt): Properly query if the rhs
26396         aliases the lhs in a copy stmt.
26397         * tree-ssa-dse.c (struct address_walk_data): Remove.
26398         (memory_ssa_name_same): Likewise.
26399         (memory_address_same): Likewise.
26400         (get_kill_of_stmt_lhs): Likewise.
26401         (dse_possible_dead_store_p): Simplify, use the oracle.  Handle
26402         unused stores.  Look through PHI nodes into post-dominated regions.
26403         (dse_optimize_stmt): Simplify.  Properly remove stores.
26404         (tree_ssa_dse): Compute dominators.
26405         (execute_simple_dse): Remove.
26406         (pass_simple_dse): Likewise.
26407         * ipa-reference.c (scan_stmt_for_static_refs): Open-code
26408         gimple_loaded_syms and gimple_stored_syms computation.
26409         * toplev.c (dump_memory_report): Dump alias and pta stats.
26410         * tree-ssa-sccvn.c (vn_reference_compute_hash): Simplify.
26411         (vn_reference_eq): Likewise.
26412         (vuses_to_vec, copy_vuses_from_stmt, vdefs_to_vec,
26413         copy_vdefs_from_stmt, shared_lookup_vops, shared_vuses_from_stmt,
26414         valueize_vuses): Remove.
26415         (get_def_ref_stmt_vuses): Simplify.  Rename to ...
26416         (get_def_ref_stmt_vuse): ... this.
26417         (vn_reference_lookup_2): New function.
26418         (vn_reference_lookup_pieces): Use walk_non_aliased_vuses for
26419         walking equivalent vuses.  Simplify.
26420         (vn_reference_lookup): Likewise.
26421         (vn_reference_insert): Likewise.
26422         (vn_reference_insert_pieces): Likewise.
26423         (visit_reference_op_call): Simplify.
26424         (visit_reference_op_load): Likewise.
26425         (visit_reference_op_store): Likewise.
26426         (init_scc_vn): Remove shared_lookup_vuses initialization.
26427         (free_scc_vn): Remove shared_lookup_vuses freeing.
26428         (sort_vuses, sort_vuses_heap): Remove.
26429         (get_ref_from_reference_ops): Export.
26430         * tree-ssa-sccvn.h (struct vn_reference_s): Replace vuses
26431         vector with single vuse pointer.
26432         (vn_reference_lookup_pieces, vn_reference_lookup,
26433         vn_reference_insert, vn_reference_insert_pieces): Adjust prototypes.
26434         (shared_vuses_from_stmt): Remove.
26435         (get_ref_from_reference_ops): Declare.
26436         * tree-ssa-loop-manip.c (slpeel_can_duplicate_loop_p): Adjust.
26437         * tree-ssa-copyrename.c (copy_rename_partition_coalesce): Remove
26438         memory-tag related code.
26439         * tree-ssa-ccp.c (get_symbol_constant_value): Remove memory-tag code.
26440         (likely_value): Add comment, skip static-chain of call statements.
26441         (surely_varying_stmt_p): Adjust.
26442         (gimplify_and_update_call_from_tree): Likewise.
26443         (execute_fold_all_builtins): Do not rebuild alias info.
26444         (gimplify_and_update_call_from_tree): Properly update VOPs.
26445         * tree-ssa-loop-ivopts.c (get_ref_tag): Remove.
26446         (copy_ref_info): Remove memory-tag related code.
26447         * tree-call-cdce.c (tree_call_cdce): Rename the VOP.
26448         * ipa-pure-const.c (check_decl): Remove memory-tag related code.
26449         (check_stmt): Open-code gimple_loaded_syms and gimple_stored_syms
26450         computation.
26451         * tree-ssa-dom.c (gimple_p): Remove typedef.
26452         (eliminate_redundant_computations): Adjust.
26453         (record_equivalences_from_stmt): Likewise.
26454         (avail_expr_hash): Likewise.
26455         (avail_expr_eq): Likewise.
26456         * tree-ssa-propagate.c (update_call_from_tree): Properly update VOPs.
26457         (stmt_makes_single_load): Likewise.
26458         (stmt_makes_single_store): Likewise.
26459         * tree-ssa-alias.c: Rewrite completely.
26460         (debug_memory_partitions, dump_mem_ref_stats, debug_mem_ref_stats,
26461         debug_mem_sym_stats, dump_mem_sym_stats_for_var,
26462         debug_all_mem_sym_stats, debug_mp_info, update_mem_sym_stats_from_stmt,
26463         delete_mem_ref_stats, create_tag_raw, dump_points_to_info,
26464         dump_may_aliases_for, debug_may_aliases_for, new_type_alias):
26465         Remove public functions.
26466         (pass_reset_cc_flags): Remove.
26467         (pass_build_alias): Move ...
26468         * tree-ssa-structalias.c (pass_build_alias): ... here.
26469         * tree-ssa-alias.c (may_be_aliased): Move ...
26470         * tree-flow-inline.h (may_be_aliased): ... here.
26471         tree-ssa-alias.c (struct count_ptr_d, count_ptr_derefs,
26472         count_uses_and_derefs): Move ...
26473         * gimple.c: ... here.
26474         * gimple.h (count_uses_and_derefs): Declare.
26475         * tree-ssa-alias.c (dump_alias_stats, ptr_deref_may_alias_global_p,
26476         ptr_deref_may_alias_decl_p, ptr_derefs_may_alias_p,
26477         same_type_for_tbaa, nonaliasing_component_refs_p, decl_refs_may_alias_p,
26478         indirect_ref_may_alias_decl_p, indirect_refs_may_alias_p,
26479         ref_maybe_used_by_call_p, ref_maybe_used_by_stmt_p,
26480         call_may_clobber_ref_p, stmt_may_clobber_ref_p, maybe_skip_until,
26481         get_continuation_for_phi, walk_non_aliased_vuses, walk_aliased_vdefs):
26482         New functions.
26483         * tree-dfa.c (refs_may_alias_p): Move ...
26484         * tree-ssa-alias.c (refs_may_alias_p): ... here.  Extend.
26485         * tree-ssa-alias.h: New file.
26486         * tree-ssa-sink.c (is_hidden_global_store): Adjust.
26487         (statement_sink_location): Likewise.
26488         * opts.c (decode_options): Do not adjust max-aliased-vops or
26489         avg-aliased-vops values.
26490         * timevar.def (TV_TREE_MAY_ALIAS): Remove.
26491         (TV_CALL_CLOBBER): Likewise.
26492         (TV_FLOW_SENSITIVE): Likewise.
26493         (TV_FLOW_INSENSITIVE): Likewise.
26494         (TV_MEMORY_PARTITIONING): Likewise.
26495         (TV_ALIAS_STMT_WALK): New timevar.
26496         * tree-ssa-loop-ivcanon.c (empty_loop_p): Adjust.
26497         * tree-ssa-address.c (create_mem_ref_raw): Use build6.
26498         (get_address_description): Remove memory-tag related code.
26499         * tree-ssa-ifcombine.c (bb_no_side_effects_p): Adjust.
26500         * treestruct.def (TS_MEMORY_TAG, TS_MEMORY_PARTITION_TAG): Remove.
26501         * tree-eh.c (cleanup_empty_eh): Do not leave stale SSA_NAMEs
26502         and immediate uses in statements.  Document.
26503         * gimple-pretty-print.c (dump_gimple_mem_ops): Adjust.
26504         (dump_symbols): Remove.
26505         (dump_gimple_mem_ops): Do not dump loaded or stored syms.
26506         * alias.c (get_deref_alias_set): New function split out from ...
26507         (get_alias_set): ... here.
26508         * alias.h (get_deref_alias_set): Declare.
26509         * tree-vect-data-refs.c (vect_create_data_ref_ptr): Remove unused
26510         type parameter.  Remove restrict pointer handling.  Create a
26511         ref-all pointer in case type-based alias sets do not conflict.
26512         (vect_analyze_data_refs): Remove SMT related code.
26513         * tree-vect-stmts.c (vectorizable_store): Re-instantiate TBAA assert.
26514         (vectorizable_load): Likewise.
26515         * tree-data-ref.h (struct dr_alias): Remove symbol_tag field.
26516         (DR_SYMBOL_TAG, DR_VOPS): Remove.
26517         * tree-data-ref.c (dr_may_alias_p): Use the alias-oracle.
26518         Ignore vops and SMTs.
26519         (dr_analyze_alias): Likewise..
26520         (free_data_ref): Likewise.
26521         (create_data_ref): Likewise.
26522         (analyze_all_data_dependences): Likewise.
26523         (get_references_in_stmt): Adjust.
26524         * tree-flow-inline.h (gimple_aliases_computed_p,
26525         gimple_addressable_vars, gimple_call_clobbered_vars,
26526         gimple_call_used_vars, gimple_global_var, may_aliases, memory_partition,
26527         factoring_name_p, mark_call_clobbered, clear_call_clobbered,
26528         compare_ssa_operands_equal, symbol_mem_tag, set_symbol_mem_tag,
26529         gimple_mem_ref_stats): Remove.
26530         (gimple_vop): New function.
26531         (op_iter_next_use): Remove vuses and mayuses cases.
26532         (op_iter_next_def): Remove vdefs case.
26533         (op_iter_next_tree): Remove vuses, mayuses and vdefs cases.
26534         (clear_and_done_ssa_iter): Do not set removed fields.
26535         (op_iter_init): Likewise.  Skip vuse and/or vdef if requested.
26536         Assert we are not iterating over vuses or vdefs if not also
26537         iterating over uses or defs.
26538         (op_iter_init_use): Likewise.
26539         (op_iter_init_def): Likewise.
26540         (op_iter_next_vdef): Remove.
26541         (op_iter_next_mustdef): Likewise.
26542         (op_iter_init_vdef): Likewise.
26543         (compare_ssa_operands_equal): Likewise.
26544         (link_use_stmts_after): Handle vuse operand.
26545         (is_call_used): Use is_call_clobbered.
26546         (is_call_clobbered): Global variables are always call clobbered,
26547         query the call-clobbers bitmap.
26548         (mark_call_clobbered): Ignore global variables.
26549         (clear_call_clobbered): Likewise.
26550         * tree-ssa-coalesce.c (create_outofssa_var_map): Adjust
26551         virtual operands sanity check.
26552         * tree.def (NAME_MEMORY_TAG, SYMBOL_MEMORY_TAG, MEMORY_PARTITION_TAG):
26553         Remove.
26554         (TARGET_MEM_REF): Remove TMR_TAG operand.
26555         * tree-dfa.c (add_referenced_var): Initialize call-clobber state.
26556         Remove call-clobber related code.
26557         (remove_referenced_var): Likewise.  Do not clear mpt or symbol_mem_tag.
26558         (dump_variable): Do not dump SMTs, memory stats, may-aliases or
26559         partitions or escape reason.
26560         (get_single_def_stmt, get_single_def_stmt_from_phi,
26561         get_single_def_stmt_with_phi): Remove.
26562         (dump_referenced_vars): Tidy.
26563         (get_ref_base_and_extent): Allow bare decls.
26564         (collect_dfa_stats): Adjust.
26565         * graphite.c (rename_variables_in_stmt): Adjust.
26566         (graphite_copy_stmts_from_block): Likewise.
26567         (translate_clast): Likewise.
26568         * tree-ssa-pre.c (struct bb_bitmap_sets): Add expr_dies bitmap.
26569         (EXPR_DIES): New.
26570         (translate_vuse_through_block): Use the oracle.
26571         (phi_translate_1): Adjust.
26572         (value_dies_in_block_x): Use the oracle.  Cache the outcome
26573         in EXPR_DIES.
26574         (valid_in_sets): Check if the VUSE for
26575         a REFERENCE is available.
26576         (eliminate): Do not remove stmts during elimination,
26577         instead queue and remove them afterwards.
26578         (do_pre): Do not rebuild alias info.
26579         (pass_pre): Run TODO_rebuild_alias before PRE.
26580         * tree-ssa-live.c (remove_unused_locals): Remove memory-tag code.
26581         * tree-sra.c (sra_walk_function): Use gimple_references_memory_p.
26582         (mark_all_v_defs_stmt): Remove.
26583         (mark_all_v_defs_seq): Adjust.
26584         (sra_replace): Likewise.
26585         (scalarize_use): Likewise.
26586         (scalarize_copy): Likewise.
26587         (scalarize_init): Likewise.
26588         (scalarize_ldst): Likewise.
26589         (todoflags): Remove.
26590         (tree_sra): Do not rebuild alias info.
26591         (tree_sra_early): Adjust.
26592         (pass_sra): Run TODO_update_address_taken before SRA.
26593         * tree-predcom.c (set_alias_info): Remove.
26594         (prepare_initializers_chain): Do not call it.
26595         (mark_virtual_ops_for_renaming): Adjust.
26596         (mark_virtual_ops_for_renaming_list): Remove.
26597         (initialize_root_vars): Adjust.
26598         (initialize_root_vars_lm): Likewise.
26599         (prepare_initializers_chain): Likewise.
26600         * tree-ssa-copy.c (may_propagate_copy): Remove memory-tag related code.
26601         (may_propagate_copy_into_stmt): Likewise.
26602         (merge_alias_info): Do nothing for now.
26603         (propagate_tree_value_into_stmt): Adjust.
26604         (stmt_may_generate_copy): Likewise.
26605         * tree-ssa-forwprop.c (tidy_after_forward_propagate_addr): Do
26606         not mark symbols for renaming.
26607         (forward_propagate_addr_expr): Match up push/pop_stmt_changes
26608         with the same statement, make sure to update the new pointed-to one.
26609         * tree-ssa-dce.c (eliminate_unnecessary_stmts): Do not copy
26610         call statements, do not mark symbols for renaming.
26611         (mark_operand_necessary): Dump something.
26612         (ref_may_be_aliased): New function.
26613         (mark_aliased_reaching_defs_necessary_1): New helper function.
26614         (mark_aliased_reaching_defs_necessary): Likewise.
26615         (mark_all_reaching_defs_necessary_1): Likewise.
26616         (mark_all_reaching_defs_necessary): Likewise.
26617         (propagate_necessity): Do not process virtual PHIs.  For
26618         non-aliased loads mark all reaching definitions as necessary.
26619         For aliased loads and stores mark the immediate dominating
26620         aliased clobbers as necessary.
26621         (visited): New global static.
26622         (perform_tree_ssa_dce): Free visited bitmap after propagating
26623         necessity.
26624         (remove_dead_phis): Perform simple dead virtual PHI removal.
26625         (remove_dead_stmt): Properly unlink virtual operands when
26626         removing stores.
26627         (eliminate_unnecessary_stmts): Schedule PHI removal after
26628         stmt removal.
26629         * tree-ssa-ter.c (is_replaceable_p): Adjust.
26630         (process_replaceable): Likewise.
26631         (find_replaceable_in_bb): Likewise.
26632         * tree-ssa.c (verify_ssa_name): Verify all VOPs are
26633         based on the single gimple vop.
26634         (verify_flow_insensitive_alias_info): Remove.
26635         (verify_flow_sensitive_alias_info): Likewise.
26636         (verify_call_clobbering): Likewise.
26637         (verify_memory_partitions): Likewise.
26638         (verify_alias_info): Likewise.
26639         (verify_ssa): Adjust..
26640         (execute_update_addresses_taken): Export.  Update SSA
26641         manually.  Optimize only when optimizing.  Use a local bitmap.
26642         (pass_update_address_taken): Remove TODO_update_ssa, add
26643         TODO_dump_func.
26644         (pass_update_address_taken): Just use TODO_update_address_taken.
26645         (init_tree_ssa): Do not initialize addressable_vars.
26646         (verify_ssa): Verify new VUSE / VDEF properties.
26647         Verify that all stmts definitions have the stmt as SSA_NAME_DEF_STMT.
26648         Do not call verify_alias_info.
26649         (delete_tree_ssa): Clear the VUSE, VDEF operands.
26650         Do not free the loaded and stored syms bitmaps.  Reset the escaped
26651         and callused solutions.  Do not free addressable_vars.
26652         Remove memory-tag related code.
26653         (warn_uninitialized_var): Aliases are always available.
26654         * tree-ssa-loop-prefetch.c (gather_memory_references): Adjust.
26655         * lambda-code.c (can_put_in_inner_loop): Adjust.
26656         (can_put_after_inner_loop): Likewise.
26657         (perfect_nestify): Likewise.
26658         * tree-vect-stmts.c (vect_stmt_relevant_p): Adjust.
26659         (vect_gen_widened_results_half): Remove CALL_EXPR handling.
26660         (vectorizable_conversion): Do not mark symbols for renaming.
26661         * tree-inline.c (remap_gimple_stmt): Clear VUSE/VDEF.
26662         (expand_call_inline): Unlink the calls virtual operands before
26663         replacing it.
26664         (tree_function_versioning): Do not call update_ssa if we are not
26665         updating clones.  Simplify.
26666         * tree-ssa-phiprop.c (phivn_valid_p): Adjust.
26667         (propagate_with_phi): Likewise..
26668         * tree-outof-ssa.c (create_temp): Remove memory tag and call
26669         clobber code.  Assert we are not aliased or global.
26670         * tree-flow.h: Include tree-ssa-alias.h
26671         (enum escape_type): Remove.
26672         (struct mem_sym_stats_d): Likewise.
26673         (struct mem_ref_stats_d): Likewise.
26674         (struct gimple_df): Add vop member.  Remove global_var,
26675         call_clobbered_vars, call_used_vars, addressable_vars,
26676         aliases_compted_p and mem_ref_stats members.  Add syms_to_rename,
26677         escaped and callused members.
26678         (struct ptr_info_def): Remove all members, add points-to solution
26679         member pt.
26680         (struct var_ann_d): Remove in_vuse_list, in_vdef_list,
26681         call_clobbered, escape_mask, mpt and symbol_mem_tag members.
26682         * Makefile.in (TREE_FLOW_H): Add tree-ssa-alias.h.
26683         (tree-ssa-structalias.o): Remove tree-ssa-structalias.h.
26684         (tree-ssa-alias.o): Likewise.
26685         (toplev.o): Add tree-ssa-alias.h
26686         (GTFILES): Remove tree-ssa-structalias.h, add tree-ssa-alias.h.
26687         * gimple.c (gimple_set_bb): Fix off-by-one error.
26688         (is_gimple_reg): Do not handle memory tags.
26689         (gimple_copy): Also copy virtual operands.
26690         Delay updating the statement.  Do not reset loaded and stored syms.
26691         (gimple_set_stored_syms): Remove.
26692         (gimple_set_loaded_syms): Likewise.
26693         (gimple_call_copy_skip_args): Copy the virtual operands
26694         and mark the new statement modified.
26695         * tree-ssa-structalias.c (may_alias_p): Remove.
26696         (set_uids_in_ptset): Take the alias set to prune with as
26697         parameter.  Fold in the alias test of may_alias_p.
26698         (compute_points_to_sets): Compute whether a ptr is dereferenced
26699         in a local sbitmap.
26700         (process_constraint): Deal with &ANYTHING on the lhs, reject all
26701         other ADDRESSOF constraints on the lhs.
26702         (get_constraint_for_component_ref): Assert that we don't get
26703         ADDRESSOF constraints from the base of the reference.
26704         Properly generate UNKNOWN_OFFSET for DEREF if needed.
26705         (struct variable_info): Remove collapsed_to member.
26706         (get_varinfo_fc): Remove.
26707         (new_var_info): Do not set collapsed_to.
26708         (dump_constraint): Do not follow cycles.
26709         (dump_constraint_graph): Likewise.
26710         (build_pred_graph): Likewise.
26711         (build_succ_graph): Likewise.
26712         (rewrite_constraints): Likewise.
26713         (do_simple_structure_copy): Remove.
26714         (do_rhs_deref_structure_copy): Remove.
26715         (do_lhs_deref_structure_copy): Remove.
26716         (collapse_rest_of_var): Remove.
26717         (do_structure_copy): Re-implement.
26718         (pta_stats): New global variable.
26719         (dump_pta_stats): New function.
26720         (struct constraint_expr): Make offset signed.
26721         (UNKNOWN_OFFSET): Define special value.
26722         (dump_constraint): Dump UNKNOWN_OFFSET as UNKNOWN.
26723         (solution_set_expand): New helper function split out from ...
26724         (do_sd_constraint): ... here.
26725         (solution_set_add): Handle UNKNOWN_OFFSET.  Handle negative offsets.
26726         (do_ds_constraint): Likewise.
26727         (do_sd_constraint): Likewise.  Do not special-case ESCAPED = *ESCAPED
26728         and CALLUSED = *CALLUSED.
26729         (set_union_with_increment): Make inc argument signed.
26730         (type_safe): Remove.
26731         (get_constraint_for_ptr_offset): Handle unknown and negative
26732         constant offsets.
26733         (first_vi_for_offset): Handle offsets before start.  Bail
26734         out early for offsets beyond the variable extent.
26735         (first_or_preceding_vi_for_offset): New function.
26736         (init_base_vars): Add ESCAPED = ESCAPED + UNKNOWN_OFFSET constraint.
26737         Together with ESCAPED = *ESCAPED this properly computes reachability.
26738         (find_what_var_points_to): New function.
26739         (find_what_p_points_to): Implement in terms of find_what_var_points_to.
26740         (pt_solution_reset, pt_solution_empty_p, pt_solution_includes_global,
26741         pt_solution_includes_1, pt_solution_includes, pt_solutions_intersect_1,
26742         pt_solutions_intersect): New functions.
26743         (compute_call_used_vars): Remove.
26744         (compute_may_aliases): New main entry into PTA computation.
26745         * gimple.h (gimple_p): New typedef.
26746         (struct gimple_statement_base): Remove references_memory_p.
26747         (struct gimple_statement_with_memory_ops_base): Remove
26748         vdef_ops, vuse_ops, stores and loads members.  Add vdef and vuse
26749         members.
26750         (gimple_vuse_ops, gimple_set_vuse_ops, gimple_vdef_ops,
26751         gimple_set_vdef_ops, gimple_loaded_syms, gimple_stored_syms,
26752         gimple_set_references_memory): Remove.
26753         (gimple_vuse_op, gimple_vdef_op, gimple_vuse, gimple_vdef,
26754         gimple_vuse_ptr, gimple_vdef_ptri, gimple_set_vuse, gimple_set_vdef):
26755         New functions.
26756         * tree-cfg.c (move_block_to_fn): Fix off-by-one error.
26757         (verify_expr): Allow RESULT_DECL.
26758         (gimple_duplicate_bb): Do not copy virtual operands.
26759         (gimple_duplicate_sese_region): Adjust.
26760         (gimple_duplicate_sese_tail): Likewise.
26761         (mark_virtual_ops_in_region): Remove.
26762         (move_sese_region_to_fn): Do not call it.
26763         * passes.c (init_optimization_passes): Remove pass_reset_cc_flags
26764         and pass_simple_dse.
26765         (execute_function_todo): Handle TODO_update_address_taken,
26766         call execute_update_addresses_taken for TODO_rebuild_alias.
26767         (execute_todo): Adjust.
26768         (execute_one_pass): Init dump files early.
26769         * ipa-struct-reorg.c (finalize_var_creation): Do not mark vars
26770         call-clobbered.
26771         (create_general_new_stmt): Clear vops.
26772         * tree-ssa-reassoc.c (get_rank): Adjust.
26773         * tree-vect-slp.c (vect_create_mask_and_perm): Do not mark
26774         symbols for renaming.
26775         * params.def (PARAM_MAX_ALIASED_VOPS): Remove.
26776         (PARAM_AVG_ALIASED_VOPS): Likewise.
26777         * tree-ssanames.c (init_ssanames): Allocate SYMS_TO_RENAME.
26778         (duplicate_ssa_name_ptr_info): No need to copy the shared bitmaps.
26779         * tree-ssa-operands.c: Simplify for new virtual operand representation.
26780         (operand_build_cmp, copy_virtual_operands,
26781         create_ssa_artificial_load_stmt, add_to_addressable_set,
26782         gimple_add_to_addresses_taken): Remove public functions.
26783         (unlink_stmt_vdef): New function.
26784
26785 2009-04-03  Alan Modra  <amodra@bigpond.net.au>
26786
26787         * config.gcc (powerpc-*-linux*): Merge variants.
26788
26789 2009-04-02  Chao-ying Fu  <fu@mips.com>
26790             James Grosbach  <james.grosbach@microchip.com>
26791
26792         * config/mips/mips.c (mips_frame_info): Add acc_mask, num_acc,
26793         num_cop0_regs, acc_save_offset, cop0_save_offset, acc_sp_offset,
26794         cop0_sp_offset.
26795         (machine_function): Add interrupt_handler_p, use_shadow_register_set_p,
26796         keep_interrupts_masked_p, use_debug_exception_return_p.
26797         (mips_attribute_table): Add interrupt, use_shadow_register_set,
26798         keep_interrupts_masked, use_debug_exception_return.
26799         (mips_interrupt_type_p, mips_use_shadow_register_set_p,
26800         mips_keep_interrupts_masked_p, mips_use_debug_exception_return_p):
26801         New functions.
26802         (mips_function_ok_for_sibcall): Return false for interrupt handlers.
26803         (mips_print_operand): Process COP0 registers to print $0 .. $31
26804         correctly for GAS to process.
26805         (mips_interrupt_extra_call_saved_reg_p): New function.
26806         (mips_cfun_call_saved_reg_p): For interrupt handlers, we need to check
26807         extra registers.
26808         (mips_cfun_might_clobber_call_saved_reg_p): Likewise.
26809         (mips_compute_frame_info): Add supports for interrupt context that
26810         includes doubleword accumulators and COP0 registers.
26811         (mips_for_each_saved_acc): New function.
26812         (mips_for_each_saved_gpr_and_fpr): Change the function name from
26813         mips_for_each_saved_reg.
26814         (mips_save_reg): Save accumulators.
26815         (mips_kernel_reg_p): A new for_each_rtx callback.
26816         (mips_expand_prologue): Support interrupt handlers.
26817         (mips_restore_reg): Restore accumulators.
26818         (mips_expand_epilogue): Support interrupt handlers.
26819         (mips_can_use_return_insn): Return false for interrupt handlers.
26820         (mips_epilogue_uses): New function.
26821         * config/mips/mips.md (UNSPEC_ERET, UNSPEC_DERET, UNSPEC_DI,
26822         UNSPEC_EHB, UNSPEC_RDPGPR, UNSPEC_COP0): New UNSPEC.
26823         (mips_eret, mips_deret, mips_di, mips_ehb, mips_rdpgpr,
26824         cop0_move): New instructions.
26825         * config/mips/mips-protos.h (mips_epilogue_uses): Declare.
26826         * config/mips/mips.h (K0_REG_NUM, K1_REG_NUM, KERNEL_REG_P): New
26827         defines.
26828         (COP0_STATUS_REG_NUM, COP0_CAUSE_REG_NUM, COP0_EPC_REG_NUM):
26829         New defines.
26830         (CAUSE_IPL, SR_IPL, SR_EXL, SR_IE): New defines.
26831         (MIPS_PROLOGUE_TEMP_REGNUM, MIPS_EPILOGUE_TEMP_REGNUM): For
26832         interrupt handlers, we use K0 as the temporary register.
26833         (EPILOGUE_USES): Change to a function call.
26834         * config/mips/sde.h (MIPS_EPILOGUE_TEMP_REGNUM): For interrupt
26835         handlers, we use K0 as the temporary register.
26836
26837         * doc/extend.texi (Function Attributes): Document interrupt,
26838         use_shadow_register_set, keep_interrupts_masked,
26839         use_debug_exception_return for MIPS attributes.
26840
26841 2009-04-03  Alan Modra  <amodra@bigpond.net.au>
26842
26843         * config.gcc (powerpc64-*-gnu*): Add rs6000/default64.h to tm_file.
26844         Remove a number of t-files from tmake_file.
26845         * config/rs6000/sysv4.opt (mprototype): Name variable target_prototype.
26846         * config/rs6000/sysv4.h (TARGET_PROTOTYPE): Define.
26847         * config/rs6000/linux64.h (SUBSUBTARGET_OVERRIDE_OPTIONS): Set
26848         target_prototype, not TARGET_PROTOTYPE.
26849         (LINK_OS_GNU_SPEC): Define.
26850         * config/rs6000/t-linux64 (LIB2FUNCS_EXTRA): Delete tramp.S
26851         and darwin-ldoubdle.c.
26852
26853 2009-04-02  Michael Meissner  <meissner@linux.vnet.ibm.com>
26854
26855         PR driver/39293
26856         * gcc.c (save_temps_flag): Add support for -save-temps=obj.
26857         (cpp_options): Ditto.
26858         (default_compilers): Ditto.
26859         (display_help): Ditto.
26860         (process_command): Ditto.
26861         (do_spec_1): Ditto.
26862         (set_input): Use lbasename instead of duplicate code.
26863         (save_temps_prefix): New static for -save-temps=obj.
26864         (save_temps_length): Ditto.
26865
26866         * doc/invoke.texi (-save-temps=obj): Document new variant to
26867         -save-temps switch.
26868
26869 2009-04-02  Jeff Law  <law@redhat.com>
26870
26871         * reload1.c (fixup_eh_region_notes): Remove write-only "trap_count"
26872         variable.
26873
26874 2009-04-02  H.J. Lu  <hongjiu.lu@intel.com>
26875
26876         * configure.ac: Support -Bstatic/-Bdynamic for linker version > 2.
26877         * configure: Regenerated.
26878
26879 2009-04-02  Rafael Avila de Espindola  <espindola@google.com>
26880
26881         * c-decl.c (merge_decls): Make sure newdecl and olddecl don't
26882         share the argument list.
26883
26884 2009-04-02  Rafael Avila de Espindola  <espindola@google.com>
26885
26886         Merge
26887
26888         2009-02-12  Diego Novillo  <dnovillo@google.com>
26889
26890         * varpool.c (debug_varpool): New.
26891         * cgraph.h (debug_varpool): Declare.
26892
26893 2009-04-02  Jan Hubicka  <jh@suse.cz>
26894
26895         * passes.c (init_optimization_passes): Remove two copies of ehcleanup
26896         pass.
26897
26898 2009-04-02  H.J. Lu  <hongjiu.lu@intel.com>
26899
26900         * config/i386/i386.c (ix86_abi): Move initialization to ...
26901         (override_options): Here.
26902
26903 2009-04-02  Christian Bruel  <christian.bruel@st.com>
26904
26905         * config/sh/sh.c (sh_dwarf_register_span): New function.
26906         (TARGET_DWARF_REGISTER_SPAN): Define.
26907         * config/sh/sh-protos.h (sh_dwarf_register_span): Declare.
26908
26909 2009-04-02  Ira Rosen  <irar@il.ibm.com>
26910
26911         PR tree-optimization/39595
26912         * tree-vect-slp.c (vect_build_slp_tree): Check that the size of
26913         interleaved loads group is not  greater than the SLP group size.
26914
26915 2009-04-02  Rafael Avila de Espindola  <espindola@google.com>
26916
26917         * builtins.c (is_builtin_name): New.
26918         (called_as_built_in): Use is_builtin_name.
26919         * tree.h (is_builtin_name): New.
26920         * varasm.c (incorporeal_function_p): Use is_builtin_name
26921
26922 2009-04-02  Andrew Stubbs  <ams@codesourcery.com>
26923
26924         * config/sh/linux-unwind.h: Disable when inhibit_libc is defined.
26925
26926 2009-04-02  Dodji Seketeli  <dodji@redhat.com>
26927
26928         PR c++/26693
26929         * c-decl.c (clone_underlying_type): Move this ...
26930         * c-common.c (set_underlying_type): ... here.
26931         Also, make sure the function properly sets TYPE_STUB_DECL() on
26932         the newly created typedef variant type.
26933         * c-common.h (is_typedef_decl, set_underlying_type): Declare ...
26934         * c-common.c (is_typedef_decl, set_underlying_type): ... new entry
26935         points.
26936
26937 2009-04-02  Richard Guenther  <rguenther@suse.de>
26938
26939         PR tree-optimization/37221
26940         * tree-flow.h (degenerate_phi_result): Declare.
26941         * tree-ssa-dom.c (degenerate_phi_result): Export.
26942         * tree-scalar-evolution.c (analyze_initial_condition): If
26943         the initial condition is defined by a degenerate PHI node
26944         use the degenerate value.
26945
26946 2009-04-01  Eric Botcazou  <ebotcazou@adacore.com>
26947
26948         PR rtl-optimization/39588
26949         * combine.c (merge_outer_ops): Do not set the constant when this
26950         is not necessary.
26951         (simplify_shift_const_1): Do not modify it either in this case.
26952
26953 2009-04-01  Steven Bosscher  <steven@gcc.gnu.org>
26954
26955         * config/ia64/ia64.c (ia64_handle_option): Inform user that Itanium1
26956         tuning is deprecated if -mtune value is set to an Itanium1 variant.
26957
26958 2009-04-01  Janis Johnson  <janis187@us.ibm.com>
26959
26960         PR c/29027
26961         * c-lex.c (interpret_float): Default (no suffix) is double.
26962
26963 2009-04-1  Xinliang David Li  <davidxl@google.com>
26964
26965         * config/i386/i386.c (legitimate_constant_p): Recognize
26966         all one vector constant.
26967
26968 2009-04-01  Jan-Benedict Glaw  <jbglaw@jbglaw-dev.homezone.telefonica.de>
26969
26970         * config/vax/vax.c: Add #includes to silence warnings.
26971         Change #include order to silence two warnings.
26972
26973 2009-04-01  Jan-Benedict Glaw  <jbglaw@jbglaw-dev.homezone.telefonica.de>
26974
26975         * config/vax/linux.h (TARGET_DEFAULT): Add the MASK_QMATH flag bit.
26976         (ASM_SPEC): Pass -k to the assembler for PIC code.
26977
26978 2009-04-01  Jan-Benedict Glaw  <jbglaw@jbglaw-dev.homezone.telefonica.de>
26979
26980         * config.gcc: Add vax-*-linux* to the switch.
26981         * config/vax/linux.h: New file. (TARGET_VERSION,
26982         TARGET_OS_CPP_BUILTINS, TARGET_DEFAULT, CPP_SPEC, LINK_SPEC): Define.
26983
26984 2009-04-01  Jan-Benedict Glaw  <jbglaw@jbglaw-dev.homezone.telefonica.de>
26985
26986         * config/vax/vax.c (vax_output_int_move, adjacent_operands_p):
26987         Use predicate macros instead of GET_CODE() == foo.
26988         * config/vax/vax.md (movsi_2, movstrictqi, and<mode>3, ashrsi3,
26989         ashlsi3, rotrsi3, <unnamed>): Likewise.
26990
26991 2009-04-01  Jan-Benedict Glaw  <jbglaw@jbglaw-dev.homezone.telefonica.de>
26992
26993         * config/vax/builtins.md (jbbssiqi, jbbssihi, jbbssisi, jbbcciqi,
26994         jbbccihi, jbbccisi): Remova trailing whitespace.
26995         * config/vax/constraints.md: Likewise.
26996         * config/vax/elf.h (ASM_PREFERRED_EH_DATA_FORMAT): Likewise.
26997         * config/vax/openbsd1.h (OBSD_OLD_GAS): Likewise.
26998         * config/vax/predicates.md: Likewise.
26999         * config/vax/vax.c (print_operand_address, vax_output_int_move,
27000         vax_expand_addsub_di_operands, adjacent_operands_p): Likewise.
27001         * config/vax/vax.h: Likewise.
27002         * config/vax/vax.md (nonlocal_goto): Likewise.
27003
27004 2009-04-01  Jan-Benedict Glaw  <jbglaw@jbglaw-dev.homezone.telefonica.de>
27005
27006         * config/vax/vax.c (vax_float_literal, vax_output_int_move)
27007         (indirectable_address_p, adjacent_operands_p): Add spaces around
27008         braces.
27009         * config/vax/vax-protos.h (adjacent_operands_p): Likewise.
27010
27011 2009-04-01  Jan-Benedict Glaw  <jbglaw@jbglaw-dev.homezone.telefonica.de>
27012
27013         * config/vax/vax.c (legitimate_constant_address_p,
27014         legitimate_constant_p, indirectable_address_p, nonindexed_address_p,
27015         index_term_p, reg_plus_index_p, legitimate_address_p,
27016         vax_mode_dependent_address_p): Update comments to match functions
27017         modified by the recent int->bool conversion.
27018
27019 2009-04-01  Jan-Benedict Glaw  <jbglaw@jbglaw-dev.homezone.telefonica.de>
27020
27021         * config/vax/builtins.md: Update copyright message.
27022         * config/vax/constraints.md: Likewise.
27023         * config/vax/netbsd-elf.h: Likewise.
27024         * config/vax/predicates.md: Likewise.
27025         * config/vax/vax-protos.h: Likewise.
27026         * config/vax/vax.c: Likewise.
27027         * config/vax/vax.h: Likewise.
27028         * config/vax/vax.md: Likewise.
27029         * config/vax/vax.opt: Likewise.
27030
27031 2009-04-01  Jan-Benedict Glaw  <jbglaw@jbglaw-dev.homezone.telefonica.de>
27032
27033         * config/vax/builtins.md (ffssi2, ffssi2_internal,
27034         sync_lock_test_and_set<mode>, sync_lock_release<mode>): Fix indention.
27035         * config/vax/constraints.md (B, R): Likewise.
27036         * config/vax/predicates.md (external_memory_operand,
27037         nonimmediate_addsub_di_operand): Likewise.
27038         * config/vax/vax.c (vax_output_int_add): Likewise.
27039         * config/vax/vax.md (movsi, movsi_2, mov<mode>, call_value,
27040         untyped_call): Likewise.
27041
27042 2009-04-01  Matt Thomas  <matt@3am-software.com>
27043
27044         * config/vax/predicates.md: New file.
27045         (symbolic_operand, local_symbolic_operand, external_symbolic_operand,
27046         external_const_operand, nonsymbolic_operand, external_memory_operand,
27047         indirect_memory_operand, indexed_memory_operand,
27048         illegal_blk_memory_operand, illegal_addsub_di_memory_operand,
27049         nonimmediate_addsub_di_operand, general_addsub_di_operand): New
27050         predicate.
27051         * config/vax/constraints.md: New file.
27052         (Z0, U06,  U08, U16, CN6, S08, S16, I, J, K, L, M, N, O, G, Q, B, R, T):
27053         New constraint.
27054         * config/vax/builtins.md: New file.
27055         (ffssi2, ffssi2_internal, sync_lock_test_and_set<mode>, jbbssiqi,
27056         jbbssihi, jbbssisi, sync_lock_release<mode>, jbbcciqi, jbbccihi,
27057         jbbccisi): Define.
27058         * config/vax/vax.opt (mqmath): Add option.
27059         * config/vax/vax.md (isfx): Extend with DI.
27060         (VAXintQH, VAXintQHSD): Define.
27061         (tst<mode>, cmp<mode>, *bit<mode>, movmemhi1, truncsiqi2, truncsihi2,
27062         mulsidi3, add<mode>3, sub<mode>, mul<mode>3, div<mode>3, and<mode>,
27063         and<mode>_const_int, ior<mode>3, xor<mode>3, neg<mode>2,
27064         one_cmpl<mode>2, ashlsi3, lshrsi3, rotlsi3): Update constraints.
27065         (movdi): Update constraints and use vax_output_int_move().
27066         (movsi, movsi_2, pushlclsymreg, pushextsymreg, movlclsymreg,
27067         movextsymreg, adddi3, adcdi3, subdi3, sbcdi3, pushextsym, movextsym,
27068         pushlclsym, movlclsym, movaddr<mode>, pushaddr<mode>,
27069         nonlocal_goto): New.
27070         (mov<mode>): Extend accepted operand types.
27071         (subdi3_old): Rename from subdi3, change update constraints and use
27072         a new implementation.
27073         * config/vax/vax.h (PCC_BITFIELD_TYPE_MATTERS): Add space.
27074         (FRAME_POINTER_CFA_OFFSET, IRA_COVER_CLASSES, CLASS_MAX_NREGS,
27075         MOVE_RATIO, CLEAR_RATIO): Define.
27076         (REG_CLASS_FROM_LETTER, CONST_OK_FOR_LETTER_P,
27077         CONST_DOUBLE_OK_FOR_LETTER_P, EXTRA_CONSTRAINT): Delete.
27078         (PRINT_OPERAND): Redefine using a function instead of inlined code.
27079         * config/vax/vax.c (TARGET_BUILTIN_SETJMP_FRAME_VALUE): Define.
27080         (split_quadword_operands): Make static and really allow variable
27081         splitting.
27082         (print_operand_address): Update for PIC generation.
27083         (print_operand, vax_builtin_setjmp_frame_value, vax_output_int_subtract,
27084         indexable_address_p, fixup_mathdi_operand,
27085         vax_expand_addsub_di_operands, adjacent_operands_p): New.
27086         (vax_float_literal, legitimate_constant_p,
27087         indirectable_constant_address_p, index_term_p,
27088         reg_plus_index_p): Return bool instead of int.
27089         (vax_rtx_costs): Fix cost for CONST_INT, indent and use HOST_WIDE_INT
27090         where needed.
27091         (vax_output_int_move, vax_output_int_add): Extend to allow PIC
27092         generation.
27093         (vax_output_conditional_branch): Indent.
27094         (legitimate_constant_address_p, indirectable_constant_address_p,
27095         indirectable_address_p, nonindexed_address_p, legitimate_address_p,
27096         vax_mode_dependent_address_p): Return bool instead of int, update for
27097         PIC generation.
27098         * config/vax/vax-protos.h (legitimate_constant_address_p,
27099         legitimate_constant_p, legitimate_address_p,
27100         vax_mode_dependent_address_p): Change declaration to bool.
27101         (legitimate_pic_operand_p, adjacent_operands_p, print_operand,
27102         vax_expand_addsub_di_operands, vax_output_int_subtract,
27103         vax_output_movmemsi): Declare.
27104         (split_quadword_operands, vax_float_literal): Delete declaration.
27105         * config/vax/netbsd-elf.h (CC1_SPEC, CC1PLUS_SPEC) Define.
27106         * config/vax/elf.h (NO_EXTERNAL_INDIRECT_ADDRESS,
27107         VAX_CC1_AND_CC1PLUS_SPEC, ASM_PREFERRED_EH_DATA_FORMAT,
27108         ASM_OUTPUT_DWARF_PCREL): Define.
27109         (ASM_SPEC): Change definition to allow PIC generation.
27110
27111 2009-04-01  Steve Ellcey  <sje@cup.hp.com>
27112
27113         * doc/sourcebuild.texi: Update front-end requirements.
27114
27115 2009-04-01  Jakub Jelinek  <jakub@redhat.com>
27116
27117         PR target/39226
27118         * config/rs6000/rs6000.md (andsi3_internal5_nomc,
27119         anddi3_internal2_nomc, anddi3_internal3_nomc): Removed.
27120         (booldi3_internal3): Use boolean_or_operator instead of
27121         boolean_operator.
27122
27123 2009-04-01  Joseph Myers  <joseph@codesourcery.com>
27124
27125         PR c/39605
27126         * c-decl.c (grokdeclarator): Pedwarn for file-scope array
27127         declarator whose size is not an integer constant expression but
27128         folds to an integer constant, then treat it as a constant
27129         subsequently.
27130
27131 2009-04-01  Richard Guenther  <rguenther@suse.de>
27132
27133         * fold-const.c (fold_plusminus_mult_expr): Do not fold
27134         i * 4 + 2 to (i * 2 + 1) * 2.
27135
27136 2009-04-01  Jakub Jelinek  <jakub@redhat.com>
27137
27138         PR c/37772
27139         * c-parser.c (c_parser_asm_statement): Skip until close paren and
27140         return if c_parser_asm_string_literal returned NULL.
27141
27142 2009-04-01  Nick Clifton  <nickc@redhat.com>
27143
27144         * config/m32c/m32c.h (LIBGCC2_UNITS_PER_WORD): Define if not
27145         already defined.
27146         * config/m32c/t-m32c (LIB2FUNCS_EXTRA): Add m32c-lib2-trapv.c.
27147         * config/m32c/m32c-lib2.c: Remove unused typedefs.  Rename the
27148         other typedefs to avoid conflicts with libgcc2.c.  Define labels
27149         to gain 16-bit bit-manipulation functions from libgcc2.c and then
27150         include it.
27151         * config/m32c/m32c-lib2-trapv.c: New file.  Define labels
27152         to gain 16-bit trapping arithmetic functions from libgcc2.c and
27153         then include it.
27154
27155 2009-04-01  Rafael Avila de Espindola  <espindola@google.com>
27156
27157         * varasm.c (default_function_rodata_section): Declare DOT as
27158         const char*.
27159
27160 2009-04-01  Kai Tietz  <kai.tietz@onevision.com>
27161             Andrey Galkin  <agalkin@hypercom.com>
27162
27163         PR/39492
27164         * config/i386/host-mingw32.c (mingw32_gt_pch_use_address):
27165         Make object_name unique for each process.
27166
27167 2009-04-01  Jakub Jelinek  <jakub@redhat.com>
27168
27169         PR other/39591
27170         * omp-low.c (remove_exit_barrier): Don't optimize if there are any
27171         addressable variables in the parallel that could go out of scope while
27172         running queued tasks.
27173
27174 2009-04-01  Anatoly Sokolov  <aesok@post.ru>
27175
27176         * config/avr/avr.h (avr_case_values_threshold): Remove declaration.
27177         (CASE_VALUES_THRESHOLD): Redefine.
27178         * config/avr/avr.c (avr_override_options): Remove initialization of
27179         avr_case_values_threshold variable.
27180         (avr_case_values_threshold): Remove variable. Add new function.
27181         * config/avr/avr-protos.h (avr_case_values_threshold): Declare.
27182         * config/avr/avr.opt (mno-tablejump): Remove option.
27183         * doc/invoke.texi (AVR Options): Remove -mno-tablejump.
27184
27185 2009-04-01  DJ Delorie  <dj@redhat.com>
27186
27187         * varasm.c (default_function_rodata_section): Don't assume
27188         anything about where the first '.' in the section name is.
27189
27190 2009-04-01  Alan Modra  <amodra@bigpond.net.au>
27191
27192         * config/rs6000/rs6000.c (rs6000_emit_stack_reset): Delete redundant
27193         rs6000_emit_stack_tie.
27194
27195 2009-03-31  Ian Lance Taylor  <iant@google.com>
27196
27197         * tree-eh.c (tree_remove_unreachable_handlers): Compare
27198         gimple_code with GIMPLE_RESX, not RESX.
27199
27200 2009-03-31  Joseph Myers  <joseph@codesourcery.com>
27201
27202         * c-common.c (c_get_ident): New.
27203         (c_common_nodes_and_builtins): Call it for type names that may be NULL.
27204
27205 2009-04-01  Ben Elliston  <bje@au.ibm.com>
27206
27207         * config/rs6000/sysv4.opt (msdata): Improve option description.
27208
27209 2009-03-31  Steve Ellcey  <sje@cup.hp.com>
27210
27211         * config/ia64/ia64.md (divsf3_internal_lat): Remove.
27212         (divdf3_internal_lat): Remove.
27213         (divxf3_internal_lat): Remove.
27214         (divxf3_internal_thr): Remove.
27215         (divxf): Use divxf3_internal.
27216         * config/ia64/div.md (divsf3_internal_lat): New.
27217         (divdf3_internal_lat): New.
27218         (divxf3_internal): New.
27219
27220 2009-03-31  Joseph Myers  <joseph@codesourcery.com>
27221
27222         PR c/448
27223         * Makefile.in (USE_GCC_STDINT): Define.
27224         (stmp-int-hdrs): Install stdint.h if applicable.
27225         * c-common.c (CHAR16_TYPE): Define in terms of UINT_LEAST16_TYPE
27226         if known.
27227         (CHAR32_TYPE): Define in terms of UINT_LEAST32_TYPE if known.
27228         (SIG_ATOMIC_TYPE, INT8_TYPE, INT16_TYPE, INT32_TYPE, INT64_TYPE,
27229         UINT8_TYPE, UINT16_TYPE, UINT32_TYPE, UINT64_TYPE,
27230         INT_LEAST8_TYPE, INT_LEAST16_TYPE, INT_LEAST32_TYPE,
27231         INT_LEAST64_TYPE, UINT_LEAST8_TYPE, UINT_LEAST16_TYPE,
27232         UINT_LEAST32_TYPE, UINT_LEAST64_TYPE, INT_FAST8_TYPE,
27233         INT_FAST16_TYPE, INT_FAST32_TYPE, INT_FAST64_TYPE,
27234         UINT_FAST8_TYPE, UINT_FAST16_TYPE, UINT_FAST32_TYPE,
27235         UINT_FAST64_TYPE, INTPTR_TYPE, UINTPTR_TYPE): Define.
27236         (c_common_nodes_and_builtins): Initialize
27237         underlying_wchar_type_node.  Do not initialize
27238         signed_wchar_type_node or unsigned_wchar_type_node.  Initialize
27239         nodes for new types.
27240         (c_stddef_cpp_builtins): Define macros for new types.
27241         * c-common.h (CTI_SIGNED_WCHAR_TYPE, CTI_UNSIGNED_WCHAR_TYPE):
27242         Remove.
27243         (CTI_UNDERLYING_WCHAR_TYPE, CTI_SIG_ATOMIC_TYPE, CTI_INT8_TYPE,
27244         CTI_INT16_TYPE, CTI_INT32_TYPE, CTI_INT64_TYPE, CTI_UINT8_TYPE,
27245         CTI_UINT16_TYPE, CTI_UINT32_TYPE, CTI_UINT64_TYPE,
27246         CTI_INT_LEAST8_TYPE, CTI_INT_LEAST16_TYPE, CTI_INT_LEAST32_TYPE,
27247         CTI_INT_LEAST64_TYPE, CTI_UINT_LEAST8_TYPE, CTI_UINT_LEAST16_TYPE,
27248         CTI_UINT_LEAST32_TYPE, CTI_UINT_LEAST64_TYPE, CTI_INT_FAST8_TYPE,
27249         CTI_INT_FAST16_TYPE, CTI_INT_FAST32_TYPE, CTI_INT_FAST64_TYPE,
27250         CTI_UINT_FAST8_TYPE, CTI_UINT_FAST16_TYPE, CTI_UINT_FAST32_TYPE,
27251         CTI_UINT_FAST64_TYPE, CTI_INTPTR_TYPE, CTI_UINTPTR_TYPE): Define.
27252         (signed_wchar_type_node, unsigned_wchar_type_node): Remove.
27253         (underlying_wchar_type_node, sig_atomic_type_node, int8_type_node,
27254         int16_type_node, int32_type_node, int64_type_node,
27255         uint8_type_node, uint16_type_node, c_uint32_type_node,
27256         c_uint64_type_node, int_least8_type_node, int_least16_type_node,
27257         int_least32_type_node, int_least64_type_node,
27258         uint_least8_type_node, uint_least16_type_node,
27259         uint_least32_type_node, uint_least64_type_node,
27260         int_fast8_type_node, int_fast16_type_node, int_fast32_type_node,
27261         int_fast64_type_node, uint_fast8_type_node, uint_fast16_type_node,
27262         uint_fast32_type_node, uint_fast64_type_node, intptr_type_node,
27263         uintptr_type_node): Define.
27264         * c-cppbuiltin.c (builtin_define_constants,
27265         builtin_define_type_minmax): New.
27266         (builtin_define_stdint_macros): Define more macros.
27267         (c_cpp_builtins): Define more limit macros.
27268         (type_suffix): New.
27269         (builtin_define_type_max): Define in terms of
27270         builtin_define_type_minmax.  Remove is_long parameter.  All
27271         callers changed.
27272         * config.gcc (use_gcc_stdint): Define.
27273         (tm_file): Add glibc-stdint.h for targets using glibc or uClibc.
27274         Add newlib-stdint.h for generic targets.
27275         * config/glibc-stdint.h, config/newlib-stdint.h,
27276         ginclude/stdint-gcc.h, ginclude/stdint-wrap.h: New.
27277         * config/m32c/m32c.h (UINTPTR_TYPE): Define.
27278         * config/score/score.h (UINTPTR_TYPE): Define.
27279         * config/sol2.h (SIG_ATOMIC_TYPE, INT8_TYPE, INT16_TYPE,
27280         INT32_TYPE, INT64_TYPE, UINT8_TYPE, UINT16_TYPE, UINT32_TYPE,
27281         UINT64_TYPE, INT_LEAST8_TYPE, INT_LEAST16_TYPE, INT_LEAST32_TYPE,
27282         INT_LEAST64_TYPE, UINT_LEAST8_TYPE, UINT_LEAST16_TYPE,
27283         UINT_LEAST32_TYPE, UINT_LEAST64_TYPE, INT_FAST8_TYPE,
27284         INT_FAST16_TYPE, INT_FAST32_TYPE, INT_FAST64_TYPE,
27285         UINT_FAST8_TYPE, UINT_FAST16_TYPE, UINT_FAST32_TYPE,
27286         UINT_FAST64_TYPE, INTPTR_TYPE, UINTPTR_TYPE): Define.
27287         * config/spu/spu.h (STDINT_LONG32): Define.
27288         * configure.ac (use_gcc_stdint): Substitute.
27289         * configure: Regenerate.
27290         * doc/cpp.texi (__SIG_ATOMIC_TYPE__, __INT8_TYPE__,
27291         __INT16_TYPE__, __INT32_TYPE__, __INT64_TYPE__, __UINT8_TYPE__,
27292         __UINT16_TYPE__, __UINT32_TYPE__, __UINT64_TYPE__,
27293         __INT_LEAST8_TYPE__, __INT_LEAST16_TYPE__, __INT_LEAST32_TYPE__,
27294         __INT_LEAST64_TYPE__, __UINT_LEAST8_TYPE__, __UINT_LEAST16_TYPE__,
27295         __UINT_LEAST32_TYPE_, __UINT_LEAST64_TYPE__, __INT_FAST8_TYPE__,
27296         __INT_FAST16_TYPE__, __INT_FAST32_TYPE__, __INT_FAST64_TYPE__,
27297         __UINT_FAST8_TYPE__, __UINT_FAST16_TYPE__, __UINT_FAST32_TYPE__,
27298         __UINT_FAST64_TYPE__, __INTPTR_TYPE__, __UINTPTR_TYPE__,
27299         __WINT_MAX__, __SIZE_MAX__, __PTRDIFF_MAX__, __UINTMAX_MAX__,
27300         __SIG_ATOMIC_MAX__, __INT8_MAX__, __INT16_MAX__, __INT32_MAX__,
27301         __INT64_MAX__, __UINT8_MAX__, __UINT16_MAX__, __UINT32_MAX__,
27302         __UINT64_MAX__, __INT_LEAST8_MAX__, __INT_LEAST16_MAX__,
27303         __INT_LEAST32_MAX__, __INT_LEAST64_MAX__, __UINT_LEAST8_MAX__,
27304         __UINT_LEAST16_MAX__, __UINT_LEAST32_MAX__, __UINT_LEAST64_MAX__,
27305         __INT_FAST8_MAX__, __INT_FAST16_MAX__, __INT_FAST32_MAX__,
27306         __INT_FAST64_MAX__, __UINT_FAST8_MAX__, __UINT_FAST16_MAX__,
27307         __UINT_FAST32_MAX__, __UINT_FAST64_MAX__, __INTPTR_MAX__,
27308         __UINTPTR_MAX__, __WCHAR_MIN__, __WINT_MIN__, __SIG_ATOMIC_MIN__,
27309         __INT8_C, __INT16_C, __INT32_C, __INT64_C, __UINT8_C, __UINT16_C,
27310         __UINT32_C, __UINT64_C, __INTMAX_C, __UINTMAX_C): Document.
27311         * doc/tm.texi (SIG_ATOMIC_TYPE, INT8_TYPE, INT16_TYPE, INT32_TYPE,
27312         INT64_TYPE, UINT8_TYPE, UINT16_TYPE, UINT32_TYPE, UINT64_TYPE,
27313         INT_LEAST8_TYPE, INT_LEAST16_TYPE, INT_LEAST32_TYPE,
27314         INT_LEAST64_TYPE, UINT_LEAST8_TYPE, UINT_LEAST16_TYPE,
27315         UINT_LEAST32_TYPE, UINT_LEAST64_TYPE, INT_FAST8_TYPE,
27316         INT_FAST16_TYPE, INT_FAST32_TYPE, INT_FAST64_TYPE,
27317         UINT_FAST8_TYPE, UINT_FAST16_TYPE, UINT_FAST32_TYPE,
27318         UINT_FAST64_TYPE, INTPTR_TYPE, UINTPTR_TYPE): Document.
27319
27320 2009-03-31  Bernd Schmidt  <bernd.schmidt@analog.com>
27321
27322         * loop-iv.c (suitable_set_for_replacement): Renamed from
27323         simplify_using_assignment; changed to return bool and to accept new
27324         args DEST and SRC.  Return true iff we find a source/destination pair
27325         that can be used to make a replacement, and fill SRC and DEST if so.
27326         Remove arg ALTERED.  Don't deal with altered regs here.  All callers
27327         changed.
27328         (simplify_using_initial_values): Deal with altered regs here and track
27329         more precisely the effect they have on the validity of our expression.
27330
27331         * loop-iv.c (simplify_using_condition): A condition of the form
27332         (EQ REG CONST) can be used to simply make a substitution.
27333         (simplify_using_initial_values): Keep track of conditions we have seen
27334         and keep using them to simplify new expressions, while applying the
27335         same substitutions to them as to the expression.
27336
27337         * simplify-rtx.c (simplify_relational_operation_1): Simplify
27338         (LTU (PLUS a C) C) or (LTU (PLUS a C) a) to (GEU a -C); likewise with
27339         GEU/LTU reversed.
27340
27341         * loop-iv.c (determine_max_iter): New arg OLD_NITER.  All callers
27342         changed.  Use this when trying to improve the upper bound.
27343         Generate the comparison by using simplify_gen_relational.
27344
27345         * loop-iv.c (simple_rhs_p): Allow more kinds of expressions.
27346
27347         * loop-iv.c (replace_single_def_regs, replace_in_expr): New static
27348         functions.
27349         (simplify_using_assignment, simplify_using_initial_values): Call
27350         replace_in_expr to make replacements.  Call replace_single_def_regs
27351         once on the initial version of the expression.
27352
27353 2009-03-31  Ramana Radhakrishnan  <ramana.radhakrishnan@arm.com>
27354
27355         PR target/27237
27356         * doc/invoke.texi (ARM Options): Update documentation for -mthumb.
27357
27358 2009-03-31  Richard Guenther  <rguenther@suse.de>
27359
27360         PR middle-end/31029
27361         * fold-const.c (fold_binary): Fold X +- Y CMP X to Y CMP 0 for
27362         equality comparisons.  Fold C - X CMP X if C % 2 == 1.
27363
27364 2009-03-31  Richard Guenther  <rguenther@suse.de>
27365
27366         * tree.h (div_if_zero_remainder): Declare.
27367         * fold-const.c (div_if_zero_remainder): Export.
27368         * tree-ssa-forwprop.c
27369         (forward_propagate_addr_into_variable_array_index): Handle
27370         constant array index addition outside of the variable index.
27371
27372 2009-03-31  Joseph Myers  <joseph@codesourcery.com>
27373
27374         PR target/39592
27375         * config/i386/i386.md (*floatunssi<mode>2_1, two unnamed
27376         define_splits, floatunssi<mode>2): Require x87 conversions from
27377         DImode to be permitted.
27378
27379 2009-03-31  Joseph Myers  <joseph@codesourcery.com>
27380
27381         PR preprocessor/15638
27382         * c-common.c (c_cpp_error): Handle CPP_DL_FATAL.
27383
27384 2009-03-31  Richard Guenther  <rguenther@suse.de>
27385
27386         PR middle-end/23401
27387         PR middle-end/27810
27388         * tree.h (DECL_GIMPLE_FORMAL_TEMP_P): Remove.
27389         (struct tree_decl_with_vis): Remove gimple_formal_temp member.
27390         * tree-eh.c (lower_eh_constructs_2): Move LHS assignment to
27391         a separate statement.
27392         * gimplify.c (pop_gimplify_context): Remove formal temp handling.
27393         (lookup_tmp_var): Likewise.
27394         (is_gimple_formal_tmp_or_call_rhs): Remove.
27395         (is_gimple_reg_or_call_rhs): Rename to ...
27396         (is_gimple_reg_rhs_or_call): ... this.
27397         (is_gimple_mem_or_call_rhs): Rename to ...
27398         (is_gimple_mem_rhs_or_call): ... this.
27399         (internal_get_tmp_var): Use is_gimple_reg_rhs_or_call.  Set
27400         DECL_GIMPLE_REG_P only if is_formal is true.
27401         (gimplify_compound_lval): Use is_gimple_reg.  Remove workaround
27402         for non-proper post-modify expression gimplification.
27403         (gimplify_self_mod_expr): For post-modify expressions gimplify
27404         the lvalue to a minimal lvalue.
27405         (rhs_predicate_for): Remove formal temp case.
27406         (gimplify_modify_expr_rhs): Likewise.
27407         (gimplify_addr_expr): Use is_gimple_reg.
27408         (gimplify_expr): Remove formal temp cases.
27409         (gimple_regimplify_operands): Likewise.
27410         * tree-ssa-pre.c (get_or_alloc_expr_for): Treat EXC_PTR_EXPR
27411         and FILTER_EXPR like constants.
27412         * gimple.c (walk_gimple_op): Fix val_only initialization, use
27413         is_gimple_reg.
27414         (is_gimple_formal_tmp_rhs): Remove.
27415         (is_gimple_reg_rhs): Remove special casing.
27416         (is_gimple_mem_rhs): Fix.
27417         (is_gimple_reg): Move DECL_GIMPLE_REG_P handling earlier.
27418         (is_gimple_formal_tmp_var): Remove.
27419         (is_gimple_formal_tmp_reg): Likewise.
27420         (is_gimple_min_lval): Allow invariant component ref parts.
27421         * gimple.h (is_gimple_formal_tmp_rhs, is_gimple_formal_tmp_var,
27422         is_gimple_formal_tmp_reg): Remove declarations.
27423         * tree-cfg.c (verify_expr): Verify that variables with address
27424         taken do not have DECL_GIMPLE_REG_P set.
27425         * tree-mudflap.c (mf_build_check_statement_for): Use
27426         force_gimple_operand instead of gimplify_expr.
27427
27428 2009-03-31  Ayal Zaks  <zaks@il.ibm.com>
27429
27430         * modulo-sched.c (sms_schedule_by_order): Pass the actual
27431         schedulable rows to compute_split_row.
27432
27433 2009-03-31  Ben Elliston  <bje@au.ibm.com>
27434
27435         PR target/31635
27436         * config/rs6000/rs6000.c (rs6000_handle_option): Handle
27437         OPT_mvrsave.
27438
27439 2009-03-31  Alan Modra  <amodra@bigpond.net.au>
27440
27441         * doc/invoke.texi (RS/6000 and PowerPC Options):Document mtls-markers.
27442         * configure.ac (HAVE_AS_TLS_MARKERS): New gas feature check.
27443         * configure: Regenerate.
27444         * config.in: Regenerate.
27445         * config/rs6000/rs6000.opt (mtls-markers): Add.
27446         * config/rs6000/rs6000.h (TARGET_TLS_MARKERS): Define.
27447         * config/rs6000/rs6000.md (tls_gd_aix, tls_gd_sysv): Add splitter.
27448         (tls_ld_aix, tls_ld_sysv): Likewise.
27449         (tls_gd, tls_gd_call_aix, tls_gd_call_sysv): New insns.
27450         (tls_ld, tls_ld_call_aix, tls_ld_call_sysv): Likewise.
27451
27452 2009-03-31  Alan Modra  <amodra@bigpond.net.au>
27453
27454         * config/spu/spu.c (spu_expand_prologue): Delete redundant code.
27455
27456 2009-03-30  Jan Hubicka  <jh@suse.cz>
27457
27458         * tree-eh.c (make_eh_edges): Set probability 100% to first edge
27459         out of RESX.
27460         (tree_remove_unreachable_handlers): Cleanup EH predecestor
27461         detection and label handling.
27462
27463 2009-03-30  Vladimir Makarov  <vmakarov@redhat.com>
27464
27465         * ira-int.h (ira_allocno): Rename left_conflicts_num to
27466         left_conflicts_size.
27467         (ALLOCNO_LEFT_CONFLICTS_NUM): Rename to
27468         ALLOCNO_LEFT_CONFLICTS_SIZE.
27469
27470         * ira-color.c (allocno_spill_priority, push_allocno_to_stack,
27471         remove_allocno_from_bucket_and_push,
27472         allocno_spill_priority_compare, push_allocnos_to_stack,
27473         setup_allocno_available_regs_num): Use ALLOCNO_LEFT_CONFLICTS_SIZE
27474         instead of ALLOCNO_LEFT_CONFLICTS_NUM.
27475         (setup_allocno_left_conflicts_num): Ditto.  Rename to
27476         setup_allocno_left_conflicts_size.
27477         (put_allocno_into_bucket): Use ALLOCNO_LEFT_CONFLICTS_SIZE
27478         instead of ALLOCNO_LEFT_CONFLICTS_NUM and
27479         setup_allocno_left_conflicts_size instead of
27480         setup_allocno_left_conflicts_num.
27481
27482         * ira-build.c (ira_create_allocno): Use
27483         ALLOCNO_LEFT_CONFLICTS_SIZE instead of
27484         ALLOCNO_LEFT_CONFLICTS_NUM.
27485
27486 2009-03-30  Vladimir Makarov  <vmakarov@redhat.com>
27487
27488         * reload.c (push_reload, find_dummy_reload): Use df_get_live_out
27489         instead of DF_LR_OUT.
27490
27491         * ira-lives.c (process_bb_node_lives): Ditto.
27492
27493         * ira-color.c (ira_loop_edge_freq): Use df_get_live_{out,in}
27494         instead of DF_LR_{OUT,IN}.
27495
27496         * ira-emit.c (generate_edge_moves, add_ranges_and_copies): Ditto.
27497
27498         * ira-build.c (create_bb_allocnos, create_loop_allocnos): Ditto.
27499
27500 2009-03-30  Jan Hubicka  <jh@suse.cz>
27501
27502         * except.c (label_to_region_map): Fix thinko.
27503
27504 2009-03-30  Steve Ellcey  <sje@cup.hp.com>
27505
27506         PR middle-end/38237
27507         * tree.h (tree_find_value): New declaration.
27508         * tree.c (tree_find_value): New function.
27509         * varasm.c (assemble_external): Avoid duplicate entries on lists.
27510
27511 2009-03-30  Jakub Jelinek  <jakub@redhat.com>
27512
27513         PR debug/39563
27514         * c-decl.c (struct c_binding): Add locus field.
27515         (bind): Add locus argument, set locus field from it.
27516         (pop_scope): For b->nested VAR_DECL or FUNCTION_DECL,
27517         add a DECL_EXTERNAL copy of b->decl to current BLOCK_VARS.
27518         (push_file_scope, pushtag, pushdecl, pushdecl_top_level,
27519         implicitly_declare, undeclared_variable, lookup_label,
27520         declare_label, c_make_fname_decl, c_builtin_function,
27521         c_builtin_function_ext_scope, store_parm_decls_newstyle): Adjust
27522         bind callers.
27523
27524 2009-03-30  H.J. Lu  <hongjiu.lu@intel.com>
27525
27526         PR target/38781
27527         * config/i386/i386.c (classify_argument): Check total size of
27528         structure.
27529
27530 2009-03-30  Martin Jambor  <mjambor@suse.cz>
27531
27532         * ipa-prop.h (jump_func_type): Rename IPA_UNKNOWN, IPA_CONST,
27533         IPA_CONST_MEMBER_PTR, and IPA_PASS_THROUGH to IPA_JF_UNKNOWN,
27534         IPA_JF_CONST, IPA_JF_CONST_MEMBER_PTR, and IPA_JF_PASS_THROUGH
27535         respectively.
27536
27537         * tree-dfa.c (get_ref_base_and_extent): Return -1 maxsize if
27538         seen_variable_array_ref while also traversing a union.
27539
27540         * tree-inline.c (optimize_inline_calls): Do not call
27541         cgraph_node_remove_callees.
27542         * cgraphbuild.c (remove_cgraph_callee_edges): New function.
27543         (pass_remove_cgraph_callee_edges): New variable.
27544         * passes.c (init_optimization_passes): Add
27545         pass_remove_cgraph_callee_edges after early inlining and before all
27546         late intraprocedural passes.
27547
27548         * omp-low.c (expand_omp_taskreg): Always set current_function_decl.
27549
27550 2009-03-30  Paolo Bonzini  <bonzini@gnu.org>
27551
27552         * config/sparc/sparc.md (*nand<V64mode>_vis, *nand<V32mode>_vis):
27553         Fix typos in names.
27554
27555 2009-03-30  Paolo Bonzini  <bonzini@gnu.org>
27556
27557         * combine.c (simplify_comparison): Use have_insn_for.
27558         * dojump.c (do_jump): Likewise.
27559
27560 2009-03-30  Paolo Bonzini  <bonzini@gnu.org>
27561
27562         * config/sparc/sparc.c (sparc_compare_emitted): Remove.
27563         (gen_compare_reg, emit_v9_brxx_insn): Handle MODE_CC
27564         sparc_compare_op0 like sparc_compare_emitted used to be handled.
27565         (sparc_expand_compare_and_swap_12): Set sparc_compare_op0
27566         instead of sparc_compare_emitted.
27567         * config/sparc/sparc.h (sparc_compare_emitted): Remove.
27568         * config/sparc/sparc.md (stack_protect_test): Set sparc_compare_op0
27569         instead of sparc_compare_emitted.
27570
27571 2009-03-30  Paolo Bonzini  <bonzini@gnu.org>
27572
27573         * bb-reorder.c (partition_hot_cold_basic_blocks): Do not
27574         enter/exit cfglayout mode.
27575         (pass_partition_block): Require it.
27576         * combine.c (find_single_use, reg_dead_at_p): Use CFG.
27577         (combine_instructions): Track basic blocks instead of labels.
27578         (update_cfg_for_uncondjump): New.
27579         (try_combine): Use it.  Update jumps after rescanning.
27580         (pass_combine): Require PROP_cfglayout.
27581         * passes.c (pass_outof_cfg_layout_mode): Move after regmove.
27582
27583 2009-03-30  Paolo Bonzini  <bonzini@gnu.org>
27584
27585         * cfglayout.c (pass_into_cfg_layout_mode, pass_outof_cfg_layout_mode):
27586         Provide/destroy PROP_cfglayout respectively.
27587         * gcse.c (pass_jump_bypass, pass_gcse): Require it.
27588         * tree-pass.h (PROP_cfglayout): New.
27589
27590 2009-03-30  Paolo Bonzini  <bonzini@gnu.org>
27591
27592         * fold-const.c (const_binop, fold_convert_const_real_from_fixed,
27593         fold_convert_const_fixed_from_fixed,
27594         fold_convert_const_fixed_from_int,
27595         fold_convert_const_fixed_from_real, fold_negate_const): Do not
27596         set TREE_CONSTANT_OVERFLOW.
27597         * tree.def: Remove mention of TREE_CONSTANT_OVERFLOW.
27598         * tree.h (TREE_CONSTANT_OVERFLOW): Delete.
27599
27600 2009-03-30  Ira Rosen  <irar@il.ibm.com>
27601
27602         * tree-vect-loop-manip.c: New file.
27603         * tree-vectorizer.c: Update documentation and included files.
27604         (vect_loop_location): Make extern.
27605         (rename_use_op): Move to tree-vect-loop-manip.c
27606         (rename_variables_in_bb, rename_variables_in_loop,
27607         slpeel_update_phis_for_duplicate_loop,
27608         slpeel_update_phi_nodes_for_guard1,
27609         slpeel_update_phi_nodes_for_guard2, slpeel_make_loop_iterate_ntimes,
27610         slpeel_tree_duplicate_loop_to_edge_cfg, slpeel_add_loop_guard,
27611         slpeel_can_duplicate_loop_p, slpeel_verify_cfg_after_peeling,
27612         set_prologue_iterations, slpeel_tree_peel_loop_to_edge,
27613         find_loop_location): Likewise.
27614         (new_stmt_vec_info): Move to tree-vect-stmts.c.
27615         (init_stmt_vec_info_vec, free_stmt_vec_info_vec, free_stmt_vec_info,
27616         get_vectype_for_scalar_type, vect_is_simple_use,
27617         supportable_widening_operation, supportable_narrowing_operation):
27618         Likewise.
27619         (bb_in_loop_p): Move to tree-vect-loop.c.
27620         (new_loop_vec_info, destroy_loop_vec_info,
27621         reduction_code_for_scalar_code, report_vect_op,
27622         vect_is_simple_reduction, vect_is_simple_iv_evolution): Likewise.
27623         (vect_can_force_dr_alignment_p): Move to tree-vect-data-refs.c.
27624         (vect_supportable_dr_alignment): Likewise.
27625         * tree-vectorizer.h (tree-data-ref.h): Include.
27626         (vect_loop_location): Declare.
27627         Reorganize function declarations according to the new file structure.
27628         * tree-vect-loop.c: New file.
27629         * tree-vect-analyze.c: Remove. Move functions to tree-vect-data-refs.c,
27630         tree-vect-stmts.c, tree-vect-slp.c, tree-vect-loop.c.
27631         * tree-vect-data-refs.c: New file.
27632         * tree-vect-patterns.c (timevar.h): Don't include.
27633         * tree-vect-stmts.c: New file.
27634         * tree-vect-transform.c: Remove. Move functions to tree-vect-stmts.c,
27635         tree-vect-slp.c, tree-vect-loop.c.
27636         * Makefile.in (OBJS-common): Remove tree-vect-analyze.o and
27637         tree-vect-transform.o. Add tree-vect-data-refs.o, tree-vect-stmts.o,
27638         tree-vect-loop.o, tree-vect-loop-manip.o, tree-vect-slp.o.
27639         (tree-vect-analyze.o): Remove.
27640         (tree-vect-transform.o): Likewise.
27641         (tree-vect-data-refs.o): Add rule.
27642         (tree-vect-stmts.o, tree-vect-loop.o, tree-vect-loop-manip.o,
27643         tree-vect-slp.o): Likewise.
27644         (tree-vect-patterns.o): Remove redundant dependencies.
27645         (tree-vectorizer.o): Likewise.
27646         * tree-vect-slp.c: New file.
27647
27648 2009-03-30  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
27649
27650         * optc-gen.awk: Warn if an option flag has multiple different
27651         help strings.
27652
27653 2009-03-30  Sebastian Pop  <sebastian.pop@amd.com>
27654
27655         * doc/invoke.texi (-floop-interchange, -floop-strip-mine,
27656         -floop-block): Document dependences on PPL, CLooG and Graphite.
27657
27658 2009-03-30  Joseph Myers  <joseph@codesourcery.com>
27659
27660         PR rtl-optimization/323
27661         * c-common.c (c_fully_fold, convert_and_check,
27662         c_common_truthvalue_conversion): Handle EXCESS_PRECISION_EXPR.
27663         (c_fully_fold_internal): Disallow EXCESS_PRECISION_EXPR.
27664         * c-common.def (EXCESS_PRECISION_EXPR): New.
27665         * c-cppbuiltin.c (builtin_define_float_constants): Define
27666         constants with enough digits for long double.
27667         * c-lex.c (interpret_float): Interpret constant with excess
27668         precision where appropriate.
27669         * c-opts.c (c_common_post_options): Set
27670         flag_excess_precision_cmdline.  Give an error for
27671         -fexcess-precision=standard for C++ for processors where the
27672         option is significant.
27673         * c-parser.c (c_parser_conditional_expression): Handle excess
27674         precision in condition.
27675         * c-typeck.c (convert_arguments): Handle arguments with excess
27676         precision.
27677         (build_unary_op): Move excess precision outside operation.
27678         (build_conditional_expr): Likewise.
27679         (build_compound_expr): Likewise.
27680         (build_c_cast): Do cast on operand of EXCESS_PRECISION_EXPR.
27681         (build_modify_expr): Handle excess precision in RHS.
27682         (convert_for_assignment): Handle excess precision in converted
27683         value.
27684         (digest_init, output_init_element, process_init_element): Handle
27685         excess precision in initializer.
27686         (c_finish_return): Handle excess precision in return value.
27687         (build_binary_op): Handle excess precision in operands and add
27688         excess precision as needed for operation.
27689         * common.opt (-fexcess-precision=): New option.
27690         * config/i386/i386.h (X87_ENABLE_ARITH, X87_ENABLE_FLOAT): New.
27691         * config/i386/i386.md (float<SSEMODEI24:mode><X87MODEF:mode>2):
27692         For standard excess precision, output explicit conversion to and
27693         truncation from XFmode.
27694         (*float<SSEMODEI24:mode><X87MODEF:mode>2_1,
27695         *float<SSEMODEI24:mode><X87MODEF:mode>2_i387_with_temp,
27696         *float<SSEMODEI24:mode><X87MODEF:mode>2_i387, two unnamed
27697         define_splits, floatdi<X87MODEF:mode>2_i387_with_xmm, two unnamed
27698         define_splits, *floatunssi<mode>2_1, two unnamed define_splits,
27699         floatunssi<mode>2, add<mode>3, sub<mode>3, mul<mode>3, divdf3,
27700         divsf3, *fop_<mode>_comm_i387, *fop_<mode>_1_i387,
27701         *fop_<MODEF:mode>_2_i387, *fop_<MODEF:mode>_3_i387,
27702         *fop_df_4_i387, *fop_df_5_i387, *fop_df_6_i387, two unnamed
27703         define_splits, sqrt<mode>2): Disable where appropriate for
27704         standard excess precision.
27705         * convert.c (convert_to_real): Do not shorten arithmetic to type
27706         for which excess precision would be used.
27707         * defaults.h (TARGET_FLT_EVAL_METHOD_NON_DEFAULT): Define.
27708         * doc/invoke.texi (-fexcess-precision=): Document option.
27709         (-mfpmath=): Correct index entry.
27710         * flags.h (enum excess_precision, flag_excess_precision_cmdline,
27711         flag_excess_precision): New.
27712         * langhooks.c (lhd_post_options): Set
27713         flag_excess_precision_cmdline.
27714         * opts.c (common_handle_option): Handle -fexcess-precision=.
27715         * toplev.c (flag_excess_precision_cmdline, flag_excess_precision,
27716         init_excess_precision): New.
27717         (lang_dependent_init_target): Call init_excess_precision.
27718         * tree.c (excess_precision_type): New.
27719         * tree.h (excess_precision_type): Declare.
27720
27721 2009-03-30  Joseph Myers  <joseph@codesourcery.com>
27722
27723         PR c/35235
27724         * c-typeck.c (build_component_ref): Do not copy qualifiers from
27725         non-lvalue to component.
27726
27727 2009-03-29  Joseph Myers  <joseph@codesourcery.com>
27728
27729         PR preprocessor/34695
27730         * Makefile.in (c-opts.o): Depend on c-tree.h.
27731         * c-common.c: Move down include of diagnostic.h.
27732         (done_lexing, c_cpp_error): New.
27733         * c-common.h (done_lexing): Declare.
27734         * c-decl.c (c_write_global_declarations): Don't check cpp_errors
27735         (parse_in).
27736         * c-opts.c: Include c-tree.h.
27737         (c_common_init_options): Set preprocessor error callback.
27738         (c_common_handle_option): Do not set preprocessor
27739         inhibit_warnings, warnings_are_errors, warn_system_headers,
27740         pedantic_errors or inhibit_warnings flags.
27741         (c_common_post_options): Do not check cpp_errors (parse_in).
27742         (c_common_finish): Do not output dependencies if there were
27743         errors.  Do not check return value of cpp_finish.
27744         * c-ppoutput.c (pp_file_change): Set input_location.
27745         * c-tree.h (c_cpp_error): Declare.
27746         * diagnostic.c (diagnostic_set_info_translated): Also initialize
27747         override_column.
27748         (diagnostic_build_prefix): Check override_column.
27749         * diagnostic.h (diagnostic_info): Add override_column field.
27750         (diagnostic_override_column): Define.
27751
27752 2009-03-28  Paolo Bonzini  <bonzini@gnu.org>
27753
27754         * c-common.c (c_expand_expr, c_staticp): Remove.
27755         * c-common.def (COMPOUND_LITERAL_EXPR): Delete.
27756         * c-common.h (emit_local_var, c_staticp, COMPOUND_LITERAL_EXPR_DECL,
27757         COMPOUND_LITERAL_EXPR_DECL_EXPR): Remove.
27758         * c-gimplify.c (gimplify_compound_literal_expr,
27759         optimize_compound_literals_in_ctor): Remove.
27760         (c_gimplify_expr): Remove COMPOUND_LITERAL_EXPR handling.
27761         * c-objc-common.h (LANG_HOOKS_STATICP): Remove.
27762         * c-semantics.c (emit_local_var): Remove.
27763
27764         * langhooks-def.h (lhd_expand_expr): Remove.
27765         * langhooks.c (lhd_expand_expr): Remove.
27766         * langhooks.h (LANG_HOOKS_DEF): Remove LANG_HOOKS_EXPAND_EXPR.
27767
27768         * expr.c (expand_expr_real_1): Move COMPOUND_LITERAL_EXPR
27769         handling from c-semantics.c; don't call into langhook.
27770         (expand_expr_addr_expr_1): Check that we don't get non-GENERIC trees.
27771         * gimplify.c (gimplify_compound_literal_expr,
27772         optimize_compound_literals_in_ctor): Move from c-gimplify.c.
27773         (gimplify_init_constructor): Call optimize_compound_literals_in_ctor.
27774         (gimplify_modify_expr_rhs, gimplify_expr): Handle COMPOUND_LITERAL_EXPR
27775         as was done in c-gimplify.c.
27776         * tree.c (staticp): Move COMPOUND_LITERAL_EXPR handling from c_staticp.
27777         * tree.h (COMPOUND_LITERAL_EXPR_DECL, COMPOUND_LITERAL_EXPR_DECL_EXPR):
27778         Move from c-common.h.
27779         * tree.def (COMPOUND_LITERAL_EXPR): Move from c-common.def.
27780
27781         * tree.c (staticp): Do not call langhook.
27782         * langhooks.c (lhd_staticp): Delete.
27783         * langhooks-def.h (lhd_staticp): Delete prototype.
27784         (LANG_HOOKS_STATICP): Delete.
27785         (LANG_HOOKS_INITIALIZER): Delete LANG_HOOKS_STATICP.
27786
27787         * doc/c-tree.texi (Expression nodes): Refer to DECL_EXPRs
27788         instead of DECL_STMTs.
27789
27790 2009-03-29  Joseph Myers  <joseph@codesourcery.com>
27791
27792         PR c/456
27793         PR c/5675
27794         PR c/19976
27795         PR c/29116
27796         PR c/31871
27797         PR c/35198
27798         * builtins.c (fold_builtin_sincos): Build COMPOUND_EXPR in
27799         void_type_node.
27800         (fold_call_expr): Return a NOP_EXPR from folding rather than the
27801         contained expression.
27802         * c-common.c (c_fully_fold, c_fully_fold_internal, c_save_expr): New.
27803         (c_common_truthvalue_conversion): Use c_save_expr.  Do not fold
27804         conditional expressions for C.
27805         (decl_constant_value_for_optimization): Move from
27806         decl_constant_value_for_broken_optimization in c-typeck.c.  Check
27807         whether optimizing and that the expression is a VAR_DECL not of
27808         array type instead of doing such checks in the caller.  Do not
27809         check pedantic.  Call gcc_unreachable for C++.
27810         * c-common.def (C_MAYBE_CONST_EXPR): New.
27811         * c-common.h (c_fully_fold, c_save_expr,
27812         decl_constant_value_for_optimization): New prototypes.
27813         (C_MAYBE_CONST_EXPR_PRE, C_MAYBE_CONST_EXPR_EXPR,
27814         C_MAYBE_CONST_EXPR_INT_OPERANDS, C_MAYBE_CONST_EXPR_NON_CONST,
27815         EXPR_INT_CONST_OPERANDS): Define.
27816         * c-convert.c (convert): Strip nops from expression.
27817         * c-decl.c (groktypename): Take extra parameters expr and
27818         expr_const_operands.  Update call to grokdeclarator.
27819         (start_decl): Update call to grokdeclarator.  Add statement for
27820         expressions used in type of decl.
27821         (grokparm): Update call to grokdeclarator.
27822         (push_parm_decl): Update call to grokdeclarator.
27823         (build_compound_literal): Add parameter non_const and build a
27824         C_MAYBE_COSNT_EXPR if applicable.
27825         (grokdeclarator): Take extra parameters expr and
27826         expr_const_operands.  Track expressions used in declaration
27827         specifiers and declarators.  Fold array sizes and track whether
27828         they are constant expressions and whether they are integer
27829         constant expressions.
27830         (parser_xref_tag): Set expr and expr_const_operands fields in
27831         return value.
27832         (grokfield): Update call to grokdeclarator.
27833         (start_function): Update call to grokdeclarator.
27834         (build_null_declspecs): Set expr and expr_const_operands fields in
27835         return value.
27836         (declspecs_add_type): Handle expressions in typeof specifiers.
27837         * c-parser.c (c_parser_declspecs): Set expr and
27838         expr_const_operands fields for declaration specifiers.
27839         (c_parser_enum_specifier): Likewise.
27840         (c_parser_struct_or_union_specifier): Likewise.
27841         (c_parser_typeof_specifier): Likewise.  Update call to
27842         groktypename.  Fold expression as needed.  Return expressions with
27843         type instead of adding statements.
27844         (c_parser_attributes): Update calls to c_parser_expr_list.
27845         (c_parser_statement_after_labels): Fold expression before passing
27846         to objc_build_throw_stmt.
27847         (c_parser_condition): Fold expression.
27848         (c_parser_asm_operands): Fold expression.
27849         (c_parser_conditional_expression): Use c_save_expr.  Update call
27850         to build_conditional_expr.
27851         (c_parser_alignof_expression): Update call to groktypename.
27852         (c_parser_postfix_expression): Preserve C_MAYBE_CONST_EXPR as
27853         original_code.  Fold expression argument of va_arg.  Create
27854         C_MAYBE_CONST_EXPR to preserve side effects of expressions in type
27855         argument to va_arg.  Update calls to groktypename.  Fold array
27856         index for offsetof.  Verify that first argument to
27857         __builtin_choose_expr has integer type.
27858         (c_parser_postfix_expression_after_paren_type): Update calls to
27859         groktypename and build_compound_literal.  Handle expressions with
27860         side effects in type name.
27861         (c_parser_postfix_expression_after_primary): Update call to
27862         c_parser_expr_list.  Set original_code for calls to
27863         __builtin_constant_p.
27864         (c_parser_expr_list): Take extra parameter fold_p.  Fold
27865         expressions if requested.
27866         (c_parser_objc_type_name): Update call to groktypename.
27867         (c_parser_objc_synchronized_statement): Fold expression.
27868         (c_parser_objc_receiver): Fold expression.
27869         (c_parser_objc_keywordexpr): Update call to c_parser_expr_list.
27870         (c_parser_omp_clause_num_threads, c_parser_omp_clause_schedule,
27871         c_parser_omp_atomic, c_parser_omp_for_loop): Fold expressions.
27872         * c-tree.h (CONSTRUCTOR_NON_CONST): Define.
27873         (struct c_typespec): Add elements expr and expr_const_operands.
27874         (struct c_declspecs): Add elements expr and expr_const_operands.
27875         (groktypename, build_conditional_expr, build_compound_literal):
27876         Update prototypes.
27877         (in_late_binary_op): Declare.
27878         * c-typeck.c (note_integer_operands): New function.
27879         (in_late_binary_op): New variable.
27880         (decl_constant_value_for_broken_optimization): Move to c-common.c
27881         and rename to decl_constant_value_for_optimization.
27882         (default_function_array_conversion): Do not strip nops.
27883         (default_conversion): Do not call
27884         decl_constant_value_for_broken_optimization.
27885         (build_array_ref): Do not fold result.
27886         (c_expr_sizeof_expr): Fold operand.  Use C_MAYBE_CONST_EXPR for
27887         result when operand is a VLA.
27888         (c_expr_sizeof_type): Update call to groktypename.  Handle
27889         expressions included in type name.  Use C_MAYBE_CONST_EXPR for
27890         result when operand names a VLA type.
27891         (build_function_call): Update call to build_compound_literal.
27892         Only fold result for calls to __builtin_* functions.  Strip
27893         NOP_EXPR from INTEGER_CST returned from such functions.  Fold
27894         the function designator.
27895         (convert_arguments): Fold arguments.  Update call to
27896         convert_for_assignment.
27897         (build_unary_op): Handle increment and decrement of
27898         C_MAYBE_CONST_EXPR.  Move lvalue checks for increment and
27899         decrement earlier.  Fold operand of increment and decrement.
27900         Handle address of C_MAYBE_CONST_EXPR.  Only fold expression being
27901         built for integer operand.  Wrap returns that are INTEGER_CSTs
27902         without being integer constant expressions or that have integer
27903         constant operands without being INTEGER_CSTs.
27904         (lvalue_p): Handle C_MAYBE_CONST_EXPR.
27905         (build_conditional_expr): Add operand ifexp_bcp.  Track whether
27906         result is an integer constant expression or can be used in
27907         unevaluated parts of one and avoid folding and wrap as
27908         appropriate.  Fold operands before possibly doing -Wsign-compare
27909         warnings.
27910         (build_compound_expr): Wrap result for C99 if operands can be used
27911         in integer constant expressions.
27912         (build_c_cast): Update call to digest_init.  Do not ignore
27913         overflow from casting floating-point constants to integers.  Wrap
27914         results that could be confused with integer constant expressions,
27915         null pointer constants or floating-point constants.
27916         (c_cast_expr): Update call to groktypename.  Handle expressions
27917         included in type name.
27918         (build_modify_expr): Handle modifying a C_MAYBE_CONST_EXPR.  Fold
27919         lhs inside possible SAVE_EXPR.  Fold RHS before assignment.
27920         Update calls to convert_for_assignment.
27921         (convert_for_assignment): Take new parameter
27922         null_pointer_constant.  Do not strip nops or call
27923         decl_constant_value_for_broken_optimization.  Set
27924         in_late_binary_op for conversions to boolean.
27925         (store_init_value): Update call to digest_init.
27926         (digest_init): Take new parameter null_pointer_constant.  Do not
27927         call decl_constant_value_for_broken_optimization.  pedwarn for
27928         initializers not constant expressions.  Update calls to
27929         convert_for_assignment.
27930         (constructor_nonconst): New.
27931         (struct constructor_stack): Add nonconst element.
27932         (really_start_incremental_init, push_init_level, pop_init_level):
27933         Handle constructor_nonconst and nonconst element.
27934         (set_init_index): Call constant_expression_warning for array
27935         designators.
27936         (output_init_element): Fold value.  Set constructor_nonconst as
27937         applicable.  pedwarn for initializers not constant expressions.
27938         Update call to digest_init.  Call constant_expression_warning
27939         where constant initializers are required.
27940         (process_init_element): Use c_save_expr.
27941         (c_finish_goto_ptr): Fold expression.
27942         (c_finish_return): Fold return value.  Update call to
27943         convert_for_assignment.
27944         (c_start_case): Fold switch expression.
27945         (c_process_expr_stmt): Fold expression.
27946         (c_finish_stmt_expr): Create C_MAYBE_CONST_EXPR as needed to
27947         ensure statement expression is not evaluated in constant expression.
27948         (build_binary_op): Track whether results are integer constant
27949         expressions or may occur in such, disable folding and wrap results
27950         as applicable.  Fold operands for -Wsign-compare warnings unless
27951         in_late_binary_op.
27952         (c_objc_common_truthvalue_conversion): Handle results folded to
27953         integer constants that are not integer constant expressions.
27954         * doc/extend.texi: Document when typeof operands are evaluated,
27955         that condition of __builtin_choose_expr is an integer constant
27956         expression, and more about use of __builtin_constant_p in
27957         initializers.
27958
27959 2009-03-29  Richard Guenther  <rguenther@suse.de>
27960
27961         * tree-ssa-forwprop.c (forward_propagate_addr_expr_1): Properly
27962         propagate addresses of array references.
27963
27964 2009-03-29  Steven Bosscher  <steven@gcc.gnu.org>
27965
27966         * regmove.c (perhaps_ends_bb_p): Remove.
27967         (optimize_reg_copy_1): Don't call perhaps_ends_bb_p.  Get basic block
27968         from INSN and check that the main loop stays within that basic block.
27969         (optimize_reg_copy_1, optimize_reg_copy_3, fixup_match_2): Likewise.
27970         (regmove_forward_pass): Split out from regmove_optimize.  Use
27971         FOR_EACH_BB and FOR_BB_INSNS instead of traversing the insns stream.
27972         (regmove_backward_pass): Split out from regmove_optimize.  Use
27973         FOR_EACH_BB_REVERSE and FOR_BB_INSNS_REVERS_SAFE.
27974         (regmove_optimize): Simplify.
27975
27976 2009-03-29  H.J. Lu  <hongjiu.lu@intel.com>
27977
27978         PR target/39545
27979         * config/i386/i386.c (classify_argument): Ignore flexible array
27980         member in struct and warn ABI change.
27981
27982 2009-03-29  H.J. Lu  <hongjiu.lu@intel.com>
27983
27984         * config/i386/i386-protos.h (ix86_agi_dependent): New.
27985
27986         * config/i386/i386.c (ix86_agi_dependent): Rewrite.
27987         (ix86_adjust_cost): Updated.
27988
27989 2009-03-29  Jan Hubicka  <jh@suse.cz>
27990
27991         PR middle-end/28850
27992         * tree-pass.h (pass_cleanup_eh): New function.
27993         (remove_unreachable_regions): Break code handling RTL
27994         to rtl_remove_unreachable_regions; remove ERT_MUST_NOT_THROW
27995         that can not be reached by runtime.
27996         (can_be_reached_by_runtime): New function.
27997         (label_to_region_map): New function.
27998         (num_eh_regions): New function.
27999         (rtl_remove_unreachable_regions): New function.
28000         (convert_from_eh_region_ranges): Call rtl_remove_unreachable_regions.
28001         (remove_eh_region): New function.
28002         * except.h: Include sbitmap and vecprim.
28003         (remove_eh_region, remove_unreachable_regions, label_to_region_map,
28004         num_eh_regions): Declare.
28005         * passes.c (init_optimization_passes): Schedule cleanup_eh.
28006         * Makefile.in (EXCEPT_H): New; replace all uses of except.h by it.
28007         * tree-eh.c (tree_remove_unreachable_handlers): New function.
28008         (tree_empty_eh_handler_p): New function.
28009         (cleanup_empty_eh): New function.
28010         (cleanup_eh): New function.
28011         (pass_cleanup_eh): New function.
28012
28013 2009-03-29  Jan Hubicka  <jh@suse.cz>
28014
28015         * except.c (verify_eh_tree): Fix handling of fun!=cfun; be ready
28016         for removed regions.
28017
28018 2009-03-29  Jan Hubicka  <jh@suse.cz>
28019
28020         * except.c (dump_eh_tree): Dump all datastructures.
28021
28022 2009-03-29  Jan Hubicka  <jh@suse.cz>
28023
28024         * except.c (duplicate_eh_regions_0): Handle AKA bitmap.
28025         (duplicate_eh_regions_1): Likewise.
28026         (duplicate_eh_regions): Likewise; cleanup code gorwing the region
28027         vector; call EH verification.
28028         (foreach_reachable_handler, can_throw_internal_1, can_throw_external_1):
28029         Be ready for region being removed.
28030
28031 2009-03-29  Jan Hubicka  <jh@suse.cz>
28032
28033         * bitmap.c (bitmap_last_set_bit): New function.
28034         * bitmap.h (bitmap_last_set_bit): Declare.
28035
28036 2009-03-29  David Ayers  <ayers@fsfe.org>
28037
28038         PR objc/27377
28039         * c-typeck.c (build_conditional_expr): Emit ObjC warnings
28040         by calling objc_compare_types and surpress warnings about
28041         incompatible C pointers that are compatible ObjC pointers.
28042
28043 2009-03-29  Adam Nemet  <anemet@caviumnetworks.com>
28044
28045         * cgraphbuild.c (build_cgraph_edges, rebuild_cgraph_edges): Don't
28046         call initialize_inline_failed.
28047         (initialize_inline_failed): Move it from here ...
28048         * cgraph.c (initialize_inline_failed): ... to here.
28049         (cgraph_create_edge): Call initialize_inline_failed rather than
28050         setting inline_failed directly.
28051
28052 2009-03-29  Ben Elliston  <bje@au.ibm.com>
28053
28054         PR target/32542
28055         * sysv4.opt (msdata): Improve comment.
28056         * linux64.h (ASM_SPEC32): Do not pass -memb when -msdata is given.
28057         * sysv4.h (SVR4_ASM_SPEC): Likewise.
28058
28059 2009-03-29  Ben Elliston  <bje@au.ibm.com>
28060
28061         PR target/30451
28062         * config/rs6000/rs6000.md (*movti_ppc64): Correct the order of
28063         load and store attributes.
28064
28065 2009-03-29  Ben Elliston  <bje@au.ibm.com>
28066
28067         * config/i386/i386.c (enum ix86_builtins): Add IX86_BUILTIN_HUGE_VALQ.
28068         (ix86_init_builtins): Add built-in function __builtin_huge_valq.
28069         (ix86_expand_builtin): Handle IX86_BUILTIN_HUGE_VALQ.
28070         * doc/extend.texi (X86 Built-in Functions): Add index entries for
28071         __builtin_infq and __builtin_huge_valq.
28072
28073 2009-03-28  Anatoly Sokolov  <aesok@post.ru>
28074
28075         * config/avr/avr.c (avr_mcu_t): Add atmega8c1, atmega16c1 and
28076         atmega8m1 devices.
28077         * config/avr/avr.h (LINK_SPEC, CRT_BINUTILS_SPECS): (Ditto.).
28078         * config/avr/t-avr (MULTILIB_MATCHES): (Ditto.)
28079
28080 2009-03-28  Xinliang David Li  <davidxl@google.com>
28081
28082         * tree-ssa-ccp.c (ccp_finalize): Add dbg_count support.
28083         (do_dbg_cnt): New function.
28084
28085 2009-03-28  Jan Hubicka  <jh@suse.cz>
28086
28087         Merge from pretty-ipa:
28088
28089         2009-03-27  Jan Hubicka  <jh@suse.cz>
28090
28091         * cgraph.c (dump_cgraph_node): Add replace output flag by process.
28092         * tree-pass.h (function_called_by_processed_nodes_p): Declare.
28093         * passes.c (function_called_by_processed_nodes_p): New.
28094         * ipa-pure-const.c (check_call): Fix handling of operands.
28095         (analyze_function): Dump debug output for skipped bodies.
28096         (local_pure_const): Use function_called_by_processed_nodes_p.
28097         * dwarf2out.c (reference_to_unused): Use output.
28098         * passes.c (do_per_function_toporder): Likewise.
28099
28100         2008-11-12  Jan Hubicka  <jh@suse.cz>
28101
28102         * tree-pass.h (pass_fixup_cfg, pass_local_pure_const): Declare.
28103         * ipa-pure-const.c (funct_state_d): Add can throw field; make
28104         state_set_in_source enum
28105         (check_decl): Ignore memory tags; do not set fake looping flags;
28106         dump diagnostics.
28107         (check_operand, check_tree, check_rhs_var, check_lhs_var,
28108         get_asm_expr_operands, scan_function_op, scan_function_stmt): Remove.
28109         (check_call, analyze_function): Rewrite.
28110         (check_stmt): New.
28111         (add_new_function): Update call of analyze_function.
28112         (generate_summary): Add call of analyze_function.
28113         (propagate): Propagate can_throw; handle state_set_in_source correctly.
28114         (local_pure_const): New function.
28115         (pass_local_pure_const): New pass.
28116         * ipa-inline.c (inline_transform): Set after_inlining.
28117         * tree-eh.c (stmt_can_throw_external): New.
28118         * tree-optimize.c (execute_fixup_cfg): Do not set after_inlining;
28119         work with aliasing built.
28120         * tree-flow.h (stmt_can_throw_external): New.
28121         * passes.c (init_optimization_passes): Schedule fixup_cfg pass early;
28122         and local pure/const pass in early and late optimization queue.
28123
28124 2009-03-28  Martin Jambor  <mjambor@suse.cz>
28125
28126         * fold-const.c (get_pointer_modulus_and_residue): New parameter
28127         allow_func_align.
28128         (fold_binary): Allow function decl aligment consideration is the
28129         second argument is integer constant one.
28130         * tree-ssa-forwprop.c (simplify_bitwise_and): New function.
28131         (tree_ssa_forward_propagate_single_use_vars): Handle assing statements
28132         with BIT_AND_EXPR on the RHS by calling simplify_bitwise_and.
28133
28134 2009-03-28  Jan Hubicka  <jh@suse.cz>
28135
28136         * dwarf2out.c (dwarf2out_begin_prologue): Use crtl->nothrow
28137         * tree-eh.c (stmt_could_throw_p): Remove check for WEAK decls.
28138         * function.h (rtl_data): Add nothrow flag.
28139         * except.c (set_nothrow_function_flags): Use crtl->nothrow;
28140         set DECL_NOTHROW for AVAILABLE functions.
28141
28142 2009-03-28  Jakub Jelinek  <jakub@redhat.com>
28143
28144         * config/rs6000/rs6000-c.c (rs6000_macro_to_expand): If macro
28145         following vector keyword has expansion starting with pixel or bool
28146         keyword, expand vector to __vector and pixel or bool to __pixel or
28147         __bool.
28148
28149         PR c++/39554
28150         * opts.c (warning_disallowed_functions, warn_disallowed_functions,
28151         warn_if_disallowed_function_p): Removed.
28152         (common_handle_option): Don't handle OPT_Wdisallowed_function_list_.
28153         * c-parser.c (c_parser_postfix_expression_after_primary): Don't call
28154         warning_if_disallowed_function_p.
28155         * flags.h (warn_if_disallowed_function_p,
28156         warn_disallowed_functions): Removed.
28157         * common.opt (Wdisallowed-function-list=): Removed.
28158         * doc/invoke.texi (-Wdisallowed-function-list=): Removed.
28159
28160 2009-03-28  Richard Guenther  <rguenther@suse.de>
28161
28162         PR tree-optimization/38723
28163         * tree-ssa-pre.c (compute_avail): Add all default definitions to
28164         the entry block.
28165
28166 2009-03-28  Jan Hubicka  <jh@suse.cz>
28167
28168         * tree-ssa-structalias.c (ipa_pta_execute): Fix bogus node->analyzed
28169         test introduced by my previous patch.
28170
28171 2009-03-28  Richard Guenther  <rguenther@suse.de>
28172
28173         * tree-ssa-copy.c (copy_prop_visit_phi_node): Do not leave
28174         the PHIs value undefined.
28175
28176 2009-03-28  Jan Hubicka  <jh@suse.cz>
28177
28178         * tree-pass.h (pass_fixup_cfg): New pass.
28179         * ipa-inline.c (inline_transform): Set
28180         always_inline_functions_inlined/after_inlining.
28181         * tree-optimize.c (execute_fixup_cfg): Do not set them here.
28182         (pass_fixup_cfg): New pass.
28183         * passes.c (init_optimization_passes): Add fixup_cfg.
28184
28185 2009-03-28  Richard Guenther  <rguenther@suse.de>
28186
28187         PR tree-optimization/38458
28188         * tree-ssa-copy.c (copy_prop_visit_phi_node): For the first
28189         argument use the arguments copy-of value.
28190
28191 2009-03-28  Richard Guenther  <rguenther@suse.de>
28192
28193         PR tree-optimization/38180
28194         * tree-ssa-ccp.c (get_default_value): Simplify.
28195         (likely_value): Likewise.
28196         (surely_varying_stmt_p): Properly handle VOP case.
28197         (ccp_initialize): Likewise.
28198         (ccp_fold): Handle propagating through *&.
28199         (fold_const_aggregate_ref): Also handle decls.
28200
28201 2009-03-28  Jan Hubicka  <jh@suse.cz>
28202
28203         * cgraph.c (dump_cgraph_node): Add replace output flag by process.
28204         * cgraph.h (cgraph_node): Likewise.
28205         * cgraphunit.c (cgraph_process_new_functions): Set process flag.
28206         (cgraph_reset_node): Use process flag.
28207         (cgraph_mark_functions_to_output): Likewise.
28208         (cgraph_expand_function): Likewise.
28209         (cgraph_expand_all_functions): Likewise.
28210         (cgraph_output_in_order): Likewise.
28211         * dwarf2out.c (reference_to_unused): Likewise.
28212         * passes.c do_per_function_toporder): Likewise.
28213
28214 2009-03-28  Jan Hubicka  <jh@suse.cz>
28215
28216         Bring from lto-branch:
28217
28218         2008-09-03  Doug Kwan  <dougkwan@google.com>
28219
28220         * cgraphbuild.c (initialize_inline_failed): Use cgraph_inline_failed_t
28221         enums instead of reason strings.
28222         * cgraph.c (cgraph_create_edge): Same.
28223         (cgraph_inline_failed_string): New function.
28224         * cgraph.h (cgraph_inline_failed_t): New enum type.
28225         (cgraph_inline_failed_string): New prototype.
28226         (struct cgraph_edge): Change type of INLINED_FAILED from constant
28227         char pointer to cgraph_inline_failed_t.
28228         (cgraph_inline_p): Adjust prototype to use cgraph_inline_failed_t.
28229         (cgraph_default_inline_p): Ditto.
28230         * cgraphunit.c (cgraph_inline_p): Change type of parameter REASON
28231         to cgraph_inline_failed_t pointer.
28232         * cif-code.def: New file.
28233         * ipa-inline.c (cgraph_mark_inline_edge): Use an enum instead of a
28234         reason string.
28235         (cgraph_check_inline_limits): Change type of REASON to pointer to
28236         cgraph_inline_failed_t.  Replace reason strings with enums.
28237         (cgraph_default_inline_p): Ditto.
28238         (cgraph_recursive_inlining_p): Ditto.
28239         (update_caller_keys): Change type of FAILED_REASON to
28240         cgraph_inline_failed_t.
28241         (cgraph_set_inline_failed): Change type of REASON to pointer to
28242         cgraph_inline_failed_t.  Call cgraph_inline_failed_string to
28243         convert enums to strings for text output.
28244         (cgraph_decide_inlining_of_small_function): Change FAILED_REASON
28245         to be of type cgraph_inline_failed_t.  Replace reason strings with
28246         enums.  Call cgraph_inline_failed_string to covert enums
28247         to strings for text output.
28248         (cgraph_decide_inlining): Replace reason strings with enums.
28249         (cgraph_decide_inlining_incrementally): Change type of FAILED_REASON
28250         to cgraph_inline_failed_t type.  Call cgraph_inline_failed_string
28251         for text output.
28252         * tree-inline.c (expand_call_inline): Change type of REASON
28253         to cgraph_inline_failed_t.  Replace reason strings with enums.
28254         Call cgraph_inline_failed_string for text output.
28255         * Makefile.in (CGRAPH_H): Add cif-code.def to dependencies.
28256         (cgraph.o): Ditto.
28257
28258 2009-03-28  Jan Hubicka  <jh@suse.cz>
28259
28260         * cgraph.c (cgraph_node, cgraph_remove_node, dump_cgraph_node,
28261         cgraph_clone_node): Remove master clone handling.
28262         (cgraph_is_master_clone, cgraph_master_clone): Remove.
28263         * cgraph.h (master_clone): Remove.
28264         (cgraph_is_master_clone, cgraph_master_clone): Remove.
28265         * ipa-type-escape.c (type_escape_execute): Remove use of master clone.
28266         (tree-ssa-structalias.c (ipa_pta_execute): Likewise.
28267
28268 2009-03-28  Jan Hubicka  <jh@suse.cz>
28269
28270         * cgraph.c (cgraph_function_body_availability): Functions declared
28271         inline are always safe to assume that it is not going to be replaced.
28272
28273 2009-03-28  Richard Guenther  <rguenther@suse.de>
28274
28275         PR tree-optimization/38513
28276         * tree-ssa-pre.c (eliminate): Remove redundant stores.
28277         * tree-ssa-sccvn.c (copy_reference_ops_from_ref): Handle
28278         EXC_PTR_EXPR and FILTER_EXPR.
28279         (get_ref_from_reference_ops): Likewise.
28280
28281 2009-03-28  Richard Guenther  <rguenther@suse.de>
28282
28283         PR tree-optimization/38968
28284         * tree-vect-analyze.c (vect_compute_data_ref_alignment):
28285         Use FLOOR_MOD_EXPR to compute misalignment.
28286
28287 2009-03-28  Richard Guenther  <rguenther@suse.de>
28288
28289         PR tree-optimization/37795
28290         * tree.h (combine_comparisons): Declare.
28291         * fold-const.c (combine_comparisons): Export.
28292         * tree-ssa-ifcombine.c (ifcombine_ifandif): Optimize two successive
28293         comparisons.
28294         (ifcombine_iforif): Use combine_comparisons.
28295
28296 2009-03-28  Jan Hubicka  <jh@suse.cz>
28297
28298         * tree-eh.c (inlinable_call_p): New function.
28299         (make_eh_edges): Use it.
28300         (verify_eh_edges): Use it.
28301         (stmt_can_throw_external, stmt_can_throw_internal): Use it.
28302         * except.c (reachable_next_level): Add inlinable_function argument
28303         (sjlj_find_directly_reachable_regions): Update.
28304         (add_reachable_handler): Do not set saw_any_handlers.
28305         (reachable_next_level): Handle MUST_NOT_THROW more curefully.
28306         (foreach_reachable_handler, can_throw_internal_1, can_throw_external_1):
28307         Add new inlinable call parameter.
28308         (can_throw_internal, can_throw_external): Update.
28309         * except.h (can_throw_internal_1, can_throw_external_1,
28310         foreach_reachable_handler): Update declaration.
28311
28312 2009-03-28  Joseph Myers  <joseph@codesourcery.com>
28313
28314         * config/arm/t-arm-coff, config/h8300/coff.h,
28315         config/i386/i386-aout.h, config/i386/i386-coff.h,
28316         config/libgloss.h, config/m68k/coff.h, config/m68k/m68k-aout.h,
28317         config/pdp11/2bsd.h, config/rs6000/aix41.h,
28318         config/rs6000/aix41.opt, config/rs6000/t-newas, config/sh/coff.h,
28319         fix-header.c, fixproto, gen-protos.c, protoize.c, scan-decls.c,
28320         scan-types.sh, scan.c, scan.h, sort-protos, sys-protos.h,
28321         sys-types.h: Remove.
28322         * Makefile.in: Remove protoize and fixproto support and references
28323         in comments.
28324         (SYSCALLS.c.X-warn, TARGET_GETGROUPS_T, STMP_FIXPROTO,
28325         PROTOIZE_INSTALL_NAME, UNPROTOIZE_INSTALL_NAME, FIXPROTO_DEFINES):
28326         Remove.
28327         (ALL_HOST_OBJS): Remove $(PROTO_OBJS).
28328         (MOSTLYCLEANFILES): Remove protoize$(exeext) and
28329         unprotoize$(exeext).
28330         (rest.encap): Don't depend on $(STMP_FIXPROTO)
28331         (.PHONY): Don't depend on proto.
28332         (libgcc-support): Don't depend on $(STMP_FIXPROTO).
28333         (proto, PROTO_OBJS, protoize$(exeext), unprotoize$(exeext),
28334         protoize.o, unprotoize.o, SYSCALLS.c.X, test-protoize-simple,
28335         deduced.h, GEN_PROTOS_OBJS, build/gen-protos$(build_exeext),
28336         build/gen-protos.o, build/scan.o, xsys-protos.h,
28337         build/fix-header$(build_exeext), build/fix-header.o,
28338         build/scan-decls.o, fixhdr.ready, stmp-fixproto,
28339         stmp-install-fixproto): Remove.
28340         (mostlyclean): Don't remove xsys-protos.hT, SYSCALLS.c.X,
28341         SYSCALLS.c or fixproto files.
28342         (install-common): Don't install protoize.
28343         (install-headers-tar, install-headers-cpio, install-headers-cp):
28344         Don't depend on $(STMP_FIXPROTO).
28345         (install-mkheaders): Don't depend on $(STMP_FIXPROTO).  Don't
28346         install fixproto files or write out fixproto settings.
28347         (uninstall): Don't uninstall protoize.
28348         * config.gcc (use_fixproto): Remove.
28349         (arm-*-coff*, armel-*-coff*, h8300-*-*, i[34567]86-*-aout*,
28350         i[34567]86-*-coff*, m68k-*-aout*, m68k-*-coff*, pdp11-*-bsd,
28351         rs6000-ibm-aix4.[12]*, powerpc-ibm-aix4.[12]*, sh-*-*): Remove.
28352         * config/m32r/t-linux (STMP_FIXPROTO): Remove.
28353         * config/m68k/m68k.c: Remove M68K_TARGET_COFF-conditional code.
28354         * config/mips/t-iris (FIXPROTO_DEFINES): Remove.
28355         * config/pa/t-pa-hpux (FIXPROTO_DEFINES): Remove.
28356         * config/pdp11/pdp11.c: Remove TWO_BSD-conditional code.
28357         * config/t-svr4 (FIXPROTO_DEFINES): Remove.
28358         * config/t-vxworks (STMP_FIXPROTO): Remove.
28359         * configure.ac (AC_TYPE_GETGROUPS, TARGET_GETGROUPS_T,
28360         STMP_FIXPROTO): Remove.
28361         * config.in, configure: Regenerate.
28362         * crtstuff.c (gid_t, uid_t): Don't undefine.
28363         * doc/install.texi: Change m68k-coff to m68k-elf in example.
28364         (arm-*-coff, arm-*-aout: Remove target entries.
28365         (*-ibm-aix*): Mention removal of support for AIX 4.2 and older.
28366         Remove mention of AIX 4.1.
28367         (m68k-*-*): Remove mention of m68k-*-aout and m68k-*-coff*.
28368         * doc/invoke.texi (Running Protoize): Remove.
28369         * doc/trouble.texi (Actual Bugs): Remove mention of fixproto.
28370         (Protoize Caveats): Remove.
28371         * tsystem.h: Update comments on headers assumed to exist.
28372
28373 2009-03-27  Vladimir Makarov  <vmakarov@redhat.com>
28374
28375         * genautomata.c: Add a new year to the copyright.  Add a new
28376         reference.
28377         (struct insn_reserv_decl): Add comments for member bypass_list.
28378         (find_bypass): Remove.
28379         (insert_bypass): New.
28380         (process_decls): Use insert_bypass.
28381         (output_internal_insn_latency_func): Output all bypasses with the
28382         same input insn in one switch case.
28383
28384         * rtl.def (define_bypass): Describe bypass choice.
28385         * doc/md.texi (define_bypass): Ditto.
28386
28387 2009-03-27  Richard Guenther  <rguenther@suse.de>
28388
28389         * gimplify.c (mark_addressable): Export.
28390         * tree-flow.h (mark_addressable): Declare.
28391         * tree-ssa-loop-manip.c (create_iv): Mark the base addressable.
28392         * tree-ssa.c (verify_phi_args): Verify that address taken
28393         variables have TREE_ADDRESSABLE set.
28394
28395 2009-03-27  Richard Guenther  <rguenther@suse.de>
28396
28397         * fold-const.c (build_fold_addr_expr_with_type_1): Rename back to ...
28398         (build_fold_addr_expr_with_type): ... this.  Remove in_fold handling.
28399         Do not mark decls TREE_ADDRESSABLE.
28400         (build_fold_addr_expr): Adjust.
28401         (fold_addr_expr): Remove.
28402         (fold_unary): Use build_fold_addr_expr.
28403         (fold_comparison): Likewise.
28404         (split_address_to_core_and_offset): Likewise.
28405         * coverage.c (tree_coverage_counter_addr): Mark the array decl
28406         TREE_ADDRESSABLE.
28407         * gimplify.c (mark_addressable): Do not exclude RESULT_DECLs.
28408         (gimplify_modify_expr_to_memcpy): Mark source and destination
28409         addressable.
28410         * omp-low.c (create_omp_child_function): Mark the object decl
28411         TREE_ADDRESSABLE.
28412         (lower_rec_input_clauses): Mark the var we take the address of
28413         TREE_ADDRESSABLE.
28414         (lower_omp_taskreg): Mark the sender decl TREE_ADDRESSABLE.
28415
28416 2009-03-27  H.J. Lu  <hongjiu.lu@intel.com>
28417
28418         PR middle-end/39315
28419         * cfgexpand.c (expand_one_stack_var_at): Change alignment
28420         limit to MAX_SUPPORTED_STACK_ALIGNMENT.
28421
28422 2009-03-27  Richard Guenther  <rguenther@suse.de>
28423
28424         PR tree-optimization/39120
28425         * tree-ssa-structalias.c (handle_rhs_call): Fill out return
28426         constraints.
28427         (handle_lhs_call): Process return constraints.  Add escape
28428         constraints if necessary.
28429         (handle_const_call): Fill out return constraints.  Make nested
28430         case more precise.  Avoid consttmp if possible.
28431         (handle_pure_call): Fill out return constraints.  Avoid
28432         callused if possible.
28433         (find_func_aliases): Simplify call handling.
28434
28435 2009-03-27  Richard Guenther  <rguenther@suse.de>
28436
28437         PR tree-optimization/39120
28438         * tree-ssa-structalias.c (do_sd_constraint): Do not use CALLUSED
28439         as a representative.
28440         (solve_graph): Do propagate CALLUSED.
28441         (handle_pure_call): Use a scalar constraint from CALLUSED for
28442         the return value.
28443         (find_what_p_points_to): CALLUSED shall not appear in poins-to
28444         solutions.
28445
28446 2009-03-27  H.J. Lu  <hongjiu.lu@intel.com>
28447
28448         PR c/39323
28449         * c-common.c (handle_aligned_attribute): Properly check alignment
28450         overflow.  Use (1U << i) instead of (1 << i).
28451
28452         * emit-rtl.c (get_mem_align_offset): Use "unsigned int" for align.
28453
28454         * expr.h (get_mem_align_offset): Updated.
28455
28456         * tree.h (tree_decl_common): Change align to "unsigned int" and
28457         move it before pointer_alias_set.
28458
28459 2009-03-27  H.J. Lu  <hongjiu.lu@intel.com>
28460             Jakub Jelinek  <jakub@redhat.com>
28461
28462         PR target/38034
28463         * config/ia64/sync.md (cmpxchg_rel_<mode>): Replace input
28464         gr_register_operand with gr_reg_or_0_operand.
28465         (cmpxchg_rel_di): Likewise.
28466         (sync_lock_test_and_set<mode>): Likewise.
28467
28468 2009-03-27  H.J. Lu  <hongjiu.lu@intel.com>
28469
28470         * jump.c (rtx_renumbered_equal_p): Use subreg_get_info.
28471         (true_regnum): Likewise.
28472
28473         * rtlanal.c (subreg_info): Moved to ...
28474         * rtl.h (subreg_info): Here.  New.
28475         (subreg_get_info): New.
28476
28477         * rtlanal.c (subreg_get_info): Make it extern.
28478
28479 2009-03-27  H.J. Lu  <hongjiu.lu@intel.com>
28480
28481         PR target/39472
28482         * config/i386/i386.c (ix86_abi): New.
28483         (override_options): Handle -mabi=.
28484         (ix86_function_arg_regno_p): Replace DEFAULT_ABI with ix86_abi.
28485         (ix86_call_abi_override): Likewise.
28486         (init_cumulative_args): Likewise.
28487         (function_arg_advance): Likewise.
28488         (function_arg_64): Likewise.
28489         (function_arg): Likewise.
28490         (ix86_pass_by_reference): Likewise.
28491         (ix86_function_value_regno_p): Likewise.
28492         (ix86_build_builtin_va_list_abi): Likewise.
28493         (setup_incoming_varargs_64): Likewise.
28494         (is_va_list_char_pointer): Likewise.
28495         (ix86_init_machine_status): Likewise.
28496         (ix86_reg_parm_stack_space): Use enum calling_abi on call_abi.
28497         (ix86_function_type_abi): Return enum calling_abi.  Rewrite
28498         for 64bit.  Replace DEFAULT_ABI with ix86_abi.
28499         (ix86_function_abi): Make it static and return enum calling_abi.
28500         (ix86_cfun_abi): Return enum calling_abi.  Replace DEFAULT_ABI
28501         with ix86_abi.
28502         (ix86_fn_abi_va_list): Updated.
28503
28504         * config/i386/i386.h (ix86_abi): New.
28505         (STACK_BOUNDARY): Replace DEFAULT_ABI with ix86_abi.
28506         (CONDITIONAL_REGISTER_USAGE): Likewise.
28507         (CUMULATIVE_ARGS): Change call_abi type to enum calling_abi.
28508         (machine_function): Likewise.
28509
28510         * config/i386/i386.md (untyped_call): Replace DEFAULT_ABI
28511         with ix86_abi.
28512         * config/i386/cygming.h (TARGET_64BIT_MS_ABI): Likewise.
28513         (STACK_BOUNDARY): Likewise.
28514         * config/i386/mingw32.h (EXTRA_OS_CPP_BUILTINS): Likewise.
28515
28516         * config/i386/i386.opt (mabi=): New.
28517
28518         * config/i386/i386-protos.h (ix86_cfun_abi): Changed to
28519         return enum calling_abi.
28520         (ix86_function_type_abi): Likewise.
28521         (ix86_function_abi): Removed.
28522
28523         * doc/invoke.texi: Document -mabi= option for x86.
28524
28525 2009-03-27  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
28526
28527         * builtins.c (real_dconstp): Delete.
28528         (fold_builtin_logarithm): Remove inaccurate log(e) special case.
28529
28530 2009-03-27  Dodji Seketeli  <dodji@redhat.com>
28531             Jakub Jelinek  <jakub@redhat.com>
28532
28533         PR debug/37959
28534         * dwarf2out.c (dwarf_attr_name): Handle DW_AT_explicit attribute.
28535         (gen_subprogram_die): When a function is explicit, generate the
28536         DW_AT_explicit attribute.
28537         * langhooks.h (struct lang_hooks_for_decls): Add
28538         function_decl_explicit_p langhook.
28539         * langhooks-def.h (LANG_HOOKS_FUNCTION_DECL_EXPLICIT_P): Define.
28540         (LANG_HOOKS_DECLS): Add LANG_HOOKS_FUNCTION_DECL_EXPLICIT_P.
28541
28542 2009-03-27  Jakub Jelinek  <jakub@redhat.com>
28543
28544         * builtins.c (fold_builtin_memory_op): Optimize memmove
28545         into memcpy if we can prove source and destination don't overlap.
28546
28547         * tree-inline.c: Include gt-tree-inline.h.
28548         (clone_fn_id_num): New variable.
28549         (clone_function_name): New function.
28550         (tree_function_versioning): Use it.
28551         * Makefile.in (GTFILES): Add tree-inline.c.
28552
28553 2009-03-27  Mark Mitchell  <mark@codesourcery.com>
28554
28555         * BASE-VER: Change to 4.5.0.
28556
28557 2009-03-27  Xinliang David Li  <davidxl@google.com>
28558
28559         PR tree-optimization/39557
28560         * tree-ssa.c (warn_uninitialized_vars): free postdom info.
28561
28562 2009-03-27  Xinliang David Li  <davidxl@google.com>
28563
28564         PR tree-optimization/39548
28565         * tree-ssa-copy.c (copy_prop_visit_phi_node): Add copy
28566         candidate check.
28567
28568 2009-03-27  H.J. Lu  <hongjiu.lu@intel.com>
28569
28570         * c-common.c (pointer_int_sum): Use %wd on return from
28571         tree_low_cst.
28572
28573 2009-03-27  H.J. Lu  <hongjiu.lu@intel.com>
28574
28575         * c-common.c (pointer_int_sum): Use HOST_WIDE_INT_PRINT_DEC
28576         on return from tree_low_cst.
28577
28578 2009-03-27  Andrew Pinski  <andrew_pinski@playstation.sony.com>
28579
28580         PR c++/36799
28581         * ginclude/stdarg.h (va_copy): Define also for
28582         __GXX_EXPERIMENTAL_CXX0X__.
28583
28584 2009-03-27  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
28585
28586         PR c++/35652
28587         * builtins.h (c_strlen): Do not warn here.
28588         * c-typeck.c (build_binary_op): Adjust calls to pointer_int_sum.
28589         * c-common.c (pointer_int_sum): Take an explicit location.
28590         Warn about offsets out of bounds.
28591         * c-common.h (pointer_int_sum): Adjust declaration.
28592
28593 2009-03-26  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
28594
28595         * doc/invoke.texi (i386 and x86-64 Windows Options): Fix texinfo
28596         markup glitch.
28597
28598 2009-03-26  Jakub Jelinek  <jakub@redhat.com>
28599
28600         PR c++/39554
28601         * opts.c (warn_if_disallowed_function_p): Don't assume
28602         get_callee_fndecl must return non-NULL.
28603
28604 2009-03-26  Vladimir Makarov  <vmakarov@redhat.com>
28605
28606         PR rtl-optimization/39522
28607         * reload1.c (reload_as_needed): Invalidate reg_last_reload_reg too
28608         when reg_reloaded_valid is set.
28609
28610 2009-03-26  Ulrich Weigand  <Ulrich.Weigand@de.ibm.com>
28611
28612         * config/spu/divv2df3.c: New file.
28613         * config/spu/t-spu-elf (LIB2FUNCS_STATIC_EXTRA): Add it.
28614         (DPBIT_FUNCS): Filter out _div_df.
28615
28616 2009-03-26  Bernd Schmidt  <bernd.schmidt@analog.com>
28617
28618         * config/bfin/bfin.c (bfin_optimize_loop): If the LSETUP goes before
28619         a jump insn, count that jump in the distance to the loop start.
28620
28621 2009-03-25  Kaz Kojima  <kkojima@gcc.gnu.org>
28622
28623         PR target/39523
28624         * config/sh/sh.c (calc_live_regs): Fix condition for global
28625         registers except PIC_OFFSET_TABLE_REGNUM.
28626
28627 2009-03-25  Kai Tietz  <kai.tietz@onevision.com>
28628
28629         PR/39518
28630         * doc/invoke.texi (-mconsole): New.
28631         (-mcygwin): New.
28632         (-mno-cygwin): New.
28633         (-mdll): New.
28634         (-mnop-fun-dllimport): New.
28635         (-mthread): New.
28636         (-mwin32): New.
28637         (-mwindows): New.
28638         (sub section "i386 and x86-64 Windows Options"): New.
28639
28640 2009-03-25  Ralf Corsépius  <ralf.corsepius@rtems.org>
28641
28642         * config/arm/rtems-elf.h: Remove LINK_GCC_C_SEQUENCE_SPEC.
28643         * config/rs6000/t-rtems: Remove MULTILIB_EXTRA_OPTS.
28644
28645 2009-03-25  Richard Guenther  <rguenther@suse.de>
28646
28647         PR middle-end/39497
28648         * Makefile.in (dfp.o-warn): Use -fno-strict-aliasing instead
28649         of -Wno-error.
28650
28651 2009-03-25  Andrey Belevantsev  <abel@ispras.ru>
28652
28653         * config/ia64/ia64.c (ia64_set_sched_flags): Zero spec_info->mask when
28654         neither of haifa/selective schedulers are working.
28655
28656 2009-03-25  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
28657
28658         * doc/invoke.texi (Debugging Options): Fix description of
28659         -fno-merge-debug-strings.
28660
28661 2009-03-24  Hans-Peter Nilsson  <hp@axis.com>
28662
28663         * config/cris/libgcc.ver: New version-script.
28664         * config/cris/t-linux (SHLIB_MAPFILES): Use it.
28665
28666         * configure.ac <GAS features, nop mnemonic>: Add pattern
28667         crisv32-*-* for "nop".
28668         <GAS features, Thread-local storage>: Add item for CRIS and CRIS v32.
28669         * configure: Regenerate.
28670
28671 2009-03-24  Ira Rosen  <irar@il.ibm.com>
28672
28673         PR tree-optimization/39529
28674         * tree-vect-transform.c (vect_create_data_ref_ptr): Call
28675         mark_sym_for_renaming for the tag copied to the new vector
28676         pointer.
28677
28678 2009-03-24  Arthur Loiret  <aloiret@debian.org>
28679
28680         * config.host (alpha*-*-linux*): Use driver-alpha.o and alpha/x-alpha.
28681         * config/alpha/linux.h (host_detect_local_cpu): Declare, add to
28682         EXTRA_SPEC_FUNCTIONS.
28683         (MCPU_MTUNE_NATIVE_SPECS, DRIVER_SELF_SPECS): New macros.
28684         * config/alpha/driver-alpha.c, config/alpha/x-alpha: New.
28685         * doc/invoke.texi (DEC Alpha Options): Document 'native' value for
28686         -march and -mtune options.
28687
28688 2009-03-24  Ralf Corsépius  <ralf.corsepius@rtems.org>
28689
28690         * config/m68k/t-rtems: Add m5329 multilib.
28691
28692 2009-03-24  Dodji Seketeli  <dodji@redhat.com>
28693             Jakub Jelinek  <jakub@redhat.com>
28694
28695         PR debug/39524
28696         * dwarf2out.c (gen_variable_die): Avoid adding duplicate declaration
28697         nodes.
28698
28699 2009-03-23  Jakub Jelinek  <jakub@redhat.com>
28700
28701         PR c/39495
28702         * c-parser.c (c_parser_omp_for_loop): Call c_parser_binary_expression
28703         instead of c_parser_expression_conv, if original_code isn't one of the
28704         4 allowed comparison codes, fail.
28705
28706 2009-03-23  Richard Guenther  <rguenther@suse.de>
28707
28708         * cgraph.h (struct cgraph_node): Reorder fields for 64-bit hosts.
28709         * tree.h (struct tree_type): Likewise.
28710         * reload.h (struct insn_chain): Likewise.
28711         * dwarf2out.c (struct dw_loc_descr_struct): Likewise.
28712         * function.h (struct function): Likewise.
28713         * tree-ssa-structalias.c (struct equiv_class_label): Likewise.
28714
28715 2009-03-23  Jakub Jelinek  <jakub@redhat.com>
28716
28717         PR tree-optimization/39516
28718         * lambda-code.c (perfect_nestify): Fix type of the uboundvar variable.
28719
28720 2009-03-23  Bingfeng Mei  <bmei@broadcom.com>
28721
28722         * config.gcc (need_64bit_hwint): Make clear that need_64bit_hwint
28723         should be set true if BITS_PER_WORD of target is bigger than 32
28724
28725 2009-03-22  Hans-Peter Nilsson  <hp@axis.com>
28726
28727         * config/cris/linux.h (CRIS_LINK_SUBTARGET_SPEC):
28728         Translate -B-options to -rpath-link.  Correct existing
28729         rpath-link and conditionalize on !nostdlib.
28730
28731 2009-03-22  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
28732
28733         * doc/extend.texi (Function Attributes, Variable Attributes):
28734         Fix typos.
28735         * doc/invoke.texi (Debugging Options, Optimize Options)
28736         (i386 and x86-64 Options, MCore Options): Likewise.
28737
28738 2009-03-20  Jakub Jelinek  <jakub@redhat.com>
28739
28740         PR debug/37890
28741         * dwarf2out.c (gen_namespace_die): Add context_die argument and use
28742         it for block local namespace aliases.
28743         (gen_decl_die): Pass context_die to gen_namespace_die.
28744
28745 2009-03-19  Jakub Jelinek  <jakub@redhat.com>
28746
28747         PR c/39495
28748         * c-omp.c (c_finish_omp_for): Allow NE_EXPR with TREE_TYPE (decl)'s
28749         minimum or maximum value.
28750
28751 2009-03-19  Alexandre Oliva  <aoliva@redhat.com>
28752
28753         * reginfo.c (globalize_reg): Recompute derived reg sets.
28754
28755 2009-03-19  Ozkan Sezer  <sezeroz@gmail.com>
28756
28757         PR target/39063
28758         * libgcc2.c (mprotect): Do not use signed arguments for
28759         VirtualProtect, use DWORD arguments.  Also fix the 'may
28760         be used uninitialized' warning for the np variable.
28761
28762 2009-03-19  Jakub Jelinek  <jakub@redhat.com>
28763
28764         PR target/39496
28765         * config/i386/i386.c (ix86_function_regparm): Don't optimize local
28766         functions using regparm calling conventions when not optimizing.
28767         (ix86_function_sseregparm): Similarly for sseregparm calling
28768         conventions.
28769
28770 2009-03-19  Li Feng  <nemokingdom@gmail.com>
28771
28772         PR middle-end/39500
28773         * tree-data-ref.c (analyze_subscript_affine_affine): There is no
28774         dependence if the first conflict is after niter iterations.
28775
28776 2009-03-19  Hans-Peter Nilsson  <hp@axis.com>
28777
28778         PR middle-end/38609
28779         * config/cris/cris.h (FRAME_POINTER_REQUIRED): Force for all
28780         functions with dynamic stack-pointer adjustments.
28781
28782 2009-03-19  Ben Elliston  <bje@au.ibm.com>
28783
28784         * doc/invoke.texi (RS/6000 and PowerPC Options): Fix -msdata-data
28785         option; change to -msdata=data.
28786
28787 2009-03-18  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
28788
28789         * c.opt: Unify help texts for -Wdeprecated, -Wsystem-headers,
28790         and -fopenmp.
28791
28792 2009-03-18  Eric Botcazou  <ebotcazou@adacore.com>
28793
28794         PR target/35180
28795         * config/sparc/sparc.md (do_builtin_setjmp_setup): Prettify asm output.
28796
28797 2009-03-18  Sandra Loosemore  <sandra@codesourcery.com>
28798
28799         * doc/invoke.texi (Code Gen Options): Expand discussion of
28800         -fno-common.
28801
28802 2009-03-18  Jakub Jelinek  <jakub@redhat.com>
28803
28804         * dse.c (struct group_info): Reorder fields for 64-bit hosts.
28805         * matrix-reorg.c (struct matrix_info): Likewise.
28806         * tree-ssa-loop-ivopts.c (struct ivopts_data): Likewise.
28807         * rtl.h (struct mem_attrs): Likewise.
28808         * df.h (struct df): Likewise.
28809         * tree-data-ref.h (struct data_dependence_relation): Likewise.
28810         * ira-int.h (struct ira_allocno): Likewise.
28811         * df-scan.c (struct df_collection_rec): Likewise.
28812         * ira.c (struct equivalence): Likewise.
28813         * function.c (struct temp_slot): Likewise.
28814         * cfgloop.h (struct loop): Likewise.
28815
28816         PR debug/39485
28817         * function.c (use_register_for_decl): When not optimizing, disregard
28818         register keyword for variables with types containing methods.
28819
28820 2009-03-18  Sebastian Pop  <sebastian.pop@amd.com>
28821
28822         PR middle-end/39447
28823         * graphite.c (exclude_component_ref): Renamed contains_component_ref_p.
28824         (is_simple_operand): Call contains_component_ref_p before calling data
28825         reference analysis that would fail on COMPONENT_REFs.
28826
28827         * tree-vrp.c (search_for_addr_array): Fix formatting.
28828
28829 2009-03-18  Richard Guenther  <rguenther@suse.de>
28830
28831         * tree-vect-transform.c (vect_loop_versioning): Fold the
28832         generated comparisons.
28833         * tree-vectorizer.c (set_prologue_iterations): Likewise.
28834         (slpeel_tree_peel_loop_to_edge): Likewise.
28835
28836 2009-03-17  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
28837
28838         PR middle-end/37805
28839         * opts.c (print_specific_help): In addition to `undocumented',
28840         accept `separate' and `joined' flags if passed alone.  Describe
28841         output by the first matched one of those.
28842         (common_handle_option): Skip over empty strings.
28843         * gcc.c (display_help): Fix help string for `--help='.
28844         * doc/invoke.texi (Option Summary, Overall Options): With
28845         `--help=', classes and qualifiers can both be repeated, but
28846         only the latter can be negated.  One should not pass only
28847         negated qualifiers.  Fix markup and examples.
28848
28849         Revert
28850         2008-10-14  Jakub Jelinek  <jakub@redhat.com>
28851         PR middle-end/37805
28852         * opts.c (common_handle_option): Don't ICE on -fhelp=joined
28853         and -fhelp=separate.
28854
28855 2009-03-17  Jing Yu  <jingyu@google.com>
28856
28857         PR middle-end/39378
28858         * function.h (struct rtl_data): Move is_thunk from here...
28859         (struct function): ...to here.
28860         * cp/method.c (use_thunk): Change is_thunk from crtl to cfun.
28861         * varasm.c (assemble_start_function): Change is_thunk from crtl to
28862         cfun.
28863         * config/alpha/alpha.c (alpha_sa_mask): Change is_thunk from crtl to
28864         cfun.
28865         (alpha_does_function_need_gp, alpha_start_function): Likewise.
28866         (alpha_output_function_end_prologue): Likewise.
28867         (alpha_end_function, alpha_output_mi_thunk_osf): Likewise.
28868         * config/rs6000/rs6000.c (rs6000_ra_ever_killed): Likewise.
28869         (rs6000_output_function_epilogue): Likewise.
28870         * config/arm/arm.h (ARM_DECLARE_FUNCTION_NAME): Likewise.
28871
28872 2009-03-17  Uros Bizjak  <ubizjak@gmail.com>
28873
28874         PR target/39482
28875         * config/i386/i386.md (*truncdfsf_mixed): Avoid combining registers
28876         from different units in a single alternative.
28877         (*truncdfsf_i387): Ditto.
28878         (*truncxfsf2_mixed): Ditto.
28879         (*truncxfdf2_mixed): Ditto.
28880
28881 2009-03-17  Jakub Jelinek  <jakub@redhat.com>
28882
28883         * dwarf2out.c (dwarf2out_imported_module_or_decl_1): Allow
28884         non-NAMESPACE_DECL IMPORTED_DECL_ASSOCIATED_DECL.
28885
28886         PR debug/39474
28887         * tree-ssa-live.c (remove_unused_locals): Don't remove local
28888         unused non-artificial variables when not optimizing.
28889
28890         PR debug/39471
28891         * dwarf2out.c (dwarf2out_imported_module_or_decl_1): Emit
28892         DW_TAG_imported_module even if decl is IMPORTED_DECL with
28893         NAMESPACE_DECL in its DECL_INITIAL.
28894
28895         PR middle-end/39443
28896         * optabs.c (set_user_assembler_libfunc): New function.
28897         * expr.h (set_user_assembler_libfunc): New prototype.
28898         * c-common.c: Include libfuncs.h.
28899         (set_builtin_user_assembler_name): Call set_user_assembler_libfunc
28900         for memcmp, memset, memcpy, memmove and abort.
28901         * Makefile.in (c-common.o): Depend on libfuncs.h.
28902
28903         PR debug/39412
28904         * dwarf2out.c (gen_inlined_enumeration_type_die,
28905         gen_inlined_structure_type_die, gen_inlined_union_type_die,
28906         gen_tagged_type_instantiation_die): Removed.
28907         (gen_decl_die): For TYPE_DECL_IS_STUB with non-NULL decl_origin
28908         do nothing.
28909
28910 2009-03-17  Janis Johnson  <janis187@us.ibm.com>
28911
28912         PR testsuite/38526
28913         * Makefile.in (site.exp): Rename TEST_GCC_EXEC_PREFIX and comment
28914         its use.
28915         (check-%): Don't set GCC_EXEC_PREFIX when invoking runtest.
28916         (check-parallel-%): Ditto.
28917         (check-consistency): Ditto.
28918
28919 2009-03-17  Kai Tietz  <kai.tietz@onevision.com>
28920
28921         * ipa-struct-reorg.c (create_general_new_stmt): Initialize
28922         local variable rhs by NULL_TREE.
28923
28924 2009-03-17  H.J. Lu  <hongjiu.lu@intel.com>
28925
28926         PR target/39477
28927         * doc/extend.texi: Correct register behavior for regparm on Intel 386.
28928
28929 2009-03-17  H.J. Lu  <hongjiu.lu@intel.com>
28930
28931         PR target/39476
28932         * config/i386/i386.c (ix86_function_regparm): Rewrite for 64bit.
28933
28934 2009-03-17  H.J. Lu  <hongjiu.lu@intel.com>
28935
28936         PR target/39473
28937         * config/i386/i386.c (ix86_expand_call): Check extra clobbers
28938         for ms->sysv ABI calls only in 64bit mode.
28939
28940         * config/i386/i386.md (untyped_call): Support 32bit.
28941
28942 2009-03-16  H.J. Lu  <hongjiu.lu@intel.com>
28943
28944         * doc/extend.texi: Replace x86_65 with x86_64.
28945
28946 2009-03-16  Jakub Jelinek  <jakub@redhat.com>
28947
28948         PR tree-optimization/39455
28949         * tree-ssa-loop-niter.c (number_of_iterations_lt_to_ne): Fix types
28950         mismatches for POINTER_TYPE_P (type).
28951         (number_of_iterations_le): Likewise.
28952
28953 2009-03-16  Hariharan Sandanagobalane  <hariharan@picochip.com>
28954
28955         * config/picochip/picochip.c: Removed profiling support.
28956         * config/picochip/picochip.md: Removed profiling instruction.
28957         * config/picochip/picochip.h: Removed profiling builtin.
28958
28959 2009-03-16  Joseph Myers  <joseph@codesourcery.com>
28960
28961         * doc/install.texi (--with-host-libstdcxx): Document.
28962
28963 2009-03-14  Anatoly Sokolov  <aesok@post.ru>
28964
28965         PR target/34299
28966         * config/avr/avr.c (avr_handle_fndecl_attribute): Move code for
28967         generate a warning if the function name does not begin with
28968         "__vector" and the function has either the 'signal' or 'interrupt'
28969         attribute, from here to ...
28970         (avr_declare_function_name): ...here. New function.
28971         * config/avr/avr.h (ASM_DECLARE_FUNCTION_NAME): Redefine.
28972         * config/avr/avr-protos.h (avr_declare_function_name): Declare.
28973
28974 2009-03-14  Jakub Jelinek  <jakub@redhat.com>
28975
28976         PR bootstrap/39454
28977         * cse.c (fold_rtx): Don't modify original const_arg1 when
28978         canonicalizing SHIFT_COUNT_TRUNCATED shift count, do it on a
28979         separate variable instead.
28980         * rtlanal.c (nonzero_bits1) <case ASHIFTRT>: Don't assume anything
28981         from out of range shift counts.
28982         (num_sign_bit_copies1) <case ASHIFTRT, case ASHIFT>: Similarly.
28983
28984 2009-03-13  Catherine Moore  <clm@codesourcery.com>
28985
28986         * config/i386/x-mingw32 (host-mingw32.o): Replace
28987         diagnostic.h with $(DIAGNOSTIC_H).
28988
28989 2009-03-12  Jakub Jelinek  <jakub@redhat.com>
28990
28991         PR target/39431
28992         * config/i386/predicates.md (cmpxchg8b_pic_memory_operand): New
28993         predicate.
28994         * config/i386/sync.md (sync_compare_and_swap<mode>,
28995         sync_compare_and_swap_cc<mode>): For DImode with -m32 -fpic check
28996         if operands[1] is cmpxchg8b_pic_memory_operand, if not force address
28997         into a register.
28998         (sync_double_compare_and_swapdi_pic,
28999         sync_double_compare_and_swap_ccdi_pic): Require operand 1 to be
29000         cmpxchg8b_pic_memory_operand instead of just memory_operand.
29001
29002 2009-03-12  H.J. Lu  <hongjiu.lu@intel.com>
29003
29004         PR target/39445
29005         * config/i386/i386.c (ix86_expand_push): Don't set memory alignment.
29006
29007 2009-03-12  H.J. Lu  <hongjiu.lu@intel.com>
29008
29009         PR target/39327
29010         * config/i386/sse.md (avx_addsubv8sf3): Correct item bits.
29011         (avx_addsubv4df3): Likewise.
29012         (*avx_addsubv4sf3): Likewise.
29013         (sse3_addsubv4sf3): Likewise.
29014
29015 2009-03-12  H.J. Lu  <hongjiu.lu@intel.com>
29016
29017         PR target/38824
29018         * config/i386/i386.md: Compare REGNO on the new peephole2 patterns.
29019
29020 2009-03-12  Vladimir Makarov  <vmakarov@redhat.com>
29021
29022         PR debug/39432
29023         * ira-int.h (struct allocno): Fix comment for calls_crossed_num.
29024         * ira-conflicts.c (ira_build_conflicts): Prohibit call used
29025         registers for allocnos created from user-defined variables.
29026
29027 2009-03-11  Ulrich Weigand  <Ulrich.Weigand@de.ibm.com>
29028
29029         PR target/39181
29030         * config/spu/spu.c (spu_expand_mov): Handle invalid subregs
29031         of non-integer mode as well.
29032
29033 2009-03-11  Adam Nemet  <anemet@caviumnetworks.com>
29034
29035         * gimplify.c (gimplify_call_expr): Don't set CALL_CANNOT_INLINE_P
29036         for functions for which the parameter types are unknown.
29037
29038 2009-03-11  Jakub Jelinek  <jakub@redhat.com>
29039
29040         PR target/39137
29041         * cfgexpand.c (get_decl_align_unit): Use LOCAL_DECL_ALIGNMENT macro.
29042         * defaults.h (LOCAL_DECL_ALIGNMENT): Define if not yet defined.
29043         * config/i386/i386.h (LOCAL_DECL_ALIGNMENT): Define.
29044         * config/i386/i386.c (ix86_local_alignment): For
29045         -m32 -mpreferred-stack-boundary=2 use 32-bit alignment for
29046         long long variables on the stack to avoid dynamic realignment.
29047         Allow the first argument to be a decl rather than type.
29048         * doc/tm.texi (LOCAL_DECL_ALIGNMENT): Document.
29049
29050 2009-03-11  Nick Clifton  <nickc@redhat.com>
29051
29052         PR target/5362
29053         * config/mcore/mcore.opt: Remove deprecated m4align and m8align
29054         options.
29055         Add description to mno-lsim option.
29056         * config/mcore/mcore.h: Remove comment about deprecated m4align
29057         option.
29058         (TARGET_DEFAULT): Remove deprecated MASK_M8ALIGN.
29059         * doc/invoke.texi: Add description of mno-lsim and
29060         mstack-increment options.
29061
29062         * config/fr30/fr30.opt: Document the -mno-lsim option.
29063         * doc/invoke.texi: Add descriptions of the FR30's -msmall-model
29064         and -mno-lsim options.
29065
29066 2009-03-11  Ulrich Weigand  <Ulrich.Weigand@de.ibm.com>
29067
29068         * fold-const.c (fold_comparison): Only call fold_inf_compare
29069         if the mode supports infinities.
29070
29071 2009-03-11  Jason Merrill  <jason@redhat.com>
29072
29073         PR debug/39086
29074         * tree-nrv.c (tree_nrv): Don't do this optimization if the front
29075         end already did.  Notice GIMPLE_CALL modifications of the result.
29076         Don't copy debug information from an ignored decl or a decl from
29077         another function.
29078
29079 2009-03-10  Richard Guenther  <rguenther@suse.de>
29080             Nathan Froyd  <froydnj@codesourcery.com>
29081
29082         PR middle-end/37850
29083         * libgcc2.c (__mulMODE3): Use explicit assignments to form the result.
29084         (__divMODE3): Likewise.
29085
29086 2009-03-09  Jakub Jelinek  <jakub@redhat.com>
29087
29088         PR tree-optimization/39394
29089         * gimplify.c (gimplify_type_sizes): Gimplify DECL_SIZE and
29090         DECL_SIZE_UNIT of variable length FIELD_DECLs.
29091
29092 2009-03-09  Andreas Krebbel  <Andreas.Krebbel@de.ibm.com>
29093
29094         * recog.c (verfiy_changes): Disallow renaming of hard regs in
29095         inline asms for register asm ("") declarations.
29096
29097 2009-03-09  Eric Botcazou  <ebotcazou@adacore.com>
29098
29099         * fold-const.c (fold_unary): Fix comment.
29100
29101 2009-03-07  Jan Hubicka  <jh@suse.cz>
29102
29103         PR target/39361
29104         * tree-inline.c (setup_one_parameter): Do replacement of const
29105         argument by constant in SSA form.
29106
29107 2009-03-07  Ulrich Weigand  <Ulrich.Weigand@de.ibm.com>
29108
29109         PR middle-end/38028
29110         * function.c (assign_parm_setup_stack): Use STACK_SLOT_ALIGNMENT to
29111         determine alignment passed to assign_stack_local.
29112         (assign_parms_unsplit_complex): Likewise.
29113         * except.c (sjlj_build_landing_pads): Likewise.
29114
29115 2009-03-06  Jakub Jelinek  <jakub@redhat.com>
29116
29117         PR middle-end/39360
29118         * tree-flow.h (add_referenced_var): Return bool instead of void.
29119         * tree-dfa.c (add_referenced_var): Return result of
29120         referenced_var_check_and_insert call.
29121         * tree-inline.c (expand_call_inline): Call add_referenced_var instead
29122         of referenced_var_check_and_insert.
29123
29124         PR debug/39372
29125         * dwarf2out.c (add_abstract_origin_attribute): Return origin_die.
29126         (gen_variable_die): Emit DW_AT_location on abstract static variable's
29127         DIE, don't emit it if abstract origin already has it.
29128         * tree-cfg.c (remove_useless_stmts_bind): GIMPLE_BINDs with any
29129         BLOCK_NONLOCALIZED_VARS in its gimple_bind_block aren't useless.
29130
29131 2009-03-06  Jan-Benedict Glaw  <jbglaw@lug-owl.de>
29132
29133         * genpreds.c (needs_variable): Fix parentheses at variable name
29134         detection.
29135         (write_tm_constrs_h): Indent generated code.
29136
29137 2009-03-06  Ramana Radhakrishnan  <ramana.radhakrishnan@arm.com>
29138
29139         * doc/extend.texi (Function Attributes): Add documentation
29140         for isr attributes.
29141
29142 2009-03-06  Jakub Jelinek  <jakub@redhat.com>
29143
29144         PR debug/39387
29145         * dwarf2out.c (dwarf2out_imported_module_or_decl_1): For IMPORTED_DECL
29146         take locus from its DECL_SOURCE_LOCATION instead of input_location.
29147
29148 2009-03-05  Bernd Schmidt  <bernd.schmidt@analog.com>
29149
29150         * config/bfin/bfin.c (bfin_discover_loop): When retrying fails, mark
29151         the loop as bad.
29152
29153 2009-03-05  Jakub Jelinek  <jakub@redhat.com>
29154
29155         PR debug/39379
29156         * tree-cfg.c (remove_useless_stmts_bind): Don't remove GIMPLE_BINDs
29157         with blocks containing IMPORTED_DECLs in BLOCK_VARS.
29158
29159 2009-03-05  Uros Bizjak  <ubizjak@gmail.com>
29160
29161         * config/i386/i386.md (R8_REG, R9_REG): New constants.
29162         * config/i386/i386.h (CONDITIONAL_REGISTER_USAGE): Use named
29163         constants instead of magic numbers.
29164         (HARD_REGNO_CALLER_SAVE_MODE): Ditto.
29165         (QI_REG_P): Ditto.
29166         * config/i386/i386.c (x86_64_int_parameter_registers): Ditto.
29167         (x86_64_ms_abi_int_parameter_registers): Ditto.
29168         (x86_64_int_return_registers): Ditto.
29169         (ix86_maybe_switch_abi): Ditto.
29170         (ix86_expand_call): Ditto for clobbered_registers array.
29171         (ix86_hard_regno_mode_ok): Ditto.
29172         (x86_extended_QIreg_mentioned_p): Ditto.
29173
29174 2009-03-05  J"orn Rennecke  <joern.rennecke@arc.com>
29175
29176         PR tree-optimization/39349
29177         * cse.c (cse_insn): Fix loop to stop at VOIDmode.
29178
29179         * combine.c (gen_lowpart_for_combine): Use omode when generating
29180         clobber.
29181
29182 2009-03-04  J"orn Rennecke  <joern.rennecke@arc.com>
29183
29184         PR rtl-optimization/39235
29185         * loop-iv.c (get_simple_loop_desc): Use XCNEW.
29186
29187 2009-03-04  Zdenek Dvorak  <ook@ucw.cz>
29188
29189         * graphite.c (nb_reductions_in_loop): Update simple_iv arguments.
29190
29191 2009-03-04  Richard Guenther  <rguenther@suse.de>
29192
29193         PR tree-optimization/39362
29194         * tree-ssa-sccvn.c (visit_use): Stores and copies from SSA_NAMEs
29195         that occur in abnormal PHIs should be varying.
29196
29197 2009-03-04  Zdenek Dvorak  <ook@ucw.cz>
29198
29199         * tree-scalar-evolution.c (analyze_scalar_evolution_in_loop):
29200         Extend comments.
29201         (simple_iv):  Take loop as an argument instead of statement.
29202         * tree-scalar-evolution.h (simple_iv): Declaration changed.
29203         * tree-ssa-loop-niter.c (number_of_iterations_exit): Update calls
29204         to simple_iv.
29205         * tree-ssa-loop-ivopts.c (determine_biv_step, find_givs_in_stmt_scev):
29206         Ditto.
29207         * tree-parloops.c (loop_parallel_p, canonicalize_loop_ivs): Ditto.
29208         * matrix-reorg.c (analyze_transpose): Ditto.
29209         * tree-data-ref.c (dr_analyze_innermost): Ditto.
29210         * tree-vect-analyze.c (vect_analyze_data_refs): Ditto.
29211         * tree-predcom.c (ref_at_iteration): Ditto.
29212         * tree-ssa-loop-prefetch.c (idx_analyze_ref): Ditto.
29213
29214 2009-03-04  Richard Guenther  <rguenther@suse.de>
29215
29216         PR tree-optimization/39358
29217         * tree-ssa-structalias.c (do_sd_constraint): Fix check for
29218         escaped_id and callused_id.
29219         (solve_graph): Likewise.
29220
29221 2009-03-04  Richard Guenther  <rguenther@suse.de>
29222
29223         PR tree-optimization/39339
29224         * tree-sra.c (try_instantiate_multiple_fields): Make it
29225         no longer ICE on the above.
29226
29227 2009-03-03  Joseph Myers  <joseph@codesourcery.com>
29228
29229         * emit-rtl.c (adjust_address_1): Reduce offset to a signed value
29230         that fits within Pmode.
29231
29232 2009-03-03  Steve Ellcey  <sje@cup.hp.com>
29233
29234         PR middle-end/10109
29235         * tm.texi (LIBCALL_VALUE): Update description.
29236
29237 2009-03-03  Steve Ellcey  <sje@cup.hp.com>
29238
29239         PR middle-end/34443
29240         * doc/extend.texi (section): Update description.
29241
29242 2009-03-03  H.J. Lu  <hongjiu.lu@intel.com>
29243
29244         PR middle-end/39345
29245         * tree-inline.c (remapped_type): New.
29246         (can_be_nonlocal): Call remapped_type instead of remap_type.
29247
29248 2009-03-03  Jakub Jelinek  <jakub@redhat.com>
29249
29250         PR fortran/39354
29251         * gimplify.c (goa_stabilize_expr): Handle tcc_comparison,
29252         TRUTH_ANDIF_EXPR and TRUTH_ORIF_EXPR.
29253
29254 2009-03-03  Richard Guenther  <rguenther@suse.de>
29255
29256         PR middle-end/39272
29257         * tree.c (tree_nonartificial_location): New function.
29258         * tree.h (tree_nonartificial_location): Declare.
29259         * builtins.c (expand_builtin_memory_chk): Provide location
29260         of the call location for artificial function pieces.
29261         (maybe_emit_chk_warning): Likewise.
29262         (maybe_emit_sprintf_chk_warning): Likewise.
29263         (maybe_emit_free_warning): Likewise.
29264         * expr.c (expand_expr_real_1): Likewise.
29265
29266 2009-03-03  Jakub Jelinek  <jakub@redhat.com>
29267
29268         PR tree-optimization/39343
29269         * tree-ssa-ccp.c (maybe_fold_offset_to_address): Don't check if
29270         COMPONENT_REF t has ARRAY_TYPE.
29271
29272 2009-03-02  Sebastian Pop  <sebastian.pop@amd.com>
29273
29274         PR middle-end/39335
29275         * tree-parloops.c (canonicalize_loop_ivs): Call fold_convert
29276         when the type precision of the induction variable should be
29277         larger than the type precision of nit.
29278         (gen_parallel_loop): Update use of canonicalize_loop_ivs.
29279         * graphite.c (graphite_loop_normal_form): Same.
29280         * tree-flow.h (canonicalize_loop_ivs): Update declaration.
29281
29282 2009-03-02  Uros Bizjak  <ubizjak@gmail.com>
29283
29284         * config/i386/i386.md (ST?_REG, MM?_REG): New constants.
29285         (*call_1_rex64_ms_sysv): Use named constants instead of magic
29286         numbers to describe clobbered registers.
29287         (*call_value_0_rex64_ms_sysv): Ditto.
29288         * config/i386/mmx.md (mmx_emms): Ditto.
29289         (mmx_femms): Ditto.
29290
29291 2009-03-02  Richard Sandiford  <rdsandiford@googlemail.com>
29292
29293         * config/mips/mips.c (mips_mdebug_abi_name): Fix the handling
29294         of ABI_64.
29295
29296 2009-03-02  Ulrich Weigand  <Ulrich.Weigand@de.ibm.com>
29297
29298         * config/spu/spu.c (TARGET_SECTION_TYPE_FLAGS): Define.
29299         (spu_section_type_flags): New function.
29300
29301 2009-03-02  Uros Bizjak  <ubizjak@gmail.com>
29302
29303         * config/i386/i386.h (CONDITIONAL_REGISTER_USAGE): Do not copy
29304         reg_class_contents of FLOAT_REGS into a temporary.
29305
29306 2009-03-02  Richard Guenther  <rguenther@suse.de>
29307             Ira Rosen  <irar@il.ibm.com>
29308
29309         PR tree-optimization/39318
29310         * tree-vect-transform.c (vectorizable_call): Transfer the EH region
29311         information to the vectorized statement.
29312
29313 2009-03-01  Uros Bizjak  <ubizjak@gmail.com>
29314
29315         * config/i386/i386.h (CONDITIONAL_REGISTER_USAGE): Do not shadow "i"
29316         variable.  Use defined names instead of magic constants for REX SSE
29317         registers.
29318
29319 2009-03-01  Richard Guenther  <rguenther@suse.de>
29320
29321         PR tree-optimization/39331
29322         * omp-low.c (lower_send_shared_vars): Do not receive new
29323         values for the reference of DECL_BY_REFERENCE parms or results.
29324
29325 2009-03-01  Jan Hubicka  <jh@suse.cz>
29326
29327         PR debug/39267
29328         * tree.h (BLOCK_NONLOCALIZED_VARS, BLOCK_NUM_NONLOCALIZED_VARS,
29329         BLOCK_NONLOCALIZED_VAR): New macros.
29330         (tree_block): Add nonlocalized_vars.
29331         * dwarf2out.c (gen_formal_parameter_die, gen_variable_die,
29332         gen_decl_die): Add origin argument.  Allow generation of die with
29333         origin at hand only.
29334         (gen_member_die, gen_type_die_with_usage, force_decl_die,
29335         declare_in_namespace, gen_namescpace_die, dwarf2out_decl): Update use
29336         of gen_*.
29337         (gen_block_die): Fix checking for unused blocks.
29338         (process_scope_var): Break out from .... ; work with origins only.
29339         (decls_for_scope) ... here; process nonlocalized list.
29340         (dwarf2out_ignore_block): Look for nonlocalized vars.
29341         * tree-ssa-live.c (remove_unused_scope_block_p): Look for nonlocalized
29342         vars.
29343         (dump_scope_block): Dump them.
29344         * tree-inline.c (remap_decls): Handle nonlocalized vars.
29345         (remap_block): Likewise.
29346         (can_be_nonlocal): New predicate.
29347         (copy_bind_expr, copy_gimple_bind): Update use of remap_block.
29348
29349 2009-03-01  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
29350
29351         * configure: Regenerate.
29352
29353 2009-03-01  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
29354
29355         * optc-gen.awk: No need to duplicate option flags twice.
29356         Reuse help texts for duplicate options which do not have any.
29357
29358         * gcc.c (display_help): Document --version.
29359
29360         * gcc.c (main): If print_help_list and verbose_flag, ensure
29361         driver output comes before subprocess output.
29362
29363         * optc-gen.awk: Assign all remaining fields to help string,
29364         space-separated, for multi-line help in *.opt.
29365
29366         * doc/invoke.texi (Warning Options): -Wsync-nand is C/C++ only.
29367         -Wno-pedantic-ms-format is for MinGW targets only.
29368
29369         * doc/options.texi (Option file format): Fix bad indentation,
29370         restoring dropped sentence.
29371
29372 2009-02-28  Jan Hubicka  <jh@suse.cz>
29373
29374         * tree-inline.c (tree_function_versioning): Output debug info.
29375
29376 2009-02-28  Jan Hubicka  <jh@suse.cz>
29377
29378         PR debug/39267
29379         * tree-inline.c (setup_one_parameter): Do not copy propagate
29380         arguments when not optimizing.
29381
29382 2009-02-28  H.J. Lu  <hongjiu.lu@intel.com>
29383
29384         PR target/39327
29385         * config/i386/sse.md (avx_addsubv8sf3): Correct item bits.
29386         (avx_addsubv4df3): Likewise.
29387         (*avx_addsubv4sf3): Likewise.
29388         (sse3_addsubv4sf3): Likewise.
29389         (*avx_addsubv2df3): Likewise.
29390         (sse3_addsubv2df3): Likewise.
29391         (avx_unpckhps256): Correct item selectors.
29392         (avx_unpcklps256): Likewise.
29393         (avx_unpckhpd256): Likewise.
29394         (avx_unpcklpd256): Likewise.
29395
29396 2009-02-28  Jan Hubicka  <jh@suse.cz>
29397
29398         * tree-inline.c (expand_call_inline): Avoid duplicate declarations of
29399         static vars.
29400         (copy_arguments_for_versioning): If var is declared don't declare it.
29401         (tree_function_versioning): First setup substitutions and then copy
29402         args.
29403
29404 2009-02-27  Jan Hubicka  <jh@suse.cz>
29405
29406         PR debug/39267
29407         * cgraph.h (varpool_output_debug_info): Remove.
29408         * cgraphunit.c (varpool_output_debug_info): Remove.
29409         * dwarf2out.c (deferred_locations_struct): New struct
29410         (deferred_locations): New type.
29411         (deferred_locations_list): New static var.
29412         (deffer_location): New function.
29413         (gen_variable_die): Use it.
29414         (decls_for_scope): Output info on local static vars.
29415         (dwarf2out_finish): Process deferred locations.
29416         * varpool.c (varpool_output_debug_info): Remove.
29417
29418 2009-02-27  Jan Hubicka  <jh@suse.cz>
29419
29420         PR debug/39267
29421         * tree.h (TREE_PROTECTED): Fix comment.
29422         (BLOCK_HANDLER_BLOCK): Remove.
29423         (struct tree_block): Remove handler_block add body_block.
29424         (inlined_function_outer_scope_p): New.
29425         (is_body_block): Remove.
29426         * dbxout.c (dbxout_block): Remove BLOCK_HANDLER_BLOCK.
29427         * dwarf2out.c (is_inlined_entry_point): Remove.
29428         (add_high_low_attributes): Use inlined_function_outer_scope_p.
29429         (gen_block_die): Use is_inlined_entry_point check.  Remove body block
29430         code.
29431         * langhooks.h (struct lang_hooks): Remove no_bodu_blocks.
29432         * gimplify.c (gimplify_expr): Gimplify body blocks.
29433         * tree-ssa-live.c (remove_unused_scope_block_p): Allow removing wrapper
29434         block with multiple subblocks.
29435         (dump_scope_block): Prettier output; dump more flags and info.
29436         (dump_scope_blocks): New.
29437         (remove_unused_locals): Use dump_scope_blocks.
29438         * tree-flow.h (dump_scope_blocks): Declare.
29439         * tree-cfg.c (execute_build_cfg): Dump scope blocks.
29440         * stmt.c (is_body_block): Remove.
29441         * tree-inline.c (remap_block): Copy BODY_BLOCK info.
29442         * langhooks-def.h (LANG_HOOKS_NO_BODY_BLOCKS): Remove.
29443
29444 2009-02-27  Sebastian Pop  <sebastian.pop@amd.com>
29445
29446         PR middle-end/39308
29447         * graphite.c (graphite_loop_normal_form): Do not call
29448         number_of_iterations_exit from a gcc_assert.
29449
29450 2009-02-27  Andreas Krebbel  <Andreas.Krebbel@de.ibm.com>
29451
29452         * config/s390/s390.c (s390_swap_cmp): Look for conditional
29453         jumps if COND is NULL.
29454         (find_cond_jump): New function.
29455         (s390_z10_optimize_cmp): Handling for reg-reg compares added.
29456         * config/s390/s390.md: Remove z10_cobra attribute value.
29457
29458 2009-02-26  Uros Bizjak  <ubizjak@gmail.com>
29459
29460         * config/alpha/alpha.h (alpha_expand_mov): Return false if
29461         force_const_mem returns NULL_RTX.
29462
29463 2009-02-26  Jan Hubicka  <jh@suse.cz>
29464
29465         PR debug/39267
29466         * cgraph.h (varpool_output_debug_info): Remove.
29467         * cgraphunit.c (varpool_output_debug_info): Remove.
29468         * dwarf2out.c (deferred_locations_struct): New struct
29469         (deferred_locations): New type.
29470         (deferred_locations_list): New static var.
29471         (deffer_location): New function.
29472         (gen_variable_die): Use it.
29473         (decls_for_scope): Output info on local static vars.
29474         (dwarf2out_finish): Process deferred locations.
29475         * varpool.c (varpool_output_debug_info): Remove.
29476
29477 2009-02-25  H.J. Lu  <hongjiu.lu@intel.com>
29478
29479         PR rtl-optimization/39241
29480         * jump.c (rtx_renumbered_equal_p): Remove 2 superfluous calls
29481         to subreg_offset_representable_p.
29482
29483 2009-02-25  Paolo Bonzini  <bonzini@gnu.org>
29484
29485         * regmove.c (regmove_optimize): Conform to struct rtl_opt_pass
29486         execute function prototype.  Get f and nregs from max_reg_num
29487         and get_insns.  Remove the first backward pass as it's dead,
29488         guard the forward pass by flag_expensive_optimizations.
29489         (rest_of_handle_regmove): Delete.
29490         (pass_regmove): Replace it with regmove_optimize.
29491
29492 2009-02-25  Martin Jambor  <mjambor@suse.cz>
29493
29494         PR tree-optimization/39259
29495         * tree-inline.c (initialize_cfun): Remove asserts for calls_setjmp and
29496         calls_alloca function flags.
29497         (copy_bb): Set calls_setjmp and alls_alloca function flags if such
29498         calls are detected.
29499
29500 2009-02-25  Paolo Bonzini  <bonzini@gnu.org>
29501
29502         * regmove.c (discover_flags_reg, flags_set_1, mark_flags_life_zones,
29503         flags_set_1_rtx, flags_set_1_set): Delete.
29504         (regmove_optimize): Do not call mark_flags_life_zones.
29505
29506 2009-02-24  Julian Brown  <julian@codesourcery.com>
29507
29508         PR target/35965
29509         * config/arm/arm.c (require_pic_register): Only set
29510         cfun->machine->pic_reg once per function.
29511
29512 2009-02-24  Sandra Loosemore  <sandra@codesourcery.com>
29513
29514         * doc/invoke.texi (Link Options): Document an easier way to pass
29515         options that take arguments to the GNU linker using -Xlinker and -Wl.
29516
29517 2009-02-24  Steve Ellcey  <sje@cup.hp.com>
29518
29519         PR target/33785
29520         * doc/tm.texi (TARGET_C99_FUNCTIONS): Fix description.
29521
29522 2009-02-24  Richard Guenther  <rguenther@suse.de>
29523
29524         PR debug/39285
29525         * dwarf2out.c (gen_enumeration_type_die): Handle CONST_DECLs.
29526
29527 2009-02-24  Richard Guenther  <rguenther@suse.de>
29528             Zdenek Dvorak  <ook@ucw.cz>
29529
29530         PR tree-optimization/39233
29531         * tree-ssa-loop-ivopts.c (add_candidate_1): Do not except pointers
29532         from converting them to a generic type.
29533
29534 2009-02-23  Sebastian Pop  <sebastian.pop@amd.com>
29535
29536         PR tree-optimization/39260
29537         * graphite.c (harmful_stmt_in_bb): Stop a SCoP when the basic block
29538         contains a condition with a real type.
29539         (build_scop_conditions_1): Conditions are always last_stmt of a bb.
29540
29541 2009-02-23  Jason Merrill  <jason@redhat.com>
29542
29543         PR c++/38880
29544         * varasm.c (initializer_constant_valid_p) [PLUS_EXPR]: Check
29545         narrowing_initializer_constant_valid_p.
29546         (narrowing_initializer_constant_valid_p): Don't return
29547         null_pointer_node for adding a pointer to itself.
29548
29549 2009-02-23  Jan Hubicka  <jh@suse.cz>
29550
29551         PR c/12245
29552         * ggc.h (htab_create_ggc): Use ggc_free to free hashtable when
29553         resizing.
29554
29555 2009-02-23  Jan Hubicka  <jh@suse.cz>
29556
29557         PR tree-optimization/37709
29558         * tree.c (block_ultimate_origin): Move here from dwarf2out.
29559         * tree.h (block_ultimate_origin): Declare.
29560         * dwarf2out.c (block_ultimate_origin): Move to tree.c
29561         * tree-ssa-live.c (remove_unused_scope_block_p):
29562         Eliminate blocks containig no instructions nor live variables nor
29563         nested blocks.
29564         (dump_scope_block): New function.
29565         (remove_unused_locals): Enable removal of dead blocks by default;
29566         enable dumping at TDF_DETAILS.
29567
29568 2009-02-21  H.J. Lu  <hongjiu.lu@intel.com>
29569
29570         * config/i386/i386.c (classify_argument): Don't allow COImode
29571         and OImode.
29572         (function_arg_advance_32): Don't allow OImode.
29573         (function_arg_32): Likewise.
29574         (function_value_32): Likewise.
29575         (return_in_memory_32): Likewise.
29576         (function_arg_64): Remove OImode comment.
29577
29578 2009-02-21  H.J. Lu  <hongjiu.lu@intel.com>
29579
29580         PR target/39261
29581         * config/i386/i386.c (ix86_expand_vector_init_one_nonzero): Use
29582         ix86_expand_vector_set for V4DImode in 64bit mode only.
29583         (ix86_expand_vector_init_one_var): Likewise.
29584
29585 2009-02-21  Sebastian Pop  <sebastian.pop@amd.com>
29586
29587         * graphite.c (graphite_trans_loop_block): Adjust tile size to 51.
29588
29589 2009-02-21  Richard Sandiford  <rdsandiford@googlemail.com>
29590
29591         PR bootstrap/39257
29592         * loop-iv.c: Revert last change.
29593         * emit-rtl.c: Likewise.
29594
29595 2009-02-21  H.J. Lu  <hongjiu.lu@intel.com>
29596
29597         PR target/39256
29598         * config/i386/i386.c (type_natural_mode): Remove an extra
29599         space in the warning message.
29600         (function_value_32): Handle 32-byte vector modes.
29601         (return_in_memory_32): Likewise.
29602
29603 2009-02-21  Richard Sandiford  <rdsandiford@googlemail.com>
29604
29605         * loop-iv.c (truncate_value): New function.
29606         (iv_subreg, get_iv_value, iv_number_of_iterations): Use it instead
29607         of lowpart_subreg.
29608         (lowpart_subreg): Move to...
29609         * emit-rtl.c: ...here.
29610
29611 2009-02-21  Danny Smith  <dannysmith@users.sourceforge.net>
29612
29613         * config/i386/winnt.c (i386_pe_asm_output_aligned_decl_common): Revert
29614         accidental and undocumented change at revision 140860.
29615
29616 2009-02-21  Joseph Myers  <joseph@codesourcery.com>
29617
29618         * config/arm/arm.c (arm_gimplify_va_arg_expr): Update prototype to
29619         take gimple_seq * arguments.
29620         (arm_mangle_type): Use CONST_CAST_TREE on type argument passed to
29621         types_compatible_p langhook.
29622
29623 2009-02-20  Mark Mitchell  <mark@codesourcery.com>
29624             Joseph Myers  <joseph@codesourcery.com>
29625
29626         * config/arm/arm.c (arm_builtin_va_list): New function.
29627         (arm_expand_builtin_va_start): Likewise.
29628         (arm_gimplify_va_arg_expr): Likewise.
29629         (TARGET_BUILD_BUILTIN_VA_LIST): Define.
29630         (TARGET_BUILD_BUILTIN_VA_START): Likewise.
29631         (TARGET_BUILD_BUILTIN_VA_ARG_EXPR): Likewise.
29632         (va_list_type): New variable.
29633         (arm_mangle_type): Mangle va_list_type appropriately.
29634
29635 2009-02-20  Jakub Jelinek  <jakub@redhat.com>
29636
29637         PR middle-end/39157
29638         * Makefile.in (loop-invariant.o): Depend on $(PARAMS_H).
29639         * params.h (LOOP_INVARIANT_MAX_BBS_IN_LOOP): Define.
29640         * params.def (loop-invariant-max-bbs-in-loop): New parameter.
29641         * opts.c (decode_options): Set loop-invariant-max-bbs-in-loop
29642         parameter to 1000 for -O1 by default.
29643         * doc/invoke.texi (loop-invariant-max-bbs-in-loop): Document new
29644         parameter.
29645         * loop-invariant.c: Include params.h.
29646         (move_loop_invariants): Don't call move_single_loop_invariants on
29647         very large loops.
29648
29649 2009-02-20  Jaka Mocnik  <jaka@xlab.si>
29650
29651         * calls.c (emit_library_call_value_1): Use slot_offset instead of
29652         offset when calculating bounds for indexing stack_usage_map.  Fixes
29653         a buffer overflow with certain target setups.
29654
29655 2009-02-20  Jakub Jelinek  <jakub@redhat.com>
29656
29657         PR target/39240
29658         * calls.c (expand_call): Clear try_tail_call if caller and callee
29659         disagree in promotion of function return value.
29660
29661 2009-02-19  Jakub Jelinek  <jakub@redhat.com>
29662
29663         PR target/39175
29664         * c-common.c (c_determine_visibility): If visibility changed and
29665         DECL_RTL has been already set, call make_decl_rtl to update symbol
29666         flags.
29667
29668 2009-02-19  H.J. Lu  <hongjiu.lu@intel.com>
29669
29670         PR c++/39188
29671         * varasm.c (assemble_variable): Don't check DECL_NAME when
29672         globalizing a variable.
29673
29674 2009-02-19  Joseph Myers  <joseph@codesourcery.com>
29675
29676         PR c/38483
29677         * builtins.c (gimplify_va_arg_expr): Evaluate the va_list
29678         expression before any __builtin_trap call.
29679         * c-typeck.c (build_function_call): Convert and check function
29680         arguments before generating a call to a trap.  Evaluate the
29681         function arguments before the trap.
29682
29683 2009-02-19  Uros Bizjak  <ubizjak@gmail.com>
29684
29685         PR target/39228
29686         * config/i386/i386.md (isinfxf2): Split from isinf<mode>2.
29687         (UNSPEC_FXAM_MEM): New unspec.
29688         (fxam<mode>2_i387_with_temp): New insn and split pattern.
29689         (isinf<mode>2): Use MODEF mode iterator.  Force operand[1] through
29690         memory using fxam<mode>2_i387_with_temp to remove excess precision.
29691
29692 2009-02-19  Richard Guenther  <rguenther@suse.de>
29693
29694         PR tree-optimization/39207
29695         PR tree-optimization/39074
29696         * tree-ssa-structalias.c (storedanything_id, var_storedanything,
29697         storedanything_tree): New.
29698         (do_ds_constraint): Simplify ANYTHING shortcutting.  Update
29699         the STOREDANYTHING solution if the lhs solution contains ANYTHING.
29700         (build_succ_graph): Add edges from STOREDANYTHING to all
29701         non-direct nodes.
29702         (init_base_vars): Initialize STOREDANYTHING.
29703         (compute_points_to_sets): Free substitution info after
29704         building the succ graph.
29705         (ipa_pta_execute): Likewise.
29706
29707         * tree-ssa-structalias.c (struct variable_info): Add may_have_pointers
29708         field.
29709         (do_ds_constraint): Do not add to special var or non-pointer
29710         field solutions.
29711         (type_could_have_pointers): Split out from ...
29712         (could_have_pointers): ... here.  For arrays use the element type.
29713         (create_variable_info_for): Initialize may_have_pointers.
29714         (new_var_info): Likewise.
29715         (handle_lhs_call): Make the HEAP variable unknown-sized.
29716         (intra_create_variable_infos): Use a type with pointers for
29717         PARM_NOALIAS, make it unknown-sized.
29718
29719 2009-02-18  H.J. Lu  <hongjiu.lu@intel.com>
29720
29721         PR target/39224
29722         * config/i386/i386.c (ix86_return_in_memory): Properly check ABI.
29723
29724 2009-02-18  Jason Merrill  <jason@redhat.com>
29725
29726         PR target/39179
29727         * tree-ssa-ccp.c (get_symbol_constant_value): Don't assume zero
29728         value if DECL_EXTERNAL.
29729         * tree-sra.c (sra_walk_gimple_assign): Likewise.
29730         * target.h (gcc_target::binds_local_p): Clarify "module".
29731         * tree.h (TREE_PUBLIC): Clarify "module".
29732
29733 2009-02-17  Xuepeng Guo  <xuepeng.guo@intel.com>
29734
29735         PR target/38891
29736         * config/i386/i386.h (CONDITIONAL_REGISTER_USAGE): Move the hunk of
29737         initialization for MS_ABI prior to the hunk of !TARGET_MMX.
29738
29739 2009-02-17  H.J. Lu  <hongjiu.lu@intel.com>
29740
29741         PR target/39082
29742         * c.opt (Wabi): Support C and ObjC.
29743         (Wpsabi): New.
29744
29745         * c-opts.c (c_common_handle_option): Handle OPT_Wabi.
29746
29747         * config/i386/i386.c (classify_argument): Warn once about the ABI
29748         change when passing union with long double.
29749
29750         * doc/invoke.texi: Update -Wabi for warning psABI changes.
29751
29752 2009-02-18  Joseph Myers  <joseph@codesourcery.com>
29753
29754         PR c/35447
29755         * c-parser.c (c_parser_compound_statement): Always enter and leave
29756         a scope.
29757
29758 2009-02-17  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
29759
29760         PR target/34587
29761         * config/darwin.h (SUPPORTS_INIT_PRIORITY): Define.
29762
29763 2009-02-18  Jakub Jelinek  <jakub@redhat.com>
29764
29765         PR tree-optimization/36922
29766         * tree-data-ref.c (initialize_matrix_A): Handle BIT_NOT_EXPR.
29767         * tree-scalar-evolution.c (interpret_rhs_expr, instantiate_scev_1):
29768         Likewise.
29769
29770 2009-02-17  Richard Sandiford  <rdsandiford@googlemail.com>
29771
29772         * config/mips/mips.c (mips_override_options): Set flag_dwarf2_cfi_asm
29773         to 0 for EABI64.
29774
29775 2009-02-17  Richard Sandiford  <rdsandiford@googlemail.com>
29776
29777         * config/mips/mips.md (type): Reclassify lui_movf as "unknown".
29778
29779 2009-02-17  Richard Sandiford  <rdsandiford@googlemail.com>
29780
29781         * config/mips/mips.c (mips_gimplify_va_arg_expr): Fix invalid
29782         tree sharing.
29783
29784 2009-02-17  Ruan Beihong  <ruanbeihong@gmail.com>
29785             Richard Sandiford  <rdsandiford@googlemail.com>
29786
29787         * config/mips/mips.c (CODE_FOR_loongson_biadd): Delete.
29788         * config/mips/loongson.md (reduc_uplus_<mode>): Rename to...
29789         (loongson_biadd): ...this.
29790
29791 2009-02-17  Richard Guenther  <rguenther@suse.de>
29792
29793         PR tree-optimization/39202
29794         * tree-ssa-structalias.c (do_structure_copy): Before collapsing
29795         a var make sure to follow existing collapses.
29796
29797 2009-02-17  Richard Guenther  <rguenther@suse.de>
29798
29799         PR middle-end/39214
29800         * langhooks.c (lhd_print_error_function): Check for NULL block.
29801
29802 2009-02-17  Richard Guenther  <rguenther@suse.de>
29803
29804         PR tree-optimization/39204
29805         * tree-ssa-pre.c (phi_translate_1): Lookup the value-number
29806         of the PHI arg.
29807
29808 2009-02-17  Uros Bizjak  <ubizjak@gmail.com>
29809
29810         * config/soft-fp/double.h: Update from glibc CVS.
29811
29812 2009-02-17  Richard Guenther  <rguenther@suse.de>
29813
29814         PR tree-optimization/39207
29815         * tree-ssa-structalias.c (find_what_p_points_to): Do not emit
29816         strict-aliasing warnings for pointers pointing to NULL.
29817
29818 2009-02-16  Joseph Myers  <joseph@codesourcery.com>
29819
29820         PR c/35446
29821         * c-parser.c (c_parser_braced_init): Call pop_init_level when
29822         skipping until next close brace.
29823
29824 2009-02-16  H.J. Lu  <hongjiu.lu@intel.com>
29825
29826         PR target/37049
29827         * config/i386/i386.c (ix86_expand_push): Set memory alignment
29828         to function argument boundary.
29829
29830 2009-02-16  Hariharan Sandanagobalane  <hariharan@picochip.com>
29831
29832         * config/picochip/picochip.md (lea_add): Allow any nonimmediate
29833         in the lea_add. Reload eventually constraints it properly.
29834         * config/picochip/constraints.md: Remove the target constraint
29835         "b", since it is not needed anymore.
29836
29837 2009-02-16  Jakub Jelinek  <jakub@redhat.com>
29838
29839         * gthr-dce.h: Uglify function parameter and local variable names.
29840         * gthr-gnat.h: Likewise.
29841         * gthr-mipssde.h: Likewise.
29842         * gthr-nks.h: Likewise.
29843         * gthr-posix95.h: Likewise.
29844         * gthr-posix.h: Likewise.
29845         * gthr-rtems.h: Likewise.
29846         * gthr-single.h: Likewise.
29847         * gthr-solaris.h: Likewise.
29848         * gthr-tpf.h: Likewise.
29849         * gthr-vxworks.h: Likewise.
29850         * gthr-win32.h: Likewise.
29851
29852 2009-02-15  H.J. Lu  <hongjiu.lu@intel.com>
29853
29854         PR target/39196
29855         * config/i386/i386.md: Restrict the new peephole2 to move
29856         between MMX/SSE registers.
29857
29858 2009-02-15  Richard Guenther  <rguenther@suse.de>
29859
29860         Revert
29861         2009-02-13  Richard Guenther  <rguenther@suse.de>
29862
29863         * configure.ac: Enable LFS.
29864         * configure: Re-generate.
29865         * config.in: Likewise.
29866
29867 2009-02-13  Ulrich Weigand  <Ulrich.Weigand@de.ibm.com>
29868
29869         * config/spu/spu_internals.h (spu_sr, spu_sra, spu_srqw,
29870         spu_srqwbyte, spu_srqwbytebc): Define.
29871         * config/spu/spu-builtins.def (spu_sr, spu_sra, spu_srqw,
29872         spu_srqwbyte, spu_srqwbytebc): New overloaded builtins.
29873         * config/spu/spu.md ("shrqbybi_<mode>", "shrqbi_<mode>",
29874         "shrqby_<mode>"): New insn-and-split patterns.
29875         * config/spu/spu.c (expand_builtin_args): Determine and return
29876         number of operands using spu_builtin_description data.
29877         (spu_expand_builtin_1): Use it.
29878
29879 2009-02-13  Steve Ellcey  <sje@cup.hp.com>
29880
29881         PR target/38056
29882         * config/ia64/ia64.c (ia64_function_ok_for_sibcall): Check
29883         TARGET_CONST_GP.
29884
29885 2009-02-13  H.J. Lu  <hongjiu.lu@intel.com>
29886
29887         PR target/39149
29888         * config/i386/i386.c (override_options): Correct warning
29889         messages for -malign-loops, -malign-jumps and -malign-functions.
29890
29891 2009-02-13  H.J. Lu  <hongjiu.lu@intel.com>
29892
29893         PR target/39152
29894         * config/i386/i386.md: Restrict the new peephole2 to move
29895         between the general purpose registers.
29896
29897 2009-02-13  H.J. Lu  <hongjiu.lu@intel.com>
29898
29899         PR target/39162
29900         * config/i386/i386.c (type_natural_mode): Add a new argument.
29901         Return the original mode and warn ABI change if vector size is 32byte.
29902         (function_arg_advance): Updated.
29903         (function_arg): Likewise.
29904         (ix86_function_value): Likewise.
29905         (ix86_return_in_memory): Likewise.
29906         (ix86_sol10_return_in_memory): Likewise.
29907         (ix86_gimplify_va_arg): Likewise.
29908         (function_arg_32): Don't warn ABX ABI change here.
29909         (function_arg_64): Likewise.
29910
29911 2009-02-13  Bernd Schmidt  <bernd.schmidt@analog.com>
29912
29913         * loop-iv.c (implies_p): In the final case, test that operands 0
29914         of the two comparisons match.
29915
29916         * config/bfin/bfin.c (find_prev_insn_start): New function.
29917         (bfin_optimize_loop): Use it in some cases instead of PREV_INSN.
29918         (find_next_insn_start): Move.
29919
29920 2009-02-13  Richard Guenther  <rguenther@suse.de>
29921
29922         * configure.ac: Enable LFS.
29923         * configure: Re-generate.
29924         * config.in: Likewise.
29925
29926 2009-02-13  Joseph Myers  <joseph@codesourcery.com>
29927
29928         PR c/35444
29929         * c-parser.c (c_parser_parms_list_declarator): Discard pending
29930         sizes on syntax error after some arguments have been parsed.
29931
29932 2009-02-12  Jakub Jelinek  <jakub@redhat.com>
29933
29934         * doc/invoke.texi (-fira): Remove.
29935
29936 2009-02-12  H.J. Lu  <hongjiu.lu@intel.com>
29937
29938         * caller-save.c: Replace regclass.c with reginfo.c in comments.
29939         * recog.c: Likewise.
29940         * rtl.h: Likewise.
29941
29942 2009-02-12  Uros Bizjak  <ubizjak@gmail.com>
29943
29944         * longlong.h (sub_ddmmss): New for ia64. Ported from GMP 4.2.
29945         (umul_ppmm): Likewise.
29946         (count_leading_zeros): Likewise.
29947         (count_trailing_zeros): Likewise.
29948         (UMUL_TIME): Likewise.
29949
29950 2009-02-12  H.J. Lu  <hongjiu.lu@intel.com>
29951
29952         * config.gcc (ia64*-*-linux*): Add ia64/t-fprules-softfp and
29953         soft-fp/t-softfp to tmake_file.
29954
29955         * config/ia64/ia64.c (ia64_soft_fp_init_libfuncs): New.
29956         (ia64_expand_compare): Use HPUX library for TFmode only for HPUX.
29957         (ia64_builtins) [IA64_BUILTIN_COPYSIGNQ, IA64_BUILTIN_FABSQ,
29958         IA64_BUILTIN_INFQ]: New.
29959         (ia64_init_builtins): Initialize __builtin_infq,
29960         __builtin_fabsq and __builtin_copysignq if not HPUX.
29961         (ia64_expand_builtin): Handle IA64_BUILTIN_COPYSIGNQ,
29962         IA64_BUILTIN_FABSQ and IA64_BUILTIN_INFQ.
29963
29964         * config/ia64/lib1funcs.asm (__divtf3): Define only if
29965         SHARED is defined.
29966         (__fixtfti): Likewise.
29967         (__fixunstfti): Likewise.
29968         (__floattitf): Likewise.
29969
29970         * config/ia64/libgcc-glibc.ver: New.
29971         * config/ia64/t-fprules-softfp: Likewise.
29972         * config/ia64/sfp-machine.h: Likewise.
29973
29974         * config/ia64/linux.h (LIBGCC2_HAS_TF_MODE): New.
29975         (LIBGCC2_TF_CEXT): Likewise.
29976         (TF_SIZE): Likewise.
29977         (TARGET_INIT_LIBFUNCS): Likewise.
29978
29979         * config/ia64/t-glibc (SHLINB_MAPFILES):
29980         Add $(srcdir)/config/ia64/libgcc-glibc.ver.
29981
29982 2009-02-12  H.J. Lu  <hongjiu.lu@intel.com>
29983
29984         * config/i386/i386.c (construct_container): Rewrite processing
29985         BLKmode with X86_64_SSE_CLASS.
29986
29987 2009-02-12  Paolo Bonzini  <bonzini@gnu.org>
29988
29989         PR target/39152
29990         * config/i386/i386.md: Replace simplify_replace_rtx with
29991         replace_rtx in the new peephole2.
29992
29993 2009-02-12  Nathan Sidwell  <nathan@codesourcery.com>
29994
29995         * doc/invoke.texi (Optimize Options): Stop claiming inlining and
29996         loop unrolling do not happen at -O2.
29997
29998 2009-02-12  Michael Matz  <matz@suse.de>
29999
30000         * gcc.c (ASM_DEBUG_SPEC): Check for -g0.
30001
30002 2009-02-12  Jakub Jelinek  <jakub@redhat.com>
30003
30004         * dwarf2out.c (dwarf2out_finish): Force output of comp_unit_die
30005         for -g3.
30006
30007 2009-02-12  Ben Elliston  <bje@au.ibm.com>
30008
30009         * config/rs6000/rs6000.md (allocate_stack): Use _stack form of
30010         patterns when updating the back chain.  Missed in the 2009-02-10
30011         change.
30012
30013 2009-02-11  Janis Johnson  <janis187@us.ibm.com>
30014
30015         * doc/extend.texi (Decimal Floating Types): Update identifier of
30016         draft TR and list of missing support.
30017
30018 2009-02-11  Jakub Jelinek  <jakub@redhat.com>
30019
30020         PR middle-end/39154
30021         * gimplify.c (omp_notice_variable): If adding GOVD_SEEN
30022         bit to variable length decl's flags, add it also to its
30023         pointer replacement variable.
30024
30025 2009-02-11  Uros Bizjak  <ubizjak@gmail.com>
30026             Jakub Jelinek  <jakub@redhat.com>
30027
30028         PR target/39118
30029         * config/i386/i386.md (UNSPEC_MEMORY_BLOCKAGE): New constant.
30030         (memory_blockage): New expander.
30031         (*memory_blockage): New insn pattern.
30032         * config/i386/i386.c (ix86_expand_prologue): Use memory_blockage
30033         instead of general blockage at the end of function prologue when
30034         frame pointer is used to access red zone area.  Do not emit blockage
30035         when profiling, it is emitted in generic code.
30036         (ix86_expand_epilogue): Emit memory_blockage at the beginning of
30037         function epilogue when frame pointer is used to access red zone area.
30038
30039 2009-02-11  Paolo Bonzini  <bonzini@gnu.org>
30040
30041         PR target/38824
30042         * config/i386/i386.md: Add two new peephole2 to avoid mov followed
30043         by arithmetic with memory operands.
30044         * config/i386/predicates.md (commutative_operator): New.
30045
30046 2009-02-10  Janis Johnson  <janis187@us.ibm.com>
30047
30048         * doc/extend.texi (Fixed-Point Types): Break long paragraphs into
30049         bulleted lists.
30050
30051 2009-02-10  Eric Botcazou  <ebotcazou@adacore.com>
30052
30053         * alias.h (record_alias_subset): Declare.
30054         * alias.c (record_alias_subset): Make global.
30055
30056 2009-02-10  Nick Clifton  <nickc@redhat.com>
30057
30058         * tree-parloops.c: Change license to GPLv3.
30059         * ipa-struct-reorg.c: Change license to GPLv3.
30060         * ipa-struct-reorg.h: Change license to GPLv3.
30061
30062 2009-02-10  Steve Ellcey  <sje@cup.hp.com>
30063
30064         PR c/39084
30065         * c-decl.c (start_struct): Return NULL on error.
30066
30067 2009-02-10  Jakub Jelinek  <jakub@redhat.com>
30068
30069         PR middle-end/39124
30070         * cfgloopmanip.c (remove_path): Call remove_bbs after
30071         cancel_loop_tree, not before it.
30072
30073         PR target/39139
30074         * function.h (struct function): Add has_local_explicit_reg_vars bit.
30075         * gimplify.c (gimplify_bind_expr): Set it if local DECL_HARD_REGISTER
30076         VAR_DECLs were seen.
30077         * tree-ssa-live.c (remove_unused_locals): Recompute
30078         cfun->has_local_explicit_reg_vars.
30079         * tree-ssa-sink.c (statement_sink_location): Don't sink BLKmode
30080         copies or clearings if cfun->has_local_explicit_reg_vars.
30081
30082 2009-02-10  Uros Bizjak  <ubizjak@gmail.com>
30083
30084         PR target/39118
30085         * config/i386/i386.c (expand_prologue): Emit blockage at the end
30086         of function prologue when frame pointer is used to access
30087         red zone area.
30088
30089 2009-02-10  Richard Guenther  <rguenther@suse.de>
30090
30091         PR middle-end/39127
30092         * gimplify.c (gimple_regimplify_operands): Always look if
30093         we need to create a temporary.
30094
30095 2009-02-10  Richard Guenther  <rguenther@suse.de>
30096
30097         PR tree-optimization/39132
30098         * tree-loop-distribution.c (todo): New global var.
30099         (generate_memset_zero): Trigger TODO_rebuild_alias.
30100         (tree_loop_distribution): Return todo.
30101
30102 2009-02-10  H.J. Lu  <hongjiu.lu@intel.com>
30103
30104         PR target/39119
30105         * config/i386/i386.c (x86_64_reg_class): Remove X86_64_AVX_CLASS.
30106         (x86_64_reg_class_name): Removed.
30107         (classify_argument): Return 0 if bytes > 32.  Return 0 if the
30108         first one isn't X86_64_SSE_CLASS or any other ones aren't
30109         X86_64_SSEUP_CLASS when size > 16bytes.  Don't turn
30110         X86_64_SSEUP_CLASS into X86_64_SSE_CLASS if the preceded one
30111         is X86_64_SSEUP_CLASS.  Set AVX modes to 1 X86_64_SSE_CLASS
30112         and 3 X86_64_SSEUP_CLASS.
30113         (construct_container): Remove X86_64_AVX_CLASS.  Handle 4
30114         registers with 1 X86_64_SSE_CLASS and 3 X86_64_SSEUP_CLASS.
30115
30116 2009-02-10  Ben Elliston  <bje@au.ibm.com>
30117
30118         * config/rs6000/rs6000.md (allocate_stack): Always use an update
30119         form instruction to update the stack back chain word, even if the
30120         user has disabled the generation of update instructions.
30121         (movdi_<mode>_update_stack): New.
30122         (movsi_update_stack): Likewise.
30123         * config/rs6000/rs6000.c (rs6000_emit_allocate_stack): Likewise,
30124         always use an update form instruction to update the stack back
30125         chain word.
30126
30127 2009-02-09  Sebastian Pop  <sebastian.pop@amd.com>
30128
30129         PR middle-end/38953
30130         * graphite.c (if_region_set_false_region): After moving a region in
30131         the false branch of a condition, remove the empty dummy basic block.
30132         (gloog): Remove wrong fix for PR38953.
30133
30134 2009-02-09  Ulrich Weigand  <Ulrich.Weigand@de.ibm.com>
30135
30136         * config/spu/spu.c (array_to_constant): Fix (latent) wrong-code
30137         generation due to implicit sign extension.
30138
30139 2009-02-09  Eric Botcazou  <ebotcazou@adacore.com>
30140
30141         PR middle-end/38981
30142         * tree-ssa-coalesce.c (add_coalesce): Cap the costs of coalesce pairs
30143         at MUST_COALESCE_COST-1 instead of MUST_COALESCE_COST.
30144
30145 2009-02-09  Richard Guenther  <rguenther@suse.de>
30146
30147         PR middle-end/35202
30148         * convert.c (convert_to_real): Disable (float)fn((double)x)
30149         to fnf(x) conversion if errno differences may occur and
30150         -fmath-errno is set.
30151
30152 2009-02-07  Anatoly Sokolov  <aesok@post.ru>
30153
30154         * config/avr/avr.c (avr_mcu_t): Add ata6289 device.
30155         * config/avr/avr.h (LINK_SPEC, CRT_BINUTILS_SPECS): (Ditto.).
30156         * config/avr/t-avr (MULTILIB_MATCHES): (Ditto.).
30157
30158 2009-02-06  Joseph Myers  <joseph@codesourcery.com>
30159
30160         PR c/35434
30161         * c-common.c (handle_alias_attribute): Disallow attribute for
30162         anything not a FUNCTION_DECL or VAR_DECL.
30163
30164 2009-02-06  Janis Johnson  <janis187@us.ibm.com>
30165
30166         PR c/39035
30167         * real.c (do_compare): Special-case compare of zero against
30168         decimal float value.
30169
30170 2009-02-06  Joseph Myers  <joseph@codesourcery.com>
30171
30172         PR c/36432
30173         * c-decl.c (grokdeclarator): Don't treat [] declarators in fields
30174         as indicating flexible array members unless the field itself is
30175         being declarared as the incomplete array.
30176
30177 2009-02-06  Jan Hubicka  <jh@suse.cz>
30178
30179         PR tree-optimization/38844
30180         * ipa-inline.c (try_inline): Stop inlining recursion when edge
30181         is already inlined.
30182
30183 2009-02-06  Richard Guenther  <rguenther@suse.de>
30184
30185         PR middle-end/38977
30186         * tree-cfg.c (need_fake_edge_p): Force a fake edge for
30187         fork because we may expand it as __gcov_fork.
30188
30189 2009-02-06  Nick Clifton  <nickc@redhat.com>
30190
30191         * config/m32c/m32c.h (PCC_BITFIELD_TYPE_MATTERS): Define to zero.
30192
30193 2009-02-06  Paolo Bonzini  <bonzini@gnu.org>
30194
30195         PR tree-optimization/35659
30196         * tree-ssa-sccvn.c (vn_constant_eq, vn_reference_eq, vn_nary_op_eq
30197         vn_phi_eq): Shortcut if hashcode does not match.
30198         (vn_reference_op_compute_hash): Do not call iterative_hash_expr for
30199         NULL operands.
30200         * tree-ssa-pre.c (pre_expr_hash): Look at hashcode if available,
30201         and avoid iterative_hash_expr.
30202         (FOR_EACH_VALUE_ID_IN_SET): New.
30203         (value_id_compare): Remove.
30204         (sorted_array_from_bitmap_set): Use FOR_EACH_VALUE_ID_IN_SET to
30205         sort expressions by value id.
30206
30207 2009-02-05  Kaz Kojima  <kkojima@gcc.gnu.org>
30208
30209         PR target/38991
30210         * config/sh/predicates.md (general_movsrc_operand): Don't check
30211         the subreg of system registers here.
30212
30213 2009-02-05  Jakub Jelinek  <jakub@redhat.com>
30214
30215         PR c++/39106
30216         * cgraphunit.c (cgraph_function_versioning): Clear also DECL_VIRTUAL_P
30217         on the copied decl.
30218
30219 2009-02-05  Paolo Bonzini  <bonzini@gnu.org>
30220
30221         PR rtl-optimization/39110
30222         * rtlanal.c (rtx_addr_can_trap_p_1): Shortcut unaligned
30223         addresses, not aligned ones.
30224
30225 2009-02-05  Daniel Berlin  <dberlin@dberlin.org>
30226             Richard Guenther  <rguenther@suse.de>
30227
30228         PR tree-optimization/39100
30229         * tree-ssa-structalias.c (do_ds_constraint): Actually do what the
30230         comment says and add edges.
30231
30232 2009-02-05  Joseph Myers  <joseph@codesourcery.com>
30233
30234         PR c/35435
30235         * c-common.c (handle_tls_model_attribute): Ignore attribute for
30236         non-VAR_DECLs without checking DECL_THREAD_LOCAL_P.
30237
30238 2009-02-04  Tobias Grosser  <grosser@fim.uni-passau.de>
30239
30240         * graphite.c (bb_in_sese_p, sese_build_livein_liveouts_use,
30241         sese_build_livein_liveouts_bb, sese_build_livein_liveouts,
30242         register_bb_in_sese, new_sese, free_sese): Moved.
30243         (dot_scop_1, build_scop_loop_nests, build_loop_iteration_domains,
30244         outermost_loop_in_scop, build_scop_iteration_domain,
30245         expand_scalar_variables_ssa_name, get_vdef_before_scop,
30246         limit_scops): Use bb_in_sese_p instead of bb_in_scop_p.
30247         Use loop_in_sese_p instead of loop_in_scop_p.
30248         (new_graphite_bb, gloog): Do not initialize SCOP_BBS_B.
30249         (new_scop, free_scop): Remove SCOP_LOOP2CLOOG_LOOP and SCOP_BBS_B.
30250         (scopdet_basic_block_info): Fix bug in scop detection.
30251         (new_loop_to_cloog_loop_str, hash_loop_to_cloog_loop,
30252         eq_loop_to_cloog_loop): Remove.
30253         (nb_loops_around_loop_in_scop, nb_loop
30254         ref_nb_loops): Moved here...
30255         * graphite.h (ref_nb_loops): ... from here.
30256         (struct scop): Remove bbs_b bitmap and loop2cloog_loop.
30257         (loop_domain_dim, loop_iteration_vector_dim): Remove.
30258         (SCOP_BBS_B, bb_in_scop_p, loop_in_scop_p): Removed.
30259
30260 2009-02-04  Paolo Bonzini  <bonzini@gnu.org>
30261             Hans-Peter Nilsson  <hp@axis.com>
30262
30263         PR rtl-optimization/37889
30264         * rtlanal.c (rtx_addr_can_trap_p_1): Add offset and size arguments.
30265         Move offset handling from PLUS to before the switch.  Use new
30266         arguments when considering SYMBOL_REFs too.
30267         (rtx_addr_can_trap_p): Pass dummy offset and size.
30268         (enum may_trap_p_flags): Remove.
30269         (may_trap_p_1): Pass size from MEM_SIZE.
30270
30271         PR rtl-optimization/38921
30272         * loop-invariant.c (find_invariant_insn): Use may_trap_or_fault_p.
30273         * rtl.h (may_trap_after_code_motion_p): Delete prototype.
30274         * rtlanal.c (may_trap_after_code_motion_p): Delete.
30275         (may_trap_p, may_trap_or_fault_p): Pass 0/1 as flags.
30276
30277 2009-02-04  H.J. Lu  <hongjiu.lu@intel.com>
30278
30279         AVX Programming Reference (January, 2009)
30280         * config/i386/sse.md (*vpclmulqdq): New.
30281
30282 2009-02-04  Jakub Jelinek  <jakub@redhat.com>
30283
30284         PR tree-optimization/38977
30285         PR gcov-profile/38292
30286         * calls.c (special_function_p): Disregard __builtin_ prefix.
30287
30288 2009-02-04  Hariharan Sandanagobalane  <hariharan@picochip.com>
30289
30290         * config/picochip/picochip.c (GO_IF_LEGITIMATE_ADDRESS): Disallow
30291         non-indexable addresses even before reload.
30292
30293 2009-02-03  Joseph Myers  <joseph@codesourcery.com>
30294
30295         PR c/29129
30296         * c-decl.c (grokdeclarator): Mark [*] arrays in field declarators
30297         as having variable size.  Do not give an error for unnamed
30298         parameters with [*] declarators.  Give a warning for type names
30299         with [*] declarators and mark them as variable size.
30300         * c-parser.c (c_parser_sizeof_expression): Do not give an error
30301         for sizeof applied to [*] type names.
30302
30303 2009-02-03  Andrew Pinski  <andrew_pinski@playstation.sony.com>
30304
30305         PR C++/36607
30306         * convert.c (convert_to_integer): Treat OFFSET_TYPE like INTEGER_TYPE.
30307
30308 2009-02-03  Jakub Jelinek  <jakub@redhat.com>
30309
30310         * gcc.c (process_command): Update copyright notice dates.
30311         * gcov.c (print_version): Likewise.
30312         * gcov-dump.c (print_version): Likewise.
30313         * mips-tfile.c (main): Likewise.
30314         * mips-tdump.c (main): Likewise.
30315
30316 2009-02-03  Joseph Myers  <joseph@codesourcery.com>
30317
30318         PR c/35433
30319         * c-typeck.c (composite_type): Set TYPE_SIZE and TYPE_SIZE_UNIT
30320         for composite type involving a zero-length array type.
30321
30322 2009-02-03  Jakub Jelinek  <jakub@redhat.com>
30323
30324         PR target/35318
30325         * function.c (match_asm_constraints_1): Skip over
30326         initial optional % in the constraint.
30327
30328         PR inline-asm/39059
30329         * c-parser.c (c_parser_postfix_expression): If fixed point is not
30330         supported, don't accept FIXED_CSTs.
30331         * c-decl.c (finish_declspecs): Error if fixed point is not supported
30332         and _Sat is used without _Fract/_Accum.  Set specs->type to
30333         integer_type_node for cts_fract/cts_accum if fixed point is not
30334         supported.
30335
30336 2009-02-02  Catherine Moore  <clm@codesourcery.com>
30337
30338         * sde.h (SUBTARGET_ARM_SPEC): Don't assemble -fpic code as -mabicalls.
30339
30340 2009-02-02  Richard Sandiford  <rdsandiford@googlemail.com>
30341
30342         * config/mips/mips.h (FILE_HAS_64BIT_SYMBOLS): New macro.
30343         (ABI_HAS_64BIT_SYMBOLS): Use it.
30344         (DWARF2_ADDR_SIZE): Use it instead of ABI_HAS_64BIT_SYMBOLS.
30345
30346 2009-02-02  Paul Brook  <paul@codesourcery.com>
30347
30348         * config/arm/arm.md (arm_addsi3): Add r/r/k alternative.
30349
30350 2009-02-02  Jakub Jelinek  <jakub@redhat.com>
30351
30352         PR inline-asm/39058
30353         * recog.h (asm_operand_ok): Add constraints argument.
30354         * recog.c (asm_operand_ok): Likewise.  If it is set, for digits
30355         recurse on matching constraint.
30356         (check_asm_operands): Pass constraints as 3rd argument to
30357         asm_operand_ok.  Don't look up matching constraint here.
30358         * stmt.c (expand_asm_operands): Pass NULL as 3rd argument
30359         to asm_operand_ok.
30360
30361 2009-02-02  Ben Elliston  <bje@au.ibm.com>
30362
30363         * doc/tm.texi (Storage Layout): Fix TARGET_ALIGN_ANON_BITFIELD and
30364         TARGET_NARROW_VOLATILE_BITFIELD macro names.
30365
30366 2009-01-31  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
30367
30368         * doc/install.texi (hppa*-hp-hpux*): Update binutils and linker
30369         information.  Remove some obsolete information.  Reorganize.
30370
30371         * config/pa/fptr.c: Revert license to GPL 2.
30372         * config/pa/milli64.S: Likewise.
30373
30374 2009-01-31  Dave Korn  <dave.korn.cygwin@gmail.com>
30375
30376         PR target/38904
30377         * mkmap-flat.awk (END):  Use pe_dll command-line arg to pass
30378         LIBRARY name in, instead of hard-coding it.
30379         * config.gcc (i[34567]86-*-pe | i[34567]86-*-cygwin*):  Add an
30380         extra target make frag to tmake_files according to EH model.
30381         (i[34567]86-*-mingw* | x86_64-*-mingw*):  Likewise.
30382         * config/i386/t-dw2-eh, config/i386/t-sjlj-eh:  Add new target
30383         frags that define makefile variable EH_MODEL appropriately.
30384         * config/i386/cygming.h (DWARF2_UNWIND_INFO):  Add comment.
30385         * config/i386/cygwin.h (LIBGCC_EH_EXTN):  Define to nothing or
30386         to "-sjlj" according to type of EH configured.
30387         (LIBGCC_SONAME):  Concatenate it to shared library base name.
30388         * config/i386/mingw32.h (LIBGCC_EH_EXTN):  Define to "_dw2" or
30389         to "_sjlj" according to type of EH configured.
30390         (LIBGCC_SONAME):  Concatenate it to shared library base name.
30391         * config/i386/t-cygming (SHLIB_SONAME):  Use EH_MODEL.
30392         (SHLIB_LINK):  Add missing semicolon to if-else construct.
30393         (SHLIB_MKMAP_OPTS):  Pass library name to mkmap-flat.awk as
30394         string value of "pe_dll" command-line option.
30395         * config/i386/t-cygwin (SHLIB_EH_EXTENSION):  New helper.
30396         (SHLIB_SONAME):  Use it when overriding t-cygming default.
30397         (SHLIB_IMPLIB):  Override t-cygming default.
30398         (SHLIB_MKMAP_OPTS):  Pass library name to mkmap-flat.awk as
30399         string value of "pe_dll" command-line option.
30400
30401 2009-01-31  Dave Korn  <dave.korn.cygwin@gmail.com>
30402
30403         PR target/38952
30404         * config/i386/i386.c (ix86_builtin_setjmp_frame_value): New.
30405         (TARGET_BUILTIN_SETJMP_FRAME_VALUE): Override default to point at it.
30406
30407 2009-01-31  Richard Guenther  <rguenther@suse.de>
30408
30409         PR tree-optimization/38937
30410         * tree-ssa-structalias.c (do_sd_constraint): Do not shortcut
30411         computing the transitive closure.
30412
30413 2009-01-30  Richard Guenther  <rguenther@suse.de>
30414
30415         PR tree-optimization/39041
30416         * tree-ssa-forwprop.c (forward_propagate_addr_expr_1):
30417         Propagate variable indices only if the types match for this stmt.
30418
30419 2009-01-30  Jakub Jelinek  <jakub@redhat.com>
30420
30421         PR target/39013
30422         * c-decl.c (pop_scope): Set DECL_EXTERNAL for functions declared
30423         inline but never defined.
30424
30425 2009-01-30  Wolfgang Gellerich  <gellerich@de.ibm.com>
30426
30427         * config/s390/s390.md (*insv<mode>_reg_extimm): Removed.
30428         (*insv_h_di_reg_extimm): New insn.
30429         (*insv_l<mode>_reg_extimm): New insn.
30430
30431 2009-01-30  Hariharan Sandanagobalane  <hariharan@picochip.com>
30432
30433         * config/picochip/picochip.c (flag_conserve_stack): set
30434         PARAM_LARGE_STACK_FRAME and PARAM_STACK_FRAME_GROWTH to zero under
30435         fconserve-stack. Reduce call-overhead used by inliner.
30436
30437 2009-01-30  Hariharan Sandanagobalane  <hariharan@picochip.com>
30438
30439         PR/38157
30440         * common.opt (flag_conserve_stack): Initialised to zero.
30441
30442 2009-01-30  Kai Tietz  <kai.tietz@onevision.com>
30443
30444         PR/39002
30445         * config/i386/i386.c (ix86_can_use_return_insn_p): Check for nsseregs.
30446         (ix86_expand_epilogue): Take nsseregs in account to use proper restore
30447         method.
30448
30449 2009-01-29  H.J. Lu  <hongjiu.lu@intel.com>
30450
30451         * ira-color.c (allocno_reload_assign): Update comments.
30452         * regmove.c (regmove_optimize): Likewise.
30453
30454         * ra.h: Removed.
30455
30456 2009-01-29  Robert Millan  <rmh@aybabtu.com>
30457
30458         * config.gcc: Recognize GNU/kOpenSolaris (*-*-kopensolaris*-gnu).
30459         * config/i386/kopensolaris-gnu.h: New file.  Undefine
30460         `MD_UNWIND_SUPPORT'.
30461         * config/kopensolaris-gnu.h: New file (based on kfreebsd-gnu.h).
30462
30463 2009-01-29  Kazu Hirata  <kazu@codesourcery.com>
30464
30465         PR tree-optimization/39007
30466         * tree-loop-distribution.c (generate_builtin): Use
30467         recompute_dominator to compute the immediate dominator of the
30468         basic block just after the loop.
30469
30470 2009-01-29  Rainer Orth  <ro@TechFak.Uni-Bielefeld.DE>
30471
30472         * config/i386/sol2-10.h [!HAVE_AS_IX86_DIFF_SECT_DELTA]
30473         (ASM_OUTPUT_DWARF_PCREL): Define.
30474
30475 2009-01-29  Vladimir Makarov  <vmakarov@redhat.com>
30476
30477         * doc/tm.texi (TARGET_IRA_COVER_CLASSES): Modify description.
30478         * doc/passes.texi: Remove entries about regclass, local-alloc, and
30479         global.  Modify entries about regmove and IRA.
30480
30481         * ra-conflict.c: Remove the file.
30482
30483         * reload.c (push_reload, find_dummy_reload): Remove flag_ira.
30484
30485         * tree-pass.h (pass_local_alloc, pass_global_alloc): Remove.
30486         (pass_regclass_init): Rename to pass_reginfo_init.
30487
30488         * cfgloopanal.c (estimate_reg_pressure_cost): Remove flag_ira.
30489
30490         * toplev.h (flag_ira): Remove.
30491
30492         * caller-save.c (setup_save_areas): Remove flag_ira.
30493
30494         * ira-color.c (ira_reuse_stack_slot, ira_mark_new_stack_slot): Ditto.
30495
30496         * global.c: Remove the file.
30497
30498         * opts.c (decode_options): Remove flag_ira.
30499
30500         * hard-reg-set.h (losing_caller_save_reg_set): Remove.
30501
30502         * regmove.c: Modify file description.
30503         (find_use_as_address, try_auto_increment): Define them only if
30504         AUTO_INC_DEC is defined.
30505         (replacement_quality, replace_in_call_usage, fixup_match_1,
30506         stable_and_no_regs_but_for_p): Remove.
30507         (reg_set_in_bb): Make it static.
30508         (regmove_optimize): Remove flag_ira and code which worked for
30509         !flag_ira.
30510
30511         * local-alloc.c: Remove the file.
30512
30513         * common.opt (fira): Remove.
30514
30515         * ira.c: Include except.h.
30516         (eliminable_regset): Move from global.c.
30517         (mark_elimination): Ditto.  Remove flag_ira.
30518         (reg_renumber, struct equivalence, reg_equiv, equiv_mem,
30519         equiv_mem_modified, validate_equiv_mem_from_store,
30520         validate_equiv_mem, equiv_init_varies_p, equiv_init_movable_p,
30521         contains_replace_regs, memref_referenced_p, memref_used_between_p,
30522         no_equiv, recorded_label_ref): Move from local-alloc.c.
30523         (update_equiv_regs): Ditto.  Make it static.
30524         (print_insn_chain, print_insn_chains): Move it from global.c.
30525         (pseudo_for_reload_consideration_p): Ditto.  Remove flag_ira.
30526         (build_insn_chain): Ditto.  Make it static.
30527         (ra_init_live_subregs): Move from ra-conflict.c.  Make it static.
30528         Rename to init_live_subregs.
30529         (gate_ira): Remove flag_ira.
30530
30531         * regclass.c: Rename reginfo.c.  Change file description.
30532         (FORBIDDEN_INC_DEC_CLASSES): Remove.
30533         (reg_class_superclasses, forbidden_inc_dec_class, in_inc_dec): Remove.
30534         (init_reg_sets_1): Remove code for evaluation of
30535         reg_class_superclasses and losing_caller_save_reg_set.
30536         (init_regs): Remove init_reg_autoinc.
30537         (struct costs, costs, init_cost, ok_for_index_p_nonstrict,
30538         ok_for_base_p_nonstrict): Remove.
30539         (regclass_init): Rename to reginfo_init.  Don't initialize init_cost.
30540         (pass_regclass_init): Rename to pass_reginfo_init.  Modify
30541         corresponding entries.
30542         (dump_regclass, record_operand_costs, scan_one_insn,
30543         init_reg_autoinc, regclass, record_reg_classes, copy_cost,
30544         record_address_regs, auto_inc_dec_reg_p): Remove.
30545         (gt-regclass.h): Rename to gt-reginfo.h.
30546
30547         * rtl.h (dump_global_regs, retry_global_alloc,
30548         build_insn_chain, dump_local_alloc, update_equiv_regs): Remove.
30549
30550         * Makefile.in (RA_H): Remove.
30551         (OBJS-common): Remove global.o, local-alloc.o, and ra-conflict.o.
30552         Rename regclass.o to reginfo.o.
30553         (regclass.o): Rename to reginfo.o.  Rename gt-regclass.h to
30554         gt-reginfo.h.
30555         (global.o, local-alloc.o, ra-conflict.o): Remove entries.
30556         (GTFILES): Rename regclass.c to reginfo.c.
30557
30558         * passes.c (init_optimization_passes): Remove pass_local_alloc and
30559         pass_global_alloc.  Rename pass_regclass_init to pass_reginfo_init.
30560
30561         * reload1.c (compute_use_by_pseudos, reload, count_pseudo,
30562         count_spilled_pseudo, find_reg, alter_reg, delete_output_reload):
30563         Remove flag_ira.
30564         (finish_spills): Ditto.  Remove code for !flag_ira.
30565
30566 2009-01-29  Kenneth Zadeck  <zadeck@naturalbridge.com>
30567
30568         PR middle-end/35854
30569         * doc/invoke.texi (rtl debug options): Complete rewrite.
30570         * auto-inc-dec.c (pass_inc_dec): Rename pass from "auto-inc-dec"
30571         to auto_inc_dec".
30572         * mode-switching.c (pass_mode_switching): Rename pass from
30573         "mode-sw" to "mode_sw".
30574         * except.c (pass_convert_to_eh_ranges): Rename pass from
30575         "eh-ranges" to "eh_ranges".
30576         * lower-subreg.c (pass_lower_subreg): Renamed pass from "subreg"
30577         to "subreg1".
30578
30579
30580 2009-01-29  Andrey Belevantsev  <abel@ispras.ru>
30581             Alexander Monakov  <amonakov@ispras.ru>
30582
30583         PR middle-end/38857
30584         * sel-sched.c (count_occurrences_1): Check that *cur_rtx is a hard
30585         register.
30586         (move_exprs_to_boundary): Change return type and pass through
30587         should_move from move_op.  Relax assert.  Update usage ...
30588         (schedule_expr_on_boundary): ... here.  Use should_move instead of
30589         cant_move.
30590         (move_op_orig_expr_found): Indicate that insn was disconnected from
30591         stream.
30592         (code_motion_process_successors): Do not call after_merge_succs
30593         callback if original expression was not found when traversing any of
30594         the branches.
30595         (code_motion_path_driver): Change return type.  Update prototype.
30596         (move_op): Update comment.  Add a new parameter (should_move).  Update
30597         prototype.  Set *should_move based on indication provided by
30598         move_op_orig_expr_found.
30599
30600 2009-01-28  Pat Haugen  <pthaugen@us.ibm.com>
30601
30602         * doc/invoke.texi (avoid-indexed-addresses): Document new option.
30603         * config/rs6000/rs6000-protos.h (avoiding_indexed_address_p): Declare.
30604         * config/rs6000/rs6000.opt (avoid-indexed-addresses): New option.
30605         * config/rs6000/rs6000.c (rs6000_override_options): Default
30606         avoid-indexed-addresses on for Power6, off for everything else.
30607         (avoiding_indexed_address_p): New function.
30608         (rs6000_legitimize_address): Use it.
30609         (rs6000_legitimate_address): Likewise.
30610         * config/rs6000/rs6000.md (movXX_updateX): Likewise
30611
30612 2009-01-28  Kazu Hirata  <kazu@codesourcery.com>
30613
30614         PR tree-optimization/38997
30615         * tree-loop-distribution.c (generate_memset_zero): Use
30616         POINTER_PLUS_EXPR for a pointer addition.
30617
30618 2009-01-28  Andreas Krebbel  <krebbel1@de.ibm.com>
30619
30620         * config/s390/s390.md (bswap<mode>2): New pattern added.
30621
30622 2009-01-28  Wolfgang Gellerich  <gellerich@de.ibm.com>
30623
30624         * config/s390/s390.md (*tls_load_31): Added type attribute.
30625
30626 2009-01-28  Wolfgang Gellerich  <gellerich@de.ibm.com>
30627
30628         * config/s390/s390.md: Fix a few comments.
30629
30630 2009-01-28  Wolfgang Gellerich  <gellerich@de.ibm.com>
30631
30632         * config/s390/s390.md (*tmsi_reg): Fixed z10prop attribute.
30633         (*tm<mode>_full): Fixed z10prop attribute.
30634         (*tst<mode>_extimm): Fixed z10prop attribute.
30635         (*tst<mode>_cconly_extimm): Fixed z10prop attribute.
30636         (*tstqiCCT_cconly): Fixed z10prop attribute.
30637         (*cmpsi_ccu_zerohi_rlsi): Fixed z10prop attribute.
30638         (*movsi_larl): Fixed z10prop attribute.
30639         (*movsi_zarch): Fixed z10prop attribute.
30640         (*movsi_eas): Fixed z10prop attribute.
30641         (*movhi): Fixed z10prop attribute.
30642         (*movqi): Fixed z10prop attribute.
30643         (*movstrictqi): Fixed z10prop attribute.
30644         (*mov<mode>): Fixed z10prop attribute.
30645         (*movcc): Fixed z10prop attribute.
30646         (*sethighpartdi_64): Fixed z10prop attribute.
30647         (*zero_extendhi<mode>2_z10): Fixed z10prop attribute.
30648         (*negdi2_sign_cc): Fixed z10prop attribute.
30649         (*negdi2_sign): Fixed z10prop attribute.
30650         (*absdi2_sign_cc): Fixed z10prop attribute.
30651         (*absdi2_sign): Fixed z10prop attribute.
30652         (*negabsdi2_sign_cc): Fixed z10prop attribute.
30653         (*negabsdi2_sign): Fixed z10prop attribute.
30654         (*cmp_and_trap_signed_int<mode>): Fixed z10prop attribute.
30655         (*cmp_and_trap_unsigned_int<mode>): Fixed z10prop attribute.
30656         (doloop_si64): Fixed z10prop attribute.
30657         (doloop_si31): Fixed z10prop attribute.
30658         (doloop_long): Fixed z10prop attribute.
30659         (indirect_jump): Fixed z10prop attribute.
30660         (nop): Fixed z10prop attribute.
30661         (main_base_64): Fixed z10prop attribute.
30662         (reload_base_64): Fixed z10prop attribute.
30663
30664 2009-01-28  Jakub Jelinek  <jakub@redhat.com>
30665
30666         PR rtl-optimization/38740
30667         * reorg.c (gate_handle_delay_slots): Avoid dbr scheduling
30668         if !optimize.
30669         * config/mips/mips.c (mips_reorg): Likewise.
30670
30671 2009-01-28  Richard Guenther  <rguenther@suse.de>
30672
30673         PR tree-optimization/38926
30674         * tree-ssa-pre.c (add_to_value): Assert we add only expressions
30675         with the correct value id to a value.
30676         (do_regular_insertion): Use the value number of edoubleprime
30677         for the value number of the expr.
30678
30679         Revert
30680         2008-08-21  Richard Guenther  <rguenther@suse.de>
30681
30682         * tree-ssa-pre.c (insert_into_preds_of_block): Before inserting
30683         a PHI ask VN if it is already available.
30684         * tree-ssa-sccvn.h (vn_phi_lookup): Declare.
30685         * tree-ssa-sccvn.c (vn_phi_lookup): Export.
30686
30687 2009-01-28  Jakub Jelinek  <jakub@redhat.com>
30688
30689         PR middle-end/38934
30690         * tree-vrp.c (extract_range_from_assert): For LE_EXPR and LT_EXPR
30691         set to varying whenever max has TREE_OVERFLOW set, similarly
30692         for GE_EXPR and GT_EXPR and TREE_OVERFLOW min.
30693
30694 2009-01-28  Richard Guenther  <rguenther@suse.de>
30695
30696         PR middle-end/38908
30697         * tree-ssa.c (warn_uninitialized_var): Do not warn for seemingly
30698         uninitialized aggregate uses in call arguments.
30699
30700 2009-01-28  Paolo Bonzini  <bonzini@gnu.org>
30701
30702         PR tree-optimization/38984
30703         * tree-ssa-structalias.c (get_constraints_for_1): Do not use
30704         the nothing_id variable if -fno-delete-null-pointer-checks.
30705
30706 2009-01-28  Uros Bizjak  <ubizjak@gmail.com>
30707
30708         PR target/38988
30709         * config/i386/i386.md (set_rip_rex64): Wrap operand 1 in label_ref.
30710         (set_got_offset_rex64): Ditto.
30711
30712 2009-01-27  H.J. Lu  <hongjiu.lu@intel.com>
30713
30714         PR target/38941
30715         * doc/extend.texi: Improve local variable with asm reg.
30716
30717 2009-01-27  Adam Nemet  <anemet@caviumnetworks.com>
30718
30719         * c.opt (Wpacked-bitfield-compat): Change init value to -1.
30720         * c-opts.c (c_common_post_options): If -W*packed-bitfield-compat
30721         was not supplied then set warn_packed_bitfield_compat to the
30722         default value of 1.
30723         * stor-layout.c (place_field): Check warn_packed_bitfield_compat
30724         against 1.
30725
30726 2009-01-27  Richard Guenther  <rguenther@suse.de>
30727
30728         PR tree-optimization/38503
30729         * cfgexpand.c (expand_gimple_basic_block): Ignore
30730         GIMPLE_CHANGE_DYNAMIC_TYPE during expansion.
30731         * tree-ssa-structalias.c (set_uids_in_ptset): Do not prune
30732         variables that cannot have TBAA applied.
30733         (compute_points_to_sets): Do not remove GIMPLE_CHANGE_DYNAMIC_TYPE
30734         statements.
30735
30736 2009-01-27  Uros Bizjak  <ubizjak@gmail.com>
30737
30738         PR middle-end/38969
30739         * calls.c (initialize_argument_information): Do not wrap complex
30740         arguments in SAVE_EXPR.
30741
30742 2009-01-26  Andreas Tobler  <a.tobler@schweiz.org>
30743
30744         * config/t-vxworks (LIBGCC2_INCLUDES): Fix typo.
30745         (INSTALL_LIBGCC): Revert typo commit.
30746
30747 2009-01-26  Richard Guenther  <rguenther@suse.de>
30748
30749         PR tree-optimization/38745
30750         * tree-ssa-alias.c (update_alias_info_1): Exclude RESULT_DECL
30751         from special handling.
30752
30753 2009-01-26  Richard Guenther  <rguenther@suse.de>
30754
30755         PR tree-optimization/38745
30756         * tree-ssa.c (execute_update_addresses_taken): Do not include
30757         variables that cannot possibly be a register in not_reg_needs.
30758         Do not clear TREE_ADDRESSABLE on vars that may not become
30759         registers.
30760         * tree-ssa.c (update_alias_info_1): Include those in the set
30761         of addressable vars.
30762
30763 2009-01-26  Richard Guenther  <rguenther@suse.de>
30764
30765         PR middle-end/38851
30766         * Makefile.in (tree-ssa-dse.o): Add langhooks.h.
30767         * tree-ssa-dse.c: Include langhooks.h
30768         (execute_simple_dse): Remove stores with zero size.
30769
30770 2009-01-24  Jakub Jelinek  <jakub@redhat.com>
30771
30772         PR c/38957
30773         * c-typeck.c (c_finish_return): Handle POINTER_PLUS_EXPR the same way
30774         as PLUS_EXPR.
30775
30776 2009-01-24  Julian Brown  <julian@codesourcery.com>
30777
30778         * config/arm/t-linux-eabi (LIB2FUNCS_STATIC_EXTRA): Add
30779         config/arm/linux-atomic.c.
30780         * config/arm/linux-atomic.c: New.
30781
30782 2009-01-24  Eric Botcazou  <ebotcazou@adacore.com>
30783
30784         * config/sparc/linux.h (DBX_REGISTER_NUMBER): Delete.
30785         * config/sparc/linux64.h (DBX_REGISTER_NUMBER): Likewise.
30786         * config/sparc/sysv4.h (DBX_REGISTER_NUMBER): Likewise.
30787
30788 2009-01-24  H.J. Lu  <hongjiu.lu@intel.com>
30789
30790         PR c/38938
30791         * c-opts.c (c_common_handle_option): Update warn_pointer_sign
30792         properly.
30793
30794 2009-01-24  Sebastian Pop  <sebastian.pop@amd.com>
30795
30796         PR tree-optimization/38953
30797         * graphite.c (graphite_verify): Add a call to verify_loop_closed_ssa.
30798         (scop_adjust_phis_for_liveouts): Initialize false_i to zero.
30799         (gloog): Split the exit of the scop when the scop exit is a loop exit.
30800         (graphite_transform_loops): Only call cleanup_tree_cfg if gloog
30801         changed the CFG.
30802
30803 2009-01-24  Paul Brook  <paul@codesourcery.com>
30804
30805         * config/arm/neon.md (neon_type): Move to arm.md.
30806         (neon_mov<VSTRUCT>): Add neon_type attribute.
30807         * config/arm/arm.md (neon_type): Move to here.
30808         (conds): Add "unconditioal" and use as default for NEON insns.
30809
30810 2009-01-24  Ben Elliston  <bje@au.ibm.com>
30811
30812         * bitmap.h (BITMAP_FREE): Eliminate `implicit conversion from
30813         void *' warning from -Wc++-compat.
30814         * Makefile.in (dominance.o-warn): Remove.
30815
30816 2009-01-23  Paolo Bonzini  <bonzini@gnu.org>
30817
30818         PR tree-optimization/38932
30819         * fold-const.c (fold_unary_ignore_overflow): New.
30820         * tree.h (fold_unary_ignore_overflow): Declare.
30821         * tree-ssa-ccp.c (ccp_fold): Use fold_unary_ignore_overflow.
30822         * tree-ssa-sccvn.c (visit_reference_op_load,
30823         simplify_unary_expression): Likewise.
30824
30825 2009-01-22  Adam Nemet  <anemet@caviumnetworks.com>
30826
30827         * c-decl.c (finish_struct): Move code to set DECL_PACKED after
30828         DECL_BIT_FIELD is alreay known.  Also inherit packed for bitfields
30829         regardless of their type.
30830         * c-common.c (handle_packed_attribute): Don't ignore packed on
30831         bitfields.
30832         * c.opt (Wpacked-bitfield-compat): New warning option.
30833         * stor-layout.c (place_field): Warn if offset of a field changed.
30834         * doc/extend.texi (packed): Mention the ABI change.
30835         * doc/invoke.texi (-Wpacked-bitfield-compat): Document.
30836         (Warning Options): Add it to the list.
30837
30838 2009-01-22  H.J. Lu  <hongjiu.lu@intel.com>
30839
30840         * c-opts.c (c_common_post_options): Fix a typo in comments.
30841
30842 2009-01-22  Steve Ellcey  <sje@cup.hp.com>
30843
30844         PR middle-end/38615
30845         * gimplify.c (gimplify_init_constructor): Fix promotion of const
30846         variables to static.
30847         * doc/invoke.texi (-fmerge-all-constants): Update description.
30848
30849 2009-01-22  Uros Bizjak  <ubizjak@gmail.com>
30850
30851         PR target/38931
30852         * config/i386/i386.md (*movsi_1): Use type "mmx" for alternative 2.
30853         (*movdi_1_rex64): Use type "mmx" for alternative 5.
30854
30855 2009-01-22  Richard Earnshaw  <rearnsha@arm.com>
30856
30857         * arm.h (DATA_ALIGNMENT): Align structures, unions and arrays to
30858         a word boundary.
30859         (LOCAL_ALIGNMENT): Similarly.
30860
30861 2009-01-22  Mark Shinwell  <shinwell@codesourcery.com>
30862             Joseph Myers  <joseph@codesourcery.com>
30863
30864         * config/arm/arm.c (all_architectures): Add iWMMXt2 entry.
30865         * config/arm/arm-cores.def: New ARM_CORE entry for iWMMXt2.
30866         * config/arm/arm-tune.md: Regenerate.
30867         * doc/invoke.texi (ARM Options): Document -mcpu=iwmmxt2 and
30868         -march=iwmmxt2.
30869
30870 2009-01-22  Mark Shinwell  <shinwell@codesourcery.com>
30871
30872         * config/arm/bpabi.h (SUBTARGET_EXTRA_ASM_SPEC): Bump EABI
30873         version number to five.
30874
30875 2009-01-22  Dodji Seketeli  <dodji@redhat.com>
30876
30877         PR c++/38930
30878         * c-decl.c (clone_underlying_type): Revert PR c++/26693 changes.
30879         * c-common.c (set_underlying_type): Likewise.
30880         (is_typedef_decl ): Likewise
30881         * tree.h: Likewise
30882         (set_underlying_type): Likewise.
30883         (is_typedef_type): Likewise.
30884
30885 2009-01-21  Vladimir Makarov  <vmakarov@redhat.com>
30886
30887         PR middle-end/38587
30888         * ira-color.c (coalesce_spill_slots): Don't coalesce allocnos
30889         crossing setjmps.
30890
30891 2009-01-21  Dave Korn  <dave.korn.cygwin@gmail.com>
30892
30893         PR bootstrap/37660
30894         * config/i386/cygwin.h (SHARED_LIBGCC_SPEC):  New helper macro.
30895         (LIBGCC_SPEC):  Don't define.
30896         (REAL_LIBGCC_SPEC):  Define instead, using SHARED_LIBGCC_SPEC.
30897
30898 2009-01-21  Uros Bizjak  <ubizjak@gmail.com>
30899
30900         PR rtl-optimization/38879
30901         * alias.c (base_alias_check): Unaligned access via AND address can
30902         alias all surrounding object types except those with sizes equal
30903         or wider than the size of unaligned access.
30904
30905 2009-01-21  Dodji Seketeli  <dodji@redhat.com>
30906
30907         PR c++/26693
30908         * c-decl.c (clone_underlying_type): Move this ...
30909         * c-common.c (set_underlying_type): ... here.
30910         Also, make sure the function properly sets TYPE_STUB_DECL() on
30911         the newly created typedef variant type.
30912         (is_typedef_decl ): New entry point.
30913         * tree.h: Added a new member member_types_needing_access_check to
30914         struct tree_decl_non_common.
30915         (set_underlying_type): New entry point.
30916         (is_typedef_type): Likewise.
30917
30918 2009-01-21  Bingfeng Mei  <bmei@broadcom.com>
30919
30920         * alias.c (walk_mems_1, walk_mems_2, insn_alias_sets_conflict_p):
30921         Check whether two instructions have memory references that
30922         belong to conflicting alias sets.  walk_mems_1 and walk_mems_2
30923         are helper functions for traversing.
30924         * alias.h (insn_alias_sets_confilict_p): New prototypes.
30925         * ddg.c (add_inter_loop_mem_dep): Call insn_alias_sets_conflict_p
30926         not to draw dependency edge for instructions with non-conflicting
30927         alias sets.
30928
30929 2009-01-20  Joseph Myers  <joseph@codesourcery.com>
30930
30931         PR other/38758
30932         * longlong.h: Update copyright years.  Use soft-fp license notice.
30933         Sync __clz_tab declaration with glibc.
30934
30935 2009-01-20  Steve Ellcey  <sje@cup.hp.com>
30936
30937         PR target/30687
30938         * doc/extend.texi (syscall_linkage): New.
30939         (version_id): Modify.
30940
30941 2009-01-20  Andrew Pinski  <andrew_pinski@playstation.sony.com>
30942             Richard Guenther  <rguenther@suse.de>
30943
30944         PR tree-optimization/38747
30945         PR tree-optimization/38748
30946         * tree-ssa-forwprop.c (forward_propagate_addr_expr_1): Disable the VCE
30947         conversion if the base address is an indirect reference and the
30948         aliasing sets could cause issues.
30949
30950 2009-01-20  Sebastian Pop  <sebastian.pop@amd.com>
30951
30952         * common.opt (fgraphite, fgraphite-identity): Add comment for
30953         explaining why these options are not documented.
30954
30955 2009-01-20  Sebastian Pop  <sebastian.pop@amd.com>
30956
30957         * graphite.c (stmt_simple_for_scop_p): Also handle cases when
30958         gimple_call_lhs is NULL.
30959
30960 2009-01-20  Paolo Bonzini  <bonzini@gnu.org>
30961
30962         PR target/38868
30963         * emit-rtl.c (adjust_address_1): Make sure memref is never
30964         overwritten.
30965
30966 2009-01-20  Ben Elliston  <bje@au.ibm.com>
30967
30968         * libgcov.c (__gcov_execl, __gcov_execlp, __gcov_execle): Remove
30969         const qualifier from arg parameter. Remove unnecessary cast to char *.
30970         * gcov-io.h (__gcov_execl, __gcov_execlp, __gcov_execle): Remove
30971         const qualifier from arg 2.
30972
30973 2009-01-19  Iain Sandoe  <iain.sandoe@sandoe-acoustics.co.uk>
30974
30975         * config/darwin.h: Add static-libgfortran to LINK_SPEC.
30976
30977 2009-01-19  Vladimir Makarov  <vmakarov@redhat.com>
30978
30979         PR c/38869
30980         * rtl.h (reinit_regs): New prototype.
30981         * regclass.c: Include ira.h.
30982         (reinit_regs): New.
30983         * Makefile.in (regclass.o): Add ira.h.
30984         * config/i386/i386.c (ix86_maybe_switch_abi): Use reinit_regs.
30985
30986 2009-01-18  H.J. Lu  <hongjiu.lu@intel.com>
30987
30988         PR target/38736
30989         * c-common.c (handle_aligned_attribute): Use
30990         ATTRIBUTE_ALIGNED_VALUE instead of BIGGEST_ALIGNMENT for
30991         default alignment value.
30992
30993         * c-cppbuiltin.c (c_cpp_builtins): Define __BIGGEST_ALIGNMENT__.
30994
30995         * defaults.h (ATTRIBUTE_ALIGNED_VALUE): New.
30996         * config/i386/i386.h (ATTRIBUTE_ALIGNED_VALUE): Likewise.
30997
30998         * doc/extend.texi: Update __attribute__ ((aligned)).  Document
30999         __BIGGEST_ALIGNMENT__.
31000
31001         * doc/tm.texi: Document ATTRIBUTE_ALIGNED_VALUE.
31002
31003 2009-01-18  Richard Guenther  <rguenther@suse.de>
31004
31005         PR tree-optimization/38819
31006         * tree-flow.h (operation_could_trap_helper_p): Declare.
31007         * tree-eh.c (operation_could_trap_helper_p): Export.
31008         * tree-ssa-sccvn.h (vn_nary_may_trap): Declare.
31009         * tree-ssa-sccvn.c (vn_nary_may_trap): New function.
31010         * tree-ssa-pre.c (insert_into_preds_of_block): Check if we
31011         are about to insert a possibly trapping instruction and fail
31012         in this case.
31013
31014 2009-01-18  Andreas Schwab  <schwab@suse.de>
31015
31016         * doc/install.texi (Configuration): Remove obsolete paragraph
31017         about use of --with-gnu-ld with --with-gnu-as.
31018
31019 2009-01-18  Kazu Hirata  <kazu@codesourcery.com>
31020
31021         * doc/extend.texi, doc/gimple.texi, doc/invoke.texi,
31022         doc/md.texi, doc/sourcebuild.texi, doc/tm.texi: Fix typos.
31023         Follow spelling conventions.
31024
31025 2009-01-18  Ben Elliston  <bje@au.ibm.com>
31026
31027         * bitmap.c (bitmap_obstack_alloc_stat): Adjust cast to eliminate
31028         C++ warning about implicit conversion from void * to struct
31029         bitmap_head_def *.
31030         (bitmap_obstack_free): Likewise for bitmap_element *.
31031         * Makefile.in (bitmap.o-warn): Remove.
31032
31033 2009-01-17  Dave Korn  <dave.korn.cygwin@gmail.com>
31034
31035         * Makefile.in (BACKENDLIBS):  Reorder to match dependencies.
31036
31037 2009-01-17  Sebastian Pop  <sebastian.pop@amd.com>
31038             Tobias Grosser  <tobi.grosser@amd.com>
31039
31040         * graphite.c (graphite_trans_scop_block): Do not block single
31041         nested loops.
31042
31043 2009-01-16  Alexandre Oliva  <aoliva@redhat.com>
31044
31045         * ebitmap.h (ebitmap_iter_init): Initialize all fields.
31046         * ipa-struct-reorg.c (gen_struct_type): Replace known-true
31047         test with assertion.
31048
31049 2009-01-16  Richard Guenther  <rguenther@suse.de>
31050
31051         PR tree-optimization/38835
31052         PR middle-end/36227
31053         * fold-const.c (fold_binary): Remove PTR + INT -> (INT)(PTR p+ INT)
31054         and INT + PTR -> (INT)(PTR p+ INT) folding.
31055         * tree-ssa-address.c (create_mem_ref): Properly use POINTER_PLUS_EXPR.
31056
31057 2009-01-16  Adam Nemet  <anemet@caviumnetworks.com>
31058
31059         PR target/38554
31060         * expmed.c (expand_shift): With SHIFT_COUNT_TRUNCATED, don't lift
31061         the subreg from a lowpart subreg if it is also casting the value.
31062
31063 2009-01-16  Sebastian Pop  <sebastian.pop@amd.com>
31064             Tobias Grosser  <tobi.grosser@amd.com>
31065
31066         * graphite.c (compare_prefix_loops): New.
31067         (build_scop_canonical_schedules): Rewritten.
31068         (graphite_transform_loops): Move build_scop_canonical_schedules
31069         after build_scop_iteration_domain.
31070
31071 2009-01-16  Sebastian Pop  <sebastian.pop@amd.com>
31072             Tobias Grosser  <tobi.grosser@amd.com>
31073
31074         * graphite.c (add_conditions_to_domain): Add the loops to
31075         the dimension of the iteration domain.  Do copy the domain
31076         only when it exists.
31077         (build_scop_conditions_1): Do not call add_conditions_to_domain.
31078         (add_conditions_to_constraints): New.
31079         (can_generate_code_stmt, can_generate_code): Removed.
31080         (gloog): Do not call can_generate_code.
31081         (graphite_transform_loops): Call add_conditions_to_constraints
31082         after building the iteration domain.
31083
31084 2009-01-16  Jakub Jelinek  <jakub@redhat.com>
31085
31086         PR tree-optimization/38789
31087         * tree-ssa-threadedge.c
31088         (record_temporary_equivalences_from_stmts_at_dest): Ignore calls to
31089         __builtin_constant_p.
31090
31091 2009-01-16  Kenneth Zadeck  <zadeck@naturalbridge.com>
31092
31093         * dce.c (delete_unmarked_insns): Reversed the order that insns are
31094         examined before deleting them.
31095
31096 2009-01-16  Richard Earnshaw  <rearnsha@arm.com>
31097
31098         * function.c (aggregate_value_p): Correctly extract the function
31099         type from CALL_EXPR_FN lookup.
31100
31101 2009-01-16  Hariharan Sandanagobalane  <hariharan@picochip.com>
31102
31103         * config/picochip/picochip.c (picochip_override_options): Revert
31104         CFI asm flag disable commited previously.
31105
31106 2009-01-15  Sebastian Pop  <sebastian.pop@amd.com>
31107             Tobias Grosser  <tobi.grosser@amd.com>
31108             Jan Sjodin  <jan.sjodin@amd.com>
31109
31110         * graphite.c (scan_tree_for_params): On substractions negate
31111         all the coefficients of the term.
31112         (clast_to_gcc_expression_red): New.  Handle reduction expressions
31113         of more than two operands.
31114         (clast_to_gcc_expression): Call clast_to_gcc_expression_red.
31115         (get_vdef_before_scop): Handle also the case of default definitions.
31116
31117 2009-01-15  Richard Sandiford  <rdsandiford@googlemail.com>
31118
31119         * caller-save.c (add_used_regs_1, add_used_regs): New functions.
31120         (insert_one_insn): Use them instead of REG_DEAD and REG_INC notes.
31121         Also use them when walking CALL_INSN_FUNCTION_USAGE.
31122
31123 2009-01-15  H.J. Lu  <hongjiu.lu@intel.com>
31124             Joey Ye  <joey.ye@intel.com>
31125
31126         PR middle-end/37843
31127         * cfgexpand.c (expand_stack_alignment): Don't update stack
31128         boundary nor check incoming stack boundary here.
31129         (gimple_expand_cfg): Update stack boundary and check incoming
31130         stack boundary here.
31131
31132 2009-01-15  Kenneth Zadeck  <zadeck@naturalbridge.com>
31133
31134         * dce.c (find_call_stack_args, delete_unmarked_insns): Fixed comments.
31135
31136 2009-01-14  Jakub Jelinek  <jakub@redhat.com>
31137
31138         PR rtl-optimization/38245
31139         * calls.c (expand_call): Add stack arguments to
31140         CALL_INSN_FUNCTION_USAGE even for pure calls (when
31141         ACCUMULATE_OUTGOING_ARGS) and even for args partially passed
31142         in regs and partially in memory or BLKmode arguments.
31143         (emit_library_call_value_1): Add stack arguments to
31144         CALL_INSN_FUNCTION_USAGE even for pure calls (when
31145         ACCUMULATE_OUTGOING_ARGS).
31146         * dce.c: Include tm_p.h.
31147         (find_call_stack_args): New function.
31148         (deletable_insn_p): Call it for CALL_P insns.  Add ARG_STORES
31149         argument.
31150         (mark_insn): Call find_call_stack_args for CALL_Ps.
31151         (prescan_insns_for_dce): Walk insns backwards in bb rather than
31152         forwards.  Allocate and free arg_stores bitmap if needed, pass it
31153         down to deletable_insn_p, don't mark stores set in arg_stores
31154         bitmap, clear the bitmap at the beginning of each bb.
31155         * Makefile.in (dce.o): Depend on $(TM_P_H).
31156
31157 2009-01-14  Michael Meissner  <gnu@the-meissners.org>
31158
31159         PR target/22599
31160         * config/i386/i386.c (print_operand): Add tests for 'D', 'C', 'F', 'f'
31161         to make sure the insn is a conditional test (bug 22599).  Reformat a
31162         few long lines.
31163
31164 2009-01-14  Sebastian Pop  <sebastian.pop@amd.com>
31165
31166         PR middle-end/38431
31167         * graphite.c (get_vdef_before_scop, scop_adjust_vphi): New.
31168         (scop_adjust_phis_for_liveouts): Call scop_adjust_vphi.
31169         (gloog): Do not call cleanup_tree_cfg.
31170         (graphite_transform_loops): Call cleanup_tree_cfg after all
31171         scops have been code generated.
31172
31173 2009-01-14  Basile Starynkevitch  <basile@starynkevitch.net>
31174         * doc/gty.texi (Invoking the garbage collector): Added new node
31175         and section documenting ggc_collect.
31176
31177 2009-01-14  Richard Guenther  <rguenther@suse.de>
31178
31179         PR tree-optimization/38826
31180         PR middle-end/38477
31181         * tree-ssa-structalias.c (emit_alias_warning): Emit the pointer
31182         initialization notes only if we actually emitted a warning.
31183         (intra_create_variable_infos): Add constraints for a result decl
31184         that is passed by hidden reference.
31185         (build_pred_graph): Mark all related variables non-direct on
31186         address-taking.
31187
31188 2009-01-14  Nick Clifton  <nickc@redhat.com>
31189
31190         * ira-conflicts.c: Include addresses.h for the definition of
31191         base_reg_class.
31192         (ira_build_conflicts): Use base_reg_class instead of BASE_REG_CLASS.
31193         * Makefile.in: Add a dependency of ira-conflicts.o on addresses.h.
31194
31195 2009-01-13  Vladimir Makarov  <vmakarov@redhat.com>
31196
31197         PR target/38811
31198         * Makefile.in (ira-lives.o): Add except.h.
31199
31200         * ira-lives.c: Include except.h.
31201         (process_bb_node_lives): Process can_throw_internal.
31202
31203 2009-01-13  Jakub Jelinek  <jakub@redhat.com>
31204
31205         PR rtl-optimization/38774
31206         * combine.c (simplify_set): When undoing cc_use change, don't do
31207         PUT_CODE on the newly created comparison, but instead put back the
31208         old comparison.
31209
31210 2009-01-13  Joseph Myers  <joseph@codesourcery.com>
31211
31212         * doc/invoke.texi (ARM Options): Update lists of -mcpu and -march
31213         values.  Remove duplicate arm8 entry.
31214
31215 2009-01-13  Sebastian Pop  <sebastian.pop@amd.com>
31216
31217         PR tree-optimization/38786
31218         * graphite.c (expand_scalar_variables_ssa_name): New, outlined from
31219         the SSA_NAME case of expand_scalar_variables_expr.
31220         Set the type of an expression to the type of its assign statement.
31221         (expand_scalar_variables_expr): Also gather the scalar computation
31222         used to index the memory access.  Do not pass loop_p.
31223         Fix comment.  Stop recursion on tcc_constant or tcc_declaration.
31224         (expand_scalar_variables_stmt): Pass to expand_scalar_variables_expr
31225         the gimple_stmt_iterator where it inserts new code.
31226         Do not pass loop_p.
31227         (copy_bb_and_scalar_dependences): Do not pass loop_p.
31228         (translate_clast): Update call to copy_bb_and_scalar_dependences.
31229
31230 2009-01-13  Sebastian Pop  <sebastian.pop@amd.com>
31231
31232         * graphite.h (debug_value): Removed.
31233         * graphite.c (debug_value): Removed.
31234
31235 2009-01-13  Richard Earnshaw  <rearnsha@arm.com>
31236
31237         * config/arm/arm.c (output_move_double): Don't synthesize thumb-2
31238         ldrd/strd with two 32-bit instructions.
31239
31240 2009-01-13  Richard Earnshaw  <rearnsha@arm.com>
31241
31242         * config/arm/arm.c (struct processors): Pass for speed down into
31243         cost helper functions.
31244         (const_ok_for_op): Handle COMPARE and inequality nodes.
31245         (arm_rtx_costs_1): Rewrite.
31246         (arm_size_rtx_costs): Update prototype.
31247         (arm_rtx_costs): Pass speed down to helper functions.
31248         (arm_slowmul_rtx_costs): Rework cost calculations.
31249         (arm_fastmul_rtx_costs, arm_xscale_rtx_costs): Likewise.
31250         (arm_9e_rtx_costs): Likewise.
31251
31252 2009-01-13  Uros Bizjak  <ubizjak@gmail.com>
31253
31254         * config/alpha/alpha.c (alpha_legitimate_address_p): Explicit
31255         relocations of local symbols wider than UNITS_PER_WORD are not valid.
31256         (alpha_legitimize_address): Do not split local symbols wider than
31257         UNITS_PER_WORD into HIGH/LO_SUM parts.
31258
31259 2009-01-13  Danny Smith  <dannysmith@users.sourceforge.net>
31260
31261         PR bootstrap/38580
31262         * gcc.c (process_command): Replace call to execvp with calls
31263         to pex_one and exit.
31264
31265 2009-01-03  Anatoly Sokolov  <aesok@post.ru>
31266
31267         PR target/29141
31268         * config/avr/t-avr (LIB1ASMFUNCS): Add _tablejump_elpm.
31269         * config/avr/libgcc.S (__do_global_ctors, __do_global_dtors): Add
31270         variant for devices with 3-byte PC.
31271         (__tablejump_elpm__): New.
31272
31273 2009-01-12  Jakub Jelinek  <jakub@redhat.com>
31274
31275         PR c/32041
31276         * c-parser.c (c_parser_postfix_expression): Allow `->' in
31277         offsetof member-designator, handle it as `[0].'.
31278
31279 2009-01-12  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
31280
31281         * pa.c (pa_asm_output_mi_thunk): Use pc-relative branch to thunk
31282         function when not using named sections on targets with named sections
31283         if branch distance is less than 262132.
31284
31285 2009-01-12  Richard Earnshaw  <rearnsha@arm.com>
31286
31287         * combine.c (combine_instructions):  Recompute
31288         optimize_this_for_speed_p  for each BB in the main combine loop.
31289
31290 2009-01-12  Tomas Bily  <tbily@suse.cz>
31291
31292         PR middlend/38385
31293         * tree-loop-distribution.c (prop_phis): New function.
31294         (generate_builtin): Call prop_phis.
31295
31296 2009-01-12  Jakub Jelinek  <jakub@redhat.com>
31297
31298         PR tree-optimization/38807
31299         * tree-ssa-reassoc.c (remove_visited_stmt_chain): Don't look at
31300         gimple_visited_p unless stmt is GIMPLE_ASSIGN.
31301
31302 2009-01-11  Adam Nemet  <anemet@caviumnetworks.com>
31303
31304         * expmed.c (store_bit_field_1): Properly truncate the paradoxical
31305         subreg of op0 to the original op0.
31306
31307 2009-01-11  Laurent GUERBY  <laurent@guerby.net>
31308
31309         * doc/sourcebuild.texi (Source Tree): Move up intl and fixinc.
31310
31311 2009-01-11  Markus Schoepflin  <markus.schoepflin@comsoft.de>
31312
31313         PR debug/7055
31314         * mips-tfile.c (parse_def): Fix parsing of def strings
31315         starting with digits.
31316
31317 2009-01-10  Jakub Jelinek  <jakub@redhat.com>
31318
31319         PR target/38695
31320         * config/arm/arm.c (arm_is_long_call_p): Don't call
31321         arm_function_in_section_p if decl isn't a FUNCTION_DECL.
31322
31323 2009-01-09  Steven Bosscher  <steven@gcc.gnu.org>
31324
31325         * regrename.c (regrename_optimize): Fix dumping.
31326         (find_oldest_value_reg): Preserve REG_POINTER.
31327         (copy_hardreg_forward_1): Likewise.
31328
31329 2009-01-09  Diego Novillo  <dnovillo@google.com>
31330
31331         * gimple.h (struct gimple_statement_base) <uid>: Document
31332         the restrictions on its use.
31333         (gimple_uid): Tidy.
31334         (gimple_set_uid): Tidy.
31335
31336 2009-01-09  Jakub Jelinek  <jakub@redhat.com>
31337
31338         * config/i386/i386.c (ix86_expand_movmem, ix86_expand_setmem): Add
31339         zero guard even if align_bytes != 0 and count is smaller than
31340         size_needed.
31341
31342 2009-01-09  Vladimir Makarov  <vmakarov@redhat.com>
31343
31344         PR rtl-optimization/38495
31345         * ira-emit.c (print_move_list, ira_debug_move_list): New functions.
31346         (add_range_and_copies_from_move_list): Print all added ranges.
31347         Add ranges to memory optimized destination.
31348
31349 2009-01-09  Jakub Jelinek  <jakub@redhat.com>
31350
31351         PR target/38686
31352         PR target/38708
31353         * config/i386/i386.c (override_options): Reject
31354         -mstringop-strategy=rep_8byte with -m32.
31355         (ix86_expand_movmem): For size_needed == 1 set epilogue_size_needed
31356         to 1.  Do count comparison against epilogue_size_needed at compile
31357         time even when count_exp was constant forced into register.  For
31358         size_needed don't jump to epilogue, instead just avoid aligning
31359         and invoke the body algorithm.  If need_zero_guard, add zero guard
31360         even if count is non-zero, but smaller than size_needed + number of
31361         bytes that could be stored for alignment.
31362         (ix86_expand_setmem): For size_needed == 1 set epilogue_size_needed
31363         to 1.  If need_zero_guard, add zero guard even if count is non-zero,
31364         but smaller than size_needed + number of bytes that could be stored
31365         for alignment.  Compare size_needed with epilogue_size_needed instead
31366         of desired_align - align, don't adjust size_needed, pass
31367         epilogue_size_needed to the epilogue expanders.
31368
31369         PR c/35742
31370         * c-pretty-print.c (pp_c_expression): Handle GOTO_EXPR like BIND_EXPR.
31371
31372 2009-01-09  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
31373
31374         * pa.c (last_address): Change to unsigned.
31375         (update_total_code_bytes): Change argument to unsigned.  Don't
31376         check if insn addresses are set.
31377         (pa_output_function_epilogue): Set last_address to UINT_MAX if insn
31378         addresses are not set.
31379         (pa_asm_output_mi_thunk): Handle wrap when updating last_address.
31380
31381 2009-01-09  Nick Clifton  <nickc@redhat.com>
31382
31383         * config/sh/symbian.c: Replace uses of DECL_INLINE with
31384         DECL_DECLARED_INLINE_P.
31385
31386 2009-01-09  Jakub Jelinek  <jakub@redhat.com>
31387
31388         PR middle-end/38347
31389         * dojump.c (do_jump_by_parts_zero_rtx): Use mode instead of
31390         GET_MODE (op0) in operand_subword_force calls.
31391
31392         PR middle-end/38771
31393         * fold-const.c (fold_unary): For COMPOUND_EXPR and COND_EXPR,
31394         fold_convert arg0 operands to TREE_TYPE (op0) first.
31395
31396 2009-01-08  Vladimir Makarov  <vmakarov@redhat.com>
31397
31398         * params.def (ira-max-conflict-table-size): Decrease default value
31399         to 1000.
31400
31401 2009-01-08  Jakub Jelinek  <jakub@redhat.com>
31402
31403         PR tree-optimization/37031
31404         * lambda-code.c (lambda_collect_parameters): Call pointer_set_destroy
31405         on parameter_set.
31406         (build_access_matrix): Reserve correct size for AM_MATRIX vector,
31407         allocate it using gc instead of heap, use VEC_quick_push instead of
31408         VEC_safe_push.
31409         * graphite.c (build_access_matrix): Allocate AM_MATRIX vector using gc
31410         instead of heap, use VEC_quick_push instead of VEC_safe_push.
31411         * tree-data-ref.h (struct access_matrix): Change matrix to gc
31412         allocated vector from heap allocated.
31413         * lambda.h: Add DEF_VEC_ALLOC_P for gc allocated lambda_vector.
31414         * tree-loop-linear.c (linear_transform_loops): Allocate nest
31415         vector only after perfect_loop_nest_depth call.
31416
31417 2009-01-08  Sebastian Pop  <sebastian.pop@amd.com>
31418             Jan Sjodin  <jan.sjodin@amd.com>
31419
31420         PR tree-optimization/38559
31421         * graphite.c (debug_value, copy_constraint,
31422         swap_constraint_variables, scale_constraint_variable, ): New.
31423         (get_lower_bound, get_upper_bound): Removed.
31424         (graphite_trans_bb_strip_mine): Clean up this code that works
31425         only for constant number of iterations.  Fully copy upper and
31426         lower bound constraints, not only the constant part of them.
31427         * graphite.h (debug_value): Declared.
31428
31429 2009-01-08  Ira Rosen  <irar@il.ibm.com>
31430
31431         PR tree-optimization/37194
31432         * tree-vect-transform.c (vect_estimate_min_profitable_iters):
31433         Don't add the cost of cost model guard in prologue to scalar
31434         outside cost in case of known number of iterations.
31435
31436 2009-01-07  Nathan Froyd  <froydnj@codesourcery.com>
31437             Alan Modra  <amodra@bigpond.net.au>
31438
31439         * config/rs6000/rs6000.c (rs6000_legitimize_address): Check for
31440         non-word-aligned REG+CONST addressing.
31441
31442 2009-01-07  Uros Bizjak  <ubizjak@gmail.com>
31443
31444         PR target/38706
31445         * config/alpha/alpha.c (alpha_end_function): For TARGET_ABI_OSF, call
31446         free_after_compilation when outputting a thunk.
31447         (alpha_output_mi_thunk_osf): Assert that we are processing a thunk.
31448         Do not call free_after_compilation here.
31449
31450 2009-01-07  Uros Bizjak  <ubizjak@gmail.com>
31451
31452         * config/i386/i386.c (ix86_target_string): Use ARRAY_SIZE.
31453         (ix86_valid_target_attribute_inner_p): Ditto.
31454
31455 2009-01-07  Jan Sjodin  <jan.sjodin@amd.com>
31456
31457         PR tree-optimization/38492
31458         PR tree-optimization/38498
31459         * tree-check.c (operator_is_linear, scev_is_linear_expression): New.
31460         * tree-chrec.h (scev_is_linear_expression): Declared.
31461         * graphite.c (graphite_cannot_represent_loop_niter): New.
31462         (scopdet_basic_block_info): Call graphite_cannot_represent_loop_niter.
31463         (graphite_loop_normal_form): Use gcc_assert.
31464         (scan_tree_for_params): Use CASE_CONVERT.
31465         (phi_node_is_iv, bb_contains_non_iv_scalar_phi_nodes): New.
31466         (build_scop_conditions_1): Call bb_contains_non_iv_scalar_phi_nodes.
31467         Use gcc_assert.  Discard scops that contain unhandled cases.
31468         (build_scop_conditions): Return a boolean status for unhandled cases.
31469         (strip_mine_profitable_p): Print the loop number, not its depth.
31470         (is_interchange_valid): Pass the depth of the loop nest, don't
31471         recompute it wrongly.
31472         (graphite_trans_bb_block): Same.
31473         (graphite_trans_bb_block): Print tentative of loop blocking.
31474         (graphite_trans_scop_block): Do not print that the loop has been
31475         blocked.
31476         (graphite_transform_loops): Do not handle scops that contain condition
31477         scalar phi nodes.
31478
31479 2009-01-07  H.J. Lu  <hongjiu.lu@intel.com>
31480
31481         AVX Programming Reference (December, 2008)
31482         * config/i386/avxintrin.h (_mm256_stream_si256): New.
31483         (_mm256_stream_pd): Likewise.
31484         (_mm256_stream_ps): Likewise.
31485
31486         * config/i386/i386.c (ix86_builtins): Add IX86_BUILTIN_MOVNTDQ256,
31487         IX86_BUILTIN_MOVNTPD256 and IX86_BUILTIN_MOVNTPS256.
31488         (ix86_special_builtin_type): Add VOID_FTYPE_PV4DI_V4DI.
31489         (bdesc_special_args): Add __builtin_ia32_movntdq256,
31490         __builtin_ia32_movntpd256 and __builtin_ia32_movntps256.
31491         (ix86_init_mmx_sse_builtins): Handle VOID_FTYPE_PV4DI_V4DI.
31492         (ix86_expand_special_args_builtin): Likewise.
31493
31494         * config/i386/sse.md (AVXMODEDI): New.
31495         (avx_movnt<mode>): Likewise.
31496         (avx_movnt<mode>): Likewise.
31497         (<sse>_movnt<mode>): Remove AVX support.
31498         (sse2_movntv2di): Likewise.
31499
31500 2009-01-07  Richard Guenther  <rguenther@suse.de>
31501
31502         PR middle-end/38751
31503         * fold-const.c (extract_muldiv): Remove obsolete comment.
31504         (fold_plusminus_mult_expr): Undo MINUS_EXPR
31505         to PLUS_EXPR canonicalization for the canonicalization.
31506
31507 2009-01-07  Gerald Pfeifer  <gerald@pfeifer.com>
31508
31509         * doc/install.texi (alpha*-dec-osf*): Remove note on 32-bit
31510         hosted cross-compilers generating less efficient code.
31511
31512 2009-01-06  Richard Sandiford  <rdsandiford@googlemail.com>
31513
31514         * function.h (rtl_data): Add a dbr_scheduled_p field.
31515         * reorg.c (dbr_schedule): Set it.
31516         (gate_handle_delay_slots): Check it.
31517         * config/mips/mips.c (mips_base_delayed_branch): Delete.
31518         (mips_reorg): Check flag_delayed_branch instead of
31519         mips_base_delayed_branch.
31520         (mips_override_options): Don't set mips_base_delayed_branch
31521         or flag_delayed_branch.
31522
31523 2009-01-06  Richard Sandiford  <rdsandiford@googlemail.com>
31524
31525         PR rtl-optimization/38426.
31526         * ira.c (ira): Set current_function_is_leaf earlier.
31527
31528 2009-01-06  Jakub Jelinek  <jakub@redhat.com>
31529
31530         PR rtl-optimization/38722
31531         * combine.c (try_combine): Don't modify PATTERN (i3) and notes
31532         too early, only set a flag and modify after last possible
31533         undo_all point.
31534
31535 2009-01-06  Janis Johnson  <janis187@us.ibm.com>
31536
31537         PR c/34252
31538         * ginclude/float.h: Rename DECnn_DEN to DECnn_SUBNORMAL_MIN.
31539         * real.c (decimal_single_format): Correct values of emin and emax.
31540         (decimal_double_format): Ditto.
31541         (decimal_quad_format): Ditto.
31542         * c-cppbuiltin.c (builtin_define_decimal_float_constants): Adjust
31543         computation of DECnn_MIN and DECnn_MAX for corrected values of
31544         emin and emax.  Define __DECnn_SUBNORMAL_MIN__ instead of
31545         __DECnn_MIN__, and adjust its computation for the corrected value
31546         of emin.
31547
31548 2009-01-06  Jan Hubicka  <jh@suse.cz>
31549
31550         PR target/38744
31551         * config/i386/i386.c (ix86_expand_call): Use ARRAY_SIZE.
31552
31553 2009-01-06  Gerald Pfeifer  <gerald@pfeifer.com>
31554
31555         * doc/contrib.texi (Contributors): Slightly adjust the end note.
31556         Add Robert Clark to the list of testers.
31557
31558 2009-01-06  Jan Hubicka  <jh@suse.cz>
31559             Kai Tietz  <kai.tietz@onevision.com>
31560
31561         * config/i386/i386.md (*msabi_syvabi): Add SSE regs clobbers.
31562         * config/i386/i386.c (ix86_expand_call): Add clobbers.
31563
31564 2009-01-06  Jan Hubicka  <jh@suse.cz>
31565             Kai Tietz  <kai.tietz@onevision.com>
31566
31567         * config/i386/i386.h (CONDITIONAL_CALL_USAGE): SSE regs are not used
31568         for w64 ABI.
31569         * config/i386/i386.c (struct ix86_frame): Add padding0 and nsseregs.
31570         (ix86_nsaved_regs): Count only general purpose regs.
31571         (ix86_nsaved_sseregs): New.
31572         (ix86_compute_frame_layout): Update nsseregs; set preferred alignment
31573         to 16 for w64; compute padding and size of sse reg save area.
31574         (ix86_emit_save_regs, ix86_emit_save_regs_using_mov): Save only
31575         general purpose regs.
31576         (ix86_emit_save_sse_regs_using_mov): New.
31577         (ix86_expand_prologue): Save SSE regs if needed.
31578         (ix86_emit_restore_regs_using_mov): Use only general purpose regs.
31579         (ix86_emit_restore_sse_regs_using_mov): New.
31580         (ix86_expand_epilogue): Save SSE regs if needed.
31581
31582 2009-01-06  Jan Hubicka  <jh@suse.cz>
31583             Kai Tietz  <kai.tietz@onevision.com>
31584
31585         * config/i386/i386.h (ACCUMULATE_OUTGOING_ARGS): Enable for MSABI
31586         * config/i386/i386.c (init_cumulative_args): Disallow calls of MSABI
31587         functions when accumulate outgoing args is off.
31588
31589 2009-01-06  H.J. Lu  <hongjiu.lu@intel.com>
31590
31591         PR bootstrap/38742
31592         * ira-color.c (ira_reuse_stack_slot): Check ENABLE_IRA_CHECKING
31593         before using pseudos_have_intersected_live_ranges_p.
31594
31595         * ira-int.h (ira_assert): Always define.
31596
31597 2009-01-06  H.J. Lu  <hongjiu.lu@intel.com>
31598
31599         AVX Programming Reference (December, 2008)
31600         * config/i386/avxintrin.h (_mm_permute2_pd): Removed.
31601         (_mm256_permute2_pd): Likewise.
31602         (_mm_permute2_ps): Likewise.
31603         (_mm256_permute2_ps): Likewise.
31604         * config/i386/i386.md (UNSPEC_VPERMIL2): Likewise.
31605         * config/i386/sse.md (avx_vpermil2<mode>3): Likewise.
31606
31607         * config/i386/i386.c (ix86_builtins): Remove
31608         IX86_BUILTIN_VPERMIL2PD, IX86_BUILTIN_VPERMIL2PS,
31609         IX86_BUILTIN_VPERMIL2PD256 and IX86_BUILTIN_VPERMIL2PS256.
31610         (ix86_builtin_type): Remove V8SF_FTYPE_V8SF_V8SF_V8SI_INT,
31611         V4DF_FTYPE_V4DF_V4DF_V4DI_INT, V4SF_FTYPE_V4SF_V4SF_V4SI_INT
31612         and V2DF_FTYPE_V2DF_V2DF_V2DI_INT.
31613         (bdesc_args): Remove __builtin_ia32_vpermil2pd,
31614         __builtin_ia32_vpermil2ps, __builtin_ia32_vpermil2pd256 and
31615         __builtin_ia32_vpermil2ps256.
31616         (ix86_init_mmx_sse_builtins): Updated.
31617         (ix86_expand_args_builtin): Likewise.
31618
31619 2009-01-05  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
31620
31621         * pa.c (output_call): Relocate non-jump insns in the delay slot of
31622         long absolute calls when generating PA 2.0 code.
31623
31624 2009-01-05  Vladimir Makarov  <vmakarov@redhat.com>
31625
31626         PR rtl-optimization/38583
31627         * params.h (IRA_MAX_CONFLICT_TABLE_SIZE): New macro.
31628
31629         * params.def (ira-max-conflict-table-size): New.
31630
31631         * doc/invoke.texi (ira-max-conflict-table-size): Decribe.
31632
31633         * ira.h (ira_conflicts_p): New external definition.
31634
31635         * ira-conflicts.c (build_conflict_bit_table): Do not build too big
31636         table.  Report this.  Return result of building.
31637         (ira_build_conflicts): Use ira_conflicts_p.  Check result of
31638         building conflict table.
31639
31640         * ira-color.c (fast_allocation): Use num instead of ira_allocnos_num.
31641         (ira_color): Use ira_conflicts_p.
31642
31643         * global.c: Include ira.h.
31644         (pseudo_for_reload_consideration_p, build_insn_chain): Use
31645         ira_conflicts_p.
31646
31647         * Makefile.in (global.o): Add ira.h.
31648
31649         * ira-build.c (mark_all_loops_for_removal,
31650         propagate_some_info_from_allocno): New.
31651         (remove_unnecessary_allocnos): Call
31652         propagate_some_info_from_allocno.
31653         (remove_low_level_allocnos): New.
31654         (remove_unnecessary_regions): Add parameter.  Call
31655         mark_all_loops_for_removal and remove_low_level_allocnos.  Pass
31656         parameter to remove_unnecessary_regions.
31657         (ira_build): Remove all regions but root if the conflict table was
31658         not built.  Update conflict hard regs for allocnos crossing calls.
31659
31660         * ira.c (ira_conflicts_p): New global.
31661         (ira): Define and use ira_conflicts_p.
31662
31663         * reload1.c (compute_use_by_pseudos, reload, count_pseudo,
31664         count_spilled_pseudo, find_reg, alter_reg, finish_spills,
31665         emit_input_reload_insns, delete_output_reload): Use ira_conflicts_p.
31666
31667 2009-01-06  Ben Elliston  <bje@au.ibm.com>
31668
31669         * gengtype-lex.l (YY_NO_INPUT): Define.
31670
31671 2009-01-05  Andrew Pinski  <andrew_pinski@playstation.sony.com>
31672
31673         PR c/34911
31674         * c-common.c (handle_vector_size_attribute): Also reject
31675         BOOLEAN_TYPE types.
31676
31677 2009-01-05  Sebastian Pop  <sebastian.pop@amd.com>
31678
31679         PR tree-optimization/38492
31680         * graphite.c (rename_map_elt, debug_rename_elt,
31681         debug_rename_map_1, debug_rename_map, new_rename_map_elt,
31682         rename_map_elt_info, eq_rename_map_elts,
31683         get_new_name_from_old_name, bb_in_sese_p): Moved around.
31684         (sese_find_uses_to_rename_use): Renamed sese_build_livein_liveouts_use.
31685         (sese_find_uses_to_rename_bb): Renamed sese_build_livein_liveouts_bb.
31686         (sese_build_livein_liveouts): New.
31687         (new_sese, free_sese): New.
31688         (new_scop): Call new_sese.
31689         (free_scop): Call free_sese.
31690         (rename_variables_from_edge, rename_phis_end_scop): Removed.
31691         (register_old_new_names): Renamed register_old_and_new_names.
31692         (register_scop_liveout_renames, add_loop_exit_phis,
31693         insert_loop_close_phis, struct igp,
31694         default_liveout_before_guard, add_guard_exit_phis,
31695         insert_guard_phis, copy_renames): New.
31696         (translate_clast): Call insert_loop_close_phis and insert_guard_phis.
31697         (sese_add_exit_phis_edge): Renamed scop_add_exit_phis_edge.
31698         (rewrite_into_sese_closed_ssa): Renamed scop_insert_phis_for_liveouts.
31699         (scop_adjust_phis_for_liveouts): New.
31700         (gloog): Call scop_adjust_phis_for_liveouts.
31701
31702         * graphite.h (struct sese): Documented.  Added fields liveout,
31703         num_ver and livein.
31704         (SESE_LIVEOUT, SESE_LIVEIN, SESE_LIVEIN_VER, SESE_NUM_VER): New.
31705         (new_sese, free_sese, sese_build_livein_liveouts): Declared.
31706         (struct scop): Added field liveout_renames.
31707         (SCOP_LIVEOUT_RENAMES): New.
31708
31709 2009-01-05  Harsha Jagasia  <harsha.jagasia@amd.com>
31710
31711         PR tree-optimization/38510
31712         * graphite.c (recompute_all_dominators): Call mark_irreducible_loops.
31713         (translate_clast): Call recompute_all_dominators before
31714         graphite_verify.
31715         (gloog): Call recompute_all_dominators before graphite_verify.
31716
31717 2009-01-05  Harsha Jagasia  <harsha.jagasia@amd.com>
31718             Jan Sjodin  <jan.sjodin@amd.com>
31719
31720         PR tree-optimization/38500
31721         * graphite.c (create_sese_edges): Call fix_loop_structure after
31722         splitting blocks.
31723
31724 2009-01-05  Joel Sherrill  <joel.sherrill@oarcorp.com>
31725
31726         * config.gcc: Add m32r*-*-rtems*.
31727         * config/m32r/rtems.h: New file.
31728
31729 2009-01-05  Ben Elliston  <bje@au.ibm.com>
31730
31731         * Makefile.in (.po.gmo): Use mkinstalldirs, not test -d || mkdir.
31732         (.po.pox): Likewise.
31733         (po/gcc.pot): Likewise.
31734
31735 2009-01-04  David S. Miller  <davem@davemloft.net>
31736
31737         * config/sparc/sparc.h (SECONDARY_MEMORY_NEEDED_RTX): Delete.
31738         (STARTING_FRAME_OFFSET): Always set to zero.
31739
31740 2009-01-04  Richard Sandiford  <rdsandiford@googlemail.com>
31741
31742         * tree.def (LSHIFT_EXPR, RSHIFT_EXPR): Add commentary.
31743         * tree-cfg.c (verify_gimple_assign_binary): Allow shifts of
31744         fixed-point types, and vectors of the same.
31745
31746 2009-01-04  Richard Sandiford  <rdsandiford@googlemail.com>
31747
31748         * config/mips/sync.md (*mb_barrier): Rename to...
31749         (*memory_barrier): ...this.
31750
31751 2009-01-04  Jonathan Wakely  <jwakely.gcc@gmail.com>
31752
31753         * doc/extend.texi (Function Attributes): Move @cindex after @item
31754         for 'artificial' and 'flatten'. Fix grammar for 'externally_visible'
31755         and put in alphabetical order. Fix 'target' name and put in order.
31756         * doc/invoke.texi (-Wstrict-null-sentinel, -fipa-matrix-reorg): Fix
31757         typos.
31758
31759 2009-01-04  Uros Bizjak  <ubizjak@gmail.com>
31760
31761         * config/s390/s390.md (UNSPEC_MB): Rename from UNSPECV_MB.
31762         (memory_barrier): Expand as unspec instead of unspec_volatile.
31763         Remove mem:BLK from insn operands.  Use Pmode scratch register.
31764         (*memory_barrier): Define as unspec instead of unspec_volatile.
31765         Use (match_dup 0) as input operand.
31766
31767         * config/sparc/sparc.md (UNSPEC_MEMBAR): Rename from UNSPECV_MEMBAR.
31768         * config/sparc/sync.md (memory_barrier): Expand as unspec instead of
31769         unspec_volatile.  Remove mem:BLK from insn operands.  Use Pmode
31770         scratch register.  Remove operand 1.
31771         (*stbar): Define as unspec instead of unspec_volatile.
31772         Use (match_dup 0) as input operand, remove (const_int 8).
31773         (*membar): Define as unspec instead of unspec_volatile.
31774         Use (match_dup 0) as input operand, remove input operand 2.
31775
31776         * config/xtensa/xtensa.md (UNSPEC_MEMW): Rename from UNSPECV_MEMW.
31777         (memory_barrier): Expand as unspec instead of unspec_volatile.
31778         Remove mem:BLK from insn operands.  Use Pmode scratch register.
31779         (*memory_barrier): Define as unspec instead of unspec_volatile.
31780         Use (match_dup 0) as input operand.
31781
31782         * config/ia64/sync.md (memory_barrier): Redefine as expander pattern.
31783         Remove mem:BLK from insn operands.  Use Pmode scratch register.
31784         Set volatile flag on operand 0.
31785         (*memory_barrier): New insn pattern.
31786
31787         * config/rs6000/sync.md (memory_barrier): Remove mem:BLK from
31788         insn operands.
31789         (*memory_barrier): Use (match_dup 0) as input operand.
31790
31791         * config/mips/sync.md (memory_barrier): Redefine as expander pattern.
31792         Remove mem:BLK from insn operands.  Use Pmode scratch register.
31793         Set volatile flag on operand 0.
31794         (*mb_internal): New insn pattern.
31795
31796         * config/alpha/sync.md (*memory_barrier): Rename from *mb_internal.
31797
31798 2009-01-04  Steven Bosscher  <steven@gcc.gnu.org>
31799
31800         PR middle-end/38586
31801         * function.c (struct temp_slot): Move to the section of the file
31802         that deals with temp slots.  Remove field 'address'.
31803         (temp_slot_address_table): New hash table of address -> temp slot.
31804         (struct temp_slot_address_entry): New struct, items for the table.
31805         (temp_slot_address_compute_hash, temp_slot_address_hash,
31806         temp_slot_address_eq, insert_temp_slot_address): Support functions
31807         for the new table.
31808         (find_temp_slot_from_address): Rewrite to use the new hash table.
31809         (remove_unused_temp_slot_addresses): Remove addresses of temp
31810         slots that have been made available.
31811         (remove_unused_temp_slot_addresses_1): Call-back for htab_traverse,
31812         worker function for remove_unused_temp_slot_addresses.
31813         (assign_stack_temp_for_type): Don't clear the temp slot address list.
31814         Add the temp slot address to the address -> temp slot map.
31815         (update_temp_slot_address): Update via insert_temp_slot_address.
31816         (free_temp_slots): Call remove_unused_temp_slot_addresses.
31817         (pop_temp_slots): Likewise.
31818         (init_temp_slots): Allocate the address -> temp slot map, or empty
31819         the map if it is already allocated.
31820         (prepare_function_start): Initialize temp slot processing.
31821
31822 2009-01-04  Steven Bosscher  <steven@gcc.gnu.org>
31823
31824         PR middle-end/38584
31825         * cfgexpand.c (estimate_stack_frame_size): Simplify the estimate:
31826         Calculate the size of all stack vars assuming no packing of stack
31827         vars will happen, replacing a quadratic algorithm with a linear one.
31828
31829 2009-01-03  Jakub Jelinek  <jakub@redhat.com>
31830
31831         PR target/38707
31832         * expmed.c (store_bit_field_1): Don't modify op0 if movstrict insn
31833         can't be used.
31834
31835 2009-01-03  Diego Novillo  <dnovillo@google.com>
31836
31837         * doc/contrib.texi: Update contributions.
31838
31839 2009-01-03  Jakub Jelinek  <jakub@redhat.com>
31840
31841         PR c++/38705
31842         * builtins.c (fold_builtin_memory_op): Give up if either operand
31843         is volatile.  Set srctype or desttype to non-qualified version
31844         of the other type.
31845
31846         PR c/38700
31847         * builtins.c (fold_builtin_expect): Only check DECL_WEAK for VAR_DECLs
31848         and FUNCTION_DECLs.
31849
31850 2009-01-02  Kenneth Zadeck  <zadeck@naturalbridge.com>
31851
31852         PR rtl-optimization/35805
31853         * df-problems.c (df_lr_finalize): Add recursive call to resolve lr
31854         problem if fast dce is able to remove any instructions.
31855         * dce.c (dce_process_block): Fix dump message.
31856
31857 2009-01-02  Mark Mitchell  <mark@codesourcery.com>
31858
31859         PR 33649
31860         * tree-ssa-pre.c (compute_antic): Correct loop bounds.
31861
31862 2009-01-02  Jakub Jelinek  <jakub@redhat.com>
31863
31864         PR middle-end/38690
31865         * tree-flow.h (op_code_prio, op_prio): New prototypes.
31866         * tree-pretty-print.c (op_code_prio): New function.
31867         (op_prio): No longer static.  Use op_code_prio.
31868         * gimple-pretty-print.c (dump_unary_rhs, dump_binary_rhs):
31869         Use op_prio and op_code_prio to determine if () should be
31870         printed around operand(s) or not.
31871
31872         * gimple-pretty-print.c (dump_unary_rhs, dump_binary_rhs,
31873         dump_gimple_call, dump_gimple_switch, dump_gimple_cond,
31874         dump_gimple_label, dump_gimple_try, dump_symbols, dump_gimple_phi,
31875         dump_gimple_mem_ops, dump_bb_header, dump_bb_end, pp_cfg_jump): Use
31876         pp_character instead of pp_string for single letter printing.
31877
31878 2009-01-02  Richard Sandiford  <rdsandiford@googlemail.com>
31879
31880         * doc/extend.texi: Fix '#pragma GCC option' typo.
31881
31882 2009-01-02  Richard Guenther  <rguenther@suse.de>
31883
31884         * doc/install.texi (--enable-checking): Mention different
31885         default for stage1.
31886         (--enable-stage1-checking): Document.
31887
31888 2009-01-01  Andrew Pinski  <pinskia@gmail.com>
31889
31890         PR middle-end/30142
31891         * tree-cfg.c (verify_expr): Add INDIRECT_REF case.  Change MODIFY_EXPR
31892         case to be an error.
31893
31894 2009-01-02  Ben Elliston  <bje@au.ibm.com>
31895
31896         * config/fp-bit.h (pack_d): Constify argument.
31897         * config/fp-bit.c (makenan): Constify return type. Remove casts.
31898         (isnan): Constify argument.
31899         (isinf): Likewise.
31900         (iszero): Likewise.
31901         (pack_d): Likewise.
31902         (_fpadd_parts): Constify return type.
31903         (_fpmul_parts): Likewise.
31904         (_fpdiv_parts): Likewise.
31905
31906 2009-01-01  Jakub Jelinek  <jakub@redhat.com>
31907
31908         PR c/36489
31909         * c-typeck.c (add_pending_init): Add IMPLICIT argument.  Only
31910         warn about overwriting initializer with side-effects or
31911         -Woverride-init if !IMPLICIT.
31912         (output_init_element): Likewise.  Pass IMPLICIT down to
31913         add_pending_init.
31914         (process_init_element): Add IMPLICIT argument.  Pass it down
31915         to output_init_element.
31916         (push_init_element, pop_init_level, set_designator): Adjust
31917         process_init_element callers.
31918         (set_nonincremental_init, set_nonincremental_init_from_string):
31919         Adjust add_pending_init callers.
31920         (output_pending_init_elements): Adjust output_init_element callers.
31921         * c-tree.h (process_init_element): Adjust prototype.
31922         * c-parser.c (c_parser_initelt, c_parser_initval): Adjust
31923         process_init_element callers.
31924
31925 \f
31926 Copyright (C) 2009 Free Software Foundation, Inc.
31927
31928 Copying and distribution of this file, with or without modification,
31929 are permitted in any medium without royalty provided the copyright
31930 notice and this notice are preserved.