OSDN Git Service

a06a556e81beb463900297d5464c592685c63869
[pf3gnuchains/gcc-fork.git] / gcc / ChangeLog
1 2009-08-12  Sebastian Pop  <sebastian.pop@amd.com>
2
3         * Makefile.in (graphite.o): Depends on PREDICT_H.
4         * graphite.c: Include predict.h.
5         (graphite_finalize): Call tree_estimate_probability.
6         * predict.c (predict_loops): Do not call scev_initialize and
7         scev_finalize.
8         (tree_estimate_probability_bb): New.
9         (tree_estimate_probability): Do not initialize loops: move that
10         code to the driver.  Call tree_estimate_probability_bb.
11         (tree_estimate_probability_driver): New.
12         (pass_profile): Use tree_estimate_probability_driver.
13         * predict.h (tree_estimate_probability): Declared.
14
15 2009-08-12  Sebastian Pop  <sebastian.pop@amd.com>
16
17         * graphite-clast-to-gimple.c (gloog): Add time to TV_GRAPHITE_CODE_GEN.
18         * graphite-dependences.c (graphite_legal_transform): Add time to
19         TV_GRAPHITE_DATA_DEPS.
20         (dependency_between_pbbs_p): Same.
21         * timevar.def (TV_GRAPHITE_DATA_DEPS, TV_GRAPHITE_CODE_GEN): New.
22
23 2009-08-12  Andrey Belevantsev  <abel@ispras.ru>
24
25         PR rtl-optimization/41033
26         * alias.c (nonoverlapping_component_refs_p): Punt when strict 
27         aliasing is disabled.
28
29 2009-08-11  Adam Nemet  <anemet@caviumnetworks.com>
30
31         * config/mips/predicates.md (qi_mask_operand, hi_mask_operand,
32         si_mask_operand, and_load_operand, low_bitmask_operand,
33         and_reg_operand, and_operand): New predicates.
34         * config/mips/constraints.md (Yb, Yh, Yw, Yz): New constraints.
35         * config/mips/mips.c (and_operands_ok): New function.
36         * config/mips/mips-protos.h (and_operands_ok): Declare it.
37         * config/mips/mips.md (move_type): Add ext_ins and logical.
38         (type): Handle them.
39         (and<mode>3): Use and_reg_operand as the second operand's
40         predicate.
41         (*and<mode>3): Add alternatives for lbu, lhu, lwu, <d>ext and
42         shift_shift.  Remove commutative constraint modifier.
43         (*and<mode>3_mips16): Add alternatives for lbu, lhu, lwu and
44         shift_shift.
45         (*clear_upper32_dext): Remove define_insn_and_split.
46         (*clear_upper32): Turn this define_insn_and_split ...
47         (splitter for ANDing register with 0xffff_ffff): .. into this.
48
49 2009-08-11  Adam Nemet  <anemet@caviumnetworks.com>
50
51         * combine.c (try_widen_shift_mode): Factor out code to check if an
52         integer constant is a low-order bitmask from here ...
53         * rtlanal.c (low_bitmask_len): ... to here.
54         * rtl.h (low_bitmask_len): Declare.
55
56 2009-08-11  Uros Bizjak  <ubizjak@gmail.com>
57
58         PR target/8603
59         * config/alpha/alpha.md (addsi3): Remove expander.
60         (addsi3): Rename from *addsi3_internal insn pattern.
61         (subsi3): Remove expander.
62         (subsi3): Rename from *subsi3_internal insn pattern.
63
64 2009-08-11  Douglas B Rupp  <rupp@gnat.com>
65
66         * config/alpha/alpha.c (alpha_init_builtins): Nullify FWRITE and
67         FWRITE_UNLOCKED.
68
69 2009-08-11  Vasiliy Fofanov  <fofanov@adacore.com>
70             Eric Botcazou  <botcazou@adacore.com>
71             Douglas B Rupp  <rupp@gnat.com>
72
73         * config/alpha/alpha.c (alpha_return_in_memory): On VMS, ensure
74         that records that fit in 64 bits are returned by immediate value,
75         as required by OpenVMS Calling Standard.
76         (function_value): Adjust for above modification.
77         (alpha_va_start) <TARGET_ABI_OPEN_VMS>: Use
78         virtual_incoming_args_rtx as base object, not next_arg.
79         * config/alpha/vms.h: (DEFAULT_PCC_STRUCT_RETURN): Define as 0.
80
81 2009-08-11  Ulrich Weigand  <Ulrich.Weigand@de.ibm.com>
82
83         * reload.c (find_reloads_subreg_address): Check the original
84         req_equiv_mem address to detect the case where an address is
85         not valid in the outer mode.
86
87 2009-08-11  Richard Guenther  <rguenther@suse.de>
88         
89         PR bootstrap/40788
90         * builtins.c (gimplify_va_arg_expr): Do not call SET_EXPR_LOCATION.
91
92 2009-08-10  Douglas B Rupp  <rupp@gnat.com>
93
94         * config/alpha/vms.h (OPTIMIZATION_OPTIONS): Remove
95         (OVERRIDE_OPTIONS): Incorporate removed OPTIMIZATION_OPTIONS.
96
97 2009-08-10  Olivier Hainque  <hainqueu@adacore.com>
98             Douglas B Rupp  <rupp@gnat.com>
99
100         * config/alpha/alpha.c (alpha_sa_size): Force procedure type to
101         PT_STACK when frame_pointer_needed on OpenVMS.
102         (alpha_pv_save_size, alpha_using_fp): Remove.
103         (alpha_vms_can_eliminate): New function. Support for CAN_ELIMINATE
104         with proper processing for PT_NULL.
105         (alpha_vms_initial_elimination_offset): New function. Support for
106         INITIAL_ELIMINATION_OFFSET with proper processing for PT_NULL.
107         (alpha_sa_size): Force procedure type to PT_STACK when
108         frame_pointer_needed on OpenVMS.
109         * config/alpha/alpha-protos.h (alpha_pv_save_size): Remove prototype.
110         (alpha_using_fp): Likewise.
111         (alpha_vms_can_eliminate): Add prototype.
112         (alpha_vms_initial_elimination_offset): Likewise.
113         * config/alpha/vms.h (CAN_ELIMINATE, INITIAL_ELIMINATION_OFFSET):
114         Call alpha_vms_can_eliminate and alpha_vms_initial_elimination_offset.
115
116 2009-08-10  Eric Botcazou  <botcazou@adacore.com>
117             Douglas B Rupp  <rupp@gnat.com>
118
119         * config/alpha/alpha.c (common_object_handler): New function.
120         (vms_attribute_table): Declare a single attribute "common_object".
121         (vms_output_aligned_decl_common): New global function.
122         (SECTION_VMS_OVERLAY): Delete.
123         (SECTION_VMS_GLOBAL): Likewise.
124         (SECTION_VMS_INITIALIZE): Likewise.
125         (vms_asm_named_section): Remove support for above flags.
126         (vms_section_type_flags): Delete.
127         (TARGET_SECTION_TYPE_FLAGS): Likewise.
128         * config/alpha/alpha-protos.h (vms_output_aligned_decl_common): New.
129         * config/alpha/vms.h (ASM_OUTPUT_ALIGNED_COMMON): Delete.
130         (ASM_OUTPUT_ALIGNED_DECL_COMMON): New macro.
131
132 2009-08-10  SUGIOKA Toshinobu  <sugioka@itonet.co.jp>
133
134         PR target/41015
135         * longlong.h [__sh__] (udiv_qrnnd): Add T register to clobber list.
136         (sub_ddmmss): Likewise.
137
138 2009-08-10  Andreas Tobler  <a.tobler@schweiz.org>
139
140         PR bootstrap/41018
141         * config/rs6000/freebsd.h: Define SVR4_ASM_SPEC. Adjust copyright
142         year.
143
144 2009-08-10  Ulrich Weigand  <Ulrich.Weigand@de.ibm.com>
145
146         PR target/37053
147         * reload1.c (reload_as_needed): Use cancel_changes to completely
148         undo a failed replacement attempt.
149
150 2009-08-10  Richard Guenther  <rguenther@suse.de>
151
152         PR middle-end/41006
153         * tree-ssa.c (useless_type_conversion_p_1): Fold into ...
154         (useless_type_conversion_p): ... here.  Require pointer targets
155         to be compatible.
156
157 2009-08-10  Dodji Seketeli  <dodji@redhat.com>
158
159         PR c++/40866
160         * tree-inline.c (copy_statement_list): The resulting copy shouldn't
161         loose the original type of the statement list.
162
163 2009-08-09  Douglas B Rupp  <rupp@gnat.com>
164
165         * config/alpha/alpha.c: Include libfuncs.h
166         (avms_asm_output_extern): New function.
167         (alpha_init_libfuncs): Init some decc libfuncs.
168         * config/alpha/alpha-protos.h (avms_asm_output_external): Declare.
169         * config/alpha/vms.h (ASM_OUTPUT_EXTERNAL): Define.
170         (DO_CRTL_NAMES): Define.
171         (LIB_SPEC): Remove.
172         * config/alpha/vms64.h: (POINTERS_EXTEND_UNSIGNED): Remove undef.
173         (LONG_TYPE_SIZE): Define.
174         (TARGET_OS_CPP_BUILTINS): Define with __LONG_POINTERS=1
175         (SUBTARGET_SWITCHES): Define malloc64 switch.
176         (TARGET_DEFAULT): Default MASK_MALLOC64 set.
177         (MASK_RETURN_ADDR): Define.
178         doc/invoke.texi (mmalloc64): Document switch.
179
180 2009-08-09  Olivier Hainque  <hainque@adacore.com>
181             Douglas B Rupp  <rupp@gnat.com>
182
183         * config/alpha/alpha.c (struct machine_function): New flag for VMS,
184         uses_condition_handler.
185         (alpha_expand_builtin_establish_vms_condition_handler): New expander.
186         (alpha_expand_builtin_revert_vms_condition_handler): New expander.
187         (enum alpha_builtin): New ALPHA_BUILTIN_REVERT_VMS_CONDITION_HANDLER
188         and ALPHA_BUILTIN_ESTABLISH_VMS_CONDITION_HANDLER values.
189         (code_for_builtin): New insn codes for the new alpha_builtins.
190         (alpha_init_builtins): Register the new functions as BUILT_IN_MD.
191         (alpha_sa_size): Account for uses_condition_handler.
192         (alpha_expand_prologue): Likewise.
193         (alpha_start_function): Likewise.
194         (alpha_expand_epilogue): Likewise.
195         * config/alpha/alpha-protos.h: Prototype the new alpha.c builtin
196         establish/revert expanders.
197         * config/alpha/alpha.h (DWARF_FRAME_REGNUM): Define.
198         * config/alpha/alpha.md (builtin_establish_vms_condition_handler):
199         New expander, resorting to the alpha.c associated function.
200         (builtin_revert_vms_condition_handler): Likewise.
201         * config/alpha/vms-gcc_shell_handler.c: New file. Implements
202         __gcc_shell_handler, the static VMS condition handler used as
203         an indirection wrapper to the current dynamically established
204         handler.
205         * config/alpha/vms-unwind.h: Complete rewrite.
206         * config/alpha/t-vms (LIB2FUNCS_EXTRA): Add vms-gcc_shell_handler.c
207         * config/alpha/vms.h (MD_UNWIND_SUPPORT):
208         
209 2009-08-09  Eric Botcazou  <botcazou@adacore.com>
210             Douglas B Rupp  <rupp@gnat.com>
211
212         * config/alpha/alpha.c (alpha_links): Add 'target' field.
213         (alpha_need_linkage): Handle aliases.  Return function symbol.
214         (alpha_use_linkage): Rename 'linkage' argument to 'func'.
215         Use ultimate alias target for the linkage name.
216         * config/alpha/alpha.md (movmemdi): Use the symbol returned
217         by alpha_need_linkage for the function symbol.
218         (setmemdi): Likewise.
219
220 2009-08-09  Douglas B Rupp  <rupp@gnat.com>
221
222         * config/alpha/alpha.c (TARGET_ASM_UNALIGNED_*_OP): Define if on VMS.
223         * config/alpha/vms.h (OBJECT_FORMAT_ELF): Define.
224         (ASM_WEAKEN_LABEL): Define.
225         (CRT_CALL_STATIC_FUNCTION): Define.
226         (STARTFILE_SPEC): Add crtbegin.o crtbeginS.o.
227         (ENDFILE_SPEC): Define.
228         (INIT_SECTION_ASM_OP): Define.
229         * config/alpha/vms-dwarf2eh.asm (__EH_FRAME_BEGIN__): Remove.
230         * config/alpha/t-vms (EXTRA_PARTS): Add crtbegin.o crtbeginS.o
231         crtend.o crtendS.o.
232         (MULTILIB_OSDIRNAMES): Define.
233         (shlib_version): Define.
234         (SHLIB_EXT): Define.
235         (SHLIB_OBJS): Define.
236         (SHLIB_NAME): Define.
237         (SHLIB_MULTILIB): Define.
238         (SHLIB_INSTALL): Define.
239         (SHLIB_SYMVEC): Define.
240         (SHLIB_SYMVECX2): Define.
241         (SHLIB_LINK): Define.
242
243 2009-08-09  Douglas B Rupp  <rupp@gnat.com>
244
245         * config/alpha/alpha.c (alpha_initialize_trampoline):
246         Initialize VMS trampoline IAW ABI for bounded procedure calls.
247         (alpha_start_function): Emit transfer address on nested functions
248         for VMS trampoline call.
249         * config/alpha/t-vms (LIB2FUNCS_EXTRA): Remove vms_tramp.asm
250         since no longer used.
251         * config/alpha/vms-tramp.asm: Remove.
252         * config/alpha/vms.h (TRAMPOLINE_TEMPLATE): Leave undefined
253         since now only data initialized at runtime.
254
255 2009-08-09  Douglas B Rupp  <rupp@gnat.com>
256
257         * config/alpha/vms.h (HANDLE_SYSV_PRAGMA): Define.
258         (LINK_GCC_C_SEQUENCE_SPEC): Define.
259         (MD_EXEC_PREFIX): Remove, no longer used.
260         (MD_STARTFILE_PREFIX): Likewise.
261         (INCLUDE_DEFAULTS): Likewise.
262         * config/alpha/t-vms:
263         (vms-dwarf2.o, vms-dwarf2eh.o): Use GCC_FOR_TARGET to compile.
264
265 2009-08-09  Richard Guenther  <rguenther@suse.de>
266
267         PR tree-optimization/41016
268         * tree-ssa-ifcombine.c (get_name_for_bit_test): Fix tuplification bug.
269         (operand_precision): Remove.
270         (integral_operand_p): Likewise.
271         (recognize_single_bit_test): Adjust.
272
273 2009-08-09  Richard Sandiford  <rdsandiford@googlemail.com>
274
275         * c-common.c (c_fully_fold_internal): Issue a warning if a binary
276         operation overflows.  Likewise non-cast unary arithmetic.
277         If one arm of a conditional expression is always taken,
278         inhibit evaluation warnings for the other arm.  Likewise inhibit
279         evaluation warnings for the second && or || operand if the first
280         operand is enough to determine the result.
281         * c-typeck.c (build_conditional_expr): Apply the same inhibition
282         rules here.
283         (build_binary_op): Prevent duplicate evaluation warnings.
284
285 2009-08-09  Richard Sandiford  <rdsandiford@googlemail.com>
286
287         * tree-out-of-ssa.c (insert_value_copy_on_edge): If the source
288         and destination have different modes, Use promote_mode to
289         determine the signedness of the conversion.  Assert that the
290         promoted source mode matches the destination mode.  Don't pass
291         the destination and destination mode to expand_expr if the source
292         mode is different.  Simplify conversion logic.
293
294 2009-08-09  Ira Rosen  <irar@il.ibm.com>
295
296         PR tree-optimization/41008
297         * tree-vect-loop.c (vect_is_simple_reduction): Get operands
298         from condition only in case it's a comparison. Adjust checks.   
299
300 2009-08-09  Bernd Schmidt  <bernd.schmidt@analog.com>
301
302         * tree-dfa.c (renumber_gimple_stmt_uids_in_blocks): New function.
303         * tree-flow.h (renumber_gimple_stmt_uids_in_blocks): Declare it.
304         * tree-ssa-loop-ivopts.c (comp_cost): Make COST an integer.
305         (enum iv_position): Add IP_AFTER_USE and IP_BEFORE_USE.
306         (dump_cand): Handle them.
307         (struct iv_cand): New members COST_STEP and AINC_USE.
308         (stmt_after_increment): Likewise.
309         (stmt_after_inc_pos): Renamed from stmt_after_ip_original_pos.  All
310         callers changed.  Use gimple_uid comparison instead of scanning.
311         (add_candidate_1): When looking for identical candidates, take
312         AINC_USE into account.  Set it for new candidates.
313         (force_expr_to_var_cost): Cast target_spill_cost to int.
314         (get_address_cost): New arguments STMT_AFTER_INC and MAY_AUTOINC.
315         All callers changed.  Check for availability of autoinc addressing
316         modes, both in general for a given mode, and in the specific use case.
317         (get_computation_cost_at): New argument CAN_AUTOINC.  All callers
318         changed.
319         (get_computation_cost): Likewise.
320         (autoinc_possible_for_pair, set_autoinc_for_original_candidates,
321         add_autoinc_candidates): New static functions.
322         (add_candidate): Call add_autoinc_candidates for candidates based on
323         a USE_ADDRESS use.
324         (find_iv_candidates): Call set_autoinc_for_original_candidates.
325         (determine_use_iv_cost_address): If we have an autoinc candidate at
326         the matching use, verify autoinc is possible and subtract the cost
327         of the candidate's step from the cost.
328         (determine_iv_cost): Record the cost of the increment in the COST_STEP
329         member of the candidate.
330         (tree_ssa_iv_optimize_loop): Swap the calls to determine_iv_costs and
331         determine_use_iv_costs.  Call renumber_gimple_stmt_uids_in_blocks.
332
333 2009-08-09  Douglas B Rupp  <rupp@gnat.com>
334
335         * config.build (ia64-hp-*vms*): New target.
336         (alpha64-dec-*vms*,alpha*-dec-*vms*): Fix for config/vms and unify
337         with ia64-hp-*vms*.
338         * config.gcc (ia64-hp-*vms*): New target.
339         (alpha64-dec-*vms*,alpha*-dec-*vms*): Fix for config/vms and unify
340         with ia64-hp-*vms*.
341         * config.host (ia64-hp-*vms*): New target.
342         (alpha64-dec-*vms*,alpha*-dec-*vms*): Fix for config/vms and unify
343         with ia64-hp-*vms*.
344
345 2009-08-08  Richard Guenther  <rguenther@suse.de>
346
347         PR tree-optimization/40991
348         * tree-ssa-pre.c (eliminate): Delay purging EH edges.
349
350 2009-08-08  Richard Sandiford  <rdsandiford@googlemail.com>
351
352         * combine.c (gen_lowpart_or_truncate): Exclude CONST_INTs from
353         mode check.  Do truncations in an integer mode.
354         (force_to_mode): Handle subregs for all mode types.  Only do
355         arithmetic simplifications on integer modes.
356
357 2009-08-07  Richard Guenther  <rguenther@suse.de>
358
359         PR tree-optimization/40999
360         * tree-ssa-ccp.c (get_symbol_constant_value): Handle CONST_DECLs.
361         (maybe_fold_reference): Lookup constant initializers.
362         (fold_gimple_assign): Likewise.
363
364 2009-08-07  Richard Guenther  <rguenther@suse.de>
365
366         * tree-ssa.c (useless_type_conversion_p_1): Only for types
367         that require structural equality defer to the langhook.
368
369 2009-08-07  Martin Jambor  <mjambor@suse.cz>
370
371         * ipa-prop.h (enum jump_func_type): New value IPA_JF_ANCESTOR, changed
372         comments.
373         (struct ipa_pass_through_data): New type.
374         (struct ipa_ancestor_jf_data): New type.
375         (union jump_func_value): Removed field formal_id, added fields
376         pass_through and ancestor.
377         (struct ipa_param_call_note): Changed type of formal_id to int from
378         unsigned.
379         * ipa-prop.c (ipa_print_node_jump_functions): Print pass through with
380         operations jump functions and ancestor jump functions.
381         (compute_complex_pass_through): New function.
382         (compute_scalar_jump_functions): Call compute_complex_pass_through,
383         reflect changes in the jump function strucutre.
384         (update_jump_functions_after_inlining): Ignore complex pass-through
385         and ancestor jump functions.
386         * ipa-cp.c (ipcp_lattice_from_jfunc): Added support for ancestor and
387         polynomial pass-through with operation jump functions.
388
389 2009-08-07  Jakub Jelinek  <jakub@redhat.com>
390
391         * dwarf2out.c (output_fde): When doing hot/cold partitioning, use
392         fde->dw_fde_begin as begin label instead of hot/cold label.
393         Use LLSDAC label instead of LLSDA for second section lsda.
394         (dwarf2out_do_cfi_startproc): Add SECOND argument.  Use LLSDAC
395         label instead of LLSDA if it is true.
396         (dwarf2out_begin_prologue, dwarf2out_switch_text_section): Adjust
397         callers.
398         * except.c (add_call_site, dw2_size_of_call_site_table): Add
399         SECTION argument.  Use it as index into crtl->eh.call_site_record
400         array.
401         (dw2_output_call_site_table): Likewise.  Add CS_FORMAT argument,
402         use it to determine how to print table entries instead of using
403         #ifdef HAVE_AS_LEB128.  For SECTION > 0 use hot resp. cold
404         label instead of normal begin label as base.
405         (sjlj_assign_call_site_values): Adjust add_call_site caller.
406         (convert_to_eh_region_ranges): When doing hot/cold partitioning,
407         ensure no EH range spans between sections and that landing pads
408         are always in the corresponding section.
409         (sjlj_size_of_call_site_table, sjlj_output_call_site_table): Adjust
410         for crtl->eh.call_site_record being an array rather than scalar.
411         (output_one_function_exception_table): New function, copied
412         from output_function_exception_table.  Adjust
413         dw2_size_of_call_site_table, dw2_output_call_site_table
414         callers.  For SECOND section use *C suffixed labels.
415         (output_function_exception_table): Call
416         output_one_function_exception_table and, when doing hot/cold
417         partitioning, also another time for the second section.
418         * opts.c: Include except.h.
419         (decode_options): Allow -freorder-blocks-and-partition with
420         exceptions, unless SJLJ or TARGET_UNWIND_INFO.
421         * Makefile.in (opts.o): Depend on $(EXCEPT_H).
422         * function.h (struct rtl_eh): Change call_site_record from
423         scalar into array of 2 elements.
424
425 2009-08-07  Martin Jambor  <mjambor@suse.cz>
426
427         * ipa-prop.c (count_formal_params_1): New function.
428         (ipa_get_vector_of_formal_parms): New function.
429         (get_vector_of_formal_parm_types): New function.
430         (ipa_modify_formal_parameters): New function.
431         (ipa_modify_call_arguments): New function.
432         (index_in_adjustments_multiple_times_p): New function.
433         (ipa_combine_adjustments): New function.
434         (ipa_dump_param_adjustments): New function.
435         * ipa-prop.h (struct ipa_parm_adjustment): New type.
436         (ipa_get_vector_of_formal_parms): Declare.
437         (ipa_modify_formal_parameters): Declare.
438         (ipa_modify_call_arguments): Declare.
439         (ipa_combine_adjustments): Declare.
440         (ipa_dump_param_adjustments): Declare.
441         (build_ref_for_offset): Declare.
442         * Makefile.in (tree-sra.o): Add ipa-prop.h to dependencies.
443         * tree-sra.c: Include ipa-prop.c.
444         (build_ref_for_offset): Make public. 
445
446 2009-08-06  Neil Vachharajani  <nvachhar@gmail.com>
447
448         * value-prof.c (init_pid_map): Replace xmalloc with XCNEWVEC.
449         
450 2009-08-06  Thomas Schwinge  <tschwinge@gnu.org>
451
452         * gcc/doc/extend.texi (__builtin_extract_return_address)
453         (__builtin_frob_return_address): Document.
454
455 2009-08-06  Paul Brook  <paul@codesourcery.com>
456
457         * config/arm/lib1funcs.asm (ARM_DIV_BODY): Add Thumb-2 implementation.
458         (udivsi3, aeabi_uidivmod, divsi3, aeabi_idivmod): Only use Thumb-1
459         implementation on ARMv6-M.
460
461 2009-08-06  Richard Earnshaw  <rearnsha@arm.com>
462
463         * doc/extend.texi (pcs): Document new attribute for ARM.
464
465 2009-08-06  Richard Earnshaw  <rearnsha@arm.com>
466
467         * arm.c (pcs_attribute_args): Comment out unsupported attribute
468         variants.
469
470 2009-08-06  Richard Earnshaw  <rearnsha@arm.com>
471
472         * arm.c (arm_handle_pcs_attribute): Pass the entire name object to
473         warning ().
474
475 2009-08-06  Richard Earnshaw  <rearnsha@arm.com>
476
477         * arm.c (arm_handle_pcs_attribute): Use %qE in warning.
478
479 2009-08-06  Richard Earnshaw  <rearnsha@arm.com>
480
481         Merge ARM/hard_vfp_branch to trunk.
482
483         2009-08-04  Richard Earnshaw  <rearnsha@arm.com>
484
485         * arm.c (libcall_eq): New function.
486         (libcall_hash): New function.
487         (add_libcall): New function.
488         (arm_libcall_uses_aapcs_base): New function.
489         (arm_libcall_value): Use arm_libcall_uses_aapcs_base to check for
490         libcalls using the base PCS.
491         (arm_init_cumulative_args): Likewise.
492
493         2009-07-20  Joseph Myers  <joseph@codesourcery.com>
494
495         * config/arm/arm.c (arm_libcall_value, arm_init_cumulative_args):
496         Use base ABI for conversion libfuncs between HFmode and SFmode.
497
498         2009-05-12  Joseph Myers  <joseph@codesourcery.com>
499
500         * config/arm/arm.c (aapcs_vfp_sub_candidate): Use V2SImode and
501         V4SImode as representatives of all 64-bit and 128-bit vector
502         types.  Allow vector types without vector modes.
503         (aapcs_vfp_is_call_or_return_candidate): Handle vector types
504         without vector modes like BLKmode.
505         (aapcs_vfp_allocate): Handle TImode for non-TARGET_NEON like
506         BLKmode.  Avoid unsupported vector modes or TImode moves for
507         non-TARGET_NEON.
508         (aapcs_vfp_allocate_return_reg): Likewise.
509         (arm_vector_mode_supported_p): Only support V2SImode, V4HImode and
510         V8QImode if TARGET_NEON || TARGET_IWMMXT.
511
512         2009-05-12  Joseph Myers  <joseph@codesourcery.com>
513
514         * config/arm/arm.c (arm_handle_pcs_attribute): New.
515         (arm_get_pcs_model): Pass attribute arguments to
516         arm_pcs_from_attribute.
517         (arm_init_cumulative_args): Use base AAPCS for conversions from
518         floating-point types to DImode.
519         (arm_attribute_table): Add pcs attribute.
520         (arm_handle_pcs_attribute): New.
521         * config/arm/bpabi.h (DECLARE_LIBRARY_RENAMES): When renaming
522         conversions from floating-point types to DImode, also declare them
523         to use base AAPCS and declare functions they call to use base
524         AAPCS and their RTABI names.
525
526         2009-05-12  Joseph Myers  <joseph@codesourcery.com>
527
528         * doc/invoke.texi (-mfloat-abi=@var{name}): Remove statement about
529         -mfloat-abi=hard not being supported for VFP.
530
531         2009-05-11  Kazu Hirata  <kazu@codesourcery.com>
532
533         * config/sparc/sparc.c (sparc_emit_float_lib_cmp): Pass a libcall
534         SYMBOL_REF to hard_libcall_value.
535
536         2009-03-05  Joseph Myers  <joseph@codesourcery.com>
537             Richard Earnshaw  <rearnsha@arm.com>
538
539         * config/arm/arm.c (aapcs_layout_arg): Once a co-processor argument
540         has been put on the stack, all remaining co-processory arguments for
541         that co-processor also go on the stack.
542
543         2009-03-05  Joseph Myers  <joseph@codesourcery.com>
544
545         * config/arm/arm.c (arm_return_in_memory): Handle returning
546         vectors of suitable size in registers also for AAPCS case.
547
548         2009-01-13  Richard Earnshaw <rearnsha@arm.com>
549
550         * doc/tm.texi (TARGET_LIBCALL_VALUE): Add missing end statement.
551
552         2008-12-09  Richard Earnshaw <rearnsha@arm.com>
553
554         ARM Hard-VFP calling convention
555         * target-def.h (TARGET_LIBCALL_VALUE): New hook.
556         * target.h (gcc_target): Add libcall_value to table of call hooks.
557         * targhooks.h (default_libcall_value): Default implementation.
558         * targhooks.c (default_libcall_value): Likewise.
559         * doc/tm.texi (TARGET_LIBCALL_VALUE): Document it.
560         * optabs.c (expand_unop): Use it.
561         * expr.h (hard_libcall_value): Pass the function RTX through.
562         * calls.c (emit_library_call_value_1): Update call to 
563         hard_libcall_value.
564         * explow.c (hard_libcall_value): Use new target hook.
565         * testsuite/lib/target-supports.exp
566         (check_effective_target_arm_hard_vfp_ok): New hook.
567         (check_effective_target_arm_neon_ok): Improve test for neon
568         availability.
569         * testsuite/gcc.target/arm/eabi1.c: Only run test in base variant.
570         * config/arm/arm.c: Include cgraph.h
571         (TARGET_FUNCTION_VALUE): Override default hook.
572         (arm_pcs_default): New variable.
573         (arm_override_options): Don't fault hard calling convention with VFP.
574         Add support for AAPCS variants.
575         (arm_function_value): Make static.  Handle AAPCS variants.
576         (arm_libcall_value): New function.
577         (arm_apply_result_size): Handle VFP registers in results.
578         (arm_return_in_memory): Rework all AAPCS variants; handle hard-vfp
579         conventions.
580         (pcs_attribute_args): New variable.
581         (arm_pcs_from_attribute): New function.
582         (arm_get_pcs_model): New function.
583         (aapcs_vfp_cum_init): New function.
584         (aapcs_vfp_sub_candidate): New function.
585         (aapcs_vfp_is_return_candidate): New function.
586         (aapcs_vfp_is_call_candidate): New function.
587         (aapcs_vfp_allocate): New function.
588         (aapcs_vfp_allocate_return_reg): New function.
589         (aapcs_vfp_advance): New function.
590         (aapcs_cp_arg_layout): New variable.
591         (aapcs_select_call_coproc): New function.
592         (aapcs_select_return_coproc): New function.
593         (aapcs_allocate_return_reg): New function.
594         (aapcs_libcall_value): New function.
595         (aapcs_layout_arg): New function.
596         (arm_init_cumulative_args): Initialize AAPCS args data.
597         (arm_function_arg): Handle AAPCS variants using new interface.
598         (arm_arg_parital_bytes): Likewise.
599         (arm_function_arg_advance): New function.
600         (arm_function_ok_for_sibcall): Ensure that sibling calls agree on
601         calling conventions.
602         (arm_setup_incoming_varargs): Handle new AAPCS args data.
603         * arm.h (NUM_VFP_ARG_REGS): Define.
604         (LIBCALL_VALUE): Update.
605         (FUNCTION_VALUE): Delete.
606         (FUNCTION_VALUE_REGNO_P): Add VFP regs.
607         (arm_pcs): New enum.
608         (CUMULATIVE_ARGS): New data to support AAPCS argument marshalling.
609         (FUNCTION_ARG_ADVANCE): Call arm_function_arg_advance.
610         (FUNCTION_ARG_REGNO_P): Add VFP regs.
611         * arm-protos.h (arm_function_arg_advance): Add.
612         (aapcs_libcall_value): Add.
613         (arm_function_value): Delete.
614
615 2009-08-06  Uros Bizjak  <ubizjak@gmail.com>
616             H.J. Lu  <hongjiu.lu@intel.com>
617
618         PR target/40957
619         * config/i386/i386.c (standard_sse_mode_p): Remove.
620         (standard_sse_constant_p): Return 2 for integer mode
621         vector_all_ones_operand when SSE2 is enabled.
622         (standard_sse_constant_opcode)<case 2>: Always return [v]pcmpeqd.
623         (ix86_expand_vector_move): Do not check for negative values from
624         standard_sse_constant_p.
625
626 2009-08-06  Richard Guenther  <rguenther@suse.de>
627
628         * tree-ssa.c (useless_type_conversion_p_1): Make function and
629         array type comparisons frontend independent.
630         * Makefile.in (tree-ssa.o): Add $(TARGET_H) dependency.
631         * tree-ssa-sccvn.c (copy_reference_ops_from_ref): Always fill
632         out array reference lower bound and element size operands.
633         (ao_ref_init_from_vn_reference): Properly compute the offset
634         for ARRAY_RANGE_REF.
635         (vn_reference_fold_indirect): Fill out array reference lower
636         bound and element size operands.
637         * tree-ssa-pre.c (phi_translate_1): Fail if we have to translate
638         a non gimple valued reference operand which can happen for
639         array reference lower bound or element size.
640         (create_component_ref_by_pieces_1): Properly generate the
641         element size operand for array references.
642
643 2009-08-06  Richard Guenther  <rguenther@suse.de>
644
645         PR tree-optimization/40964
646         * tree.c (iterative_hash_host_wide_int): Export.
647         * tree.h (iterative_hash_host_wide_int): Declare.
648         * tree-ssa-structalias.c (heapvar_map): New struct.
649         (heapvar_map_eq): New function.
650         (heapvar_map_hash): Likewise.
651         (heapvar_lookup): Adjust.
652         (heapvar_insert): Likewise.
653         (make_constraint_from_heapvar): Allow multiple heap variables
654         per decl at different offsets.
655         (init_alias_heapvars): Adjust.
656
657 2009-08-04  David Daney  <ddaney@caviumnetworks.com>
658
659         * config/mips/mips.h (TARGET_SYNC_AFTER_SC): New macro.
660         * mips_output_sync_loop (mips_output_sync_loop): Only emit
661         trailing sync if TARGET_SYNC_AFTER_SC.
662
663 2009-08-05  David Daney  <ddaney@caviumnetworks.com>
664
665         * gcc/config/mips/sync.md (sync_compare_and_swap<mode>,
666         compare_and_swap_12, sync_add<mode>, sync_<optab>_12,
667         sync_old_<optab>_12, sync_new_<optab>_12, sync_nand_12,
668         sync_old_nand_12, sync_new_nand_12, sync_sub<mode>,
669         sync_old_add<mode>, sync_old_sub<mode>, sync_new_add<mode>,
670         sync_new_sub<mode>, sync_<optab><mode>, sync_old_<optab><mode>,
671         sync_new_<optab><mode>, sync_nand<mode>, sync_old_nand<mode>,
672         sync_new_nand<mode>, sync_lock_test_and_set<mode>,
673         test_and_set_12): Rewrite calls to mips_output_sync_loop.
674         * gcc/config/mips/mips-protos.h (mips_output_sync_loop): Make
675         the prototype declaration match the definition.
676         * gcc/config/mips/mips.c (mips_output_sync_loop):  Emit sync
677         instructions explicitly.  Add barrier_before and operands
678         parameters.
679         * gcc/config/mips/mips.h (MIPS_COMPARE_AND_SWAP,
680         MIPS_COMPARE_AND_SWAP_12, MIPS_SYNC_OP, MIPS_SYNC_OP_12,
681         MIPS_SYNC_OLD_OP_12, MIPS_SYNC_NEW_OP_12, MIPS_SYNC_OLD_OP,
682         MIPS_SYNC_NEW_OP, MIPS_SYNC_NAND, MIPS_SYNC_OLD_NAND,
683         MIPS_SYNC_NEW_NAND, MIPS_SYNC_EXCHANGE,
684         MIPS_SYNC_EXCHANGE_12): Remove sync instructions.
685
686 2009-08-05  Andrew Pinski  <pinskia@gmail.com>
687
688         * tree-ssa-alias.c: Fix intervals to use [) syntax.
689
690 2009-08-05  Uros Bizjak  <ubizjak@gmail.com>
691             Mikulas Patocka  <mikulas@artax.karlin.mff.cuni.cz>
692
693         PR target/40906
694         * config/i386/i386.c (ix86_split_long_move): Fix push of multi-part
695         source operand.
696
697 2009-08-05  Jakub Jelinek  <jakub@redhat.com>
698
699         PR rtl-optimization/40924
700         * dse.c (canon_address): Before calling cselib_expand_value_rtx
701         make sure canon_rtx (mem_address) isn't simpler than
702         canon_rtx (expanded_mem_address).
703
704 2009-08-05  Li Feng  <nemokingdom@gmail.com>
705
706         * graphite-sese-to-poly.c (build_pbb_drs): Remove build alias set
707         for each poly_bb_p.
708         (build_scop_drs): Build alias set for each SCoP.
709
710 2009-08-04  Sandra Loosemore  <sandra@codesourcery.com>
711
712         * doc/invoke.texi (MIPS Options): Document new 1004K -march options.
713         * config/mips/mips.c (mips_cpu_info_table): Add 1004K cores.
714         * config/mips/mips.h (MIPS_ISA_LEVEL_SPEC): Add pattern for 1004K.
715         (MIPS_ARCH_FLOAT_SPEC): Likewise.
716         (BASE_DRIVER_SELF_SPECS): Likewise.
717
718 2009-08-04  Andrew Pinski  <pinskia@gmail.com>
719
720         * tree-ssa-alias.c: Fix some comment typos.
721
722 2009-08-04  Kaz Kojima  <kkojima@gcc.gnu.org>
723
724         * config/sh/linux-atomic.asm (ATOMIC_BOOL_COMPARE_AND_SWAP,
725         ATOMIC_OP_AND_FETCH, ATOMIC_COMBOP_AND_FETCH): Define.
726
727 2009-08-03  Janis Johnson  <janis187@us.ibm.com>
728
729         PR c/39902
730         * simplify-rtx.c (simplify_binary_operation_1): Disable
731         simplifications for decimal float operations.
732
733 2009-08-03  Jakub Jelinek  <jakub@redhat.com>
734
735         PR middle-end/40943
736         * tree-ssa.c (warn_uninitialized_var): Even on LHS warn for
737         operand of INDIRECT_REF.
738
739 2009-08-03  Uros Bizjak  <ubizjak@gmail.com>
740
741         * config/alpha/alpha.c (alpha_legitimate_constant_p): Reject CONST
742         constants referencing TLS symbols.
743
744 2009-08-03  SUGIOKA Toshinobu  <sugioka@itonet.co.jp>
745
746         * config/sh/linux-atomic.asm (ATOMIC_COMPARE_AND_SWAP): Rename
747         __sync_compare_and_swap_* to __sync_val_compare_and_swap_*.
748
749 2009-08-03  Richard Guenther  <rguenther@suse.de>
750
751         * tree.c (make_vector_type): Build a main variant first,
752         get the canonical one and then build the variant.
753         * tree-ssa.c (useless_type_conversion_p_1): Handle
754         fixed-point types.
755         (useless_type_conversion_p): Conversions to pointers to
756         incomplete record types are useless.
757
758 2009-08-03  Richard Guenther  <rguenther@suse.de>
759
760         * tree-cfg.c (pass_warn_unused_result): Mark name that no dump
761         file will be created.
762         * omp-low.c (pass_diagnose_omp_blocks): Likewise.
763         * toplev.c (compile_file): Adjust comment.
764
765 2009-08-03  Kaz Kojima  <kkojima@gcc.gnu.org>
766
767         * config/sh/sh-protos.h (sh_promote_function_mode): Remove.
768         * config/sh/sh.c (sh_promote_function_mode): Wrap long lines.
769         (TARGET_PROMOTE_FUNCTION_MODE): Define.
770         (TARGET_PROMOTE_FUNCTION_ARGS): Remove.
771         (sh_promote_function_mode): Fix typo.
772
773 2009-08-03  Andreas Krebbel  <krebbel1@de.ibm.com>
774
775         * explow.c (promote_mode): Mark TYPE and PUNSIGNEDP as possibly unused.
776
777 2009-08-02  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
778
779         * pa.c (pa_promote_function_mode): Remove ATTRIBUTE_UNUSED from
780         declaration arguments.
781
782 2009-08-02  Uros Bizjak  <ubizjak@gmail.com>
783
784         * config/i386/i386.c (ix86_expand_fp_compare): Use const0_rtx instead
785         of GEN_INT (0x00) and const1_rtx instead of GEN_INT (0x01).
786         (ix86_split_ashl): Ditto.
787         (ix86_expand_vector_init_one_nonzero): Ditto.
788         (ix86_expand_vector_set): Ditto.
789         (ix86_expand_reduc_v4sf): Ditto.
790
791 2009-08-02  Paolo Bonzini  <bonzini@gnu.org>
792
793         * explow.c (promote_function_mode): Remove assert.
794         * config/sh/sh.c (sh_promote_function_mode): Declare.
795
796 2009-08-01  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
797
798         * config/pa/pa.c (pa_promote_function_mode): Declare.
799         Change to static.  Fix promote_mode call.
800
801         * gthr-dce.h (CONST_CAST2): Define if not defined.
802         (__gthread_setspecific): Use CONST_CAST2 to fix warning.
803
804         * config.gcc (hppa[12]*-*-hpux10*): Add stdint support.
805
806 2009-08-01  Paolo Bonzini  <bonzini@gnu.org>
807
808         * expr.c (store_constructor): Use promote_decl_mode.  Remove
809         now write-only variable unsignedp.
810         (expand_expr_real_1): Use promote_decl_mode.
811         * expr.h (promote_function_mode, promote_decl_mode): New.
812         (promote_mode): Remove last argument.
813         * function.c (assign_temp): Drop last argument of promote_mode.
814         (assign_parm_find_data_types): Use promote_function_mode.
815         (assign_parm_setup_reg): Likewise.
816         (expand_function_end): Use promote_function_mode.
817         * calls.c (initialize_argument_information): Use promote_function_mode.
818         (precompute_arguments): Use promote_mode instead of checking if
819         only PROMOTE_FUNCTION_MODE is defined.
820         (expand_call): When making sibcall decisions, use promote_function_mode.
821         Below, remove an if for targetm.calls.promote_function_return and
822         and use promote_function_mode.
823         (emit_library_call_value_1): Use promote_function_mode, fix bug
824         where promote_mode was passed FOR_CALL == 0 for a return value in an
825         assertion.
826         * cfgexpand.c (expand_one_register_var): Use promote_decl_mode.
827         * explow.c (promote_function_mode, promote_decl_mode): New.
828         (promote_mode): Keep only the FOR_CALL == 0 case.
829         * combine.c (setup_incoming_promotion): Remove test of
830         promote_function_args.  Use promote_function_mode.
831         * stmt.c (expand_value_return): Use promote_decl_mode.
832         (expand_decl): Use promote_decl_mode.
833
834         * expr.c (store_constructor): Use promote_decl_mode.  Remove
835         now write-only variable unsignedp.
836         (expand_expr_real_1): Use promote_decl_mode.
837         * expr.h (promote_function_mode, promote_decl_mode): New.
838         (promote_mode): Remove last argument.
839         * function.c (assign_temp): Drop last argument of promote_mode.
840         (assign_parm_find_data_types): Use promote_function_mode.
841         (assign_parm_setup_reg): Likewise.
842         (expand_function_end): Use promote_function_mode.
843         * calls.c (initialize_argument_information): Use promote_function_mode.
844         (precompute_arguments): Use promote_mode instead of checking if
845         only PROMOTE_FUNCTION_MODE is defined.
846         (expand_call): When making sibcall decisions, use promote_function_mode.
847         Below, remove an if for targetm.calls.promote_function_return and
848         and use promote_function_mode.
849         (emit_library_call_value_1): Use promote_function_mode, fix bug
850         where promote_mode was passed FOR_CALL == 0 for a return value in an
851         assertion.
852         * cfgexpand.c (expand_one_register_var): Use promote_decl_mode.
853         * explow.c (promote_function_mode, promote_decl_mode): New.
854         (promote_mode): Keep only the FOR_CALL == 0 case.
855         * combine.c (setup_incoming_promotion): Remove test of
856         promote_function_args.  Use promote_function_mode.
857         * stmt.c (expand_value_return): Use promote_decl_mode.
858         (expand_decl): Use promote_decl_mode.
859
860         * explow.c (promote_function_mode): Just call the target hook.
861         * targhooks.c (default_promote_function_mode,
862         default_promote_function_mode_always_promote): New.
863         * targhooks.h (default_promote_function_mode,
864         default_promote_function_mode_always_promote): Declare.
865         * target.h (promote_function_args, promote_function_return): Remove.
866         (promote_function_mode): New.
867         * target-def.h (TARGET_PROMOTE_FUNCTION_ARGS,
868         TARGET_PROMOTE_FUNCTION_RETURN): Remove.
869         (TARGET_PROMOTE_FUNCTION_MODE): New.
870         (TARGET_CALLS): Adjust.
871         * system.h (TARGET_PROMOTE_FUNCTION_ARGS,
872         TARGET_PROMOTE_FUNCTION_RETURN, PROMOTE_FUNCTION_MODE): Poison.
873
874         * config/s390/s390.h (PROMOTE_FUNCTION_MODE): Move...
875         * config/s390/s390.c (s390_promote_function_mode): ... here,
876         with pointer handling.
877         (TARGET_PROMOTE_FUNCTION_MODE): Define.
878         (TARGET_PROMOTE_FUNCTION_ARGS, TARGET_PROMOTE_FUNCTION_RETURN): Remove.
879
880         * config/sparc/sparc.h (PROMOTE_FUNCTION_MODE): Move...
881         * config/sparc/sparc.c (sparc_promote_function_mode): ... here,
882         with pointer handling.
883         (TARGET_PROMOTE_FUNCTION_MODE): Define.
884         (TARGET_PROMOTE_FUNCTION_ARGS, TARGET_PROMOTE_FUNCTION_RETURN): Remove.
885         
886         * config/sh/sh-protos.h (sh_promote_function_mode): New.
887         * config/sh/sh.c (sh_promote_function_mode): New.
888         (TARGET_PROMOTE_FUNCTION_MODE): Define.
889         (TARGET_PROMOTE_FUNCTION_ARGS, TARGET_PROMOTE_FUNCTION_RETURN): Remove.
890
891         * config/cris/cris.h (PROMOTE_FUNCTION_MODE): Move...
892         * config/cris/cris.c (cris_promote_function_mode): ... here.
893         (TARGET_PROMOTE_FUNCTION_MODE): Define.
894         (TARGET_PROMOTE_FUNCTION_ARGS): Remove.
895
896         * config/mmix/mmix.h (PROMOTE_FUNCTION_MODE): Move...
897         * config/mmix/mmix.c (mmix_promote_function_mode): ... here.
898         (TARGET_PROMOTE_FUNCTION_MODE): Define.
899         (TARGET_PROMOTE_FUNCTION_ARGS): Remove.
900
901         * config/arm/arm.h (PROMOTE_FUNCTION_MODE): Move...
902         * config/arm/arm.c (arm_promote_function_mode): ... here, without
903         complex type handling.
904         (TARGET_PROMOTE_FUNCTION_MODE): Define.
905         (TARGET_PROMOTE_FUNCTION_ARGS, TARGET_PROMOTE_FUNCTION_RETURN): Remove.
906
907         * config/pa/pa.c (pa_promote_function_mode): New.
908         (TARGET_PROMOTE_FUNCTION_MODE): Define.
909         (TARGET_PROMOTE_FUNCTION_RETURN): Remove.
910
911         * config/alpha/alpha.c (TARGET_PROMOTE_FUNCTION_ARGS,
912         TARGET_PROMOTE_FUNCTION_RETURN): Remove.
913         (TARGET_PROMOTE_FUNCTION_MODE): Define equivalently.
914         * config/xtensa/xtensa.c: Likewise.
915         * config/stormy16/stormy16.c: Likewise.
916         * config/iq2000/iq2000.c: Likewise.
917         * config/rs6000/rs6000.c: Likewise.
918         * config/picochip/picochip.c: Likewise.
919         * config/arc/arc.c: Likewise.
920         * config/mcore/mcore.c: Likewise.
921         * config/score/score.c: Likewise.
922         * config/mips/mips.c: Likewise.
923         * config/bfin/bfin.c: Likewise.
924         * config/ia64/ia64.c: Likewise (disabled though).
925
926         * config/frv/frv.h: Remove pointless remark.
927
928         * doc/tm.texi (PROMOTE_FUNCTION_MODE,
929         TARGET_PROMOTE_FUNCTION_ARGS,
930         TARGET_PROMOTE_FUNCTION_RETURN): Consolidate into...
931         (TARGET_PROMOTE_FUNCTION_MODE): ... this.
932
933 2009-08-01  Sebastian Pop  <sebastian.pop@amd.com>
934
935         * doc/invoke.texi (-fgraphite-force-parallel): Renamed
936         -floop-parallelize-all.
937         * toplev.c (process_options): Rename flag_graphite_force_parallel to
938         flag_loop_parallelize_all.
939         * tree-ssa-loop.c (gate_graphite_transforms): Same.
940         * graphite.c (graphite_transform_loops): Same.
941         * common.opt: Same.
942         * graphite-poly.c (apply_poly_transforms): Same.
943
944 2009-07-31  Richard Earnshaw  <rearnsha@arm.com>
945
946         PR tree-optimization/40914
947         * ipa-prop.c (ipa_get_ptr_load_param): New argument use_delta,
948         if set, then check the delta field of the PMF record.
949         (ipa_get_stmt_member_ptr_load_param): Propagate new param use_delta.
950         (ipa_analyze_call_uses): Handle machines where the vbit for a PMF
951         call is stored in the delta.
952
953 2009-07-31  Adam Nemet  <anemet@caviumnetworks.com>
954
955         * config/mips/mips.md (*clear_upper32_dext): New pattern.
956
957 2009-07-31  Uros Bizjak  <ubizjak@gmail.com>
958
959         * config/i386/bsd.h (ASM_BYTE): New define.
960         * config/i386/darwin.h (ASM_BYTE): Rename from ASM_BYTE_OP.
961         * config/i386/att.h (ASM_BYTE): New define. Use ASM_BYTE instead of
962         .byte.  Use fputs or putc instead of fprintf where appropriate.
963         * config/i386/i386-interix.h: Use ASM_BYTE instead of .byte.  Use
964         fputs or putc instead of fprintf where appropriate.
965         * config/i386/i386elf.h: Ditto.
966         * config/i386/sysv4.h: Ditto.
967         
968         * config/i386/i386.c (TARGET_ASM_BYTE_OP): New define.
969         * config/i386/i386.md (x86_sahf_1): Use ASM_BYTE instead of .byte.
970         (*tls_global_dynamic_64): Ditto.
971
972 2009-07-31  Christian Bruel  <christian.bruel@st.com>   
973
974         * gcc/config.gcc (sh*-*-elf): test with_libgloss.
975         
976 2009-07-31  Ramana Radhakrishnan  <ramana.radhakrishnan@arm.com>
977
978         * config/arm/arm.c (arm_arm_address_cost): Fix typo. 
979         Remove dead code for MINUS.
980
981 2009-07-31  Anthony Green  <green@moxielogic.com>
982
983         * config/moxie/moxie.c (moxie_expand_prologue): Use $r5 instead of
984         $r12 in prologue.
985         (moxie_expand_epilogue): Ditto for epilogue.
986         (moxie_setup_incoming_varargs): ABI change.  Use 5 registers for
987         incoming arguments.
988         (moxie_function_arg): Ditto.
989         (moxie_pass_by_reference): Ditto.
990         (moxie_arg_partial_bytes): Ditto.
991         * config/moxie/moxie.h (CALL_USED_REGISTERS): Ditto.
992         (FUNCTION_ARG_ADVANCE) Ditto.
993         (REG_PARM_STACK_SPACE) Ditto.
994         (FUNCTION_ARG_REGNO_P) Dito.
995
996         * config.gcc: Add moxie linux config support.
997         * gcc/config/moxie/uclinux.h: New file.
998
999 2009-07-31  DJ Delorie  <dj@redhat.com>
1000
1001         * config/sh/sh.md (UNSPECV_SP_SWITCH_B): New.
1002         (UNSPECV_SP_SWITCH_E): New.
1003         (sp_switch_1): Change to an unspec.
1004         (sp_switch_2): Change to an unspec.  Don't use post-inc when we
1005         replace $r15.
1006         * config/sh/sh.c (sh_expand_prologue): Use the constant pool to
1007         reference the new stack's address
1008
1009 2009-07-30  Sebastian Pop  <sebastian.pop@amd.com>
1010
1011         * Makefile.in (OBJS-common): Added dependence on graphite-blocking.o,
1012         graphite-clast-to-gimple.o, graphite-dependences.o,
1013         graphite-interchange.o, graphite-poly.o, graphite-ppl.o,
1014         graphite-scop-detection.o, graphite-sese-to-poly.o, and sese.o.
1015         (graphite-blocking.o,
1016         graphite-clast-to-gimple.o, graphite-dependences.o,
1017         graphite-interchange.o, graphite-poly.o, graphite-ppl.o,
1018         graphite-scop-detection.o, graphite-sese-to-poly.o, and sese.o): New.
1019         * cfgloop.c (alloc_loop): Set loop->can_be_parallel to false.
1020         * cfgloop.h (struct loop): Add can_be_parallel field.
1021         * common.opt (fgraphite-identity): Moved up.
1022         (fgraphite-force-parallel): New flag.
1023         * graphite.c: Rewrite.
1024         * graphite.h: Rewrite.
1025         * passes.c (init_optimization_passes): Schedule a pass of DCE and LIM
1026         after Graphite.
1027         * toplev.c (graphite_out_file): New file descriptor.
1028         (graphite_in_file): New.
1029         (process_options): flag_graphite_force_parallel cannot be used without
1030         Graphite.
1031         * tree-ssa-loop.c: Include toplev.h.
1032         (gate_graphite_transforms): Enable flag_graphite for
1033         flag_graphite_force_parallel.
1034
1035 2009-07-30  Sebastian Pop  <sebastian.pop@amd.com>
1036
1037         * ChangeLog.graphite: New.
1038         * graphite-blocking.c: New.
1039         * graphite-clast-to-gimple.c: New.
1040         * graphite-clast-to-gimple.h: New.
1041         * graphite-dependences.c: New.
1042         * graphite-dependences.h: New.
1043         * graphite-interchange.c: New.
1044         * graphite-poly.c: New.
1045         * graphite-poly.h: New.
1046         * graphite-ppl.c: New.
1047         * graphite-ppl.h: New.
1048         * graphite-scop-detection.c: New.
1049         * graphite-scop-detection.h: New.
1050         * graphite-sese-to-poly.c: New.
1051         * graphite-sese-to-poly.h: New.
1052         * sese.c: New.
1053         * sese.h: New.
1054
1055 2009-07-30  Sebastian Pop  <sebastian.pop@amd.com>
1056
1057         * tree-chrec.c (evolution_function_right_is_integer_cst): New.
1058         * tree-chrec.h (evolution_function_right_is_integer_cst): Declared.
1059
1060 2009-07-30  Sebastian Pop  <sebastian.pop@amd.com>
1061
1062         * tree-chrec.c (operator_is_linear): Handle BIT_NOT_EXPR.
1063         (scev_is_linear_expression): Return false if the evolution is not
1064         affine multivariate.
1065
1066 2009-07-30  Sebastian Pop  <sebastian.pop@amd.com>
1067
1068         * tree-data-ref.c (graphite_find_data_references_in_stmt): New.
1069         * tree-data-ref.h (graphite_find_data_references_in_stmt): Declared.
1070
1071 2009-07-30  Sebastian Pop  <sebastian.pop@amd.com>
1072
1073         * tree-data-ref.c (debug_data_references): New.
1074         (debug_data_reference): New.
1075         * tree-data-ref.h (debug_data_references): Declared.
1076         (debug_data_reference): Declared.
1077
1078 2009-07-30  Sebastian Pop  <sebastian.pop@amd.com>
1079
1080         * tree-data-ref.c (stmt_simple_memref_p: Removed.
1081         * tree-data-ref.h (scop_p): Removed.
1082         (struct data_reference): Remove field scop.
1083         (DR_SCOP): Removed.
1084         (stmt_simple_memref_p): Removed.
1085
1086 2009-07-30  Sebastian Pop  <sebastian.pop@amd.com>
1087
1088         * cfgloop.h (create_empty_loop_on_edge): Pass an extra argument.
1089         * cfgloopmanip.c (create_empty_loop_on_edge): Leave the loop_latch
1090         basic block empty.
1091
1092 2009-07-30  Sebastian Pop  <sebastian.pop@amd.com>
1093
1094         * doc/invoke.texi (-fgraphite-force-parallel): Documented.
1095
1096 2009-07-30  Sebastian Pop  <sebastian.pop@amd.com>
1097
1098         * doc/invoke.texi (-fgraphite-identity): Documented.
1099
1100 2009-07-30  Sebastian Pop  <sebastian.pop@amd.com>
1101
1102         * tree-scalar-evolution.c: Fix comment.
1103         (instantiate_scev_1): Return unknow from scev instantiation if the
1104         result is not above instantiate_below.
1105
1106 2009-07-30  Sebastian Pop  <sebastian.pop@amd.com>
1107
1108         * tree-scalar-evolution.c (compute_overall_effect_of_inner_loop): Not
1109         static anymore.  Instantiate the symbols that may have been introduced
1110         by chrec_apply.
1111         * tree-scalar-evolution.h (compute_overall_effect_of_inner_loop):
1112         Declared.
1113
1114 2009-07-30  DJ Delorie  <dj@redhat.com>
1115
1116         * config/mep/mep.c (mep_asm_init_sections): Add section flags and
1117         .vliw directive to VLIW sections.
1118
1119 2009-07-30  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
1120
1121         * Makefile.in (AUTOCONF, ACLOCAL, ACLOCAL_AMFLAGS, aclocal_deps):
1122         New variables.
1123         ($(srcdir)/configure, $(srcdir)/aclocal.m4): New rules.
1124         (AUTOHEADER): New variable.
1125         ($(srcdir)/cstamp-h.in): Use it.
1126
1127 2009-07-30  Michael Meissner  <meissner@linux.vnet.ibm.com>
1128             Pat Haugen  <pthaugen@us.ibm.com>
1129             Revital Eres <ERES@il.ibm.com>
1130
1131         * config/rs6000/vector.md (VEC_F): Add VSX support.
1132         (VEC_A): Ditto.
1133         (VEC_N): Ditto.
1134         (mov<mode>): Ditto.
1135         (vector_load_<mode>): Ditto.
1136         (vector_store_<mode>): Ditto.
1137         (vector GPR move split): Ditto.
1138         (vec_reload_and_plus_<mptrsize>): Ditto.
1139         (vec_reload_and_reg_<mptrsize>): Ditto.
1140         (add<mode>3): Ditto.
1141         (sub<mode>3): Ditto.
1142         (mul<mode>3): Ditto.
1143         (neg<mode>2): Ditto.
1144         (abs<mode>2): Ditto.
1145         (smin<mode>3): Ditto.
1146         (smax<mode>3): Ditto.
1147         (vector_eq<mode>): Ditto.
1148         (vector_gt<mode>): Ditto.
1149         (vector_ge<mode>): Ditto.
1150         (vector_gtu<mode>): Ditto.
1151         (vector_select_<mode>_uns): Ditto.
1152         (vector_eq_<mode>_p): Ditto.
1153         (vector_gt_<mode>_p): Ditto.
1154         (vector_ge_<mode>_p): Ditto.
1155         (vector_gtu_<mode>_p): Ditto.
1156         (cr6_test_for_zero): Ditto.
1157         (cr6_test_for_zero_reverse): Ditto.
1158         (cr6_test_for_lt): Ditto.
1159         (cr6_test_for_lt_reverse): Ditto.
1160         (xor<mode>3): Ditto.
1161         (ior<mode>3): Ditto.
1162         (and<mode>3): Ditto.
1163         (one_cmpl<mode>2): Ditto.
1164         (nor<mode>2): Ditto.
1165         (andc<mode>2): Ditto.
1166         (float<VEC_int<mode>2): Ditto.
1167         (unsigned_float<VEC_int><mode>2): Ditto.
1168         (fix_trunc<mode><VEC_int>2): Ditto.
1169         (fixuns_trunc<mode><VEC_int>2): Ditto.
1170         (vec_init<mode>):
1171         (vec_set<mode>): Ditto.
1172         (vec_extract<mode>): Ditto.
1173         (vec_interleave_highv4sf): Ditto.
1174         (vec_interleave_lowv4sf): Ditto.
1175         (vec_realign_load_<mode>): Ditto.
1176         (vec_shl_<mode>): Ditto.
1177         (vec_shr_<mode>): Ditto.
1178         (div<mode>3): New patterns for VSX.
1179         (vec_interleave_highv2df): Ditto.
1180         (vec_interleave_lowv2df): Ditto.
1181         (vec_pack_trunc_v2df): Ditto.
1182         (vec_pack_sfix_trunc_v2df): Ditto.
1183         (vec_pack_ufix_trunc_v2df): Ditto.
1184         (vec_unpacks_hi_v4sf): Ditto.
1185         (vec_unpacks_lo_v4sf): Ditto.
1186         (vec_unpacks_float_hi_v4si): Ditto.
1187         (vec_unpacku_float_lo_v4si): Ditto.
1188         (vec_unpacku_float_hi_v4si): Ditto.
1189         (vec_unpacks_float_lo_v4si): Ditto.
1190         (movmisalign<mode>): Ditto.
1191         (vector_ceil<mode>2): New patterns for vectorizing math library.
1192         (vector_floor<mode>2): Ditto.
1193         (vector_btrunc<mode>2): Ditto.
1194         (vector_copysign<mode>3): Ditto.
1195
1196         * config/rs6000/predicates.md (easy_vector_constant_msb): New
1197         predicate for setting the high bit in each word, used for copysign.
1198
1199         * config/rs6000/ppc-asm.h (f19): Whitespace.
1200         (f32-f63): Define if VSX.
1201         (v0-v31): Define if Altivec.
1202         (vs0-vs63): Define if VSX.
1203
1204         * config/rs6000/t-rs6000 (MD_INCLUDES): Add power7.md and vsx.md.
1205
1206         * config/rs6000/power7.md: New file, provide tuning parameters for
1207         -mcpu=power7.
1208
1209         * config/rs6000/rs6000-c.c (rs6000_macro_to_expand): Add VSX support.
1210         (rs6000_cpu_cpp_builtins): Ditto.
1211         (altivec_overloaded_builtins): Ditto.
1212         (altivec_resolve_overloaded_builtin): Ditto.
1213
1214         * config/rs6000/rs6000.opt (-mno-vectorize-builtins): Add new
1215         debug switch to disable vectorizing simple math builtin
1216         functions.
1217
1218         * config/rs6000/rs6000.c (rs6000_builtin_vectorized_function):
1219         Vectorize simple math builtin functions.
1220         (TARGET_VECTORIZE_BUILTIN_VECTORIZED_FUNCTION): Define target
1221         hook to vectorize math builtins.
1222         (rs6000_override_options): Enable -mvsx on -mcpu=power7.
1223         (rs6000_builtin_conversion): Add VSX/power7 support.
1224         (rs6000_builtin_vec_perm): Ditto.
1225         (vsplits_constant): Add support for loading up a vector constant
1226         with just the high bit set in each part.
1227         (rs6000_expand_vector_init): Add VSX/power7 support.
1228         (rs6000_expand_vector_set): Ditto.
1229         (rs6000_expand_vector_extract): Ditto.
1230         (rs6000_emit_move): Ditto.
1231         (bdesc_3arg): Ditto.
1232         (bdesc_2arg): Ditto.
1233         (bdesc_1arg): Ditto.
1234         (rs6000_expand_ternop_builtin): Ditto.
1235         (altivec_expand_builtin): Ditto.
1236         (rs6000_expand_unop_builtin): Ditto.
1237         (rs6000_init_builtins): Ditto.
1238         (altivec_init_builtins): Ditto.
1239         (builtin_function_type): Ditto.
1240         (rs6000_common_init_builtins): Ditto.
1241         (rs6000_handle_altivec_attribute); Ditto.
1242         (rs6000_mangle_type): Ditto.
1243         (rs6000_vector_mode_supported_p): Ditto.
1244         (rs6000_mode_dependent_address): Altivec addresses with AND -16
1245         are mode dependent.
1246
1247         * config/rs6000/vsx.md: New file for VSX support.
1248
1249         * config/rs6000/rs6000.h (EASY_VECTOR_MSB): New macro for
1250         identifing values with just the most significant bit set.
1251         (enum rs6000_builtins): Add builtins for VSX.  Add simple math
1252         vectorized builtins.
1253
1254         * config/rs6000/altivec.md (UNSPEC_VRFIP): Delete.
1255         (UNSPEC_VRFIM): Delete.
1256         (splitter for loading up vector with most significant bit): New
1257         splitter for vectorizing copysign.
1258         (altivec_vrfiz): Rename from altivec_fturncv4sf2.  Add support for
1259         vectorizing simple math functions.
1260         (altivec_vrfip): Add support for vectorizing simple math functions.
1261         (altivec_vrfim): Ditto.
1262         (altivec_copysign_v4sf3): New insn for Altivec copysign support.
1263
1264         * config/rs6000/rs6000.md (UNSPEC_BPERM): New constant.
1265         (power7.md, vsx.md): Include for power7 support.
1266         (copysigndf3): Use VSX instructions if -mvsx.
1267         (negdf2_fpr): Ditto.
1268         (absdf2_fpr): Ditto.
1269         (nabsdf2_fpr): Ditto.
1270         (adddf3_fpr): Ditto.
1271         (subdf3_fpr): Ditto.
1272         (muldf3_fpr): Ditto.
1273         (divdf3_fpr): Ditto.
1274         (fix_truncdfdi2_fpr): Ditto.
1275         (cmpdf_internal1): Ditto.
1276         (fred, fred_fpr): Convert into expander/insn to add VSX support.
1277         (btruncdf2, btruncdf2_fpr): Ditto.
1278         (ceildf2, ceildf2_fpr): Ditto.
1279         (floordf2, floordf2_fpr): Ditto.
1280         (floatdidf2, floatdidf2_fpr): Ditto.
1281         (fmadddf4_fpr): Name insn.  Use VSX instructions if -mvsx.
1282         (fmsubdf4_fpr): Ditto.
1283         (fnmadddf4_fpr_1): Ditto.
1284         (fnmadddf4_fpr_2): Ditto.
1285         (fnmsubdf4_fpr_1): Ditto.
1286         (fnmsubdf4_fpr_2): Ditto.
1287         (fixuns_truncdfdi2): Add expander for VSX support.
1288         (fix_truncdfdi2): Ditto.
1289         (fix_truncdfsi2): Ditto.
1290         (ftruncdf2): Ditto.
1291         (btruncsf2): Whitespace.
1292         (movdf_hardfloat32): Add support for VSX registers.
1293         (movdf_softfloat32): Ditto.
1294         (movdf_hardfloat64): Ditto.
1295         (movdf_hardfloat64_mfpgpr): Ditto.
1296         (movdf_softfloat64): Ditto.
1297         (movti splitters): Add check for vector registers supporting
1298         TImode in the future.
1299         (bpermd): Add power7 bpermd instruction.
1300
1301         * config/rs6000/altivec.h (vec_div): Define if VSX.
1302         (vec_mul): Ditto.
1303         (vec_msub): Ditto.
1304         (vec_nmadd): Ditto.
1305         (vec_nearbyint): Ditto.
1306         (vec_rint): Ditto.
1307         (vec_sqrt): Ditto.
1308         (all predicates): Use the generic builtin function, and not the V4SF
1309         specific function so that the predicates will work with VSX's V2DF.
1310         (vec_all_*): Ditto.
1311         (vec_any_*): Ditto.
1312
1313         * doc/extend.texi (PowerPC Altivec/VSX Built-in Functions):
1314         Document new VSX functions and types.
1315
1316         * doc/invoke.texi (PowerPc options): Document -mpopcntd, -mvsx
1317         switches.
1318
1319         * doc/md.texi (PowerPC constraints): Document "wd", "wf", "ws",
1320         "wa", and "j" constraints.  Modify "v" to talk about Altivec
1321         instead of just vector.
1322
1323 2009-07-30  Andrew MacLeod  <amacleod@redhat.com>
1324
1325         PR debug/26475
1326         * tree-into-ssa.c (insert_phi_nodes_for, rewrite_add_phi_arguments): Set
1327         location for phi arguments.
1328         (rewrite_update_phi_arguments): Find locations for reaching defs.
1329         * tree-ssa-threadupdate.c (create_edge_and_update_destination_phis):
1330         Add location to add_phi_arg calls.
1331         * tree-loop-districbution.c (update_phis_for_loop_copy): Add locations.
1332         * tree-ssa-loop-manip.c (create_iv, add_exit_phis_edge,
1333         split_loop_exit_edge, tree_transform_and_unroll_loop): Add locations.
1334         * tree-tailcall.c (add_successor_phi_arg, eliminate_tail_call,
1335         create_tailcall_accumulator, tree_optimize_tail_calls_1): Add locations.
1336         * tree.h (struct phi_arg_d): Add location_t to PHI arguments.
1337         * tree-phinodes.c (make_phi_node): Initialize location.
1338         (resize_phi_node): Initialize location to UNKNOWN_LOCATION.
1339         (add_phi_arg): Add location parameter.
1340         (remove_phi_arg_num): Move location when moving phi argument.
1341         * omp-low.c (expand_parallel_call, expand_omp_for_static_chunk): Set 
1342         location.
1343         * tree-vect-loop-manip.c (slpeel_update_phis_for_duplicate_loop,
1344         slpeel_update_phi_nodes_for_guard1,
1345         slpeel_update_phi_nodes_for_guard2,
1346         slpeel_tree_duplicate_loop_to_edge_cfg, set_prologue_iterations,
1347         vect_loop_versioning): Set locations.
1348         * tree-parloops.c (create_phi_for_local_result,
1349         transform_to_exit_first_loop, create_parallel_loop): Add locations.
1350         * gimple-pretty-print.c (dump_gimple_phi): Dump lineno's if present.
1351         * tree-vect-loop.c (get_initial_def_for_induction,
1352         vect_create_epilog_for_reduction, vect_finalize_reduction): Add
1353         locations.
1354         * tree-flow-inline.h (gimple_phi_arg_location): New.  Return locus.
1355         (gimple_phi_arg_location_from_edge): New.  Return locus from an edge.
1356         (gimple_phi_arg_set_location): New.  Set locus.
1357         (gimple_phi_arg_has_location): New.  Check for locus.
1358         (redirect_edge_var_map_location): New.  Return locus from var_map.
1359         * tree-vect-data-refs.c (vect_setup_realignment): Set location.
1360         * tree-ssa-phiopt.c (conditional_replacement): Set locus when
1361         combining PHI arguments.
1362         (cond_store_replacement): Set location.
1363         * cfgexpand.c (gimple_assign_rhs_to_tree): Transfer locus if possible.
1364         * grpahite.c (add_loop_exit_phis, add_guard_exit_phis,
1365         scop_add_exit_phis_edge): Add locations.
1366         * tree-cfgcleanup.c (remove_forwarder_block,
1367         remove_forwarder_block_with_phi): Add locations.
1368         * tree-ssa-pre.c (insert_into_preds_of_block): Add locations.
1369         * tree-predcom.c (initialize_root_vars, initialize_root_vars_lm): Add
1370         locations.
1371         * tree-ssa-dce.c (forward_edge_to_pdom): Add locations.
1372         * tree-ssa.c (redirect_edge_var_map_add, ssa_redirect_edge,
1373         flush_pending_stmts): Add source location.
1374         * lambda-code.c (perfect_nestify): Maintain location stack with argument
1375         stack to preserve locations.
1376         * tree-vect-stmts.c (vectorizable_load): Add location.
1377         * tree-inline.c (copy_phis_for_bb): Copy locus.
1378         (setup_one_parameter): Add call locus to inlined parameter stmts.
1379         (initialize_inlined_parameters): Pass in call location as parameter
1380         assignment locus.
1381         (tree_function_versioning): Pass location to setup_one_parameter.
1382         * tree-ssa-phiprop.c (phiprop_insert_phi): Set locations.
1383         * tree-outof-ssa.c (struct _elim_graph): Add source_location vecs for
1384         copy and edge lists.
1385         (insert_partition_copy_on_edge, insert_value_copy_on_edge,
1386         insert_rtx_to_part_on_edge, insert_part_to_rtx_on_edge): Provide a 
1387         locus parameter and override the stmt default if provided.
1388         (new_elim_graph, clear_elim_graph, delete_elim_graph,
1389         elim_graph_add_edge, elim_graph_remove_succ_edge,
1390         FOR_EACH_ELIM_GRAPH_SUCC, FOR_EACH_ELIM_GRAPH_PRED, eliminate_build,
1391         elim_forward, elim_unvisited_predecessor, elim_backward, elim_create,
1392         eliminate_phi):  Add locus info in elimination graph for each edge and
1393         value copy.
1394         (insert_backedge_copies): Copy locus if present.
1395         * tree-flow.h (struct _edge_var_map): Add locus field.
1396         * tree-switch_conversions.c (fix_phi_nodes): Add locations.
1397         * tree-cfg.c (reinstall_phi_args, gimple_make_forwarder_block,
1398         add_phi_args_after_copy_edge, gimple_lv_adjust_loop_header_phi): Add 
1399         locations.
1400         * ipa-struct-reorg.c (make_edge_and_fix_phis_of_dest): Add locations.
1401         
1402 2009-07-30  Martin Jambor  <mjambor@suse.cz>
1403
1404         PR tree-optimization/40570
1405         * ipa-inline.c (cgraph_decide_inlining): Watch out for dead single
1406         use inlining loops.
1407
1408 2009-07-30  Razya Ladelsky <razya@il.ibm.com>
1409
1410         * ssa-loop-manip.c: Include langhooks.h.
1411         (rewrite_phi_with_iv): New.
1412         (rewrite_all_phi_nodes_with_iv): New.
1413         (canonicalize_loop_ivs): Move here from tree-parloops.c.
1414         Remove reduction_list argument. Use rewrite_all_phi_nodes_with_iv.
1415         * tree-parloops.c (loop_parallel_p): Move out all conditions
1416         except dependency check.
1417         (canonicalize_loop_ivs): Move to tree-ssa-loop-manip.c.
1418         (gen_parallel_loop): Call canonicalize_loop_ivs without
1419         reduction_list argument.
1420         (build_new_reduction): New.
1421         (gather_scalar_reductions): New.
1422         (try_get_loop_niter): New.
1423         (try_create_reduction_list): New.
1424         (parallleize_loops): Change the parallel conditions check.
1425         * tree-flow.h (canonicalize_loop_ivs): Remove one argument.
1426         * Makefile.in (tree-ssa-loop-manip.o): Add langhooks.h dependency.
1427
1428 2009-07-30  Dave Korn  <dave.korn.cygwin@gmail.com>
1429
1430         * opt-functions.awk (opt_args): Allow argument to be enclosed in
1431         curly braces.
1432         * doc/options.texi (Option properties):  Mention new quoting syntax.
1433
1434 2009-07-29  Douglas B Rupp  <rupp@gnat.com>
1435
1436         * config/alpha/alpha.c (alpha_start_function):
1437         Handle VMS_DEBUG_MAIN_POINTER
1438         * config/alpha/vms.h (VMS_DEBUG_MAIN_POINTER): Define new macro.
1439         * doc/invoke.texi: Document -mdebug-main switch.
1440
1441 2009-07-29  Richard Henderson  <rth@redhat.com>
1442
1443         * cgraph.c (cgraph_set_call_stmt_including_clones): Tidy.
1444         (cgraph_create_edge_including_clones): Likewise.
1445         * tree-inline.c (copy_bb): Operate on the correct edges
1446         when updating the callgraph.
1447
1448 2009-07-29  Douglas B Rupp  <rupp@gnat.com>
1449
1450         * config/alpha/vms-cc.c: Deleted.
1451         * config/alpha/vms-ld.c: Deleted.
1452         * config/alpha/t-vms64: Moved to config/vms
1453         * config/alpha/vms-crt0-64.c: Moved to config/vms
1454         * config/alpha/vms-crt0.c: Moved to config/vms
1455         * config/alpha/vms-psxcrt0-64.c: Moved to config/vms
1456         * config/alpha/vms-psxcrt0.c: Moved to config/vms
1457         * config/alpha/xm-vms.h: Moved to config/vms
1458         * config/alpha/x-vms: Moved to config/vms
1459         * config/alpha/t-vms (vcrt0.o, pcrt0.o): Move rules to new file
1460         config/vms/t-vms.
1461         * config/vms/t-vms: Moved here from config/alpha. Alpha specific
1462         parts removed. (STMP_FIXPROTO, STMP_FIXINC, LIMITS_H_TEST): Set.
1463         (version): Set.
1464         * config/vms/t-vms64: Moved here from config/alpha
1465         * config/vms/vms-crt0-64.c: Moved here from config/alpha.
1466         (argc,argv,envp): Enforce 32bit malloc'ing.
1467         * config/vms/vms-psxcrt0-64.c: Likewise.
1468         * config/vms/vms-crt0.c: Moved here from config/alpha.
1469         * config/vms/vms-psxcrt0.c: Likewise.
1470         * config/vms/vms-crtl-64.h: New file.
1471         * config/vms/vms-crtl.h: New file.
1472         * config/vms/vms.opt: New file.
1473         * config/vms/xm-vms64.h: New file.
1474         * config/vms/xm-vms.h: Moved here from config/alpha.
1475         (STANARD_EXEC_PREFIX, STANDARD_STARTFILE_PREFIX, STANDARD_INCLUDE_DIR):
1476         Set.
1477         * config/vms/x-vms: Moved here from config/alpha.
1478         (version, VMS_EXTRA_PARTS): Moved to t-vms.
1479         (vms-ld.o, vms-cc.o): Removed.
1480         (LN, LN_S, USE_COLLECT2, POD2MAN): Set.
1481
1482 2009-07-29  Douglas B Rupp  <rupp@gnat.com>
1483
1484         * dwarf2out.c (add_name_and_src_coords_attributes): Push on the
1485         correct stack (obvious VMS fix).
1486
1487 2009-07-29  Douglas B Rupp  <rupp@gnat.com>
1488
1489         * dwarf2out.c (output_file_names): Output VMS style file name, size,
1490         date, version info if VMS_DEBUGGING_INFO defined.
1491         * vmsdgbout.c (vms_file_stats_name): New functon. VMS style file name,
1492         size, date calculating code moved here.
1493
1494 2009-07-29  Paul Brook  <paul@codesourcery.com>
1495
1496         * config/arm/lib1funcs.asm (clear_cache): Use ARM_FUNC_START and
1497         do_push/do_pop.
1498
1499 2009-07-29  Uros Bizjak  <ubizjak@gmail.com>
1500
1501         PR target/40577
1502         * config/alpha/alpha.c (alpha_expand_unaligned_store): Convert src
1503         to DImode when generating insq_le insn.
1504
1505 2009-07-28  Douglas B Rupp  <rupp@gnat.com>
1506
1507         * dwarf2out.c (DWARF2_INDIRECT_STRING_SUPPORT_MISSING_ON_TARGET):
1508         New macro set for VMS_DEBUGGGING_INFO.
1509         (AT_string_form): Use it.
1510
1511 2009-07-28  DJ Delorie  <dj@redhat.com>
1512
1513         * config/mep/mep.c (vtext_section): New.
1514         (vftext_section): New.
1515         (ftext_section): New.
1516         (mep_select_section): Add support for functions.
1517         (mep_unique_section): Likewise.
1518         (mep_asm_init_sections): Likewise.
1519         (mep_encode_section_info): Remove it from here.
1520
1521         * config/mep/mep.h (USE_SELECT_SECTION_FOR_FUNCTIONS): Define.
1522
1523 2009-07-28  Paolo Bonzini  <bonzinI@gnu.org>
1524
1525         * tree.h (TREE_DEPRECATED): Document it is used for types too.
1526         (TYPE_VECTOR_OPAQUE): Use default_def_flag
1527
1528 2009-07-28  Douglas B Rupp  <rupp@gnat.com>
1529
1530         * dwarf2out.c (output_file_names): Test new macro
1531         DWARF2_DIR_SHOULD_END_WITH_SEPARATOR.
1532         (add_comp_dir_attribute): Likewise.
1533
1534 2009-07-28  Kai Tietz  <kai.tietz@onevision.com>
1535
1536         * config/i386/mingw-w64.h (LINK_SPEC): Add
1537         separating space between commands.
1538
1539 2009-07-28  Jan Hubicka  <jh@suse.cz>
1540
1541         PR tree-optimization/40759
1542         * tree-ssa-dce.c (mark_virtual_phi_result_for_renaming): Mark all uses
1543         for renaming.
1544
1545 2009-07-27  DJ Delorie  <dj@redhat.com>
1546
1547         * config/mep/mep.c (mep_expand_builtin_saveregs): Make sure 64-bit
1548         types are dword-aligned.
1549         (mep_expand_va_start): Likewise.
1550
1551 2009-07-27  Olivier Hainque  <hainque@adacore.com>
1552             Douglas B Rupp  <rupp@gnat.com>
1553
1554         * convert.c (convert_to_pointer): Don't assume the target
1555         pointer type is POINTER_SIZE long. Fetch its precision instead.
1556
1557 2009-07-27  Douglas B Rupp  <rupp@gnat.com>
1558
1559         * system.h (fopen): Undefine if macro.
1560
1561 2009-07-27  Jakub Jelinek  <jakub@redhat.com>
1562
1563         * dwarf2out.c (output_cfi_p): Removed.
1564         (output_cfis): New function.
1565         (output_fde): New function, split from output_call_frame_info.
1566         (output_call_frame_info): Use it.
1567         (dwarf2out_switch_text_section): Use output_cfis.
1568
1569 2009-07-24  Kai Tietz  <kai.tietz@onevision.com>
1570
1571         * config/i386/cygming.h (DWARF2_UNWIND_INFO): Error build when
1572         TARGET_BI_ARCH is specified without enabling SJLJ.
1573         * config/i386/mingw32.h (MD_UNWIND_SUPPORT): Define MD_UNWIND_SUPPORT,
1574         if TARGET_64BIT and TARGET_BI_ARCH aren't defined.
1575
1576 2009-07-26  Mikael Pettersson <mikpe@it.uu.se>
1577
1578         * arm.md (negdi2): Use DImode if forcing a value into a register.
1579
1580 2009-07-26  Ira Rosen  <irar@il.ibm.com>
1581
1582         PR tree-optimization/40801
1583         * tree-vect-stmts.c (vectorizable_call): Get previous copy
1584         of vector operand from the previous copy of vector statement.
1585         Pass the correct definition type value to
1586         vect_get_vec_def_for_stmt_copy().
1587
1588 2009-07-25  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
1589
1590         * collect2.c (scan_libraries): Use CONST_CAST2 to perform char ** to
1591         const char ** conversion.
1592
1593 2009-07-25 David Daney <ddaney@caviumnetworks.com>
1594
1595         * system.h (gcc_assert): Invoke __builtin_unreachable() instead of
1596         fancy_abort() if !ENABLE_ASSERT_CHECKING.
1597         (gcc_unreachable): Invoke __builtin_unreachable() if
1598         !ENABLE_ASSERT_CHECKING.
1599
1600 2009-07-25  David Daney  <ddaney@caviumnetworks.com>
1601
1602         PR rtl-optimization/40445
1603         * emit-rtl.c (next_nonnote_insn_bb): New function.
1604         * rtl.h (next_nonnote_insn_bb): Declare new function.
1605         * cfgcleanup.c (try_optimize_cfg): Don't remove an empty block
1606         with no successors that is the successor of the ENTRY_BLOCK.
1607         Continue from the top after removing an empty fallthrough block.
1608         * cfgrtl.c (get_last_bb_insn): Call next_nonnote_insn_bb instead
1609         of next_nonnote_insn.
1610
1611 2009-07-25  David Daney  <ddaney@caviumnetworks.com>
1612
1613         * cfgcleanup.c (old_insns_match_p): Handle the case of empty blocks.
1614         
1615 2009-07-25  Martin Jambor  <mjambor@suse.cz>
1616
1617         * c-common.c (c_common_attribute_table): New element for noclone.
1618         (handle_noclone_attribute): New function. Forward-declare.
1619         * tree-inline.c (tree_versionable_function_p): Check for noclone
1620         attribute.
1621         * doc/extend.texi (Labels as Values): Document need for noclone.
1622         (Function Attributes): Document noclone attribute.
1623
1624 2009-07-25  Jakub Jelinek  <jakub@redhat.com>
1625
1626         PR rtl-optimization/34999
1627         * dwarf2out.c (struct dw_fde_struct): Add dw_fde_switch_cfi
1628         and dw_fde_switched_cold_to_hot fields.
1629         (output_cfi_p): New function.
1630         (output_call_frame_info): If fde->dw_fde_switched_sections,
1631         output 2 FDEs instead of one with corrupted header.
1632         (dwarf2out_do_cfi_startproc): New function.
1633         (dwarf2out_begin_prologue): Use it.  Initialize fde->dw_fde_switch_cfi
1634         and fde->dw_fde_switched_cold_to_hot.
1635         (dwarf2out_switch_text_section): Compute
1636         fde->dw_fde_switched_cold_to_hot.  Switch to new text section here.
1637         If dwarf2out_do_cfi_asm, emit .cfi_endproc before it and call
1638         dwarf2out_do_cfi_startproc plus emit again currently active CFI insns.
1639         Otherwise, compute fde->dw_fde_switch_cfi.
1640
1641 2009-07-24  Cary Coutant  <ccoutant@google.com>
1642
1643         * tree-cfg.c (assign_discriminator): Add explicit parentheses.
1644
1645 2009-07-24  Cary Coutant  <ccoutant@google.com>
1646
1647         * cfghooks.c (split_block): Copy discriminator to new block.
1648         * tree-cfg.c (assign_discriminator): Check location of last
1649         instruction in block as well as first.
1650
1651 2009-07-24  Uros Bizjak  <ubizjak@gmail.com>
1652
1653         * config/i386/linux.c: Use fputs or putc instead of fprintf
1654         where appropriate.
1655         * config/i386/gas.h: Ditto.
1656         * config/i386/x86-64.h: Ditto.
1657         * config/i386/att.h: Ditto.
1658
1659 2009-07-24  Andreas Krebbel  <Andreas.Krebbel@de.ibm.com>
1660
1661         * expmed.c (emit_store_flag): Use a recursive call to optimize the
1662         xor case.
1663
1664 2009-07-24  Martin Jambor  <mjambor@suse.cz>
1665
1666         * ipa-prop.h (struct ipa_node_params): New flag node_enqued.
1667         (ipa_push_func_to_list_1): Declare.
1668         (ipa_push_func_to_list): New function.
1669
1670         * ipa-prop.c (ipa_push_func_to_list_1): New function.
1671         (ipa_init_func_list): Call ipa_push_func_to_list_1.
1672         (ipa_push_func_to_list): Removed.
1673         (ipa_pop_func_from_list): Clear node_enqueued flag.
1674
1675 2009-07-24  Andreas Krebbel  <krebbel1@de.ibm.com>
1676         
1677         * config/s390/s390.c (override_options): Default
1678         max-unrolled-insns to 100 for z10 tuning.
1679
1680 2009-07-24  Tobias Grosser  <grosser@fim.uni-passau.de>
1681
1682         * Makefile.in (TREE_DATA_REF_H, tree-vrp.o, tree-cfg.o, tree-if-conv.o
1683         tree-ssa-loop.o, tree-ssa-loop-niter.o, tree-ssa-loop-ivcanon.o,
1684         tree-ssa-loop-prefetch.o, tree-predcom.o, tree-affine.o,
1685         tree-scalar-evolution.o, tree-data-ref.o, tree-vect-loop.o,
1686         tree-vect-data-refs.o, tree-loop-linear.o, tree-loop-distribution.o
1687         tree-parloops.o, tree-pretty-printer.o, fold-const.o, tree-ssa-dce.o,
1688         lambda-code.o, params.o): Cleanup use of SCEV_H and TREE_DATA_REF_H.
1689
1690 2009-07-24  Kai Tietz  <kai.tietz@onevision.com>
1691
1692         * config/i386/mingw-w64.h (STANDARD_INCLUDE_DIR): Remove and
1693         use default set in mingw32.h header.
1694         * config/i386/mingw32.h (STANDARD_INCLUDE_DIR): Use for 32-bit and
1695         64-bit /mingw/include path.
1696         (STANDARD_STARTFILE_PREFIX_1): Use for 32-bit and 64-bit /mingw/lib
1697         path.
1698
1699 2009-07-23  Neil Vachharajani  <nvachhar@google.com>
1700
1701         PR rtl-optimization/40209
1702         * loop-iv.c (iv_analysis_loop_init): Call df_note_add_problem.
1703
1704 2009-07-23  Uros Bizjak  <ubizjak@gmail.com>
1705
1706         * config/i386/i386.c: Use ASM_LONG instead of .long.  Concatenate
1707         ASM_LONG, LPREFIX, MCOUNT_NAME and PROFILE_COUNT_REGISTER strings
1708         with the rest of string where appropriate.  Use fputs or putc
1709         instead of fprintf where appropriate.
1710
1711 2009-07-22  Michael Meissner  <meissner@linux.vnet.ibm.com>
1712             Pat Haugen  <pthaugen@us.ibm.com>
1713             Revital Eres <ERES@il.ibm.com>
1714
1715         * config/rs6000/vector.md: New file.  Move most of the vector
1716         expander support here from altivec.md to allow for the VSX vector
1717         unit in the future.  Add support for secondary_reload patterns.
1718         Rewrite the patterns for vector comparison, and vector comparison
1719         predicate instructions so that the RTL expresses the desired
1720         behavior, instead of using unspec.
1721
1722         * config/rs6000/constraints.md ("f" constraint): Use
1723         rs6000_constraints to hold the precalculated register class.
1724         ("d" constraint): Ditto.
1725         ("wd" constraint): New constraint for VSX.
1726         ("wf" constraint): Ditto.
1727         ("ws" constraint): Ditto.
1728         ("wa" constraint): Ditto.
1729         ("wZ" constraint): Ditto.
1730         ("j" constraint): Ditto.
1731
1732         * config/rs6000/predicates.md (vsx_register_operand): New
1733         predicate for VSX.
1734         (vfloat_operand): New predicate for vector.md.
1735         (vint_operand): Ditto.
1736         (vlogical_operand): Ditto.
1737         (easy_fp_constant): If VSX, 0.0 is an easy constant.
1738         (easy_vector_constant): Add VSX support.
1739         (altivec_indexed_or_indirect_operand): New predicate for
1740         recognizing Altivec style memory references with AND -16.
1741
1742         * config/rs6000/rs6000.c (rs6000_vector_reload): New static global
1743         for vector secondary reload support.
1744         (rs6000_vector_reg_class): Delete, replacing it with
1745         rs6000_constraints.
1746         (rs6000_vsx_reg_class): Ditto.
1747         (rs6000_constraints): New array to hold the register classes of
1748         each of the register constraints that can vary at runtime.
1749         (builtin_mode_to_type): New static array for builtin function type
1750         creation.
1751         (builtin_hash_table): New static hash table for builtin function
1752         type creation.
1753         (TARGET_SECONDARY_RELOAD): Define target hook.
1754         (TARGET_IRA_COVER_CLASSES): Ditto.
1755         (rs6000_hard_regno_nregs_internal): If -mvsx, floating point
1756         registers are 128 bits if VSX memory reference instructions are used.
1757         (rs6000_hard_regno_mode_ok): For VSX, only check if the VSX memory
1758         unit is being used.
1759         (rs6000_debug_vector_unit): Move into rs6000_debug_reg_global.
1760         (rs6000_debug_reg_global): Move -mdebug=reg statements here.
1761         Print several of the scheduling related parameters.
1762         (rs6000_init_hard_regno_mode_ok): Switch to putting constraints in
1763         rs6000_constraints instead of rs6000_vector_reg_class.  Move
1764         -mdebug=reg code to rs6000_debug_reg_global.  Add support for
1765         -mvsx-align-128 debug switch.  Drop testing float_p if VSX or
1766         Altivec.  Add VSX support.  Setup for secondary reload support on
1767         Altivec/VSX registers.
1768         (rs6000_override_options): Make power7 set the scheduling groups
1769         like the power5.  Add support for new debug switches to override
1770         the scheduling defaults.  Temporarily disable -mcpu=power7 from
1771         setting -mvsx.  Add support for debug switches -malways-hint,
1772         -msched-groups, and -malign-branch-targets.
1773         (rs6000_buitlin_conversion): Add support for returning unsigned
1774         vector conversion functions to fix regressions due to stricter
1775         type checking.
1776         (rs6000_builtin_mul_widen_even): Ditto.
1777         (rs6000_builtin_mul_widen_odd): Ditto.
1778         (rs6000_builtin_vec_perm): Ditto.
1779         (rs6000_vec_const_move): On VSX, use xxlxor to clear register.
1780         (rs6000_expand_vector_init): Initial VSX support for using xxlxor
1781         to zero a register.
1782         (rs6000_emit_move): Fixup invalid const symbol_ref+reg that is
1783         generated upstream.
1784         (bdesc_3arg): Add builtins for unsigned types.  Add builtins for
1785         VSX types for bit operations.  Changes to accomidate vector.md.
1786         (bdesc_2arg): Ditto.
1787         (bdesc_1arg): Ditto.
1788         (struct builtin_description_predicates): Rewrite predicate
1789         handling so that RTL describes the operation, instead of passing
1790         the instruction to be used as a string argument.
1791         (bdesc_altivec_preds): Ditto.
1792         (altivec_expand_predicate_builtin): Ditto.
1793         (altivec_expand_builtin): Ditto.
1794         (rs6000_expand_ternop_builtin): Use a switch instead of an if
1795         statement for vsldoi support.
1796         (altivec_expand_ld_builtin): Change to use new names from vector.md.
1797         (altivec_expand_st_builtin): Ditto.
1798         (paired_expand_builtin): Whitespace changes.
1799         (rs6000_init_builtins): Add V2DF/V2DI types.  Initialize the
1800         builtin_mode_to_type table for secondary reload.  Call
1801         builtin_function_type to build random builtin functions.
1802         (altivec_init_builtins): Change to use builtin_function_type to
1803         create builtin function types dynamically as we need them.
1804         (builtin_hash_function): New support for hashing the tree types
1805         for builtin function as we need it, rather than trying to build
1806         all of the trees that we need.  Add initial preliminary VSX support.
1807         (builtin_function_type): Ditto.
1808         (builtin_function_eq): Ditto.
1809         (builtin_hash_struct): Ditto.
1810         (rs6000_init_builtins): Ditto.
1811         (rs6000_common_init_builtins): Ditto.
1812         (altivec_init_builtins): Ditto.
1813         (rs6000_common_init_builtins): Ditto.
1814         (enum reload_reg_type): New enum for simplifing reg classes.
1815         (rs6000_reload_register_type): Simplify register classes into GPR,
1816         Vector, and other registers.  Altivec and VSX addresses in reload.
1817         (rs6000_secondary_reload_inner): Ditto.
1818         (rs6000_ira_cover_classes): New target hook, that returns the
1819         appropriate cover classes, based on -mvsx being used or not.
1820         (rs6000_secondary_reload_class): Add VSX support.
1821         (get_vec_cmp_insn): Delete, rewrite vector conditionals.
1822         (get_vsel_insn): Ditto.
1823         (rs6000_emit_vector_compare): Rewrite vector conditional support
1824         so that where we can, we use RTL operators, instead of blindly use
1825         UNSPEC.
1826         (rs6000_emit_vector_select): Ditto.
1827         (rs6000_emit_vector_cond_expr): Ditto.
1828         (rs6000_emit_minmax): Directly generate min/max under altivec, vsx.
1829         (create_TOC_reference): Add -mdebug=addr support.
1830         (emit_frame_save): VSX loads/stores need register indexed addressing.
1831
1832         * config/rs6000/rs6000.md: Include vector.md.
1833
1834         * config/rs6000/t-rs6000 (MD_INCLUDES): Add vector.md.
1835
1836         * config/rs6000/rs6000-c.c (altivec_overloaded_builtins): Add
1837         support for V2DI, V2DF in logical, permute, select operations.
1838
1839         * config/rs6000/rs6000.opt (-mvsx-scalar-double): Add new debug
1840         switch for vsx/power7.
1841         (-mvsx-scalar-memory): Ditto.
1842         (-mvsx-align-128): Ditto.
1843         (-mallow-movmisalign): Ditto.
1844         (-mallow-df-permute): Ditto.
1845         (-msched-groups): Ditto.
1846         (-malways-hint): Ditto.
1847         (-malign-branch-targets): Ditto.
1848         
1849         * config/rs6000/rs6000.h (IRA_COVER_CLASSES): Delete, use target
1850         hook instead.
1851         (IRA_COVER_CLASSES_PRE_VSX): Cover classes if not -mvsx.
1852         (IRA_COVER_CLASSES_VSX): Cover classes if -mvsx.
1853         (rs6000_vector_reg_class): Delete.
1854         (rs6000_vsx_reg_class): Ditto.
1855         (enum rs6000_reg_class_enum): New enum for the constraints that
1856         vary based on target switches.
1857         (rs6000_constraints): New array to hold the register class for all
1858         of the register constraints that vary based on the switches used.
1859         (ALTIVEC_BUILTIN_*_UNS): Add unsigned builtin functions.
1860         (enum rs6000_builtins): Add unsigned varients for the builtin
1861         declarations returned by target hooks for expanding multiplies,
1862         select, and permute operations.  Add VSX builtins.
1863         (enum rs6000_builtin_type_index): Add entries for VSX.
1864         (V2DI_type_node): Ditto.
1865         (V2DF_type_node): Ditto.
1866         (unsigned_V2DI_type_node): Ditto.
1867         (bool_long_type_node): Ditto.
1868         (intDI_type_internal_node): Ditto.
1869         (uintDI_type_internal_node): Ditto.
1870         (double_type_internal_node): Ditto.
1871
1872         * config/rs6000/altivec.md (whole file): Move all expanders to
1873         vector.md from altivec.md.  Rename insn matching functions to be
1874         altivec_foo.
1875         (UNSPEC_VCMP*): Delete, rewrite vector comparisons.
1876         (altivec_vcmp*): Ditto.
1877         (UNSPEC_VPERM_UNS): New, add for unsigned types using vperm.
1878         (VM): New iterator for moves that includes the VSX types.
1879         (altivec_vperm_<mode>): Add VSX types.  Add unsigned types.
1880         (altivec_vperm_<mode>_uns): New, for unsigned types.
1881         (altivec_vsel_*): Rewrite vector comparisons and predicate builtins.
1882         (altivec_eq<mode>): Ditto.
1883         (altivec_gt<mode>): Ditto.
1884         (altivec_gtu<mode>): Ditto.
1885         (altivec_eqv4sf): Ditto.
1886         (altivec_gev4sf): Ditto.
1887         (altivec_gtv4sf): Ditto.
1888         (altivec_vcmpbfp_p): Ditto.
1889
1890 2009-07-23  Richard Earnshaw  <rearnsha@arm.com>
1891
1892         * arm.md (split for ior/xor with shift and zero-extend): Cast op3 to 
1893         unsigned HWI.
1894
1895 2009-07-23  Uros Bizjak  <ubizjak@gmail.com>
1896
1897         PR target/40832
1898         * config/i386/i386.c (output_387_ffreep): Rewrite to use
1899         ASM_SHORT instead of .word.
1900         * config/i386/i386.md (*tls_global_dynamic_64): Use ASM_SHORT
1901         instead of .word in asm template.
1902
1903 2009-07-22  Vladimir Makarov  <vmakarov@redhat.com>
1904
1905         PR target/37488
1906         * ira-lives.c (bb_has_abnormal_call_pred): New function.
1907         (process_bb_node_lives): Use it.
1908
1909         * ira.c (setup_cover_and_important_classes): Don't setup
1910         ira_important_class_nums.  Add cover classes to the end of
1911         important classes.
1912         (cover_class_order, comp_reg_classes_func, reorder_important_classes):
1913         New.
1914         (find_reg_class_closure): Use reorder_important_classes.
1915
1916         * config/i386/i386.h (IRA_COVER_CLASSES): Remove.
1917
1918         * config/i386/i386.c (i386_ira_cover_classes): New function.
1919         (TARGET_IRA_COVER_CLASSES): Redefine.
1920
1921         * doc/tm.texi (TARGET_IRA_COVER_CLASSES): Add a comment about
1922         importance of order of cover classes in the array.
1923         
1924 2009-07-22  Diego Novillo  <dnovillo@google.com>
1925
1926         * tree-pass.h (TDF_EH): Define.
1927         * gimple-pretty-print.c (dump_gimple_stmt): If FLAGS
1928         contains TDF_EH, print the EH region number holding GS.
1929         * tree-dump.c (dump_options): Add "eh".
1930         * doc/invoke.texi: Document it.
1931
1932 2009-07-22  Doug Kwan  <dougkwan@google.com>
1933
1934         * config/arm/arm.md (subdi3) Copy non-reg values to DImode registers.
1935
1936 2009-07-22  Michael Matz  <matz@suse.de>
1937
1938         PR tree-optimization/35229
1939         PR tree-optimization/39300
1940
1941         * tree-ssa-pre.c (includes): Include tree-scalar-evolution.h.
1942         (inhibit_phi_insertion): New function.
1943         (insert_into_preds_of_block): Call it for REFERENCEs.
1944         (init_pre): Initialize and finalize scalar evolutions.
1945         * Makefile.in (tree-ssa-pre.o): Depend on tree-scalar-evolution.h .
1946
1947 2009-07-22  Uros Bizjak  <ubizjak@gmail.com>
1948
1949         * config/i386/predicates.md (zero_extended_scalar_load_operand):
1950         Use CONST_VECTOR_NUNITS to determine number of elements.
1951
1952 2009-07-22  Andreas Krebbel  <krebbel1@de.ibm.com>
1953
1954         * config/s390/constraints.md (ZQ, ZR, ZS, ZT): New constraints.
1955         (U, W): Constraints are now deprecated and will be removed if we
1956         run out of letters.     
1957         * config/s390/s390.md (U, W): Replaced with ZQZR, ZSZT throughout
1958         the file.
1959         ("prefetch"): Add the stcmh instruction for prefetching.
1960         * config/s390/s390.c (s390_symref_operand_p): Function moved. No
1961         changes.
1962         (s390_short_displacement): Return always true if compiling for
1963         machines not providing the long displacement facility.
1964         (s390_mem_constraint): Support the new constraint letter Z.
1965         (s390_check_qrst_address): New function.
1966
1967 2009-07-21  DJ Delorie  <dj@redhat.com>
1968
1969         * config/mep/mep.c (mep_legitimize_arg): Leave control registers
1970         alone too.
1971
1972 2009-07-21  Jason Merrill  <jason@redhat.com>
1973
1974         * c-common.c (max_tinst_depth): Increase default to 1024.
1975
1976 2009-07-21  Uros Bizjak  <ubizjak@gmail.com>
1977
1978         * config/i386/sse.md (vec_unpacku_float_hi_v4si): New expander.
1979         (vec_unpacku_float_lo_v4si): Ditto.
1980
1981 2009-07-21  Uros Bizjak  <ubizjak@gmail.com>
1982
1983         PR target/40811
1984         * config/i386/sse.md (sse2_cvtudq2ps): New expander.
1985         (enum ix86_builtins): Add IX86_BUILTIN_CVTUDQ2PS.
1986         (builtin_description): Add __builtin_ia32_cvtudq2ps.
1987         (ix86_vectorize_builtin_conversion): Handle IX86_BUILTIN_CVTUDQ2PS.
1988
1989 2009-07-21  Jakub Jelinek  <jakub@redhat.com>
1990
1991         PR tree-optimization/40813
1992         * tree-inline.c (copy_bb): Regimplify RHS after last stmt, not before
1993         it.
1994
1995 2009-07-21  Kaz Kojima  <kkojima@gcc.gnu.org>
1996
1997         * config/sh/sh.c (sh_gimplify_va_arg_expr): Wrap the result
1998         with a NOP_EXPR if needed.
1999
2000 2009-07-21  Paul Brook <paul@codesourcery.com>
2001
2002         * tree-vectorizer.c (increase_alignment): Handle nested arrays.
2003         Terminate debug dump with newline.
2004
2005 2009-07-20  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
2006
2007         * pa.c (compute_zdepwi_operands): Limit deposit length to 32 - lsb.
2008         Cast "1" to unsigned HOST_WIDE_INT.
2009         (compute_zdepdi_operands): Limit maximum length to 64 bits.  Limit
2010         deposit length to the maximum length - lsb.  Extend length if
2011         HOST_BITS_PER_WIDE_INT is 32.
2012
2013 2009-07-20  Olatunji Ruwase <tjruwase@google.com>
2014
2015         * cgraph.h (constant_pool_htab): New function.
2016         (constant_descriptor_tree): Move from varasm.c.
2017         * varasm.c (constant_pool_htab): New function.
2018         (constant_descriptor_tree): Move to cgraph.h.
2019
2020 2009-07-20  Olatunji Ruwase  <tjruwase@google.com>
2021
2022         * toplev.c: Invoke FINISH_UNIT callbacks before call to finalize().
2023
2024 2009-07-20  Shujing Zhao  <pearly.zhao@oracle.com>
2025
2026         * Makefile.in (TREE_INLINE_H, tree-inline.o, cgraph.o): Remove
2027         $(VARRAY_H).
2028
2029 2009-07-20  Xinliang David Li  <davidxl@google.com>
2030
2031         * dbgcnt.c (dbg_cnt_set_limit_by_name): Add length check.
2032
2033 2009-07-20  Adam Nemet  <anemet@caviumnetworks.com>
2034
2035         * config/mips/mips.md (move_type): Add arith.
2036         (type): Handle arith.
2037         (zero_extendsidi2): Rename this into ...
2038         (*zero_extendsidi2): ... this.  Don't match if ISA_HAS_EXT_INS.
2039         (zero_extendsidi2): New expander.
2040         (*zero_extendsidi2_dext): New pattern.
2041
2042 2009-07-20  Nick Clifton  <nickc@redhat.com>
2043
2044         * config.gcc (mips64-*-*): Add definition of tm_defines in order
2045         to set MIPS_ABI_DEFAULT.
2046         * config/mips/vr.h (MIPS_ABI_DEFAULT): Remove definition.
2047
2048 2009-07-20  Jakub Jelinek  <jakub@redhat.com>
2049
2050         * tree-object-size.c (addr_object_size): Handle unions with
2051         array in it as last field of structs in __bos (, 1) as __bos (, 0).
2052
2053         PR tree-optimization/40792
2054         * tree.c (build_function_type_skip_args): Remove bogus assert.
2055
2056 2009-07-20  Jan Hubicka  <jh@suse.cz>
2057             Martin Jambor  <mjambor@suse.cz>
2058
2059         * cgraph.h (combined_args_to_skip): New field.
2060         * cgraph.c (cgraph_create_virtual_clone): Properly handle
2061         combined_args_to_skip and args_to_skip.
2062         * tree-inline.c (update_clone_info): New function.
2063         (tree_function_versioning): Call update_clone_info.
2064         * cgraphunit.c: (cgraph_materialize_clone): Dump materialized
2065         functions.
2066         (cgraph_materialize_all_clones): More extensive dumping, working
2067         with combined_args_to_skip rather than args_to_skip.
2068
2069 2009-07-20  Ira Rosen  <irar@il.ibm.com>
2070
2071         * tree-vectorizer.h (vectorizable_condition): Add parameters.
2072         * tree-vect-loop.c (vect_is_simple_reduction): Support COND_EXPR.
2073         (get_initial_def_for_reduction): Likewise.
2074         (vectorizable_reduction): Skip the check of first operand in case
2075         of COND_EXPR. Add check that it is outer loop vectorization if
2076         nested cycle was detected. Call vectorizable_condition() for 
2077         COND_EXPR. If reduction epilogue cannot be created do not fail for
2078         nested cycles (if it is not double reduction). Assert that there
2079         is only one type in the loop in case of COND_EXPR. Call
2080         vectorizable_condition() to vectorize COND_EXPR.
2081         * tree-vect-stmts.c (vectorizable_condition): Update comment.
2082         Add parameters. Allow nested cycles if called from 
2083         vectorizable_reduction(). Use reduction vector variable if provided.
2084         (vect_analyze_stmt): Call vectorizable_reduction() before
2085         vectorizable_condition().
2086         (vect_transform_stmt): Update call to vectorizable_condition().
2087
2088 2009-07-20  Christian Bruel  <christian.bruel@st.com>
2089         
2090         * config/sh/sh.opt (-mfmovd): Resurrect and document.
2091         * doc/invoke.texi (-mfmovd): Likewise.
2092         * config/sh/sh.h (TARGET_FMOVD, MASK_FMOVD): Remove default setting.
2093         
2094 2009-07-20  Jan Hubicka  <jh@suse.cz>
2095
2096         * tree-ssa-dce.c (remove_dead_phis): Only look for abnormal PHIs
2097         when handling SSA name.
2098
2099 2009-07-19  Jan Hubicka  <jh@suse.cz>
2100
2101         PR tree-optimization/40676
2102         * tree-ssa-dce.c (eliminate_unnecessary_stmts): Do renaming on all
2103         virtual PHIs in empty BBs.
2104
2105 2009-07-18  Adam Nemet  <anemet@caviumnetworks.com>
2106
2107         * combine.c (make_compound_operation) <SUBREG>: If force_to_mode
2108         re-expanded the compound use gen_lowpart instead to convert to the
2109         desired mode.
2110
2111 2009-07-18  Adam Nemet  <anemet@caviumnetworks.com>
2112
2113         * combine.c (try_widen_shift_mode): Add COUNT, OUTER_CODE and
2114         OUTER_CONST arguments.
2115         <LSHIFTRT>: Use them to allow widening if the bits shifted in from
2116         the new wider mode will be masked off.
2117         (simplify_shift_const_1): Adjust calls to try_widen_shift_mode.
2118
2119 2009-07-18  Adam Nemet  <anemet@caviumnetworks.com>
2120
2121         * combine.c (try_widen_shift_mode) <LSHIFTRT>: Allow widening if the
2122         high-order bits are zero.
2123
2124 2009-07-18  Adam Nemet  <anemet@caviumnetworks.com>
2125
2126         * combine.c (simplify_shift_const_1): Split code to determine
2127         shift_mode into ...
2128         (try_widen_shift_mode): ... here.  Allow widening for ASHIFTRT if the
2129         new bits shifted in are identical to the old sign bit.
2130
2131 2009-07-18  Richard Guenther  <rguenther@suse.de>
2132
2133         PR c/40787
2134         * gimplify.c (gimplify_call_expr): Reject code using results from
2135         functions returning void.
2136
2137 2009-07-18  Richard Sandiford  <r.sandiford@uk.ibm.com>
2138
2139         * doc/md.texi: Document the new PowerPC "es" constraint.
2140         Document that "m" can include automodified addresses on this target,
2141         and explain how %U must be used.  Extend the "Q" and "Z" documentation
2142         to suggest "es" as well as "m".
2143         * config/rs6000/constraints.md (es): New memory constraint.
2144         (Q, Z): Update strings to match new documentation.
2145
2146 2009-07-18  Richard Sandiford  <r.sandiford@uk.ibm.com>
2147
2148         * config/rs6000/rs6000.c (rs6000_mode_dependent_address): Allow any
2149         offset from virtual_stack_vars_rtx and arg_pointer_rtx.
2150         * config/rs6000/predicates.md (volatile_mem_operand): Use
2151         offsettable_nonstrict_memref_p.
2152         * config/rs6000/rs6000.md (*floatsidf2_internal): Remove split check.
2153         (*floatunssidf2_internal): Likewise.
2154         (*fix_truncdfsi2_internal): Likewise.
2155         (*fix_trunctfsi2_internal): Likewise.
2156
2157 2009-07-17  Anatoly Sokolov  <aesok@post.ru>
2158
2159         * config/avr/avr-devices.c (avr_mcu_t): Add atmega8u2, atmega16u2 and
2160         atmega32u2 devices.
2161         * config/avr/t-avr (MULTILIB_MATCHES): (Ditto.).
2162
2163 2009-07-17  Richard Guenther  <rguenther@suse.de>
2164
2165         PR c/40401
2166         * tree-pass.h (pass_diagnose_omp_blocks): Declare.
2167         (pass_warn_unused_result): Likewise.
2168         (TODO_set_props): Remove.
2169         * omp-low.c (diagnose_omp_structured_block_errors): Change to
2170         run as a pass.
2171         (pass_diagnose_omp_blocks): Define.
2172         * c-decl.c (pop_file_scope): Do not finalize the CU here.
2173         (c_gimple_diagnostics_recursively): Remove.
2174         (finish_function): Do not call it.
2175         (c_write_global_declarations): Continue after errors.
2176         Finalize the CU here.
2177         * c-gimplify.c (c_genericize): Do not gimplify here.
2178         * c-common.c (c_warn_unused_result): Move ...
2179         * tree-cfg.c (do_warn_unused_result): ... here.
2180         (run_warn_unused_result): New function.
2181         (gate_warn_unused_result): New function.
2182         (pass_warn_unused_result): New pass.
2183         * c-common.h (c_warn_unused_result): Remove.
2184         * flags.h (flag_warn_unused_result): Declare.
2185         * c-opts.c (c_common_init_options): Enable flag_warn_unused_result.
2186         * opts.c (flag_warn_unused_result): Initialize to false.
2187         * toplev.c (compile_file): Add comment.
2188         * omp-low.c (create_omp_child_function): Do not register
2189         the function with the frontend.
2190         (diagnose_omp_structured_block_errors): Prepare to be
2191         called as optimization pass.
2192         (gate_diagnose_omp_blocks): New function.
2193         (pass_diagnose_omp_blocks): New pass.
2194         * cgraph.h (cgraph_optimize): Remove.
2195         (cgraph_analyze_function): Likewise.
2196         * cgraph.c (cgraph_add_new_function): Gimplify C++ thunks.
2197         * cgraphunit.c (cgraph_lower_function): Lower nested functions
2198         before their parents here.
2199         (cgraph_finalize_function): Not here.
2200         (cgraph_analyze_function): Gimplify functions here.
2201         (cgraph_finalize_compilation_unit): Continue after errors.
2202         Optimize the callgraph from here.
2203         (cgraph_optimize): Make static.
2204         * langhooks.c (write_global_declarations): Finalize the CU.
2205         * gimplify.c (gimplify_asm_expr): Do not emit ASMs with errors.
2206         (gimplify_function_tree): Assert we gimplify only once.
2207         Set PROP_gimple_any property.
2208         * tree-nested.c (gimplify_all_functions): New function.
2209         (lower_nested_functions): Gimplify all nested functions.
2210         * gimple.h (diagnose_omp_structured_block_errors): Remove.
2211         * passes.c (init_optimization_passes): Add pass_warn_unused_result
2212         and pass_diagnose_omp_blocks after gimplification.  Do not
2213         set TODO_set_props on all_lowering_passes.
2214         (execute_one_pass): Do not handle TODO_set_props.
2215         * Makefile.in (cgraphunit.o): Add $(TREE_DUMP_H) dependency.
2216         (gimplify.o): Add tree-pass.h dependency.
2217         * tree-inline.c (copy_statement_list): Properly copy STATEMENT_LIST.
2218         (copy_tree_body_r): Properly handle TARGET_EXPR like SAVE_EXPR.
2219         (unsave_r): Likewise.
2220         * c-omp.c (c_finish_omp_atomic): Set DECL_CONTEXT on the
2221         temporary variable.
2222
2223 2009-07-17  Sandra Loosemore  <sandra@codesourcery.com>
2224
2225         * doc/service.texi (Service): Restore previously removed link,
2226         which isn't broken after all.
2227
2228 2009-07-17  Richard Guenther  <rguenther@suse.de>
2229
2230         PR tree-optimization/40321
2231         * tree-ssa-pre.c (add_to_exp_gen): Also add names defined by
2232         PHI nodes to the maximal set.
2233         (make_values_for_phi): Add PHI arguments to the maximal set.
2234         (execute_pre): Dump PHI_GEN and the maximal set.
2235
2236 2009-07-17  Jakub Jelinek  <jakub@redhat.com>
2237
2238         PR c++/40780
2239         * gimplify.c (gimplify_conversion): Don't change non-conversions into
2240         VIEW_CONVERT_EXPR.
2241
2242 2009-07-16  Sandra Loosemore  <sandra@codesourcery.com>
2243
2244         * doc/extend.texi (Nested Functions): Replace broken link with
2245         textual reference.
2246         * doc/service.texi (Service): Remove broken link.
2247
2248 2009-07-16  H.J. Lu  <hongjiu.lu@intel.com>
2249
2250         PR bootstrap/40781
2251         * builtins.c (expand_builtin_memcmp): Use loc instead of
2252         EXPR_LOCATION (exp).
2253         (expand_builtin_strncmp): Likewise.
2254
2255 2009-07-17  Aldy Hernandez  <aldyh@redhat.com>
2256             Manuel López-Ibáñez  <manu@gcc.gnu.org>
2257
2258         PR 40435 
2259         * tree-complex.c, tree-loop-distribution.c, tree.c, tree.h,
2260         builtins.c, fold-const.c, omp-low.c, cgraphunit.c, tree-ssa-ccp.c,
2261         tree-ssa-dom.c, gimple-low.c, expr.c, tree-ssa-ifcombine.c,
2262         c-decl.c, stor-layout.c, tree-if-conv.c, c-typeck.c, gimplify.c,
2263         calls.c, tree-sra.c, tree-mudflap.c, tree-ssa-copy.c,
2264         tree-ssa-forwprop.c, c-convert.c, c-omp.c, varasm.c,
2265         tree-inline.c, c-common.c, c-common.h, gimple.c,
2266         tree-switch-conversion.c, gimple.h, tree-cfg.c, c-parser.c,
2267         convert.c: Add location argument to fold_{unary,binary,ternary},
2268         fold_build[123], build_call_expr, build_size_arg,
2269         build_fold_addr_expr, build_call_array, non_lvalue, size_diffop,
2270         fold_build1_initializer, fold_build2_initializer,
2271         fold_build3_initializer, fold_build_call_array,
2272         fold_build_call_array_initializer, fold_single_bit_test,
2273         omit_one_operand, omit_two_operands, invert_truthvalue,
2274         fold_truth_not_expr, build_fold_indirect_ref, fold_indirect_ref,
2275         combine_comparisons, fold_builtin_*, fold_call_expr,
2276         build_range_check, maybe_fold_offset_to_address, round_up,
2277         round_down.
2278
2279 2009-07-16  Jason Merrill  <jason@redhat.com>
2280
2281         PR libstdc++/37907
2282         * c-common.c (c_common_reswords): Add __is_standard_layout
2283         and __is_trivial.
2284         * c-common.h (enum rid): Add RID_IS_STD_LAYOUT and RID_IS_TRIVIAL.
2285         * doc/implement-cxx.texi: New.
2286         * doc/gcc.texi: Include it.
2287
2288 2009-07-16  DJ Delorie  <dj@redhat.com>
2289
2290         * config/m32c/m32c.c (m32c_compare_redundant): Avoid removing
2291         compares that may be indirectly affected by previous instructions.
2292
2293 2009-07-16  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
2294
2295         * builtins.c (do_mpc_arg2): New.
2296         (fold_builtin_2): Fold builtin cpow.
2297         * real.h (HAVE_mpc_pow): New.
2298
2299 2009-07-16  Bingfeng Mei  <bmei@broadcom.com>
2300
2301         * modulo-sched.c (sms_schedule): stage_count <= 1 as correct
2302         comparison to skip unprofitable schedule
2303
2304 2009-07-16  Simon Baldwin  <simonb@google.com>
2305
2306         * gcc.c (option_map): New flag -no-canonical-prefixes.
2307         * (display_help): Print help text for new flag.
2308         * (process_command): Move options translation and language specifics
2309         and handle new flag early.  Use it to set a function pointer to a
2310         prefix builder.  Replace make_relative_prefix calls with calls to
2311         the function pointed to.  Ignore new flag in regular options handling.
2312         * doc/invoke.texi (Overall Options): Documented -no-canonical-prefixes.
2313
2314 2009-07-15  DJ Delorie  <dj@redhat.com>
2315
2316         * config/mep/mep.md (sibcall_internal): Change register to avoid
2317         argument registers.
2318         (sibcall_value_internal): Likewise.
2319
2320 2009-07-15  Eric Botcazou  <ebotcazou@adacore.com>
2321
2322         PR rtl-optimization/40710
2323         * resource.c (mark_target_live_regs): Reset DF problem to LR.
2324
2325 2009-07-15  Adam Nemet  <anemet@caviumnetworks.com>
2326
2327         * config/mips/mips.md (*extenddi_truncate<mode>,
2328         *extendsi_truncate<mode>): Change type attribute to move_type
2329         with shift_shift.  Split out code handling exts from here ...
2330         (*extend<GPR:mode>_truncate<SHORT:mode>_exts): ... to this new
2331         pattern.
2332         (*extendhi_truncateqi): Change type attribute to move_type with
2333         shift_shift.  Split out code handling exts from here ...
2334         (*extendhi_truncateqi_exts): ... to this new pattern.
2335
2336 2009-07-15  Uros Bizjak  <ubizjak@gmail.com>
2337
2338         * config/i386/sse.md (copysign<mode>3): Use "and-not" SSE instruction
2339         instead of "and" with inverted sign bit mask value.  Use
2340         "nonimmediate_operand" for operand 1 and operand 2 predicate.
2341         Allocate registers only for operand 4 and operand 5.
2342
2343 2009-07-15  Jakub Jelinek  <jakub@redhat.com>
2344
2345         PR middle-end/40747
2346         * fold-const.c (fold_cond_expr_with_comparison): When folding
2347         < and <= to MIN, make sure the MIN uses the same type as the
2348         comparison's operands.
2349
2350 2009-07-15  Richard Earnshaw  <rearnsha@arm.com>
2351
2352         * arm.md (ior_xor): New code iterator.
2353         (split for ior/xor with shift and zero-extend): New split pattern.
2354         * arm/predicates.md (subreg_lowpart_operator): New special predicate.
2355
2356 2009-07-15  Richard Guenther  <rguenther@suse.de>
2357
2358         * tree-ssa-structalias.c (make_constraint_from_heapvar): Initialize
2359         offset member.
2360
2361 2009-07-15  Richard Guenther  <rguenther@suse.de>
2362
2363         PR middle-end/40753
2364         * alias.c (ao_ref_from_mem): Reject FUNCTION_DECL and LABEL_DECL bases.
2365
2366 2009-07-15  Maxim Kuvyrkov  <maxim@codesourcery.com>
2367
2368         * config/m68k/linux-unwind.h (m68k_fallback_frame_state): Update to
2369         handle 2.6.30 kernel.
2370
2371 2009-07-15  DJ Delorie  <dj@redhat.com>
2372
2373         * config/mep/mep.md (sibcall_internal): Change register to allow
2374         for 24-bit addresses.
2375         (sibcall_value_internal): Likewise.
2376
2377 2009-07-14  Ghassan Shobaki  <ghassan.shobaki@amd.com>
2378         
2379         * doc/invoke.texi: Added descriptions of the  scheduling heuristics
2380         that are enabled/disabled by the flags introduced by a previous patch.
2381         
2382 2009-07-14  DJ Delorie  <dj@redhat.com>
2383
2384         * config/mep/mep.md (sibcall_internal): Include non-toggling
2385         non-jmp case.
2386         (sibcall_value_internal): Likewise.
2387
2388 2009-07-14  Taras Glek  <tglek@mozilla.com>
2389             Rafael Espindola  <espindola@google.com>
2390
2391         * doc/sourcebuild.texi: Document install-plugin target.
2392         * configure.ac: Added install-plugin target to language makefiles.
2393         * configure: Regenerate.
2394         * Makefile.in: (install-plugin): Install more headers,
2395         depend on lang.install-plugin.
2396
2397 2009-07-15  Manuel López-Ibáñez  <manu@gcc.gnu.org>
2398
2399         * tree-vrp.c (vrp_evaluate_conditional): Mark strings for
2400         translation.
2401         
2402 2009-07-14  DJ Delorie  <dj@redhat.com>
2403
2404         * config/mep/mep.c (mep_vliw_jmp_match): New function.
2405         * config/mep/mep-protos.h (mep_vliw_jmp_match): Prototype it.
2406         * config/mep/mep.md (sibcall_internal): Change test from
2407         mep_vliw_mode_match to mep_vliw_jmp_match.
2408         (sibcall_value_internal): Likewise.
2409
2410 2009-07-14  Uros Bizjak  <ubizjak@gmail.com>
2411
2412         * config/i386/sse.md (copysign<mode>3): New expander.
2413         * config/i386/i386-protos.h (ix86_build_signbit_mask): New prototype.
2414         * config/i386/i386.c (ix86_build_signbit_mask): Make public.
2415         Use ix86_build_const_vector.
2416         (enum ix86_builtins): Add IX86_BUILTIN_CPYSGNPS and
2417         IX86_BUILTIN_CPYSGNPD.
2418         (builtin_description): Add __builtin_ia32_copysignps and
2419         __builtin_ia32_copysignpd.
2420         (ix86_builtin_vectorized_function): Handle BUILT_IN_COPYSIGN
2421         and BUILT_IN_COPYSIGNF.
2422
2423 2009-07-13  Jason Merrill  <jason@redhat.com>
2424
2425         * builtins.c (can_trust_pointer_alignment): New fn.
2426         (get_pointer_alignment): Factor it out from here.
2427         * tree.h: Declare it.
2428
2429 2009-07-14  David Edelsohn  <edelsohn@gnu.org>
2430
2431         * config/rs6000/predicates.md (offsettable_mem_operand): Test
2432         RTX_AUTOINC class.
2433
2434 2009-07-14  Dodji Seketeli  <dodji@redhat.com>
2435
2436         PR debug/40705
2437         PR c++/403057
2438         * dwarf2.out.c (gen_type_die_with_usage): Added comment.
2439
2440 2009-07-14  Richard Guenther  <rguenther@suse.de>
2441             Andrey Belevantsev <abel@ispras.ru>
2442
2443         PR middle-end/40745
2444         * cfgexpand.c (partition_stack_vars): Do not bother to update
2445         alias information when not optimizing.
2446
2447 2009-07-14  Richard Guenther  <rguenther@suse.de>
2448             Andrey Belevantsev <abel@ispras.ru>
2449
2450         * tree-ssa-alias.h (refs_may_alias_p_1): Declare.
2451         (pt_solution_set): Likewise.
2452         * tree-ssa-alias.c (refs_may_alias_p_1): Export.
2453         * tree-ssa-structalias.c (pt_solution_set): New function.
2454         * final.c (rest_of_clean_state): Free SSA data structures.
2455         * print-rtl.c (print_decl_name): Remove.
2456         (print_mem_expr): Implement in terms of print_generic_expr.
2457         * alias.c (ao_ref_from_mem): New function.
2458         (rtx_refs_may_alias_p): Likewise.
2459         (true_dependence): Query alias-export info.
2460         (canon_true_dependence): Likewise.
2461         (write_dependence_p): Likewise.
2462         * tree-dfa.c (get_ref_base_and_extent): For void types leave
2463         size unknown.
2464         * emit-rtl.c (component_ref_for_mem_expr): Remove.
2465         (mem_expr_equal_p): Use operand_equal_p.
2466         (set_mem_attributes_minus_bitpos): Do not use
2467         component_ref_for_mem_expr.
2468         * cfgexpand.c (add_partitioned_vars_to_ptset): New function.
2469         (update_alias_info_with_stack_vars): Likewise.
2470         (partition_stack_vars): Call update_alias_info_with_stack_vars.
2471         * tree-ssa.c (delete_tree_ssa): Do not release SSA names
2472         explicitly nor clear stmt operands.
2473         Free the decl-to-pointer map.
2474         * tree-optimize.c (execute_free_datastructures): Do not free
2475         SSA data structures here.
2476         * tree-flow.h (struct gimple_df): Add decls_to_pointers member.
2477         * Makefile.in (emit-rtl.o): Add pointer-set.h dependency.
2478         (alias.o): Add tree-ssa-alias.h, pointer-set.h and $(TREE_FLOW_H)
2479         dependencies.
2480         (print-rtl.o): Add $(DIAGNOSTIC_H) dependency.
2481
2482 2009-07-13  DJ Delorie  <dj@redhat.com>
2483
2484         * config/mep/mep.h (CC1_SPEC): Tweak parameters to trigger
2485         unrolling at the right iteration count.
2486
2487         * config/mep/mep.c (mep_expand_prologue): Fix frame pointer
2488         calculations.
2489
2490 2009-07-13  Ghassan Shobaki  <ghassan.shobaki@amd.com>
2491         
2492         * haifa-sched.c (rank_for_schedule): Introduced flags to
2493         enable/disable individual scheduling heuristics.
2494         * common.opt: Introduced flags to enable/disable individual
2495         heuristics in the scheduler.    
2496         * doc/invoke.texi: Introduced flags to enable/disable individual
2497         heuristics in the scheduler.
2498         
2499 2009-07-13  Kai Tietz  <kai.tietz@onevision.com>
2500
2501         * config/i386/t-gthr-win32 (LIB2FUNCS_EXTRA): Remove file
2502         config/i386/mingw-tls.c.
2503         * config/i386/mingw-tls.c: Removed.
2504
2505 2009-07-13  Ira Rosen  <irar@il.ibm.com>
2506
2507         * tree-vect-loop.c (get_initial_def_for_reduction): Ensure that the 
2508         checks access only relevant statements.
2509         (vectorizable_reduction): Likewise.
2510
2511 2009-07-12  Kai Tietz  <kai.tietz@onevision.com>
2512
2513         * config/i386/cygming.h (TARGET_OS_CPP_BUILTINS): Define _X86_
2514         just for 32-bit case.
2515
2516 2009-07-12  Jan Hubicka  <jh@suse.cz>
2517
2518         PR tree-optimization/40585
2519         * except.c (expand_resx_expr): When there already is resume
2520         instruction, produce linked list.
2521         (build_post_landing_pads): Assert that resume is empty.
2522         (connect_post_landing_pads): Handle resume lists.
2523         (dump_eh_tree): Dump resume list.
2524
2525 2009-07-12  Ira Rosen  <irar@il.ibm.com>
2526
2527         * tree-parloops.c (loop_parallel_p): Call vect_is_simple_reduction
2528         with additional argument.
2529         * tree-vectorizer.h (enum vect_def_type): Add
2530         vect_double_reduction_def.
2531         (vect_is_simple_reduction): Add argument.
2532         * tree-vect-loop.c (vect_determine_vectorization_factor): Fix
2533         indentation.
2534         (vect_analyze_scalar_cycles_1): Detect double reduction. Call
2535         vect_is_simple_reduction with additional argument.
2536         (vect_analyze_loop_operations): Handle exit phi nodes in case of
2537         double reduction.
2538         (reduction_code_for_scalar_code): Handle additional codes by
2539         returning ERROR_MARK for them. Fix comment and indentation.
2540         (vect_is_simple_reduction): Fix comment, add argument to specify
2541         double reduction. Detect double reduction.
2542         (get_initial_def_for_induction): Fix indentation.
2543         (get_initial_def_for_reduction): Fix comment and indentation.
2544         Handle double reduction. Create initial definitions that do not
2545         require adjustment if ADJUSTMENT_DEF is NULL. Handle additional cases.
2546         (vect_create_epilog_for_reduction): Fix comment, add argument to
2547         handle double reduction. Use PLUS_EXPR in case of MINUS_EXPR in
2548         epilogue result extraction. Create double reduction phi node and
2549         replace relevant uses.
2550         (vectorizable_reduction): Call vect_is_simple_reduction with
2551         additional argument. Fix indentation. Update epilogue code treatment
2552         according to the changes in reduction_code_for_scalar_code. Check
2553         for double reduction. Call vect_create_epilog_for_reduction with
2554         additional argument.
2555         * tree-vect-stmts.c (process_use): Handle double reduction, update
2556         documentation.
2557         (vect_mark_stmts_to_be_vectorized): Handle double reduction.
2558         (vect_get_vec_def_for_operand): Likewise.
2559
2560 2009-07-12  Danny Smith  <dansmister@gmail.com>
2561
2562         * config/i386/winnt.c (i386_pe_determine_dllexport_p): Don't
2563         dllexport if !TREE_PUBLIC.
2564         (i386_pe_maybe_record_exported_symbol): Assert TREE_PUBLIC.
2565
2566 2009-07-11  Anatoly Sokolov  <aesok@post.ru>
2567
2568         * config/avr/avr.h (TARGET_CPU_CPP_BUILTINS): Redefine.
2569         (avr_extra_arch_macro) Remove declatation.
2570         * config/avr/avr.c (avr_cpu_cpp_builtins): New function.
2571         (avr_extra_arch_macro) Declare as static.
2572         * config/avr/avr-protos.h (avr_cpu_cpp_builtins): Dclare.
2573
2574 2009-07-11  Jan Hubicka  <jh@suse.cz>
2575
2576         PR middle-end/48388
2577         * except.c (can_be_reached_by_runtime): Test for NULL aka bitmap.
2578
2579 2009-07-11  Jakub Jelinek  <jakub@redhat.com>
2580
2581         PR debug/40713
2582         * dwarf2out.c (dw_fde_struct): Add in_std_section and
2583         cold_in_std_section bits.
2584         (dwarf2out_begin_prologue): Initialize them.
2585         (dwarf2out_finish): Don't emit FDE range into .debug_ranges
2586         if already covered by text_section or cold_text_section range.
2587
2588         PR rtl-optimization/40667
2589         * defaults.h (MINIMUM_ALIGNMENT): Define if not defined.
2590         * doc/tm.texi (MINIMUM_ALIGNMENT): Document it.
2591         * config/i386/i386.h (MINIMUM_ALIGNMENT): Define.
2592         * config/i386/i386.c (ix86_minimum_alignment): New function.
2593         * config/i386/i386-protos.h (ix86_minimum_alignment): New prototype.
2594         * cfgexpand.c (expand_one_var): Use MINIMIM_ALIGNMENT.
2595         * emit-rtl.c (gen_reg_rtx): Likewise.
2596         * function.c (assign_parms): Likewise.  If nominal_type needs
2597         bigger alignment than FUNCTION_ARG_BOUNDARY, use its alignment
2598         rather than passed_type's alignment.
2599
2600         PR target/40668
2601         * function.c (assign_parm_setup_stack): Adjust
2602         MEM_OFFSET (data->stack_parm) if promoted_mode is different
2603         from nominal_mode on big endian.
2604
2605 2009-07-11  Paolo Bonzini  <bonzini@gnu.org>
2606
2607         * expmed.c (emit_store_flag_1): Fix choice of zero vs. sign extension.
2608
2609 2009-07-10  DJ Delorie  <dj@redhat.com>
2610
2611         * config/mep/mep.c (mep_can_inline_p): Correct logic, and simplify.
2612
2613 2009-07-10  Mark Mitchell  <mark@codesourcery.com>
2614
2615         * config/arm/thumb2.md (thumb2_cbz): Correct computation of length
2616         attribute.
2617         (thumb2_cbnz): Likewise.
2618
2619 2009-07-10  David Daney  <ddaney@caviumnetworks.com>
2620
2621         PR target/39079
2622         * config.gcc (supported_defaults): Add synci.
2623         (with_synci): Add validation.
2624         (all_defaults): Add synci.
2625         * config/mips/mips.md (clear_cache): Use TARGET_SYNCI instead of
2626         ISA_HAS_SYNCI.
2627         (synci): Same.
2628         * config/mips/mips.opt (msynci): New option.
2629         * config/mips/mips.c (mips_override_options): Warn on use of
2630         -msynci for targets that do now support it.
2631         * gcc/config/mips/mips.h (OPTION_DEFAULT_SPECS): Add a default for
2632         msynci.
2633         * gcc/doc/invoke.texi (-msynci): Document the new option.
2634         * doc/install.texi (--with-synci): Document the new option.
2635
2636 2009-07-10  Richard Guenther  <rguenther@suse.de>
2637
2638         PR tree-optimization/40496
2639         * tree-ssa-loop-manip.c (tree_transform_and_unroll_loop): Create
2640         the PHI result with a compatible type.
2641
2642 2009-07-10  Manuel López-Ibáñez  <manu@gcc.gnu.org>
2643
2644         PR 25509
2645         PR 40614
2646         * c.opt (Wunused-result): New.
2647         * doc/invoke.texi: Document it.
2648         * c-common.c (c_warn_unused_result): Use it.
2649
2650 2009-07-09  DJ Delorie  <dj@redhat.com>
2651
2652         * targhooks.c (default_target_can_inline_p): Rename from
2653         default_target_option_can_inline_p.
2654         * targhooks.h (default_target_can_inline_p): Likewise.
2655         * target-def.h (TARGET_CAN_INLINE_P): Rename from
2656         TARGET_OPTION_CAN_INLINE_P.
2657         * config/i386/i386.c (TARGET_CAN_INLINE_P): Likewise.
2658         * config/mep/mep.c (TARGET_CAN_INLINE_P): Likewise.
2659         (mep_target_can_inline_p): Rename from
2660         mep_target_option_can_inline_p.
2661
2662         PR target/40626
2663         * config/mep/mep.h (FUNCTION_ARG_REGNO_P): Add coprocessor
2664         registers used to pass vectors.
2665
2666         * config/mep/mep.c (mep_option_can_inline_p): Remove error call.
2667
2668 2009-07-09  Tom Tromey  <tromey@redhat.com>
2669
2670         * unwind-dw2-fde-darwin.c: Include dwarf2.h.
2671         * config/mmix/mmix.c: Include dwarf2.h.
2672         * config/rs6000/darwin-fallback.c: Include dwarf2.h.
2673         * config/xtensa/unwind-dw2-xtensa.c: Include dwarf2.h.
2674         * config/sh/sh.c: Include dwarf2.h.
2675         * config/i386/i386.c: Include dwarf2.h.
2676         * Makefile.in (DWARF2_H): Remove 'elf'.
2677         * except.c: Include dwarf2.h.
2678         * unwind-dw2.c: Include dwarf2.h.
2679         * dwarf2out.c: Include dwarf2.h.
2680         * unwind-dw2-fde-glibc.c: Include dwarf2.h.
2681         * unwind-dw2-fde.c: Include dwarf2.h.
2682         * dwarf2asm.c: Include dwarf2.h.
2683
2684 2009-07-09  Maxim Kuvyrkov  <maxim@codesourcery.com>
2685
2686         * haifa-sched.c (insn_finishes_cycle_p): New static function.
2687         (max_issue): Use it.
2688         * sched-int.h (struct sched_info: insn_finishes_block_p): New
2689         scheduler hook.
2690         * sched-rgn.c (rgn_insn_finishes_block_p): Implement it.
2691         (region_sched_info): Update.
2692         * sched-ebb.c (ebb_sched_info): Update.
2693         * modulo-sched.c (sms_sched_info): Update.
2694         * sel-sched-ir.c (sched_sel_haifa_sched_info): Update.
2695
2696 2009-07-09  Maxim Kuvyrkov  <maxim@codesourcery.com>
2697
2698         * varasm.c (build_constant_desc): Don't share RTL in pool entries.
2699
2700 2009-07-09  Basile Starynkevitch  <basile@starynkevitch.net>
2701
2702         * plugin.c (try_init_one_plugin): passes RTLD_GLOBAL to dlopen. 
2703
2704 2009-07-09  Jakub Jelinek  <jakub@redhat.com>
2705
2706         PR middle-end/40692
2707         * fold-const.c (fold_cond_expr_with_comparison): Don't replace
2708         arg1 with arg01 if arg1 is already INTEGER_CST.
2709
2710 2009-07-08  Adam Nemet  <anemet@caviumnetworks.com>
2711
2712         * simplify-rtx.c (simplify_binary_operation_1) <AND>:
2713         Transform (and (truncate)) into (truncate (and)).
2714
2715 2009-07-08  Adam Nemet  <anemet@caviumnetworks.com>
2716
2717         * combine.c (make_extraction): Check TRULY_NOOP_TRUNCATION before
2718         creating LHS paradoxical subregs.  Fix surrounding returns to
2719         use NULL_RTX rather than 0.
2720
2721 2009-07-08  DJ Delorie  <dj@redhat.com>
2722
2723         * config/mep/mep.c: (mep_option_can_inline_p): New.
2724         (TARGET_OPTION_CAN_INLINE_P): Define.
2725
2726 2009-07-08  Mark Wielaard  <mjw@redhat.com>
2727
2728         PR debug/40659
2729         * dwarf2out.c (add_data_member_location_attribute): When we have
2730         only a constant offset don't emit a new location description using
2731         DW_OP_plus_uconst, but just add the constant with add_AT_int, when
2732         dwarf_version > 2.
2733
2734 2009-07-08  Richard Henderson  <rth@redhat.com>
2735
2736         PR target/38900
2737         * config/i386/i386.h (CONDITIONAL_REGISTER_USAGE): Move to i386.c.
2738         (enum reg_class): Add CLOBBERED_REGS.
2739         (REG_CLASS_NAMES, REG_CLASS_CONTENTS): Likewise.
2740         * config/i386/i386.c (ix86_conditional_register_usage): Moved
2741         from CONDITIONAL_REGISTER_USAGE; build CLOBBERED_REGS for 64-bit.
2742         (ix86_function_ok_for_sibcall): Tidy.  Disallow MS->SYSV sibcalls.
2743         (ix86_expand_call): Use sibcall_insn_operand when needed.  Don't
2744         force 64-bit sibcalls into R11.
2745         * config/i386/constraints.md (U): New constraint.
2746         * config/i386/i386.md (sibcall_1, sibcall_value_1): Use it.
2747         (sibcall_1_rex64, sibcall_value_1_rex64): Likewise.
2748         (sibcall_1_rex64_v, sibcall_value_1_rex64_v): Remove.
2749
2750 2009-07-08  Shujing Zhao  <pearly.zhao@oracle.com>
2751
2752         * basic-block.h (dump_regset, debug_regset): Remove duplicate
2753         prototypes.
2754         * c-objc-common.h (c_initialize_diagnostics): Ditto.
2755         * ebitmap.h (dump_ebitmap): Ditto.
2756         * optabs.h (optab_libfunc): Ditto.
2757         * tree.h (tree_expr_nonzero_warnv_p): Ditto.
2758         * tree-flow.h (vect_can_force_dr_alignment_p,
2759         get_vectype_for_scalar_type): Ditto.
2760         (vectorize_loops): Move prototype to ...
2761         * tree-vectorizer.h: ... here. Also, adjust comment.
2762         (vect_set_verbosity_level): Remove duplicate prototype.
2763         * tree-ssa-loop.c: Include tree-vectorizer.h.
2764         * Makefile.in (tree-ssa-loop.o): Depend on tree-vectorizer.h.
2765
2766 2009-07-08  Nick Clifton  <nickc@redhat.com>
2767
2768         * config/i386/unix.h (ASM_COMMENT_START): Add a space after the
2769         forward slash.
2770
2771 2009-07-08  DJ Delorie  <dj@redhat.com>
2772
2773         * config/mep/mep-ivc2.cpu (cpmovtocsar0_C3, cpmovtocsar1_C3,
2774         cpmovtocc_C3, cpmovtocsar0_P0S_P1, cpmovtocsar1_P0S_P1,
2775         cpmovtocc_P0S_P1): Mark volatile.  Note which registers are
2776         written to.
2777         * config/mep/intrinsics.md: Regenerated.
2778         * config/mep/mep.c (mep_interrupt_saved_reg): Save IVC2 control
2779         registers when asm() or calls are detected.
2780
2781 2009-07-08  Manuel López-Ibáñez  <manu@gcc.gnu.org>
2782
2783         PR c++/31246
2784         * gimplify.c (gimplify_expr): Propagate no_warning flag when
2785         gimplifying.
2786         * gimple (gimple_build_call_from_tree): Likewise.
2787         * tree-cfg.c (remove_useless_stmts_warn_notreached): Check
2788         no_warning flag before warning.
2789
2790 2009-07-07  Manuel López-Ibáñez  <manu@gcc.gnu.org>
2791
2792         * tree.c (set_expr_locus): Remove.
2793         * tree.h (EXPR_LOCUS,SET_EXPR_LOCUS,set_expr_locus): Remove.
2794         * c-typeck.c (c_finish_stmt_expr):  Replace EXPR_LOCUS by
2795         EXPR_LOCATION.
2796         * gimplify.c (internal_get_tmp_var): Likewise.
2797         (gimplify_call_expr): Likewise.
2798         (gimplify_one_sizepos): Likewise.
2799
2800 2009-07-07  Eric Botcazou  <ebotcazou@adacore.com>
2801
2802         PR debug/40666
2803         * dbxout.c (dbxout_symbol) <PARM_DECL>: Deal with parameters pointing
2804         to variables for debugging purposes.
2805
2806 2009-06-23  Mark Loeser  <mark@halcy0n.com>
2807
2808         PR build/40010
2809         * Makefile.in (gcc.pod): Depend on gcc-vers.texi.
2810
2811 2009-07-07  Manuel López-Ibáñez  <manu@gcc.gnu.org>
2812
2813         * pretty-print.c (pp_base_format): Remove %J.
2814         * c-format.c (gcc_diag_char_table, gcc_tdiag_char_table,
2815         gcc_cxxdiag_char_table): Likewise.
2816         (init_dynamic_diag_info): Likewise.
2817
2818 2009-07-07  Manuel López-Ibáñez  <manu@gcc.gnu.org>
2819
2820         * pretty-print.c (pp_base_format): Remove %H.
2821         * c-format.c (gcc_diag_char_table, gcc_tdiag_char_table,
2822         gcc_cxxdiag_char_table): Likewise.
2823         (init_dynamic_diag_info): Likewise.
2824         * config/mep/mep.c (mep_select_section): Likewise.
2825
2826 2009-07-07  Duncan Sands  <baldrick@free.fr>
2827
2828         * final.c (pass_clean_state): Give the pass a name.
2829         * passes.c (pass_rest_of_compilation): Likewise.
2830         * tree-optimize.c (pass_all_optimizations): Likewise.
2831
2832 2009-07-07  H.J. Lu  <hongjiu.lu@intel.com>
2833
2834         * config/ia64/ia64.c (ia64_handle_model_attribute): Remove
2835         an extra 'decl' for error_at.
2836
2837 2009-07-07  Jakub Jelinek  <jakub@redhat.com>
2838
2839         PR middle-end/40669
2840         * tree-tailcall.c (adjust_return_value_with_ops,
2841         create_tailcall_accumulator): Set DECL_GIMPLE_REG_P on the temporary
2842         if it has complex or vector type.
2843
2844 2009-07-07  Olivier Hainque  <hainque@adacore.com>
2845
2846         * config/alpha/t-osf4 (SHLIB_LINK): Do not hide the dummy weak
2847         pthread symbols.
2848
2849 2009-07-07  Basile Starynkevitch  <basile@starynkevitch.net>
2850
2851         * Makefile.in: added more lists of includes to PLUGIN_HEADERS.
2852
2853 2009-07-07  Manuel López-Ibáñez  <manu@gcc.gnu.org>
2854
2855         * cgraphunit.c: Replace %J by an explicit location.  Update all calls.
2856         * c-decl.c: Likewise.
2857         * function.c: Likewise.
2858         * varasm.c: Likewise.
2859         * tree-ssa.c: Likewise.
2860         * c-common.c: Likewise.
2861         * tree-cfg.c: Likewise.
2862         * config/spu/spu.c: Likewise.
2863         * config/ia64/ia64.c: Likewise.
2864         * config/v850/v850.c: Likewise.
2865
2866 2009-07-06  DJ Delorie  <dj@redhat.com>
2867
2868         * config/mep/mep-core.cpu (fsft, ssarb): Mark as VOLATILE.
2869         * config/mep/mep-ivc2.cpu (many): Add VOLATILE to more insns that make
2870         unspecified accesses to control registers.
2871         * config/mep/intrinsics.md: Regenerate.
2872         * config/mep/intrinsics.h: Regenerate.
2873         * config/mep/mep-intrin.h: Regenerate.
2874
2875 2009-07-07  Manuel López-Ibáñez  <manu@gcc.gnu.org>
2876
2877         * c-lex.c: Replace %H by an explicit location. Update all calls.
2878         * c-common.c: Likewise.
2879         * c-decl.c: Likewise.
2880         * c-typeck.c: Likewise.
2881         * fold-const.c: Likewise.
2882         * gimplify.c: Likewise.
2883         * stmt.c: Likewise.
2884         * tree-cfg.c: Likewise.
2885         * tree-ssa-loop-niter.c: Likewise.
2886         * tree-vrp.c: Likewise.
2887         * value-prof.c: Likewise.
2888
2889 2009-07-06  Diego Novillo  <dnovillo@google.com>
2890
2891         * tree-dfa.c (dump_variable): Write DECL_INITIAL for VAR
2892         if it has one.  Handle cases where VAR does not have an
2893         annotation or cfun is NULL.
2894
2895 2009-07-06  Diego Novillo  <dnovillo@google.com>
2896
2897         * tree.c: Include debug.h.
2898         (initialize_tree_contains_struct): New.
2899         (init_ttree): Call it.
2900         (tree_node_structure_for_code): Factor out of ...
2901         (tree_node_structure): ... here.
2902         * treestruct.def (TS_PHI_NODE): Remove.
2903         (TS_GIMPLE_STATEMENT): Remove.
2904
2905 2009-07-06  Diego Novillo  <dnovillo@google.com>
2906
2907         * tree-pretty-print.c (dump_generic_node): Protect against NULL op0.
2908         (debug_tree_chain): Handle cycles.
2909
2910 2009-07-06  Nick Clifton  <nickc@redhat.com>
2911             DJ Delorie  <dj@redhat.com>
2912
2913         * config.sh/lib1funcs.h (FMOVD_WORKS): Only define if
2914         __FMOVD_ENABLED__ is defined.
2915         * config/sh/sh.h
2916         (TARGET_FMOVD): Provide a default definition.
2917         (MASK_FMOVD): Likewise.
2918         (TARGET_CPU_CPP_BUILTINS): Define
2919         __FMOVD_ENABLED__ if TARGET_FMOVD is true.
2920         * config/sh/sh.md (movdf_i4): For alternative 0 use either one or
2921         two fmov instructions depending upon whether TARGET_FMOVD is enabled.
2922         (split for DF load from memory into register): Also handle
2923         MEMs which consist of REG+DISP addressing.
2924         (split for DF store from register to memory): Likewise.
2925         (movsf_ie): Always use single fp_mode.
2926         * config/sh/sh.c (sh_override_options): Do not automatically
2927         enable TARGET_MOVD for the SH2A when supporting doubles - leave
2928         that to the -mfmovd command line switch.
2929         (broken_move): Do not restrict fldi test to only the SH4 and SH4A.
2930         (fldi_ok): Always allow.
2931         * config/sh/sh.opt (mfmovd): Remove this switch.
2932         * doc/invoke.texi (-mfmovd): Remove documentation of this switch.
2933
2934 2009-07-06  J"orn Rennecke  <joern.rennecke@arc.com>
2935             Kaz Kojima  <kkojima@gcc.gnu.org>
2936
2937         PR rtl-optimization/30807
2938         * postreload.c (reload_combine): For every new use of REG_SUM,
2939         record the use of BASE.
2940
2941 2009-07-06  Jan Hubicka  <jh@suse.cz>
2942
2943         * params.def: Revert my accidental commit at 2009-06-30.
2944
2945 2009-07-04  Ian Lance Taylor  <iant@google.com>
2946
2947         PR target/40636
2948         * config/i386/msformat-c.c (mingw_format_attributes): Declare as
2949         EXPORTED_CONST.
2950         (mingw_format_attribute_overrides): Likewise.
2951
2952 2009-07-04  Jakub Jelinek  <jakub@redhat.com>
2953
2954         PR debug/40596
2955         * dwarf2out.c (based_loc_descr): For crtl->stack_realign_tried
2956         don't check cfa.reg.  Instead of cfa.indirect use
2957         fde && fde->drap_reg != INVALID_REGNUM test.
2958
2959 2009-07-04  Eric Botcazou  <ebotcazou@adacore.com>
2960
2961         * postreload.c (reload_combine): Replace CONST_REG with INDEX_REG.
2962
2963 2009-07-03  Vladimir Makarov  <vmakarov@redhat.com>
2964
2965         PR target/40587
2966         * ira.c (build_insn_chain): Use DF_LR_OUT instead of df_get_live_out.
2967
2968 2009-07-03  Richard Guenther  <rguenther@suse.de>
2969
2970         PR tree-optimization/40640
2971         * tree-switch-conversion.c (build_arrays): Perform arithmetic
2972         in original type.
2973
2974 2009-07-03  Jan Hubicka  <jh@suse.cz>
2975
2976         * ipa-inline.c (cgraph_decide_inlining_incrementally): When optimizing
2977         for size, reduce amount of inlining.
2978
2979 2009-07-03  Richard Guenther  <rguenther@suse.de>
2980
2981         PR middle-end/34163
2982         * tree-chrec.c (chrec_convert_1): Fold (T2)(t +- x) to (T2)t +- (T2)x
2983         if t +- x is known to not overflow and the conversion widens the
2984         operation.
2985         * Makefile.in (tree-chrec.o): Add $(FLAGS_H) dependency.
2986
2987 2009-07-03  Jan Hubicka  <jh@suse.cz>
2988
2989         * ipa-pure-const.c (analyze): Update loop optimizer init.
2990         * tree-ssa-loop-iv-canon.c (empty_loop_p, remove_empty_loop,
2991         try_remove_empty_loop, remove_empty_loops): Remove.
2992         * tree-ssa-loop.c (tree_ssa_empty_loop, pass_empty_loop): Remove.
2993         * tree-ssa-dce.c (find_obviously_necessary_stmts): Use finiteness info
2994         to mark regular loops as neccesary.
2995         (degenerate_phi_p): New function.
2996         (propagate_necessity, remove_dead_phis): Use it.
2997         (forward_edge_to_pdom): Likewise.
2998         (eliminate_unnecessary_stmts): Take care to remove uses of results of
2999         virtual PHI nodes that became unreachable.
3000         (perform_tree_ssa_dce): Initialize/deinitialize loop optimizer.
3001         * tree-flow.h (remove_empty_loops): Remove.
3002         * passes.c (init_optimization_passes): Remove.
3003
3004 2009-07-03  Uros Bizjak  <ubizjak@gmail.com>
3005
3006         * config/i386/i386.md (fix_trunc<mode>_fisttp_i387_1): Use
3007         can_create_pseudo_p.
3008         (*fix_trunc<mode>_i387_1): Ditto.
3009         (*floathi<mode>2_1): Ditto.
3010         (*float<SSEMODEI24:mode><X87MODEF:mode>2_1): Ditto.
3011         (*fistdi2_1): Ditto.
3012         (*fist<mode>2_1): Ditto.
3013         (frndintxf2_floor): Ditto.
3014         (*fist<mode>2_floor_1): Ditto.
3015         (frndintxf2_ceil): Ditto.
3016         (*fist<mode>2_ceil_1): Ditto.
3017         (frndintxf2_trunc): Ditto.
3018         (frndintxf2_mask_pm): Ditto.
3019         (fxam<mode>2_i387_with_temp): Ditto.
3020         * config/i386/sse.md (mulv16qi3): Ditto.
3021         (*sse2_mulv4si3): Ditto.
3022         (mulv2di3): Ditto.
3023         (sse4_2_pcmpestr): Ditto.
3024         (sse4_2_pcmpistr): Ditto.
3025
3026 2009-07-03  Jan Hubicka  <jh@suse.cz>
3027
3028         * tree-ssa-dce.c (bb_contains_live_stmts): New bitmap.
3029         (mark_stmt_necessary): Set it.
3030         (mark_operand_necessary): Set it.
3031         (mark_control_dependent_edges_necessary): Set it.
3032         (mark_virtual_phi_result_for_renaming): New function.
3033         (get_live_post_dom): New function.
3034         (forward_edge_to_pdom): New function.
3035         (remove_dead_stmt): Fix handling of control dependences.
3036         (tree_dce_init): Init new bitmap.
3037         (tree_dce_done): Free it.
3038
3039 2009-07-02  Richard Guenther  <rguenther@suse.de>
3040
3041         PR bootstrap/40617
3042         * tree-ssa-structalias.c (new_var_info): Initialize
3043         is_restrict_var.
3044
3045 2009-07-02  Jan Hubicka  <jh@suse.cz>
3046
3047         * ipa-pure-const.c (check_op): Use PTA info to see if indirect_ref is
3048         local.
3049
3050 2009-07-02  Paolo Bonzini  <bonzini@gnu.org>
3051
3052         * expmed.c (emit_cstore, emit_store_flag_1): Accept target_mode
3053         instead of recomputing it.  Adjust calls.
3054         (emit_store_flag): Adjust recursive calls.
3055
3056 2009-07-02  Richard Guenther  <rguenther@suse.de>
3057
3058         * tree-ssa-live.c (remove_unused_locals): Do not remove
3059         heap variables.
3060         * tree-ssa-structalias.c (handle_lhs_call): Delay setting
3061         of DECL_EXTERNAL for HEAP variables.
3062         (compute_points_to_sets): Set DECL_EXTERNAL for escaped
3063         HEAP variables.  Do not adjust RESTRICT vars.
3064         (find_what_var_points_to): Nobody cares if something
3065         points to READONLY.
3066
3067 2009-07-02  Ben Elliston  <bje@au.ibm.com>
3068
3069         * unwind-dw2-fde-glibc.c (_Unwind_IteratePhdrCallback): Move
3070         pc_low and pc_high declarations to the top of the function.
3071
3072 2009-07-01  DJ Delorie  <dj@redhat.com>
3073
3074         * config/mep/mep.c (mep_handle_option): Leave IVC2 control
3075         registers as fixed.
3076         (mep_interrupt_saved_reg): Save appropriate IVC2 control registers.
3077         * config/mep/mep-ivc2.cpu: Add VOLATILE to insns that make
3078         unspecified accesses to control registers.
3079         * config/mep/intrinsics.md: Regenerate.
3080         * config/mep/intrinsics.h: Regenerate.
3081         * config/mep/mep-intrin.h: Regenerate.
3082
3083 2009-07-01  Anthony Green  <green@moxielogic.com>
3084
3085         * config/moxie/moxie.c (moxie_expand_prologue): Use dec
3086         instruction when possible.
3087         (moxie_expand_prologue): Ditto.  Also, save an instruction and
3088         some complexity by popping off of $r12 instead of $sp.
3089         * config/moxie/moxie.md (movsi_pop): Don't assume $sp.  Take two
3090         operands.
3091
3092 2009-07-01  Richard Henderson  <rth@redhat.com>
3093
3094         PR bootstrap/40347
3095         * function.c (reposition_prologue_and_epilogue_notes): If epilogue
3096         contained no insns, reposition note before last insn.
3097
3098 2009-07-01  Richard Henderson  <rth@redhat.com>
3099
3100         PR debug/40431
3101         * dwarf2out.c (def_cfa_1): Revert 2009-06-11 change for
3102         DW_CFA_def_cfa_offset and DW_CFA_def_cfa.
3103
3104 2009-07-01  Michael Meissner  <meissner@linux.vnet.ibm.com>
3105
3106         PR bootstrap/40558
3107         * config/rs6000/rs6000.c (print_operand): Undo change that breaks
3108         darwin9 for printing reg addresses with %y.
3109
3110 2009-07-01  Adam Nemet  <anemet@caviumnetworks.com>
3111
3112         * combine.c (force_to_mode): Handle TRUNCATE.  Factor out
3113         truncation from operands in binary operations.
3114
3115 2009-07-01  Adam Nemet  <anemet@caviumnetworks.com>
3116
3117         Revert:
3118         2009-01-11  Adam Nemet  <anemet@caviumnetworks.com>
3119         * expmed.c (store_bit_field_1): Properly truncate the paradoxical
3120         subreg of op0 to the original op0.
3121
3122         * expmed.c (store_bit_field_1): Use a temporary as the destination
3123         instead of a paradoxical subreg when we need to truncate the result.
3124
3125 2009-07-01  DJ Delorie  <dj@redhat.com>
3126
3127         * config/mep/mep-ivc2.cpu (cmov, cmovc, cmovh): Add intrinsic
3128         names to VLIW variants.
3129         (ivc2rm, ivc2crn): Make data type consistent with non-VLIW variants.
3130         * config/mep/intrinsics.md: Regenerate.
3131         * config/mep/intrinsics.h: Regenerate.
3132         * config/mep/mep-intrin.h: Regenerate.
3133
3134 2009-07-01  Jakub Jelinek  <jakub@redhat.com>
3135
3136         PR debug/40462
3137         * jump.c (returnjump_p): Revert last patch.
3138         * dwarf2out.c (dwarf2out_begin_epilogue): Handle SEQUENCEs.
3139
3140 2009-07-01  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
3141
3142         PR target/40575
3143         * pa.md (casesi32p): Use jump table label to determine the offset
3144         of the jump table.
3145         (casesi64p): Likewise.
3146
3147         * pa.c (forward_branch_p): Return bool type.  Use instruction
3148         addresses when available.  Assert that INSN has a jump label.
3149         (pa_adjust_insn_length): Don't call forward_branch_p if INSN doesn't
3150         have a jump label.
3151
3152 2009-07-01  Richard Guenther  <rguenther@suse.de>
3153
3154         PR tree-optimization/19831
3155         * tree-ssa-dce.c (propagate_necessity): Calls to functions
3156         that only act as barriers do not make any previous stores necessary.
3157         * tree-ssa-structalias.c (handle_lhs_call): Delay making
3158         HEAP variables global, do not add a constraint from nonlocal.
3159         (find_func_aliases): Handle escapes through return statements.
3160         (compute_points_to_sets): Make escaped HEAP variables global.
3161
3162 2009-07-01  Paolo Bonzini  <bonzini@gnu.org>
3163
3164         PR bootstrap/40597
3165         * expmed.c (emit_store_flag): Perform a conversion if necessary,
3166         after reducing a DImode cstore to SImode.
3167
3168 2009-07-01  Paolo Bonzini  <bonzini@gnu.org>
3169
3170         * expr.c (expand_expr_real_1): Reinstate fallthrough to
3171         TRUTH_ANDIF_EXPR if do_store_flag returns NULL.
3172
3173 2009-07-01  Maciej W. Rozycki  <macro@linux-mips.org>
3174
3175         * config/vax/vax.h (TARGET_BSD_DIVMOD): New macro.  Set to 1.
3176         * config/vax/linux.h (TARGET_BSD_DIVMOD): New macro.  Redefine the
3177         to 0.
3178         * config/vax/vax.c (vax_init_libfuncs): Only redefine udiv_optab
3179         and umod_optab if TARGET_BSD_DIVMOD.
3180         * config/vax/lib1funcs.asm: New file.
3181         * config/vax/t-linux: New file.
3182         * config.gcc (vax-*-linux*): Set tmake_file to vax/t-linux.
3183
3184 2009-06-30  Jakub Jelinek  <jakub@redhat.com>
3185
3186         PR c++/40566
3187         * convert.c (convert_to_integer) <case COND_EXPR>: Don't convert
3188         to type arguments that have void type.
3189
3190         PR debug/40573
3191         * dwarf2out.c (gen_formal_parameter_die): Call
3192         equate_decl_number_to_die if node is different from origin.
3193
3194 2009-06-30  Anthony Green  <green@moxielogic.com>
3195
3196         Clean up moxie port for --enable-build-with-cxx.
3197         * config/moxie/moxie.c (moxie_function_value): First two
3198         parameters are const_tree, not tree.
3199         * config/moxie/moxie.h (enum reg_class): Rename CC_REG to CC_REGS.
3200         (REG_CLASS_NAMES): Ditto.
3201         (REGNO_REG_CLASS): Ditto.
3202         * config/moxie/moxie-protos.h (moxie_override_options): Declare.
3203         (moxie_function_value): Fix constyness of arguments.
3204
3205 2009-06-30  Eric Botcazou  <ebotcazou@adacore.com>
3206
3207         * cgraphunit.c (cgraph_finalize_compilation_unit): Call
3208         finalize_size_functions before further processing.
3209         * stor-layout.c: Include cgraph.h, tree-inline.h and tree-dump.h.
3210         (variable_size): Call self_referential_size on size expressions
3211         that contain a PLACEHOLDER_EXPR.
3212         (size_functions): New static variable.
3213         (copy_self_referential_tree_r): New static function.
3214         (self_referential_size): Likewise.
3215         (finalize_size_functions): New global function.
3216         * tree.c: Include tree-inline.h.
3217         (push_without_duplicates): New static function.
3218         (find_placeholder_in_expr): New global function.
3219         (substitute_in_expr) <tcc_declaration>: Return the replacement object
3220         on equality.
3221         <tcc_expression>: Likewise.
3222         <tcc_vl_exp>: If the replacement object is a constant, try to inline
3223         the call in the expression.
3224         * tree.h (finalize_size_functions): Declare.
3225         (find_placeholder_in_expr): Likewise.
3226         (FIND_PLACEHOLDER_IN_EXPR): New macro.
3227         (substitute_placeholder_in_expr): Update comment.
3228         * tree-inline.c (remap_decl): Do not unshare trees if do_not_unshare
3229         is true.
3230         (copy_tree_body_r): Likewise.
3231         (copy_tree_body): New static function.
3232         (maybe_inline_call_in_expr): New global function.
3233         * tree-inline.h (struct copy_body_data): Add do_not_unshare field.
3234         (maybe_inline_call_in_expr): Declare.
3235         * Makefile.in (tree.o): Depend on TREE_INLINE_H.
3236         (stor-layout.o): Depend on CGRAPH_H, TREE_INLINE_H, TREE_DUMP_H and
3237         GIMPLE_H.
3238
3239 2009-06-30  Richard Guenther  <rguenther@suse.de>
3240
3241         * tree-ssa-dce.c (mark_all_reaching_defs_necessary_1): Always
3242         continue walking.
3243         (propagate_necessity): Do not mark reaching defs of stores
3244         as necessary.
3245
3246 2009-06-30  Jan Hubicka  <jh@suse.cz>
3247
3248         * cfgloopanal.c (check_irred): Move into ...
3249         (mark_irreducible_loops): ... here; return true if ireducible
3250         loops was found.
3251         * ipa-pure-const.c: Include cfgloop.h and tree-scalar-evolution.h
3252         (analyze_function): Try to prove loop finiteness.
3253         * cfgloop.h (mark_irreducible_loops): Update prototype.
3254         * Makefile.in (ipa-pure-const.o): Add dependency on SCEV and CFGLOOP.
3255
3256 2009-06-30  Basile Starynkevitch  <basile@starynkevitch.net>
3257
3258         * Makefile.in (PLUGIN_HEADERS): added ggc, tree-dump, pretty-print.
3259
3260 2009-06-30  Ira Rosen  <irar@il.ibm.com>
3261
3262         PR tree-optimization/40542
3263         * tree-vect-stmts.c (vect_analyze_stmt): Don't vectorize volatile 
3264         types.
3265
3266 2009-06-30  Martin Jambor  <mjambor@suse.cz>
3267
3268         PR tree-optimization/40582
3269         * tree-sra.c (build_ref_for_offset_1): Use types_compatible_p rather
3270         than useless_type_conversion_p.
3271         (generate_subtree_copies): Increment sra_stats.subtree_copies at a
3272         proper place.
3273
3274 2009-06-30  Martin Jambor  <mjambor@suse.cz>
3275
3276         PR middle-end/40554
3277         * tree-sra.c (sra_modify_expr): Add access->offset to start_offset.
3278
3279 2009-06-30  Richard Guenther  <rguenther@suse.de>
3280
3281         * tree-ssa-alias.c (walk_aliased_vdefs_1): Change interface to
3282         use ao_ref references.
3283         (walk_aliased_vdefs): Likewise.
3284         * tree-ssa-alias.h (walk_aliased_vdefs): Adjust prototype.
3285         * tree-ssa-dce.c (struct ref_data): Remove.
3286         (mark_aliased_reaching_defs_necessary_1): Use the ao_ref argument.
3287         (mark_aliased_reaching_defs_necessary): Adjust.
3288         (mark_all_reaching_defs_necessary_1): Likewise.
3289
3290 2009-06-30  Paolo Bonzini  <bonzini@gnu.org>
3291
3292         PR boostrap/40597
3293         * expmed.c (emit_cstore): New name of emit_store_flag_1.
3294         (emit_store_flag_1): Extract from emit_store_flag, adjust
3295         calls to (what now is) emit_cstore.
3296         (emit_store_flag): Call emit_store_flag_1 and also use it
3297         for what used to be recursive calls.
3298
3299 2009-06-30  Wei Guozhi  <carrot@google.com>
3300
3301         PR/40416
3302         * tree-ssa-sink.c (statement_sink_location): Stop sinking expression
3303         if the target bb post dominates from bb.
3304         * config/i386/i386.c (memory_address_length): Check existence of base
3305         register before using it.
3306
3307 2009-06-30  Nick Clifton  <nickc@redhat.com>
3308             DJ Delorie  <dj@redhat.com>
3309
3310         * config.sh/lib1funcs.h (FMOVD_WORKS): Only define if
3311         __FMOVD_ENABLED__ is defined.
3312         * config/sh/sh.h
3313         (TARGET_FMOVD): Provide a default definition.
3314         (MASK_FMOVD): Likewise.
3315         (TARGET_CPU_CPP_BUILTINS): Define
3316         __FMOVD_ENABLED__ if TARGET_FMOVD is true.
3317         * config/sh/sh.md (movdf_i4): For alternative 0 use either one or
3318         two fmov instructions depending upon whether TARGET_FMOVD is
3319         enabled.
3320         (split for DF load from memory into register): Also handle
3321         MEMs which consist of REG+DISP addressing.
3322         (split for DF store from register to memory): Likewise.
3323         * config/sh/sh.opt (mfmovd): Remove this switch.
3324         * doc/invoke.texi (-mfmovd): Remove documentation of this switch.
3325         * config/sh/sh.c (sh_override_options): Do not automatically
3326         enable TARGET_MOVD for the SH2A when supporting doubles - leave
3327         that to the -mfmovd command line switch.
3328
3329         * config/sh/sh.c (broken_move): Do not restrict fldi test to only
3330         the SH4 and SH4A.
3331         (fldi_ok): Always allow.
3332         * config/sh/sh.md (movsf_ie): Always use single fp_mode.
3333
3334 2009-06-29  DJ Delorie  <dj@redhat.com>
3335
3336         * doc/install.texi (mep-x-elf): Correct chip's full name.
3337
3338 2009-06-29  H.J. Lu  <hongjiu.lu@intel.com>
3339
3340         * doc/extend.texi: Fix typo.
3341
3342 2009-06-29  Tom Tromey  <tromey@redhat.com>
3343
3344         * dwarf2.h: Remove.
3345         * Makefile.in (DWARF2_H): New variable.
3346         (except.o): Use it.
3347         (dwarf2out.o): Likewise.
3348         (dwarf2asm.o): Likewise.
3349         * config/i386/t-i386: Use DWARF2_H.
3350         * except.c: Include elf/dwarf2.h.
3351         * unwind-dw2.c: Include elf/dwarf2.h.
3352         * dwarf2out.c: Include elf/dwarf2.h.
3353         (dw_loc_descr_struct) <dw_loc_opc>: Now a bitfield.
3354         <dtprel>: New field.
3355         (dwarf_stack_op_name): Don't handle INTERNAL_DW_OP_tls_addr.
3356         (size_of_loc_descr): Likewise.
3357         (output_loc_operands_raw): Likewise.
3358         (output_loc_operands): Handle new dtprel field.
3359         (loc_checksum): Update.
3360         (loc_descriptor_from_tree_1) <VAR_DDECL>: Set dtprel field.
3361         * unwind-dw2-fde-glibc.c: Include elf/dwarf2.h.
3362         * unwind-dw2-fde.c: Include elf/dwarf2.h.
3363         * dwarf2asm.c: Include elf/dwarf2.h.
3364         * unwind-dw2-fde-darwin.c: Include elf/dwarf2.h.
3365         * config/mmix/mmix.c: Include elf/dwarf2.h.
3366         * config/rs6000/darwin-fallback.c: Include elf/dwarf2.h.
3367         * config/xtensa/unwind-dw2-xtensa.c: Include elf/dwarf2.h.
3368         * config/sh/sh.c: Include elf/dwarf2.h.
3369         * config/i386/i386.c: Include elf/dwarf2.h.
3370
3371 2009-06-29  DJ Delorie  <dj@redhat.com>
3372
3373         * config/mep/mep.h (CPP_SPEC): Remove __cop macro.
3374
3375         * doc/extend.texi: Add MeP attributes and pragmas.
3376         * doc/invoke.text: Add MeP Options.
3377         * doc/contrib.texi: Add MeP contribution.
3378         * doc/md.texi: Add MeP constraints.
3379         * doc/install.texi: Add MeP target.
3380
3381 2009-06-30  Anatoly Sokolov  <aesok@post.ru>
3382
3383         * target.h (struct gcc_target): Add frame_pointer_required field.
3384         * target-def.h (TARGET_FRAME_POINTER_REQUIRED): New.
3385         (TARGET_INITIALIZER): Use TARGET_FRAME_POINTER_REQUIRED.
3386         * ira.c (setup_eliminable_regset): Use frame_pointer_required target
3387         hook.
3388         * reload1.c (update_eliminables): (Ditto.).
3389         * gcc/system.h (FRAME_POINTER_REQUIRED): Poison.
3390         * doc/tm.texi (FRAME_POINTER_REQUIRED): Revise documentation.
3391         (INITIAL_FRAME_POINTER_OFFSET): (Ditto.).
3392
3393         * config/arc/arc.h (FRAME_POINTER_REQUIRED): Remove macro.
3394
3395         * config/arm/arm.h (FRAME_POINTER_REQUIRED): Remove macro.
3396         * config/arm/arm.c (TARGET_FRAME_POINTER_REQUIRED): Define.
3397         (arm_frame_pointer_required): New function.
3398
3399         * config/avr/avr.h (FRAME_POINTER_REQUIRED): Remove macro.
3400         * config/avr/avr.c (TARGET_FRAME_POINTER_REQUIRED): Define macro.
3401         (avr_frame_pointer_required_p): Declare as static.
3402         * config/avr/avr-protos.h (avr_frame_pointer_required_p): Remove.
3403
3404         * config/bfin/bfin.h (FRAME_POINTER_REQUIRED): Remove macro.
3405         * config/bfin/bfin.c (TARGET_FRAME_POINTER_REQUIRED): Define.
3406         (bfin_frame_pointer_required): Make as static, change return type
3407         to bool.
3408         * config/bfin/bfin-protos.h (bfin_frame_pointer_required): Remove.
3409
3410         * config/cris/cris.h (FRAME_POINTER_REQUIRED): Remove macro.
3411         * config/cris/cris.c (TARGET_FRAME_POINTER_REQUIRED): Define macro.
3412         (cris_frame_pointer_required): New function.
3413         
3414         * config/crx/crx.h (FRAME_POINTER_REQUIRED): Remove macro.
3415
3416         * config/fr30/fr30.h (FRAME_POINTER_REQUIRED): Remove macro.
3417         * config/fr30/fr30.c (TARGET_FRAME_POINTER_REQUIRED): Define macro.
3418         (fr30_frame_pointer_required): New function.
3419         
3420         * config/frv/frv.h (FRAME_POINTER_REQUIRED): Remove macro.
3421         * config/frv/frv.c (TARGET_FRAME_POINTER_REQUIRED): Define.
3422         (frv_frame_pointer_required): Make as static, change return type
3423         to bool.
3424         * config/bfin/bfin-protos.h (frv_frame_pointer_required): Remove.
3425
3426         * config/i386/i386.h (FRAME_POINTER_REQUIRED): Remove macro.
3427         * config/i386/i386.c (TARGET_FRAME_POINTER_REQUIRED): Define macro.
3428         (ix86_frame_pointer_required): Make as static, change return type to
3429         bool.
3430         * config/i386/i386-protos.h (ix86_frame_pointer_required): Remove.
3431
3432         * config/m32c/m32c.h (FRAME_POINTER_REQUIRED): Remove macro.
3433         * config/m32c/m32c.c (TARGET_FRAME_POINTER_REQUIRED): Define macro.
3434
3435         * config/m32r/m32r.h (FRAME_POINTER_REQUIRED): Remove macro.
3436
3437         * config/mcore/mcore.h (CAN_ELIMINATE): Remove macro.
3438         
3439         * config/mep/mep.h (FRAME_POINTER_REQUIRED): Remove macro.
3440
3441         * config/mips/mips.h (FRAME_POINTER_REQUIRED): Remove macro.
3442         * config/mips/mips.c (TARGET_FRAME_POINTER_REQUIRED): Define macro.
3443         (mips_frame_pointer_required): Make as static.
3444         * config/mips/mips-protos.h (mips_frame_pointer_required): Remove.
3445         
3446         * config/mmix/mmix.h (FRAME_POINTER_REQUIRED): Remove macro.
3447         * config/mmix/mmix.c (TARGET_FRAME_POINTER_REQUIRED): Define macro.
3448         (mmix_frame_pointer_required): Mew function.
3449
3450         * config/moxie/moxie.h (FRAME_POINTER_REQUIRED): Remove macro.
3451         * config/moxie/moxie.c (TARGET_FRAME_POINTER_REQUIRED): Define macro.
3452
3453         * config/pa/pa.h (FRAME_POINTER_REQUIRED): Remove macro.
3454
3455         * config/score/score.h (FRAME_POINTER_REQUIRED): Remove macro.
3456
3457         * config/sh/sh.h (CAN_ELIMINATE): Remove macro.
3458
3459         * config/sparc/sparc.h (FRAME_POINTER_REQUIRED): Remove macro.
3460         (CAN_ELIMINATE): Redefine.
3461         * config/sparc/sparc.c (TARGET_FRAME_POINTER_REQUIRED): Define macro.
3462         (sparc_frame_pointer_required): New function.
3463         (sparc_can_eliminate): New function.
3464         * config/sparc/sparc-protos.h (sparc_can_eliminate): Declare.
3465
3466         * config/vax/vax.h (FRAME_POINTER_REQUIRED): Remove macro.
3467         * config/vax/vax.c (TARGET_FRAME_POINTER_REQUIRED): Define.
3468
3469         * config/xtensa/xtensa.h (FRAME_POINTER_REQUIRED): Remove macro.
3470         * config/xtensa/xtensa.c (TARGET_FRAME_POINTER_REQUIRED): Define.
3471         (xtensa_frame_pointer_required): Make as static, change return type
3472         to bool.
3473         * config/xtensa/xtensa-protos.h (xtensa_frame_pointer_required):
3474         Remove.
3475
3476 2009-06-29  Olatunji Ruwase  <tjruwase@google.com>
3477
3478         * doc/plugins.texi: Document PLUGIN_START_UNIT.
3479         * toplev.c (compile_file): Call PLUGIN_START_UNIT.
3480         * gcc-plugin.h (PLUGIN_START_UNIT): Added new event.
3481         * plugin.c (plugin_event_name): Added PLUGIN_START_UNIT.
3482         (register_callback): Handle PLUGIN_START_UNIT.
3483         (invoke_plugin_callbacks): Handle PLUGIN_START_UNIT.
3484
3485 2009-06-29  Eric Botcazou  <ebotcazou@adacore.com>
3486
3487         * tree.c (process_call_operands): Propagate TREE_READONLY from the
3488         operands.
3489         (PROCESS_ARG): Do not clear TREE_READONLY if CONSTANT_CLASS_P.
3490         (build3_stat): Propagate TREE_READONLY for COND_EXPR.
3491
3492 2009-06-29  Daniel Jacobowitz  <dan@codesourcery.com>
3493
3494         * config/arm/arm.h (REGISTER_MOVE_COST): Increase VFP register
3495         move cost.
3496
3497 2009-06-29  Uros Bizjak  <ubizjak@gmail.com>
3498
3499         * doc/extend.texi (Additional Floating Types): __float128 is also
3500         supported on i386 targets.
3501
3502 2009-06-29  Richard Guenther  <rguenther@suse.de>
3503
3504         PR middle-end/14187
3505         * tree-ssa-alias.h (struct pt_solution): Add vars_contains_restrict
3506         flag.
3507         (pt_solutions_same_restrict_base): Declare.
3508         * tree-ssa-structalias.c (struct variable_info): Add is_restrict_var
3509         flag.
3510         (new_var_info): Initialize is_global_var properly for SSA_NAMEs.
3511         (make_constraint_from, make_copy_constraint): Move earlier.
3512         (make_constraint_from_heapvar): New function.
3513         (make_constraint_from_restrict): Likewise.
3514         (handle_lhs_call): Use it.
3515         (find_func_aliases): Use it to track conversions to restrict
3516         qualified pointers.
3517         (struct fieldoff): Add only_restrict_pointers flag.
3518         (push_fields_onto_fieldstack): Initialize it.
3519         (create_variable_info_for): Track global restrict qualified pointers.
3520         (intra_create_variable_infos): Use make_constraint_from_heapvar.
3521         Track restrict qualified pointer arguments.
3522         (set_uids_in_ptset): Use varinfo is_global_var flag.
3523         (find_what_var_points_to): Set the vars_contains_restrict flag.
3524         Always create the points-to solution for sets including restrict tags.
3525         (pt_solutions_same_restrict_base): New function.
3526         * tree-ssa-alias.c (ptr_derefs_may_alias_p): For two restrict
3527         qualified pointers use pt_solutions_same_restrict_base as
3528         additional source for disambiguation.
3529
3530 2009-06-29  Richard Guenther  <rguenther@suse.de>
3531
3532         PR middle-end/38212
3533         * alias.c (find_base_decl): Remove.
3534         (get_deref_alias_set_1): Remove restrict handling.
3535         * c-common.c (c_apply_type_quals_to_decl): Do not set
3536         DECL_POINTER_ALIAS_SET.
3537         * gimplify.c (find_single_pointer_decl_1): Remove.
3538         (find_single_pointer_decl): Likewise.
3539         (internal_get_tmp_var): Remove restrict handling.
3540         (gimple_regimplify_operands): Likewise.
3541         * omp-low.c (expand_omp_atomic_pipeline): Do not set
3542         DECL_POINTER_ALIAS_SET. Use ref-all pointers.
3543         * print-tree.c (print_node): Do not print DECL_POINTER_ALIAS_SET.
3544         * tree.c (restrict_base_for_decl): Remove.
3545         (init_ttree): Do not allocate it.
3546         (make_node_stat): Do not set DECL_POINTER_ALIAS_SET.  Set
3547         LABEL_DECL_UID for label decls.
3548         (copy_node_stat): Do not copy restrict information.
3549         (decl_restrict_base_lookup): Remove.
3550         (decl_restrict_base_insert): Likewise.
3551         (print_restrict_base_statistics): Likewise.
3552         (dump_tree_statistics): Do not call print_restrict_base_statistics.
3553         * tree.h (DECL_POINTER_ALIAS_SET): Remove.
3554         (DECL_POINTER_ALIAS_SET_KNOWN_P): Likewise.
3555         (struct tree_decl_common): Rename pointer_alias_set to label_decl_uid.
3556         (LABEL_DECL_UID): Adjust.
3557         (DECL_BASED_ON_RESTRICT_P): Remove.
3558         (DECL_GET_RESTRICT_BASE): Likewise.
3559         (SET_DECL_RESTRICT_BASE): Likewise.
3560         (struct tree_decl_with_vis): Remove based_on_restrict_p flag.
3561
3562         * config/i386/i386.c (ix86_gimplify_va_arg): Use ref-all pointers
3563         instead of DECL_POINTER_ALIAS_SET.
3564         * config/rs6000/rs6000.c (rs6000_gimplify_va_arg): Likewise.
3565         * config/s390/s390.c (s390_gimplify_va_arg): Likewise.
3566         * config/spu/spu.c (spu_gimplify_va_arg_expr): Likewise.
3567
3568 2009-06-29  Richard Guenther  <rguenther@suse.de>
3569
3570         PR tree-optimization/40579
3571         * tree-vrp.c (vrp_evaluate_conditional): Bail out early if
3572         the IL to simplify has constants that overflowed.
3573
3574 2009-06-28  Uros Bizjak  <ubizjak@gmail.com>
3575
3576         PR tree-optimization/40550
3577         * tree-vect-generic.c (expand_vector_operations_1): Compute in
3578         vector_compute_type only when the size of vector_compute_type is
3579         less than the size of type.
3580
3581 2009-06-28  Eric Botcazou  <ebotcazou@adacore.com>
3582
3583         * fold-const.c (contains_label_1): Fix comments.
3584         (contains_label_p): Do not walk trees multiple time.
3585
3586 2009-06-28  Paolo Bonzini  <bonzini@gnu.org>
3587
3588         * config/i386/i386.h (enum ix86_fpcmp_strategy): New.
3589         * config/i386/i386.md (cbranchxf4, cstorexf4, cbranch<MODEF>4,
3590         cstore<MODEF>4, mov<X87MODEF>cc): Change predicate to
3591         ix86_fp_comparison_operator.
3592         (*fp_jcc_1_mixed, *fp_jcc_1_sse, *fp_jcc_1_387, *fp_jcc_2_mixed,
3593         *fp_jcc_2_sse, *fp_jcc_2_387): Delete
3594         (*fp_jcc_3_387, *fp_jcc_4_387, *fp_jcc_5_387, *fp_jcc_6_387,
3595         *fp_jcc_7_387, *fp_jcc_8<MODEF>_387): Eliminate call to
3596         !ix86_use_fcomi_compare, change ix86_fp_jump_nontrivial_p call
3597         to !TARGET_CMOVE, change predicate to ix86_fp_comparison_operator.
3598         (related splits): Change predicate to ix86_fp_comparison_operator.
3599         * config/i386/predicates.md: Use ix86_trivial_fp_comparison_operator
3600         instead of ix86_fp_comparison_codes.
3601         (ix86_trivial_fp_comparison_operator,
3602         ix86_fp_comparison_operator): New.
3603         * config/i386/i386-protos.h (ix86_fp_comparison_strategy): New.
3604         (ix86_expand_compare): Eliminate last two parameters.
3605         (ix86_fp_jump_nontrivial_p): Kill.
3606         * config/i386/i386.c (put_condition_code): Eliminate call to
3607         ix86_fp_comparison_codes and subsequent assertion.
3608         (ix86_fp_comparison_codes): Eliminate.
3609         (ix86_fp_swap_condition): New.
3610         (ix86_fp_comparison_arithmetics_cost, ix86_fp_comparison_fcomi_cost,
3611         ix86_fp_comparison_sahf_cost, ix86_use_fcomi_compare): Consolidate
3612         into ix86_fp_comparison_cost and ix86_fp_comparison_strategy.
3613         (ix86_prepare_fp_compare_args): Use ix86_fp_comparison_strategy
3614         and ix86_fp_swap_condition.
3615         (ix86_expand_fp_compare): Eliminate code for second jump/bypass jump.
3616         Use ix86_fp_comparison_strategy.
3617         (ix86_expand_compare): Likewise.  Eliminate last two arguments.
3618         (ix86_fp_jump_nontrivial_p): Eliminate.
3619         (ix86_expand_branch): Treat SFmode/DFmode/XFmode as simple.  Adjust
3620         call to ix86_expand_compare.
3621         (ix86_split_fp_branch, ix86_expand_setcc,
3622         ix86_expand_carry_flag_compare, ix86_expand_int_movcc,
3623         ix86_expand_fp_movcc): Eliminate code for second jump/bypass jump.
3624
3625 2009-06-28  Paolo Bonzini  <bonzini@gnu.org>
3626
3627         * config/arm/arm.c (arm_final_prescan_ins): Eliminate code
3628         related to jump_clobbers.
3629         * config/arm/arm.md (conds): Remove jump_clob case.
3630         (addsi3_cbranch, addsi3_cbranch_scratch, subsi3_cbranch, two
3631         splits): Change comparison_operator to arm_comparison_operator.
3632         (*arm_buneq, *arm_bltgt, *arm_buneq_reversed, *arm_bltgt_reversed):
3633         Eliminate.
3634
3635 2009-06-28  Paolo Bonzini  <bonzini@gnu.org>
3636
3637         * dojump.c (do_compare_rtx_and_jump): Try swapping the
3638         condition for floating point modes.
3639         * expmed.c (emit_store_flag_1): Move here a bigger part
3640         of emit_store_flag.
3641         (emit_store_flag): Try swapping the condition for floating point
3642         modes.
3643         * optabs.c (emit_cmp_and_jump_insns): Cope with constant op0 better.
3644
3645 2009-06-28  Paolo Bonzini  <bonzini@gnu.org>
3646
3647         * expr.c (expand_expr_real_1): Just use do_store_flag.
3648         (do_store_flag): Drop support for TRUTH_NOT_EXPR.  Use
3649         emit_store_flag_force.
3650         * expmed.c (emit_store_flag_force): Copy here trick
3651         previously in expand_expr_real_1.  Try reversing the comparison.
3652         (emit_store_flag_1): Work if target is NULL.
3653         (emit_store_flag): Work if target is NULL, using the result mode
3654         from the comparison.  Use split_comparison, restructure final part
3655         to simplify conditionals.
3656
3657 2009-06-28  Paolo Bonzini  <bonzini@gnu.org>
3658
3659         * builtins.c (expand_errno_check): Use do_compare_rtx_and_jump.
3660         * dojump.c (do_jump): Change handling of floating-point
3661         ops to use just do_compare_and_jump.
3662         (split_comparison): New.
3663         (do_compare_rtx_and_jump): Add here logic coming previously
3664         in do_jump, using split_comparison.
3665
3666 2009-06-27  H.J. Lu  <hongjiu.lu@intel.com>
3667
3668         PR target/40489
3669         * config/ia64/ia64.c (ia64_reorg): Check NULL insn.
3670
3671 2009-06-27  Paolo Bonzini  <bonzini@gnu.org>
3672
3673         * tree-ssa-alias.c: Fix unintentional commit.
3674
3675 2009-06-27  Paolo Bonzini  <bonzini@gnu.org>
3676
3677         * passes.c (execute_one_pass): Fix unintentional commit.
3678
3679 2009-06-27  Paolo Bonzini  <bonzini@gnu.org>
3680
3681         * df-problems.c (df_set_seen, df_unset_seen): Delete.
3682         (df_rd_local_compute, df_md_local_compute): Inline them.
3683
3684         (df_md_scratch): New.
3685         (df_md_alloc, df_md_free): Allocate/free it.
3686         (df_md_local_compute): Only include live registers in init.
3687         (df_md_transfer_function): Prune the in-set computed by
3688         the confluence function, and the gen-set too.
3689
3690 2009-06-27  Paolo Bonzini  <bonzini@gnu.org>
3691
3692         PR rtl-optimization/26854
3693         * timevar.def: Remove TV_DF_RU, add TV_DF_MD.
3694         * df-problems.c (df_rd_add_problem): Fix comment.
3695         (df_md_set_bb_info, df_md_free_bb_info, df_md_alloc,
3696         df_md_simulate_artificial_defs_at_top,
3697         df_md_simulate_one_insn, df_md_bb_local_compute_process_def,
3698         df_md_bb_local_compute, df_md_local_compute, df_md_reset,
3699         df_md_transfer_function, df_md_init, df_md_confluence_0,
3700         df_md_confluence_n, df_md_free, df_md_top_dump, df_md_bottom_dump,
3701         problem_MD, df_md_add_problem): New.
3702         * df.h (DF_MD, DF_MD_BB_INFO, struct df_md_bb_info, df_md,
3703         df_md_get_bb_info): New.
3704         (DF_LAST_PROBLEM_PLUS1): Adjust.
3705
3706         * Makefile.in (fwprop.o): Include domwalk.h.
3707         * fwprop.c: Include domwalk.h.
3708         (reg_defs, reg_defs_stack): New.
3709         (bitmap_only_bit_between): Remove.
3710         (process_defs): New.
3711         (process_uses): Use reg_defs and local_md instead of
3712         bitmap_only_bit_between and local_rd.
3713         (single_def_use_enter_block): New, from build_single_def_use_links.
3714         (single_def_use_leave_block): New.
3715         (build_single_def_use_links): Remove code moved to
3716         single_def_use_enter_block, invoke domwalk.
3717         (use_killed_between): Adjust comment.
3718
3719 2009-06-27  Paolo Bonzini  <bonzini@gnu.org>
3720
3721         * bitmap.h (bitmap_ior_and_into): New.
3722         * bitmap.c (bitmap_ior_and_into): New.
3723
3724 2009-06-27  Paolo Bonzini  <bonzini@gnu.org>
3725
3726         * domwalk.h (struct dom_walk_data): Remove all callbacks except
3727         before_dom_children_before_stmts and after_dom_children_after_stmts.
3728         Rename the two remaining callbacks to just before_dom_children and 
3729         after_dom_children. Remove other GIMPLE statement walking bits.
3730         * domwalk.c (walk_dominator_tree): Remove now unsupported features.
3731         * graphite.c: Do not include domwalk.h.
3732         * tree-into-ssa.c (interesting_blocks): New global.
3733         (struct mark_def_sites_global_data): Remove it and names_to_rename.
3734         (mark_def_sites, rewrite_stmt, rewrite_add_phi_arguments,
3735         rewrite_update_stmt, rewrite_update_phi_arguments): Simplify
3736         now that they're not domwalk callbacks.
3737         (rewrite_initialize_block): Rename to...
3738         (rewrite_enter_block): ... this, place after called functions.  Test
3739         interesting_blocks, call rewrite_stmt and rewrite_add_phi_arguments.
3740         (rewrite_finalize_block): Rename to...
3741         (rewrite_leave_block): ... this, place after called functions.
3742         (rewrite_update_init_block): Rename to...
3743         (rewrite_update_enter_block): ... this, place after called functions.
3744         Test interesting_blocks, call rewrite_update_stmt and 
3745         rewrite_update_phi_arguments.
3746         (rewrite_update_fini_block): Rename to...
3747         (rewrite_leave_block): ... this, place after called functions.
3748         (rewrite_blocks): Remove last argument, simplify initialization of
3749         walk_data.
3750         (mark_def_sites_initialize_block): Rename to...
3751         (mark_def_sites_block): ... this, call mark_def_sites.
3752         (mark_def_sites_blocks): Remove argument, simplify initialization of
3753         walk_data.
3754         (rewrite_into_ssa): Adjust for interesting_blocks_being a global.
3755         (update_ssa): Likewise.
3756         * tree-ssa-dom.c (optimize_stmt): Simplify now that it's not a domwalk
3757         callback.
3758         (tree_ssa_dominator_optimize): Simplify initialization of walk_data.
3759         (dom_opt_initialize_block): Rename to...
3760         (dom_opt_enter_block): ... this, place after called functions.  Walk
3761         statements here, inline propagate_to_outgoing_edges.
3762         (dom_opt_finalize_block): Rename to...
3763         (dom_opt_leave_block): ... this, place after called functions.
3764         * tree-ssa-dse.c (dse_optimize_stmt): Simplify now that it's not a
3765         domwalk callback.
3766         (dse_enter_block, dse_record_phi): New.
3767         (dse_record_phis): Delete.
3768         (dse_finalize_block): Rename to...
3769         (dse_leave_block): ... this.
3770         (tree_ssa_dse): Simplify initialization of walk_data.
3771         * tree-ssa-loop-im.c (determine_invariantness, move_computations):
3772         Adjust initialization of walk_data.
3773         * tree-ssa-loop-unswitch.c: Do not include domwalk.h.
3774         * tree-ssa-loop-phiopt.c (get_non_trapping):
3775         Adjust initialization of walk_data.
3776         * tree-ssa-loop-threadedge.c: Do not include domwalk.h.
3777         * tree-ssa-uncprop.c (uncprop_into_successor_phis): Simplify now that
3778         it's not a domwalk callback.
3779         (uncprop_initialize_block): Rename to...
3780         (dse_enter_block): ... this, call uncprop_into_successor_phis.
3781         (dse_finalize_block): Rename to...
3782         (dse_leave_block): ... this.
3783         (tree_ssa_uncprop): Simplify initialization of walk_data.
3784         * Makefile.in: Adjust dependencies.
3785
3786 2009-06-27  Richard Earnshaw  <rearnsha@arm.com>
3787
3788         * arm.md (casesi): Fix test for Thumb1.
3789         (thumb1_casesi_internal_pic): Likewise.
3790         (thumb1_casesi_dispatch): Likewise.
3791
3792 2009-06-26  Daniel Gutson  <dgutson@codesourcery.com>
3793
3794         * config/arm/arm-cores.def: Added core cortex-m0.
3795         * config/arm/arm-tune.md: Regenerated.
3796         * doc/invoke.texi: Added entry for cpu ARM Cortex-M0.
3797
3798 2009-06-26  DJ Delorie  <dj@redhat.com>
3799
3800         * config/mep/mep.opt (mfar): Remove -mfar as it doesn't do anything.
3801
3802         * config/mep/mep.c (mep_bundle_insns): Account for the fact that
3803         the scheduler doesn't tag jump insns.
3804
3805 2009-06-26  H.J. Lu  <hongjiu.lu@intel.com>
3806
3807         * c-decl.c (merge_decls): Re-indent.
3808
3809 2009-06-26  Janis Johnson  <janis187@us.ibm.com>
3810
3811         PR c/39902
3812         * tree.c (real_zerop, real_onep, real_twop, real_minus_onep):
3813         Special-case decimal float constants.
3814
3815 2009-06-26  Richard Henderson  <rth@redhat.com>
3816
3817         * function.h (struct function): Add cannot_be_copied_reason,
3818         and cannot_be_copied_set.
3819         * tree-inline.c (has_label_address_in_static_1): Rename from
3820         inline_forbidden_p_2; don't set inline_forbidden_reason here.
3821         (cannot_copy_type_1): Rename from inline_forbidden_p_op; likewise
3822         don't set inline_forbidden_reason.
3823         (copy_forbidden): New function, split out of inline_forbidden_p.
3824         (inline_forbidden_p_stmt): Don't check for nonlocal labels here.
3825         (inline_forbidden_p): Use copy_forbidden.
3826         (tree_versionable_function_p): Likewise.
3827         (inlinable_function_p): Merge into tree_inlinable_function_p.
3828         (tree_function_versioning): Remap cfun->nonlocal_goto_save_area.
3829         * ipa-cp.c (ipcp_versionable_function_p): New function.
3830         (ipcp_cloning_candidate_p): Use it.
3831         (ipcp_node_modifiable_p): Likewise.
3832
3833 2009-06-26  Olatunji Ruwase  <tjruwase@google.com>
3834
3835         * builtins.c (expand_builtin_alloca): Handle builtin alloca
3836         that is marked not to be inlined. Remove flag_mudflap use.
3837         * tree-mudflap.c: Rename mf_xform_derefs to mf_xfrom_statements.
3838         (mf_xform_statements): Mark builtin alloca calls as un-inlineable.
3839
3840 2009-06-26  Steve Ellcey  <sje@cup.hp.com>
3841
3842         PR bootstrap/40338
3843         * config/pa/t-pa-hpux10 (TARGET_LIBGCC2_CFLAGS): Add -frandom-seed.
3844         * config/pa/t-pa-hpux11 (TARGET_LIBGCC2_CFLAGS): Ditto.
3845
3846 2009-06-26  Kai Tietz  <kai.tietz@onevision.com>
3847
3848         * config/i386/mingw-tls.c (__mingwthr_key_dtor): Remove for none
3849         shared libgcc.
3850         (__mingwthr_remove_key_dtor): Likewise.
3851
3852 2009-06-26  Richard Guenther  <rguenther@suse.de>
3853
3854         * tree-ssa-structalias.c (do_ds_constraint): Simplify escape handling.
3855
3856 2009-06-26  Steven Bosscher  <steven@gcc.gnu.org>
3857
3858         PR middle-end/40525
3859         * ifcvt.c (dead_or_predicable): If predicating MERGE_BB fails,
3860         try the non-cond_exec path also.
3861
3862 2009-06-25  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
3863
3864         PR target/40468
3865         * pa.c (branch_to_delay_slot_p, branch_needs_nop_p): New functions.
3866         (output_cbranch): Use new functions.
3867         (output_lbranch, output_bb, output_bvb, output_dbra, output_movb):
3868         Likewise.
3869
3870 2009-06-25  Michael Meissner  <meissner@linux.vnet.ibm.com>
3871             Pat Haugen  <pthaugen@us.ibm.com>
3872             Revital Eres <ERES@il.ibm.com>
3873
3874         * config/rs6000/rs6000.c (print_operand): Correct lossage message
3875         for %c error.  Add %x support to print VSX registers as a unified
3876         register set, instead of separate float and altivec registers.
3877         Switch to use VECTOR_MEM_ALTIVEC_P instead of TARGET_ALTIVEC for
3878         %y case, and add support for VSX pre-modify addresses.
3879         (output_toc): Add assert for CONST containing an integer constant
3880         in the PLUS case.
3881         (rs6000_adjust_cost): Add POWER7 support.
3882         (insn_must_be_first_in_group): Ditto.
3883         (insn_must_be_last_in_group): Ditto.
3884         (rs6000_emit_popcount): Ditto.
3885         (rs6000_vector_mode_supported_p): Ditto.
3886
3887         * config/rs6000/rs6000-protos.h (rs6000_secondary_reload_class):
3888         Change some of the functions called by macros to being called
3889         through a pointer, so debug functions can be inserted if
3890         -mdebug=addr or -mdebug=cost. 
3891         (rs6000_preferred_reload_class_ptr): Ditto.
3892         (rs6000_secondary_reload_class_ptr): Ditto.
3893         (rs6000_secondary_memory_needed_ptr): Ditto.
3894         (rs6000_cannot_change_mode_class_ptr): Ditto.
3895         (rs6000_secondary_reload_inner): Ditto.
3896         (rs6000_legitimize_reload_address): Ditto.
3897         (rs6000_legitimize_reload_address_ptr): Ditto.
3898         (rs6000_mode_dependent_address): Ditto.
3899         (rs6000_mode_dependent_address_ptr): Ditto.
3900
3901         * config/rs6000/rs6000.c (reg_offset_addressing_ok_p): New
3902         function to return true if the mode allows reg + integer
3903         addresses.
3904         (virtual_stack_registers_memory_p): New function to return true if
3905         the address refers to a virtual stack register.
3906         (rs6000_legitimate_offset_address_p): Move code to say whether a
3907         mode supports reg+int addressing to reg_offset_addressing_ok_p and
3908         call it.
3909         (rs6000_legitimate_address_p): Add checks for modes that only can
3910         do reg+reg addressing.  Start adding VSX support.
3911         (rs6000_legitimize_reload_address): Ditto.
3912         (rs6000_legitimize_address): Ditto.
3913         (rs6000_debug_legitimate_address_p): New debug functions for
3914         -mdebug=addr and -mdebug=cost.
3915         (rs6000_debug_rtx_costs): Ditto.
3916         (rs6000_debug_address_costs): Ditto.
3917         (rs6000_debug_adjust_cost): Ditto.
3918         (rs6000_debug_legitimize_address): Ditto.
3919         (rs6000_legitimize_reload_address_ptr): Point to call normal
3920         function or debug function.  Make functions called via pointer
3921         static.
3922         (rs6000_mode_dependent_address_ptr): Ditto.
3923         (rs6000_secondary_reload_class_ptr): Ditto.
3924         (rs6000_hard_regno_mode_ok): Add preliminary VSX support.
3925         (rs6000_emit_move): Add -mdebug=addr support.  Change an abort
3926         into a friendlier error.
3927         (rs6000_init_builtins): Add initial VSX support.
3928         (rs6000_adjust_cost): Fix some spacing issues.
3929
3930         * config/rs6000/rs6000.h (enum reg_class): Add VSX_REGS.
3931         (REG_CLASS_NAMES): Ditto.
3932         (REG_CLASS_CONTENTS): Ditto.
3933         (PREFERRED_RELOAD_CLASS): Move from a macro to calling through a
3934         pointer, to add -mdebug=addr support.
3935         (CANNOT_CHANGE_MODE_CLASS): Ditto.
3936         (SECONDARY_RELOAD_CLASS): Call through a pointer to add
3937         -mdebug=addr support.
3938         (LEGITIMIZE_RELOAD_ADDRESS): Ditto.
3939         (GO_IF_MODE_DEPENDENT_ADDRESS): Ditto.
3940         (enum rs6000_builtins): Add RS6000_BUILTIN_BSWAP_HI.
3941
3942         * config/rs6000/rs6000.md (bswaphi*): Add support for swapping
3943         16-bit values.
3944         (bswapsi*): Set attribute types for load/store.  Add combiner
3945         patterns to eliminate zero extend on 64-bit.
3946         (bswapdi*): Add support for swapping 64-bit values.  Use ldbrx and
3947         stdbrx if the hardware supports those instructions.
3948
3949 2009-06-25  Ian Lance Taylor  <iant@google.com>
3950
3951         * doc/invoke.texi (Option Summary): Mention -static-libstdc++.
3952         (Link Options): Document -static-libstdc++.
3953
3954 2009-06-25  Andrew Pinski  <andrew_pinski@playstation.sony.com>
3955
3956         PR target/38731
3957         * config/rs6000/rs6000.c (LOCAL_ALIGNMENT): Redefine to just use
3958         DATA_ALIGNMENT instead.
3959
3960 2009-06-25  Richard Guenther  <rguenther@suse.de>
3961
3962         * tree-ssa-alias.c (ref_maybe_used_by_call_p_1): Disambiguate
3963         indirect references against the callused/escaped solutions.
3964         (call_may_clobber_ref_p_1): Likewise.
3965
3966 2009-06-25  Martin Jambor  <mjambor@suse.cz>
3967
3968         PR tree-optimization/40493
3969         * tree-sra.c (sra_modify_expr): Correct BIT_FIELD_REF argument numbers.
3970         (enum unscalarized_data_handling): New type.
3971         (handle_unscalarized_data_in_subtree): Return what has been done.
3972         (load_assign_lhs_subreplacements): Handle left flushes differently.
3973         (sra_modify_assign): Use unscalarized_data_handling, simplified
3974         condition determining whether to remove the statement.
3975
3976 2009-06-25  Basile Starynkevitch  <basile@starynkevitch.net>
3977
3978         * doc/plugins.texi (Building GCC plugins): Correct typo in Makefile
3979         excerpt - @ should be doubled for texinfo.
3980
3981 2009-06-24  Ian Lance Taylor  <iant@google.com>
3982
3983         * config/arc/arc.c: Include "df.h".
3984         (arc_attribute_table): Make static.  Move higher in file.
3985         (arc_address_cost): Call SMALL_INT on INTVAL, not rtx.
3986         (output_shift): Initialize n later to avoid warning.
3987         * config/arm/arm.c (arm_attribute_table): Make static.  Move
3988         higher in file.
3989         * config/avr/avr.c (avr_attribute_table): Make static.  Move
3990         higher in file.
3991         (reg_class_tab): Change array type from int to enum reg_class.
3992         (avr_jump_mode): Change GET_MODE to GET_CODE when checking for
3993         LABEL_REF.
3994         (out_tsthi, ashlhi3_out): Don't use AS2 with "or" or "and".
3995         (lshrhi3_out): Likewise.
3996         (class_likely_spilled_p): Change return type to bool.
3997         (avr_rtx_costs): Use local code variable with enum type.
3998         * config/avr/avr.md (movmemhi): Use add_reg_note.
3999         (andhi3, andsi3): Don't use AS2 with "and".
4000         (iorhi3, iorsi3): Don't use AS2 with "or".
4001         * config/avr/avr-protos.h (class_likely_spilled_p): Update declaration.
4002         * config/crx/crx.c: Include "df.h".
4003         (crx_attribute_table): Make static.
4004         * config/m32r/m32r.c: Include "df.h".
4005         (m32r_attribute_table): Make static.  Move higher in file.
4006         (pop): Use add_reg_note.
4007         (block_move_call): Change 0 to LCT_NORMAL in function call.
4008         * config/m32r/m32r.md (movsi_insn): Remove unused local value.
4009         * config/m32r/m32r.h (INITIALIZE_TRAMPOLINE): Likewise.
4010         * config/m32r/m32r-protos.h (m32r_compute_function_type): Always
4011         declare, not just when TREE_CODE is defined.
4012         * config/m68hc11/m68hc11.c: Include "expr.h".
4013         (m68hc11_attribute_table): Make static.  Move higher in file.
4014         (m68hc11_small_indexed_indirect_p): Change 0 to VOIDmode in
4015         function call.
4016         (m68hc11_register_indirect_p): Likewise.
4017         (m68hc11_function_arg_padding): Change return type to enum
4018         direction.
4019         (emit_move_after_reload): Use add_reg_note.
4020         (m68hc11_emit_logical): Change code parameter to enum rtx_code.
4021         (m68hc11_split_logical): Likewise.
4022         (m68hc11_rtx_costs): Add local code_and outer_code variables with
4023         enum type.
4024         * config/m68hc11/predicates.md (reg_or_some_mem_operand): Change 0
4025         to VOIDmode in function call.
4026         * config/m68hc11/m68hc11-protos.h: Don't check TREE_CODE to see if
4027         tree is defined.
4028         (m68hc11_split_logical): Update declaration.
4029         (m68hc11_function_arg_padding): Update declaration.
4030         * config/mcore/mcore.c (regno_reg_class): Change form array of int
4031         to array of enum reg_class.
4032         (mcore_attribute_table): Make static.  Move higher in file.
4033         (mcore_rtx_costs): Add cast to enum type.
4034         * config/mcore/mcore.h (regno_reg_class): Update declaration.
4035         (GO_IF_LEGITIMATE_INDEX): Add cast to avoid warning.
4036         * config/sh/sh.c (sh_attribute_table): Make static.  Move higher
4037         in file.
4038         * config/sh/predicates.md (trapping_target_operand): Rename and to
4039         and_expr.
4040         * config/sparc/sparc.c (sparc_attribute_table): Make static.  Move
4041         higher in file.
4042         * config/spu/spu.c (spu_attribute_table): Make static.  Move
4043         higher in file.
4044         * config/v850/v850.c (v850_attribute_table): Make static.  Move
4045         higher in file.
4046         (v850_rtx_costs): Use local code with enum type.
4047         (expand_epilogue): Add cast.
4048         * config/v850/v850-c.c (ghs_pragma_section): Initialize repeat.
4049
4050 2009-06-23  Takashi YOSHII  <yoshii.takashi@renesas.com>
4051
4052         PR target/40515
4053         * doc/invoke.texi (SH Options): Document -m2a, -m2a-single,
4054         -m2a-single-only and -m2a-nofpu.
4055         * config/sh/sh.opt: Document m2a generates FPU code.  
4056
4057 2009-06-24  Anatoly Sokolov  <aesok@post.ru>
4058
4059         * defaults.h (CAN_ELIMINATE): Provide default.
4060         * doc/tm.texi (CAN_ELIMINATE): Revise documentation.
4061         * config/alpha/alpha.h (CAN_ELIMINATE): Delete.
4062         * config/m32c/m32c.h (CAN_ELIMINATE): Delete.
4063         * config/spu/spu.h (CAN_ELIMINATE): Delete.
4064         * config/xtensa/xtensa.h (CAN_ELIMINATE): Delete.
4065         * config/moxie/moxie.h (CAN_ELIMINATE): Delete.
4066         * config/cris/cris.h (CAN_ELIMINATE): Delete.
4067         * config/mn10300/mn10300.h (CAN_ELIMINATE): Delete.
4068         * config/pa/pa64-linux.h (CAN_ELIMINATE): Delete.
4069         * config/mmix/mmix.h (CAN_ELIMINATE): Delete.
4070
4071 2009-06-24  DJ Delorie  <dj@redhat.com>
4072
4073         * mep-ext-cop.cpu: Fix copyright notice.
4074         * mep-default: Fix copyright notice.
4075         * mep-core: Fix copyright notice.
4076         * mep: Fix copyright notice.
4077         * mep-ivc2: Fix copyright notice.
4078         * mep-c5: Fix copyright notice.
4079
4080 2009-06-24  Denis Chertykov  <chertykov@gmail.com>
4081
4082         * doc/contrib.texi (Contributors): 
4083
4084 2009-06-24  Andreas Krebbel  <krebbel1@de.ibm.com>
4085         
4086         PR middle-end/40501
4087         * tree-ssa-math-opts.c (execute_optimize_bswap): Convert the bswap
4088         src and dst operands if necessary.
4089
4090 2009-06-23  DJ Delorie  <dj@redhat.com>
4091
4092         Add MeP port.
4093         * config.gcc: Add mep support.
4094         * recog.c: Resurrect validate_replace_rtx_subexp().
4095         * recog.h: Likewise.
4096         * config/mep/: Add new port:
4097         * config/mep/constraints.md: New file.
4098         * config/mep/default.h: New file.
4099         * config/mep/intrinsics.h: New file.
4100         * config/mep/intrinsics.md: New file.
4101         * config/mep/ivc2-template.h: New file.
4102         * config/mep/mep-c5.cpu: New file.
4103         * config/mep/mep-core.cpu: New file.
4104         * config/mep/mep-default.cpu: New file.
4105         * config/mep/mep-ext-cop.cpu: New file.
4106         * config/mep/mep-intrin.h: New file.
4107         * config/mep/mep-ivc2.cpu: New file.
4108         * config/mep/mep-lib1.asm: New file.
4109         * config/mep/mep-lib2.c: New file.
4110         * config/mep/mep-pragma.c: New file.
4111         * config/mep/mep-protos.h: New file.
4112         * config/mep/mep-tramp.c: New file.
4113         * config/mep/mep.c: New file.
4114         * config/mep/mep.cpu: New file.
4115         * config/mep/mep.h: New file.
4116         * config/mep/mep.md: New file.
4117         * config/mep/mep.opt: New file.
4118         * config/mep/predicates.md: New file.
4119         * config/mep/t-mep: New file.
4120
4121 2009-06-23  Ian Lance Taylor  <iant@google.com>
4122
4123         * configure.ac: Invoke AC_PROG_CXX.  Separate C specific warnings
4124         from loose_warn into c_loose_warn and from strict_warn into
4125         c_strict_warn.  Set and substitute warn_cxxflags.  Check for
4126         --enable-build-with-cxx.  Set and substitute
4127         ENABLE_BUILD_WITH_CXX.  Set and substitute HOST_LIBS.
4128         * Makefile.in (CXXFLAGS): New variable.
4129         (C_LOOSE_WARN, C_STRICT_WARN): New variables.
4130         (GCC_WARN_CFLAGS): Add $(C_LOOSE_WARN).  Add $(C_STRICT_WARN) if
4131         the default is the same as $(STRICT_WARN).
4132         (GCC_WARN_CXXFLAGS, WARN_CXXFLAGS): New variables.
4133         (CXX): New variable.
4134         (COMPILER): New value if ENABLE_BUILD_WITH_CXX.
4135         (COMPILER_FLAGS, LINKER, LINKER_FLAGS): Likewise.
4136         (ALL_COMPILERFLAGS, ALL_LINKERFLAGS): Likewise.
4137         (HOST_LIBS): New variable.
4138         (GCC_CFLAGS): Add $(C_LOOSE_WARN).
4139         (ALL_CXXFLAGS): New variable.
4140         (LIBS, BACKENDLIBS): Add $(HOST_LIBS).
4141         * doc/install.texi (Configuration): Document
4142         --enable-build-with-cxx, --with-stage1-ldflags,
4143         --with-stage1-libs, --with-boot-ldflags, --with-boot-libs.
4144         * configure: Rebuild.
4145
4146 2009-06-24  Ramana Radhakrishnan  <ramana.radhakrishnan@arm.com>
4147
4148         * config/arm/arm.c (arm_override_options): Fix braces and formatting
4149         from previous commit.
4150
4151 2009-06-23  Ian Lance Taylor  <iant@google.com>
4152
4153         * Makefile.in ($(out_object_file)): Depend upon $(DF_H).
4154
4155 2009-06-23  Ian Lance Taylor  <iant@google.com>
4156
4157         * reload.c (alternative_allows_const_pool_ref): Mark mem parameter
4158         with ATTRIBUTE_UNUSED.
4159
4160 2009-06-23  Michael Meissner  <meissner@linux.vnet.ibm.com>
4161             Pat Haugen  <pthaugen@us.ibm.com>
4162             Revital Eres  <eres@il.ibm.com>
4163
4164         * config.in (HAVE_AS_POPCNTD): Add default definition.
4165         (HAVE_AS_LWSYNC): Ditto.
4166
4167         * configure.ac (gcc_cv_as_powerpc_mfpgpr): Provide real binutils
4168         release number.
4169         (gcc_cv_as_powerpc_cmpb): Ditto.
4170         (gcc_cv_as_powerpc_dfp): Ditto.
4171         (gcc_cv_as_powerpc_vsx): Ditto.
4172         (gcc_cv_as_powerpc_popcntd): Add feature test for assembler
4173         supporting the popcntd/lwsync instructions.
4174         (gcc_cv_as_powerpc_lwsync): Ditto.
4175         * configure: Regenerate.
4176
4177         * config/rs6000/aix53.h (ASM_CPU_SPEC): Add support for
4178         -mcpu=native and -mcpu=power7.
4179         * config/rs6000/aix61.h (ASM_CPU_SPEC): Ditto.
4180
4181         * config/rs6000/linux64.opt (-mprofile-kernel): Move switch to be
4182         a variable instead of a mask to reduce the number of mask bits.
4183         * config/rs6000/sysv4.opt (-mbit-align): Ditto.
4184         (-mbit-word): Ditto.
4185         (-mregnames): Ditto.
4186         * config/rs6000/rs6000.opt (-mupdate): Ditto.
4187         (-mfused-madd): Ditto.
4188
4189         * config/rs6000/rs6000.opt (-mpopcntd): New switch for non-VSX ISA
4190         2.06 instructions.
4191         (-mvsx): New switch for VSX instructions.
4192         (-misel): Move from a variable to a mask to allow it to be set by
4193         -mcpu=.
4194
4195         * config/rs6000/rs6000-protos.h (rs6000_hard_regno_nregs): Change
4196         function declaration to an array declaration.
4197         (rs6000_hard_regno_nregs): New external array declaration.
4198
4199         * config/rs6000/t-rs6000 (MD_INCLUDES): Define, add all of the .md
4200         files included by rs6000.md.
4201
4202         * config/rs6000/linux64.h (SUBSUBTARGET_OVERRIDE_OPTIONS): Use
4203         SET_PROFILE_KERNEL macro to reset the -mprofile-kernel switch.
4204
4205         * config/rs6000/rs6000.c (rs6000_isel): Delete, -misel moved to be
4206         a target mask.
4207         (rs6000_debug_reg): New -mdebug= variables.
4208         (rs6000_debug_addr): Ditto.
4209         (rs6000_debug_cost): Ditto.
4210         (rs6000_pmode): New variable to hold Pmode.
4211         (rs6000_pointer_size): New variable to hold POINTER_SIZE.
4212         (rs6000_class_max_nregs): New array to hold CLASS_MAX_NREGS
4213         calculated at compiler start.
4214         (rs6000_hard_regno_nregs): Change function to an array which holds
4215         HARD_REGNO_NREGS calculated at compiler start.
4216         (rs6000_explicit_options): Delete isel field.
4217         (rs6000_vector_unit): New array to hold which vector unit
4218         supports arithmetic options for a given type.
4219         (rs6000_vector_mem): New array to hold which vector unit supports
4220         memory reference operations for a given type.
4221         (rs6000_vector_align): New array to given the alignment of each
4222         vector type.
4223         (power7_cost): New basic costs for power7.
4224         (SET_PROFILE_KERNEL): New macro for resetting -mprofile-kernel.
4225         (rs6000_hard_regno_nregs_internal): New function, moved from
4226         HARD_REGNO_NREGS, to calculate the number of registers each hard
4227         register takes for each type.
4228         (rs6000_debug_reg_print): New function for -mdebug=reg support.
4229         (rs6000_debug_vector_unit): New array, map rs6000_vector to string.
4230         (+rs6000_init_hard_regno_mode_ok): New function, move calculation
4231         of HARD_REGNO_NREGS, CLASS_MAX_NREGS, REGNO_REG_CLASS, and vector
4232         unit information here so it is calculated once at compiler startup
4233         time.
4234         (rs6000_override_options): Make -misel a target mask.  Add more
4235         power7 target masks.  Setup Pmode and POINTER_SIZE.  Add initial
4236         VSX support.  Add support for -mdebug=reg, -mdebug=addr, and
4237         -mdebug=cost.
4238         (POWERPC_MASKS): Add MASK_POPCNTD, MASK_VSX, and MASK_ISEL.
4239         (rs6000_handle_option): Move -misel from variable to target mask.
4240         (rs6000_builtin_mask_for_load): Add VSX support.
4241         (rs6000_conditional_register_usage): Ditto.
4242         (USE_ALTIVEC_FOR_ARG_P): Ditto.
4243         (function_arg_boundary): Ditto.
4244         (rs6000_expand_builtin): Ditto.
4245         (def_builtin): Make abort message a little friendlier.
4246         (rs6000_emit_int_cmove): Add support for 64-bit isel.
4247
4248         * config/rs6000/rs6000.h (ASM_CPU_POWER7_SPEC): Depend on the
4249         assembler support the popcntd instruction instead of a vsx
4250         instruction to enable power7 support.
4251         (ASM_CPU_SPEC): Add support for -mcpu=native and -mcpu=power7.
4252         (EXTRA_SPECS): Add ASM_CPU_NATIVE_SPEC to allow passing the right
4253         option to the assembler if -mcpu=native.
4254         (ASM_CPU_NATIVE_SPEC): Ditto.
4255         (TARGET_POPCNTD): If assembler doesn't support popcntd, turn off
4256         ISA 2.06 features.
4257         (TARGET_LWSYNC_INSTRUCTION): Define whether it is safe to issue
4258         the lwsync instruction.
4259         (enum processor_type): Add PROCESSOR_POWER7.
4260         (rs6000_debug_reg): New -mdebug= options.
4261         (rs6000_debug_addr): Ditto.
4262         (rs6000_debug_cost): Ditto.
4263         (rs6000_isel): Delete.
4264         (enum rs6000_vector): New enum to say what vector unit we have.
4265         (VECTOR_UNIT_*): New macros to say which vector unit has
4266         arithmetic operations for a given type.
4267         (VECTOR_MEM_*): New macros to say which vector unit has memory
4268         operations for a given type.
4269         (TARGET_LDBRX): Whether the machine supports the ldbrx
4270         instruction.
4271         (TARGET_ISEL): Delete, -misel moved to be a mask.
4272         (TARGET_ISEL64): New macro for 64-bit isel support.
4273         (UNITS_PER_VSX_WORD): New macro.
4274         (POINTER_SIZE): Move to be an external variable, rather than
4275         calculating whether we are generating 32 ot 64-bit code.
4276         (Pmode): Ditto.
4277         (STACK_BOUNDARY): Add VSX support.
4278         (LOCAL_ALIGNMENT): Ditto.
4279         (SLOW_UNALIGNED_ACCESS): Ditto.
4280         (VSX_REGNO_P): New macro for VSX support.
4281         (VFLOAT_REGNO_P): Ditto.
4282         (VINT_REGNO_P): Ditto.
4283         (VLOGICAL_REGNO_P): Ditto.
4284         (VSX_VECTOR_MODE): Ditto.
4285         (VSX_SCALAR_MODE): Ditto.
4286         (VSX_MODE): Ditto.
4287         (VSX_MOVE_MODE): Ditto.
4288         (VSX_REG_CLASS_P): Ditto.
4289         (HARD_REGNO_NREGS): Instead of calling a function, use an array
4290         lookup.
4291         (UNITS_PER_SIMD_WORD): Add VSX support.
4292         (MODES_TIEABLE_P): Ditto.
4293         (STARTING_FRAME_OFFSET): Ditto.
4294         (STACK_DYNAMIC_OFFSET): Ditto.
4295         (EPILOGUE_USES): Ditto.
4296         (REGNO_REG_CLASS): Move to array lookup.
4297         (CLASS_MAX_NREGS): Ditto.
4298         (rs6000_vector_reg_class): Add declaration.
4299         (ADDITIONAL_REGISTER_NAMES): Add VSX names for the registers that
4300         overlap with the floating point and Altivec registers.
4301
4302         * config/rs6000/e500.h (CHECK_E500_OPTIONS): Disallow -mvsx.
4303
4304         * config/rs6000/driver-rs6000.c (asm_names): New static array to
4305         give the appropriate asm switches if -mcpu=native.
4306         (host_detect_local_cpu): Add support for "asm".
4307         (host_detect_local_cpu): Follow GNU code guidelines for name.
4308
4309         * config/rs6000/sysv4.h (SUBTARGET_OVERRIDE_OPTIONS): Move
4310         -mbit-word to a variable instead of being a target mask.
4311
4312         * config/rs6000/sync.md (lwsync): If the assembler supports it,
4313         emit the lwsync instruction instead of emitting the instruction as
4314         an integer constant.
4315
4316         * config/rs6000/spe.md (spe_fixuns_truncdfsi2): Rename from
4317         fixuns_trundfsi2, move expander into rs6000.md.
4318
4319         * config/rs6000/rs6000.md (cpu): Add power7.
4320         (sel, *ptrsize): New mode attributes for 32/64-bit isel.
4321         (logical predicate patterns): Change the single instruction
4322         primitives that set CR0 to be fast_compare instead of compare.
4323         (norsi*): Ditto.
4324         (popcntwsi2): Add support for ISA 2.06 popcount instructions.
4325         (popcntddi2): Ditto.
4326         (popcount<mode>): Ditto.
4327         (floating multiply/add insns): Name the floating point
4328         multiply/add insns.
4329         (isel_signed_<mode>): Add support for -misel on 64-bit systems.
4330         (isel_unsigned_<mode>): Ditto.
4331         (fixuns_trundfsi2): Move expander here from spe.md.
4332         (smindi3): Define if we have -misel on 64-bit systems.
4333         (smaxdi3): Ditto.
4334         (umindi3): Ditto.
4335         (umaxdi3): Ditto.
4336
4337 2009-06-23  Anatoly Sokolov  <aesok@post.ru>
4338
4339         * config.gcc (avr-*-rtems*, avr-*-*): Set extra_gcc_objs and
4340         extra_objs.
4341         * config/avr/avr.c (avr_current_device): New variable.
4342         (avr_arch_types, avr_mcu_types): Move to avr-deveces.c.
4343         (avr_arch, mcu_type_s): Move to avr.h.
4344         * config/avr/avr.h (base_arch_s). Add reserved2, arch_name and
4345         default_data_section_start fields.
4346         (avr_arch): Moved from avr.c.
4347         (mcu_type_s): Moved from avr.c. Add short_sp, data_section_start and
4348         library_name fields.
4349         (avr_current_device, avr_mcu_types, avr_arch_types,
4350         avr_device_to_arch, avr_device_to_data_start,
4351         avr_device_to_startfiles, avr_device_to_devicelib): Declare.
4352         (EXTRA_SPEC_FUNCTIONS): Define.
4353         (LINK_SPEC): Remove device name to '-m ...' and '-Tdata ...' linker
4354         options mapping. Use device_to_arch and device_to_data_start insted.
4355         (STARTFILE_SPEC): Use device_to_startfile instead of crt_binutils.
4356         (CRT_BINUTILS_SPECS, EXTRA_SPECS): Remove.
4357         * config/avr/t-avr (driver-avr.o, avr-devices.o): New rules.
4358         * config/avr/driver-avr.c: New file.
4359         * config/avr/avr-devices.c: New file.
4360
4361 2009-06-23  Jakub Jelinek  <jakub@redhat.com>
4362
4363         * var-tracking.c (unshare_variable): Force initialized to
4364         be VAR_INIT_STATUS_INITIALIZED unless flag_var_tracking_uninit.
4365         (set_variable_part): Likewise.
4366         (struct variable_union_info): Remove pos_src field.
4367         (vui_vec, vui_allocated): New variables.
4368         (variable_union): Pass VAR_INIT_STATUS_UNKNOWN to unshare_variable
4369         unconditionally.  Avoid XCVECNEW/free for every sorting, for dst_l
4370         == 1 use a simpler sorting algorithm.  Compute pos field right
4371         away, don't fill in pos_src.  For dst_l == 2 avoid qsort.
4372         Avoid quadratic comparison if !flag_var_tracking_uninit.
4373         (variable_canonicalize): Pass VAR_INIT_STATUS_UNKNOWN to
4374         unshare_variable unconditionally.   
4375         (dataflow_set_different_2): Removed.
4376         (dataflow_set_different): Don't traverse second hash table.
4377         (compute_bb_dataflow): Pass VAR_INIT_STATUS_UNINITIALIZED
4378         unconditionally to var_reg_set or var_mem_set.
4379         (emit_notes_in_bb): Likewise.
4380         (delete_variable_part): Pass VAR_INIT_STATUS_UNKNOWN to
4381         unshare_variable.
4382         (emit_note_insn_var_location): Don't set initialized to
4383         VAR_INIT_STATUS_INITIALIZED early.
4384         (vt_finalize): Free vui_vec if needed, clear vui_vec and
4385         vui_allocated.
4386         * rtl.c (rtx_equal_p): Don't implement on top of rtx_equal_p_cb.
4387
4388         * tree-object-size.c (addr_object_size): Instead of checking
4389         for non-NULL TREE_CHAIN of the FIELD_DECL check that there
4390         are no FIELD_DECLs following it.
4391
4392 2009-06-23  Andreas Krebbel  <krebbel1@de.ibm.com>
4393
4394         * tree-ssa-math-opts.c (find_bswap): Increase the search depth in
4395         order to match bswaps with signed source operands.
4396
4397 2009-06-23  Rainer Orth  <ro@TechFak.Uni-Bielefeld.DE>
4398
4399         * sdbout.c (sdbout_one_type): Fix braces in switch.
4400
4401 2009-06-23  Richard Guenther  <rguenther@suse.de>
4402
4403         * tree-ssa-structalias.c (struct variable_info): Add is_global_var
4404         member.
4405         (var_anything, anything_tree, var_nothing, nothing_tree, var_readonly,
4406         readonly_tree, var_escaped, escaped_tree, var_nonlocal, nonlocal_tree,
4407         var_callused, callused_tree, var_storedanything, storedanything_tree,
4408         var_integer, integer_tree): Remove global variables.
4409         (new_var_info): Do not pass new id, append the new var to the
4410         global variable vector.
4411         (do_ds_constraint): Use is_global_var member of the variable-info.
4412         (new_scalar_tmp_constraint_exp): Adjust.
4413         (create_function_info_for): Likewise.
4414         (create_variable_info_for): Likewise.
4415         (find_what_var_points_to): Remove dead code.
4416         (init_base_vars): Simplify.
4417         (compute_points_to_sets): Adjust.
4418
4419 2009-06-22  Adam Nemet  <anemet@caviumnetworks.com>
4420
4421         * combine.c (try_combine): Dump information about the insns we're
4422         combining.
4423
4424 2009-06-22  Adam Nemet  <anemet@caviumnetworks.com>
4425
4426         * combine.c (combine_simplify_rtx): Remove TRULY_NOOP_TRUNCATION
4427         check when calling force_to_mode on TRUNCATE's operand.
4428
4429 2009-06-22  Ian Lance Taylor  <iant@google.com>
4430
4431         * config/rs6000/rs6000.opt: Move msched-epilog before msched-prolog.
4432
4433 2009-06-22  Steven Bosscher  <steven@gcc.gnu.org>
4434
4435         * config/arm/arm.md (prologue_use): Set length of fake insn to 0.
4436
4437 2009-06-22  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
4438
4439         * doc/invoke.texi (Link Options): -nodefaultlibs and -nostdlib
4440         override library linkage flags such as -static-libgcc or
4441         -shared-libgcc.
4442
4443 2009-06-22  Maxim Kuvyrkov  <maxim@codesourcery.com>
4444
4445         * config/m68k/m68k-devices.def: Add line for MCF5221x.
4446
4447 2009-06-22  Ian Lance Taylor  <iant@google.com>
4448
4449         * config/linux.opt: Put mglibc ahead of muclibc.
4450
4451         * c-decl.c (diagnose_mismatched_decls): Add -Wc++-compat warning
4452         for duplicate decls.
4453
4454 2009-06-22  Matthias Klose  <doko@ubuntu.com>
4455
4456         * Makefile.in (install-plugin): Remove extra `/' after $(DESTDIR).
4457
4458 2009-06-22  Steven Bosscher  <steven@gcc.gnu.org>
4459
4460         PR objc/28050
4461         * c-parser.c (c_parser_objc_message_args): Return error_mark_node
4462         instead of NULL if a parser error occurs.
4463
4464 2009-06-22  Rainer Orth  <ro@TechFak.Uni-Bielefeld.DE>
4465
4466         * dwarf2out.c (dwarf2_debug_hooks): Initialize
4467         non-DWARF2_DEBUGGING_INFO version.
4468
4469 2009-06-22  Kai Tietz  <kai.tietz@onevision.com>
4470
4471         * config.gcc (i[34567]86-*-mingw*, x86_64-*-mingw*): Add
4472         i386/t-fprules-softfp and soft-fp/t-softfp to tmake_file.
4473
4474         * config/i386/mingw32.h (LIBGCC2_HAS_TF_MODE): Define.
4475         (LIBGCC2_TF_CEXT): Define.
4476         (TF_SIZE): Define.
4477
4478 2009-06-22  Ramana Radhakrishnan  <ramana.radhakrishnan@arm.com>
4479
4480         PR target/40463
4481         * config/arm/linux-eabi.h (CLEAR_INSN_CACHE): Fix definition.
4482
4483 2009-06-22  Ramana Radhakrishnan  <ramana.radhakrishnan@arm.com>
4484
4485         * config/arm/arm.c (arm_override_options): Disable
4486         -mcaller-super-interworking and -mcallee-super-interworking.
4487         * doc/invoke.texi (ARM Options): Document this.
4488
4489 2009-06-22  Nathan Sidwell  <nathan@codesourcery.com>
4490
4491         * config/arm/arm.c (arm_print_operand): Deal with HIGH.
4492         * config/arm/constraints.md (j): New constraint for movw operands.
4493         (N): Remove thumb2 meaning.
4494         * config/arm/arm.md (*arm_movw): Delete.
4495         (*arm_movsi_insn): Use j constraint for movw instead of N constraint.
4496         * config/arm/vfp.md (*arm_movsi_vfp, *thumb2_movsi_vfp): Likewise.
4497         * config/arm/thumb2.md (*thumb2_movsi_insn): Likewise.
4498
4499 2009-06-22  Martin Jambor  <mjambor@suse.cz>
4500
4501         PR tree-optimization/40492
4502         * tree-sra.c (sra_modify_assign): Pass zero offsets to
4503         build_ref_for_offset.
4504
4505 2009-06-22  Shujing Zhao  <pearly.zhao@oracle.com>
4506
4507         * alias.c: Use REG_P, MEM_P, CONST_INT_P, LABEL_P, CALL_P, NOTE_P and
4508         JUMP_TABLE_DATA_P predicates where applicable.
4509         * auto-inc-dec.c: Ditto.
4510         * builtins.c: Ditto.
4511         * caller-save.c: Ditto.
4512         * calls.c: Ditto.
4513         * cfgcleanup.c: Ditto.
4514         * cfglayout.c: Ditto.
4515         * cfgrtl.c: Ditto.
4516         * combine.c: Ditto.
4517         * combine-stack-adj.c: Ditto.
4518         * cse.c: Ditto.
4519         * cselib.c: Ditto.
4520         * dbxout.c: Ditto.
4521         * df-scan.c: Ditto.
4522         * dse.c: Ditto.
4523         * dwarf2asm.c: Ditto.
4524         * dwarf2out.c: Ditto.
4525         * emit-rtl.c: Ditto.
4526         * except.c: Ditto.
4527         * explow.c: Ditto.
4528         * expmed.c: Ditto.
4529         * expr.c: Ditto.
4530         * final.c: Ditto.
4531         * function.c: Ditto.
4532         * fwprop.c: Ditto.
4533         * gcse.c: Ditto.
4534         * genpreds.c: Ditto.
4535         * genrecog.c: Ditto.
4536         * ifcvt.c: Ditto.
4537         * ira-costs.c: Ditto.
4538         * ira-lives.c: Ditto.
4539         * jump.c: Ditto.
4540         * loop-iv.c: Ditto.
4541         * lower-subreg.c: Ditto.
4542         * modulo-sched.c: Ditto.
4543         * optabs.c: Ditto.
4544         * postreload.c: Ditto.
4545         * print-rtl.c: Ditto.
4546         * recog.c: Ditto.
4547         * reginfo.c: Ditto.
4548         * regmove.c: Ditto.
4549         * reload1.c: Ditto.
4550         * reload.c: Ditto.
4551         * reorg.c: Ditto.
4552         * rtlanal.c: Ditto.
4553         * rtl.c: Ditto.
4554         * sched-vis.c: Ditto.
4555         * sdbout.c: Ditto.
4556         * sel-sched-ir.c: Ditto.
4557         * simplify-rtx.c: Ditto.
4558         * targhooks.c: Ditto.
4559         * var-tracking.c: Ditto.
4560         * vmsdbgout.c: Ditto.
4561
4562 2009-06-22  Matthias Klose  <doko@ubuntu.com>
4563
4564         * Makefile.in (install-plugin): Always use DESTDIR.
4565
4566 2009-06-22  Olivier Hainque  <hainque@adacore.com>
4567         
4568         * config/pa/pa.c (output_call): Don't optimize post call jumps
4569         into return address adjustments if the call may throw.
4570
4571 2009-06-21  Richard Earnshaw  <rearnsha@arm.com>
4572
4573         * arm.c (thumb1_output_casesi): New function.
4574         * arm.h (CASE_VECTOR_PC_RELATIVE): Thumb-1 code is also relative if
4575         optimizing for size or PIC.
4576         (CASE_VECTOR_SHORTEN_MODE): Handle thumb-1.
4577         * arm.md (UNSPEC_THUMB1_CASESI): New constant.
4578         (casesi): Handle Thumb-1 when optimizing for size or PIC.
4579         (thumb1_casesi_internal_pic): New expand rule.
4580         (thumb1_casesi_dispatch): New pattern.
4581         * aout.h (ASM_OUTPUT_ADDR_DIFF_ELT): Use shortened vectors for
4582         thumb-1 mode.
4583         * coff.h (JUMP_TABLES_IN_TEXT_SECTION): Thumb-1 jump tables are now
4584         in the text seciton when PIC or optimizing for size.
4585         * elf.h (JUMP_TABLES_IN_TEXT_SECTION): Likewise.
4586         * lib1funcs.asm ([__ARM_EABI__]): Add an attribute describing stack
4587         preservation properties of code.
4588         (__gnu_thumb1_case_sqi, __gnu_thumb1_case_uqi): New functions.
4589         (__gnu_thumb1_case_shi, __gnu_thumb1_case_uhi): New functions.
4590         (__gnu_thumb1_case_si): New function.
4591         * t-arm (LIB1ASMSRC): Define here.
4592         (LIB1ASMFUNCS): Add some common functions.
4593         * t-arm-elf (LIB1ASMSRC): Delete.
4594         (LIB1ASMFUNCS): Append to existing set.
4595         * t-pe (LIB1ASMSRC, LIB1ASMFUNCS): Likewise.
4596         * t-strongarm-elf (LIB1ASMSRC, LIB1ASMFUNCS): Likewise.
4597         * t-symbian (LIB1ASMFUNCS): Likewise.
4598         * t-vxworks (LIB1ASMSRC, LIB1ASMFUNCS): Likewise.
4599         * t-wince-pe (LIB1ASMSRC, LIB1ASMFUNCS): Likewise.
4600
4601 2009-06-21  Richard Guenther  <rguenther@suse.de>
4602
4603         PR tree-optimization/38729
4604         * tree-ssa-loop-niter.c (find_loop_niter_by_eval): Restrict
4605         to loops with a single exit if -fno-expensive-optimizations.
4606
4607 2009-06-21  Jakub Jelinek  <jakub@redhat.com>
4608
4609         * var-tracking.c (struct shared_hash_def, shared_hash): New types.
4610         (dataflow_set): Change vars type from htab_t to shared_hash.
4611         (shared_hash_pool, empty_shared_hash): New variables.
4612         (vars_clear): Removed.
4613         (shared_hash_shared, shared_hash_htab, shared_hash_copy,
4614         shared_hash_find_slot_unshare, shared_hash_find_slot,
4615         shared_hash_find_slot_noinsert, shared_hash_find): New
4616         static inlines.
4617         (shared_hash_unshare, shared_hash_destroy): New functions.
4618         (unshare_variable): Unshare set->vars if shared, use
4619         shared_hash_htab.
4620         (vars_copy): Use htab_traverse_noresize instead of htab_traverse.
4621         (get_init_value, find_src_set_src, dump_dataflow_set,
4622         clobber_variable_part, emit_notes_for_differences): Use
4623         shared_hash_htab.
4624         (dataflow_set_init): Remove second argument, set vars to
4625         empty_shared_hash instead of creating a new htab.
4626         (dataflow_set_clear): Call shared_hash_destroy and set vars
4627         to empty_shared_hash instead of calling vars_clear.
4628         (dataflow_set_copy): Don't call vars_copy, instead just share
4629         the src htab with dst.
4630         (variable_union): Use shared_hash_*, use initially NO_INSERT
4631         lookup if set->vars is shared.  Don't keep slot cleared before
4632         calling unshare_variable.  Unshare set->vars if needed.
4633         Even ->refcount == 1 vars must be unshared if set->vars is shared
4634         and var needs to be modified.
4635         (variable_canonicalize): New function.
4636         (dataflow_set_union): If dst->vars is empty, just share src->vars
4637         with dst->vars and traverse with variable_canonicalize to canonicalize
4638         and unshare what is needed.
4639         (dataflow_set_different): If old_set and new_set use the same shared
4640         htab, they aren't different.  If number of htab elements is different,
4641         htabs are different.  Use shared_hash_*.
4642         (dataflow_set_destroy): Call shared_hash_destroy instead of
4643         htab_delete.
4644         (compute_bb_dataflow, emit_notes_in_bb, vt_emit_notes): Don't pass
4645         second argument to dataflow_set_init.
4646         (vt_initialize): Likewise.  Initialize shared_hash_pool and
4647         empty_shared_hash, move bb in/out initialization afterwards.
4648         Use variable_htab_free instead of NULL as changed_variables del hook.
4649         (variable_was_changed): Change type of second argument to pointer to
4650         dataflow_set.  When inserting var into changed_variables, bump
4651         refcount.  Unshare set->vars if set is shared htab and slot needs to
4652         be cleared.
4653         (set_variable_part): Use shared_hash_*, use initially NO_INSERT
4654         lookup if set->vars is shared.  Unshare set->vars if needed.
4655         Even ->refcount == 1 vars must be unshared if set->vars is shared
4656         and var needs to be modified.  Adjust variable_was_changed caller.
4657         (delete_variable_part): Use shared_hash_*.  Even ->refcount == 1
4658         vars must be unshared if set->vars is shared and var needs to be
4659         modified.  Adjust variable_was_changed caller.
4660         (emit_note_insn_var_location): Don't pool_free var.
4661         (emit_notes_for_differences_1): Initialize empty_var->refcount to 0
4662         instead of 1.
4663         (vt_finalize): Call htab_delete on empty_shared_hash->htab and
4664         free_alloc_pool on shared_hash_pool.
4665
4666 2009-06-20  Anthony Green  <green@moxielogic.com>
4667
4668         * config/moxie/sfp-machine.h (__gcc_CMPtype, CMPtype): Define.
4669         * config/moxie/moxie.h (LOAD_EXTEND_OP): Define.
4670
4671 2009-06-20  Richard Guenther  <rguenther@suse.de>
4672
4673         * tree-ssa-structalias.c (find_func_aliases): For memset use
4674         a constraint from NULL if we memset to zero.
4675         * tree-ssa-alias.c (ref_maybe_used_by_call_p_1): Add builtins
4676         we explicitly handle that do not read from memory.
4677         (call_may_clobber_ref_p_1): Properly handle builtins that may
4678         set errno.
4679
4680 2009-06-20  Richard Guenther  <rguenther@suse.de>
4681
4682         PR tree-optimization/40495
4683         * tree-ssa-structalias.c (get_constraint_exp_for_temp): Remove.
4684         (new_scalar_tmp_constraint_exp): New function.
4685         (process_constraint): Do not create temporary decls.
4686         (process_all_all_constraints): Likewise.
4687         (handle_const_call): Likewise.
4688         (create_function_info_for): Do not set decl.
4689
4690 2009-06-19  Ian Lance Taylor  <iant@google.com>
4691
4692         * config/rs6000/rs6000.c (rs6000_explicit_options): Make static.
4693         (rs6000_attribute_table): Make static; move before use.
4694
4695 2009-06-19  Eric Botcazou  <ebotcazou@adacore.com>
4696
4697         * tree.c (substitute_in_expr) <COMPONENT_REF>: Tweak and reformat.
4698         <tcc_vl_exp>: Call process_call_operands on the new CALL_EXPR.
4699         Propagate the TREE_READONLY flag without overwriting it.
4700         (substitute_placeholder_in_expr) <tcc_vl_exp>: Likewise.
4701         Propagate the TREE_READONLY flag onto the result.
4702         (process_call_operands): Move around.  Use correct constant value.
4703
4704 2009-06-19  Ramana Radhakrishnan  <ramana.radhakrishnan@arm.com>
4705
4706         PR target/40482
4707         * config/arm/arm.c (thumb_shiftable_const): Truncate val to 32 bits.
4708         * config/arm/arm.md: Likewise.
4709
4710 2009-06-19  Ian Lance Taylor  <iant@google.com>
4711
4712         * tree-cfg.c (gimple_redirect_edge_and_branch): Change ERROR_MARK
4713         to GIMPLE_ERROR_MARK.
4714
4715         * c-typeck.c (build_conditional_expr): Add op1_original_type and
4716         op2_original_type parameters.  Warn about using different enum types.
4717         * c-parser.c (c_parser_conditional_expression): Pass original
4718         types to build_conditional_expr.
4719         * c-tree.h (build_conditional_expr): Update declaration.
4720
4721 2009-06-19  Ian Lance Taylor  <iant@google.com>
4722
4723         * config/i386/i386.c (ix86_function_specific_save): Test that
4724         fields match values, rather than testing the values are in a
4725         certain range.
4726
4727 2009-06-19  Richard Guenther  <rguenther@suse.de>
4728
4729         * tree-ssa-alias.c (ptr_deref_may_alias_decl_p): Handle
4730         ADDR_EXPR pointers.
4731         (ptr_derefs_may_alias_p): Likewise.
4732         (ptr_deref_may_alias_ref_p_1): New function.
4733         (ptr_deref_may_alias_ref_p): Likewise.
4734         (ref_maybe_used_by_call_p_1): Handle builtins that are not
4735         covered by looking at the ESCAPED solution.
4736         (call_may_clobber_ref_p_1): Likewise.
4737         * tree-ssa-structalias.c (get_constraint_for_ptr_offset):
4738         Handle NULL_TREE offset.  Do not produce redundant constraints.
4739         (process_all_all_constraints): New helper function.
4740         (do_structure_copy): Use it.
4741         (handle_lhs_call): Likewise.
4742         (find_func_aliases): Handle some builtins with pointer arguments
4743         and/or return values explicitly.
4744
4745 2009-06-19  Ian Lance Taylor  <iant@google.com>
4746
4747         * varasm.c (const_rtx_hash_1): Remove const qualifier from shift.
4748
4749 2009-06-19  Ian Lance Taylor  <iant@google.com>
4750
4751         * rtl.h (SUBREG_PROMOTED_UNSIGNED_P): Add cast to int.
4752
4753 2009-06-19  Ian Lance Taylor  <iant@google.com>
4754
4755         * ggc-page.c (ggc_pch_write_object): Initialize emptyBytes.
4756         * sdbout.c (sdb_debug_hooks): Initialize non-SDB_DEBUGGING_INFO
4757         version.
4758
4759         * c-decl.c (finish_decl): If -Wc++-compat, warn about
4760         uninitialized const.
4761
4762 2009-06-19  Ian Lance Taylor  <iant@google.com>
4763
4764         * dse.c (struct store_info): Rename bitmap field to bmap.  Change
4765         all uses.
4766
4767         * c-decl.c (in_struct, struct_types): Remove.
4768         (struct c_binding): Add in_struct field.
4769         (c_binding_ptr): Define type, along with VEC.
4770         (struct c_struct_parse_info): Define.
4771         (struct_parse_info): New static variable.
4772         (bind): Initialize in_struct field.
4773         (start_struct): Remove enclosing_in_struct and
4774         enclosing_struct_types parameters.  Add
4775         enclosing_struct_parse_info parameter.  Change all callers.  Set
4776         struct_parse_info rather than in_struct and struct_types.
4777         (grokfield): If -Wc++-compat and there is a symbol binding for the
4778         field name, set the in_struct flag and push it on the
4779         struct_parse_info->fields vector.
4780         (warn_cxx_compat_finish_struct): New static function.
4781         (finish_struct): Remove enclosing_in_struct and
4782         enclosing_struct_types parameters.  Add
4783         enclosing_struct_parse_info parameter.  Change all callers.  Don't
4784         set C_TYPE_DEFINED_IN_STRUCT here.  Call
4785         warn_cxx_compat_finish_struct.  Free struct_parse_info and set to
4786         parameter.  Only push on struct_types if warn_cxx_compat.
4787         (finish_enum): Only push on struct_types if warn_cxx_compat.
4788         (declspecs_add_type): Add loc parameter.  Change all callers.
4789         Change all error calls to error_at.  Pass loc, not input_location,
4790         to pedwarn calls.  Warn if -Wc++-compat and a typedef name is
4791         defined in a struct.  If -Wc++-compat and parsing a struct, record
4792         that a typedef name was used.
4793         * c-parser.c (c_parser_declspecs): Get location to pass to
4794         declspecs_add_type.
4795         (c_parser_struct_or_union_specifier): Update calls to start_struct
4796         and finish_struct.
4797         * c-tree.h (struct c_struct_parse_info): Declare.
4798         (finish_struct, start_struct): Update declarations.
4799         (declspecs_add_type): Update declaration.
4800
4801 2009-06-19  Ian Lance Taylor  <iant@google.com>
4802
4803         * c-decl.c (grokdeclarator): If -Wc++-compat, warn about a global
4804         variable with an anonymous type.
4805
4806 2009-06-19  Uros Bizjak  <ubizjak@gmail.com>
4807
4808         * see.c: Remove for real.
4809
4810 2009-06-19  Uros Bizjak  <ubizjak@gmail.com>
4811
4812         * optabs.h (enum optab_index): Add new OTI_significand.
4813         (significand_optab): Define corresponding macro.
4814         * optabs.c (init_optabs): Initialize significand_optab.
4815         * genopinit.c (optabs): Implement significand_optab using
4816         significand?f2 patterns.
4817         * builtins.c (expand_builtin_mathfn): Handle
4818         BUILT_IN_SIGNIFICAND{,F,L}.
4819         (expand_builtin): Expand BUILT_IN_SIGNIFICAND{,F,L} using
4820         expand_builtin_mathfn if flag_unsafe_math_optimizations is set.
4821
4822         * config/i386/i386.md (significandxf2, significand<mode>2): New
4823         expanders to implement significandf, significand and significandl
4824         built-ins as inline x87 intrinsics.
4825
4826 2009-06-18  Anatoly Sokolov  <aesok@post.ru>
4827
4828         * config/avr/avr.c (avr_override_options): Remove setting value of
4829         PARAM_INLINE_CALL_COST.
4830
4831 2009-06-18  Richard Henderson  <rth@redhat.com>
4832
4833         PR 40488
4834         * tree-pass.h (TDF_ASMNAME): New.
4835         * tree-dump.c (dump_options): Add asmname.
4836         * doc/invoke.texi: Document it.
4837
4838         * tree-pretty-print.c (maybe_dump_asm_name): Merge into...
4839         (dump_decl_name): ...here.
4840         (dump_function_name): New flags arg; mind TDF_ASMNAME.
4841         (dump_generic_node): Update dump_function_name calls.
4842         (print_call_name): New flags arg; update all dump calls.
4843         * diagnostic.h (print_call_name): Update.
4844         * gimple-pretty-print.c (dump_gimple_call): Update.
4845
4846 2009-06-18  H.J. Lu  <hongjiu.lu@intel.com>
4847
4848         PR target/40470
4849         * config/i386/i386.h (CLASS_LIKELY_SPILLED_P): Add SSE_FIRST_REG.
4850
4851 2009-06-18  Diego Novillo  <dnovillo@google.com>
4852
4853         * doc/plugins.texi: Document plugin_is_GPL_compatible.
4854         * plugin.c (str_license): Declare.
4855         (try_init_one_plugin): Assert that the symbol
4856         'plugin_is_GPL_compatible' exists.
4857
4858 2009-06-18  Sergei Dyshel  <sergeid@il.ibm.com>
4859
4860         * see.c: Remove.
4861         * Makefile.in (OBJS-common): Remove see.o.
4862         (see.o): Remove.
4863         * common.opt (fsee): Mark as preserved for backward compatibility.
4864         * opts.c (common_handle_option): Add OPT_fsee to the backward 
4865         compatibility section.
4866         * passes.c (init_optimization_passes, pass_see): Remove pass.
4867         * timevar.def (TV_SEE): Remove.
4868         * tree-pass.h (pass_see): Remove declaration.
4869         * doc/invoke.texi (-fsee): Remove documentation.
4870         
4871 2009-06-18  Martin Jambor  <mjambor@suse.cz>
4872
4873         * tree-sra.c: Include statistics.h
4874         (sra_stats): New variable.
4875         (sra_initialize): Clear sra_stats.
4876         (create_access_replacement): Increment sra_stats.replacements.
4877         (get_access_replacement): Do not return twice.
4878         (analyze_all_variable_accesses): Increment statistics counter by the
4879         number of scalarized aggregates.
4880         (generate_subtree_copies): Increment sra_stats.subtree_copies.
4881         (sra_modify_expr): Increment sra_stats.exprs.
4882         (load_assign_lhs_subreplacements): Increment sra_stats.subreplacements.
4883         (sra_modify_assign): Increment sra_stats.exprs,
4884         sra_stats.separate_lhs_rhs_handling and sra_stats.deleted.
4885         (perform_intra_sra): Update statistics counters.
4886         * Makefile.in (tree-sra.o): Add statistics.h to dependencies.
4887
4888 2009-06-18  Sandra Loosemore  <sandra@codesourcery.com>
4889
4890         * config/arm/arm.c (TARGET_SCALAR_MODE_SUPPORTED_P): Redefine.
4891         (arm_scalar_mode_supported_p): New function.
4892
4893 2009-06-18  Paul Brook  <paul@codesourcery.com>
4894             Sandra Loosemore  <sandra@codesourcery.com>
4895
4896         * config/arm/sfp-machine.h (_FP_NANFRAC_H, _FP_NANSIGN_H): Define.
4897         (__extendhfsf2, __truncsfhf2): Define.
4898         * config/arm/fp16.c: New file.
4899         * config/arm/t-bpabi (LIB2FUNCS_STATIC_EXTRA): Add fp16.c.
4900         * config/arm/t-symbian (LIB2FUNCS_STATIC_EXTRA):  Add fp16.c.
4901
4902 2009-06-18  Sandra Loosemore  <sandra@codesourcery.com>
4903
4904         * doc/extend.texi (Half-Precision): New section.
4905         * doc/invoke.texi (Option Summary): List -mfp16-format.
4906         (ARM Options): List neon-fp16 as -mfpu value.  Document -mfp16-format.
4907         * config/arm/arm.opt (mfp16-format=): New.
4908         * config/arm/arm.c: Include intl.h.
4909         (TARGET_INVALID_PARAMETER_TYPE): Redefine.
4910         (TARGET_INVALID_RETURN_TYPE): Redefine.
4911         (TARGET_PROMOTED_TYPE): Redefine.
4912         (TARGET_CONVERT_TO_TYPE): Redefine.
4913         (arm_fp16_format): Define.
4914         (all_fpus): Add entry for neon-fp16.
4915         (fp_model_for_fpu): Likewise.
4916         (struct fp16_format): Declare.
4917         (all_fp16_formats): Define.
4918         (arm_init_libfuncs): Add entries for HFmode conversions and arithmetic
4919         functions.
4920         (arm_override_options): Set arm_fp16_format. Call sorry for fp16
4921         and no ldrh.
4922         (arm_legitimate_index_p): Treat HFmode like HImode.
4923         (thumb1_legitimate_address_p): Make it recognize HFmode constants.
4924         (coproc_secondary_reload_class): Special-case HFmode.
4925         (arm_print_operand): Add 'z' specifier for vld1.16/vst1.16.
4926         (arm_hard_regno_mode_ok): Allow HFmode values in VFP registers.
4927         (arm_init_fp16_builtins): New.
4928         (arm_init_builtins): Call it.
4929         (arm_invalid_parameter_type): New.
4930         (arm_invalid_return_type): New.
4931         (arm_promoted_type): New.
4932         (arm_convert_to_type).
4933         (arm_file_start): Deal with neon-fp16 as fpu_name.  Emit tag for fp16
4934         format.
4935         (arm_emit_fp16_const): New function.
4936         (arm_mangle_type): Mangle __fp16 as "Dh".
4937         * config/arm/arm.h (TARGET_VFPD32): Make it know about
4938         FPUTYPE_NEON_FP16.
4939         (TARGET_NEON_FP16): New.
4940         (TARGET_NEON): Make it know about FPUTYPE_NEON_FP16.
4941         (enum fputype): Add FPUTYPE_NEON_FP16.
4942         (enum arm_fp16_format_type): Declare.
4943         (arm_fp16_format): Declare.
4944         (LARGEST_EXPONENT_IS_NORMAL): Define.
4945         * config/arm/arm-protos.h (arm_emit_fp16_const): Declare.
4946         * config/arm/arm-modes.def (HFmode): Define.
4947         * config/arm/vfp.md: (*movhf_vfp): New.
4948         (extendhfsf2): New.
4949         (truncsfhf2): New.
4950         * config/arm/arm.md: (fpu): Add neon_fp16.
4951         (floatsihf2, floatdihf2): New.
4952         (fix_trunchfsi2, fix_trunchfdi2): New.
4953         (truncdfhf2): New.
4954         (extendhfdf2): New.
4955         (movhf): New.
4956         (*arm32_movhf): New.
4957         (*thumb1_movhf): New.
4958         (consttable_2): Add check for HFmode constants.
4959         (consttable_4): Handle HFmode constants.
4960
4961 2009-06-18  Uros Bizjak  <ubizjak@gmail.com>
4962
4963         * convert.c (convert_to_integer): Convert (int)logb() into ilogb().
4964
4965 2009-06-17  Olivier Hainque  <hainque@adacore.com>
4966
4967         * collect2.c (main): Use CONST_CAST2 to perform char ** to
4968         const char ** conversion in AIX specific section.
4969         
4970 2009-06-17  H.J. Lu  <hongjiu.lu@intel.com>
4971
4972         * config/i386/i386.c (ix86_special_builtin_type): Remove
4973         UINT64_FTYPE_PINT.  Add UINT64_FTYPE_PUNSIGNED.
4974         (bdesc_special_args): Updated.
4975         (ix86_init_mmx_sse_builtins): Likewise.
4976         (ix86_expand_special_args_builtin): Likewise.
4977
4978 2009-06-17  Richard Henderson  <rth@redhat.com>
4979
4980         * tree-pretty-print.c (maybe_dump_asm_name): New.
4981         (dump_decl_name): Use it.
4982         (PRINT_FUNCTION_NAME): Merge into...
4983         (dump_function_name): ... here.  Use maybe_dump_asm_name.
4984
4985 2009-06-17  Cary Coutant  <ccoutant@google.com>
4986
4987         * dbxout.c (dbxout_source_line): Add is_stmt parameter.
4988         Change caller.
4989         * debug.c (struct gcc_debug_hooks): Change placeholder for
4990         source_line hook.
4991         (debug_nothing_int_charstar_int): Replaced by...
4992         (debug_nothing_int_charstar_int_bool): ...this.
4993         * debug.h (struct gcc_debug_hooks): Add is_stmt parameter to
4994         source_line prototype.
4995         (debug_nothing_int_charstar_int): Replaced by...
4996         (debug_nothing_int_charstar_int_bool): ...this.
4997         * defaults.h (SUPPORTS_DISCRIMINATOR): New constant.
4998         * dwarf2out.c (dwarf2out_source_line): Add is_stmt parameter.
4999         Output is_stmt operand when necessary.
5000         * final.c (final_scan_insn): Pass is_stmt to source_line debug hook.
5001         (notice_source_line): Add is_stmt parameter.
5002         * sdbout.c (sdbout_source_line): Add is_stmt parameter.
5003         * vmsdbgout.c (vmsdbgout_source_line): Add is_stmt parameter.
5004         Change callers.
5005         * xcoffout.c (xcoffout_source_line): Add is_stmt parameter.
5006         * xcoffout.h (xcoffout_source_line): Add is_stmt parameter.
5007
5008 2009-06-17  Ian Lance Taylor  <iant@google.com>
5009
5010         * expr.c (struct move_by_pieces_d): Rename from move_by_pieces.
5011         Change all uses.
5012         (struct store_by_pieces_d): Rename from store_by_pieces.  Change
5013         call uses.
5014
5015 2009-06-17  Adam Nemet  <anemet@caviumnetworks.com>
5016
5017         * tree.h (STRIP_NOPS, STRIP_SIGN_NOPS,
5018         STRIP_USELESS_TYPE_CONVERSION): Use tree_strip_nop_conversions,
5019         tree_strip_sign_nop_conversions and
5020         tree_ssa_strip_useless_type_conversions rather than stripping
5021         the operations here.
5022         (tree_strip_nop_conversions, tree_strip_sign_nop_conversions):
5023         Declare them.
5024         * gimple.h (tree_ssa_strip_useless_type_conversions): Declare it.
5025         * tree-ssa.c (tree_ssa_strip_useless_type_conversions): New function.
5026         * tree.c (tree_nop_conversion, tree_sign_nop_conversion,
5027         tree_strip_nop_conversions, tree_strip_sign_nop_conversions): New
5028         functions.
5029
5030 2009-06-17  Michael Eager  <eager@eagercon.com>
5031
5032         * config/rs6000/constraints.md (register_constraint "d"): New.
5033         * config/rs6000/dfp.md (movsd_store, extendsddd2, extendsdtd2,
5034         truncddsd2, *negdd2_fpr, *absdd2_fpr, *nabsdd2_fpr,
5035         *movdd_hardfloat32, *movdd_hardfloat64_mfpgpr, *movdd_hardfloat64,
5036         *negtd2_fp, *abstd2_fpr, *nabstd2_fpr, *movtd_internal, extendddtd2,
5037         trunctddd2, adddd3, addtd3, subdd3, subtd3, muldd3, multd3, divdd3,
5038         divtd3, *cmpdd_internal1, *cmptd_internal1, floatditd2, ftruncdd2,
5039         fixdddi2, ftrunctd2, fixtddi2): replace 'f' constraint with 'd'
5040         * config/rs6000/ppu_intrinsics.h (__mffs, __mtfsf, __mtfsfi, __fabs,
5041         __fnabs, __fmadd, __fmsub, __fnmadd, __fnmsub, __fsel, __frsqrte,
5042         __fsqrt, __fmul, __fmuls, __frsp, __fcfid, __fctid, __fctidz, __fctiw,
5043         __fctiwz): Same.
5044         * config/rs6000/rs6000.md (*extendsfdf2_fpr, *truncdfsf2_fpr,
5045         *fseldfsf4, *negdf2_fpr, *absdf2_fpr, *nabsdf2_fpr, *adddf3_fpr,
5046         *subdf3_fpr, *muldf3_fpr, *divdf3_fpr, recipdf3, fred, sqrtdf2,
5047         *fseldfdf4, *fselsfdf4, *floatsidf2_internal, *floatunssidf2_internal,
5048         *fix_truncdfsi2_internal, fix_truncdfsi2_internal_gfxopt,
5049         fix_truncdfsi2_mfpgpr, fctiwz, btruncdf2, ceildf2, floordf2, rounddf2,
5050         stfiwx, floatdidf2, fix_truncdfdi2, floatdisf2_internal1,
5051         *movdf_hardfloat32, *movdf_hardfloat64_mfpgpr, *movdf_hardfloat64,
5052         *movtf_internal, *extenddftf2_internal, trunctfdf2_internal1,
5053         trunctfdf2_internal2, trunctfsf2_fprs, fix_trunc_helper,
5054         *fix_trunctfsi2_internal, negtf2_internal, *movdi_internal32,
5055         *movdi_mfpgpr, *movdi_internal64, *movdf_update1, *movdf_update2,
5056         *cmpdf_internal1, *cmptf_internal1, *cmptf_internal2): Same.
5057         * doc/md.texi: Describe PowerPC 'd' constraint, update 'f' constraint.
5058
5059 2009-06-16  Ian Lance Taylor  <iant@google.com>
5060
5061         * profile.c (total_num_never_executed): Don't define.
5062         (compute_branch_probabilities): Don't count or print
5063         num_never_executed.
5064         (init_branch_prob): Don't set total_num_never_executed.
5065         (end_branch_prob): Don't print total_num_never_executed.
5066
5067 2009-06-17  David Daney  <ddaney@caviumnetworks.com>
5068
5069         * jump.c (cleanup_barriers): Handle case of no insns before a barrier.
5070
5071 2009-06-17  David Edelsohn  <edelsohn@gnu.org>
5072
5073         * config/rs6000/dfp.md (nabsdd2_fpr): Correct mode.
5074         (nabstd2_fpr): Same.
5075
5076 2009-06-17  Steve Ellcey  <sje@cup.hp.com>
5077
5078         * expr.c (expand_assignment): Change complex type check.
5079
5080 2009-06-17  Basile Starynkevitch  <basile@starynkevitch.net>
5081
5082         * doc/plugins.texi (Building GCC plugins): Added new section. 
5083
5084 2009-06-17  Ian Lance Taylor  <iant@google.com>
5085
5086         * c-pch.c (get_ident): Don't set size of templ array.
5087         (pch_init): Don't set size of partial_pch array.
5088
5089         * c-typeck.c (digest_init): If -Wc++-compat, warn about using a
5090         string constant to intialize an array whose size is the length of
5091         the string.
5092
5093 2009-06-17  Richard Guenther  <rguenther@suse.de>
5094
5095         PR tree-optimization/40389
5096         * tree-ssa-structalias.c (handle_rhs_call): Restrict NRV case
5097         to addressable types.
5098         * gimple.c (walk_stmt_load_store_addr_ops): Likewise.
5099
5100 2009-06-17  Richard Guenther  <rguenther@suse.de>
5101
5102         PR middle-end/40460
5103         * tree-chrec.h (build_polynomial_chrec): If we cannot determine
5104         if there is no evolution of left in the loop bail out.
5105         * tree-chrec.c (chrec_fold_multiply_poly_poly): CSE one
5106         chrec_fold_multiply.
5107
5108 2009-06-16  J"orn Rennecke  <joern.rennecke@arc.com>
5109             Janis Johnson  <janis187@us.ibm.com>
5110
5111         PR target/39254
5112         * config/rs6000/rs6000.c (rs6000_emit_move): Don't emit a USE
5113         for the symbol ref of a constant that is the source of a move
5114         - nor for any other not-obvious-label-ref constants.
5115
5116 2009-06-16  Olatunji Ruwase  <tjruwase@google.com>
5117
5118         * plugin.c (position_pass): Skip newly inserted pass during list
5119         traversal to avoid repeated insertion.
5120
5121 2009-06-16  Ian Lance Taylor  <iant@google.com>
5122
5123         * vec.h (VEC_stack_alloc): Define different version if
5124         GATHER_STATISTICS is defined, to accept and ignore MEM_STAT.
5125         (DEF_VEC_ALLOC_FUNC_P_STACK): Remove MEM_STAT_DECL.
5126         (DEF_VEC_ALLOC_FUNC_O_STACK): Likewise.
5127         (DEF_VEC_ALLOC_FUNC_I_STACK): Likewise.
5128
5129 2009-06-16  H.J. Lu  <hongjiu.lu@intel.com>
5130
5131         * config.gcc (extra_headers): Add ia32intrin.h for x86.
5132
5133         * config/i386/i386.c (ix86_builtins): Add IX86_BUILTIN_BSRSI,
5134         IX86_BUILTIN_BSRDI.  IX86_BUILTIN_RDPMC, IX86_BUILTIN_RDTSC.
5135         IX86_BUILTIN_RDTSCP.  IX86_BUILTIN_ROLQI, IX86_BUILTIN_ROLHI,
5136         IX86_BUILTIN_RORQI and IX86_BUILTIN_RORHI.
5137         (ix86_special_builtin_type): Add UINT64_FTYPE_VOID,
5138         UINT64_FTYPE_PINT, INT_FTYPE_INT, UINT64_FTYPE_INT,
5139         INT64_FTYPE_INT64, UINT16_FTYPE_UINT16_INT and UINT8_FTYPE_UINT8_INT.
5140         (bdesc_special_args): Add __builtin_ia32_rdtsc and
5141         __builtin_ia32_rdtscp.
5142         (bdesc_args): Add __builtin_ia32_bsrsi, __builtin_ia32_bsrdi,
5143         __builtin_ia32_rolqi, __builtin_ia32_rolhi, __builtin_ia32_rorqi
5144         and __builtin_ia32_rorhi.
5145         (ix86_init_mmx_sse_builtins): Handle UINT64_FTYPE_VOID,
5146         UINT64_FTYPE_PINT, INT_FTYPE_INT, UINT64_FTYPE_INT,
5147         INT64_FTYPE_INT64, UINT16_FTYPE_UINT16_INT and UINT8_FTYPE_UINT8_INT.
5148         (ix86_expand_args_builtin): Likewise.
5149         (ix86_expand_special_args_builtin): Likewise.
5150
5151         * config/i386/i386.md (UNSPECV_RDTSCP): New.
5152         (UNSPECV_RDTSC): Likewise.
5153         (UNSPECV_RDPMC): Likewise.
5154         (*bsr): Renamed to ...
5155         (bsr): This
5156         (*bsr_rex64): Renamed to ...
5157         (bsr_rex64): This.
5158         (rdpmc): New.
5159         (*rdpmc): Likewise.
5160         (*rdpmc_rex64): Likewise.
5161         (rdtsc): Likewise.
5162         (*rdtsc): Likewise.
5163         (*rdtsc_rex64): Likewise.
5164         (rdtscp): Likewise.
5165         (*rdtscp): Likewise.
5166         (*rdtscp_rex64): Likewise.
5167
5168         * config/i386/ia32intrin.h: New.
5169
5170         * config/i386/x86intrin.h: Include <ia32intrin.h>.
5171
5172 2009-06-16  Ian Lance Taylor  <iant@google.com>
5173
5174         * ira-build.c (copy_info_to_removed_store_destinations):
5175         Initialize parent_a.
5176
5177 2009-06-16  Ian Lance Taylor  <iant@google.com>
5178
5179         * c-decl.c (grokdeclarator): Change size_varies to bool.
5180
5181 2009-06-16  Ian Lance Taylor  <iant@google.com>
5182
5183         * sel-sched.c: Make forward declarations of move_op_hooks and
5184         fur_hooks explicitly extern.
5185
5186 2009-06-16  Ian Lance Taylor  <iant@google.com>
5187
5188         * df-problems.c (df_byte_lr_alloc): Don't set problem_data to itself.
5189         * vec.c (vec_gc_o_reserve_1): Don't set alloc to itself.
5190
5191 2009-06-16  Ian Lance Taylor  <iant@google.com>
5192
5193         * resource.c (mark_referenced_resources): Change
5194         include_delayed_effects parameter to bool.  Change all callers.
5195         (mark_end_of_function_resources): Likewise.
5196         * reorg.c (insn_references_resource_p): Likewise.
5197         (insn_sets_resource_p): Likewise.
5198         * resource.h (mark_referenced_resources): Update declaration.
5199         (mark_end_of_function_resources): Update declaration.
5200
5201 2009-06-16  David Edelsohn  <edelsohn@gnu.org>
5202
5203         * config/rs6000/aix.h (LIBSTDCXX_STATIC): Remove -lstdc++.
5204
5205 2009-06-16  David Edelsohn  <edelsohn@gnu.org>
5206
5207         * doc/install.texi (*-*-aix): Update explanation of XLC bootstrap.
5208         GCC can bootstrap on AIX with GNU Binutils 2.20.
5209
5210 2009-06-16  Ian Lance Taylor  <iant@google.com>
5211
5212         * Makefile.in (tree-vect-stmts.o): Depend upon $(TOPLEV_H).
5213
5214 2009-06-16  Ian Lance Taylor  <iant@google.com>
5215
5216         * toplev.h (floor_log2): If GCC_VERSION >= 3004, declare as static
5217         inline, not extern inline.
5218         (exact_log2): Likewise.
5219         * toplev.c (floor_log2): Only define if GCC_VERSION < 3004. Don't
5220         test CLZ_HWI.
5221         (exact_log2): Likewise, but don't test CTZ_HWI.
5222
5223 2009-06-16  Ian Lance Taylor  <iant@google.com>
5224
5225         * bitmap.c (bitmap_clear): Don't declare as inline.
5226         * gimple.c (gimplify_assign): Likewise.
5227         * tree-ssa-sccvn.c (vn_nary_op_compute_hash): Likewise.
5228         * haifa-sched.c (insn_cost): Don't declare with HAIFA_INLINE.
5229         (sched_scan_info): Remove duplicate definition.
5230
5231 2009-06-16  Ian Lance Taylor  <iant@google.com>
5232
5233         * c-common.c (skip_evaluation): Don't define.
5234         (c_inhibit_evaluation_warnings): Define global variable.
5235         (overflow_warning): Check c_inhibit_evaluation_warnings rather
5236         than skip_evaluation.
5237         (convert_and_check, warn_for_div_by_zero): Likewise.
5238         * c-common.h (skip_evaluation): Don't declare.
5239         (c_inhibit_evaluation_warnings): Declare.
5240         * c-parser.c (c_parser_typeof_specifier): Set
5241         c_inhibit_evaluation_warnings rather than skip_evaluation.
5242         (c_parser_conditional_expression): Likewise.
5243         (c_parser_binary_expression): Likewise.
5244         (c_parser_sizeof_expression): Likewise.
5245         (c_parser_alignof_expression): Likewise.
5246         * c-typeck.c (build_indirect_ref): Check
5247         c_inhibit_evaluation_warnings rather than skip_evaluation.
5248         (build_conditional_expr, build_binary_op): Likewise.
5249
5250 2009-06-16  Richard Guenther  <rguenther@suse.de>
5251
5252         * tree-ssa-alias.c (is_escape_site): Remove.
5253         * tree-ssa-alias.h (enum escape_type): Remove.
5254         (is_escape_site): Likewise.
5255         * tree-ssa-structalias.c (find_func_aliases): Handle escapes
5256         via casts and asms without deferring to is_escape_site.
5257
5258 2009-06-16  Jakub Jelinek  <jakub@redhat.com>
5259
5260         PR middle-end/40446
5261         * expr.c (expand_expr_real_1) <case VIEW_CONVERT_EXPR>: Don't
5262         use gen_lowpart if op0 has complex mode.
5263
5264 2009-06-16  Richard Guenther  <rguenther@suse.de>
5265
5266         * tree-ssa-structalias.c (do_ds_constraint): Stores in global
5267         variables add them to ESCAPED.
5268         (find_func_aliases): Do not make all indirectly stored values escaped.
5269
5270 2009-06-16  Rafael Avila de Espindola  <espindola@google.com>
5271
5272         * config/i386/winnt.c (i386_pe_encode_section_info): Update call to
5273         make_decl_one_only.
5274
5275 2009-06-16  Martin Jambor  <mjambor@suse.cz>
5276
5277         PR tree-optimization/40432
5278         * tree-sra.c (sra_modify_assign): When creating VIEW_CONVERT_EXPR,
5279         check whether we need to force gimple register operand.
5280
5281 2009-06-16  Martin Jambor  <mjambor@suse.cz>
5282
5283         PR tree-optimization/40413
5284         * tree-sra.c (load_assign_lhs_subreplacements): Pass offset to
5285         build_ref_for_offset.
5286         (propagate_subacesses_accross_link): Fix a typo in a comment.
5287
5288 2009-06-16  Ira Rosen  <irar@il.ibm.com>
5289
5290         * tree-parloops.c (loop_parallel_p): Call vect_is_simple_reduction
5291         with additional parameter.
5292         * tree-vectorizer.h (enum vect_def_type): Add new value
5293         vect_nested_cycle.
5294         (enum vect_relevant): Add comments.
5295         (vect_is_simple_reduction): Add new argument.
5296         * tree-vect-loop.c (vect_analyze_scalar_cycles_1): Add comments.
5297         Detect nested cycles.
5298         (vect_is_simple_reduction): Update documentation, add an argument to
5299         distinguish inner-loop reduction from nested cycle, detect nested
5300         cycles, fix printings and indentation, don't swap operands in case
5301         of nested cycle.
5302         (get_initial_def_for_reduction): Handle subtraction.
5303         (vect_create_epilog_for_reduction): Add new argument to specify
5304         reduction variable.
5305         (vect_finalize_reduction): Handle subtraction, fix comments.
5306         (vectorizable_reduction): Handle nested cycles. In case of nested
5307         cycle keep track of the reduction variable position. Call 
5308         vect_is_simple_reduction with additional parameter. Use original
5309         statement code in reduction epilogue for nested cycle. Call
5310         vect_create_epilog_for_reduction with additional parameter.
5311         * tree-vect-patterns.c (vect_recog_dot_prod_pattern): Assert
5312         inner-loop vectorization.
5313         (vect_recog_widen_sum_pattern): Likewise.
5314         * tree-vect-stmts.c (process_use): Distinguish between nested cycles
5315         and reductions.
5316         (vect_mark_stmts_to_be_vectorized): Likewise.
5317         (vect_get_vec_def_for_operand): Handle nested cycles.
5318
5319 2009-06-16  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
5320
5321         * doc/invoke.texi (Debugging Options): Fix option index entries
5322         for -fdump-statistics, -frandom-seed add entries for
5323         -fdump-tree-original, -fdump-tree-optimized, -frandom-seed.
5324         (FRV Options): Fix entries for -mTLS, -mtls.
5325         (HPPA Options): Fix entries for -mgnu-ld, -mhp-ld.
5326         (i386 and x86-64 Options): Fix entry for -mno-red-zone.
5327         (M68hc1x Options): Fix @itemx for -mnominmax.
5328         (MCore Options): Fix entry for -mno-lsim.
5329         (MMIX Options): Fix entry for -mabi=mmixware.
5330         (PDP-11 Options): Fix entry for -mbcopy-builtin.
5331
5332 2009-06-16  Basile Starynkevitch  <basile@starynkevitch.net>
5333
5334         * doc/plugins.texi (Interacting with the GCC Garbage Collector):
5335         Mention the plugin mode of gengtype.
5336         * doc/gty.texi (Source Files Containing Type Information): Likewise.
5337         * gengtype.c: Updated copyright.
5338         (plugin_files, nb_plugin_files) Added new static variables.
5339         (measure_input_list) Care about plugin_files.
5340         (write_rtx_next): Added early return in plugin mode.
5341         (create_file): Updated copyright year in generated file. Added
5342         asserts.
5343         (oprintf): Added early return if NULL outf.
5344         (get_output_file_with_visibility): Care of plugin_files.
5345         (get_output_file_name): May return null.
5346         (write_local): Added early return.
5347         (put_mangled_filename): Ditto.
5348         (finish_root_table): Added check for base_files.
5349         (write_roots): Care about null when plugins.
5350         (main): Added plugin mode.
5351
5352 2009-06-15  Ian Lance Taylor  <iant@google.com>
5353
5354         * df-problems.c (df_simulate_one_insn_forwards): Fix braces in switch.
5355         * gcov.c (read_count_file): Add braces around variables declared
5356         before label.
5357
5358         * c.opt (Wjump-misses-init): New warning.
5359         * c-opts.c (c_common_handle_option): Set warn_jump_misses_init for
5360         -Wall and -Wc++-compat if not already set.
5361         (c_common_post_options): Clear warn_jump_misses_init if it was not
5362         set.
5363         * c-decl.c (struct c_binding): Change type field to a union with
5364         new label field.  Make it the first field in the struct.  Update
5365         references to type to use u.type instead.
5366         (struct c_spot_bindings): Define.
5367         (struct c_goto_bindings): Define.
5368         (c_goto_bindings_p): Define, along with VECs.
5369         (struct c_label_vars): Define.
5370         (struct c_scope): Add has_label_bindings field.
5371         (bind_label, set_spot_bindings): New static functions.
5372         (decl_jump_unsafe, update_spot_bindings): New static functions.
5373         (update_label_decls): New static function.
5374         (pop_scope): Call update_label_decls.  Don't call c_end_vm_scope.
5375         Update binding u.label field to shadowed field.
5376         (c_binding_start_stmt_expr): New function.
5377         (c_binding_end_stmt_expr): New function.
5378         (pushdecl): Don't call c_begin_vm_scope.
5379         (make_label): Add defining and p_label_vars parameters.  Change
5380         all callers.
5381         (lookup_label): Correct test for whether a label has not yet been
5382         defined.  Call bind_label rather than bind.
5383         (warn_about_goto): New static function.
5384         (lookup_label_for_goto): New function.
5385         (declare_label): Call bind_label rather than bind.
5386         (check_earlier_gotos): New static function.
5387         (define_label): Don't give errors about jumping into statement
5388         expressions or scopes of variably modified types.  Call
5389         set_spot_bindings and check_earlier_gotos.  Call bind_label
5390         instead of bind.  Don't set label_context_stack_se or
5391         label_context_stack_vm.
5392         (c_get_switch_bindings): New function.
5393         (c_release_switch_bindings): New function.
5394         (c_check_switch_jump_warnings): New function.
5395         (start_function): Don't set label_context_stack_se or
5396         label_context_stack_vm.
5397         (finish_function): Likewise.
5398         * c-typeck.c (label_context_stack_se): Don't define.
5399         (label_context_stack_vm): Don't define.
5400         (c_finish_goto_label): Call lookup_label_for_goto rather than
5401         lookup_label.  Don't give errors about jumping into a statement
5402         expression or the scope of a variably modified type.  Don't set
5403         label_context_stack_se or label_context_stack_vm.
5404         (struct c_switch): Remove blocked_stmt_expr and blocked_vm
5405         fields.  Add bindings field.
5406         (c_start_case): Don't set deleted fields.  Set bindings field.
5407         (do_case): Rework order of tests.  Don't check blocked_stmt_expr
5408         or blocked_vm.  Call c_check_switch_jump_warnings.
5409         (c_finish_case): Don't test blocked_stmt_expr field.  Call
5410         c_release_switch_bindings.
5411         (c_begin_stmt_expr): Don't increment blocked_stmt_expr in
5412         c_switch_stack.  Don't walk label_context_stack_se labels.  Don't
5413         set label_context_stack_se.  Call c_bindings_start_stmt_expr.
5414         (c_finish_stmt_expr): Don't decrement blocked_stmt_expr in
5415         c_switch_stack.  Don't walk label_context_stack_se labels.  Don't
5416         set label_context_stack_se.  Call c_bindings_end_stmt_expr.
5417         (c_begin_vm_scope, c_end_vm_scope): Don't define.
5418         * c-tree.h (C_DECL_UNJUMPABLE_STMT_EXPR): Don't define.
5419         (C_DECL_UNDEFINABLE_STMT_EXPR): Don't define.
5420         (C_DECL_UNJUMPABLE_VM): Don't define.
5421         (C_DECL_UNDEFINABLE_VM): Don't define.
5422         (struct c_label_list): Don't define.
5423         (struct c_label_context_se): Don't define.
5424         (struct c_label_context_vm): Don't define.
5425         (struct c_spot_bindings): Declare.
5426         (c_bindings_start_stmt_expr): Declare.
5427         (c_bindings_end_stmt_expr): Declare.
5428         (lookup_label_for_goto): Declare.
5429         (c_get_switch_bindings, c_release_switch_bindings): Declare.
5430         (c_check_switch_jump_warnings): Declare.
5431         (label_context_stack_se, label_context_stack_vm): Don't declare.
5432         (c_finish_goto_label): Update declaration.
5433         (c_begin_vm_scope, c_end_vm_scope): Don't declare.
5434         * doc/invoke.texi (Option Summary): Mention -Wjump-misses-init.
5435         (Warning Options): Document -Wjump-misses-init.
5436
5437 2009-06-15  Jakub Jelinek  <jakub@redhat.com>
5438
5439         * tree-object-size.c (addr_object_size): Fix a pasto in the last
5440         change.
5441
5442 2009-06-15  Rafael Avila de Espindola  <espindola@google.com>
5443
5444         * cgraph.c (cgraph_make_node_local): Use DECL_COMDAT_GROUP.
5445
5446 2009-06-15  Aldy Hernandez  <aldyh@redhat.com>
5447
5448         * except.c (init_eh): Use BUILTINS_LOCATION when calling build_decl.
5449
5450 2009-06-15  Aldy Hernandez  <aldyh@redhat.com>
5451
5452         * tree-eh.c (lower_try_finally_switch): Initialize tf_loc.
5453
5454 2009-06-15  Rafael Avila de Espindola  <espindola@google.com>
5455
5456         * cgraphunit.c (cgraph_function_versioning,save_inline_function_body):
5457         Use DECL_COMDAT_GROUP instead of DECL_ONE_ONLY.
5458         * cgraph.c (cgraph_create_virtual_clone): Use DECL_COMDAT_GROUP.
5459         * config/i386/i386.c (ix86_file_end): Compute DECL_COMDAT_GROUP.
5460         * dwarf2asm.c (dw2_force_const_mem): Update call to
5461         make_decl_one_only.
5462         * langhooks-def.h (lhd_comdat_group, LANG_HOOKS_COMDAT_GROUP): Remove.
5463         (LANG_HOOKS_DECLS): Remove LANG_HOOKS_COMDAT_GROUP.
5464         * langhooks.c (lhd_comdat_group): Remove.
5465         * langhooks.h (lang_hooks_for_decls): Remove comdat_group.
5466         * tree.h (DECL_COMDAT_GROUP): New.
5467         (DECL_ONE_ONLY): Use DECL_COMDAT_GROUP.
5468         (tree_decl_with_vis): Add comdat_group. Remove one_only.
5469         (make_decl_one_only): Change signature.
5470         * varasm.c (get_emutls_init_templ_addr, emutls_decl): Update call to
5471         make_decl_one_only.
5472         (make_decl_one_only): Change signature.
5473         (default_elf_asm_named_section): Use DECL_COMDAT_GROUP.
5474
5475 2009-06-15  Richard Guenther  <rguenther@suse.de>
5476
5477         PR middle-end/40439
5478         * tree.c (widest_int_cst_value): Fix bootstrap on 32bit HWI hosts.
5479
5480 2009-06-14  Andreas Krebbel  <Andreas.Krebbel@de.ibm.com>
5481
5482         * tree-ssa-math-opts.c: Remove extra divide.
5483
5484 2009-06-14  Andreas Krebbel  <Andreas.Krebbel@de.ibm.com>
5485
5486         * config/s390/s390.md ("bswap<mode>2"): Only available on z900.
5487
5488 2009-06-14  Andreas Krebbel  <Andreas.Krebbel@de.ibm.com>
5489
5490         * passes.c: Add bswap pass.
5491         * tree-pass.h: Add pass_optimize_bswap declaration.
5492         * tree-ssa-math-opts.c: Include diagnostics.h for print_gimple_stmt.
5493         Include rtl.h, expr.h and optabs.h for optab_handler check.
5494         (struct symbolic_number, pass_optimize_bswap): New definition.
5495         (do_shift_rotate, verify_symbolic_number_p): New functions.
5496         (find_bswap_1, find_bswap, execute_optimize_bswap): New functions.
5497         (gate_optimize_bswap): New function.
5498         * tree.c (widest_int_cst_value): New function.
5499         * tree.h (widest_int_cst_value): Prototype added.
5500
5501 2009-06-14  Steven Bosscher  <steven@gcc.gnu.org>
5502
5503         * cfgcleanup.c (old_insns_match_p): Remove code to substitute
5504         REG_EQUAL/REG_EQUIV notes.
5505
5506 2009-06-14  Richard Guenther  <rguenther@suse.de>
5507
5508         PR middle-end/40389
5509         * gimple.c (walk_stmt_load_store_addr_ops): The LHS of a call
5510         has its address taken if NRV was applied and it is addressable.
5511         * tree-ssa-structalias.c (get_constraint_for_address_of): New
5512         function split out from ...
5513         (get_constraint_for_1): ... here.
5514         (handle_rhs_call): Use it to mark the return slot escaped if
5515         it is addressable and NRV was applied.
5516
5517 2009-06-13  Aldy Hernandez  <aldyh@redhat.com>
5518
5519         * config/rs6000/rs6000-protos.h (altivec_resolve_overloaded_builtin):
5520         Change first argument type to location_t.
5521         * config/rs6000/rs6000-c.c (altivec_resolve_overloaded_builtin): Same.
5522         Do not set input_location.
5523         Use loc instead of input_location throughout.
5524
5525 2009-06-13  Richard Guenther  <rguenther@suse.de>
5526
5527         PR tree-optimization/40421
5528         * tree-predcom.c (should_unroll_loop_p): Remove.
5529         (tree_predictive_commoning_loop): Use can_unroll_loop_p.
5530
5531 2009-06-13  Michael Meissner  <meissner@linux.vnet.ibm.com>
5532
5533         * config/rs6000/rs6000-c.c (altivec_resolve_overloaded_builtin):
5534         Add location argument.
5535
5536 2009-06-13  Aldy Hernandez  <aldyh@redhat.com>
5537
5538         * config/alpha/alpha.c (alpha_build_builtin_va_list): Pass location to
5539         build_decl.
5540         * config/s390/s390.c (s390_build_builtin_va_list): Same.
5541         (s390_gimplify_va_arg): Pass location to create_artificial_label.
5542         * config/spu/spu-protos.h: Add location to
5543         spu_resolve_overloaded_builtin.
5544         * config/spu/spu.c (spu_build_builtin_va_list): Pass location to
5545         spu_build_builtin_va_list.
5546         * config/spu/spu-c.c (spu_resolve_overloaded_builtin): Add location
5547         argument.  Pass location to build_function_call_vec.
5548         * config/sh/sh.c (sh_build_builtin_va_list): Pass location to
5549         build_decl.
5550         (emit_fpu_switch): Same.
5551         (sh_gimplify_va_arg_expr): Pass location to create_artificial_label.
5552         * config/xtensa/xtensa.c (xtensa_build_builtin_va_list): Pass location
5553         to build_decl and create_artificial_label.
5554         (xtensa_gimplify_va_arg_expr): Same.
5555         * config/stormy16/stormy16.c (xstormy16_build_builtin_va_list): Same.
5556         (xstormy16_gimplify_va_arg_expr): Same.
5557         * config/iq2000/iq2000.c (iq2000_expand_prologue): Same.
5558         * config/arm/arm.c (arm_build_builtin_va_list): Same.
5559         * config/mips/mips.c (mips_build_builtin_va_list): Same.
5560         (mips16_build_function_stub): Same.
5561         (mips16_build_call_stub): Same.
5562
5563 2009-06-13  Richard Earnshaw  <rearnsha@arm.com>
5564
5565         PR target/40327
5566         * arm/constraints.md (Pa, Pb): New constraints.
5567         * arm/arm.md (thumb1_addsi3): Support more complex additions.  Add a 
5568         split pattern to deal with them.
5569
5570 2009-06-13  Joerg Sonnenberger  <joerg@britannica.bec.de>
5571
5572         * doc/invoke.texi: Add missing option -Wp,OPTION in list,
5573         fix index entry for -Xpreprocessor.
5574
5575 2009-06-12  Aldy Hernandez  <aldyh@redhat.com>
5576
5577         * config/rs6000/rs6000-c.c (altivec_resolve_overloaded_builtin):
5578         Add location argument to build_decl call.
5579         * config/rs6000/rs6000.c (rs6000_build_builtin_va_list): Same.
5580         (rs6000_init_builtins): Same.
5581         (spe_init_builtins): Same.
5582         (rs6000_gimplify_va_arg): Add location argument to
5583         create_artificial_label call.
5584
5585 2009-06-12  Steven Bosscher  <steven@gcc.gnu.org>
5586
5587         * timevar.def (TV_COMBINE_STACK_ADJUST): New timevar.
5588         * combine-stack-adj.c (pass_stack_adjustments): Use it.
5589         * Makefile.in: Fix GGC dependency for gcse.o.
5590
5591 2009-06-12  Aldy Hernandez  <aldyh@redhat.com>
5592
5593         * tree-pretty-print.c (dump_generic_node): Dump column numbers.
5594         * gimple-pretty-print.c (dump_gimple_stmt): Same.
5595         * gimplify.c (gimplify_modify_expr): Set location for GIMPLE_ASSIGNs
5596         created.
5597         * c-parser.c (c_parser_binary_expression): Use current column while
5598         building binary operations.
5599         * common.opt (fshow-column): Enable by default.
5600         * tree-vrp.c (check_array_ref): Use warning_at.
5601         (check_array_bounds): Use location from call back if expr has no
5602         location.
5603         * tree.h: Add location argument to maybe_fold_*.
5604         * tree-ssa-ccp.c (ccp_fold): Pass location to maybe_fold_*.
5605         (maybe_fold_offset_to_array_ref): Add location argument and use it.
5606         (maybe_fold_offset_to_component_ref): Same.
5607         (maybe_fold_offset_to_reference): Same.
5608         (maybe_fold_offset_to_address): Same.
5609         (maybe_fold_stmt_indirect): Same.
5610         (maybe_fold_stmt_addition): Same.
5611         (fold_stmt_r): Pass location to maybe_fold_*.
5612         (fold_gimple_assign): Same.
5613         * c-tree.h: Add location argument to finish_decl,
5614         default_function_array_conversion, store_init_value.
5615         * c-decl.c (define_label): Use error_at.
5616         (c_make_fname_decl): Pass location to finish_decl.
5617         (finish_decl): New location argument.
5618         (build_compound_literal): Pass location to store_init_value.
5619         (grokdeclarator): Pass location to finish_decl.
5620         (grokfield): Same.
5621         * c-typeck.c (array_to_pointer_conversion): New location argument.
5622         (function_to_pointer_conversion): Same.
5623         (default_function_array_conversion): Same.
5624         (parser_build_unary_op): Pass location to overflow_warning.
5625         (parser_build_binary_op): Same.  Use warning_at.
5626         (build_unary_op): Pass location to array_to_pointer_conversion.
5627         (build_c_cast): Pass location to digest_init.
5628         (build_modify_expr): New location argument.
5629         (convert_for_assignment): Same.
5630         (store_init_value): Same.
5631         (digest_init): Same.
5632         (output_init_element): Pass location to digest_init and
5633         array_to_pointer_conversion.
5634         (c_finish_return): Pass location to convert_for_assignment.
5635         * gimplify.c (gimplify_conversion): Pass location to
5636         maybe_fold_offset_to_address.
5637         * tree-ssa-forwprop.c (forward_propagate_addr_expr_1): Pass location
5638         to maybe_fold_stmt_addition.
5639         * c-omp.c (c_finish_omp_atomic): Pass new location to
5640         build_modify_expr.
5641         (c_finish_omp_for): Same.
5642         * c-common.c (overflow_warning): New argument.
5643         * c-common.h: New argument to build_modify_expr, overflow_warning.
5644         * c-parser.c (c_parser_declaration_or_fndef): Pass location to
5645         finish_decl.
5646         (c_parser_initializer): Pass location to
5647         default_function_array_conversion.
5648         (c_parser_initelt): Same.
5649         (c_parser_initval): Same.
5650         (c_parser_asm_operands): Same.
5651         (c_parser_expr_no_commas): Same.  Pass location to build_modify_expr.
5652         (c_parser_conditional_expression): Same.
5653         (c_parser_binary_expression): Add location info to stack.  Use it.
5654         (c_parser_unary_expression): Pass location to
5655         default_function_array_conversion, parser_build_unary_op,
5656         build_indirect_ref, c_parser_postfix_expression_after_primary.
5657         (c_parser_postfix_expression_after_primary): New location argument.
5658         Use it.
5659         (c_parser_expression_conv): Pass location to
5660         default_function_array_conversion.
5661         (c_parser_expr_list): Same.
5662         (c_parser_omp_atomic): Same.
5663         (c_parser_omp_for_loop): Same.
5664         * c-tree.h: (struct c_declarator): Add comment to id_loc.
5665         (build_array_declarator): New argument.
5666         * c-decl.c (build_array_declarator): Add location argument.
5667         (grokdeclarator): Set id_loc for cdk_array.
5668         * c-parser.c (c_parser_direct_declarator_inner): Pass location to
5669         build_array_declarator.
5670         * tree.c (build_omp_clause): Add location argument.
5671         * tree.h (OMP_CLAUSE_HAS_LOCATION): New macro.
5672         (OMP_CLAUSE_LOCATION): New macro.
5673         (struct tree_omp_clause): Add location field.
5674         (build_omp_clause): Add argument.
5675         * testsuite/gcc.dg/gomp/for-1.c: Fix column.
5676         * cp/pt.c (tsubst_omp_for_iterator): Pass location to
5677         build_omp_clause.
5678         * cp/parser.c (cp_parser_omp_var_list_no_open): Same.
5679         (cp_parser_omp_clause_collapse): Same.
5680         (cp_parser_omp_clause_default): Same.
5681         (cp_parser_omp_clause_if): Same.
5682         (cp_parser_omp_clause_nowait): Same.
5683         (cp_parser_omp_clause_num_threads): Same.
5684         (cp_parser_omp_clause_ordered): Same.
5685         (cp_parser_omp_clause_schedule): Same.
5686         (cp_parser_omp_clause_untied): Same.
5687         (cp_parser_omp_for_loop): Same.
5688         (cp_parser_omp_parallel): Pass location to c_split_parallel_clauses.
5689         * c-tree.h (c_start_case): Add location argument.
5690         (c_process_expr_stmt): Same.
5691         (c_finish_goto_*): Same.
5692         * tree-parloops.c (initialize_reductions): Pass location to
5693         build_omp_clause.
5694         (create_parallel_loop): Same.
5695         * fortran/trans-openmp.c (gfc_trans_omp_variable_list): Same.
5696         (gfc_trans_omp_reduction_list): Same.
5697         (gfc_trans_omp_clauses): Same.
5698         (gfc_trans_omp_do): Same.
5699         * c-typeck.c (c_finish_goto_label): Same.
5700         (c_finish_goto_ptr): New location argument.
5701         (c_start_case): Same.
5702         (emit_side_effect_warnings): Same.
5703         (c_process_expr_stmt): Same.
5704         (c_finish_stmt_expr): Same.
5705         (c_finish_omp_clauses): Use error_at instead of error.
5706         * gimplify.c (gimplify_adjust_omp_clauses_1): Pass location to
5707         build_omp_clause.
5708         * c-omp.c (c_split_parallel_clauses): New location argument.
5709         * tree-nested.c (convert_nonlocal_reference_stmt): Pass location
5710         to build_omp_clause.
5711         (convert_local_reference_stmt): Same.
5712         (convert_gimple_call): Same.
5713         * c-common.h (c_split_parallel_clauses): New argument.
5714         * c-parser.c (c_parser_statement_after_labels): Pass location to
5715         c_finish_goto_label.
5716         (c_parser_switch_statement): Pass location to c_start_case.
5717         (c_parser_for_statement): Pass location to c_finish_expr_stmt,
5718         and c_process_expr_stmt.
5719         (c_parser_omp_variable_list): Add location argument.
5720         (c_parser_omp_clause_collapse): Pass location to build_omp_clause.
5721         (c_parser_omp_clause_default): Same.
5722         (c_parser_omp_clause_if): Same.
5723         (c_parser_omp_clause_num_threads): Same.
5724         (-c_parser_omp_clause_ordered): Same.
5725         (c_parser_omp_clause_reduction): Pass location to
5726         c_parser_omp_variable_list.
5727         (c_parser_omp_clause_schedule): Pass location to build_omp_clause.
5728         (c_parser_omp_clause_untied): Same.
5729         (c_parser_omp_for_loop): Pass location to c_process_expr_stmt.
5730         (c_parser_omp_parallel): Pass location to c_split_parallel_clauses.
5731
5732         * c-tree.h (check_for_loop_decls, undeclared_variable,
5733         build_component_ref, build_array_ref, build_external_ref,
5734         c_expr_sizeof_expr, c_expr_sizeof_type, parser_build_unary_op,
5735         build_conditional_expr, build_compound_expr, c_cast_expr,
5736         build_c_cast, build_asm_expr, c_end_compound_stmt, c_finish_stmt_expr,
5737         c_finish_return, c_finish_omp_parallel, c_finish_omp_task): New
5738         argument.
5739         * c-semantics.c (build_stmt): Same.
5740         (build_case_label): Same.
5741         * c-decl.c (c_finish_incomplete_decl): Pass location on down.
5742         (undeclared_variable): New argument.
5743         (make_label): Same.
5744         (lookup_label): Pass location on down.
5745         (define_label): Same.
5746         (finish_decl): Same.
5747         (build_compound_literal): Same.
5748         (finish_struct): Same.
5749         (finish_function): Do not set location here.
5750         (check_for_loop_decls): New argument.
5751         * tree.c (save_expr): Set location.
5752         (build_empty_stmt): New argument.
5753         * tree.h (build_empty_stmt): New argument to build_empty_stmt.
5754         (CAN_HAVE_LOCATION_P): Make sure we have a non empty node.
5755         * builtins.c (gimplify_va_arg_expr): Use locations.
5756         (expand_builtin_sync_operation): Same.
5757         * c-typeck.c (build_component_ref): New argument.
5758         (build_array_ref): Same.
5759         (build_external_ref): Same.
5760         (c_expr_sizeof_expr): Same.
5761         (c_expr_sizeof_type): Same.
5762         (parser_build_unary_op): Same.
5763         (build_conditional_expr): Same.
5764         (build_compound_expr): Pass location on down.
5765         (build_compound_expr): New argument.
5766         (build_c_cast): Same.
5767         (c_cast_expr): Same.
5768         (build_asm_expr): Same.
5769         (c_finish_return): Same.
5770         (c_process_expr_stmt): Pass location on down.
5771         (c_finish_stmt_expr): New argument.
5772         (push_clenaup): Same.
5773         (c_finish_omp_parallel): Same.
5774         (c_finish_omp_task): Same.
5775         * gimplify.c (gimplify_call_expr): Pass location on down.
5776         * c-omp.c (c_finish_omp_master): New argument.
5777         (c_finish_omp_critical): Same.
5778         (c_finish_omp_ordered): Same.
5779         (c_finish_omp_barrier): Same.
5780         (-c_finish_omp_taskwait): Same.
5781         (c_finish_omp_atomic): Same.
5782         (c_finish_omp_flush): Same.
5783         * tree-inline.c (copy_tree_body_r): Pass location on down.
5784         (inline_forbidden_p): Remove use of input_location.
5785         * c-gimplify.c (c_build_bind_expr): New argument.
5786         * c-common.c (c_common_truthvalue_conversion): Pass location on down.
5787         (c_sizeof_or_alignof_type): New argument.
5788         (c_alignof_expr): Same.
5789         (build_va_arg): Same.
5790         (c_add_case_label): Same.
5791         * c-common.h (c_sizeof_or_alignof_type, c_alignof_expr,
5792         c_sizeof, c_alignof, build_va_arg, build_stmt, build_case_label,
5793         c_build_bind_expr, objc_build_selector_expr, objc_build_throw_stmt,
5794         c_finish_omp_master, c_finish_omp_critical, c_finish_omp_ordered,
5795         c_finish_omp_barrier, c_finish_omp_atomic, c_finish_omp_flush,
5796         c_finish_omp_taskwait, c_finish_omp_for, c_split_parallel_clauses):
5797         New argument.
5798         * stub-objc.c (objc_build_selector_expr): Same.
5799         (objc_build_throw_stmt): Same.
5800         * c-parser.c (c_parser_declaration_or_fndef): Pass location on down.
5801         (c_parser_initelt): Same.
5802         (c_parser_compound_statement): Same.
5803         (c_parser_compound_statement_nostart): Same.
5804         (c_parser_label): Same.
5805         (c_parser_statement_after_labels): Same.
5806         (c_parser_if_body): Same.
5807         (c_parser_else_body): Same.
5808         (c_parser_if_statement): Same.
5809         (c_parser_switch_statement): Same.
5810         (c_parser_while_statement): Same.
5811         (c_parser_do_statement): Same.
5812         (c_parser_for_statement): Same.
5813         (c_parser_asm_statement): Same.
5814         (c_parser_conditional_expression): Same.
5815         (c_parser_binary_expression): Same.
5816         (c_parser_cast_expression): Same.
5817         (c_parser_unary_expression): Same.
5818         (c_parser_sizeof_expression): Same.
5819         (c_parser_alignof_expression): Same.
5820         (c_parser_postfix_expression): Same.
5821         (c_parser_expression): Same.
5822         (c_parser_objc_receiver): Same.
5823         (c_parser_omp_variable_list): Same.
5824         (c_parser_omp_structured_block): Same.
5825         (c_parser_omp_atomic): New argument.
5826         (c_parser_omp_barrier): Same.
5827         (c_parser_omp_critical): Same.
5828         (c_parser_omp_flush): Pass location on down.
5829         (c_parser_omp_for_loop): New argument.
5830         (c_parser_omp_for): Same.
5831         (c_parser_omp_master): Same.
5832         (c_parser_omp_ordered): Same.
5833         (c_parser_omp_sections_scope): Same.
5834         (c_parser_omp_sections): Same.
5835         (c_parser_omp_parallel): Same.
5836         (c_parser_omp_single): Same.
5837         (c_parser_omp_task): Same.
5838         (c_parser_omp_taskwait): Pass location on down.
5839         (c_parser_omp_construct): Same.
5840         (c_parser_omp_threadprivate): Same.
5841         * dwarf2asm.c, targhooks.c, optabs.c, tree.c, tree.h, target.h,
5842         builtins.c, omp-low.c, cgraphunit.c, tree-call-cdce.c,
5843         tree-ssa-alias.c, gimple-low.c, c-tree.h, expr.c, tree-parloops.c,
5844         c-decl.c, tree-eh.c, langhooks.c, function.c, stor-layout.c,
5845         c-typeck.c, gimplify.c, c-pragma.c, expmed.c, except.c, coverage.c,
5846         emit-rtl.c, cfgexpand.c, tree-mudflap.c, varasm.c, tree-nested.c,
5847         rtl.h, tree-inline.c, tree-profile.c, c-common.c, c-common.h,
5848         tree-switch-conversion.c, tree-cfg.c, ipa-struct-reorg.c, c-parser.c,
5849         config/i386/i386.c, stmt.c:
5850         Add location argument to the following function definitions and/or
5851         function calls: build_decl, objcp_start_struct, objcp_finish_struct,
5852         start_struct, finish_struct, PUSH_FIELD, create_artificial_label,
5853         cp_make_fname_decl, pushtag, implicitly_declare, c_make_fname_decl,
5854         build_compound_literal, parser_xref_tag, resolve_overloaded_builtin,
5855         do_case, c_finish_bc_stmt, build_compound_literal,
5856         build_function_call.
5857         * c-decl.c (build_compound_literal): Add location argument.
5858         Make all diagnostic calls use location.
5859         (start_struct): Same.
5860         (finish_struct): Same.
5861         (start_enum): Same.
5862         (build_enumerator): Same.
5863         (start_function): Same.
5864         (grokdeclarator): Make all diagnostic calls use location.
5865         (store_parm_decls_oldstyle): Same.
5866         * c-typeck.c (build_function_call): Add location argument.
5867         Make all diagnostic calls use location.
5868         (do_case): Same.
5869         (c_finish_bc_stmt): Same.
5870         * tree-nested.c (get_trampoline_type): Add argument.
5871         Pass location to build_decl.
5872         (lookup_tramp_for_decl): Pass location to get_trampoline_type.
5873         * rtl.h (RTL_LOCATION): New.
5874         * c-common.c (c_add_case_label): Add location argument.
5875         Make all diagnostic calls use location.
5876         * c-common.h: Add location argument to make_fname_decl, do_case,
5877         c_add_case_label, build_function_call, resolve_overloaded_builtin.
5878         * c-parser.c (c_parser_enum_specifier): Rename ident_loc to enum_loc.
5879         Set it appropriately for every case.  Pass enum_loc to start_enum
5880         call.  Pass value_loc first to build_enumerator.  Pass enum_loc to
5881         parser_xref_tag.
5882         (c_parser_struct_or_union_specifier): Save location.  Use it for
5883         start_struct, finish_struct, and parser_xref_tag.
5884
5885 2009-06-12  Ian Lance Taylor  <iant@google.com>
5886
5887         * fold-const.c (fold_unary): Rename local variable and to and_expr.
5888
5889         * c-opts.c (c_common_handle_option): For -Wc++-compat set
5890         cpp_opts->warn_cxx_operator_names.
5891
5892 2009-06-12  Andrew Pinski  <andrew_pinski@playstation.sony.com>
5893
5894         PR tree-opt/38865
5895         * tree-ssa-sccvn.c (visit_reference_op_load): If vn_reference_lookup
5896         is returns NULL and OP is a VCE, look through the VCE.
5897
5898 2009-06-12  Ian Lance Taylor  <iant@google.com>
5899
5900         PR bootstrap/40430
5901         * collect2.c (main): Use CONST_CAST2 in code inside #if
5902         LINK_ELIMINATE_DUPLICATE_LDIRECTORIES.
5903
5904 2009-06-12  Joey Ye  <joey.ye@intel.com>
5905
5906         PR middle-end/39146
5907         * cfgexpand.c (get_decl_align_unit): Update
5908         max_used_stack_slot_alignment with align instead of
5909         stack_alignment_needed.
5910
5911         * function.c (assign_stack_local_1): Update
5912         max_used_stack_slot_alignment with alignment_in_bits instead
5913         of stack_alignment_needed.
5914         (locate_and_pad_parm): Don't update max_used_stack_slot_alignment
5915         here.
5916
5917 2009-06-12  Jakub Jelinek  <jakub@redhat.com>
5918
5919         * dwarf2out.c (last_var_location_insn): New variable.
5920         (dwarf2out_end_epilogue): Clear last_var_location_insn.
5921         (dwarf2out_var_location): Don't record anything after last real
5922         insn.  Only change labels if there were any real instructions
5923         in between last note and this one, or if changed sections.
5924
5925 2009-06-11  Richard Henderson  <rth@redhat.com>
5926
5927         * alpha.c (alpha_expand_prologue): Add a REF_CFA_REGISTER
5928         note when storing the frame pointer in a register.
5929         (FRP): Don't redefine to nothing for epilogue.
5930         (alpha_expand_epilogue): Mark register and sp restores.
5931         (unicosmk_gen_dsib): Don't mark weird frame pointer adjust.
5932
5933         * config/alpha/alpha.c (alpha_emit_setcc): Fix test for
5934         when gen_lowpart is needed.
5935
5936 2009-06-11  Richard Henderson  <rth@redhat.com>
5937
5938         * dwarf2out.c (def_cfa_1): Likewise for DW_CFA_cfa_offset.
5939
5940         * dwarf2out.c (need_data_align_sf_opcode): New.
5941         (div_data_align): Move earlier.
5942         (def_cfa_1, reg_save): Use it.
5943
5944 2009-06-11  H.J. Lu  <hongjiu.lu@intel.com>
5945
5946         * config/i386/i386.c (OPTION_MASK_ISA_CRC32_SET): New.
5947         (OPTION_MASK_ISA_CRC32_UNSET): Likewise.
5948         (ix86_handle_option): Handle OPT_mcrc32.
5949         (ix86_target_string): Add -mcrc32.
5950         (bdesc_args): Enable crc32 builtins with OPTION_MASK_ISA_CRC32.
5951
5952         * config/i386/i386.h (TARGET_CRC32): New.
5953
5954         * config/i386/i386.md (sse4_2_crc32<mode>): Also check TARGET_CRC32.
5955         (sse4_2_crc32di): Likewise.
5956
5957         * config/i386/i386.opt (mcrc32): New.
5958
5959         * doc/invoke.texi: Document -mcrc32.
5960
5961 2009-06-11  Richard Henderson  <rth@redhat.com>
5962
5963         * common.opt (gdwarf-): Accept a version number.
5964         * doc/invoke.texi (gdwarf-): Update docs.
5965         * opth-gen.awk: Special case -gdwarf+ to OPT_gdwarfplus.
5966         * opts.c (common_handle_option) [OPT_gdwarf_]: Verify dwarf
5967         version level, and record it.
5968
5969         * dwarf2.h (DW_CIE_VERSION): Remove.
5970         * dwarf2out.c (DWARF_VERSION): Remove.
5971         (add_fde_cfi): Skip DW_CFA_set_loc addition for dwarf3.
5972         (output_call_frame_info): Use CIE version 3 for dwarf3,
5973         or if the return register column is out of range for version 1.
5974         (dwarf_stack_op_name): Add all dwarf3 values.
5975         (DEBUG_PUBTYPES_SECTION): New.
5976         (size_of_die) [dw_val_class_die_ref]: Handle DW_FORM_ref_addr
5977         encoding change for dwarf3.
5978         (output_die) [dw_val_class_die_ref]: Likewise.
5979         (output_compilation_unit_header): Emit correct version for dwarf3.
5980         (output_line_info): Likewise.
5981         (output_pubnames): Update for DWARF_VERSION removal.
5982         (output_aranges): Likewise.
5983         (gen_subprogram_die): Emit DW_OP_call_frame_cfa if emitting dwarf3.
5984         (dwarf2out_init): Don't ifdef DEBUG_PUBTYPES_SECTION.
5985         (dwarf2out_finish): Likewise.
5986
5987 2009-06-11  David Daney  <ddaney@caviumnetworks.com>
5988
5989         * system.h (gcc_assert, gcc_unreachable): Revert accidental commit
5990         in r148403.
5991
5992 2009-06-11  David Daney  <ddaney@caviumnetworks.com>
5993
5994         PR c/39252
5995         * doc/extend.texi ( __builtin_unreachable): Document new builtin.
5996         * builtins.c (expand_builtin_unreachable): New function.
5997         (expand_builtin): Handle BUILT_IN_UNREACHABLE case.
5998         * builtins.def (BUILT_IN_UNREACHABLE): Add new builtin.
5999         * cfgcleanup.c (try_optimize_cfg): Delete empty blocks with no
6000         successors.
6001         * cfgrtl.c (rtl_verify_flow_info): Handle empty blocks when
6002         searching for missing barriers.
6003
6004 2009-06-11  Francois-Xavier Coudert  <fxcoudert@gcc.gnu.org>
6005
6006         * config/darwin.h (LINK_COMMAND_SPEC): Adjust spec to link libcov
6007         when -fprofile-generate* was passed.
6008         * config/darwin9.h (LINK_COMMAND_SPEC): Likewise.
6009
6010 2009-06-11  Anthony Green  <green@moxielogic.com>
6011
6012         * config/moxie/moxie.md: Define length attribute for all instructions.
6013         (rCC): Define.
6014         (*b<cond:code>): Support limited branch ranges for new PC-relative
6015         branch instructions.
6016         * config/moxie/moxie.h (HAS_LONG_UNCOND_BRANCH): Define.
6017
6018 2009-06-11  Jakub Jelinek  <jakub@redhat.com>
6019
6020         * config/i386/i386.c (min_insn_size): Use get_attr_length
6021         for normal insns other than TYPE_MULTI, TYPE_OTHER and TYPE_FCMP.
6022         For __asm return 0.
6023
6024         * config/i386/i386.c (ix86_pad_returns): Use emit_jump_insn_before
6025         instead of emit_insn_before.
6026
6027 2009-06-10  Ian Lance Taylor  <iant@google.com>
6028
6029         PR bootstrap/40408
6030         * graphite.c (add_conditions_to_domain): Change SWITCH_EXPR to
6031         GIMPLE_SWITCH.
6032
6033 2009-06-10  Revital Eres  <eres@il.ibm.com>
6034
6035         * passes.c (init_optimization_passes): Reschedule
6036         predictive-commoning pass before complete unroll pass.
6037
6038 2009-06-10  Martin Jambor  <mjambor@suse.cz>
6039
6040         * cgraph.c (cgraph_node_can_be_local_p): New function.
6041         (cgraph_make_node_local): New function.
6042         * cgraph.h (cgraph_node_can_be_local_p): Declare.
6043         (cgraph_make_node_local): Declare.
6044
6045 2009-06-10  Nathan Froyd  <froydnj@codesourcery.com>
6046
6047         * tree.h (tree_base): Add packed_flag and user_align fields.
6048         Decrease size of spare field.
6049         (TYPE_USER_ALIGN): Use user_align from tree_base.
6050         (DECL_USER_ALIGN): Likewise.
6051         (TYPE_PACKED): Use packed_flag from tree_base.
6052         (DECL_PACKED): Likewise.
6053         (tree_type): Delete packed_flag and user_align fields.  Widen
6054         precision field.  Widen mode field and shuffle fields to align
6055         mode on an 8-bit boundary.
6056         (tree_decl_common): Delete decl_flag_1 and user_align fields.
6057         Renumber decl_flag_* fields.  Fix comments.  Widen
6058         decl_common_unused field.
6059         (DECL_HAS_VALUE_EXPR_P): Adjust for renumbering of decl_flag_* fields.
6060         (DECL_EXTERNAL): Likewise.
6061         (DECL_BIT_FIELD): Likewise.
6062         (DECL_NONADDRESSABLE_P): Likewise.
6063         (TYPE_DECL_SUPRESS_DEBUG): Likewise.
6064         * config/arm/arm-modes.def (XImode): Make it an INT_MODE.
6065
6066 2009-06-10  Ian Lance Taylor  <iant@google.com>
6067
6068         * vec.h (DEF_VEC_ALLOC_I): Use DEF_VEC_NONALLOC_FUNCS_I.
6069         (DEF_VEC_ALLOC_P): Use DEF_VEC_NONALLOC_FUNCS_P.
6070         (DEF_VEC_ALLOC_O): Use DEF_VEC_NONALLOC_FUNCS_O.
6071         (DEF_VEC_ALLOC_FUNC_P): Only define VEC_OP (T,A,alloc).
6072         (DEF_VEC_NONALLOC_FUNCS_P): New macro, broken out of old
6073         DEF_VEC_ALLOC_FUNC_P.
6074         (DEF_VEC_ALLOC_FUNC_O): Only define VEC_OP (T,A,alloc).
6075         (DEF_VEC_NONALLOC_FUNCS_O): New macro, broken out of old
6076         DEF_VEC_ALLOC_FUNC_O.
6077         (DEF_VEC_ALLOC_FUNC_I): Only define VEC_OP (T,A,alloc).
6078         (DEF_VEC_NONALLOC_FUNCS_I): New macro, broken out of old
6079         DEF_VEC_ALLOC_FUNC_I.
6080         (vec_stack_p_reserve, vec_stack_p_reserve_exact): Declare.
6081         (vec_stack_p_reserve_exact_1): Declare.
6082         (vec_stack_o_reserve, vec_stack_o_reserve_exact): Declare.
6083         (vec_stack_free): Declare.
6084         (VEC_stack_alloc): Define.
6085         (DEF_VEC_ALLOC_P_STACK, DEF_VEC_ALLOC_FUNC_P_STACK): Define.
6086         (DEF_VEC_ALLOC_O_STACK, DEF_VEC_ALLOC_FUNC_O_STACK): Define.
6087         (DEF_VEC_ALLOC_I_STACK, DEF_VEC_ALLOC_FUNC_I_STACK): Define.
6088         * vec.c (void_p): New type.  Call DEF_VEC_P and DEF_VEC_ALLOC_P
6089         for void_p.
6090         (stack_vecs): New static variable.
6091         (vec_stack_p_reserve_exact_1): New function.
6092         (vec_stack_o_reserve_1): New static function.
6093         (vec_stack_p_reserve, vec_stack_p_reserve_exact): New functions.
6094         (vec_stack_o_reserve, vec_stack_o_reserve_exact): New functions.
6095         (vec_stack_free): New function.
6096         * df-scan.c (df_ref): Use DEF_VEC_P and DEF_VEC_ALLOC_P_STACK.
6097         (VEC_df_ref_stack_alloc): Define.
6098         (df_mw_hardreg_ptr): New type.  Use DEF_VEC_P and
6099         DEF_VEC_ALLOC_P_STACK.
6100         (VEC_df_mw_hardreg_ptr_stack_alloc): Define.
6101         (struct df_collection_rec): Change _vec fields to VEC.  Remove
6102         _use fields.
6103         (df_free_collection_rec): Adjust for new fields.
6104         (df_insn_rescan): Use new df_collection_rec fields.
6105         (df_notes_rescan, df_canonize_collection_rec): Likewise.
6106         (df_ref_create_structure, df_ref_record): Likewise.
6107         (df_get_conditional_uses, df_get_call_refs): Likewise.
6108         (df_insn_refs_collect, df_bb_refs_collect): Likewise.
6109         (df_bb_refs_record, df_record_entry_block_defs): Likewise.
6110         (df_record_exit_block_uses, df_bb_verify): Likewise.
6111         (df_swap_refs): Change ref_vec parameter to VEC.  Change all callers.
6112         (df_sort_and_compress_refs): Change ref_vec parameter to VEC.
6113         Remove count parameter.  Change return type to void.  Change all
6114         callers.
6115         (df_sort_and_compress_mws): Change mw_vec parameter to VEC.
6116         Remove count parameter.  Change return type to void.  Change all
6117         callers.
6118         (df_install_refs): Change old_vec parameter to VEC.  Remove count
6119         parameter.  Change all callers.
6120         (df_install_mws): Change old_vec parameter to VEC.  Remove count
6121         parameter.  Change all callers.
6122         (df_refs_verify): Change new_rec parameter to VEC.  Change call
6123         callers.
6124         (df_mws_verify): Likewise.
6125
6126 2009-06-10  Alexandre Oliva  <aoliva@redhat.com>
6127
6128         * gcc.c (compare_files): Cast munmap argumento to caddr_t.
6129
6130 2009-06-10  H.J. Lu  <hongjiu.lu@intel.com>
6131
6132         * doc/extend.texi: Add description for __builtin_ia32_crc32di.
6133
6134 2009-06-10  Anthony Green  <green@moxielogic.com>
6135
6136         * config/moxie/crti.asm: New file.
6137         * config/moxie/crtn.asm: New file.
6138         * config/moxie/moxie.c: New file.
6139         * config/moxie/moxie.h: New file.
6140         * config/moxie/sfp-machine.h: New file.
6141         * config/moxie/moxie-protos.h: New file.
6142         * config/moxie/t-moxie: Created.
6143         * config/moxie/t-moxie-softfp: Created.
6144         * config/moxie/moxie.md: Created.
6145         * config/moxie/constraints.md: Created.
6146         * config.gcc: Add moxie support.
6147         * doc/md.texi (Machine Constraints): Add moxie constraints.
6148         * doc/contrib.texi (Contributors): Mention moxie port.
6149         * doc/install.texi (Specific): Mention the moxie port.
6150
6151 2009-06-09  Ian Lance Taylor  <iant@google.com>
6152
6153         * system.h (HAVE_DESIGNATED_INITIALIZERS): Don't define if
6154         compiling with C++.
6155         * optabs.c (optab_table): Only use designated initializers if
6156         HAVE_DESIGNATED_INITIALIZERS is defined.
6157         (convert_optab_table): Likewise.
6158         (init_optabs): Always call init_insn_codes if
6159         HAVE_DESIGNATED_INITIALIZERS is not defined.
6160
6161 2009-06-09  Ian Lance Taylor  <iant@google.com>
6162
6163         * targhooks.c (default_builtin_vectorized_function): Change fn
6164         parameter to unsigned int.
6165         (default_builtin_vectorized_conversion): Change code parameter to
6166         unsigned int.
6167         (default_builtin_reciprocal): Change fn parameter to unsigned int.
6168         * targhooks.h: Update declarations.
6169         * config/rs6000/rs6000.c (rs6000_builtin_conversion): Change code
6170         parameter to unsigned int.
6171
6172         * c-typeck.c (comptypes_check_enum_int): New static function.
6173         (comptypes_internal): Add enum_and_int_p parameter.  Change all
6174         callers.
6175         (comp_target_types): Add location parameter.  Change all callers.
6176         (tagged_types_tu_compatible_p): Add enum_and_int_p parameter.
6177         Change all callers.
6178         (function_types_compatible_p, type_lists_compatible_p): Likewise.
6179         (build_conditional_expr): Add colon_loc parameter.  Change all
6180         callers.
6181         (convert_for_assignment): Add location parameter.  Change all callers.
6182         * c-parser.c (c_parser_conditional_expression): Pass location of
6183         colon to build_conditional_expr.
6184         * c-tree.h (build_conditional_expr): Update declaration.
6185
6186 2009-06-09  Sebastian Pop  <sebastian.pop@amd.com>
6187
6188         * graphite.c: Revert previous patch.
6189
6190 2009-06-09  Sebastian Pop  <sebastian.pop@amd.com>
6191
6192         PR bootstrap/40103
6193         * graphite.c: Remove pragma GCC diagnostic warning "-Wc++-compat".
6194
6195 2009-06-09  Ghassan Shobaki  <ghassan.shobaki@amd.com>
6196
6197         * tree-ssa-loop-prefetch.c
6198         (loop_prefetch_arrays): Fixed a portability problem in printf format
6199         string.
6200
6201 2009-06-09  Martin Jambor  <mjambor@suse.cz>
6202
6203         PR tree-optimization/40351
6204         * tree-sra.c (propagate_subacesses_accross_link): Check that a
6205         refrence to a potential artifical subaccess can be constructed.
6206
6207 2009-06-08  Kaz Kojima  <kkojima@gcc.gnu.org>
6208
6209         * config/sh/sh-protos.h (sh_optimization_options): Declare.
6210         (sh_override_options): Likewise.
6211         * config/sh/sh.c: Include params.h.
6212         (sh_optimization_options): New.
6213         (sh_override_options): Likewise.
6214         * config/sh/sh.c (OPTIMIZATION_OPTIONS): Use sh_optimization_options.
6215         (OVERRIDE_OPTIONS): Use sh_override_options.
6216
6217 2009-06-08  Jakub Jelinek  <jakub@redhat.com>
6218
6219         * dwarf2out.c (emit_cfa_remember): New variable.
6220         (add_fde_cfi): If emit_cfa_remember, recurse to add
6221         DW_CFA_remember_state first.
6222         (dwarf2out_begin_epilogue): Don't add_fde_cfi DW_CFA_remember_state,
6223         instead just set emit_cfa_remember.
6224
6225 2009-06-08  Jan Hubicka  <jh@suse.cz>
6226
6227         PR debug/40126
6228         * dwarf2out.c (dwarf2out_abstract_function): Free decl_loc_table.
6229
6230 2009-06-08  Jan Hubicka  <jh@suse.cz>
6231
6232         PR middle-end/39834
6233         * cgraphunit.c (save_inline_function_body): Do not copy transform
6234         hooks for saved inline bodies.
6235         * ipa-passes.c (do_per_function): Do not add the hoks multiple times
6236         for given function.
6237
6238 2009-06-08  Adam Nemet  <anemet@caviumnetworks.com>
6239
6240         * jump.c (returnjump_p): Handle delayed branches.  Add missing
6241         function comment.
6242
6243 2009-06-08  Jan Hubicka  <jh@suse.cz>
6244
6245         PR middle-end/40102
6246         * cgraph.c (cgraph_create_edge_including_clones): Also asume that the
6247         original node might've been modified.
6248         * tree-inline.c (copy_bb): Do not assume that all clones are the same.
6249
6250 2009-06-08  Jakub Jelinek  <jakub@redhat.com>
6251
6252         * tree-object-size.c (addr_object_size): Add OSI argument.
6253         Handle also INDIRECT_REF with SSA_NAME inside of it as base address.
6254         (compute_builtin_object_size, expr_object_size): Adjust callers.
6255         (plus_stmt_object_size): Call addr_object_size instead of
6256         compute_builtin_object_size.
6257
6258 2009-06-08  Ghassan Shobaki  <ghassan.shobaki@amd.com>
6259             Dwarakanath Rajagopal  <dwarak.rajagopal@amd.com>
6260         
6261         * tree-ssa-loop-prefetch.c 
6262         (gather_memory_references): Introduced a counter for the number of 
6263         memory references.
6264         (anything_to_prefetch_p): Introduced a counter for the number of 
6265         prefetches.
6266         (is_loop_prefetching_profitable): New function with a cost model 
6267         for prefetching.
6268         (loop_prefetch_arrays): Use the new cost model to determine if 
6269         prefetching is profitable.
6270         * params.def (MIN_INSN_TO_PREFETCH_RATIO, 
6271         PREFETCH_MIN_INSN_TO_MEM_RATIO): New parameters.
6272         * params.h (MIN_INSN_TO_PREFETCH_RATIO, 
6273         PREFETCH_MIN_INSN_TO_MEM_RATIO): New parameters.
6274         * doc/invoke.texi (MIN_INSN_TO_PREFETCH_RATIO, 
6275         PREFETCH_MIN_INSN_TO_MEM_RATIO): New parameters.
6276         
6277 2009-06-08  Michael Matz  <matz@suse.de>
6278
6279         PR debug/40012
6280         * cfgexpand.c (set_rtl): Store place also in DECL_RTL, if all
6281         partitions use the same.
6282         (expand_one_var): Deal with DECL_RTL sometimes begin set also
6283         for basevars of SSA_NAMEs.
6284         (expand_used_vars): Reset TREE_USED for basevars of SSA_NAMEs,
6285         to not expand them twice.
6286         (gimple_expand_cfg): Clear DECL_RTL for those decls that have
6287         multiple places.
6288
6289 2009-06-08  Alexandre Oliva  <aoliva@redhat.com>
6290
6291         * common.opt (fcompare-debug=, fcompare-debug-second): New.
6292         (fdump-final-insns=, gtoggle): New.
6293         * doc/invoke.texi: Document them.
6294         * final.c (rest_of_clean_state): Dump final insn stream.
6295         * gcc.c (invoke_as): Hook in -fcompare-debug.
6296         (static_spec_functions): Add compare-debug-dump-opt,
6297         compare-debug-self-opt and compare-debug-auxbase-opt.
6298         (compare_debug, compare_debug_second, compare_debug_opt): New.
6299         (switches_debug_check, n_switches_debug_check): New.
6300         (debug_auxbase_opt, debug_check_temp_file): New.
6301         (process_command): Handle -fno-compare-debug, -fcompare-debug and
6302         -fcompare-debug=*.
6303         (do_self_spec): Handle arguments after switches.
6304         (do_spec_1): Add .gk extension to temp file basenames for compare.
6305         (check_live_switch): Take SWITCH_IGNORE into account, and earlier.
6306         (cc1_options): Use it instead of normal auxbase computation for
6307         the second compare-debug compilation.
6308         (compare_files): New.
6309         (main): Set up and implement compare debug mode.
6310         (compare_debug_dump_opt_spec_function): New.
6311         (compare_debug_self_opt_spec_function): New.
6312         (compare_debug_auxbase_opt_spec_function): New.
6313         * toplev.c (process_options): Handle flag_gtoggle,
6314         flag_dump_final_insns.
6315         * coverage.c (coverage_begin_output): Don't overwrite .gcno file
6316         during -fcompare-debug-second compilation.
6317
6318 2009-06-07  Ian Lance Taylor  <iant@google.com>
6319
6320         * dwarf2.h (enum dwarf_location_atom): Add INTERNAL_DW_OP_tls_addr.
6321         * dwarf2out.c (INTERNAL_DW_OP_tls_addr): Don't #define.
6322
6323         * c-common.c (c_do_switch_warnings): Don't exit early for -Wswitch
6324         with no default node.  Change warning with %H to warning_at.
6325         Don't clear warn_switch around case checking.
6326         * doc/invoke.texi (Warning Options): Clarify distinction between
6327         -Wswitch and -Wswitch-enum.
6328
6329 2009-06-07  Bernhard Reutner-Fischer  <aldot@gcc.gnu.org>
6330
6331         * tree-pass.h (TODO_update_ssa_any): Document internal use only.
6332
6333 2009-06-07  Bernhard Reutner-Fischer  <aldot@gcc.gnu.org>
6334
6335         * gbl-ctors.h: Add header guard.
6336
6337 2009-06-07  Bernhard Reutner-Fischer  <aldot@gcc.gnu.org>
6338
6339         * tree-flow.h (make_value_handle, set_value_handle, sort_vuses,
6340         sort_vuses_heap, vn_lookup_or_add, vn_lookup_or_add_with_stmt,
6341         vn_lookup_or_add_with_vuses, vn_add, vn_add_with_vuses,
6342         vn_lookup_with_stmt, vn_lookup, vn_lookup_with_vuses): Remove
6343         prototypes for removed functions.
6344         (expressions_equal_p): Move to ...
6345         * tree-ssa-sccvn.h: ... here and ...
6346         * matrix-reorg.c: ... adjust includes.
6347
6348 2009-06-07  Bernhard Reutner-Fischer  <aldot@gcc.gnu.org>
6349
6350         * ipa-struct-reorg.c (do_reorg_1): Fix whitespace in dump output.
6351
6352 2009-06-07  Bernhard Reutner-Fischer  <aldot@gcc.gnu.org>
6353
6354         * c-decl.c (finish_decl): Use bool for variable was_incomplete.
6355         (finish_function): Remove erroneous whitespace.
6356
6357 2009-06-07  Bernhard Reutner-Fischer  <aldot@gcc.gnu.org>
6358
6359         * tree-cfg.c (gimple_merge_blocks): Commentary typo fix.
6360         (verify_stmts): Print statement who's gimple_bb is set to a wrong BB
6361
6362 2009-06-07  Bernhard Reutner-Fischer  <aldot@gcc.gnu.org>
6363
6364         * errors.c (internal_error): Commentary typo fix.
6365         * gimple-iterator.c (gsi_insert_seq_on_edge): Ditto.
6366         * tree-ssa-pre.c: Ditto.
6367
6368 2009-06-07  Bernhard Reutner-Fischer  <aldot@gcc.gnu.org>
6369
6370         * basic-block.h (ENTRY_BLOCK, EXIT_BLOCK): Document that neither of
6371         them is supposed to hold actual statements.
6372
6373 2009-06-06  Ian Lance Taylor  <iant@google.com>
6374
6375         * doc/extend.texi (Attribute Syntax): Document that C++ labels on
6376         empty statements can now have attributes.
6377
6378 2009-06-05  Shujing Zhao  <pearly.zhao@oracle.com>
6379
6380         * config/mips/mips.c: Use REG_P and CONST_INT_P where applicable.
6381         * config/mips/mips.md: Ditto.
6382
6383 2009-06-05  Nathan Froyd  <froydnj@codesourcery.com>
6384
6385         * config/rs6000/eabi.asm (__eabi_convert): Don't define if
6386         _RELOCATABLE.
6387         (__eabi_uconvert): Likewise.
6388
6389 2009-06-05  Nathan Froyd  <froydnj@codesourcery.com>
6390
6391         * config/rs6000/ppc-asm.h: Protect auto-host.h inclusion and
6392         CFI_* definitions with IN_GCC.
6393
6394 2009-06-05  David Edelsohn  <edelsohn@gnu.org>
6395
6396         * xcoffout.h (xcoffout_source_line): Update prototype.
6397
6398 2009-06-05  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
6399
6400         * builtins.c (do_mpc_ckconv, do_mpc_arg1): Use
6401         mpc_realref/mpc_imagref instead of MPC_RE/MPC_IM.
6402
6403 2009-06-05  Jakub Jelinek  <jakub@redhat.com>
6404
6405         PR middle-end/40340
6406         * tree-ssa-live.c (remove_unused_scope_block_p): Don't prune
6407         inlined_function_outer_scope_p blocks for artificial inlines
6408         even at -g0/-g1.
6409         * tree.c (tree_nonartificial_location): Rewrite using
6410         block_nonartificial_location.
6411
6412 2009-06-05  Revital Eres  <eres@il.ibm.com>
6413             Leehod Baruch  <leehod@il.ibm.com>
6414
6415         * expr.c (expand_assignment): Expand MISALIGNED_INDIRECT_REF.
6416         (expand_expr_real_1): Remove comment.
6417         * tree-vect-data-refs.c (vect_enhance_data_refs_alignment):
6418         Vectorize misaligned access when the target supports it.
6419         (vect_supportable_dr_alignment): Check for unaligned access support.
6420         * tree-vect-stmts.c (vectorizable_store): Generate misaligned store
6421         and remove asset.
6422
6423 2009-06-05  Julian Brown  <julian@codesourcery.com>
6424
6425         * config/arm/ieee754-df.S (cmpdf2): Avoid writing below SP.
6426         * config/arm/ieee754-sf.S (cmpsf2): Likewise.
6427
6428 2009-06-05  Richard Guenther  <rguenther@suse.de>
6429
6430         PR bootstrap/40350
6431         * dwarf2out.c (dwarf2out_begin_function): Mark discriminator
6432         as possibly unused.
6433
6434 2009-06-05  Jakub Jelinek  <jakub@redhat.com>
6435
6436         * config/s390/s390.c (global_not_special_regno_p): New static inline.
6437         (save_gprs): Don't tell unwinder when a global register is saved.
6438         (s390_emit_epilogue): Emit needed epilogue unwind info.
6439
6440 2009-06-05  Alexandre Oliva  <aoliva@redhat.com>
6441
6442         * dwarf2out.c (deferred_asm_name): New.
6443         (add_name_and_src_coords_attributes): Defer creation of
6444         DW_AT_MIPS_linkage_name attribute if DECL_ASSEMBLER_NAME was not
6445         computed yet.
6446         (move_linkage_attr): New.
6447         (dwarf2out_finish): Revisit deferrals and emit attributes at the
6448         right place.
6449
6450 2009-06-05  Alexandre Oliva  <aoliva@redhat.com>
6451
6452         * tree-nested.c (finalize_nesting_tree_1): Declare the
6453         frame_decl in the binding tree.
6454
6455 2009-06-04  Cary Coutant  <ccoutant@google.com>
6456
6457         * basic-block.h (struct basic_block_def): Add discriminator field.
6458         * dbxout.c (dbxout_source_line): Add new parameter.  Change all
6459         callers.
6460         * debug.c (do_nothing_debug_hooks): Add additional entry.
6461         (debug_nothing_int_charstar_int): New function.
6462         * debug.h (struct gcc_debug_hooks): Add parameter to source_line hook.
6463         (debug_nothing_int_charstar_int): New declaration.
6464         * dwarf2out.c (dwarf2out_source_line): Add new parameter.  Write
6465         discriminator value in .loc directive.
6466         * final.c (last_discriminator): New variable.
6467         (discriminator): New variable.
6468         (final_start_function): Initialize above variables, pass current
6469         discriminator to debug hook.
6470         (notice_source_line): Check for discriminator change.
6471         * gimple-pretty-print.c (dump_bb_header): Print discriminator value.
6472         * sdbout.c (sdbout_source_line): New parameter.
6473         * tree-cfg.c (struct locus_discrim_map): New structure type.
6474         (discriminator_per_locus): New hash table.
6475         (build_gimple_cfg): Allocate and free discriminator hash table.
6476         (make_edges): Call assign_discriminator.
6477         (locus_map_hash): New function.
6478         (locus_map_eq): New function.
6479         (next_discriminator_for_locus): New function.
6480         (same_line_p): New function.
6481         (assign_discriminator): New function.
6482         (make_cond_expr_edges): Call assign_discriminator.
6483         (make_gimple_switch_edges): Likewise.
6484         (first_non_label_stmt): New function.
6485         * vmsdbgout.c (vmsdbgout_source_line): Add new parameter.  Change
6486         all callers.
6487         * xcoffout.c (xcoffout_source_line): Add new parameter.
6488
6489         * configure.ac (gcc_cv_as_discriminator): New configury check for
6490         gas support for discriminator.
6491         * configure: Regenerate.
6492         * config.in: Regenerate.
6493
6494 2009-06-04  Ramana Radhakrishnan  <ramana.radhakrishnan@arm.com>
6495
6496         * config/arm/arm.c (thumb2_legitimate_index_p): Initialize
6497         val after checking for integers.
6498
6499 2009-06-04  Uros Bizjak  <ubizjak@gmail.com>
6500
6501         * config/i386/i386.h (X86_64_MS_REGPARM_MAX): Rename from
6502         X64_REGPARM_MAX.
6503         (REGPARM_MAX): Use X86_64_MS_REGPARM_MAX.
6504         (X86_64_MS_SSE_REGPARM_MAX): Rename from X64_SSE_REGPARM_MAX.
6505         (SSE_REGPARM_MAX): Use X86_64_MS_SSE_REGPARM_MAX.
6506         * config/i386/i386.c: Use X86_64_MS_REGPARM_MAX instead of
6507         X64_REGPARM_MAX.  Use X86_64_MS_SSE_REGPARM_MAX instead of
6508         X64_SSE_REGPARM_MAX.
6509         * config/i386/i386.md: Use X86_64_MS_SSE_REGPARM_MAX instead of
6510         X64_SSE_REGPARM_MAX.
6511
6512 2009-06-04  Alexandre Oliva  <aoliva@redhat.com>
6513
6514         * gcc.c (report_times_to_file): New.
6515         (execute): Implement it.
6516         (process_command): Support -time=.
6517         * doc/invoke.texi: Document it.
6518
6519 2009-06-04  Alexandre Oliva  <aoliva@redhat.com>
6520
6521         * tree-ssa-live.c (remove_unused_scope_block_p): Keep variables
6522         that have value exprs.
6523
6524 2009-06-04  Alexandre Oliva  <aoliva@redhat.com>
6525
6526         * dwarf2asm.c (dw2_force_const_mem): Defer creation of
6527         declarations for constants until...
6528         (dw2_output_indirect_constant_1): ... this point.
6529
6530 2009-06-04  Richard Earnshaw  <rearnsha@arm.com>
6531
6532         PR target/10242
6533         * arm.md (arm_addsi3): Don't try to split an add with an
6534         eliminable register until after reload has completed.
6535
6536 2009-06-03  Ian Lance Taylor  <iant@google.com>
6537
6538         * dummy-checksum.c (executable_checksum): Use EXPORTED_CONST.
6539         * genattrtab.c (write_length_unit_log): Likewise.
6540         * genchecksum.c (dosum): Likewise.
6541         * gengtype.c (write_rtx_next): Likewise.
6542         (finish_root_table, write_roots): Likewise.
6543         * gimple.c (gimple_ops_offset_): Likewise.
6544         * tree-nomudflap.c (gt_ggc_r_gt_tree_mudflap_h): Likewise.
6545         * config/arc/arc.c (arc_attribute_table): Likewise.
6546         * config/arm/arm.c (arm_attribute_table): Likewise.
6547         * config/avr/avr.c (avr_attribute_table): Likewise.
6548         * config/crx/crx.c (crx_attribute_table): Likewise.
6549         * config/m32r/m32r.c (m32r_attribute_table): Likewise.
6550         * config/m68hc11/m68hc11.c (m68hc11_attribute_table): Likewise.
6551         * config/mcore/mcore.c (mcore_attribute_table): Likewise.
6552         * config/rs6000/rs6000.c (rs6000_attribute_table): Likewise.
6553         * config/sh/sh.c (sh_attribute_table): Likewise.
6554         * config/sparc/sparc.c (sparc_attribute_table): Likewise.
6555         * config/spu/spu.c (spu_attribute_table): Likewise.
6556         * config/v850/v850.c (v850_attribute_table): Likewise.
6557
6558         * config/alpha/alpha.c (vms_attribute_table): Make static.
6559         * config/bfin/bfin.c (bfin_attribute_table): Likewise.
6560         * config/h8300/h8300.c (h8300_attribute_table): Likewise.
6561         * config/mips/mips.c (mips_attribute_table): Likewise.
6562
6563         * Makefile.in (dummy-checksum.o): Depend upon $(CONFIG_H) and
6564         $(SYSTEM_H).
6565         (cc1-checksum.o): Likewise.
6566
6567 2009-06-03  Steve Ellcey  <sje@cup.hp.com>
6568
6569         * config/ia64/vect.md (*movv2sf_internal): Handle big endian case.
6570
6571 2009-06-03  Jakub Jelinek  <jakub@redhat.com>
6572
6573         * config/rs6000/rs6000.c (rs6000_emit_stack_reset): Return generated
6574         insn if it is changing sp.  Use gen_add3_insn instead of
6575         conditionally gen_addsi3 and gen_adddi3.
6576         (offset_below_red_zone_p): New static inline function.
6577         (rs6000_emit_epilogue): Emit needed epilogue unwind info.
6578         Use gen_add3_insn instead of conditionally gen_addsi3 and gen_adddi3.
6579         * config/rs6000/ppc-asm.h: Include auto-host.h.
6580         (CFI_STARTPROC, CFI_ENDPROC, CFI_DEF_CFA_REGISTER, CFI_OFFSET,
6581         CFI_RESTORE): Define.
6582         * config/rs6000/crtresxgpr.asm: Add unwind info.
6583         * config/rs6000/crtresxfpr.asm: Likewise.
6584         * config/rs6000/crtresgpr.asm: Likewise.
6585         * config/rs6000/crtresfpr.asm: Likewise.
6586         * config/rs6000/crtsavgpr.asm: Likewise.
6587         * config/rs6000/crtsavfpr.asm: Likewise.
6588
6589         * dwarf2out.c (output_cfi_directive): Pass 1 instead of 0 to second
6590         argument of DWARF2_FRAME_REG_OUT macros.
6591
6592 2009-06-03  Julian Brown  <julian@codesourcery.com>
6593
6594         * config/arm/arm.c (arm_hard_regno_mode_ok): Permit values of four
6595         words or less (including TImode) in core registers.
6596
6597 2009-06-03  Richard Guenther  <rguenther@suse.de>
6598
6599         PR middle-end/40328
6600         * fold-const.c (fold_convert): Fold the build COMPLEX_EXPR.
6601
6602 2009-06-03  Andrey Belevantsev  <abel@ispras.ru>
6603
6604         * statistics.c (statistics_counter_event): Do not record event 
6605         in pass dump if its number == -1.
6606         (curr_statistics_hash): Add assert that we never get passes 
6607         with static number == -1.
6608
6609 2009-06-03  Richard Guenther  <rguenther@suse.de>
6610             Andrey Belevantsev  <abel@ispras.ru>
6611
6612         * cfgexpand.c (discover_nonconstant_array_refs_r): Make only 
6613         non-BLKmode arrays addressable.
6614
6615 2009-06-03  Maxim Kuvyrkov  <maxim@codesourcery.com>
6616
6617         * config/m68k/linux.h (HAVE_GAS_BALIGN_AND_P2ALIGN): Move to ...
6618         * config/m68k/m68k.h: ... here.
6619         * testsuite/gcc.dg/falign-labels.c (dg-options): Don't restrict for
6620         m68k and fido.
6621
6622 2009-06-03  Martin Jambor  <mjambor@suse.cz>
6623
6624         PR tree-optimization/40323
6625         * ipa-prop.c (get_ssa_def_if_simple_copy): Break if not single
6626         assignment.
6627
6628 2009-06-03  Richard Guenther  <rguenther@suse.de>
6629
6630         * tree-ssa-sccvn.c (copy_reference_ops_from_ref): Use DECL_SIZE
6631         consistently.
6632
6633 2009-06-03  Shujing Zhao  <pearly.zhao@oracle.com>
6634
6635         * config/sh/predicates.md: Use REG_P, MEM_P, CONST_INT_P, LABEL_P,
6636         JUMP_P, CALL_P, NONJUMP_INSN_P, NOTE_P, BARRIER_P and
6637         JUMP_TABLE_DATA_P where applicable.
6638         * config/sh/sh.c: Ditto.
6639         * config/sh/sh.h: Ditto.
6640         * config/sh/sh.md: Ditto.
6641         * config/sh/symbian.c: Ditto.
6642
6643 2009-06-03  Uros Bizjak  <ubizjak@gmail.com>
6644
6645         * config/i386/driver-i386.c (describe_cache): Optimize
6646         concatenation of strings.  Use snprintf instead of sprintf.
6647         (host_detect_local_cpu): Ditto.  Ignore -march and -mtune for native
6648         target when not compiling with GCC.
6649
6650 2009-06-02  Kaz Kojima  <kkojima@gcc.gnu.org>
6651
6652         * config/sh/sh.c: Revert last change.
6653         (sh_expand_epilogue): Emit a blockage insn before the frame
6654         pointer adjustment unconditionally.
6655
6656 2009-06-02  Richard Sandiford  <r.sandiford@uk.ibm.com>
6657
6658         * config/pa/pa-hpux.h (LINK_SPEC): Remove "%<fwhole-program".
6659         * config/pa/pa-hpux10.h (LINK_SPEC): Likewise.
6660         * config/pa/pa-hpux11.h (LINK_SPEC): Likewise.
6661         * gcc.c (set_collect_gcc_options): Don't add -fwhole-program
6662         to COLLECT_GCC_OPTIONS.
6663
6664 2009-06-02  Richard Sandiford  <r.sandiford@uk.ibm.com>
6665
6666         * collect2.c (target_system_root): New variable.
6667         (main): Handle --sysroot=.
6668         (ignore_library): Strip the sysroot from the library path.
6669
6670 2009-06-02  Richard Sandiford  <r.sandiford@uk.ibm.com>
6671
6672         * Makefile.in (COLLECT2_OBJS): Add collect2-aix.o.
6673         (collect2.o): Depend on collect2-aix.h.
6674         (collect2-aix.o): New rule.
6675         * collect2-aix.h: New file.
6676         * collect2-aix.c: Likewise.
6677         * collect2.c: Include collect2-aix.h.  Don't undefine
6678         OBJECT_FORMAT_COFF if CROSS_AIX_SUPPORT is defined.
6679         Guard native includes with #ifndef CROSS_DIRECTORY_STRUCTURE.
6680         Use TARGET_AIX_VERSION instead of _AIX51.
6681         * config/rs6000/aix43.h (TARGET_AIX_VERSION): Define.
6682         * config/rs6000/aix51.h (TARGET_AIX_VERSION): Likewise.
6683         * config/rs6000/aix52.h (TARGET_AIX_VERSION): Likewise.
6684         * config/rs6000/aix53.h (TARGET_AIX_VERSION): Likewise.
6685         * config/rs6000/aix61.h (TARGET_AIX_VERSION): Likewise.
6686
6687 2009-06-02  Richard Sandiford  <r.sandiford@uk.ibm.com>
6688
6689         * collect2.c (ignore_library): Avoid premature post-increment
6690         and null deference.
6691
6692 2009-06-02  Richard Sandiford  <r.sandiford@uk.ibm.com>
6693
6694         * Makefile.in (libgcc.mvars): Add TARGET_SYSTEM_ROOT.
6695         * config/rs6000/aix.h (LINK_SYSCALLS_SPEC): Add %R to the
6696         !CROSS_DIRECTORY_STRUCTURE alternative and use it for
6697         CROSS_DIRECTORY_STRUCTURE too.
6698         (LINK_LIBG_SPEC): Likewise.
6699         (LIB_SPEC): Add %R to sysroot paths.
6700         * config/rs6000/aix43.h (CPP_SPEC): Add %R to sysroot paths.
6701         (CPLUSPLUS_CPP_SPEC, LIB_SPEC): Likewise.
6702         * config/rs6000/aix51.h: As for aix43.h.
6703         * config/rs6000/aix52.h: Likewise.
6704         * config/rs6000/aix53.h: Likewise.
6705         * config/rs6000/aix61.h: Likewise.
6706         * config/rs6000/t-aix52 (SHLIB_LINK): Add $(TARGET_SYSTEM_ROOT)
6707         to the beginning of sysroot paths.
6708
6709 2009-06-02  Alexandre Oliva  <aoliva@redhat.com>
6710
6711         * print_rtl (print_rtx): Don't print modes in EXPR_LISTs and
6712         INSN_LISTs that are out of the REG_NOTE range.
6713
6714 2009-06-02  Alexandre Oliva  <aoliva@redhat.com>
6715
6716         * loop-unroll.c (struct iv_to_split): Add pointer to next.
6717         (struct var_to_expand): Likewise.
6718         (struct opt_info): Add head and tail for linked lists of the above.
6719         (analyze_insn_to_expand_var): Initialize next.
6720         (analyze_iv_to_split_insn): Likewise.
6721         (analyze_insns_in_loop): Create linked lists.
6722         (allocate_basic_variable): Simplify for use without hash table.
6723         (insert_var_expansion_initialization): Likewise, make it type-safer.
6724         (combine_var_copies_in_loop_exit): Likewise.
6725         (apply_opt_in_copies): Walk lists rather than hash tables.
6726         (release_var_copies): Simplified and inlined by hand into...
6727         (free_opt_info): ... this function.
6728
6729 2009-06-02  Richard Guenther  <rguenther@suse.de>
6730
6731         * tree-ssa-sccvn.c (copy_reference_ops_from_ref): Use DECL_SIZE
6732         for field decls.
6733
6734 2009-06-02  Alexandre Oliva  <aoliva@redhat.com>
6735
6736         * cfgexpand.c (gimple_expand_cfg): Discard the source location
6737         only for builtins that are not overridden.
6738
6739 2009-06-02  Alexandre Oliva  <aoliva@redhat.com>
6740
6741         * gengtype.c (adjust_field_rtx_def): Add NOTE_INSN_DELETED_LABEL's
6742         label string.
6743
6744 2009-06-02  Alexandre Oliva  <aoliva@redhat.com>
6745
6746         * df-core.c (df_ref_debug): Honor -fdump-noaddr.
6747
6748 2009-06-02  Alexandre Oliva  <aoliva@redhat.com>
6749
6750         * combine.c (move_deaths): Compare LUIDs within the same BB only.
6751
6752 2009-06-02  Alexandre Oliva  <aoliva@redhat.com>
6753
6754         * common.opt (fdump-unnumbered-links): New.
6755         * doc/invoke.texi (-fdump-unnumbered-links): Document it.
6756         * print-rtl.c (flag_dump_unnumbered_links): New.
6757         (print_rtx): Test it.
6758
6759 2009-06-02  Richard Earnshaw  <rearnsha@arm.com>
6760
6761         * arm.c (arm_get_frame_offsets): Prefer using r3 for padding a
6762         push/pop multiple to 8-byte alignment.
6763
6764 2009-06-01  Jakub Jelinek  <jakub@redhat.com>
6765
6766         * config/i386/i386.c (queued_cfa_restores): New static variable.
6767         (ix86_add_cfa_restore_note, ix86_add_queued_cfa_restore_notes): New
6768         functions.
6769         (pro_epilogue_adjust_stack): Call ix86_add_queued_cfa_restore_notes.
6770         (ix86_emit_restore_reg_using_pop): Add RED_OFFSET argument.
6771         Set RTX_FRAME_RELATED_P immediately after adding a REG_CFA_* note.
6772         Call ix86_add_cfa_restore_note instead of adding REG_CFA_OFFSET
6773         note unconditionally.
6774         (ix86_emit_restore_regs_using_mov): Likewise.
6775         (ix86_emit_restore_sse_regs_using_mov): Likewise.
6776         (ix86_emit_restore_regs_using_pop): Add RED_OFFSET argument, pass
6777         it through to ix86_emit_restore_reg_using_pop.
6778         (ix86_emit_leave): Add RED_OFFSET argument.  Call
6779         ix86_add_queued_cfa_restore_notes.  Call ix86_add_cfa_restore_note
6780         instead of adding REG_CFA_OFFSET note unconditionally.
6781         (ix86_expand_epilogue): Compute RED_OFFSET, pass it down to
6782         the above functions.  Call ix86_add_queued_cfa_restore_notes when
6783         needed.
6784
6785         * dwarf2out.c (dwarf2out_cfi_label): Add FORCE argument, if true,
6786         force output of the label even for dwarf2out_do_cfi_asm.
6787         (add_fde_cfi): If -g2 and above and cfi might change CFA,
6788         force creation of CFI label and chain DW_CFA_set_loc jumping to it
6789         for convert_cfa_to_fb_loc_list.  Adjust other dwarf2out_cfi_label
6790         caller.
6791         (dwarf2out_stack_adjust, dwarf2out_frame_debug,
6792         dwarf2out_begin_epilogue, dwarf2out_frame_debug_restore_state): Adjust
6793         dwarf2out_cfi_label callers.
6794         * tree.h (dwarf2out_cfi_label): Adjust prototype.
6795         * config/arm/arm.c (thumb_pushpop, thumb1_output_function_prologue):
6796         Adjust dwarf2out_cfi_label callers.
6797         * config/vax/vax.c (vax_output_function_prologue): Likewise.
6798
6799         * config/i386/i386.h (struct machine_cfa_state,
6800         struct machine_function): Guard with ifndef USED_FOR_TARGET
6801         instead of not IN_LIBGCC2 and not in IN_TARGET_LIBS.
6802
6803         PR other/40024
6804         * emutls.c (__emutls_get_address): Change arr->size to mean number
6805         of allocated arr->data entries instead of # of slots + 1.
6806
6807         PR middle-end/40316
6808         * recog.c (peep2_reinit_state): New function.
6809         (peephole2_init_state): Use it at the end of a basic block and also
6810         when seeing a RTX_FRAME_RELATED_P insn.
6811
6812 2009-06-01  Steve Ellcey  <sje@cup.hp.com>
6813
6814         * ia64.md (floatdirf2, fix_truncrfdi, floatunsdirf,
6815         fixuns_truncrfdi2): New.
6816         (fix_truncxfdi2_alts, fixuns_truncxfdi2_alts,
6817         *nmaddsf4_alts, *nmadddf4_alts, *nmadddf4_truncsf_alts,
6818         *mulxf3_alts, *mulxf3_truncsf_alts, *mulxf3_truncdf_alts,
6819         *maddxf4_alts, *maddxf4_alts_truncsf, *maddxf4_alts_truncdf,
6820         *nmaddxf4_alts, *nmaddxf4_truncsf_alts, *nmaddxf4_truncdf_alts,
6821         *recip_approx): Remove.
6822         (divsi3 modsi3, udivsi3, umodsi3, divsi3_internal, divdi3,
6823         moddi3, udivdi3, umoddi3, divdi3_internal_lat, divdi3_internal_thr,
6824         divsf3, sqrtsf2, divdf3, sqrtdf2, divxf3, sqrtxf2): Modify and
6825         move to div.md.
6826         * div.md (fix_truncrfdi2_alts, fixuns_truncrfdi2_alt,
6827         setf_exp_rf): New.
6828
6829 2009-06-01  Ian Lance Taylor  <iant@google.com>
6830
6831         * attribs.c (register_attribute): Use CONST_CAST.
6832         * collect2.c (main): Use CONST_CAST2.
6833         (scan_prog_file): Likewise.
6834         * gcc.c (process_command, main): Likewise.
6835         * toplev.c (toplev_main): Likewise.
6836
6837         * c-typeck.c (handle_warn_cast_qual): New static function,
6838         partially broken out of build_c_cast.
6839         (build_c_cast): Call handle_warn_cast_qual.
6840         * doc/invoke.texi (Warning Options): Document new effect of
6841         -Wcast-qual.
6842
6843 2009-06-01  Aldy Hernandez  <aldyh@redhat.com>
6844
6845         * diagnostic.c (diagnostic_build_prefix): Always print columns.
6846         (diagnostic_report_current_module): Print columns.
6847         * common.opt (flag_show_column): Enable by default.
6848
6849 2009-06-01  Luis Machado  <luisgpm@br.ibm.com>
6850
6851         * alias.c (find_base_term): Check for NULL term before returning.
6852
6853 2009-06-01  Maxim Kuvyrkov  <maxim@codesourcery.com>
6854
6855         Revert due to PR40320:
6856         2009-06-01  Maxim Kuvyrkov  <maxim@codesourcery.com>
6857         * calls.c (emit_library_call_value_1): Don't force_operand for move
6858         and push insns.
6859
6860 2009-06-01  Olivier Hainque  <hainque@adacore.com>
6861             Eric Botcazou  <ebotcazou@adacore.com>
6862
6863         * tree.h (CONSTRUCTOR_BITFIELD_P): True if NODE, a FIELD_DECL, is
6864         to be processed as a bitfield for constructor output purposes.
6865         * output.h (initializer_constant_valid_for_bitfield_p): Declare
6866         new function.
6867         * varasm.c (oc_local_state): New type, output_constructor
6868         local state to support communication with helpers.
6869         (oc_outer_state): New type, output_constructor outer state of
6870         relevance in recursive calls.
6871         (output_constructor_array_range): New output_constructor helper,
6872         extracted code for an array range element.
6873         (output_constructor_regular_field): New output_constructor helper,
6874         extracted code for an element that is not a bitfield.
6875         (output_constructor_bitfield): New output_constructor helper,
6876         extracted code for a bitfield element.  Accept an OUTER state
6877         argument for recursive processing.  Recurse on record or array
6878         CONSTRUCTOR values, possibly past noop conversions.
6879         (initializer_constant_valid_for_bitfield_p): New predicate.  Whether
6880         VALUE is a valid constant-valued expression for use in a static
6881         bit-field initializer.
6882         (output_constructor): Rework to use helpers.  Accept and honor an
6883         OUTER state argument for recursive calls.  Return total size.  Be
6884         prepared for nested constructors initializing bitfields.
6885         (output_constant): Feed OUTER in calls to output_constructor.
6886
6887 2009-06-01  Maxim Kuvyrkov  <maxim@codesourcery.com>
6888
6889         * calls.c (emit_library_call_value_1): Don't force_operand for move
6890         and push insns.
6891
6892 2009-06-01  Nick Clifton  <nickc@redhat.com>
6893
6894         * doc/invoke.texi (IA-64 Options): Fix typo.
6895
6896 2009-06-01  Ira Rosen  <irar@il.ibm.com>
6897
6898         PR tree-optimization/39129
6899         * tree-vect-loop-manip.c (conservative_cost_threshold): Change the
6900         printed message.
6901         (vect_do_peeling_for_loop_bound): Use
6902         LOOP_REQUIRES_VERSIONING_FOR_ALIGNMENT and
6903         LOOP_REQUIRES_VERSIONING_FOR_ALIAS macros.
6904         (vect_loop_versioning): Likewise.
6905         (vect_create_cond_for_alias_checks): Fix indentation.
6906         * tree-vectorizer.h (struct _loop_vec_info): Fix indentation of the
6907         macros.
6908         (LOOP_REQUIRES_VERSIONING_FOR_ALIGNMENT): Define.
6909         (LOOP_REQUIRES_VERSIONING_FOR_ALIAS): Likewise.
6910         * tree-vect-loop.c (vect_analyze_loop_form): Change "too many BBs" to
6911         "control flow in loop".
6912         (vect_estimate_min_profitable_iters): Use
6913         LOOP_REQUIRES_VERSIONING_FOR_ALIGNMENT and
6914         LOOP_REQUIRES_VERSIONING_FOR_ALIAS macros.
6915         * tree-vect-data-refs.c (vect_enhance_data_refs_alignment): Likewise.
6916         (vect_create_data_ref_ptr): Don't mention array dimension in printing.
6917         * tree-vect-stmts.c (vectorizable_store): Replace the check that the
6918         statement belongs to a group of strided accesses with the exact code
6919         check.
6920         (vectorizable_load): Likewise.
6921         * tree-vect-slp.c (vect_analyze_slp_instance): Spell out "basic block".
6922         (vect_slp_analyze_bb, vect_slp_transform_bb): Likewise.
6923
6924 2009-06-01  Gerald Pfeifer  <gerald@pfeifer.com>
6925
6926         * config/freebsd-stdint.h: New file.
6927         * config.gcc (*-*-freebsd): Set use_gcc_stdint=wrap.
6928         Add freebsd-stdint.h to tm_file.
6929
6930 2009-06-01  Richard Earnshaw  <rearnsha@arm.com>
6931
6932         * arm/thumb2.md (thumb2_zero_extendhidi2): New insn and split.
6933         (thumb2_extendhidi2): Likewise.
6934
6935 2009-05-31  Ian Lance Taylor  <iant@google.com>
6936
6937         * regstat.c (regstat_n_sets_and_refs): Remove duplicate definition.
6938
6939 2009-05-31  Ian Lance Taylor  <iant@google.com>
6940
6941         * Makefile.in (except.o): Depend upon gt-except.h, not gt-$(EXCEPT_H).
6942         (ipa-cp.o): Depend upon $(FIBHEAP_H) and $(PARAMS_H).
6943         (ipa-reference.o): Depend upon gt-ipa-reference.h.
6944
6945 2009-05-31  Jason Merrill  <jason@redhat.com>
6946
6947         * tree-pretty-print.c (print_call_name): Take the callee, not the
6948         call itself.  Make non-static.  Use dump_function_name for functions.
6949         (dump_generic_node): Adjust.
6950         * diagnostic.h: Declare print_call_name.
6951         * gimple-pretty-print.c (dump_gimple_call): Use it.
6952
6953 2009-05-31  Kaz Kojima  <kkojima@gcc.gnu.org>
6954
6955         * config/sh/sh.md (ashldi3_std): New define_expand.
6956         (ashldi3): Use it.
6957
6958 2009-05-31  Kaz Kojima  <kkojima@gcc.gnu.org>
6959
6960         PR target/40313
6961         * config/sh/sh.c: Include debug.h.
6962         (sh_expand_epilogue): Emit a blockage insn before the frame
6963         pointer adjustment also when dwarf2out_do_frame returns true.
6964
6965 2009-05-31  Richard Earnshaw  <rearnsha@arm.com>
6966
6967         * arm/thumb2.md (thumb2_extendsidi2): Add a split sub-pattern.
6968         (thumb2_extendqidi2): New pattern.
6969
6970 2009-05-31  Ira Rosen  <irar@il.ibm.com>
6971
6972         * tree-vect-loop-manip.c (slpeel_update_phi_nodes_for_guard1): Don't
6973         mark phis for renaming.
6974         * tree-vectorizer.c (vect_memsyms_to_rename): Remove.
6975         (vectorize_loops): Don't allocate and free vect_memsyms_to_rename.
6976         Call mark_sym_for_renaming.
6977         * tree-vectorizer.h (vect_memsyms_to_rename): Remove.
6978         * tree-vect-loop.c (vect_transform_loop): Remove
6979         vect_memsyms_to_rename initialization and a call to
6980         mark_set_for_renaming.
6981
6982 2009-05-31  Jakub Jelinek  <jakub@redhat.com>
6983
6984         PR middle-end/40304
6985         * config/i386/i386.c (pro_epilogue_adjust_stack): Mark insns
6986         frame related even if !set_cfa && style < 0.
6987
6988 2009-05-30  Kai Tietz  <kai.tietz@onevision.com>
6989
6990         * config/i386/mingw-tls.c: New file.
6991         * config/i386/t-gthr-win32 (LIB2FUNCS_EXTRA): Add mingw-tls.c file.
6992         * gthr-win32.h (MINGW32_SUPPORTS_MT_EH): Define it for targets
6993         defining _WIN32 but not __CYGWIN__.
6994
6995 2009-05-29  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
6996
6997         * configure.ac: Add MPC support.
6998         
6999         * config.in, configure: Regenerate.     
7000
7001 2009-05-29  Richard Henderson  <rth@redhat.com>
7002
7003         * cfgcleanup.c (try_crossjump_to_edge): Only skip past
7004         NOTE_INSN_BASIC_BLOCK.
7005         * cfglayout.c (duplicate_insn_chain): Copy epilogue insn marks.
7006         Duplicate NOTE_INSN_EPILOGUE_BEG notes.
7007         * cfgrtl.c (can_delete_note_p): Allow NOTE_INSN_EPILOGUE_BEG
7008         to be deleted.
7009         * dwarf2out.c (struct cfa_loc): Change indirect field to bitfield,
7010         add in_use field.
7011         (add_cfi): Disable check redefining cfa away from drap.
7012         (lookup_cfa_1): Add remember argument; handle remember/restore.
7013         (lookup_cfa): Pass remember argument.
7014         (cfa_remember): New.
7015         (compute_barrier_args_size_1): Remove sibcall check.
7016         (dwarf2out_frame_debug_def_cfa): New.
7017         (dwarf2out_frame_debug_adjust_cfa): New.
7018         (dwarf2out_frame_debug_cfa_offset): New.
7019         (dwarf2out_frame_debug_cfa_register): New.
7020         (dwarf2out_frame_debug_cfa_restore): New.
7021         (dwarf2out_frame_debug): Handle REG_CFA_* notes.
7022         (dwarf2out_begin_epilogue): New.
7023         (dwarf2out_frame_debug_restore_state): New.
7024         (dw_cfi_oprnd1_desc): Handle DW_CFA_remember_state,
7025         DW_CFA_restore_state.
7026         (output_cfi_directive): Likewise.
7027         (convert_cfa_to_fb_loc_list): Likewise.
7028         (dw_cfi_oprnd1_desc): Handle DW_CFA_restore.
7029         * dwarf2out.h: Update.
7030         * emit-rtl.c (try_split): Don't split RTX_FRAME_RELATED_P.
7031         (copy_insn_1): Early out for null.
7032         * final.c (final_scan_insn): Call dwarf2out_begin_epilogue
7033         and dwarf2out_frame_debug_restore_state.
7034         * function.c (prologue, epilogue, sibcall_epilogue): Remove.
7035         (prologue_insn_hash, epilogue_insn_hash): New.
7036         (free_after_compilation): Adjust freeing accordingly.
7037         (record_insns): Create hash table if needed; push insns into
7038         hash instead of array.
7039         (maybe_copy_epilogue_insn): New.
7040         (contains): Search hash table instead of array.
7041         (sibcall_epilogue_contains): Remove.
7042         (thread_prologue_and_epilogue_insns): Split eh_return insns
7043         and mark them as epilogues.
7044         (reposition_prologue_and_epilogue_notes): Rewrite epilogue
7045         scanning in terms of basic blocks.
7046         * insn-notes.def (CFA_RESTORE_STATE): New.
7047         * jump.c (returnjump_p_1): Accept EH_RETURN.
7048         (eh_returnjump_p_1, eh_returnjump_p): New.
7049         * reg-notes.def (CFA_DEF_CFA, CFA_ADJUST_CFA, CFA_OFFSET,
7050         CFA_REGISTER, CFA_RESTORE): New.
7051         * rtl.def (EH_RETURN): New.
7052         * rtl.h (eh_returnjump_p, maybe_copy_epilogue_insn): Declare.
7053
7054         * config/bfin/bfin.md (UNSPEC_VOLATILE_EH_RETURN): Remove.
7055         (eh_return_internal): Use eh_return rtx; split w/ epilogue.
7056
7057         * config/i386/i386.c (gen_push): Update cfa state.
7058         (pro_epilogue_adjust_stack): Add set_cfa argument.  When true,
7059         add a CFA_ADJUST_CFA note.
7060         (ix86_dwarf_handle_frame_unspec): Remove.
7061         (ix86_expand_prologue): Update cfa state.
7062         (ix86_emit_restore_reg_using_pop): New.
7063         (ix86_emit_restore_regs_using_pop): New.
7064         (ix86_emit_leave): New.
7065         (ix86_emit_restore_regs_using_mov): Add CFA_RESTORE notes.
7066         (ix86_expand_epilogue): Add notes for unwinding the epilogue.
7067         * config/i386/i386.h (struct machine_cfa_state): New.
7068         (ix86_cfa_state): New.
7069         * config/i386/i386.md (UNSPEC_EH_RETURN): Remove.
7070         (eh_return_internal): Merge from eh_return_<mode>,
7071         use eh_return rtx, split w/ epilogue.
7072
7073 2009-05-29  Ian Lance Taylor  <iant@google.com>
7074
7075         * builtins.c (validate_gimple_arglist): Don't use va_arg with
7076         enum type.
7077         * calls.c (emit_library_call_value_1): Likewise.
7078
7079         * c-typeck.c (c_build_va_arg): New function.
7080         * c-tree.h (c_build_va_arg): Declare.
7081         * c-parser.c (c_parser_postfix_expression): Call c_build_va_arg
7082         instead of build_va_arg.
7083
7084 2009-05-29  Eric Botcazou  <ebotcazou@adacore.com>
7085
7086         * tree-ssa-loop-ivopts.c (strip_offset_1) <MULT_EXPR>: New case.
7087         (force_expr_to_var_cost) <NEGATE_EXPR>: Likewise.
7088         (ptr_difference_cost): Use affine combinations to compute it.
7089         (difference_cost): Likewise.
7090         (get_computation_cost_at): Compute more accurate cost for addresses
7091         if the ratio is a multiplier allowed in addresses.
7092         For non-addresses, consider that an additional offset or symbol is
7093         added only once.
7094
7095 2009-05-29  Jakub Jelinek  <jakub@redhat.com>
7096
7097         * config/i386/i386.c (ix86_decompose_address): Avoid useless
7098         0 displacement.  Add 0 displacement if base is %[er]bp or %r13.
7099
7100         * config/i386/i386.md (prefix_data16, prefix_rep): Set to 0 for
7101         TYPE_SSE{MULADD,4ARG,IADD1,CVT1} by default.
7102         (prefix_rex): For UNIT_MMX don't imply the prefix by default
7103         if MODE_DI.
7104         (prefix_extra): Default to 2 for TYPE_SSE{MULADD,4ARG} and
7105         to 1 for TYPE_SSE{IADD1,CVT1}.
7106         (prefix_vex_imm8): Removed.
7107         (length_vex): Only pass 1 as second argument to
7108         ix86_attr_length_vex_default if prefix_extra is 0.
7109         (modrm): For TYPE_INCDEC only set to 0 if not TARGET_64BIT.
7110         (length): For prefix vex computation use length_immediate
7111         attribute instead of prefix_vex_imm8.
7112         (cmpqi_ext_3_insn, cmpqi_ext_3_insn_rex64,
7113         addqi_ext_1, addqi_ext_1_rex64, *testqi_ext_0, andqi_ext_0,
7114         *andqi_ext_0_cc, *iorqi_ext_0, *xorqi_ext_0, *xorqi_cc_ext_1,
7115         *xorqi_cc_ext_1_rex64): Override modrm attribute to 1.
7116         (extendsidi2_rex64, extendhidi2, extendqidi2, extendhisi2,
7117         *extendhisi2_zext, extendqihi2, extendqisi2, *extendqisi2_zext): Emit
7118         a space in between the operands.
7119         (*anddi_1_rex64, *andsi_1): Likewise.  Override prefix_rex to 1
7120         if one operand is 0xff and the other one si, di, bp or sp.
7121         (*andhi_1): Override prefix_rex to 1 if one operand is 0xff and the
7122         other one si, di, bp or sp.
7123         (*btsq, *btrq, *btcq, *btdi_rex64, *btsi): Add mode attribute.
7124         (*ffssi_1, *ffsdi_1, ctzsi2, ctzdi2): Add
7125         type and mode attributes.
7126         (*bsr, *bsr_rex64, *bsrhi): Add type attribute.
7127         (*cmpfp_i_mixed, *cmpfp_iu_mixed): For TYPE_SSECOMI, clear
7128         prefix_rep attribute and set prefix_data16 attribute iff MODE_DF.
7129         (*cmpfp_i_sse, *cmpfp_iu_sse): Clear prefix_rep attribute and set
7130         prefix_data16 attribute iff MODE_DF.
7131         (*movsi_1): For TYPE_SSEMOV MODE_SI set prefix_data16 attribute.
7132         (fix_trunc<mode>di_sse): Set prefix_rex attribute.
7133         (*adddi_4_rex64, *addsi_4): Use const128_operand instead of
7134         constm128_operand in length_immediate computation.
7135         (*addhi_4): Likewise.  Fix mode attribute to MODE_HI.
7136         (anddi_1_rex64): Use movzbl/movzwl instead of movzbq/movzwq.
7137         (*avx_ashlti3, sse2_ashlti3, *avx_lshrti3, sse2_lshrti3): Set
7138         length_immediate attribute to 1.
7139         (x86_fnstsw_1, x86_fnstcw_1, x86_fldcw_1): Fix length attribute.
7140         (*movdi_1_rex64): Override prefix_rex or prefix_data16 attributes
7141         for certain alternatives.
7142         (*movdf_nointeger, *movdf_integer_rex64, *movdf_integer): Override
7143         prefix_data16 attribute if MODE_V1DF.
7144         (*avx_setcc<mode>, *sse_setcc<mode>, *sse5_setcc<mode>): Set
7145         length_immediate to 1.
7146         (set_got_rex64, set_rip_rex64): Remove length attribute, set
7147         length_address to 4, set mode attribute to MODE_DI.
7148         (set_got_offset_rex64): Likewise.  Set length_immediate to 0.
7149         (fxam<mode>2_i387): Set length attribute to 4.
7150         (*prefetch_sse, *prefetch_sse_rex, *prefetch_3dnow,
7151         *prefetch_3dnow_rex): Override length_address attribute.
7152         (sse4_2_crc32<mode>): Override prefix_data16 and prefix_rex
7153         attributes.
7154         * config/i386/predicates.md (ext_QIreg_nomode_operand): New predicate.
7155         (constm128_operand): Removed.
7156         * config/i386/i386.c (memory_address_length): For
7157         disp && !index && !base in 64-bit mode account for SIB byte if
7158         print_operand_address can't optimize disp32 into disp32(%rip)
7159         and UNSPEC doesn't imply (%rip) addressing.  Add 1 to length
7160         for fs: or gs: segment.
7161         (ix86_attr_length_immediate_default): When checking if shortform
7162         is possible, truncate immediate to the length of the non-shortened
7163         immediate.
7164         (ix86_attr_length_address_default): Ignore MEM_P operands
7165         with X constraint.
7166         (ix86_attr_length_vex_default): Only check for DImode on
7167         GENERAL_REG_P operands.
7168         * config/i386/sse.md (<sse>_comi, <sse>_ucomi): Clear
7169         prefix_rep attribute, set prefix_data16 attribute iff MODE_DF.
7170         (sse_cvttps2pi): Clear prefix_rep attribute.
7171         (sse2_cvttps2dq, *sse2_cvtpd2dq, sse2_cvtps2pd): Clear prefix_data16
7172         attribute.
7173         (*sse2_cvttpd2dq): Don't clear prefix_rep attribute.
7174         (*avx_ashr<mode>3, ashr<mode>3, *avx_lshr<mode>3, lshr<mode>3,
7175         *avx_ashl<mode>3, ashl<mode>3): Set length_immediate attribute to 1
7176         iff operand 2 is const_int_operand.
7177         (*vec_dupv4si, avx_shufpd256_1, *avx_shufpd_<mode>,
7178         sse2_shufpd_<mode>): Set length_immediate attribute to 1.
7179         (sse2_pshufd_1): Likewise.  Set prefix attribute to maybe_vex
7180         instead of vex.
7181         (sse2_pshuflw_1, sse2_pshufhw_1): Set length_immediate to 1 and clear
7182         prefix_data16.
7183         (sse2_unpckhpd, sse2_unpcklpd, sse2_storehpd, *vec_concatv2df): Set
7184         prefix_data16 attribute for movlpd and movhpd instructions.
7185         (sse2_loadhpd, sse2_loadlpd, sse2_movsd): Likewise.  Override
7186         length_immediate for shufpd instruction.
7187         (sse2_movntsi, sse3_lddqu): Clear prefix_data16 attribute.
7188         (avx_cmpp<avxmodesuffixf2c><mode>3,
7189         avx_cmps<ssemodesuffixf2c><mode>3, *avx_maskcmp<mode>3,
7190         <sse>_maskcmp<mode>3, <sse>_vmmaskcmp<mode>3,
7191         avx_shufps256_1, *avx_shufps_<mode>, sse_shufps_<mode>,
7192         *vec_dupv4sf_avx, *vec_dupv4sf): Set length_immediate attribute to 1.
7193         (*avx_cvtsi2ssq, *avx_cvtsi2sdq): Set length_vex attribute to 4.
7194         (sse_cvtsi2ssq, sse2_cvtsi2sdq): Set prefix_rex attribute to 1.
7195         (sse2_cvtpi2pd, sse_loadlps, sse2_storelpd): Override
7196         prefix_data16 attribute for the first alternative to 1.
7197         (*avx_loadlps): Override length_immediate for the first alternative.
7198         (*vec_concatv2sf_avx): Override length_immediate and prefix_extra
7199         attributes for second alternative.
7200         (*vec_concatv2sf_sse4_1): Override length_immediate and
7201         prefix_data16 attributes for second alternative.
7202         (*vec_setv4sf_avx, *avx_insertps, vec_extract_lo_<mode>,
7203         vec_extract_hi_<mode>, vec_extract_lo_v16hi,
7204         vec_extract_hi_v16hi, vec_extract_lo_v32qi,
7205         vec_extract_hi_v32qi): Set prefix_extra and length_immediate to 1.
7206         (*vec_setv4sf_sse4_1, sse4_1_insertps, *sse4_1_extractps): Set
7207         prefix_data16 and length_immediate to 1.
7208         (*avx_mulv2siv2di3, *avx_mulv4si3, sse4_2_gtv2di3): Set prefix_extra
7209         to 1.
7210         (*avx_<code><mode>3, *avx_eq<mode>3, *avx_gt<mode>3): Set
7211         prefix_extra attribute for variants that don't have 0f prefix alone.
7212         (*avx_pinsr<ssevecsize>): Likewise.  Set length_immediate to 1.
7213         (*sse4_1_pinsrb, *sse2_pinsrw, *sse4_1_pinsrd, *sse4_1_pextrb,
7214         *sse4_1_pextrb_memory, *sse2_pextrw, *sse4_1_pextrw_memory,
7215         *sse4_1_pextrd): Set length_immediate to 1.
7216         (*sse4_1_pinsrd): Likewise.  Set prefix_extra to 1.
7217         (*sse4_1_pinsrq, *sse4_1_pextrq): Set prefix_rex and length_immediate
7218         to 1.
7219         (*vec_extractv2di_1_rex64_avx, *vec_extractv2di_1_rex64,
7220         *vec_extractv2di_1_avx, *vec_extractv2di_1_sse2): Override
7221         length_immediate to 1 for second alternative.
7222         (*vec_concatv2si_avx, *vec_concatv2di_rex64_avx): Override
7223         prefix_extra and length_immediate attributes for the first
7224         alternative.
7225         (vec_concatv2si_sse4_1): Override length_immediate to 1 for the
7226         first alternative.
7227         (*vec_concatv2di_rex64_sse4_1): Likewise.  Override prefix_rex
7228         to 1 for the first and third alternative.
7229         (*vec_concatv2di_rex64_sse): Override prefix_rex to 1 for the second
7230         alternative.
7231         (*sse2_maskmovdqu, *sse2_maskmovdqu_rex64): Override length_vex
7232         attribute.
7233         (*sse_sfence, sse2_mfence, sse2_lfence): Override length_address
7234         attribute to 0.
7235         (*avx_phaddwv8hi3, *avx_phadddv4si3, *avx_phaddswv8hi3,
7236         *avx_phsubwv8hi3, *avx_phsubdv4si3, *avx_phsubswv8hi,
7237         *avx_pmaddubsw128, *avx_pmulhrswv8hi3, *avx_pshufbv16qi3,
7238         *avx_psign<mode>3): Set prefix_extra attribute to 1.
7239         (ssse3_phaddwv4hi3, ssse3_phadddv2si3, ssse3_phaddswv4hi3,
7240         ssse3_phsubwv4hi3, ssse3_phsubdv2si3, ssse3_phsubswv4hi3,
7241         ssse3_pmaddubsw, *ssse3_pmulhrswv4hi, ssse3_pshufbv8qi3,
7242         ssse3_psign<mode>3): Override prefix_rex attribute.
7243         (*avx_palignrti): Override prefix_extra and length_immediate to 1.
7244         (ssse3_palignrti): Override length_immediate to 1.
7245         (ssse3_palignrdi): Override length_immediate to 1, override
7246         prefix_rex attribute.
7247         (abs<mode>2): Override prefix_rep to 0, override prefix_rex attribute.
7248         (sse4a_extrqi): Override length_immediate to 2.
7249         (sse4a_insertqi): Likewise.  Override prefix_data16 to 0.
7250         (sse4a_insertq): Override prefix_data16 to 0.
7251         (avx_blendp<avxmodesuffixf2c><avxmodesuffix>,
7252         avx_blendvp<avxmodesuffixf2c><avxmodesuffix>,
7253         avx_dpp<avxmodesuffixf2c><avxmodesuffix>, *avx_mpsadbw,
7254         *avx_pblendvb, *avx_pblendw, avx_roundp<avxmodesuffixf2c>256,
7255         avx_rounds<avxmodesuffixf2c>256): Override prefix_extra
7256         and length_immediate to 1.
7257         (sse4_1_blendp<ssemodesuffixf2c>, sse4_1_dpp<ssemodesuffixf2c>,
7258         sse4_2_pcmpestr, sse4_2_pcmpestri, sse4_2_pcmpestrm,
7259         sse4_2_pcmpestr_cconly, sse4_2_pcmpistr, sse4_2_pcmpistri,
7260         sse4_2_pcmpistrm, sse4_2_pcmpistr_cconly): Override prefix_data16
7261         and length_immediate to 1.
7262         (sse4_1_blendvp<ssemodesuffixf2c>): Override prefix_data16 to 1.
7263         (sse4_1_mpsadbw, sse4_1_pblendw): Override length_immediate to 1.
7264         (*avx_packusdw, avx_vtestp<avxmodesuffixf2c><avxmodesuffix>,
7265         avx_ptest256): Override prefix_extra to 1.
7266         (sse4_1_roundp<ssemodesuffixf2c>, sse4_1_rounds<ssemodesuffixf2c>):
7267         Override prefix_data16 and length_immediate to 1.
7268         (sse5_pperm_zero_v16qi_v8hi, sse5_pperm_sign_v16qi_v8hi,
7269         sse5_pperm_zero_v8hi_v4si, sse5_pperm_sign_v8hi_v4si,
7270         sse5_pperm_zero_v4si_v2di, sse5_pperm_sign_v4si_v2di,
7271         sse5_vrotl<mode>3, sse5_ashl<mode>3, sse5_lshl<mode>3): Override
7272         prefix_data16 to 0 and prefix_extra to 2.
7273         (sse5_rotl<mode>3, sse5_rotr<mode>3): Override length_immediate to 1.
7274         (sse5_frcz<mode>2, sse5_vmfrcz<mode>2): Don't override prefix_extra
7275         attribute.
7276         (*sse5_vmmaskcmp<mode>3, sse5_com_tf<mode>3,
7277         sse5_maskcmp<mode>3, sse5_maskcmp<mode>3, sse5_maskcmp_uns<mode>3):
7278         Override prefix_data16 and prefix_rep to 0, length_immediate to 1
7279         and prefix_extra to 2.
7280         (sse5_maskcmp_uns2<mode>3, sse5_pcom_tf<mode>3): Override
7281         prefix_data16 to 0, length_immediate to 1 and prefix_extra to 2.
7282         (*avx_aesenc, *avx_aesenclast, *avx_aesdec, *avx_aesdeclast,
7283         avx_vpermilvar<mode>3,
7284         avx_vbroadcasts<avxmodesuffixf2c><avxmodesuffix>,
7285         avx_vbroadcastss256, avx_vbroadcastf128_p<avxmodesuffixf2c>256,
7286         avx_maskloadp<avxmodesuffixf2c><avxmodesuffix>,
7287         avx_maskstorep<avxmodesuffixf2c><avxmodesuffix>):
7288         Override prefix_extra to 1.
7289         (aeskeygenassist, pclmulqdq): Override length_immediate to 1.
7290         (*vpclmulqdq, avx_vpermil<mode>, avx_vperm2f128<mode>3,
7291         vec_set_lo_<mode>, vec_set_hi_<mode>, vec_set_lo_v16hi,
7292         vec_set_hi_v16hi, vec_set_lo_v32qi, vec_set_hi_v32qi): Override
7293         prefix_extra and length_immediate to 1.
7294         (*avx_vzeroall, avx_vzeroupper, avx_vzeroupper_rex64): Override
7295         modrm to 0.
7296         (*vec_concat<mode>_avx): Override prefix_extra and length_immediate
7297         to 1 for the first alternative.
7298         * config/i386/mmx.md (*mov<mode>_internal_rex64): Override
7299         prefix_rep, prefix_data16 and/or prefix_rex attributes in certain
7300         cases.
7301         (*mov<mode>_internal_avx, *movv2sf_internal_rex64,
7302         *movv2sf_internal_avx, *movv2sf_internal): Override
7303         prefix_rep attribute for certain alternatives.
7304         (*mov<mode>_internal): Override prefix_rep or prefix_data16
7305         attributes for certain alternatives.
7306         (*movv2sf_internal_rex64_avx): Override prefix_rep and length_vex
7307         attributes for certain alternatives.
7308         (*mmx_addv2sf3, *mmx_subv2sf3, *mmx_mulv2sf3,
7309         *mmx_<code>v2sf3_finite, *mmx_<code>v2sf3, mmx_rcpv2sf2,
7310         mmx_rcpit1v2sf3, mmx_rcpit2v2sf3, mmx_rsqrtv2sf2, mmx_rsqit1v2sf3,
7311         mmx_haddv2sf3, mmx_hsubv2sf3, mmx_addsubv2sf3,
7312         *mmx_eqv2sf3, mmx_gtv2sf3, mmx_gev2sf3, mmx_pf2id, mmx_pf2iw,
7313         mmx_pi2fw, mmx_floatv2si2, mmx_pswapdv2sf2, *mmx_pmulhrwv4hi3,
7314         mmx_pswapdv2si2): Set prefix_extra attribute to 1.
7315         (mmx_ashr<mode>3, mmx_lshr<mode>3, mmx_ashl<mode>3): Set
7316         length_immediate to 1 if operand 2 is const_int_operand.
7317         (*mmx_pinsrw, mmx_pextrw, mmx_pshufw_1, *vec_dupv4hi,
7318         *vec_extractv2si_1): Set length_immediate attribute to 1.
7319         (*mmx_uavgv8qi3): Override prefix_extra attribute to 1 if
7320         using old 3DNOW insn rather than SSE/3DNOW_A.
7321         (mmx_emms, mmx_femms): Clear modrm attribute.
7322
7323 2009-05-29  Martin Jambor  <mjambor@suse.cz>
7324
7325         * tree-sra.c:  New implementation of SRA.
7326
7327         * params.def (PARAM_SRA_MAX_STRUCTURE_SIZE): Removed.
7328         (PARAM_SRA_MAX_STRUCTURE_COUNT): Removed.
7329         (PARAM_SRA_FIELD_STRUCTURE_RATIO): Removed.
7330         * params.h (SRA_MAX_STRUCTURE_SIZE): Removed.
7331         (SRA_MAX_STRUCTURE_COUNT): Removed.
7332         (SRA_FIELD_STRUCTURE_RATIO): Removed.
7333         * doc/invoke.texi (sra-max-structure-size): Removed.
7334         (sra-field-structure-ratio): Removed.
7335
7336 2009-05-29  Jakub Jelinek  <jakub@redhat.com>
7337
7338         PR middle-end/40291
7339         * builtins.c (expand_builtin_memcmp): Convert len to sizetype
7340         before expansion.
7341
7342 2009-05-29  Andrey Belevantsev  <abel@ispras.ru>
7343
7344         PR rtl-optimization/40101
7345         * sel-sched-ir.c (get_seqno_by_preds): Allow returning negative
7346         seqno.  Adjust comment.
7347         * sel-sched.c (find_seqno_for_bookkeeping): Assert that when 
7348         inserting bookkeeping before a jump, the jump is not scheduled.
7349         When no positive seqno found, provide a value.  Add comment.
7350
7351 2009-05-29  Richard Guenther  <rguenther@suse.de>
7352
7353         * tree-ssa-alias.c (nonaliasing_component_refs_p): Remove
7354         short-cutting on the first component.
7355
7356 2009-05-29  Jakub Jelinek  <jakub@redhat.com>
7357
7358         PR middle-end/39958
7359         * omp-low.c (scan_omp_1_op): Call remap_type on TREE_TYPE
7360         for trees other than decls/types.
7361
7362 2009-05-29  Richard Guenther  <rguenther@suse.de>
7363
7364         * tree-ssa-operands.c (get_expr_operands): Do not handle
7365         INDIRECT_REFs in the handled-component case.  Remove
7366         unused get_ref_base_and_extent case.
7367         * tree-dfa.c (get_ref_base_and_extent): Avoid calling
7368         tree_low_cst and host_integerp where possible.
7369         * tree-ssa-structalias.c (equiv_class_label_eq): Check hash
7370         codes for equivalence.
7371         * dce.c (find_call_stack_args): Avoid redundant bitmap queries.
7372
7373 2009-05-29  David Billinghurst <billingd@gcc.gnu.org>
7374
7375         * config.gcc: Add i386/t-fprules-softfp and soft-fp/t-softfp
7376         to tmake_file for i[34567]86-*-cygwin*. 
7377
7378 2009-05-29  Jakub Jelinek  <jakub@redhat.com>
7379
7380         PR target/40017
7381         * config/rs6000/rs6000-c.c (_Bool_keyword): New variable.
7382         (altivec_categorize_keyword, init_vector_keywords,
7383         rs6000_cpu_cpp_builtins): Define _Bool as conditional macro
7384         similar to bool.
7385
7386 2009-05-29  Kai Tietz  <kai.tietz@onevision.com>
7387
7388         * tree.c (handle_dll_attribute): Check if node is
7389         of kind FUNCTION_DECL for DECL_DECLARED_INLINE_P check.
7390
7391 2009-05-29  Richard Earnshaw  <rearnsha@arm.com>
7392
7393         * config/arm/thumb2.md (thumb2_zero_extendsidi2): Add a split
7394         component.
7395         (thumb2_zero_extendqidi2): Likewise.
7396
7397 2009-05-28  Kaz Kojima  <kkojima@gcc.gnu.org>
7398
7399         * config/sh/sh.c (sh_expand_t_scc): Use gen_xorsi3_movrt
7400         instead of gen_movrt.
7401         * config/sh/sh.md (movrt): Remove.
7402
7403 2009-05-28  Steve Ellcey  <sje@cup.hp.com>
7404
7405         * doc/invoke.texi (IA-64 Options):
7406         Add -msdata, -mfused-madd, -mno-inline-float-divide, 
7407         -mno-inline-int-divide, -mno-inline-sqrt, -msched-spec-ldc,
7408         -msched-spec-control-ldc, -msched-prefer-non-data-spec-insns,
7409         -msched-prefer-non-control-spec-insns,
7410         -msched-stop-bits-after-every-cycle,
7411         -msched-count-spec-in-critical-path,
7412         -msel-sched-dont-check-control-spec, -msched-fp-mem-deps-zero-cost
7413         -msched-max-memory-insns-hard-limit, -msched-max-memory-insns.
7414         Remove -mt, -pthread, -msched-ldc, -mno-sched-control-ldc,
7415         and -msched-spec-verbose.
7416
7417 2009-05-28  Joseph Myers  <joseph@codesourcery.com>
7418
7419         * config/arm/lib1funcs.asm (__clear_cache): Define if L_clear_cache.
7420         * config/arm/linux-eabi.h (CLEAR_INSN_CACHE): Define to give an
7421         error if used.
7422         * config/arm/t-linux-eabi (LIB1ASMFUNCS): Add _clear_cache.
7423
7424 2009-05-28  Richard Guenther  <rguenther@suse.de>
7425
7426         * tree-ssa-alias.c (ao_ref_init): New function.
7427         (ao_ref_base): Likewise.
7428         (ao_ref_base_alias_set): Likewise.
7429         (ao_ref_alias_set): Likewise.
7430         (refs_may_alias_p_1): Change signature.
7431         (refs_may_alias_p): Adjust.
7432         (refs_anti_dependent_p): Likewise.
7433         (refs_output_dependent_p): Likewise.
7434         (call_may_clobber_ref_p_1): Change signature.
7435         (call_may_clobber_ref_p): Adjust.
7436         (stmt_may_clobber_ref_p_1): New function split out from ...
7437         (stmt_may_clobber_ref_p): ... here.
7438         (maybe_skip_until): Adjust signature.
7439         (get_continuation_for_phi): Likewise.
7440         (walk_non_aliased_vuses): Likewise.
7441         * tree-ssa-alias.h (struct ao_ref_s): New structure type.
7442         (ao_ref_init): Declare.
7443         (ao_ref_base): Likewise.
7444         (ao_ref_alias_set): Likewise.
7445         (stmt_may_clobber_ref_p_1): Likewise.
7446         (walk_non_aliased_vuses): Adjust.
7447         * tree-ssa-sccvn.c (ao_ref_init_from_vn_reference): New function.
7448         (get_ref_from_reference_ops): remove.
7449         (vn_reference_lookup_2): Adjust signature.
7450         (vn_reference_lookup_3): Do not re-build trees.  Handle unions.
7451         (vn_reference_lookup_pieces): Adjust signature, do not re-build trees.
7452         (vn_reference_lookup): Adjust.
7453         (vn_reference_insert): Likewise.
7454         (vn_reference_insert_pieces): Adjust signature.
7455         (visit_reference_op_call): Adjust.
7456         * tree-ssa-pre.c (get_expr_type): Simplify.
7457         (phi_translate_1): Adjust.
7458         (compute_avail): Likewise.
7459         (translate_vuse_through_block): Do not re-build trees.
7460         (value_dies_in_block_x): Likewise.
7461         * tree-ssa-sccvn.h (struct vn_reference_s): Add type and alias-set
7462         fields.
7463         (vn_reference_lookup_pieces): Adjust declaration.
7464         (vn_reference_insert_pieces): Likewise.
7465
7466 2009-05-28  Benjamin Kosnik  <bkoz@redhat.com>
7467
7468         * tree-ssa-copy.c (replace_exp_1): Move op for warning-free use
7469         with checking disabled.
7470
7471 2009-05-28  Dave Korn  <dave.korn.cygwin@gmail.com>
7472
7473         PR target/37216
7474
7475         * configure.ac (HAVE_GAS_ALIGNED_COMM):  Add autoconf test and
7476         macro definition for support of three-operand format aligned
7477         .comm directive in assembler on cygwin/pe/mingw target OS.
7478         * configure:  Regenerate.
7479         * config.h:  Regenerate.
7480
7481         * config/i386/winnt.c (i386_pe_asm_output_aligned_decl_common):  Use
7482         aligned form of .comm directive if -mpe-aligned-commons is in effect.
7483         * config/i386/cygming.opt (-mpe-aligned-commons):  Add new option.
7484
7485         * doc/invoke.texi (-mpe-aligned-commons):  Document new target option.
7486         * doc/tm.texi (ASM_OUTPUT_COMMON):  Document zero size commons.
7487
7488 2009-05-28  Ira Rosen  <irar@il.ibm.com>
7489
7490         PR tree-optimization/40254
7491         * tree-data-ref.c (dr_analyze_innermost): Take POFFSET into account
7492         in analysis of basic blocks.
7493
7494 2009-05-28  Adam Nemet  <anemet@caviumnetworks.com>
7495
7496         PR middle-end/33699
7497         * target.h (struct gcc_target): Fix indentation.  Add const_anchor.
7498         * target-def.h (TARGET_CONST_ANCHOR): New macro.
7499         (TARGET_INITIALIZER): Use it.
7500         * cse.c (CHEAPER): Move it up to the other macros.
7501         (insert): Rename this ...
7502         (insert_with_costs): ... to this.  Add cost parameters.  Update
7503         function comment.
7504         (insert): New function.  Call insert_with_costs.
7505         (compute_const_anchors, insert_const_anchor, insert_const_anchors,
7506         find_reg_offset_for_const, try_const_anchors): New functions.
7507         (cse_insn): Call try_const_anchors.  Adjust cost of src_related
7508         when using a const-anchor.  Call insert_const_anchors.
7509         * config/mips/mips.c (mips_set_mips16_mode): Set targetm.const_anchor.
7510         * doc/tm.texi (Misc): Document TARGET_CONST_ANCHOR.
7511
7512 2009-05-28  Alexandre Oliva  <aoliva@redhat.com>
7513
7514         * tree-inline.c (remap_decls): Enable nonlocalized variables
7515         when not optimizing.
7516
7517 2009-05-28  Alexandre Oliva  <aoliva@redhat.com>
7518
7519         * tree-ssa-live.c (remove_unused_locals): Skip when not optimizing.
7520         Simplify other tests involving optimize.
7521
7522 2009-05-27  Tom Tromey  <tromey@redhat.com>
7523
7524         * unwind-dw2.c (_Unwind_DebugHook): New function.
7525         (uw_install_context): Call _Unwind_DebugHook.
7526
7527 2009-05-27  Tom Tromey  <tromey@redhat.com>
7528
7529         * system.h (CONST_CAST2): Use C++ const_cast when compiled as C++
7530
7531 2009-05-27  Ian Lance Taylor  <iant@google.com>
7532
7533         * Makefile.in (LINKER, LINKER_FLAGS): Define.
7534         (LINKER_FOR_BUILD, BUILD_LINKERFLAGS): Define.
7535         (ALL_LINKERFLAGS): Define.
7536         (xgcc$(exeext)): Change $(COMPILER) to $(LINKER).
7537         (cpp$(exeext), cc1-dummy$(exeext), cc1$(exeext)): Likewise.
7538         (collect2$(exeext), mips-tfile, mips-tdump): Likewise.
7539         (gcov$(exeext), gcov-dump$(exeext)): Likewise.
7540         (build/gen%$(build_exeext)): Change $(COMPILER_FOR_BUILD) to
7541         $(LINKER_FOR_BUILD).
7542         (build/gcov-iov$(build_exeext)): Likewise.
7543
7544 2009-05-27  Julian Brown  <julian@codesourcery.com>
7545
7546         * gcse.c (target.h): Include.
7547         (can_assign_to_reg_without_clobbers_p): Check that the target allows
7548         copy of argument to a pseudo register.
7549
7550 2009-05-27  Diego Novillo  <dnovillo@google.com>
7551
7552         * tree-ssa-live.c (dump_scope_block): Document arguments.
7553         (dump_scope_blocks): Document.
7554         (debug_scope_blocks): New.
7555         * tree-flow.h (debug_scope_blocks): Declare.
7556
7557 2009-05-21  Denis Chertykov  <denisc@overta.ru>
7558
7559         * doc/contrib.texi (Contributors): Add myself to the list.
7560
7561 2009-05-27  Olivier Hainque  <hainque@adacore.com>
7562
7563         * expr.c (target_align): New function.  Alignment the TARGET of an
7564         assignment may be assume to have.
7565         (highest_pow2_factor_for_target): Use it instead of relying on
7566         immediate tree attributes of TARGET, not necessarily honored when
7567         intermediate bitfields are involved.
7568         
7569 2009-05-27  H.J. Lu  <hongjiu.lu@intel.com>
7570
7571         PR target/40266
7572         * config/i386/driver-i386.c (host_detect_local_cpu): Support
7573         AVX, SSE4, AES, PCLMUL and POPCNT.
7574
7575 2009-05-27  Diego Novillo  <dnovillo@google.com>
7576
7577         * tree-pretty-print.c (dump_location): New.
7578         (dump_generic_node): Call it.
7579         Factor code to handle BLOCK nodes ...
7580         (dump_block_node): ... here.
7581
7582 2009-05-27  Rafael Avila de Espindola  <espindola@google.com>
7583
7584         * Makefile.in (GCC_PLUGIN_H): New. Replace all uses of gcc-plugin.h
7585         with it.
7586         * doc/plugins.texi: Document that gcc-plugin.h must be the first to be
7587         included.
7588         * gcc-plugin.h: Include config.h and system.h.
7589         (IN_GCC): Define if not defined.
7590
7591 2009-05-27  Hans-Peter Nilsson  <hp@axis.com>
7592
7593         PR middle-end/40249
7594         * Makefile.in (CRTSTUFF_CFLAGS): Replace -fno-inline-functions
7595         with -fno-inline.
7596
7597 2009-05-27  Shujing Zhao  <pearly.zhao@oracle.com>
7598
7599         * config/m32r/m32r.c: Use REG_P, MEM_P and CONST_INT_P where
7600         applicable.
7601         * config/m32r/m32r.h: Ditto.
7602         * config/m32r/m32r.md: Ditto.
7603         * config/m32r/predicates.md: Ditto.
7604
7605 2009-05-27  Alexandre Oliva  <aoliva@redhat.com>
7606
7607         * cgraph.c (dump_cgraph_node): Honor -fdump-noaddr.
7608
7609 2009-05-26  Basile Starynkevitch  <basile@starynkevitch.net>
7610
7611         * doc/plugins.texi
7612         (Loading plugins): typo.
7613         (Plugin callbacks): Documented PLUGIN_INFO, PLUGIN_GGC_START,
7614         PLUGIN_GGC_MARKING, PLUGIN_GGC_END, PLUGIN_REGISTER_GGC_ROOTS.
7615         (Interacting with the GCC Garbage Collector): Added new section.
7616         (Giving information about a plugin): Added new section for
7617         PLUGIN_INFO.
7618         * ggc.h (ggc_register_root_tab): Added declaration.
7619         * gcc-plugin.h (PLUGIN_GGC_START, PLUGIN_GGC_MARKING)
7620         (PLUGIN_GGC_END, PLUGIN_REGISTER_GGC_ROOTS): Added new events.
7621         (register_callback): Improved comment in declaration.
7622         * ggc-common.c (const_ggc_root_tab_t) Added new typedef for vectors.
7623         (extra_root_vec) Added static variable for dynamic roots registration.
7624         (ggc_register_root_tab) Added new routine.
7625         (ggc_mark_roots) Added iteration inside extra_root_vec, and invoke
7626         PLUGIN_GGC_MARKING event.
7627         * ggc-zone.c: Include plugin.h.
7628         (ggc_collect): Invoke PLUGIN_GGC_START & PLUGIN_GGC_END events.
7629         * ggc-page.c: Include plugin.h.
7630         (ggc_collect): Invoke PLUGIN_GGC_START & PLUGIN_GGC_END events.
7631         * plugin.c (plugin_event_name): added names of PLUGIN_GGC_START,
7632         PLUGIN_GGC_MARKING, PLUGIN_GGC_END, PLUGIN_REGISTER_GGC_ROOTS
7633         (register_callback): check lack of callbacks for
7634         pseudo-events. Added handling of PLUGIN_REGISTER_GGC_ROOTS,
7635         PLUGIN_GGC_START, PLUGIN_GGC_MARKING, PLUGIN_GGC_END.
7636         (invoke_plugin_callbacks): Handle PLUGIN_GGC_START,
7637         PLUGIN_GGC_MARKING, PLUGIN_GGC_END, PLUGIN_REGISTER_GGC_ROOTS.
7638         * Makefile.in (ggc-common.o, ggc-zone.o, ggc-page.o): Added
7639         dependency on plugin.h.
7640         (plugin.o): Added dependency on ggc.h...
7641
7642 2009-05-26  Richard Guenther  <rguenther@suse.de>
7643
7644         PR middle-end/40248
7645         Revert
7646         * expr.c (expand_expr_real_1): Avoid calling do_store_flag
7647         with mismatched comparison modes.
7648
7649         * expr.c (expand_expr_real_1): Expand the operand of a
7650         VIEW_CONVERT_EXPR in its natural mode.
7651
7652 2009-05-26  Ian Lance Taylor  <iant@google.com>
7653
7654         * Makefile.in (COMPILER, COMPILER_FLAGS): Define.
7655         (COMPILER_FOR_BUILD, BUILD_COMPILERFLAGS): Define.
7656         (ALL_COMPILERFLAGS): Define.
7657         (.c.o, xgcc$(exeext), cpp$(exeext)): Use $(COMPILER).
7658         (cc1-dummy$(exeext), cc1$(exeext)): Likewise.
7659         (collect2$(exeext), collect2.o): Likewise.
7660         (c-opts.o, c-cppbuiltin.o, c-pch.o, gcc.o, gccspec.o): Likewise.
7661         (gcc-options.o, version.o, prefix.o, toplev.o): Likewise.
7662         ($(out_object_file), mips-tfile, mips-tdump): Likewise.
7663         (libbackend.o, intl.o, cppdefault.o): Likewise.
7664         (gcov$(exeext), gcov-dump$(exeext)): Likewise.
7665         (build/%.o): Use $(COMPILER_FOR_BUILD).
7666         (build/gen%$(build_exeext)): Likewise.
7667         (build/gcov-iov$(build_exeext)): LIkewise.
7668         * config/t-darwin (darwin.o): Use $(COMPILER).
7669         (darwin-c.o, darwin-f.o, darwin-driver.o): Likewise.
7670         * config/t-sol2 (sol2-c.o): Likewise.
7671         (sol2.o): Likewise.
7672         * config/t-vxworks (vxworks.o): Likewise.
7673         * config/x-darwin (host-darwin.o): Likewise.
7674         * config/x-hpux (host-hpux.o): Likewise.
7675         * config/x-linux (host-linux.o): Likewise.
7676         * config/x-solaris (host-solaris.o): Likewise.
7677         * config/alpha/x-alpha (driver-alpha.o): Likewise.
7678         * config/arm/t-arm (arm-c.o): Likewise.
7679         * config/arm/t-pe (pe.o): Likewise.
7680         * config/arm/t-wince-pe (pe.o): Likewise.
7681         * config/i386/t-cygming (winnt.o): Likewise.
7682         (winnt-cxx.o, winnt-stubs.o, msformat-c.o): Likewise.
7683         * config/i386/t-cygwin (cygwin1.o): Likewise.
7684         (cygwin2.o): Likewise.
7685         * config/i386/t-i386 (i386-c.o): Likewise.
7686         * config/i386/t-interix (winnt.o): Likewise.
7687         * config/i386/t-netware (netware.o): Likewise.
7688         * config/i386/t-nwld (nwld.o): Likewise.
7689         * config/i386/x-darwin (host-i386-darwin.o): Likewise.
7690         * config/i386/x-i386 (driver-i386.o): Likewise.
7691         * config/i386/x-cygwin (host-cygwin.o): Likewise.
7692         * config/i386/x-mingw32 (host-mingw32.o): Likewise.
7693         * config/ia64/t-ia64 (ia64-c.o): Likewise.
7694         * config/m32c/t-m32c (m32c-pragma.o): Likewise.
7695         * config/mips/x-native (driver-native.o): Likewise.
7696         * config/rs6000/t-rs6000 (rs6000-c.o): Likewise.
7697         * config/rs6000/x-darwin (host-ppc-darwin.o): Likewise.
7698         * config/rs6000/x-darwin64 (host-ppc64-darwin.o): Likewise.
7699         * config/rs6000/x-rs6000 (driver-rs6000.o): Likewise.
7700         * config/score/t-score-elf (score7.o): Likewise.
7701         (score3.o): Likewise.
7702         * config/sh/t-sh (sh-c.o): Likewise.
7703         * config/sh/t-symbian (sh-c.o): Likewise.
7704         (symbian.o): Likewise.
7705         * config/spu/t-spu-elf (spu-c.o): Likewise.
7706         * config/v850/t-v850 (v850-c.o): Likewise.
7707         * config/v850/t-v850e (v850-c.o): Likewise.
7708
7709 2009-05-26  Richard Guenther  <rguenther@suse.de>
7710
7711         PR tree-optimization/40122
7712         * tree-ssa-ccp.c (ccp_fold): Fold vector CONSTRUCTORs to
7713         VECTOR_CSTs if possible.
7714         (fold_gimple_assign): Likewise.
7715
7716 2009-05-26  Richard Guenther  <rguenther@suse.de>
7717
7718         PR middle-end/40252
7719         * fold-const.c (fold_binary): Use the correct types for building
7720         rotates.
7721
7722 2009-05-26  Richard Guenther  <rguenther@suse.de>
7723
7724         * tree-vect-data-refs.c (vect_create_data_ref_ptr): Remove
7725         redundant calls to merge_alias_info.
7726         (bump_vector_ptr): Likewise.
7727         * tree-ssa-copy.c (merge_alias_info): Remove.
7728         (replace_exp_1): Remove call to merge_alias_info.
7729         (propagate_tree_value): Likewise.
7730         (fini_copy_prop): Propagate points-to info.
7731         * tree-flow.h (merge_alias_info): Remove.
7732
7733 2009-05-07  Hariharan Sandanagobalane <hariharan@picochip.com>
7734
7735         * config/picochip/picochip.C (PARAM_INLINE_CALL_COST): Remove.
7736
7737 2009-05-25  Jan Hubicka  <jh@suse.cz>
7738
7739         * cgraph.c (dump_cgraph_node): Dump size/time/benefit.
7740         * cgraph.h (struct inline_summary): New filed self_wize,
7741         size_inlining_benefit, self_time and time_inlining_benefit.
7742         (struct cgraph_global_info): Replace insns by time ans size fields.
7743         * ipa-cp (ipcp_cloning_candidate_p): Base estimate on size
7744         (ipcp_estimate_growth, ipcp_insert_stage): Likewise.
7745         (ipcp_update_callgraph): Do not touch function bodies.
7746         * ipa-inline.c: Include except.h
7747         (MAX_TIME): New constant.
7748         (overall_insns): Remove.
7749         (leaf_node_p): New.
7750         (overall_size, max_benefit): New static variables.
7751         (cgraph_estimate_time_after_inlining): New function.
7752         (cgraph_estimate_size_after_inlining): Rewrite using benefits.
7753         (cgraph_clone_inlined_nodes): Update size.
7754         (cgraph_mark_inline_edge): Update size.
7755         (cgraph_estimate_growth): Use size info.
7756         (cgraph_check_inline_limits): Check size.
7757         (cgraph_default_inline_p): Likewise.
7758         (cgraph_edge_badness): Compute badness based on benefit and size cost.
7759         (cgraph_decide_recursive_inlining): Check size.
7760         (cgraph_decide_inlining_of_small_function): Update size; dump sizes
7761         and times.
7762         (cgraph_decide_inlining): Likewise.
7763         (cgraph_decide_inlining_incrementally): Likewise; honor
7764         PARAM_EARLY_INLINING_INSNS.
7765         (likely_eliminated_by_inlining_p): New predicate.
7766         (estimate_function_body_sizes): New function.
7767         (compute_inline_parameters): Use it.
7768         * except.c (must_not_throw_labels): New function.
7769         * except.h (must_not_throw_labels): Declare.
7770         * tree-inline.c (init_inline_once): Kill inlining_weigths
7771         * tree-ssa-structalias.c: Avoid uninitialized warning.
7772         * params.def (PARAM_MAX_INLINE_INSNS_SINGLE): Reduce to 300.
7773         (PARAM_MAX_INLINE_INSNS_AUTO): Reduce to 60.
7774         (PARAM_INLINE_CALL_COST): Remove.
7775         (PARAM_EARLY_INLINING_INSNS): New.
7776
7777 2009-05-25  Richard Guenther  <rguenther@suse.de>
7778
7779         PR tree-optimization/36327
7780         * tree-ssa-alias.c (walk_non_aliased_vuses): Add second walker
7781         callback for reference translation or lookup at the point of may-defs.
7782         * tree-ssa-alias.h (walk_non_aliased_vuses): Adjust prototype.
7783         * tree-ssa-sccvn.c (get_ref_from_reference_ops): Bail out
7784         for union COMPONENT_REFs.
7785         (vn_reference_lookup_3): New callback.  Lookup from memset
7786         and CONSTRUCTOR assignment, translate through struct copies.
7787         (vn_reference_lookup_pieces): Make sure to not free the
7788         passed operands array.  Adjust walk_non_aliased_vuses call.
7789         (vn_reference_lookup): Adjust walk_non_aliased_vuses call,
7790         make sure we do not leak memory.
7791
7792 2009-05-25  Richard Guenther  <rguenther@suse.de>
7793
7794         * tree-ssa-alias.h (dump_points_to_solution): Declare.
7795         * tree-inline.c (expand_call_inline): Reset the escaped and
7796         callused solutions.
7797         * tree-ssa-structalias.c (pass_build_ealias): New.
7798         * tree-pass.h (pass_build_ealias): Declare.
7799         * passes.c (init_optimization_passes): Add PTA during 
7800         early optimizations.
7801         * tree-ssa-alias.c (dump_alias_info): Dump the ESCAPED
7802         and CALLUSED solutions.
7803         (dump_points_to_solution): New function, split out from ...
7804         (dump_points_to_info_for): ... here.
7805         * tree-parloops.c (parallelize_loops): Reset the escaped and
7806         callused solutions.
7807
7808 2009-05-25  Rainer Orth  <ro@TechFak.Uni-Bielefeld.DE>
7809
7810         PR bootstrap/40027
7811         * config/i386/i386.c (USE_HIDDEN_LINKONCE): Only define if missing.
7812         * config/i386/sol2.h [!TARGET_GNU_LD] (USE_HIDDEN_LINKONCE): Define.
7813
7814 2009-05-25  Ira Rosen  <irar@il.ibm.com>
7815
7816         PR tree-optimization/40238
7817         * tree-vect-stmts.c (vect_init_vector): Insert initialization
7818         statements after basic block's labels.
7819         * tree-vect-slp.c (vect_slp_transform_bb): Call destroy_bb_vec_info() 
7820         to free the allocated memory.
7821
7822 2009-05-24  Kaz Kojima  <kkojima@gcc.gnu.org>
7823
7824         * gcc/config/sh/sh.c (sh_set_return_address): Mark store of
7825         return address with a USE.
7826
7827 2009-05-24  Richard Guenther  <rguenther@suse.de>
7828
7829         PR middle-end/40233
7830         * tree.c (make_vector_type): Build the TYPE_DEBUG_REPRESENTATION_TYPEs
7831         array type from the main variant of the inner type.
7832
7833 2009-05-24  Jan-Benedict Glaw  <jbglaw@lug-owl.de>
7834
7835         * config/vax/vax-protos.h (legitimate_constant_address_p): Change
7836         definition to bool (from int) to un-break build.
7837         (legitimate_constant_p, vax_mode_dependent_address_p): Likewise.
7838
7839 2009-05-24  Paolo Bonzini  <bonzini@gnu.org>
7840
7841         * tree-ssa-operands.h (push_stmt_changes, pop_stmt_changes,
7842         discard_stmt_changes): Delete.
7843         * tree-ssa-operands.c (scb_stack): Delete.
7844         (init_ssa_operands): Do not initialize it.
7845         (fini_ssa_operands): Do not free it.
7846         (push_stmt_changes, pop_stmt_changes, discard_stmt_changes): Delete.
7847
7848         * tree-cfg.c (replace_uses_by): Replace pop_stmt_changes with 
7849         update_stmt, remove the others.  Fix comments.
7850         * tree-dfa.c (optimize_stack_restore): Likewise.
7851         * tree-ssa-forwprop.c (forward_propagate_addr_expr): Likewise.
7852         * tree-ssa-loop-ivopts.c (rewrite_use): Likewise.
7853         * tree-ssa-dce.c (eliminate_unnecessary_stmts): Likewise.
7854         * tree-ssa-ccp.c (optimize_stack_restore, execute_fold_all_builtins):
7855         Likewise.
7856         * tree-ssa-propagate.c (substitute_and_fold): Likewise.
7857         * tree-ssa-dom.c (propagate_rhs_into_lhs): Likewise.
7858         (dom_opt_finalize_block): Likewise, adjusting access to
7859         stmts_to_rescan.
7860         (optimize_stmt): Likewise, adjusting access to stmts_to_rescan.
7861         (stmts_to_rescan): Change item type to gimple.
7862         (tree_ssa_dominator_optimize): Change type of stmts_to_rescan.
7863
7864 2009-05-24  Ira Rosen  <irar@il.ibm.com>
7865
7866         * doc/passes.texi (Tree-SSA passes): Document SLP pass.
7867         * tree-pass.h (pass_slp_vectorize): New pass.
7868         * params.h (SLP_MAX_INSNS_IN_BB): Define.
7869         * timevar.def (TV_TREE_SLP_VECTORIZATION): Define.
7870         * tree-vectorizer.c (timevar.h): Include.
7871         (user_vect_verbosity_level): Declare.
7872         (vect_location): Fix comment.
7873         (vect_set_verbosity_level): Update user_vect_verbosity_level
7874         instead of vect_verbosity_level.
7875         (vect_set_dump_settings): Add an argument. Ignore user defined
7876         verbosity if dump flags require higher level of verbosity. Print to
7877         stderr only for loop vectorization.
7878         (vectorize_loops): Update call to vect_set_dump_settings.
7879         (execute_vect_slp): New function.
7880         (gate_vect_slp): Likewise.
7881         (struct gimple_opt_pass pass_slp_vectorize): New.
7882         * tree-vectorizer.h (struct _bb_vec_info): Define along macros to
7883         access its members.
7884         (vec_info_for_bb): New function.
7885         (struct _stmt_vec_info): Add bb_vinfo and a macro for its access.
7886         (VECTORIZATION_ENABLED): New macro.
7887         (SLP_ENABLED, SLP_DISABLED): Likewise.
7888         (vect_is_simple_use): Add bb_vec_info argument.
7889         (new_stmt_vec_info, vect_analyze_data_ref_dependences,
7890         vect_analyze_data_refs_alignment, vect_verify_datarefs_alignment,
7891         vect_analyze_data_ref_accesses, vect_analyze_data_refs,
7892         vect_schedule_slp, vect_analyze_slp): Likewise.
7893         (vect_analyze_stmt): Add slp_tree argument.
7894         (find_bb_location): Declare.
7895         (vect_slp_analyze_bb, vect_slp_transform_bb): Likewise.
7896         * tree-vect-loop.c (new_loop_vec_info): Adjust function calls.
7897         (vect_analyze_loop_operations, vect_analyze_loop,
7898         get_initial_def_for_induction, vect_create_epilog_for_reduction,
7899         vect_finalize_reduction, vectorizable_reduction,
7900         vectorizable_live_operation, vect_transform_loop): Likewise.
7901         * tree-data-ref.c (dr_analyze_innermost): Update comment,
7902         skip evolution analysis if analyzing a basic block.
7903         (dr_analyze_indices): Likewise.
7904         (initialize_data_dependence_relation): Skip the test whether the
7905         object is invariant for basic blocks.
7906         (compute_all_dependences): Skip dependence analysis for data
7907         references in basic blocks.
7908         (find_data_references_in_stmt): Don't fail in case of invariant
7909         access in basic block.
7910         (find_data_references_in_bb): New function.
7911         (find_data_references_in_loop): Move code to
7912         find_data_references_in_bb and add a call to it.
7913         (compute_data_dependences_for_bb): New function.
7914         * tree-data-ref.h (compute_data_dependences_for_bb): Declare.
7915         * tree-vect-data-refs.c (vect_check_interleaving): Adjust to the case
7916         that STEP is 0.
7917         (vect_analyze_data_ref_dependence): Check for interleaving in case of
7918         unknown dependence in basic block and fail in case of dependence in
7919         basic block.
7920         (vect_analyze_data_ref_dependences): Add bb_vinfo argument, get data
7921         dependence instances from either loop or basic block vectorization
7922         info.
7923         (vect_compute_data_ref_alignment): Check if it is loop vectorization
7924         before calling nested_in_vect_loop_p.
7925         (vect_compute_data_refs_alignment): Add bb_vinfo argument, get data
7926         dependence instances from either loop or basic block vectorization
7927         info.
7928         (vect_verify_datarefs_alignment): Likewise.
7929         (vect_enhance_data_refs_alignment): Adjust function calls.
7930         (vect_analyze_data_refs_alignment): Likewise.
7931         (vect_analyze_group_access): Fix printing. Skip different checks if
7932         DR_STEP is 0. Keep strided stores either in loop or basic block
7933         vectorization data structure. Fix indentation.
7934         (vect_analyze_data_ref_access): Fix comments, allow zero step in
7935         basic blocks.
7936         (vect_analyze_data_ref_accesses): Add bb_vinfo argument, get data
7937         dependence instances from either loop or basic block vectorization
7938         info.
7939         (vect_analyze_data_refs): Update comment. Call
7940         compute_data_dependences_for_bb to analyze basic blocks.
7941         (vect_create_addr_base_for_vector_ref): Check for outer loop only in
7942         case of loop vectorization. In case of basic block vectorization use
7943         data-ref itself as a base.
7944         (vect_create_data_ref_ptr): In case of basic block vectorization:
7945         don't advance the pointer, add new statements before the current
7946         statement.  Adjust function calls.
7947         (vect_supportable_dr_alignment): Support only aligned accesses in
7948         basic block vectorization.
7949         * common.opt (ftree-slp-vectorize): New flag.
7950         * tree-vect-patterns.c (widened_name_p): Adjust function calls.
7951         (vect_pattern_recog_1): Likewise.
7952         * tree-vect-stmts.c (process_use): Likewise.
7953         (vect_init_vector): Add new statements in the beginning of the basic
7954         block in case of basic block SLP.
7955         (vect_get_vec_def_for_operand): Adjust function calls.
7956         (vect_finish_stmt_generation): Likewise.
7957         (vectorizable_call): Add assert that it is loop vectorization, adjust
7958         function calls.
7959         (vectorizable_conversion, vectorizable_assignment): Likewise.
7960         (vectorizable_operation): In case of basic block SLP, take
7961         vectorization factor from statement's type and skip the relevance
7962         check. Adjust function calls.
7963         (vectorizable_type_demotion): Add assert that it is loop
7964         vectorization, adjust function calls.
7965         (vectorizable_type_promotion): Likewise.
7966         (vectorizable_store): Check for outer loop only in case of loop
7967         vectorization. Adjust function calls. For basic blocks, skip the
7968         relevance check and don't advance pointers.
7969         (vectorizable_load): Likewise.
7970         (vectorizable_condition): Add assert that it is loop vectorization,
7971         adjust function calls.
7972         (vect_analyze_stmt): Add argument. In case of basic block SLP, check
7973         that it is not reduction, get vector type, call only supported
7974         functions, skip loop specific parts.
7975         (vect_transform_stmt): Check for outer loop only in case of loop
7976         vectorization.
7977         (new_stmt_vec_info): Add new argument and initialize bb_vinfo.
7978         (vect_is_simple_use): Fix comment, add new argument, fix conditions
7979         for external definition.
7980         * passes.c (pass_slp_vectorize): New pass.
7981         * tree-vect-slp.c (find_bb_location): New function.
7982         (vect_get_and_check_slp_defs): Add argument, adjust function calls,
7983         check for patterns only in loops.
7984         (vect_build_slp_tree): Add argument, adjust function calls, fail in
7985         case of multiple types in basic block SLP.
7986         (vect_mark_slp_stmts_relevant): New function.
7987         (vect_supported_load_permutation_p): Fix comment.
7988         (vect_analyze_slp_instance): Add argument. In case of basic block
7989         SLP, take vectorization factor from statement's type, check that
7990         unrolling factor is 1. Adjust function call. Save SLP instance in
7991         either loop or basic block vectorization structure. Return FALSE,
7992         if SLP failed.
7993         (vect_analyze_slp): Add argument. Get strided stores groups from
7994         either loop or basic block vectorization structure. Return FALSE
7995         if basic block SLP failed.
7996         (new_bb_vec_info): New function.
7997         (destroy_bb_vec_info, vect_slp_analyze_node_operations,
7998         vect_slp_analyze_operations, vect_slp_analyze_bb): Likewise.
7999         (vect_schedule_slp): Add argument. Get SLP instances from either
8000         loop or basic block vectorization structure. Set vectorization factor
8001         to be 1 for basic block SLP.
8002         (vect_slp_transform_bb): New function.
8003         * params.def (PARAM_SLP_MAX_INSNS_IN_BB): Define.
8004
8005 2009-05-23  Mark Mitchell  <mark@codesourcery.com>
8006
8007         * final.c (shorten_branches): Do not align labels for jump tables.
8008         (final_scan_insn): Use JUMP_TABLE_DATA_P.
8009
8010 2009-05-23  Eric Botcazou  <ebotcazou@adacore.com>
8011
8012         * doc/passes.texi: Standardize spelling of RTL, Tree and Tree SSA.
8013         Remove outdated reference to flow.c and fix nits.
8014         * doc/gccint.texi: Tweak RTL description.
8015         * doc/rtl.texi: Likewise.
8016
8017 2009-05-23  Denis Chertykov  <chertykov@gmail.com>
8018
8019         * config/avr/avr.c: Change my email address.
8020         * config/avr/avr.h: Likewise.
8021         * config/avr/avr.md: Likewise.
8022         * config/avr/avr-protos.h: Likewise.
8023         * config/avr/libgcc.S: Likewise.
8024
8025 2009-05-22  Trevor Smigiel <Trevor_Smigiel@playstation.sony.com>
8026
8027         * config/spu/spu-protos.h (aligned_mem_p, spu_valid_mov): Remove.
8028         (spu_split_load, spu_split_store): Change return type to int.
8029         (spu_split_convert): Declare.
8030         * config/spu/predicates.md (spu_mem_operand): Remove.
8031         (spu_mov_operand): Update.
8032         (spu_dest_operand, shiftrt_operator, extend_operator): Define.
8033         * config/spu/spu.c (regno_aligned_for_load): Remove.
8034         (reg_aligned_for_addr, spu_expand_load): Define.
8035         (spu_expand_extv): Reimplement and handle MEM.
8036         (spu_expand_insv): Handle MEM.
8037         (spu_sched_reorder): Handle insn's with length 0.
8038         (spu_legitimate_address_p): Reimplement.
8039         (store_with_one_insn_p): Return TRUE for any mode with size
8040         larger than 16 bytes.
8041         (address_needs_split): Define.
8042         (spu_expand_mov): Call spu_split_load and spu_split_store for MEM
8043         operands.
8044         (spu_convert_move): Define.
8045         (spu_split_load): Use spu_expand_load and change all MEM's to TImode.
8046         (spu_split_store): Change all MEM's to TImode.
8047         (spu_init_expanders): Preallocate registers that correspond to
8048         LAST_VIRTUAL_REG+1 and LAST_VIRTUAL_REG+2 and set them with
8049         mark_reg_pointer.
8050         (spu_split_convert): Define.
8051         * config/spu/spu.md (QHSI, QHSDI): New mode iterators.
8052         (_move<mode>, _movdi, _movti): Update predicate and condition.
8053         (load, store): Change to define_split.
8054         (extendqiti2, extendhiti2, extendsiti2, extendditi2): Simplify to
8055         extend<mode>ti2.
8056         (zero_extendqiti2, zero_extendhiti2, <v>lshr<mode>3_imm): Define.
8057         (lshr<mode>3, lshr<mode>3_imm, lshr<mode>3_re): Simplify to one
8058         define_insn_and_split of lshr<mode>3.
8059         (shrqbybi_<mode>, shrqby_<mode>): Simplify to define_expand.
8060         (<v>ashr<mode>3_imm): Define.
8061         (extv, extzv, insv): Allow MEM operands.
8062         (trunc_shr_ti<mode>, trunc_shr_tidi, shl_ext_<mode>ti,
8063         shl_ext_diti, sext_trunc_lshr_tiqisi, zext_trunc_lshr_tiqisi,
8064         sext_trunc_lshr_tihisi, zext_trunc_lshr_tihisi): Define for combine.
8065         (_spu_convert2): Change to define_insn_and_split and remove the
8066         corresponding define_peephole2.
8067         (stack_protect_set, stack_protect_test, stack_protect_test_si):
8068         Change predicates to memory_operand.
8069
8070 2009-05-22  Mark Mitchell  <mark@codesourcery.com>
8071
8072         * config/arm/thumb2.md: Add 16-bit multiply instructions.
8073
8074 2009-05-21  Michael Meissner  <meissner@linux.vnet.ibm.com>
8075
8076         PR tree-optimization/40219
8077         * tree.c (iterative_hash_expr): Make sure the builtin function is
8078         a normal builtin function and not a front end or back end builtin
8079         before indexing into the built_in_decls array.
8080
8081 2009-05-22  Richard Guenther  <rguenther@suse.de>
8082
8083         PR middle-end/38964
8084         * alias.c (write_dependence_p): Do not use TBAA for answering
8085         anti-dependence or output-dependence.
8086         * tree-ssa-structalias.c (set_uids_in_ptset): Remove TBAA pruning code.
8087         (emit_pointer_definition): Remove.
8088         (emit_alias_warning): Likewise.
8089         (find_what_var_points_to): Remove TBAA pruning code.
8090         (find_what_p_points_to): Likewise.  Do not warn about strict-aliasing
8091         violations.
8092         (compute_points_to_sets): Remove code computing the set of
8093         dereferenced pointers.
8094         * tree-data-ref.c (dr_may_alias_p): Properly use the split
8095         oracle for querying anti and output dependencies.
8096         * tree-ssa-alias.c (refs_may_alias_p_1): Add argument specifying
8097         if TBAA may be applied.
8098         (refs_anti_dependent_p): New function.
8099         (refs_output_dependent_p): Likewise.
8100         * tree-ssa-alias.h (refs_anti_dependent_p): Declare.
8101         (refs_output_dependent_p): Likewise.
8102         * doc/tree-ssa.texi (Memory model): New section.
8103         * doc/c-tree.texi (CHANGE_DYNAMIC_TYPE_EXPR): Remove.
8104         * doc/gimple.texi (GIMPLE_CHANGE_DYNAMIC_TYPE): Remove.
8105         * cfgexpand.c (expand_gimple_basic_block): Do not handle
8106         GIMPLE_CHANGE_DYNAMIC_TYPE or CHANGE_DYNAMIC_TYPE_EXPR.
8107         * expr.c (expand_expr_real_1): Likewise.
8108         * gimple-low.c (lower_stmt): Likewise.
8109         * gimple-pretty-print.c (dump_gimple_stmt): Likewise.
8110         (dump_gimple_cdt): Remove.
8111         * gimple.c (gss_for_code): Do not handle GIMPLE_CHANGE_DYNAMIC_TYPE.
8112         (gimple_size): Likewise.
8113         (walk_gimple_op): Likewise.
8114         (is_gimple_stmt): Likewise.
8115         (walk_stmt_load_store_addr_ops): Likewise.
8116         (gimple_build_cdt): Remove.
8117         * gimple.def (GIMPLE_CHANGE_DYNAMIC_TYPE): Remove.
8118         * gimple.h (gimple_cdt_new_type): Remove.
8119         (gimple_cdt_new_type_ptr): Likewise.
8120         (gimple_cdt_set_new_type): Likewise.
8121         (gimple_cdt_location): Likewise.
8122         (gimple_cdt_location_ptr): Likewise.
8123         (gimple_cdt_set_location): Likewise.
8124         * gimplify.c (gimplify_expr): Do not handle CHANGE_DYNAMIC_TYPE_EXPR.
8125         * tree-cfg.c (remove_useless_stmts_1): Do not handle
8126         GIMPLE_CHANGE_DYNAMIC_TYPE.
8127         (verify_types_in_gimple_stmt): Likewise.
8128         * tree-inline.c (estimate_num_insns): Likewise.
8129         (expand_call_inline): Do not copy DECL_NO_TBAA_P.
8130         (copy_decl_to_var): Likewise.
8131         (copy_result_decl_to_var): Likewise.
8132         * tree-pretty-print.c (dump_generic_node): Do not handle
8133         CHANGE_DYNAMIC_TYPE_EXPR.
8134         * tree-ssa-dce.c (mark_stmt_if_obviously_necessary): Likewise.
8135         * tree-ssa-operands.c (get_expr_operands): Likewise.
8136         * tree-ssa-structalias.c (struct variable_info): Remove
8137         no_tbaa_pruning member.
8138         (new_var_info): Do not set it based on DECL_NO_TBAA_P.
8139         (unify_nodes): Do not copy it.
8140         (find_func_aliases): Do not handle GIMPLE_CHANGE_DYNAMIC_TYPE.
8141         (dump_solution_for_var): Do not dump no_tbaa_pruning state.
8142         (set_uids_in_ptset): Do not check it.
8143         (find_what_var_points_to): Likewise.
8144         (compute_tbaa_pruning): Remove.
8145         (compute_points_to_sets): Do not call it.
8146         * tree.c (walk_tree_1): Do not handle CHANGE_DYNAMIC_TYPE_EXPR.
8147         * tree.def (CHANGE_DYNAMIC_TYPE_EXPR): Remove.
8148         * tree.h (CHANGE_DYNAMIC_TYPE_NEW_TYPE): Remove.
8149         (CHANGE_DYNAMIC_TYPE_LOCATION): Likewise.
8150         (DECL_NO_TBAA_P): Likewise.
8151         (struct tree_decl_common): Move no_tbaa_flag to unused flags section.
8152         * omp-low.c (copy_var_decl): Do not copy DECL_NO_TBAA_P.
8153         (expand_omp_atomic_pipeline): Do not set it.
8154         * print-tree.c (print_node): Do not dump it.
8155         * tree-ssa-copyrename.c (copy_rename_partition_coalesce): Remove
8156         redundant check.
8157
8158 2009-05-22 Vladimir Makarov <vmakarov@redhat.com>
8159
8160         PR target/39856
8161         * reg-stack.c (subst_stack_regs_pat): Remove gcc_assert for note
8162         for clobber.
8163
8164 2009-05-22  Mark Mitchell  <mark@codesourcery.com>
8165
8166         * tree.c (handle_dll_attribute): Mark dllexport'd inlines as
8167         non-external.
8168
8169 2009-05-22  Ben Elliston  <bje@au.ibm.com>
8170
8171         * Makefile.in (bversion.h, s-bversion): New targets.
8172         (TOPLEV_H): Add bversion.h.
8173         * toplev.h: Include "bversion.h".
8174         (ATTRIBUTE_GCC_DIAG): When building with checking disabled, use
8175         the __format__ attribute only if compiling with the same version
8176         of GCC as the sources (the "build version").
8177
8178 2009-05-22  Ben Elliston  <bje@au.ibm.com>
8179
8180         * c-format.c (handle_format_attribute): Fix comment typo.
8181
8182 2009-05-21  Steve Ellcey  <sje@cup.hp.com>
8183
8184         PR target/37846
8185         * config/ia64/ia64.opt (mfused-madd): New.
8186         * config/ia64/ia64.h (TARGET_DEFAULT): Set MASK_FUSED_MADD.
8187         * config/ia64/hpux.h (TARGET_DEFAULT): Ditto.
8188         * config/ia64/ia64.md (maddsf4, msubsf4, nmaddsf4,
8189         madddf4, madddf4_trunc, msubdf4, msubdf4_trunc, nmadddf4,
8190         nmadddf4_truncsf, maddxf4, maddxf4_truncsf, maddxf4_truncdf,
8191         msubxf4, msubxf4_truncsf msubxf4_truncdf, nmaddxf4,
8192         nmaddxf4_truncsf, nmaddxf4_truncdf): Check TARGET_FUSED_MADD.
8193         * config/ia64/vect.md (addv2sf3, subv2sf3): Force fpma/fpms 
8194         instruction if !TARGET_FUSED_MADD.
8195         (fpma, fpms): Remove colon from name.
8196
8197 2009-05-22  Richard Guenther  <rguenther@suse.de>
8198
8199         * tree-ssa-sccvn.c (copy_reference_ops_from_ref): Record
8200         TMR_ORIGINAL.  Always either record TMR_SYMBOL or TMR_BASE.
8201         * tree-ssa-pre.c (create_component_ref_by_pieces_1): Handle
8202         TARGET_MEM_REF.
8203         (create_expression_by_pieces): Only convert if necessary.
8204         * gimplify.c (gimplify_expr): Handle TARGET_MEM_REF.
8205         * tree-ssa-loop-im.c (gen_lsm_tmp_name): Handle INTEGER_CST.
8206
8207 2009-05-21  Adam Nemet  <anemet@caviumnetworks.com>
8208
8209         * config/mips/mips.md (*extzv_trunc<mode>_exts): Turn into a
8210         regular pattern from a template and rename it ...
8211         (*extzv_truncsi_exts): ... to this.
8212
8213 2009-05-21  Richard Guenther  <rguenther@suse.de>
8214
8215         * cgraph.h (struct cgraph_node): Remove inline_decl member.
8216         * ipa-inline.c (cgraph_mark_inline_edge): Do not check it.
8217         (cgraph_default_inline_p): Likewise.
8218         (cgraph_decide_inlining_incrementally): Likewise.
8219
8220 2009-05-21  H.J. Lu  <hongjiu.lu@intel.com>
8221             Uros Bizjak  <ubizjak@gmail.com>
8222
8223         * config/i386/cpuid.h (bit_MOVBE): New.
8224
8225         * config/i386/driver-i386.c (host_detect_local_cpu): Check movbe.
8226
8227         * config/i386/i386.c (OPTION_MASK_ISA_MOVBE_SET): New.
8228         (OPTION_MASK_ISA_MOVBE_UNSET): Likewise.
8229         (ix86_handle_option): Handle OPT_mmovbe.
8230         (ix86_target_string): Add -mmovbe.
8231         (pta_flags): Add PTA_MOVBE.
8232         (processor_alias_table): Add PTA_MOVBE to "atom".
8233         (override_options): Handle PTA_MOVBE.
8234
8235         * config/i386/i386.h (TARGET_MOVBE): New.
8236
8237         * config/i386/i386.md (bswapsi2): Check TARGET_MOVBE.
8238         (*bswapsi_movbe): New.
8239         (*bswapdi_movbe): Likewise.
8240         (bswapdi2): Renamed to ...
8241         (*bswapdi_1): This.
8242         (bswapdi2): New expander.
8243
8244         * config/i386/i386.opt (mmovbe): New.
8245
8246         * doc/invoke.texi: Document -mmovbe.
8247
8248 2009-05-21  Taras Glek  <tglek@mozilla.com>
8249
8250         * plugin.c (try_init_one_plugin): Updated to new plugin_init API.
8251         * gcc-plugin.h (plugin_init): Updated signature.
8252         * gcc-plugin.h (plugin_name_args): Moved to this header.
8253         * doc/plugins.texi (plugin_init): Updated documention to reflect
8254         API change.
8255         * doc/plugins.texi (plugin_name_args): Added to documention.
8256
8257 2009-05-21  Mark Mitchell  <mark@codesourcery.com>
8258
8259         * config/arm/neon.md (*mul<mode>3add<mode>_neon): New pattern.
8260         (*mul<mode>3neg<mode>add<mode>_neon): Likewise.
8261
8262 2009-05-21  Shujing Zhao  <pearly.zhao@oracle.com>
8263
8264         * config/i386/i386.c: Use REG_P, MEM_P, CONST_INT_P, LABEL_P and
8265         JUMP_TABLE_DATA_P predicates where applicable.
8266         * config/i386/predicates.md: Ditto.
8267         * config/i386/sse.md: Ditto.
8268
8269 2009-05-21  Jakub Jelinek  <jakub@redhat.com>
8270
8271         * config/i386/i386.md (adddi_4_rex64, addsi_4, addhi_4): For
8272         operand2 -128 override length_immediate attribute to 1.
8273         * config/i386/predicates.md (constm128_operand): New predicate.
8274
8275         * config/i386/i386.c (memory_address_length): Handle %r12
8276         the same as %rsp and %r13 the same as %rbp.  For %rsp and %rbp
8277         also check REGNO.
8278         (ix86_attr_length_address_default): For MODE_SI lea in 64-bit
8279         mode look through optional ZERO_EXTEND and SUBREG.
8280         * config/i386/i386.md (R12_REG): New define_constant.
8281         (prefix_data16): For sse unit set also for MODE_TI insns.
8282         (prefix_rex): For -m32 always return 0.  For TYPE_IMOVX
8283         insns set if operand 1 is ext_QIreg_operand.
8284         (modrm): For TYPE_IMOV clear only if not MODE_DI.  For
8285         TYPE_{ALU{,1},ICMP,TEST} insn clear if there is non-shortened
8286         immediate.
8287         (*movdi_extzv_1, zero_extendhidi2, zero_extendqidi2): Change
8288         mode from MODE_DI to MODE_SI.
8289         (movdi_1_rex64): Override modrm and length_immediate attributes
8290         only for movabs (TYPE_IMOV, alternative 2).
8291         (zero_extendsidi2_rex64): Clear prefix_0f attribute if TYPE_IMOVX.
8292         (*float<SSEMODEI24:mode><MODEF:mode>2_mixed_interunit,
8293         *float<SSEMODEI24:mode><MODEF:mode>2_mixed_nointerunit,
8294         *float<SSEMODEI24:mode><MODEF:mode>2_sse_interunit,
8295         *float<SSEMODEI24:mode><MODEF:mode>2_sse_nointerunit): Set
8296         prefix_rex attribute if DImode.
8297         (*adddi_1_rex64, *adddi_2_rex64, *adddi_3_rex64, *adddi_5_rex64,
8298         *addsi_1, *addsi_1_zext, *addsi_2, *addsi_2_zext, *addsi_3,
8299         *addsi_3_zext, *addsi_5, *addhi_1_lea, *addhi_1, *addhi_2, *addhi_3,
8300         *addhi_5, *addqi_1_lea, *addqi_1): Override length_immediate
8301         attribute to 1 if TYPE_ALU and operand 2 is const128_operand.
8302         (pro_epilogue_adjust_stack_1, pro_epilogue_adjust_stack_rex64):
8303         Likewise.  For TYPE_IMOV clear length_immediate attribute.
8304         (*ashldi3_1_rex64, *ashldi3_cmp_rex64, *ashldi3_cconly_rex64,
8305         *ashlsi3_1, *ashlsi3_1_zext, *ashlsi3_cmp, **ashlsi3_cconly,
8306         *ashlsi3_cmp_zext, *ashlhi3_1_lea, *ashlhi3_1, *ashlhi3_cmp,
8307         *ashlhi3_cconly, *ashlqi3_1_lea, *ashlqi3_1, *ashlqi3_cmp,
8308         *ashlqi3_cconly): Override length_immediate attribute to 0 if TYPE_ALU
8309         or one operand TYPE_ISHIFT.
8310         (*ashrdi3_1_one_bit_rex64, *ashrdi3_one_bit_cmp_rex64,
8311         *ashrdi3_one_bit_cconly_rex64, *ashrsi3_1_one_bit,
8312         *ashrsi3_1_one_bit_zext, *ashrsi3_one_bit_cmp,
8313         *ashrsi3_one_bit_cconly, *ashrsi3_one_bit_cmp_zext,
8314         *ashrhi3_1_one_bit, *ashrhi3_one_bit_cmp, *ashrhi3_one_bit_cconly,
8315         *ashrqi3_1_one_bit, *ashrqi3_1_one_bit_slp, *ashrqi3_one_bit_cmp,
8316         *ashrqi3_one_bit_cconly, *lshrdi3_1_one_bit_rex64,
8317         *lshrdi3_cmp_one_bit_rex64, *lshrdi3_cconly_one_bit_rex64,
8318         *lshrsi3_1_one_bit, *lshrsi3_1_one_bit_zext, *lshrsi3_one_bit_cmp,
8319         *lshrsi3_one_bit_cconly, *lshrsi3_cmp_one_bit_zext,
8320         *lshrhi3_1_one_bit, *lshrhi3_one_bit_cmp, *lshrhi3_one_bit_cconly,
8321         *lshrqi3_1_one_bit, *lshrqi3_1_one_bit_slp, *lshrqi2_one_bit_cmp,
8322         *lshrqi2_one_bit_cconly, *rotlsi3_1_one_bit_rex64, *rotlsi3_1_one_bit,
8323         *rotlsi3_1_one_bit_zext, *rotlhi3_1_one_bit, *rotlqi3_1_one_bit_slp,
8324         *rotlqi3_1_one_bit, *rotrdi3_1_one_bit_rex64, *rotrsi3_1_one_bit,
8325         *rotrsi3_1_one_bit_zext, *rotrhi3_one_bit, *rotrqi3_1_one_bit,
8326         *rotrqi3_1_one_bit_slp): Override length_immediate attribute to 0,
8327         set mode attribute, don't override length attribute.
8328         (*btsq, *btrq, *btcq, *btdi_rex64, *btsi): Set prefix_0f attribute
8329         to 1.
8330         (return_internal_long): Set length attribute to 2 instead of 1.
8331         (*strmovqi_rex_1, *strsetqi_rex_1, *rep_stosqi_rex64,
8332         *cmpstrnqi_nz_rex_1, *cmpstrnqi_rex_1, *strlenqi_rex_1): Clear
8333         prefix_rex attribute.
8334         * config/i386/predicates.md (ext_QIreg_operand, const128_operand):
8335         New predicates.
8336         (memory_displacement_only_operand): Always return 0 for TARGET_64BIT.
8337
8338 2009-05-21  Ramana Radhakrishnan  <ramana.radhakrishnan@arm.com>
8339
8340         * config/arm/thumb2.md (orsi_notsi_si): Fix typo in pattern.
8341
8342 2009-05-20  Ian Lance Taylor  <iant@google.com>
8343
8344         * tree.c (build_tree_list_vec_stat): New function.
8345         (ctor_to_vec): New function.
8346         (build_nt_call_vec): New function.
8347         (build_call_array): Change args to be a const pointer.
8348         (build_call_vec): New function.
8349         * tree.h (build_nt_call_vec): Declare.
8350         (build_tree_list_vec_stat): Declare.
8351         (build_tree_list_vec): Define.
8352         (build_call_array): Update declaration.
8353         (build_call_vec): Declare.
8354         (ctor_to_vec): Declare.
8355         * c-common.c (tree_vector_cache): New static variable.
8356         (make_tree_vector): New function.
8357         (release_tree_vector): New function.
8358         (make_tree_vector_single): New function.
8359         (make_tree_vector_copy): New function.
8360         * c-common.h (tree_vector_cache, make_tree_vector): Declare.
8361         (make_tree_vector_single, make_tree_vector_copy): Declare.
8362         * c-parser.c (cached_expr_list_1, cached_expr_list_2): Remove.
8363         (c_parser_expr_list): Don't manage cache here, instead call
8364         make_tree_vector.
8365         (c_parser_release_expr_list): Remove static function.
8366         (c_parser_vec_to_tree_list): Remove static function.
8367         (c_parser_attributes): Call build_tree_list_vec instead of
8368         c_parser_vec_to_tree_list.  Call release_tree_vector instead of
8369         c_parser_release_expr_list.
8370         (c_parser_postfix_expression_after_primary): Likewise.
8371         (c_parser_objc_keywordexpr): Likewise.
8372
8373 2009-05-20  Sandra Loosemore  <sandra@codesourcery.com>
8374
8375         * doc/tm.texi (Misc): Document TARGET_INVALID_PARAMETER_TYPE,
8376         TARGET_INVALID_RETURN_TYPE, TARGET_PROMOTED_TYPE, and
8377         TARGET_CONVERT_TO_TYPE.
8378         * hooks.c (hook_tree_const_tree_null): Define.
8379         * hooks.h (hook_tree_const_tree_null): Declare.
8380         * target.h (struct gcc_target):  Add invalid_parameter_type,
8381         invalid_return_type, promoted_type, and convert_to_type fields.
8382         * target-def.h: (TARGET_INVALID_PARAMETER_TYPE): Define.
8383         (TARGET_INVALID_RETURN_TYPE): Define.
8384         (TARGET_PROMOTED_TYPE): Define.
8385         (TARGET_CONVERT_TO_TYPE): Define.
8386         (TARGET_INITIALIZER): Update for new fields.
8387         * c-decl.c (grokdeclarator): Check targetm.invalid_return_type.
8388         (grokparms): Check targetm.invalid_parameter_type.
8389         * c-typeck.c (default_conversion): Check targetm.promoted_type.
8390         * c-convert.c (convert): Check targetm.convert_to_type.
8391
8392 2009-05-20  Adam Nemet  <anemet@caviumnetworks.com>
8393
8394         * config/mips/mips.md (*extenddi_truncate<mode>,
8395         *extendsi_truncate<mode>): Emit exts if supported.  Add attribute
8396         defintions.
8397         (*extendhi_truncateqi): New define_insn_and_sptit.
8398
8399 2009-05-20  Jakub Jelinek  <jakub@redhat.com>
8400
8401         PR middle-end/40204
8402         * fold-const.c (fold_binary) <case BIT_AND_EXPR>: Avoid infinite
8403         recursion if build_int_cst_type returns the same INTEGER_CST as arg1.
8404
8405 2009-05-20  Eric Botcazou  <ebotcazou@adacore.com>
8406
8407         * fold-const.c (build_fold_addr_expr_with_type): Take the address of
8408         the operand of VIEW_CONVERT_EXPR.
8409
8410 2009-05-20  H.J. Lu  <hongjiu.lu@intel.com>
8411
8412         * config/i386/driver-i386.c (host_detect_local_cpu): Check
8413         extended family and model for Intel processors.  Support Intel Atom.
8414
8415 2009-05-20  Olivier Hainque  <hainque@adacore.com>
8416
8417         * gstab.h (stab_code_type): Define, to be used instead of the
8418         __stab_debug_code enum, made anonymous.  Add 2009 to the copyright
8419         notice.
8420         * dbxout.c (STAB_CODE_TYPE): Remove #define and replace use
8421         occurrences by stab_code_type.
8422         * mips-tfile.c (STAB_CODE_TYPE): Remove #define, unused.
8423
8424 2009-05-20  Martin Jambor  <mjambor@suse.cz>
8425
8426         * tree-flow.h (insert_edge_copies_seq): Undeclare.
8427         (sra_insert_before): Likewise.
8428         (sra_insert_after): Likewise.
8429         (sra_init_cache): Likewise.
8430         (sra_type_can_be_decomposed_p): Likewise.
8431         * tree-mudflap.c (insert_edge_copies_seq): Copied here from tree-sra.c
8432         * tree-sra.c (sra_type_can_be_decomposed_p): Made static.
8433         (sra_insert_before): Likewise.
8434         (sra_insert_after): Likewise.
8435         (sra_init_cache): Likewise.
8436         (insert_edge_copies_seq): Made static and moved upwards.
8437
8438         * tree-complex.c (extract_component): Added VIEW_CONVERT_EXPR switch
8439         case.
8440
8441         * tree-flow-inline.h (contains_view_convert_expr_p): New function.
8442
8443         * ipa-prop.c (get_ssa_def_if_simple_copy): New function.
8444         (determine_cst_member_ptr): Call get_ssa_def_if_simple_copy to skip
8445         simple copies.
8446
8447 2009-05-20  Richard Guenther  <rguenther@suse.de>
8448
8449         * expr.c (expand_expr_real_1): Avoid calling do_store_flag
8450         with mismatched comparison modes.
8451
8452 2009-05-20  Ramana Radhakrishnan  <ramana.radhakrishnan@arm.com>
8453
8454         * config/arm/arm.md (*arm_iorsi3): Refactored for only ARM.
8455         (peephole ior (reg, int) -> mov, ior): Refactored for only ARM.
8456         * config/arm/thumb2.md (*thumb_andsi_not_shiftsi_si): Allow bic
8457         with shifts for Thumb2.
8458         (orsi_notsi): New for orn.
8459         (*thumb_orsi_notshiftsi_si): Allow orn with shifts.
8460         (*thumb2_iorsi3): Rewrite support for iorsi for Thumb2.
8461         * config/arm/arm.c (const_ok_for_op): Split case for IOR for Thumb2.
8462         (arm_gen_constant): Set can_invert for IOR and Thumb2, Add comments.
8463         Don't invert remainder for IOR.
8464         
8465 2009-05-19  Zdenek Dvorak  <ook@ucw.cz>
8466
8467         PR tree-optimization/40087
8468         * tree-ssa-loop-niter.c (number_of_iterations_ne_max,
8469         number_of_iterations_ne): Rename never_infinite argument.
8470         (number_of_iterations_lt_to_ne, number_of_iterations_lt,
8471         number_of_iterations_le): Handle pointer-type ivs when
8472         exit_must_be_taken is false.
8473         (number_of_iterations_cond):  Do not always assume that
8474         exit_must_be_taken if the control variable is a pointer.
8475
8476 2009-05-19  Andrew Pinski  <andrew_pinski@playstation.sony.com>
8477
8478         * c-typeck.c (build_binary_op): Allow % on integal vectors.
8479         * doc/extend.texi (Vector Extension): Document that % is allowed too.
8480
8481 2009-05-19  H.J. Lu  <hongjiu.lu@intel.com>
8482
8483         * config/i386/i386.c (ix86_avoid_jump_mispredicts): Check
8484         ASM_OUTPUT_MAX_SKIP_PAD instead of ASM_OUTPUT_MAX_SKIP_ALIGN.
8485
8486 2009-05-19  Manuel López-Ibáñez  <manu@gcc.gnu.org>
8487
8488         PR c/40172
8489         * c.opt (Wlogical-op): Disabled by default.
8490         * c-opt (c_common_post_options): Do not enable Wlogical-op with
8491         Wextra.
8492         * doc/invoke.texi (Wlogical-op): Likewise.
8493         
8494 2009-05-19  Eric Botcazou  <ebotcazou@adacore.com>
8495
8496         * tree-scalar-evolution.c (follow_ssa_edge_expr) <NOP_EXPR>: Turn
8497         into CASE_CONVERT.
8498         <PLUS_EXPR>: Strip useless type conversions instead of type nops.
8499         Propagate the type of the first operand.
8500         <ASSERT_EXPR>: Simplify.
8501         (follow_ssa_edge_in_rhs): Use gimple_expr_type to get the type.
8502         Rewrite using the RHS code as discriminant.
8503         <NOP_EXPR>: Turn into CASE_CONVERT.
8504         <PLUS_EXPR>: Propagate the type of the first operand.
8505
8506 2009-05-19  Steve Ellcey  <sje@cup.hp.com>
8507
8508         * config/ia64/ia64-protos.h (ia64_dconst_0_5): New.
8509         (ia64_dconst_0_375): New.
8510         * config/ia64/ia64.c (ia64_override_options): Remove
8511         -minline-sqrt-min-latency warning.
8512         (ia64_dconst_0_5_rtx, ia64_dconst_0_5): New.
8513         (ia64_dconst_0_375_rtx, ia64_dconst_0_375): New
8514         * config/ia64/ia64.md (*sqrt_approx): Remove.
8515         (sqrtsf2): Remove #if 0.
8516         (sqrtsf2_internal_thr): Rewrite and move to div.md.
8517         (sqrtdf): Remove assert.
8518         (sqrtdf2_internal_thr): Rewrite and move to div.md.
8519         (sqrtxf2): Remove #if 0.
8520         (sqrtxf2_internal_thr): Rewrite and move to div.md.
8521         * div.md (sqrt_approx_rf): New.
8522         (sqrtsf2_internal_thr): New implementation.
8523         (sqrtsf2_internal_lat): New.
8524         (sqrtdf2_internal_thr: New implementation.
8525         (sqrtxf2_internal): New implementation.
8526
8527 2009-05-19  Francois-Xavier Coudert  <fxcoudert@gmail.com>
8528             Hans-Peter Nilsson  <hp@axis.com>
8529
8530         * defaults.h (UINT_FAST64_TYPE, INTPTR_TYPE, UINTPTR_TYPE)
8531         (WCHAR_TYPE, MODIFIED_WCHAR_TYPE, PTRDIFF_TYPE, WINT_TYPE)
8532         (INTMAX_TYPE, UINTMAX_TYPE, SIG_ATOMIC_TYPE, INT8_TYPE, INT16_TYPE)
8533         (INT32_TYPE, INT64_TYPE, UINT8_TYPE, UINT16_TYPE, UINT32_TYPE)
8534         (UINT64_TYPE, INT_LEAST8_TYPE, INT_LEAST16_TYPE, INT_LEAST32_TYPE)
8535         (INT_LEAST64_TYPE, UINT_LEAST8_TYPE, UINT_LEAST16_TYPE)
8536         (UINT_LEAST32_TYPE, UINT_LEAST64_TYPE, INT_FAST8_TYPE)
8537         (INT_FAST16_TYPE, INT_FAST32_TYPE, INT_FAST64_TYPE)
8538         (UINT_FAST8_TYPE, UINT_FAST16_TYPE, UINT_FAST32_TYPE)
8539         (SIZE_TYPE, PID_TYPE, CHAR16_TYPE, CHAR32_TYPE): Move defaults here...
8540         * c-common.c: ...from here.
8541
8542 2009-05-19  Manuel López-Ibáñez  <manu@gcc.gnu.org>
8543
8544         * c-common.c (warn_logical_operator): Remove unnecessary conditionals.
8545
8546 2009-05-19  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
8547
8548         * builtins.c (do_mpc_arg1): Separate MPFR/MPC C rounding types.
8549
8550 2009-05-19  Ben Elliston  <bje@au.ibm.com>
8551
8552         * unwind-dw2-fde.c (fde_unencoded_compare): Replace type punning
8553         assignments with memcpy calls.
8554         (add_fdes): Likewise.
8555         (binary_search_unencoded_fdes): Likewise.
8556         (linear_search_fdes): Eliminate type puns.
8557         
8558 2009-05-19  Richard Guenther  <rguenther@suse.de>
8559
8560         * tree-ssa-forwprop.c (forward_propagate_addr_expr_1): Do
8561         not falsely claim to have propagated into all uses.
8562
8563 2009-05-19  Ben Elliston  <bje@au.ibm.com>
8564
8565         * doc/invoke.texi (C Dialect Options): Update OpenMP specification
8566         version to v3.0.
8567
8568 2009-05-18  Kaz Kojima  <kkojima@gcc.gnu.org>
8569
8570         * config/sh/sh-protos.h (sh_legitimate_address_p): Remove.
8571         * config/sh/sh.c (sh_legitimate_address_p): Make static.
8572         (TARGET_LEGITIMATE_ADDRESS_P): New.
8573         * config/sh/sh.h (GO_IF_LEGITIMATE_ADDRESS): Delete.
8574         * config/sh/sh.md: Clean up references to GO_IF_LEGITIMATE_ADDRESS.
8575         
8576 2009-05-18  Dodji Seketeli  <dodji@redhat.com>
8577
8578         PR debug/40109
8579         * dwarf2out.c (gen_type_die_with_usage): Generate the DIE as a
8580         child of the containing namespace's DIE.
8581
8582 2009-05-18  Adam Nemet  <anemet@caviumnetworks.com>
8583
8584         * config/mips/mips.md (*zero_extend<GPR:mode>_trunc<SHORT:mode>,
8585         *zero_extendhi_truncqi):  Move after the zero_extend patterns.
8586         (*extenddi_truncate<mode>, *extendsi_truncate<mode>): Move after the
8587         extend patterns.
8588
8589 2009-05-18  H.J. Lu  <hongjiu.lu@intel.com>
8590
8591         PR target/39942
8592         * config/i386/i386.c (ix86_avoid_jump_misspredicts): Replace
8593         gen_align with gen_pad.
8594         (ix86_reorg): Check ASM_OUTPUT_MAX_SKIP_PAD instead of
8595         #ifdef ASM_OUTPUT_MAX_SKIP_ALIGN.
8596
8597         * config/i386/i386.h (ASM_OUTPUT_MAX_SKIP_PAD): New.
8598         * config/i386/x86-64.h (ASM_OUTPUT_MAX_SKIP_PAD): Likewise.
8599
8600         * config/i386/i386.md (align): Renamed to ...
8601         (pad): This.  Replace ASM_OUTPUT_MAX_SKIP_ALIGN with
8602         ASM_OUTPUT_MAX_SKIP_PAD.
8603
8604 2009-05-18  Andreas Schwab  <schwab@linux-m68k.org>
8605
8606         * config.gcc: Fix variable syntax.
8607
8608         PR target/39531
8609         * config/m68k/m68k.c (output_andsi3): Mask off sign bit copies
8610         before calling exact_log2.
8611         (output_iorsi3): Likewise.
8612         (output_xorsi3): Likewise.
8613
8614 2009-05-18  Kaz Kojima  <kkojima@gcc.gnu.org>
8615
8616         * config/sh/sh.c (expand_cbranchdi4): Use a scratch register
8617         for the none zero constant operand except for EQ and NE
8618         comprisons even when the first operand is R0.
8619
8620 2009-05-18  Andreas Krebbel  <krebbel1@de.ibm.com>
8621
8622         * config/s390/2064.md: Remove trailing whitespaces.
8623         * config/s390/2084.md: Likewise.
8624         * config/s390/constraints.md: Likewise.
8625         * config/s390/fixdfdi.h: Likewise.
8626         * config/s390/libgcc-glibc.ver: Likewise.
8627         * config/s390/s390-modes.def: Likewise.
8628         * config/s390/s390-protos.h: Likewise.
8629         * config/s390/s390.c: Likewise.
8630         * config/s390/s390.h: Likewise.
8631         * config/s390/s390.md: Likewise.
8632         * config/s390/tpf-unwind.h: Likewise.
8633
8634 2009-05-18  Maxim Kuvyrkov  <maxim@codesourcery.com>
8635
8636         * config/m68k/m68k.c (m68k_legitimize_address): Fix typo in signature.
8637
8638 2009-05-18  Maxim Kuvyrkov  <maxim@codesourcery.com>
8639
8640         M68K TLS support.
8641         * configure.ac (m68k-*-*): Check if binutils support TLS.
8642         * configure: Regenerate.
8643         * config/m68k/predicates.md (symbolic_operand): Extend comment.
8644         * config/m68k/constraints.md (Cu): New constraint.
8645         * config/m68k/m68k.md (UNSPEC_GOTOFF): Remove.
8646         (UNSPEC_RELOC16, UNSPEC_RELOC32): New constants.
8647         (movsi): Handle TLS symbols.
8648         (addsi3_5200): Handle XTLS symbols, indent.
8649         * config/m68k/m68k-protos.h (m68k_legitimize_tls_address): Declare.
8650         (m68k_tls_reference_p): Declare.
8651         (m68k_legitimize_address): Declare.
8652         (m68k_unwrap_symbol): Declare.
8653         * config/m68k/m68k.opt (mxtls): New option.
8654         * config/m68k/m68k.c (ggc.h): Include.
8655         (m68k_output_dwarf_dtprel): Implement hook.
8656         (TARGET_HAVE_TLS, TARGET_ASM_OUTPUT_DWARF_DTPREL): Define.
8657         (m68k_expand_prologue): Load GOT pointer when function needs it.
8658         (m68k_illegitimate_symbolic_constant_p): Handle TLS symbols.
8659         (m68k_legitimate_constant_address_p): Same.
8660         (m68k_decompose_address): Handle TLS references.
8661         (m68k_get_gp): New static function.
8662         (enum m68k_reloc): New contants.
8663         (TLS_RELOC_P): New macro.
8664         (m68k_wrap_symbol): New static function.
8665         (m68k_unwrap_symbol): New function.
8666         (m68k_final_prescan_insn_1): New static function.
8667         (m68k_final_prescan_insn): New function.
8668         (m68k_move_to_reg, m68k_wrap_symbol_into_got_ref): New static
8669         functions.
8670         (legitimize_pic_address): Handle TLS references..
8671         (m68k_tls_get_addr, m68k_get_tls_get_addr)
8672         (m68k_libcall_value_in_a0_p)
8673         (m68k_call_tls_get_addr, m68k_read_tp, m68k_get_m68k_read_tp)
8674         (m68k_call_m68k_read_tp): Helper variables and functions for ...
8675         (m68k_legitimize_tls_address): Handle TLS references.
8676         (m68k_tls_symbol_p, m68k_tls_reference_p_1, m68k_tls_reference_p):
8677         New functions.
8678         (m68k_legitimize_address): Handle TLS symbols.
8679         (m68k_get_reloc_decoration): New static function.
8680         (m68k_output_addr_const_extra): Handle UNSPEC_RELOC16 and
8681         UNSPEC_RELOC32.
8682         (m68k_output_dwarf_dtprel): Implement hook.
8683         (print_operand_address): Handle UNSPEC_RELOC16 adn UNSPEC_RELOC32.
8684         (m68k_libcall_value): Return result in A0 instead of D0 when asked by
8685         m68k_call_* routines.
8686         (sched_attr_op_type): Handle TLS symbols.
8687         (gt-m68k.h): Include.
8688         * config/m68k/m68k.h (FINAL_PRESCAN_INSN): Define.
8689         (LEGITIMATE_PIC_OPERAND_P): Support TLS.
8690
8691 2009-05-18  Martin Jambor  <mjambor@suse.cz>
8692
8693         * ipa-prop.c (ipa_check_stmt_modifications): Removed.
8694         (visit_store_addr_for_mod_analysis): New function.
8695         (ipa_detect_param_modifications): Use walk_stmt_load_store_addr_ops.
8696         (determine_cst_member_ptr): Use gimple_assign_single_p.
8697         (ipa_get_stmt_member_ptr_load_param): Use gimple_assign_single_p.
8698         (ipa_analyze_call_uses): Use !gimple_assign_rhs2 rather than number of
8699         operands.  Don't check number of operands of a NOP_EXPR.
8700
8701 2009-05-18  Eric Fisher  <joefoxreal@gmail.com>
8702
8703         * doc/tree-ssa.texi (SSA Operands): Fix a mistake.
8704
8705 2009-05-17  Manuel López-Ibáñez  <manu@gcc.gnu.org>
8706
8707         PR c/40172
8708         * c-common.c (warn_logical_operator): Don't warn if one of
8709         expression isn't always true or false.
8710
8711 2009-05-17  Kai Tietz  <kai.tietz@onevision.com>
8712
8713         * config/i386/biarch32.h: New file.
8714         * config.gcc: Add for target i386-w64-* the biarch32.h to tm_file.
8715
8716 2009-05-17  Adam Nemet  <anemet@caviumnetworks.com>
8717
8718         * config/mips/mips.md (*zero_extend<mode>_trunchi,
8719         *zero_extend<mode>_truncqi): Merge these into ...
8720         (*zero_extend<GPR:mode>_trunc<SHORT:mode>): ... this new pattern.
8721         Name the pattern following this as *zero_extendhi_truncqi.
8722
8723 2009-05-16  Brad Lucier  <lucier@math.purdue.edu>
8724
8725         PR middle-end/39301
8726         * hwint.h: Add macro HOST_WIDEST_INT_PRINT.
8727         * bitmap.c (bitmap_descriptor): Make fields HOST_WIDEST_INT.
8728         (output_info): Make field HOST_WIDEST_INT.
8729         (print_statistics): Use HOST_WIDEST_INT_PRINT.
8730         (dump_bitmat_statistics): Same.
8731
8732 2009-05-16  Francois-Xavier Coudert  <fxcoudert@gmail.com>
8733
8734         * config.gcc (use_gcc_stdint):  Set to wrap.
8735         * config/darwin.h (SIG_ATOMIC_TYPE, INT8_TYPE, INT16_TYPE,
8736         INT32_TYPE, INT64_TYPE, UINT8_TYPE, UINT16_TYPE, UINT32_TYPE,
8737         UINT64_TYPE, INT_LEAST8_TYPE, INT_LEAST16_TYPE, INT_LEAST32_TYPE,
8738         INT_LEAST64_TYPE, UINT_LEAST8_TYPE, UINT_LEAST16_TYPE,
8739         UINT_LEAST32_TYPE, UINT_LEAST64_TYPE, INT_FAST8_TYPE,
8740         INT_FAST16_TYPE, INT_FAST32_TYPE, INT_FAST64_TYPE,
8741         UINT_FAST8_TYPE, UINT_FAST16_TYPE, UINT_FAST32_TYPE,
8742         UINT_FAST64_TYPE, INTPTR_TYPE, UINTPTR_TYPE): Define.
8743
8744 2009-05-16  Joseph Myers  <joseph@codesourcery.com>
8745
8746         * config.gcc (mips*-*-*): Support arch_32, arch_64, tune_32 and
8747         tune_64.
8748         * config/mips/mips.h (MIPS_ABI_DEFAULT, MULTILIB_ABI_DEFAULT):
8749         Move definitions earlier.
8750         (OPT_ARCH64, OPT_ARCH32): Define.
8751         (OPTION_DEFAULT_SPECS): Add entries for arch_32, arch_64, tune_32
8752         and tune_64.
8753
8754 2009-05-16  Richard Earnshaw  <rearnsha@arm.com>
8755
8756         PR target/40153
8757         * arm.md (cstoresi_nltu_thumb1): Use a neg of ltu as the pattern name
8758         implies.
8759
8760 2009-05-16  Richard Earnshaw  <rearnsha@arm.com>
8761
8762         * arm.md (movdi2): Copy non-reg values to DImode registers.
8763
8764 2009-05-16  Jakub Jelinek  <jakub@redhat.com>
8765
8766         PR target/39942
8767         * final.c (label_to_max_skip): New function.
8768         (label_to_alignment): Only use LABEL_TO_ALIGNMENT if
8769         CODE_LABEL_NUMBER <= max_labelno.
8770         * output.h (label_to_max_skip): New prototype.
8771         * config/i386/i386.c (ix86_avoid_jump_misspredicts): Renamed to...
8772         (ix86_avoid_jump_mispredicts): ... this.  Don't define if
8773         ASM_OUTPUT_MAX_SKIP_ALIGN isn't defined.  Update comment.
8774         Handle CODE_LABELs with >= 16 byte alignment or with
8775         max_skip == (1 << align) - 1.
8776         (ix86_reorg): Don't call ix86_avoid_jump_mispredicts if
8777         ASM_OUTPUT_MAX_SKIP_ALIGN isn't defined.
8778
8779         PR target/39942
8780         * config/i386/x86-64.h (ASM_OUTPUT_MAX_SKIP_ALIGN): Don't emit second
8781         .p2align 3 if MAX_SKIP is smaller than 7.
8782         * config/i386/linux.h (ASM_OUTPUT_MAX_SKIP_ALIGN): Likewise.
8783
8784 2009-05-15  Ian Lance Taylor  <iant@google.com>
8785
8786         * alias.c (struct alias_set_entry_d): Rename from struct
8787         alias_set_entry.  Change all uses.
8788         * except.c (struct call_site_record_d): Rename from struct
8789         call_site_record.  Change all uses.
8790         * except.h (struct eh_region_d): Rename from struct eh_region.
8791         Change all uses.
8792         * gcse.c (struct hash_table_d): Rename from struct hash_table.
8793         Change all uses.
8794         * graphite.c (struct ivtype_map_elt_d): Rename fromstruct
8795         ivtype_map_elt.  Change all uses.
8796         (struct rename_map_elt_d): Rename fromstruct rename_map_elt.
8797         Change all uses.
8798         (struct ifsese_d): Rename fromstruct ifsese.  Change all uses.
8799         * graphite.h (struct name_tree_d): Rename from struct name_tree.
8800         Change all uses.
8801         (struct sese_d): Rename from struct sese.  Change all uses.
8802         * omega.h (struct eqn_d): Rename from struct eqn.  Change all uses.
8803         (struct omega_pb_d): Rename from struct omega_pb.  Change all uses.
8804         * optabs.h (struct optab_d): Rename from struct optab.  Change all
8805         uses.
8806         (struct convert_optab_d): Rename from struct convert_optab.
8807         Change all uses.
8808         * tree-pass.h (struct ipa_opt_pass_d): Rename fromstruct
8809         ipa_opt_pass.  Change all uses.
8810         * tree-predcom.c (struct dref_d): Rename from struct dref.  Change
8811         all uses.
8812
8813         * c-decl.c (pushtag): If -Wc++-compat, warn if the tag is already
8814         defined as a typedef.
8815         (grokdeclarator): If -Wc++-compat, warn if a typedef is already
8816         defined as a tag.
8817
8818 2009-05-15  Manuel López-Ibáñez  <manu@gcc.gnu.org>
8819
8820         PR 16302
8821         * fold-const.c (make_range,build_range_check,merge_ranges): Move
8822         declaration to...
8823         (merge_ranges): Returns bool. 
8824         * tree.h (make_range): .. to here.
8825         (build_range_check): Likewise.
8826         (merge_ranges): Likewise. Renamed from merge_ranges.
8827         * c-typeck.c (parser_build_binary_op): Update calls to
8828         warn_logical_operator.
8829         * c-common.c (warn_logical_operator): Add new warning.
8830         * c-common.h (warn_logical_operator): Update declaration.
8831         
8832 2009-05-15  Manuel López-Ibáñez  <manu@gcc.gnu.org>
8833
8834         * ira-conflicts.c (add_insn_allocno_copies): Fix wrong conditional.
8835         
8836 2009-05-15  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
8837
8838         * doc/install.texi: Document MPC requirements, flags etc.
8839
8840         * builtins.c (do_mpc_arg1, fold_builtin_ccos): New.
8841         (fold_builtin_cexp): Ensure we get a complex REAL_TYPE.
8842         Evaluate constant arguments.
8843         (fold_builtin_carg): Ensure we get a complex REAL_TYPE.
8844         (fold_builtin_1): Likewise, also evaluate constant arguments.
8845         Remove superfluous break.
8846         (do_mpc_ckconv): New.
8847         * real.h: Include mpc.h.
8848         * toplev.c (print_version): Output MPC version info if available.
8849
8850 2009-05-15  Sandra Loosemore  <sandra@codesourcery.com>
8851
8852         * fold-const.c (fold_convert_const_real_from_real): Check for overflow.
8853
8854 2009-05-15  H.J. Lu  <hongjiu.lu@intel.com>
8855
8856         * config/i386/i386.c (ix86_reorg): Call optimize_function_for_speed_p
8857         only once.
8858
8859 2009-05-15  Jan Hubicka  <jh@suse.cz>
8860
8861         * doc/invoke.texi (max-early-inliner-iterations): New flag.
8862         * ipa-inline.c (enum inlining_mode): New INLINE_SIZE_NORECURSIVE.
8863         (try_inline): Fix return value.
8864         (cgraph_decide_inlining_incrementally): Honor new value.
8865         (cgraph_early_inlining): Handle indirect inlining.
8866         * params.def (PARAM_EARLY_INLINER_MAX_ITERATIONS): New.
8867
8868 2009-05-15  Jan Hubicka  <jh@suse.cz>
8869
8870         * cgraph.h (struct cgraph_node): Add finalized_by_frotnend flag.
8871         * cgraphunit.c (cgraph_finalize_function): Set it.
8872         (cgraph_expand_function): Use it.
8873
8874 2009-05-15  Sandra Loosemore  <sandra@codesourcery.com>
8875
8876         * real.c (encode_ieee_half): Define.
8877         (decode_ieee_half): Define.
8878         (ieee_half_format): Define.
8879         (arm_half_format): Define.
8880         * real.h (ieee_half_format): Declare.
8881         (arm_half_format): Declare.
8882
8883 2009-05-15  Sandra Loosemore  <sandra@codesourcery.com>
8884
8885         * optabs.c (prepare_float_lib_cmp):  Test that the comparison,
8886         swapped, and reversed optabs exist before trying to use them.
8887
8888 2009-05-15  Paul Brook  <paul@codesourcery.com>
8889             Sandra Loosemore  <sandra@codesourcery.com>
8890
8891         * config/arm/arm.c (neon_vector_mem_operand): Handle element/structure
8892         loads.  Allow PRE_DEC.
8893         (output_move_neon): Handle PRE_DEC.
8894         (arm_print_operand): Add 'A' for neon structure loads.
8895         * config/arm/arm-protos.h (neon_vector_mem_operand): Update prototype.
8896         * config/arm/neon.md (neon_mov): Update comment.
8897         * config/arm/constraints.md (Un, Us): Update neon_vector_mem_operand
8898         calls.
8899         (Um): New constraint.
8900
8901 2009-05-15  Jan Hubicka  <jh@suse.cz>
8902
8903         Revert the following patch until testsuite fallout is fixed:
8904         * cgraph.c (dump_cgraph_node): Dump size/time/benefit.
8905         * cgraph.h (struct inline_summary): New filed self_wize,
8906         size_inlining_benefit, self_time and time_inlining_benefit.
8907         (struct cgraph_global_info): Replace insns by time ans size fields.
8908         * ipa-cp (ipcp_cloning_candidate_p): Base estimate on size
8909         (ipcp_estimate_growth, ipcp_insert_stage): Likewise.
8910         (ipcp_update_callgraph): Do not touch function bodies.
8911         * ipa-inline.c: Include except.h
8912         (MAX_TIME): New constant.
8913         (overall_insns): Remove
8914         (overall_size, max_benefit): New static variables.
8915         (cgraph_estimate_time_after_inlining): New function.
8916         (cgraph_estimate_size_after_inlining): Rewrite using benefits.
8917         (cgraph_clone_inlined_nodes): Update size.
8918         (cgraph_mark_inline_edge): Update size.
8919         (cgraph_estimate_growth): Use size info.
8920         (cgraph_check_inline_limits): Check size.
8921         (cgraph_default_inline_p): Likewise.
8922         (cgraph_edge_badness): Compute badness based on benefit and size cost.
8923         (cgraph_decide_recursive_inlining): Check size.
8924         (cgraph_decide_inlining_of_small_function): Update size; dump sizes
8925         and times.
8926         (cgraph_decide_inlining): Likewise.
8927         (cgraph_decide_inlining_incrementally): Likewise; honor
8928         PARAM_EARLY_INLINING_INSNS.
8929         (likely_eliminated_by_inlining_p): New predicate.
8930         (estimate_function_body_sizes): New function.
8931         (compute_inline_parameters): Use it.
8932         * except.c (must_not_throw_labels): New function.
8933         * except.h (must_not_throw_labels): Declare.
8934         * tree-inline.c (init_inline_once): Kill inlining_weigths
8935         * tree-ssa-structalias.c: Avoid uninitialized warning.
8936         * params.def (PARAM_MAX_INLINE_INSNS_SINGLE): Reduce to 300.
8937         (PARAM_MAX_INLINE_INSNS_AUTO): Reduce to 60.
8938         (PARAM_INLINE_CALL_COST): Remove.
8939         (PARAM_EARLY_INLINING_INSNS): New.
8940
8941 2009-05-15  Richard Guenther  <rguenther@suse.de>
8942
8943         * tree-ssa-pre.c (eliminate): Use TODO_update_ssa_only_virtuals,
8944         not TODO_update_ssa.
8945
8946 2009-05-15  Richard Guenther  <rguenther@suse.de>
8947
8948         PR tree-optimization/39999
8949         * gimple.h (gimple_expr_type): Use the expression type looking
8950         through useless conversions.
8951         * tree-ssa-sccvn.c (vn_nary_op_lookup_stmt): Use gimple_expr_type.
8952         (vn_nary_op_insert_stmt): Likewise.
8953         (simplify_binary_expression): Likewise.
8954
8955 2009-05-15  Richard Guenther  <rguenther@suse.de>
8956
8957         * common.opt (-ftree-forwprop, -ftree-phiprop, -ftree-pta):
8958         New options, enabled by default.
8959         * doc/invoke.texi (-ftree-forwprop, -ftree-phiprop, -ftree-pta):
8960         Document.
8961         * tree-ssa-forwprop.c (gate_forwprop): Use flag_tree_forwprop.
8962         * tree-ssa-phiprop.c (gate_phiprop): Use flag_tree_phiprop.
8963         * tree-ssa-structalias.c (gate_tree_pta): New function.
8964         (pass_build_alias): Use it.
8965
8966 2009-05-15  Joseph Myers  <joseph@codesourcery.com>
8967
8968         * tree-ssa-forwprop.c (forward_propagate_addr_expr_1): Also
8969         recurse on an invariant address if a conversion from a pointer
8970         type to a wider integer type is involved.
8971
8972 2009-05-15  Jan Hubicka  <jh@suse.cz>
8973
8974         * cgraph.c (dump_cgraph_node): Dump size/time/benefit.
8975         * cgraph.h (struct inline_summary): New filed self_wize,
8976         size_inlining_benefit, self_time and time_inlining_benefit.
8977         (struct cgraph_global_info): Replace insns by time ans size fields.
8978         * ipa-cp (ipcp_cloning_candidate_p): Base estimate on size
8979         (ipcp_estimate_growth, ipcp_insert_stage): Likewise.
8980         (ipcp_update_callgraph): Do not touch function bodies.
8981         * ipa-inline.c: Include except.h
8982         (MAX_TIME): New constant.
8983         (overall_insns): Remove
8984         (overall_size, max_benefit): New static variables.
8985         (cgraph_estimate_time_after_inlining): New function.
8986         (cgraph_estimate_size_after_inlining): Rewrite using benefits.
8987         (cgraph_clone_inlined_nodes): Update size.
8988         (cgraph_mark_inline_edge): Update size.
8989         (cgraph_estimate_growth): Use size info.
8990         (cgraph_check_inline_limits): Check size.
8991         (cgraph_default_inline_p): Likewise.
8992         (cgraph_edge_badness): Compute badness based on benefit and size cost.
8993         (cgraph_decide_recursive_inlining): Check size.
8994         (cgraph_decide_inlining_of_small_function): Update size; dump sizes
8995         and times.
8996         (cgraph_decide_inlining): Likewise.
8997         (cgraph_decide_inlining_incrementally): Likewise; honor
8998         PARAM_EARLY_INLINING_INSNS.
8999         (likely_eliminated_by_inlining_p): New predicate.
9000         (estimate_function_body_sizes): New function.
9001         (compute_inline_parameters): Use it.
9002         * except.c (must_not_throw_labels): New function.
9003         * except.h (must_not_throw_labels): Declare.
9004         * tree-inline.c (init_inline_once): Kill inlining_weigths
9005         * tree-ssa-structalias.c: Avoid uninitialized warning.
9006         * params.def (PARAM_MAX_INLINE_INSNS_SINGLE): Reduce to 300.
9007         (PARAM_MAX_INLINE_INSNS_AUTO): Reduce to 60.
9008         (PARAM_INLINE_CALL_COST): Remove.
9009         (PARAM_EARLY_INLINING_INSNS): New.
9010         doc/invoke.texi (max-inline-insns-auto, early-inlining-insns): Update.
9011         (inline-call-cost): Remove.
9012         (early-inlining-insns): New.
9013
9014 2009-05-15  Eric Botcazou  <ebotcazou@adacore.com>
9015
9016         * dbxout.c (dbxout_range_type): Add LOW and HIGH parameters.  Use them
9017         for bounds.
9018         (print_int_cst_bounds_in_octal_p): Likewise.
9019         (dbxout_type): Adjust calls to above functions.  Be prepared to deal
9020         with subtypes.
9021         * dwarf2out.c (base_type_die): Likewise.
9022         (is_subrange_type): Delete.
9023         (subrange_type_die): Add LOW and HIGH parameters.  Use them for bounds.
9024         (modified_type_die): Call subrange_type_for_debug_p on subtypes.
9025         * fold-const.c (fold_truth_not_expr) <CONVERT_EXPR>: Do not strip it
9026         if the destination type is boolean.
9027         (build_range_check): Do not special-case subtypes.
9028         (fold_sign_changed_comparison): Likewise.
9029         (fold_unary): Likewise.
9030         * langhooks-def.h (LANG_HOOKS_GET_SUBRANGE_BOUNDS): Define.
9031         (LANG_HOOKS_FOR_TYPES_INITIALIZER): Add LANG_HOOKS_GET_SUBRANGE_BOUNDS.
9032         * langhooks.h (lang_hooks_for_types): Add get_subrange_bounds.
9033         * tree.c (subrange_type_for_debug_p): New predicate based on the
9034         former is_subrange_type.
9035         * tree.h (subrange_type_for_debug_p): Declare.
9036         * tree-chrec.c (avoid_arithmetics_in_type_p): Delete.
9037         (convert_affine_scev): Remove call to above function.
9038         (chrec_convert_aggressive): Likewise.
9039         * tree-ssa.c (useless_type_conversion_p_1): Do not specifically return
9040         false for conversions involving subtypes.
9041         * tree-vrp.c (vrp_val_max): Do not special-case subtypes.
9042         (vrp_val_min): Likewise.
9043         (needs_overflow_infinity): Likewise.
9044         (extract_range_from_unary_expr): Likewise.
9045
9046 2009-05-15  Paolo Bonzini  <bonzini@gnu.org>
9047
9048         * config/frv/frv.h: Clean up references to GO_IF_LEGITIMATE_ADDRESS.
9049         * config/frv/frv.c: Likewise.
9050         * config/s390/s390.c: Likewise.
9051         * config/sparc/sparc.h: Likewise.
9052         * config/i386/i386.h: Likewise.
9053         * config/i386/i386.c: Likewise.
9054         * config/crx/crx.c: Likewise.
9055         * config/m68hc11/m68hc11.h: Likewise.
9056         * config/iq2000/iq2000.c: Likewise.
9057         * config/mn10300/mn10300.h: Likewise.
9058         * config/mn10300/mn10300.c: Likewise.
9059         * config/m68k/m68k.c: Likewise.
9060         * config/rs6000/rs6000.c: Likewise.
9061         * config/rs6000/xcoff.h: Likewise.
9062         * config/rs6000/linux64.h: Likewise.
9063         * config/rs6000/sysv4.h: Likewise.
9064         * config/score/score3.c: Likewise.
9065         * config/score/score7.c: Likewise.
9066         * config/score/score.c: Likewise.
9067         * config/arm/arm.md: Likewise.
9068         * config/mips/mips.c: Likewise.
9069         * config/mips/mips.md: Likewise.
9070         * config/bfin/bfin.h: Likewise.
9071         * config/pa/pa.c: Likewise.
9072         * config/pa/constraints.md: Likewise.
9073
9074         * config/pdp11/pdp11-protos.h (legitimate_address_p): Delete.
9075         * config/pdp11/pdp11.c (legitimate_address_p): Delete.
9076         * config/pdp11/pdp11.h: Use memory_address_p instead.
9077
9078 2009-05-14  Ian Lance Taylor  <iant@google.com>
9079
9080         * passes.c (finish_optimization_passes): Change i to int.
9081         * plugin.c (plugins_active_p): Change event to int.
9082         (dump_active_plugins): Likewise.
9083         * reginfo.c (invalid_mode_change_p): Change to to unsigned int.
9084         Add cast.
9085         * tree.c (tree_range_check_failed): Change c to unsigned int.
9086         (omp_clause_range_check_failed): Likewise.
9087         (build_common_builtin_nodes): Change mode to int.  Add cast.
9088         * config/ia64/ia64.c (is_emitted): Change r to unsigned int.
9089         (ia64_hard_regno_rename_ok, ia64_eh_uses): Likewise.
9090
9091         * c-typeck.c (build_unary_op): If -Wc++-compat, warn about using
9092         ++ or -- with a variable of enum type.
9093
9094 2009-05-14  Steven Bosscher  <steven@gcc.gnu.org>
9095
9096         PR driver/40144
9097         * opts.c (common_handle_option): Add OPT_fcse_skip_blocks as a no-op.
9098
9099 2009-05-14  Steven Bosscher  <steven@gcc.gnu.org>
9100
9101         * store-motion.c: Do not include params.h
9102         * Makefile.in: Fix dependencies for various files.
9103
9104 2009-05-14  Steven Bosscher  <steven@gcc.gnu.org>
9105
9106         * auto-inc-dec.c: Fix pass description, remove apparent
9107         accidental duplication.
9108
9109 2009-05-14  H.J. Lu  <hongjiu.lu@intel.com>
9110
9111         PR middle-end/40147
9112         * ipa-utils.h (memory_identifier_string): Moved to ...
9113         * tree.h (memory_identifier_string): Here.  Add GTY(()).
9114
9115 2009-05-14  Paolo Bonzini  <bonzini@gnu.org>
9116
9117         * doc/tm.texi (TARGET_LEGITIMATE_ADDRESS_P): Refer mainly to this
9118         in the former documentation of...
9119         (GO_IF_LEGITIMATE_ADDRESS): ... this.
9120         * ira-conflicts.c (get_dup_num): Use address_operand.
9121         * targhooks.c (default_legitimate_address_p): New.
9122         * targhooks.h (default_legitimate_address_p): New.
9123         * reload.c (strict_memory_address_p) [!GO_IF_LEGITIMATE_ADDRESS]:
9124         Call hook.
9125         * recog.c (memory_address_p) [!GO_IF_LEGITIMATE_ADDRESS]: Call hook.
9126         * target.h (struct target): Add legitimate_address_p.
9127         * target-def.h (TARGET_LEGITIMATE_ADDRESS_P): New.
9128         (TARGET_INITIALIZER): Include it.
9129
9130         * config/alpha/alpha.h (GO_IF_LEGITIMATE_ADDRESS): Delete.
9131         * config/alpha/alpha-protos.h (alpha_legitimate_address_p): Remove.
9132         * config/alpha/alpha.c (alpha_legitimate_address_p): Make static.
9133         (TARGET_LEGITIMATE_ADDRESS_P): New.
9134
9135         * config/frv/frv.h (GO_IF_LEGITIMATE_ADDRESS): Delete.
9136         (REG_OK_STRICT_P): Delete.
9137         * config/frv/frv-protos.h (frv_legitimate_address_p): Rename to...
9138         (frv_legitimate_address_p_1): ... this.
9139         * config/frv/frv.c (frv_legitimate_address_p): Forward to...
9140         (frv_legitimate_address_p_1): ... the renamed old
9141         frv_legitimate_address_p.
9142         * config/frv/predicates.md: Adjust calls to frv_legitimate_address_p.
9143         (TARGET_LEGITIMATE_ADDRESS_P): New.
9144
9145         * config/s390/s390.h (GO_IF_LEGITIMATE_ADDRESS): Delete.
9146         * config/s390/s390-protos.h (legitimate_address_p): Remove.
9147         * config/s390/s390.c (legitimate_address_p): Rename to...
9148         (s390_legitimate_address_p): ... this, make static.
9149         (legitimize_address): Adjust call.
9150         (TARGET_LEGITIMATE_ADDRESS_P): New.
9151         * config/s390/constraints.md ("e"): Call strict_memory_address_p.
9152
9153         * config/m32c/m32c.h (GO_IF_LEGITIMATE_ADDRESS): Delete.
9154         * config/m32c/m32c-protos.h (m32c_legitimate_address_p): Remove.
9155         * config/m32c/m32c.c (m32c_legitimate_address_p): Make static.
9156         (TARGET_LEGITIMATE_ADDRESS_P): New.
9157
9158         * config/spu/spu.h (GO_IF_LEGITIMATE_ADDRESS): Delete.
9159         * config/spu/spu-protos.h (spu_legitimate_address): Remove.
9160         * config/spu/spu.c (spu_legitimate_address): Rename to...
9161         (spu_legitimate_address_p): ... this, make static.
9162         (TARGET_LEGITIMATE_ADDRESS_P): New.
9163
9164         * config/sparc/sparc.h (GO_IF_LEGITIMATE_ADDRESS): Delete.
9165         * config/sparc/sparc-protos.h (legitimate_address_p): Remove.
9166         * config/sparc/sparc.c (legitimate_address_p): Rename to...
9167         (sparc_legitimate_address_p): ... this, make static and return bool.
9168         (legitimize_address): Adjust call.
9169         (TARGET_LEGITIMATE_ADDRESS_P): New.
9170
9171         * config/i386/i386.h (GO_IF_LEGITIMATE_ADDRESS): Delete.
9172         * config/i386/i386-protos.h (legitimate_address_p): Remove.
9173         * config/i386/i386.c (legitimate_address_p): Rename to...
9174         (ix86_legitimate_address_p): ... this, make static.
9175         (constant_address_p): Move after it, adjust call.
9176         (TARGET_LEGITIMATE_ADDRESS_P): New.
9177
9178         * config/avr/avr.h (GO_IF_LEGITIMATE_ADDRESS): Delete.
9179         * config/avr/avr-protos.h (legitimate_address_p): Remove.
9180         * config/avr/avr.c (legitimate_address_p): Rename to...
9181         (avr_legitimate_address_p): ... this, make static.
9182         (legitimize_address): Adjust call.
9183         (TARGET_LEGITIMATE_ADDRESS_P): New.
9184
9185         * config/crx/crx.h (GO_IF_LEGITIMATE_ADDRESS): Delete.
9186         * config/crx/crx-protos.h (crx_legitimate_address_p): Remove.
9187         * config/crx/crx.c (crx_legitimate_address_p): Make static.
9188         (TARGET_LEGITIMATE_ADDRESS_P): New.
9189
9190         * config/xtensa/xtensa.h (GO_IF_LEGITIMATE_ADDRESS): Delete.
9191         * config/xtensa/xtensa-protos.h (xtensa_legitimate_address_p): Remove.
9192         * config/xtensa/xtensa.c (xtensa_legitimate_address_p): Make static.
9193         (TARGET_LEGITIMATE_ADDRESS_P): New.
9194
9195         * config/stormy16/stormy16.h (GO_IF_LEGITIMATE_ADDRESS): Delete.
9196         * config/stormy16/stormy16-protos.h (xstormy16_legitimate_address_p):
9197         Remove.
9198         * config/stormy16/stormy16.c (xstormy16_legitimate_address_p):
9199         Make static.
9200         (TARGET_LEGITIMATE_ADDRESS_P): New.
9201
9202         * config/m68hc11/m68hc11.h (GO_IF_LEGITIMATE_ADDRESS): Delete.
9203         * config/m68hc11/m68hc11-protos.h (m68hc11_go_if_legitimate_address):
9204         Remove.
9205         * config/m68hc11/m68hc11.c (m68hc11_go_if_legitimate_address):
9206         Rename to...
9207         (m68hc11_legitimate_address_p): ... this, make static.
9208         (go_if_legitimate_address_internal): Rename to...
9209         (m68hc11_legitimate_address_p_1): ... this.
9210         (legitimize_address): Adjust call.
9211         (TARGET_LEGITIMATE_ADDRESS_P): New.
9212
9213         * config/iq2000/iq2000.h (GO_IF_LEGITIMATE_ADDRESS): Delete.
9214         * config/iq2000/iq2000-protos.h (iq2000_legitimate_address_p): Remove.
9215         * config/iq2000/iq2000.c (iq2000_legitimate_address_p): Make static.
9216         (TARGET_LEGITIMATE_ADDRESS_P): New.
9217
9218         * config/mn10300/mn10300.h (GO_IF_LEGITIMATE_ADDRESS): Delete.
9219         * config/mn10300/mn10300-protos.h (legitimate_address_p): Remove.
9220         * config/mn10300/mn10300.c (legitimate_address_p): Rename to...
9221         (mn10300_legitimate_address_p): ... this, make static.
9222         (TARGET_LEGITIMATE_ADDRESS_P): New.
9223
9224         * config/m68k/m68k.h (GO_IF_LEGITIMATE_ADDRESS): Delete.
9225         * config/m68k/m68k-protos.h (m68k_legitimate_address_p): Remove.
9226         * config/m68k/m68k.c (m68k_legitimate_address_p): Make static.
9227         (TARGET_LEGITIMATE_ADDRESS_P): New.
9228
9229         * config/rs6000/rs6000.h (GO_IF_LEGITIMATE_ADDRESS): Delete.
9230         (REG_OK_STRICT_FLAG, REG_OK_FOR_BASE_P, REG_OK_FOR_INDEX_P): Delete.
9231         (INT_REG_OK_FOR_BASE_P, INT_REG_OK_FOR_INDEX_P): Move above.
9232         * config/rs6000/rs6000.h (GO_IF_LEGITIMATE_ADDRESS): Delete.
9233         * config/rs6000/rs6000-protos.h (rs6000_legitimate_address): Remove.
9234         * config/rs6000/rs6000.c (rs6000_legitimate_address): Rename to...
9235         (rs6000_legitimate_address_p): ... this, make static.
9236         (TARGET_LEGITIMATE_ADDRESS_P): New.
9237         (REG_MODE_OK_FOR_BASE_P): Delete.
9238         (rs6000_legitimize_reload_address): Use INT_REG_OK_FOR_BASE_P.
9239
9240         * config/picochip/picochip.h (GO_IF_LEGITIMATE_ADDRESS): Delete.
9241         * config/picochip/picochip-protos.h (picochip_legitimate_address_p):
9242         Delete.
9243         * config/picochip/picochip.c (picochip_legitimate_address_p): Make
9244         static, adjust types.
9245         (TARGET_LEGITIMATE_ADDRESS_P): New.
9246
9247         * config/score/score.h (GO_IF_LEGITIMATE_ADDRESS): Delete.
9248         * config/score/score.c (score_address_p): Rename to...
9249         (score_legitimate_address_p): ... this.
9250         (TARGET_LEGITIMATE_ADDRESS_P): New.
9251         * config/score/score3.c (score3_address_p): Rename to...
9252         (score3_legitimate_address_p): ... this.
9253         * config/score/score7.c (score7_address_p): Rename to...
9254         (score7_legitimate_address_p): ... this.
9255
9256         * config/arm/arm.h (ARM_GO_IF_LEGITIMATE_ADDRESS,
9257         THUMB2_GO_IF_LEGITIMATE_ADDRESS, THUMB1_GO_IF_LEGITIMATE_ADDRESS,
9258         GO_IF_LEGITIMATE_ADDRESS): Delete.
9259         * config/arm/arm-protos.h (thumb1_legitimate_address_p,
9260         thumb2_legitimate_address_p): Delete.
9261         (arm_legitimate_address_p): Rename to...
9262         (arm_legitimate_address_outer_p): ... this.
9263         * config/arm/constraints.md ("Uq"): Adjust call.
9264         * config/arm/predicates.md (arm_extendqisi_mem_op): Likewise.
9265         * config/arm/arm.c (arm_legitimate_address_p): New, rename old one
9266         to...
9267         (arm_legitimate_address_outer_p): ... this.
9268         (thumb1_legitimate_address_p, thumb2_legitimate_address_p): Make
9269         static.
9270         (TARGET_LEGITIMATE_ADDRESS_P): New.
9271
9272         * config/mips/mips.h (GO_IF_LEGITIMATE_ADDRESS): Delete.
9273         * config/mips/mips-protos.h (mips_legitimate_address_p): Remove.
9274         * config/mips/mips.c (mips_legitimate_address_p): ... Make static.
9275         (TARGET_LEGITIMATE_ADDRESS_P): New.
9276
9277         * config/vax/vax.h (GO_IF_LEGITIMATE_ADDRESS): Delete.
9278         * config/vax/vax-protos.h (legitimate_address_p): Remove.
9279         * config/vax/vax.c (legitimate_address_p): Rename to...
9280         (vax_legitimate_address_p): ... this, make static.
9281         (TARGET_LEGITIMATE_ADDRESS_P): New.
9282
9283         * config/h8300/h8300.h (GO_IF_LEGITIMATE_ADDRESS): Delete.
9284         * config/h8300/h8300-protos.h (h8300_legitimate_address_p): Remove.
9285         * config/h8300/h8300.c (h8300_legitimate_address_p): ... Make static.
9286         (TARGET_LEGITIMATE_ADDRESS_P): New.
9287
9288         * config/mmix/mmix.h (GO_IF_LEGITIMATE_ADDRESS): Delete.
9289         * config/mmix/mmix-protos.h (mmix_legitimize_address): Remove.
9290         * config/mmix/mmix.c (mmix_legitimate_address): Rename to...
9291         (mmix_legitimate_address_p): ... this, make static.
9292         (TARGET_LEGITIMATE_ADDRESS_P): New.
9293
9294         * config/bfin/bfin.h (GO_IF_LEGITIMATE_ADDRESS): Delete.
9295         * config/bfin/bfin-protos.h (bfin_legitimate_address_p): Remove.
9296         * config/bfin/bfin.c (bfin_legitimate_address_p): ... Make static.
9297         (TARGET_LEGITIMATE_ADDRESS_P): New.
9298
9299 2009-05-14  Paolo Bonzini  <bonzini@gnu.org>
9300
9301         * config/arm/arm.h (PROMOTE_FUNCTION_MODE): Remove handling
9302         of MODE_COMPLEX_INT.
9303
9304 2009-05-14  Rainer Orth  <ro@TechFak.Uni-Bielefeld.DE>
9305
9306         * config/alpha/alpha.c (alpha_initialize_trampoline): Change 0 to
9307         LCT_NORMAL in function call.
9308         * mips-tdump.c (print_file_desc): Add cast to enum type.
9309         * mips-tfile.c (add_ext_symbol): Add casts to enum types.
9310         (mark_stabs): Add casts to enum types.
9311         (parse_stabs_common): Add casts to enum types.
9312
9313 2009-05-13  Adam Nemet  <anemet@caviumnetworks.com>
9314
9315         * config/mips/mips.c (mips_print_operand) <REG, MEM, default>:
9316         Check for invalid values of LETTER.
9317
9318 2009-05-13  Taras Glek  <tglek@mozilla.com>
9319
9320         * attribs.c (register_attribute): moved out attribute registration
9321         into register_attribute.
9322         * doc/plugins.texi: Documented register_attribute and
9323         PLUGIN_ATTRIBUTES.
9324         * gcc-plugin.h: Added forward decl for register_attribute.
9325         * gcc-plugin.h (plugins_event): Added PLUGIN_ATTRIBUTES.
9326         * plugin.c (register_callback, invoke_plugin_callbacks): Added
9327         PLUGIN_ATTRIBUTES boilerplate.
9328
9329 2009-05-14  Dave Korn  <dave.korn.cygwin@gmail.com>
9330
9331         * config/i386/msformat-c.c (ms_printf_length_specs):  Use enumeration
9332         values even in sentinel and empty entries.
9333         (ms_printf_flag_specs):  Likewise.
9334         (ms_scanf_flag_specs):  Likewise.
9335         (ms_strftime_flag_specs):  Likewise.
9336         (ms_print_char_table):  Likewise.
9337         (ms_scan_char_table):  Likewise.
9338         (ms_time_char_table):  Likewise.
9339
9340 2009-05-13  Doug Kwan  <dougkwan@google.com>
9341
9342         * tree-ssa-sccvn.c (compare_ops): Stabilize qsort.
9343
9344 2009-05-13  Adam Nemet  <anemet@caviumnetworks.com>
9345
9346         * config/mips/mips.md (store): Add attributes for QI and HI.
9347         Update comment.
9348         (truncdisi2, truncdihi2, truncdiqi2): Merge these into ...
9349         (truncdi<mode>2): ... this new pattern.
9350
9351 2009-05-13  Brad Hards  <bradh@kde.org>
9352
9353         * Makefile.in (TEXI_GCCINT_FILES): Add plugins.texi.
9354
9355 2009-05-14  Jakub Jelinek  <jakub@redhat.com>
9356             Ben Elliston <bje@au.ibm.com>
9357
9358         PR middle-end/40035
9359         * dse.c (check_mem_read_rtx): Guard against width == -1.
9360
9361 2009-05-13  Michael Matz  <matz@suse.de>
9362
9363         PR middle-end/39976
9364         * tree-outof-ssa.c (maybe_renumber_stmts_bb): New function.
9365         (trivially_conflicts_p): New function.
9366         (insert_backedge_copies): Use it.
9367
9368 2009-05-13  Janis Johnson  <janis187@us.ibm.com>
9369
9370         * c-pragma.c (enum pragma_switch_t): Prefix constants with PRAGMA_.
9371         (handle_stdc_pragma): Use new enum constant names.
9372         (handle_pragma_float_const_decimal64): Ditto.
9373
9374 2009-05-13  Ian Lance Taylor  <iant@google.com>
9375
9376         * Makefile.in (build/gencheck.o): Depend upon all-tree.def, not
9377         tree.def.
9378
9379 2009-05-13  Nathan Sidwell  <nathan@codesourcery.com>
9380
9381         * config/m68k/t-uclinux (M68K_MLIB_CPU): Check for FL_UCLINUX.
9382         * config/m68k/m68k-devices.def: Add FL_UCLINUX to 68020 and 54455
9383         multilibs.
9384         * config/m68k/m68k.h (FL_UCLINUX): Define.
9385
9386 2009-05-13  Jan Hubicka  <jh@suse.cz>
9387
9388         * options.c (gfc_post_options): -fwhole-program imply -fwhole-file.
9389
9390 2009-05-12  Kaz Kojima  <kkojima@gcc.gnu.org>
9391
9392         * config/sh/sh.h (OVERRIDE_OPTIONS): Clear flag_schedule_insns
9393         unless -fschedule-insns is specified.
9394
9395 2009-05-12  Kaz Kojima  <kkojima@gcc.gnu.org>
9396
9397         PR target/39561
9398         * config/sh/sh.h (OPTIMIZATION_OPTIONS): Don't set
9399         TARGET_EXPAND_CBRANCHDI4.
9400         * config/sh/sh.md (cbranchdi4): Don't check TARGET_EXPAND_CBRANCHDI4.
9401         * config/sh/sh.opt (mexpand-cbranchdi): Remove.
9402         (cmpeqdi): Fix comment.
9403
9404 2009-05-12  Kaz Kojima  <kkojima@gcc.gnu.org>
9405
9406         * config/sh/sh-protos.h (sh_legitimate_index_p): Declare.
9407         (sh_legitimate_address_p): Likewise.
9408         * config/sh/sh.c (sh_legitimate_index_p): New.
9409         (sh_legitimate_address_p): Likewise.
9410         * config/sh/sh.h (REG_OK_FOR_BASE_P): Add STRICT parameter.
9411         (REG_OK_FOR_INDEX_P, SUBREG_OK_FOR_INDEX_P): Likewise.
9412         (MODE_DISP_OK_4, MODE_DISP_OK_8): Remove.
9413         (MAYBE_BASE_REGISTER_RTX_P): New macro.
9414         (MAYBE_INDEX_REGISTER_RTX_P): Likewise.
9415         (BASE_REGISTER_RTX_P): Use MAYBE_BASE_REGISTER_RTX_P.
9416         (INDEX_REGISTER_RTX_P): Use MAYBE_INDEX_REGISTER_RTX_P.
9417         (GO_IF_LEGITIMATE_INDEX): Use sh_legitimate_index_p.
9418         (GO_IF_LEGITIMATE_ADDRESS): Use sh_legitimate_address_p.
9419
9420 2009-05-12  Jan Hubicka  <jh@suse.cz>
9421
9422         * tree-inline.c (estimate_operator_cost): Add operands;
9423         when division happens by constant, it is cheap.
9424         (estimate_num_insns): Loads and stores are not having cost of 0;
9425         EH magic stuff is cheap; when computing runtime cost of switch,
9426         use log2 base of amount of its cases; builtin_expect has cost of 0;
9427         compute cost for moving return value of call.
9428         (init_inline_once): Initialize time_based flags.
9429         * tree-inline.h (eni_weights_d): Add time_based flag.
9430
9431 2009-05-12  Paolo Bonzini  <bonzini@gnu.org>
9432
9433         * df-core.c: Update head documentation.
9434
9435 2009-05-12  Michael Meissner  <meissner@linux.vnet.ibm.com>
9436
9437         PR bootstrap/40118
9438         * rs6000.c (rs6000_generate_compare): Use op1b instead of
9439         shadowing exisiting variable op1.
9440
9441 2009-05-12  Uros Bizjak  <ubizjak@gmail.com>
9442
9443         PR target/37179
9444         * config/i386/driver-i386.c (processor_signatures): New enum.
9445         (SIG_GEODE): Move from vendor_signatures to processor_signatures.
9446         (host_detect_local_cpu): For SIG_AMD vendor, check for SIG_GEODE
9447         processor signature to detect geode processor.
9448
9449 2009-05-12  Paolo Bonzini  <bonzini@gnu.org>
9450
9451         Revert:
9452
9453         2009-05-12  Paolo Bonzini  <bonzini@gnu.org>
9454
9455         * optabs.c (prepare_cmp_insn): Temporarily disable test that
9456         causes spurious differences between trunk and cond-optab branch.
9457
9458 2009-05-12  Paolo Bonzini  <bonzini@gnu.org>
9459
9460         * dojump.c (compare_from_rtx): Delete.
9461         * expmed.c (emit_store_flag): Only try cstore_optab.  Canonicalize
9462         any MODE_CC mode to the cstorecc4 pattern.  Use prepare_operand, fail
9463         if the comparison does not satisfy the predicate; test predicates for
9464         operands 2 and 3 of a cstore pattern.  Don't try cstore optab
9465         further if one existing pattern fails.
9466         * expr.h (compare_from_rtx): Delete.
9467         (prepare_operand): Declare it.
9468         * optabs.c: Change "lib call" to "libcall" throughout.
9469         (bcc_gen_fctn, setcc_gen_code, trap_rtx,
9470         HAVE_conditional_trap, emit_cmp_insn): Delete.
9471         (can_compare_p): Delete cmp_optab case.
9472         (prepare_float_lib_cmp): Return an rtx and a machine mode.
9473         Accept other parameters by value.
9474         (prepare_operand): Make non-static.
9475         (prepare_cmp_insn): Return an rtx and a machine mode.  Accept
9476         other parameters by value.  Try to widen operands here based on
9477         an optab_methods argument and looking at cbranch_optab.
9478         (emit_cmp_and_jump_insn_1): Accept test and mode, remove widening
9479         loop.  Use cbranch_optab directly.
9480         (emit_cmp_and_jump_insns): Fix comment.  Adjust call to
9481         prepare_cmp_insn and emit_cmp_and_jump_insn_1, remove obsolete
9482         assertion.
9483         (emit_conditional_move, emit_conditional_add): Inline what's needed
9484         of compare_from_rtx, using new prepare_cmp_insn for the rest.
9485         (init_optabs): Init cmp_optab with UNKNOWN, cbranch_optab
9486         with COMPARE.  Move cmov_optab and cstore_optab above
9487         with cbranch_optab, move cmp_optab down with ucmp_optab,
9488         remove tst_otpab.  Do not initialize trap_rtx.
9489         (gen_cond_trap): Do it here.  Use ctrap_optab.  Test predicate
9490         for trap code.  Do not check HAVE_conditional_trap.  Use
9491         prepare_cmp_insn.  Accept no predicate for operand 3.
9492         * optabs.h (OTI_cmp): Mark as used only for libcalls.
9493         (OTI_ctrap, ctrap_optab): New.
9494         (tst_optab): Delete.
9495         (bcc_gen_fctn, setcc_gen_code, emit_cmp_insn): Delete.
9496         * ifcvt.c (find_if_header): Replace HAVE_conditional_trap
9497         with lookup of ctrap_optab.
9498         * genopinit.c (cmp_optab, tst_optab, bcc_gen_fctn, setcc_gen_code):
9499         Delete.
9500         (ctrap_optab): New.
9501
9502         * combine.c (combine_simplify_rtx, simplify_set): Do not
9503         special case comparing against zero for cc0 machines.
9504         * simplify-rtx.c (simplify_binary_operation_1): Never remove
9505         COMPARE on cc0 machines.
9506         (simplify_relational_operation): Return a new expression when
9507         a COMPARE could be removed.
9508         * final.c (final_scan_insn): Compare cc_status values
9509         against LHS of a (compare FOO (const_int 0)) cc0 source.
9510         Also check if cc_status.value is the full compare.
9511
9512         * doc/md.texi (bCC, sCC, tstMM, cmpMM): Delete.
9513         (cstoreMM4): Document.
9514         (conditional_trap): Document ctrapMM4 instead.
9515         (sync_compare_and_swapMM): Refer to cbranchcc4.
9516         (Dependent Patterns): Eliminate obsolete information referring to
9517         the old jump optimization phase.
9518         (Canonicalization): Include cbranchcc4 case, omit canonicalization
9519         of compares with 0 on cc0 machines.
9520         (Jump Patterns): Refer to MODE_CC jump patterns preferably,
9521         avoiding references to cc0.  Remove text about storing operands
9522         in cmpMM.
9523         * doc/tm.texi (Condition Codes): Include blurb on different
9524         condition code representations, separate into subsections for
9525         CC0, MODE_CC and conditional execution.
9526
9527         * config/alpha/alpha-protos.h (alpha_emit_conditional_branch,
9528         alpha_emit_setcc): Accept operands and a machine mode.
9529         * config/alpha/alpha.c (alpha_emit_conditional_branch):
9530         Get code/op0/op1 from operands, use machine mode argument
9531         instead of alpha_compare.fp_p.  Emit the branch here.
9532         (alpha_emit_setcc): Likewise, and return boolean.
9533         (alpha_emit_conditional_move): Likewise.  Assert that
9534         cmp_op_mode == cmp_mode, and simplify accordingly.
9535         * config/alpha/alpha.h (struct alpha_compare, alpha_compare): Delete.
9536         * config/alpha/alpha.md (cmpdf, cmptf, cmpdi, bCC, sCC): Delete.
9537         (cbranchdf4, cbranchtf4, cbranchdi4, cstoredf4, cstoretf4,cstoredi4):
9538         Delete.
9539         (stack probe test): Use cbranchdi4.
9540         * config/alpha/predicates.md (alpha_cbranch_operator): New.
9541
9542         * config/arc/arc.c (gen_compare_reg): Do not emit cmp. 
9543         * config/arc/arc.h (movsicc, movsfcc): Use it.
9544         (movdicc, *movdicc_insn, movdfcc, *movdfcc_insn): Remove.
9545         (cbranchsi4, cstoresi4): New.
9546         (cmpsi, bCC and sCC expanders): Remove. 
9547
9548         * config/arm/arm.c (arm_compare_op0, arm_compare_op1): Delete.
9549         * config/arm/arm.h (arm_compare_op0, arm_compare_op1): Delete.
9550         * config/arm/predicates.md (arm_comparison_operator): Only include
9551         floating-point operators if there is a hardware floating-point unit.
9552         * config/arm/arm.md (cbranchsi4, cstoresi4): Enable for TARGET_32BIT,
9553         deferring to cbranch_cc and cstore_cc respectively.
9554         (cbranchsf4, cbranchdf4, cbranchdi4, cstoresf4, cstoredf4, cstoredi4,
9555         cbranch_cc, cstore_cc): New.
9556         (movsicc, movsfcc, movdfcc): Do not use arm_compare_op0 and
9557         arm_compare_op1.
9558         (bCC, sCC, cmpsi, cmpsf, cmpdf, cmpdi): Delete.
9559
9560         * config/avr/avr-protos.h (out_tstsi, out_tsthi): Adjust prototype.
9561         * config/avr/avr.c (out_tstsi, out_tsthi): Get the tested operand
9562         as an argument.
9563         (adjust_insn_length): Adjust calls.
9564         (avr_reorg): Handle (compare (foo) (const_int 0)).
9565         * config/avr/avr.md (tstqi, tsthi, tstsi): Remove.
9566         (*negated_tstqi, *negated_tsthi, *negated_tstsi): Unmacroize.
9567         (*reversed_tsthi, *reversed_tstsi): Add a scratch for simplicity.
9568         (cmpqi, cmphi, cmpsi): Prepend asterisk, fuse tst[qhs]i here.
9569         (bCC): Remove.
9570         (cbranchqi4, cbranchhi4, cbranchsi4): New.
9571         (tst -> sbrc/sbrs peephole2, cpse peephole): Wrap RHS with COMPARE.
9572
9573         * config/bfin/bfin.md (cmpbi, cmpsi, bCC, sCC): Delete.
9574         (cbranchsi4, cstorebi4, cstoresi4): New.
9575         (movbisi): This insn is duplicate, split it to zero_extend.
9576         * config/bfin/bfin.c (bfin_compare_op0, bfin_compare_op1): Delete
9577         (bfin_gen_compare): Do not use them.  Emit VOIDmode SET, not BImode.
9578         (bfin_optimize_loop): Use cbranch expander.
9579         * config/bfin/bfin.h (bfin_compare_op0, bfin_compare_op1): Delete.
9580         * config/bfin/predicates.md (bfin_cbranch_operator): Rename to...
9581         (bfin_bimode_comparison_operator): ... this.
9582         (bfin_direct_comparison_operator): New.
9583  
9584         * config/cris/cris.c (cris_normal_notice_update_cc): Look
9585         inside (compare FOO (const_int 0)).
9586         (cris_rtx_costs): Handle ZERO_EXTRACT.
9587         * config/cris/cris.md (tstdi, tst<mode>, cmpdi): Delete.
9588         (*tstdi_non_v32): Fold in *cmpdi_non_v32.
9589         (*tstdi_v32): Delete.
9590         (*cmpdi_non_v32): Add M alternative for operand 1.
9591         (cmpsi, cmp<mode>): Make private.
9592         (*tstsi, *tst<mode>_cmp, *tst<mode>_non_cmp, *btst): Wrap LHS
9593         with COMPARE.
9594         (cbranch<mode>4, cbranchdi4, cstore<mode>4): New.
9595
9596         * config/crx/crx.md (cstore<mode>4, cbranchcc4): New.
9597         (cmp<mode>, bCOND_internal, b<code>, s<code>): Delete.
9598         (cbranch<mode>4, sCOND_internal): Use ordered_comparison_operator.
9599         (cc_reg_operand): New.
9600         (any_cond): Delete.
9601         * config/crx/crx.c (crx_compare_op0, crx_compare_op1,
9602         crx_expand_compare, crx_expand_branch, crx_expand_scond): Delete.
9603         * config/crx/crx.h (crx_compare_op0, crx_compare_op1): Delete.
9604         * config/crx/crx-protos.h (crx_expand_compare, crx_expand_branch,
9605         crx_expand_scond): Delete.
9606
9607         * config/fr30/fr30.md (cmp<mode>, bCC): Delete.
9608         (cbranchsi4): New.
9609         * config/fr30/fr30.c (fr30_compare_op0, fr30_compare_op1): Delete
9610         * config/fr30/fr30.h (fr30_compare_op0, fr30_compare_op1): Delete.
9611
9612         * config/frv/frv.md (cbranchsi4, cbranchsf4, cbranchdf4,
9613         cstoresi4, cstoresf4, cstoredf4): New.
9614         (cmpdi, cmpsi, cmpsf, cmpdf, bCC, sCC): Remove.
9615         * config/frv/frv-protos.h (frv_emit_cbranch, frv_emit_scc):
9616         Receive the entire operands array.
9617         * config/frv/frv.h (frv_compare_op0, frv_compare_op1): Delete.
9618         * config/frv/frv.c (frv_compare_op0, frv_compare_op1): Delete.
9619         * config/frv/frv-protos.h (frv_emit_cbranch, frv_emit_scc):
9620         Get test/op0/op1 from the operands array.
9621         (frv_emit_cond_move): Get test/op0/op1 from the test_rtx.
9622
9623         * config/h8300/h8300-protos.h (h8300_expand_branch): Accept operands.
9624         (h8300_expand_store): New.
9625         * config/h8300/h8300.c (h8300_rtx_costs): Handle (compare FOO
9626         (const_int 0)).
9627         (h8300_expand_branch): Emit compare here.  Adjust for new arguments.
9628         (h8300_expand_store): New.
9629         * config/h8300/h8300.md (btst combine patterns): Wrap with COMPARE
9630         or do not try to produce (set (cc0) REG).
9631         (peepholes): Wrap arguments with COMPARE.  Add a peephole to
9632         change a compare into a move to a scratch register.  Disable some
9633         peepholes when comparing with zero.
9634         (tstsi, tsthi, tstsi, cmpqi): Make private.
9635         (cmphi): Delete.
9636         (bCC, sCC): Delete.
9637         (cbranchqi4, cbranchhi4, cbranchsi4, cstoreqi4, cstorehi4,
9638         cstoresi4): New.
9639
9640         * config/i386/i386.c (ix86_expand_int_movcc, ix86_expand_int_addcc,
9641         ix86_expand_fp_movcc): Set ix86_compare_op0 and ix86_compare_op1.
9642         (ix86_emit_i387_log1p): Use gen_cbranchxf4.
9643         (ix86_emit_i387_log1p): Use cbranchxf2.
9644         (ix86_expand_setcc): Return void.
9645         * config/i386/i386-protos.h (ix86_expand_setcc): Return void.
9646         * config/i386/i386.md (cmpti, cmpdi, cmpsi, cmphi, cmpqi, cmpxf,
9647         cmp<MODEF>, cmpcc): Remove.
9648         (cbranchti4, cbranchdi4, cbranchsi4, cbranchhi4, cbranchqi4,
9649         cbranchxf4, cbranch<MODEF>4, cbranchcc4, cstoredi4, cstoresi4,
9650         cstorehi4, cstoreqi4, cstorexf4, cstore<MODEF>4, cstorecc): New.
9651         (sCC and bCC expanders): Remove.
9652         (stack_protect_test): Use cbranchcc4.
9653
9654         * config/ia64/ia64-protos.h (ia64_compare_op0, ia64_compare_op1):
9655         Delete.
9656         (ia64_expand_compare): Accept three rtx by reference and return void.
9657         * config/ia64/ia64.c (ia64_compare_op0, ia64_compare_op1): Delete.
9658         (ia64_expand_compare): Replace op0/op1 with *op0/*op1.  Get code
9659         from *expr.  Update *expr with the BImode comparison to do.
9660         * config/ia64/ia64.md (cmpbi, cmpsi, cmpdi, cmpsf, cmpdf, cmpxf,
9661         cmptf, bCC, sCC, conditional_trap): Delete.
9662         (cbranchbi4, cbranchsi4, cbranchdi4, cbranchsf4, cbranchdf4, 
9663         cbranchxf4, cbranchtf4, cstorebi4, cstoresi4, cstoredi4, cstoresf4,
9664         cstoredf4, cstorexf4, cstoretf4, ctrapbi4, ctrapsi4, ctrapdi4,
9665         ctrapsf4, ctrapdf4, ctrapxf4, ctraptf4): New.
9666         * config/ia64/predicates.md (ia64_cbranch_operator): New.
9667
9668         * config/iq2000/iq2000-protos.h (gen_conditional_branch): Change
9669         type of last argument.
9670         * config/iq2000/iq2000.c (branch_cmp, branch_type): Remove.
9671         (gen_conditional_branch): Get code/cmp0/cmp1 from operands,
9672         use machine mode argument instead of branch_type.  Remove dead
9673         code for floating-point comparisons.
9674         * config/iq2000/iq2000.h (branch_cmp, branch_type): Remove.
9675         * config/iq2000/iq2000.md (cmpsi, cmpdi, cmpsf, cmpdf, tstsi, bCC):
9676         Remove.
9677         (cbranchsi4, cstoresi4): New.
9678         * config/iq2000/predicates.md (reg_or_const_operand): New.
9679
9680         * config/m32c/m32c.md (cbranch splitter): Use match_op_dup.
9681         * config/m32c/m32c.md (any_cond, gl_cond): Delete.
9682         (b<code>_op): Rewrite to...
9683         (bcc_op): ... this, using match_operator.
9684         (s<code>_op): Rewrite to...
9685         (scc_op): ... this, using match_operator.
9686         (s<code>_24_op): Rewrite to...
9687         (scc_op_24): ... this, using match_operator.
9688         (s<code>_<mode>): Rewrite to...
9689         (cstore<mode>4): ... this, using match_operator.
9690         (s<code>_<mode>_24): Rewrite to...
9691         (cstore<mode>4_24): ... this, using match_operator.
9692         * config/m32c/m32c-protos.h (m32c_cmp_flg_0, m32c_pend_compare,
9693         m32c_unpend_compare, m32c_expand_scc): Delete.
9694         * config/m32c/m32c.c (compare_op0, compare_op1, m32c_cmp_flg_0,
9695         m32c_pend_compare, m32c_unpend_compare, m32c_expand_scc): Delete.
9696         (m32c_expand_movcc): Change NE to EQ if necessary.
9697         (m32c_init_libfuncs): Modify cstore optab instead of setcc_gen_code.
9698
9699         * config/m32r/m32r-protos.h (gen_cond_store): New.
9700         * config/m32r/m32r.c (m32r_compare_op0, m32r_compare_op1): Delete.
9701         (gen_cond_store): New, from sCC patterns.
9702         (m32r_expand_block_move): Use cbranchsi4.
9703         * config/m32r/m32r.h (m32r_compare_op0, m32r_compare_op1): Delete.
9704         * config/m32r/m32r.md (cmpsi, bCC, sCC): Delete.
9705         (cbranchsi4, cstoresi4): New.
9706         
9707         * config/m68hc11/m68hc11.c (m68hc11_compare_op0, m68hc11_compare_op1):
9708         Delete.
9709         (m68hc11_rtx_costs_1, m68hc11_rtx_costs): Handle ZERO_EXTRACT.
9710         (m68hc11_notice_update_cc): Look into a compare with 0.
9711         * config/m68hc11/m68hc11.h (m68hc11_compare_op0, m68hc11_compare_op1):
9712         Delete.
9713         * config/m68hc11/m68hc11.md (tstsi, tsthi, tstqi, cmpsi,
9714         cmphi, cmpqi, bCC): Delete.
9715         (cbranchsi4, cbranchhi4, cbranchqi4): New.
9716         (tstqi_1, tstqi_z_used, tstqi_1, bitcmpqi, bitcmpqi_z_used,
9717         bitcmpqi_12, bitcmphi, various splits and peephole2s): Wrap cc0<-reg
9718         sets with COMPARE.
9719
9720         * config/m68k/predicates.md (m68k_cstore_comparison_operator,
9721         const0_operand, const1_operand, m68k_subword_comparison_operand): New.
9722         * config/m68k/constraints.md (H): New.
9723         * config/m68k/m68k.md (tstdi): Remove define_expand, use name for
9724         the define_insn below.
9725         (tstsi, tsthi, tst<FP:mode>, cmphi, cmpqi, cmp<FP:mode>): Delete.
9726         (*tstsi_internal_68020_cf, *tstsi_internal, *tsthi_internal,
9727         *tstqi_internal, tst<mode>_6881, tst<mode>_cf, many unnamed
9728         patterns): Wrap RHS with COMPARE.
9729         (tst<FP>_68881, tst<FP>_cf): Use const0_operand.
9730         (*cmpdi_internal): Name this pattern.
9731         (cmpdi): Change to define_insn.
9732         (cbranchdi4, cstoredi4, cbranchsi4, cstoresi4, cbranchhi4, cstorehi4,
9733         cbranchqi4, cstoreqi4, cbranch<FP:mode>4, cstore<FP:mode>4): New.
9734         (scc0_di, scc0_di_5200, scc_di): Use the ordered_comparison_operator
9735         predicate.
9736         (seq, sne, sgt, sgtu, slt, sltu, sge, sgeu, sle, sleu, sordered,
9737         sunordered, suneq, sunge, sungt, sunle, sunlt, sltgt): Delete
9738         (conditional_trap): Change to...
9739         (ctrapdi4, ctrapsi4, ctraphi4, ctrapqi4): ... these.
9740         (*conditional_trap): Use the ordered_comparison_operator and
9741         const1_operand predicates.
9742         * config/m68k/m68k.c (m68k_last_compare_had_fp_operands): Delete.
9743         (m68k_expand_prologue): Use ctrapsi4 instead of cmpsi+conditional_trap.
9744         (m68k_rtx_costs): Look for ZERO_EXTRACT in a COMPARE.
9745         * config/m68k/m68k.h (m68k_last_compare_had_fp_operands): Delete.
9746
9747         * config/mcore/mcore-protos.h (arch_compare_op0, arch_compare_op1,
9748         mcore_modify_comparison, mcore_gen_compare_reg): Remove.
9749         (mcore_gen_compare): New. 
9750         * config/mcore/mcore.c (arch_compare_op0, arch_compare_op1): Delete.
9751         (mcore_modify_comparison, mcore_gen_compare_reg): Fold into...
9752         (mcore_gen_compare): ... this.
9753         * config/mcore/mcore.md (cmpsi, bCC, sCC): Remove.
9754         (cbranchsi4, cstoresi4): New, using mcore_gen_compare.
9755         (stack probe pattern): Use cbranchsi4.
9756
9757         * config/mips/predicates.md (mips_cstore_operator): New.
9758         * config/mips/mips-ps-3d.md (movv2sfcc): Do not use cmp_operands.
9759         * config/mips/mips.md (any_cond): Delete.
9760         (conditional_trap): Rename to ctrap<GPR:mode>4.  Adjust predicates,
9761         always succeed.
9762         (fixuns_truncdfsi2, fixuns_truncdfdi2, fixuns_truncsfsi2,
9763         fixuns_truncsfdi2): Use cbranch patterns.
9764         (cmp<GPR:mode>, cmp<SCALARF:mode>): Delete. 
9765         (b<code>): Change to cbranch<GPR:mode>4 and cbranch<SCALARF:mode>4.
9766         Adjust call to mips_expand_conditional_branch.
9767         (seq, sne, slt<u>, sle<u>, sgt<u>, sge<u>): Change to
9768         cstore<GPR:mode>4.
9769         * config/mips/mips-protos.h (mips_expand_conditional_branch,
9770         mips_expand_scc, mips_expand_conditional_trap): Adjust prototypes.
9771         * config/mips/mips.c (cmp_operands): Delete.
9772         (mips_emit_compare): Get comparison operands from *op0/*op1.
9773         (mips_expand_scc): Get code/op0/op1/target from operands.  Assert
9774         that it succeeds.  Use op0/op1 instead of cmp_operands.
9775         (mips_expand_conditional_branch, mips_expand_conditional_move,
9776         mips_expand_conditional_trap): Likewise.
9777         (mips_block_move_loop): Use cbranch patterns. 
9778         * config/mips/mips.h (cmp_operands): Delete.
9779
9780         * config/mmix/mmix.c (mmix_valid_comparison): Delete.
9781         (mmix_gen_compare_reg): Just return a register in the right CC mode.
9782         * config/mmix/mmix.h (mmix_compare_op0, mmix_compare_op1): New.
9783         * config/mmix/mmix.md (cmpdi, cmpdf): Remove.
9784         (*cmpcc_folded): Rename to...
9785         (*cmpdi_folded): this.
9786         (*cmpcc): Rename to...
9787         (*cmps): ... this.
9788         (movdfcc, movdicc): Adjust for new semantics of mmix_gen_compare_reg.
9789         (bCC): Remove.
9790         (cbranchdi4): New.
9791         (cbranchdf4): New.  Handle invalid comparisons here.
9792         * config/mmix/predicates.md (float_comparison_operator): New.
9793
9794         * config/mn10300/mn10300.c (mn10300_rtx_costs): Consider 0 and
9795         zero_extract to be cheap in (compare (zero_extract) (const_int 0).
9796         * config/mn10300/mn10300.md (tst): Delete.
9797         (*tst_extqisi_am33, *tst_extqisi, *tst_exthisi_am33, *tst_exthisi):
9798         Name these patterns and wrap RHS in a compare.
9799         (*cmpsi): Make this pattern private.  Include tst.
9800         (*cmpsf): Make this pattern private.
9801         (and and zero_extract cc0 set): Wrap RHS in a COMPARE.
9802         (compare with zero peepholes): Likewise.
9803         (bCC): Remove.
9804         (cbranchsi4, cbranchsf4): New.
9805         (casesi): Use cbranchsi4.
9806
9807         * config/pa/pa.c (hppa_compare_op0, hppa_compare_op1,
9808         hppa_branch_type): Delete.
9809         (return_addr_rtx): Use cbranchsi4.
9810         (emit_bcond_fp): Accept all operands.  Replace CODE with NE.
9811         Emit CCFPmode comparison here.
9812         (gen_cmp_fp): Delete, now part of emit_bcond_fp.
9813         * config/pa/pa.h (enum cmp_type, hppa_compare_op0, hppa_compare_op1,
9814         hppa_branch_type): Delete.
9815         * config/pa/pa.md (cmpdi, cmpsi, cmpsf, cmpdf, sCC, bCC): Delete.
9816         (movsicc, movdicc): Remove references to hppa_compare_op0,
9817         hppa_compare_op1 and compare_from_rtx.
9818         (cbranchdi4, cbranchsi4, cbranchsf4, cbranchdf4, cstoresi4): New.
9819         (casesi): Use cbranchsi4.
9820
9821         * config/pdp11/pdp11-protos.h (output_jump): Change prototype.
9822         * config/pdp11/pdp11.c (output_jump): Embed opcodes here.
9823         * config/pdp11/pdp11.md (register_or_const0_operand): New.
9824         (cmpdf, cmphi, cmpqi): Make private.  Add tst alternatives.
9825         (cmpsi, tstsi, tstdf, tsthi, tstqi): Delete.
9826         (bCC): Delete.
9827         (cbranchdf4, cbranchhi4, cbranchqi4): New.
9828         (*branch, *branch_inverted): New.
9829
9830         * config/picochip/picochip.md (cbranchhi4): Use
9831         ordered_comparison_operator.
9832         (cmphi, bCC): Remove.
9833
9834         * config/rs6000/predicates.md (rs6000_cbranch_operator): New.
9835         (trap_comparison_operator): Delete.
9836         * config/rs6000/rs6000-protos.h (rs6000_emit_sCOND,
9837         rs6000_emit_cbranch): Accept mode and operands.
9838         * config/rs6000/rs6000.c (rs6000_compare_op0, rs6000_compare_op1,
9839         rs6000_compare_fp_p): Delete.   
9840         (rs6000_generate_compare): Accept mode and comparison.  Extract code
9841         and op0/op1 from there.  Replace references to rs6000_compare_op0
9842         and rs6000_compare_op1.
9843         (rs6000_emit_sCOND): Adjust call to rs6000_generate_compare and
9844         extract result from passed operands.
9845         (rs6000_emit_cbranch): Adjust call to rs6000_generate_compare and
9846         extract loc from passed operands.
9847         (rs6000_emit_cmove): Likewise.
9848         * config/rs6000/rs6000.h (rs6000_compare_op0, rs6000_compare_op1,
9849         rs6000_compare_fp_p): Delete.
9850         * config/rs6000/rs6000.md (cmp<GPR>, cmp<FP>, bCC, sCC): Delete.
9851         (cbranch<GPR>4, cbranch<FP>4): New.
9852         (cstore<mode>4): New.  Consolidate here all choices about when to use
9853         portable or specialized sCC sequences.
9854         (stack_protect_test): Use cbranchsi4.
9855         (conditional_trap): Replace with ctrap<GPR>4.
9856         (conditional trap insn): Replace trap_comparison_operator with
9857         ordered_comparison_operator. 
9858
9859         * config/s390/s390.c (s390_compare_op0, s390_compare_op1): Delete.
9860         (s390_emit_prologue): Use ctrap.
9861         * config/s390/s390.h (s390_compare_op0, s390_compare_op1): Delete.
9862         * config/s390/predicates.md (s390_eqne_operator, s390_scond_operator):
9863         New predicates replacing...
9864         * config/s390/s390.md (COMPARE, SCOND): ... these iterators.
9865         (cmp<GPR>, cmp<FP>, cmpcc): Delete.
9866         (trunc patterns): Use emit_cmp_and_jump_insns instead of cmp/branch.
9867         (add<mode>cc): Do not use s390_compare_op0/op1.
9868         (s<code>): Change to...
9869         (cstore<mode>4): ... this. Do not use s390_compare_op0/op1.
9870         (seq): Change to...
9871         (cstorecc4): ... this.  Handle EQ or NE equally.
9872         (*sne): Un-privatize for use in cstorecc4.
9873         (b<code>): Change to...
9874         (cbranch<GPR>4, cbranch<FP>4, cbranchcc4): ... these.
9875         (conditional_trap): Replace with...
9876         (ctrap<GPR>4, ctrap<FP>4): ... these.
9877         (stack_protect): Use cbranchcc4.
9878
9879         * config/score/score-conv.h (cmp_op0, cmp_op1): Delete.
9880         * config/score/score-protos.h (score_gen_cmp): Delete.
9881         * config/score/score.c (cmp_op0, cmp_op1, score_gen_cmp): Delete.
9882         (score_block_move-loop): Use cbranchsi4.
9883         * config/score/score.md (cbranchsi4): New.
9884         (cmpsi, bCC): Delete.
9885         * config/score/score3.c (cmp_op0, cmp_op1, score3_gen_cmp): Delete.
9886         (score3_movsicc): Use ops[1] operands instead of cmp_op0/cmp_op1.
9887         * config/score/score7.c (cmp_op0, cmp_op1, score7_gen_cmp): Delete.
9888         (score7_movsicc): Use ops[1] operands instead of cmp_op0/cmp_op1.
9889         * config/score/score3.h (score3_gen_cmp): Delete.
9890         * config/score/score7.h (score7_gen_cmp): Delete.
9891
9892         * config/sh/sh-protos.h (prepare_scc_operands): Rename to...
9893         (sh_emit_scc_to_t): ... this.  Return void.
9894         (from_compare): Rename to...
9895         (sh_emit_compare_and_branch): ... this.
9896         (sh_emit_compare_and_set): New.
9897         (sh_expand_t_scc): Accept operands.
9898         * config/sh/predicates.md (sh_float_comparison_operator): New.
9899         * config/sh/sh.c (sh_compare_op0, sh_compare_op1): Delete.
9900         (prepare_scc_operands): Rename to...
9901         (sh_emit_scc_to_t): ... this.  Return void.  Get op0/op1 from
9902         arguments.
9903         (sh_emit_cheap_store_flag): New.
9904         (sh_emit_set_t_insn): New.
9905         (from_compare): Rename to...
9906         (sh_emit_compare_and_branch): ... this.  Accept mode.  Rewrite
9907         handling of TARGET_SH2E floating point to avoid recursive call.
9908         Generate branch here.
9909         (sh_emit_compare_and_set): New.
9910         (sh_expand_t_scc): Get op0/op1 from arguments.
9911         (sh_emit_cheap_store_flag): New.
9912         * config/sh/sh.md (cbranchdi4, cbranchsi4): Include -mno-cbranchdi
9913         cases.
9914         (cbranchdi4_i): Use an "I08" constraint instead of an "i" constraint.
9915         (cmpsi, cmpdi, cmpsf, cmpdf): Delete.
9916         (movsicc, movdicc): Do nothing when it recreated operands from
9917         sh_compare_*. Use sh_emit_cheap_store_flag.  Adjust call to
9918         prepare_scc_operands (now sh_emit_scc_to_t).
9919         (udivdi3): Use cstoresi4.
9920         (beq_media, bne_media, bge_media, bgtu_media, bgeu_media, beq,
9921         bne, bgt, blt, ble, bge, bgtu, bltu, bgeu, bleu, bunordered): Delete.
9922         (cbranchint4_media, cbranchfp4_media): New.
9923         (casesi): Use cbranchdi4.
9924         (seq, slt, sle, sgt, sge, sgtu, sltu, sgeu, sne, sleu, sunordered):
9925         Delete.
9926         (cstore4_media, cstoresi4, cstoredi4, cstoresf4, cstoredf4): New.
9927         (movnegt): Remove second operand.
9928         (cbranchsf4, cbranchdf4): New.
9929         (stack_protect): Use cbranchdi4/cbranchsi4.
9930
9931         * config/sparc/sparc.c (sparc_compare_op0, sparc_compare_op1): Delete.
9932         (gen_compare_reg): Accept comparison, extract part of it to...
9933         (gen_compare_reg_1): ... this. 
9934         (gen_compare_operator): Delete.
9935         (gen_v9_scc): Accept separate destination, comparison code and arms.
9936         Do not use sparc_compare_op0/sparc_compare_op1.
9937         (emit_scc_insn, emit_conditional_branch_insn): New.
9938         (emit_v9_brxx): Make static.  Remove useless assertion.
9939         (sparc_emit_float_lib_cmp): Return RTL instead of calling
9940         emit_cmp_insn.
9941         (sparc_expand_compare_and_swap_12): Use gen_compare_reg_1+cbranchcc4.
9942         * config/sparc/sparc-protos.h (gen_compare_reg,
9943         sparc_emit_float_lib_cmp): Adjust prototype.
9944         (emit_scc_insn, emit_conditional_branch_insn): New.
9945         (gen_v9_scc, emit_v9_brxx_insn, gen_compare_operator): Delete.
9946         * config/sparc/sparc.h (sparc_compare_op0, sparc_compare_op1): Delete.
9947         * config/sparc/sparc.md (P, I, F, V32, V32I, V64, V64I): Move all
9948         iterators to the top.
9949         (cmpsi, cmpdi, cmpsf, cmpdf, cmptf, seqsi_special_extend,
9950         snesi_special_extend, sCC, bCC, seqdi_special_trunc,
9951         snedi_special_trunc): Delete.
9952         (seqdi_special, snedi_special): Use expansion of seqdi_special_trunc
9953         and snedi_special_trunc.
9954         (cstoresi4, cstoredi4, cstore<F:mode>4, cbranchcc4, cbranchsi4,
9955         cbranchdi4, cbranch<F:mode>4): New.
9956         (mov<I:mode>cc, mov<F:mode>cc): Handle sparc_emit_float_lib_cmp
9957         here.  Use gen_compare_reg instead of gen_compare_operator.
9958         (conditional_trap): Replace with...
9959         (ctrapsi4, ctrapdi4): ... this.
9960         (stack_protect_test): Use cbranchcc4.
9961
9962         * config/spu/spu-protos.h (spu_emit_branch_or_set): Change second
9963         argument to rtx.
9964         * config/spu/spu.c (spu_compare_op0, spu_compare_op1): Remove. 
9965         (spu_emit_branch_or_set): Get code/op0/op1 from second argument.
9966         Change spu_compare_op0/op1 to op0/op1 throughout.  Get target
9967         from operands[0] or operands[3] depending on is_set.
9968         * config/spu/spu.h (spu_compare_op0, spu_compare_op1): Remove.
9969         * config/spu/spu.md (cmp<mode:VQHSI>, cmp<mode:DTI>, cmp<mode:VSF>,
9970         cmpdf, bCC), sCC: Remove.
9971         (cbranch<mode:VQHSI>4, cbranch<mode:DTI>, cbranch<mode:VSF>4, 
9972         cbranchdf4, cstore<mode:VQHSI>4, cstore<mode:DTI>, cstore<mode:VSF>4,
9973         cstoredf4): New.
9974         (mov<mode>cc): Accept ordered_comparison_operator, adjust call to
9975         spu_emit_branch_or_set.
9976
9977         * config/stormy16/stormy16-protos.h (xstormy16_emit_cbranch):
9978         Add two arguments.
9979         * config/stormy16/stormy16.h (xstormy16_compare_op0,
9980         xstormy16_compare_op1): Delete.
9981         * config/stormy16/stormy16.c (xstormy16_compare_op0,
9982         xstormy16_compare_op1): Delete. 
9983         (xstormy16_emit_cbranch): Get op0/op1 from the new arguments.
9984         Adjust calls.
9985         * config/stormy16/stormy16.md (cbranchsi4, cbranchhi4): New.
9986         (cmphi, cmpsi, bCC): Remove.
9987
9988         * config/v850/v850.md (tstsi, cmpsi): Fold into...
9989         (*cmpsi): ... this one.
9990         (cbranchsi4, cstoresi4): New.
9991         (bCC expanders): Delete.
9992         (sCC insns): Fold into...
9993         (*setcc): ... this one.
9994         (casesi): Do not use gen_cmpsi and gen_bgtu. 
9995         (various splits): Wrap "naked" RHS of a cc0 set with COMPARE.
9996         (movsicc): Simplify.
9997         * config/v850/v850.c (v850_rtx_costs): Handle ZERO_EXTRACT in COMPARE.
9998
9999         * config/vax/vax-protos.h (cond_name): New.
10000         (vax_output_conditional_branch): Remove.
10001         * config/vax/vax.c (cond_name): New.
10002         (vax_output_conditional_branch): Remove.
10003         * config/vax/vax.h (PRINT_OPERAND): Dispatch %c to cond_name.
10004         * config/vax/vax.md (tst<VAXint>, tst<VAXfp>): Remove.
10005         (cmp<VAXint>, cmp<VAXfp>): Privatize.  Add constraints for tst.
10006         (bit<VAXint>): Wrap source with (compare).
10007         (b<code> and following unnamed pattern): Rename to *branch and
10008         *branch_reversed.  Change macroization to match_operator.
10009         (cbranch<VAXint>4, cbranch<VAXfp>4): New.
10010
10011         * config/xtensa/predicates.md (xtensa_cstoresi_operator): New.
10012         * config/xtensa/xtensa-protos.h (xtensa_expand_conditional_branch):
10013         Change last argument to machine_mode.
10014         (xtensa_expand_scc): Add machine_mode argument.
10015         * config/xtensa/xtensa.c (branch_cmp, branch_type): Remove.
10016         (gen_conditional_move, xtensa_expand_conditional_branch,
10017         xtensa_expand_scc, xtensa_expand_conditional_move): Use mode
10018         instead of branch_type, fetch cmp0/cmp1/test_code from operands[].
10019         Adjust operand numbers.
10020         * config/xtensa/xtensa.h (enum cmp_type, branch_cmp, branch_type):
10021         Delete.
10022         * config/xtensa/xtensa.md (any_cond, any_scc): Delete.
10023         (cmpsi, cmpsf, b<code>, s<code>): Delete.
10024         (cbranchsi4, cbranchsf4, cstoresi4, cstoresf4): New.
10025
10026 2009-05-12  Paolo Bonzini  <bonzini@gnu.org>
10027
10028         * optabs.c (prepare_cmp_insn): Temporarily disable test that
10029         causes spurious differences between trunk and cond-optab branch.
10030
10031 2009-05-12  Alexandre Oliva  <aoliva@redhat.com>
10032
10033         PR target/37137
10034         * doc/install.texi (STAGE1_TFLAGS, BUILD_CONFIG): Document.
10035
10036 2009-05-12  Alexandre Oliva  <aoliva@redhat.com>
10037
10038         * tree.c (iterative_hash_pointer): Delete.
10039         (iterative_hash_expr): Short-circuit handling of NULL pointer.
10040         Hash UIDs and versions of SSA names.  Don't special-case built-in
10041         function declarations.
10042
10043 2009-05-11  Ian Lance Taylor  <iant@google.com>
10044
10045         PR bootstrap/40103
10046         * graphite.c: Force -Wc++-compat to only be a warning before
10047         #including "cloog/cloog.h".
10048
10049 2009-05-11  Martin Jambor  <mjambor@suse.cz>
10050
10051         * ipa-cp.c (ipcp_cloning_candidate_p): Add missing return false.
10052         
10053 2009-05-11  Jan Hubicka  <jh@suse.cz>
10054
10055         * tree-ssa-loop-ivcanon.c: Include target.h
10056         (struct loop_size): new structure.
10057         (constant_after_peeling): New predicate.
10058         (tree_estimate_loop_size): New function.
10059         (estimated_unrolled_size): Rewrite for new estimates.
10060         (try_unroll_loop_completely): Use new estimates.
10061         * Makefile.in (tree-ssa-loop-ivcanon.o): Add dependenc on target.h
10062
10063 2009-05-11  Andrew Pinski  <andrew_pinski@playstation.sony.com>
10064
10065         * config/spu/spu-c.c (spu_categorize_keyword): Update for recent
10066         libcpp interface change.
10067         (spu_macro_to_expand): Likewise.
10068
10069 2009-05-11  Paolo Bonzini  <bonzini@gnu.org>
10070
10071         PR tree-optimization/40026
10072         * gimplify.c (gimplify_init_constructor): Change initial conditional
10073         to assertion.  Rewrite TREE_OPERAND (*expr_p, 1) after
10074         optimize_compound_literals_in_ctor.
10075
10076 2009-05-11  Nathan Sidwell  <nathan@codesourcery.com>
10077
10078         * config/m68k/m68k-devices.def (52274, 52277, 5301x, 5225x, 51xx):
10079         New devices.
10080         * doc/invoke.texi (M680x0 Options): Document new coldfire cpus.
10081
10082 2009-05-11  H.J. Lu  <hongjiu.lu@intel.com>
10083
10084         * tree-vect-data-refs.c (vect_analyze_group_access): Use
10085         HOST_WIDE_INT for gap.
10086
10087 2009-05-11  Ira Rosen  <irar@il.ibm.com>
10088
10089         PR tree-optimization/40074
10090         * tree-vect-data-refs.c (vect_analyze_group_access): Take gaps into
10091         account in group size and step comparison.
10092
10093 2009-05-11  Richard Guenther  <rguenther@suse.de>
10094
10095         * passes.c (init_optimization_passes): Strip now incorrect comment.
10096         (execute_function_todo): Do not set PROP_alias.
10097         * tree-pass.h (PROP_alias): Remove.
10098         * tree-ssa-structalias.c (pass_build_alias): Do not provide PROP_alias.
10099         * tree-if-conv.c (pass_if_conversion): Do not require PROP_alias.
10100         * tree-nrv.c (pass_return_slot): Likewise.
10101         * tree-object-size.c (pass_object_sizes): Likewise.
10102         * tree-ssa-dom.c (pass_dominator): Likewise.
10103         (pass_phi_only_cprop): Likewise.
10104         * tree-ssa-dse.c (pass_dse): Likewise.
10105         * tree-ssa-phiopt.c (pass_phiopt): Likewise.
10106         (pass_cselim): Likewise.
10107         * tree-ssa-pre.c (pass_pre): Likewise.
10108         (pass_fre): Likewise.
10109         * tree-ssa-reassoc.c (pass_reassoc): Likewise.
10110         * tree-ssa-sink.c (pass_sink_code): Likewise.
10111         * tree-stdarg.c (pass_stdarg): Likewise.
10112         * tree-tailcall.c (pass_tail_calls): Likewise.
10113         * tree-vrp.c (pass_vrp): Likewise.
10114
10115 2009-05-10  Ian Lance Taylor  <iant@google.com>
10116
10117         * basic-block.h (enum profile_status): Break out of struct
10118         control_flow_graph.
10119         * cgraph.h (struct inline_summary): Break out of struct
10120         cgraph_local_info.
10121         * cgraphunit.c (enum cgraph_order_sort_kind): New enum, broken out
10122         of struct cgraph_order_sort.
10123         * combine.c (enum undo_kind): New enum, broken out of struct undo.
10124         * cse.c (struct branch_path): Break out of struct
10125         cse_basic_block_data.
10126         * except.h (enum eh_region_type): Break out of struct eh_region.
10127         * gcc.c (enum add_del): Break out of struct modify_target.
10128         * genrecog.c (enum decision_type): Break out of struct decision_test.
10129         * ggc-page.c (struct ggc_pch_ondisk): Break out of struct
10130         ggc_pch_data.
10131         * matrix-reorg.c (struct free_info): Break out of struct matrix_info.
10132         * regmove.c (enum match_use): New enum, broken out of struct match.
10133         * sched-int.h (enum post_call_group): New enum, broken out of
10134         struct deps.
10135         (struct deps_reg): Break out of struct deps.
10136         * target.h (struct asm_int_op): Break out of struct gcc_target.
10137         * tree-eh.c (struct goto_queue_node): Break out of struct
10138         leh_tf_state.
10139         * tree-inline.h (enum copy_body_cge_which): Break out of
10140         copy_body_data.
10141         * tree-pass.h (enum opt_pass_type): Break out of struct opt_pass.
10142
10143         * c-decl.c (in_struct, struct_types): New static variables.
10144         (pushtag): Add loc parameter.  Change all callers.
10145         (lookup_tag): Add ploc parameter.  Change all callers.
10146         (check_compound_literal_type): New function.
10147         (parser_xref_tag): Add loc parameter.  Change all callers.  If
10148         -Wc++-compat, warn about struct/union/enum types defined within a
10149         struct or union.
10150         (start_struct): Add enclosing_in_struct, enclosing_struct_types,
10151         and loc parameters.  Change all callers.  Change error calls to
10152         error_at, using loc.  For a redefinition, if the location of the
10153         original definition is known, report it.  Set in_struct and
10154         struct_types.  If -Wc++-compat warn if in sizeof, typeof, or alignof.
10155         (finish_struct): Add new parameters enclosing_in_struct and
10156         enclosing_struct_types.  Change all callers.  Set
10157         C_TYPE_DEFINED_IN_STRUCT for all struct/union/enum types defined
10158         in the struct.  If in a struct, add this struct to struct_types.
10159         (start_enum): Add loc parameter.  Change all callers.  Use
10160         error_at for errors, using loc.  For a redefinition, if the
10161         location of the original definition is known, report it.  If in a
10162         struct, add this enum type to struct_types.  If -Wc++-compat warn
10163         if in sizeof, typeof, or alignof.
10164         * c-parser.c (disable_extension_diagnostics): Disable -Wc++-compat.
10165         (enable_extension_diagnostics): Reenable -Wc++-compat if appropriate.
10166         (c_parser_enum_specifier): Get enum location for start_enum.
10167         (c_parser_struct_or_union_specifier): Get struct location for
10168         start_struct.  Save in_struct and struct_types status between
10169         start_struct and finish_struct.
10170         (c_parser_cast_expression): Get location of cast.
10171         (c_parser_alignof_expression): Get location of type.
10172         (c_parser_postfix_expression): Likewise.
10173         (c_parser_postfix_expression_after_paren_type): Add type_loc
10174         parameter.  Change all callers.  Call check_compound_literal_type.
10175         Use type_loc for error about variable size type.
10176         * c-typeck.c (build_external_ref): If -Wc++-compat, warn about a use
10177         of an enum constant from an enum type defined in a struct or union.
10178         (c_cast_expr): Add loc parameter.  Change all callers.  If
10179         -Wc++-compat, warn about defining a type in a cast.
10180         * c-tree.h (C_TYPE_DEFINED_IN_STRUCT): Define.
10181         (start_enum, start_struct, finish_struct): Update declarations.
10182         (parser_xref_tag, c_cast_expr): Update declarations.
10183         (check_compound_literal_type): Declare.
10184
10185 2009-05-11  Ben Elliston  <bje@au.ibm.com>
10186
10187         * config/rs6000/rs6000-c.c (altivec_categorize_keyword): Update
10188         for recent libcpp interface change.
10189         (rs6000_macro_to_expand): Likewise.
10190
10191 2009-05-10  Michael Matz  <matz@suse.de>
10192
10193         PR target/40031
10194         * config/arm/arm.c (require_pic_register): Emit on entry edge,
10195         not at entry of function.
10196
10197 2009-05-10  Richard Guenther  <rguenther@suse.de>
10198
10199         PR tree-optimization/40081
10200         Revert
10201         * tree-sra.c (instantiate_element): Instantiate scalar replacements
10202         using the main variant of the element type.  Do not fiddle with
10203         TREE_THIS_VOLATILE or TREE_SIDE_EFFECTS.
10204
10205         * tree-sra.c (sra_type_can_be_decomposed_p): Do not decompose
10206         structs with volatile fields.
10207
10208 2009-05-10  Jan Hubicka  <jh@suse.cz>
10209
10210         * tree-inline.c (delete_unreachable_blocks_update_callgraph): Declare.
10211         (estimate_move_cost): Assert that it does not get called for
10212         VOID_TYPE_P.
10213         (estimate_num_insns): Skip VOID types in argument handling.
10214         (optimize_inline_calls): Delete unreachable blocks and verify that
10215         callgraph is valid.
10216
10217 2009-05-10  Jan Hubicka  <jh@suse.cz>
10218
10219         * cgraphbuild.c (record_reference): Use cgraph_mark_address_taken_node.
10220         * cgraph.c (cgraph_mark_address_taken_node): New function.
10221         (dump_cgraph_node): Dump new flag.
10222         * cgraph.h (struct cgraph_node): Add address_taken.
10223         (cgraph_mark_address_taken_node): New function.
10224         * ipa.c (cgraph_postorder): Prioritize functions with address taken
10225         since new direct calls can be born.
10226
10227 2009-05-10  Joseph Myers  <joseph@codesourcery.com>
10228
10229         * c-lex.c (c_lex_with_flags): Expect cpp_hashnode in
10230         tok->val.node.node.
10231
10232 2009-05-10  Jan Hubicka  <jh@suse.cz>
10233
10234         PR middle-end/40084
10235         * cgraph.c (cgraph_update_edges_for_call_stmt_node): Take old_call
10236         argument; rewrite.
10237         (cgraph_update_edges_for_call_stmt): Take old_decl argument.
10238         * cgraph.h (cgraph_update_edges_for_call_stmt): Update prototype.
10239         * tree-inline.c (copy_bb): Set frequency correctly.
10240         (fold_marked_statements): Update call to
10241         cgraph_update_edges_for_call_stmt.
10242
10243 2009-05-10  Joseph Myers  <joseph@codesourcery.com>
10244
10245         * config/arc/arc.c (arc_handle_interrupt_attribute): Use %qE for
10246         identifiers in diagnostics.
10247         * config/arm/arm.c (arm_handle_fndecl_attribute,
10248         arm_handle_isr_attribute): Likewise.
10249         * config/avr/avr.c (avr_handle_progmem_attribute,
10250         avr_handle_fndecl_attribute, avr_handle_fntype_attribute): Likewise.
10251         * config/bfin/bfin.c (handle_int_attribute,
10252         bfin_handle_longcall_attribute, bfin_handle_l1_text_attribute,
10253         bfin_handle_l1_data_attribute, bfin_handle_longcall_attribute,
10254         bfin_handle_l1_text_attribute, bfin_handle_l1_data_attribute):
10255         Likewise.
10256         * config/darwin.c (darwin_handle_kext_attribute,
10257         darwin_handle_weak_import_attribute): Likewise.
10258         * config/h8300/h8300.c (h8300_handle_fndecl_attribute,
10259         h8300_handle_eightbit_data_attribute,
10260         h8300_handle_tiny_data_attribute): Likewise.
10261         * config/i386/i386.c (ix86_handle_cconv_attribute,
10262         ix86_handle_abi_attribute, ix86_handle_struct_attribute): Likewise.
10263         * config/i386/winnt.c (ix86_handle_shared_attribute,
10264         ix86_handle_selectany_attribute): Likewise.
10265         * config/ia64/ia64.c (ia64_handle_model_attribute): Likewise.
10266         * config/m32c/m32c.c (function_vector_handler): Likewise.
10267         * config/m68hc11/m68hc11.c (m68hc11_handle_page0_attribute,
10268         m68hc11_handle_fntype_attribute): Likewise.
10269         * config/m68k/m68k.c (m68k_handle_fndecl_attribute): Likewise.
10270         * config/mcore/mcore.c (mcore_handle_naked_attribute): Likewise.
10271         * config/mips/mips.c (mips_insert_attributes,
10272         mips_merge_decl_attributes, mips_expand_builtin): Likewise.
10273         * config/rs6000/rs6000.c (rs6000_handle_longcall_attribute,
10274         rs6000_handle_struct_attribute): Likewise.
10275         * config/sh/sh.c (sh_insert_attributes,
10276         sh_handle_resbank_handler_attribute,
10277         sh_handle_interrupt_handler_attribute,
10278         sh2a_handle_function_vector_handler_attribute,
10279         sh_handle_sp_switch_attribute, sh_handle_trap_exit_attribute):
10280         Likewise.
10281         * config/sh/symbian.c (sh_symbian_mark_dllimport): Likewise.
10282         * config/spu/spu.c (spu_handle_fndecl_attribute,
10283         spu_handle_vector_attribute): Likewise.
10284         * config/stormy16/stormy16.c
10285         (xstormy16_handle_interrupt_attribute): Likewise.
10286         * config/v850/v850-c.c (ghs_pragma_section): Likewise.
10287         * config/v850/v850.c (v850_handle_interrupt_attribute): Likewise.
10288
10289 2009-05-10  Joseph Myers  <joseph@codesourcery.com>
10290
10291         * pretty-print.h (struct pretty_print_info): Add translate_identifiers.
10292         (pp_translate_identifiers): New.
10293         (pp_identifier): Only conditionally translate identifier to locale
10294         character set.
10295         * pretty-print.c (pp_construct): Set pp_translate_identifiers.
10296         (pp_base_tree_identifier): Only conditionally translate identifier
10297         to locale character set.
10298         * c-pretty-print.c (M_): Define.
10299         (pp_c_type_specifier, pp_c_primary_expression): Mark English
10300         fragments for conditional translation with M_.
10301         * tree-pretty-print.c (maybe_init_pretty_print): Disable
10302         identifier translation.
10303
10304 2009-05-10  Richard Guenther  <rguenther@suse.de>
10305
10306         PR tree-optimization/40081
10307         * tree-sra.c (instantiate_element): Instantiate scalar replacements
10308         using the main variant of the element type.  Do not fiddle with
10309         TREE_THIS_VOLATILE or TREE_SIDE_EFFECTS.
10310
10311 2009-05-09  Jan Hubicka  <jh@suse.cz>
10312
10313         PR middle-end/40080
10314         * cgraphunit.c (cgraph_materialize_all_clones): Do not redirect
10315         indirect calls; verify cgraph afterwards.
10316
10317 2009-05-09  Jan Hubicka  <jh@suse.cz>
10318
10319         PR bootstrap/40082
10320         * ipa.c (update_inlined_to_pointer): New function.
10321         (cgraph_remove_unreachable_nodes): Use it.
10322
10323 2009-05-09  Jan Hubicka  <jh@suse.cz>
10324
10325         * tree-eh.c (struct leh_state): Remove prev_try.
10326         (lower_try_finally, lower_catch, lower_eh_filter, lower_cleanup): Do
10327         not track prev_try.
10328         * except.c (gen_eh_region_cleanup, duplicate_eh_regions, 
10329         copy_eh_region_1, copy_eh_region, redirect_eh_edge_to_label,
10330         remove_eh_handler_and_replace, foreach_reachable_handler,
10331         verify_eh_region, verify_eh_tree): Remove tracking of prev_try pointer.
10332         * except.h (struct eh_region): Remove eh_region_u_cleanup.
10333         (gen_eh_region_cleanup): Update prototype.
10334
10335 2009-05-09  Jan Hubicka  <jh@suse.cz>
10336
10337         PR middle-end/40043
10338         * except.c (copy_eh_region): Always set prev_try.
10339         (redirect_eh_edge_to_label): Find outer try.
10340         (foreach_reachable_handler): When looking for prev try
10341         handle case where previous try is not going to be taken.
10342
10343 2009-05-07  Michael Meissner  <meissner@linux.vnet.ibm.com>
10344
10345         PR tree-optimization/40049
10346         * tree-vect-stmts.c (vectorizable_operation): If the machine has
10347         only vector/vector shifts, convert the type of the constant to the
10348         appropriate type to avoid building incorrect trees, which
10349         eventually have problems with garbage collection.
10350
10351 2009-05-08  Joseph Myers  <joseph@codesourcery.com>
10352
10353         * fold-const.c (fold_binary): Do not fold multiplication by 1 or
10354         -1 for complex floating-point types if honoring signed zeros.
10355
10356 2009-05-08  Jan Hubicka  <jh@suse.cz>
10357
10358         * cgraphbuild.c (compute_call_stmt_bb_frequency): Accept function
10359         argument; handle correctly when profile is absent.
10360         (build_cgraph_edges): Update.
10361         (rebuild_cgraph_edges): Update.
10362         * cgraph.c: Do not include varray.h.
10363         (cgraph_set_call_stmt_including_clones): New function.
10364         (cgraph_create_edge_including_clones): Likewise
10365         (cgraph_update_edges_for_call_stmt_node): New static cfunction.
10366         (cgraph_update_edges_for_call_stmt): Handle clones.
10367         (cgraph_remove_node): Handle clone tree.
10368         (cgraph_remove_node_and_inline_clones): New function.
10369         (dump_cgraph_node): Dump clone tree.
10370         (cgraph_clone_node): Handle clone tree.
10371         (clone_function_name): Bring here from tree-inline.c.
10372         (cgraph_create_virtual_clone): New function.
10373         * cgraph.h (ipa_replace_map): Move here from ipa.h.
10374         (cgraph_clone_info): New function.
10375         (strut cgraph_node): Add clone_info and new clone tree pointers.
10376         (cgraph_remove_node_and_inline_clones,
10377         cgraph_set_call_stmt_including_clones,
10378         cgraph_create_edge_including_clones,
10379         cgraph_create_virtual_clone): Declare.
10380         (cgraph_function_versioning): Use VEC argument.
10381         (compute_call_stmt_bb_frequency): Update prototype.
10382         (cgraph_materialize_all_clones): New function.
10383         * ipa-cp.c (ipcp_update_cloned_node): Remove.
10384         (ipcp_create_replace_map): Update to VECtors.
10385         (ipcp_update_callgraph): Use virtual clones.
10386         (ipcp_update_bb_counts, ipcp_update_edges_counts): Remove.
10387         (ipcp_update_profiling): Do not update local profiling.
10388         (ipcp_insert_stage): Use VECtors and virtual clones.
10389         * cgraphunit.c (verify_cgraph_node): Verify clone tree.
10390         (clone_of_p): New function.
10391         (cgraph_preserve_function_body_p): Use clone tree.
10392         (cgraph_optimize): Materialize clones.
10393         (cgraph_function_versioning): Update for VECtors.
10394         (save_inline_function_body): Use clone tree.
10395         (cgraph_materialize_clone): New function.
10396         (cgraph_materialize_all_clones): Likewise.
10397         * ipa-inline.c (cgraph_default_inline_p): Use analyzed flags.
10398         * ipa.c: Include gimple.h.
10399         (cgraph_remove_unreachable_nodes): Use clone tree.
10400         * ipa-prop.c (ipa_note_param_call): Update call to
10401         compute_call_stmt_bb_frequencycall.
10402         * ipa-prop.h (ipa_replace_map): Move to cgraph.h.
10403         * tree-inline.c: Do not include varray.h or gt-tree-inline.h.
10404         (copy_bb): Handle updating of clone tree; add new edge when new call
10405         appears.
10406         (expand_call_inline): Be strict about every call having edge.
10407         (clone_fn_id_num, clone_function_name): Move to cgraph.c.
10408         (delete_unreachable_blocks_update_callgraph): New function.
10409         (tree_function_versioning): Use VECtors; always remove unreachable
10410         blocks and fold conditionals.
10411         * tree-inline.h: Do not include varray.h.
10412         (tree_function_versioning): Remove.
10413         * Makefile.in (GTFILES): Remove tree-inline.c
10414         * passes.c (do_per_function): Do only functions having body.
10415         * ipa-struct-reorg.c (do_reorg_1, collect_data_accesses): Handle clone
10416         tree.
10417
10418 2009-05-08  H.J. Lu  <hongjiu.lu@intel.com>
10419             Andrew Morrow  <acm@google.com>
10420
10421         PR c/36892
10422         * c-common.c (c_common_attribute_table): Permit deprecated
10423         attribute to take an optional argument.
10424         (handle_deprecated_attribute): If the optional argument to
10425         __attribute__((deprecated)) is not a string ignore the attribute
10426         and emit a warning.
10427
10428         * c-decl.c (grokdeclarator): Updated warn_deprecated_use call.
10429         * c-typeck.c (build_component_ref): Likewise.
10430         (build_external_ref): Likewise.
10431
10432         * toplev.c (warn_deprecated_use): Add an attribute argument.
10433         Emit the message associated with __attribute__((deprecated)).
10434
10435         * toplev.h (warn_deprecated_use): Updated.
10436
10437         * doc/extend.texi: Document new optional parameter to
10438         __attribute__((deprecated))
10439
10440 2009-05-08  Michael Eager <eager@eagercon.com>
10441
10442         * config/rs6000/rs6000.md (*movdf_softfloat32): replace
10443         !TARGET_DOUBLE_FLOAT with TARGET_SINGLE_FLOAT.
10444
10445 2009-05-08  Richard Guenther  <rguenther@suse.de>
10446
10447         PR tree-optimization/40062
10448         * tree-scalar-evolution.c (follow_ssa_edge_in_condition_phi):
10449         Avoid exponential behavior.
10450
10451 2009-05-08  Paolo Bonzini  <bonzini@gnu.org>
10452
10453         PR rtl-optimization/33928
10454         PR 26854
10455         * fwprop.c (use_def_ref, get_def_for_use, bitmap_only_bit_bitween,
10456         process_uses, build_single_def_use_links): New.
10457         (update_df): Update use_def_ref.
10458         (forward_propagate_into): Use get_def_for_use instead of use-def
10459         chains.
10460         (fwprop_init): Call build_single_def_use_links and let it initialize
10461         dataflow.
10462         (fwprop_done): Free use_def_ref.
10463         (fwprop_addr): Eliminate duplicate call to df_set_flags.
10464         * df-problems.c (df_rd_simulate_artificial_defs_at_top, 
10465         df_rd_simulate_one_insn): New.
10466         (df_rd_bb_local_compute_process_def): Update head comment.
10467         (df_chain_create_bb): Use the new RD simulation functions.
10468         * df.h (df_rd_simulate_artificial_defs_at_top, 
10469         df_rd_simulate_one_insn): New.
10470         * opts.c (decode_options): Enable fwprop at -O1.
10471         * doc/invoke.texi (-fforward-propagate): Document this.
10472
10473 2009-05-08  Joseph Myers  <joseph@codesourcery.com>
10474
10475         PR c/24581
10476         * c-typeck.c (build_binary_op): Handle arithmetic between one real
10477         and one complex operand specially.
10478         * tree-complex.c (some_nonzerop): Do not identify a real value as
10479         zero if flag_signed_zeros.
10480
10481 2009-05-08  Paolo Bonzini  <bonzini@gnu.org>
10482
10483         PR rtl-optimization/33928
10484         * loop-invariant.c (record_use): Fix && vs. || mishap.
10485
10486 2009-05-08  Paolo Bonzini  <bonzini@gnu.org>
10487
10488         PR rtl-optimization/33928
10489         * loop-invariant.c (struct use): Add addr_use_p.
10490         (struct def): Add n_addr_uses.
10491         (struct invariant): Add cheap_address.
10492         (create_new_invariant): Set cheap_address.
10493         (record_use): Accept df_ref.  Set addr_use_p and update n_addr_uses.
10494         (record_uses): Pass df_ref to record_use.
10495         (get_inv_cost): Do not add inv->cost to comp_cost for cheap addresses
10496         used only as such.
10497
10498 2009-05-08  Kaz Kojima  <kkojima@gcc.gnu.org>
10499
10500         * config/sh/sh.c: Do not include c-pragma.h.
10501
10502 2009-05-07  Andrew Pinski  <andrew_pinski@playstation.sony.com>
10503
10504         * config/spu/spu.c: Remove include of c-common.h.
10505
10506 2009-05-07  Janis Johnson  <janis187@us.ibm.com>
10507
10508         PR c/39037
10509         * c-common.h (mark_valid_location_for_stdc_pragma,
10510         valid_location_for_stdc_pragma_p, set_float_const_decimal64,
10511         clear_float_const_decimal64, float_const_decimal64_p): New.
10512         * c.opt (Wunsuffixed-float-constants): New.
10513         * c-lex.c (interpret_float): Use pragma FLOAT_CONST_DECIMAL64 for
10514         unsuffixed float constant, handle new warning.
10515         * c-cppbuiltin.c (c_cpp_builtins): Use cast for double constants.
10516         * c-decl.c (c_scope): New flag float_const_decimal64.
10517         (set_float_const_decimal64, clear_float_const_decimal64,
10518         float_const_decimal64_p): New.
10519         (push_scope): Set new flag.
10520         * c-parser.c (c_parser_translation_unit): Mark when it's valid
10521         to use STDC pragmas.
10522         (c_parser_external_declaration): Ditto.
10523         (c_parser_compound_statement_nostart): Ditto.
10524         * c-pragma.c (valid_location_for_stdc_pragma,
10525         mark_valid_location_for_stdc_pragma,
10526         valid_location_for_stdc_pragma_p, handle_stdc_pragma,
10527         handle_pragma_float_const_decimal64): New.
10528         (init_pragma): Register new pragma FLOAT_CONST_DECIMAL64.
10529         * cp/semantics.c (valid_location_for_stdc_pragma_p,
10530         set_float_const_decimal64, clear_float_const_decimal64,
10531         float_const_decimal64_p): New dummy functions.
10532         * doc/extend.texi (Decimal Float): Remove statement that the
10533         pragma, and suffix for double constants, are not supported.
10534         * doc/invoke.texi (Warning Options): List new option.
10535         (-Wunsuffixed-float-constants): New.
10536
10537 2009-05-08  Steven Bosscher  <steven@gcc.gnu.org>
10538
10539         * config/i386/i386.c: Do not include c-common.h.
10540
10541 2009-05-07  Mark Heffernan  <meheff@google.com>
10542
10543         * doc/invoke.texi (Debugging Options): Document change of debugging
10544         dump location.
10545         * opts.c (decode_options): Make dump_base_name relative to
10546         aux_base_name directory.
10547
10548 2009-05-07  Hariharan Sandanagobalane <hariharan@picochip.com>
10549
10550         * config/picochip/picochip.h (NO_DOLLAR_IN_LABEL): Added.
10551         * config/picochip/libgccExtras/divmod15.asm : Removed redefiniton.
10552
10553 2009-05-07  Rafael Avila de Espindola  <espindola@google.com>
10554
10555         * Makefile.in (install-plugin): Simplify a bit.
10556
10557 2009-05-07  Paolo Bonzini  <bonzini@gnu.org>
10558
10559         * Makefile.in (OBJS-common): Add regcprop.o.
10560         (regcprop.o): New.
10561         * timevar.def (TV_CPROP_REGISTERS): New.
10562         * regrename.c (regrename_optimize): Return 0.
10563         (rest_of_handle_regrename): Delete.
10564         (pass_rename_registers): Point to regrename_optimize.
10565         (struct value_data_entry, struct value_data, 
10566         kill_value_one_regno, kill_value_regno, kill_value,
10567         set_value_regno, init_value_data, kill_clobbered_value,
10568         kill_set_value, kill_autoinc_value, copy_value,
10569         mode_change_ok, maybe_mode_change, find_oldest_value_reg,
10570         replace_oldest_value_reg, replace_oldest_value_addr,
10571         replace_oldest_value_mem, copyprop_hardreg_forward_1,
10572         debug_value_data, validate_value_data): Move...
10573         * regcprop.c: ... here.
10574         (rest_of_handle_cprop): Delete.
10575         (pass_cprop_hardreg): Point to copyprop_hardreg_forward.
10576
10577 2009-05-07  Jakub Jelinek  <jakub@redhat.com>
10578
10579         PR middle-end/40057
10580         * dojump.c (prefer_and_bit_test): Use immed_double_const instead of
10581         GEN_INT for 1 << bitnum.
10582         (do_jump) <case BIT_AND_EXPR>: Use build_int_cst_wide_type instead of
10583         build_int_cst_type.
10584
10585 2009-05-07  Uros Bizjak  <ubizjak@gmail.com>
10586
10587         * doc/md.texi (Standard Pattern Names For Generation) [sync_nand]:
10588         Remove wrong description of "nand" operation.
10589
10590 2009-05-06  Richard Guenther  <rguenther@suse.de>
10591             Adam Nemet  <anemet@caviumnetworks.com>
10592
10593         * gimple.def (GIMPLE_ASSIGN): Fix incorrect information in the
10594         comment.  Add that if LHS is not a gimple register, then RHS1 has
10595         to be a single object (GIMPLE_SINGLE_RHS).
10596
10597 2009-05-06  Adam Nemet  <anemet@caviumnetworks.com>
10598
10599         * expr.c (get_def_for_expr): Move it up in the file.
10600         (store_field): When expanding a bit-field store, look at the
10601         defining gimple stmt for the masking conversion.
10602
10603 2009-05-06  Janis Johnson  <janis187@us.ibm.com>
10604
10605         PR middle-end/39986
10606         * dfp.c (encode_decimal32, decode_decimal32, encode_decimal64,
10607         decode_decimal64, encode_decimal128, decode_decimal128): Avoid
10608         32-bit memcpy into long.
10609
10610 2009-05-06  Jakub Jelinek  <jakub@redhat.com>
10611
10612         * dwarf2out.c (new_reg_loc_descr): Don't ever create DW_OP_regX.
10613         (one_reg_loc_descriptor): Create DW_OP_regX here instead of calling
10614         new_reg_loc_descr.
10615         (loc_by_reference): If loc is DW_OP_regX, change it into DW_OP_bregX 0
10616         instead of appending DW_OP_deref*.
10617
10618 2009-05-06  Michael Matz  <matz@suse.de>
10619
10620         PR middle-end/40021
10621         * cfgexpand.c (maybe_cleanup_end_of_block): New static function.
10622         (expand_gimple_cond): Use it to cleanup CFG and superfluous jumps.
10623
10624 2009-05-06  Rafael Avila de Espindola  <espindola@google.com>
10625
10626         * Makefile.in (install-plugin): Fix srcdir handling.
10627
10628 2009-05-06  Andrey Belevantsev  <abel@ispras.ru>
10629
10630         * tree-ssa.c (execute_update_address_taken): Handle TARGET_MEM_REF
10631         when processing for not_regs_needed bitmap.
10632         * gimple.c (walk_stmt_load_store_addr_ops): When visiting address,
10633         handle TARGET_MEM_REF in lhs.  Check TMR_BASE for NULL while 
10634         handling it for rhs. 
10635
10636 2009-05-06  H.J. Lu  <hongjiu.lu@intel.com>
10637
10638         * config/i386/i386.md (unnamed inc/dec peephole): Use
10639         optimize_insn_for_size_p instead of optimize_size.
10640         * config/i386/predicates.md (incdec_operand): Likewise.
10641         (aligned_operand): Likewise.
10642         * config/i386/sse.md (divv8sf3): Likewise.
10643         (sqrtv8sf2): Likewise.
10644
10645 2009-05-06  H.J. Lu  <hongjiu.lu@intel.com>
10646
10647         * config/i386/i386.c (ix86_build_signbit_mask): Make it static.
10648
10649         * config/i386/i386-protos.h (ix86_build_signbit_mask): Removed.
10650
10651 2009-05-06  H.J. Lu  <hongjiu.lu@intel.com>
10652
10653         * config/i386/i386.md (*avx_<code><mode>3_finite): Replace
10654         ssemodesuffixf2c with avxmodesuffixf2c.
10655
10656 2009-05-06  Joseph Myers  <joseph@codesourcery.com>
10657
10658         PR c/40032
10659         * c-decl.c (grokdeclarator): Handle incomplete type of unnamed field.
10660
10661 2009-05-05  Jakub Jelinek  <jakub@redhat.com>
10662
10663         * tree.h: Remove DECL_BY_REFERENCE from private_flag comment.
10664         (struct tree_base): Adjust spacing for 8 bit boundaries.
10665         (struct tree_decl_common): Add decl_by_reference_flag bit.
10666         (DECL_BY_REFERENCE): Adjust.
10667         * print-tree.c (print_node): For VAR_DECL, PARM_DECL or RESULT_DECL,
10668         print DECL_BY_REFERENCE bit.
10669         * dbxout.c (DECL_ACCESSIBILITY_CHAR): Revert last change.
10670         * dwarf2out.c (loc_by_reference, gen_decl_die): Check
10671         DECL_BY_REFERENCE for all VAR_DECLs, not just non-static ones.
10672         (gen_variable_die): Likewise.  Check TREE_PRIVATE/TREE_PROTECTED
10673         unconditionally.
10674
10675         PR middle-end/39666
10676         * gimplify.c (gimplify_switch_expr): If case labels cover the whole
10677         range of the type, but default label is missing, add it with one
10678         of the existing labels instead of adding a new label for it.
10679
10680 2009-05-05  Joseph Myers  <joseph@codesourcery.com>
10681
10682         * dwarf.h: Remove.
10683
10684 2009-05-05  Rafael Avila de Espindola  <espindola@google.com>
10685
10686         * Makefile.in (enable_plugin, plugin_includedir): New.
10687         (install): Depend on install-plugin.
10688         (PLUGIN_HEADERS): New.
10689         (install-plugin): New.
10690         * config.gcc: Add vxworks-dummy.h to tm_file for x86 and x86-64.
10691
10692 2009-05-05  Richard Guenther  <rguenther@suse.de>
10693
10694         PR tree-optimization/40022
10695         * tree-ssa-phiprop.c (struct phiprop_d): Exchange vop_stmt for
10696         the only vuse.
10697         (phivn_valid_p): Fix tuplification error, simplify.
10698         (phiprop_insert_phi): Add dumps.
10699         (propagate_with_phi): Simplify.
10700
10701 2009-05-05  Richard Guenther  <rguenther@suse.de>
10702
10703         PR middle-end/40023
10704         * builtins.c (gimplify_va_arg_expr): Properly build the address.
10705
10706 2009-05-05  Shujing Zhao  <pearly.zhao@oracle.com>
10707
10708         * tree.h (strip_float_extensions): Remove duplicate declaration.
10709         (build_low_bits_mask, debug_fold_checksum, expand_function_end,
10710         expand_function_start, stack_protect_prologue, stack_protect_epilogue,
10711         block_ultimate_origin): Rearrange the declarations line to match the
10712         comment that indicates the .c file which the functions are defined.
10713         (dwarf2out_*, set_decl_rtl): Add comment.
10714         (get_base_address): Adjust comment.
10715         (change_decl_assembler_name, maybe_fold_*, build_addr): Rearrange the
10716         declarations line and add comment.
10717         (is_builtin_name): Add blank after function name, for clarity.
10718
10719 2009-05-04  Joseph Myers  <joseph@codesourcery.com>
10720
10721         * attribs.c (decl_attributes): Use %qE for identifiers in
10722         diagnostics.
10723         * cgraphunit.c (verify_cgraph_node): Translate function names to
10724         locale character set in diagnostics.
10725         * coverage.c (get_coverage_counts): Use %qE for identifiers in
10726         diagnostics.
10727         * doc/invoke.texi (-finstrument-functions-exclude-function-list):
10728         Document that functions are named in UTF-8.
10729         * expr.c (expand_expr_real_1): Translate function names to locale
10730         character set in diagnostics.
10731         * gimplify.c (omp_notice_variable, omp_is_private,
10732         gimplify_scan_omp_clauses): Use %qE for identifiers in
10733         diagnostics.
10734         * langhooks.c (lhd_print_error_function): Translate function names
10735         to locale character set.
10736         * langhooks.h (decl_printable_name): Document that return value is
10737         in internal character set.
10738         * stmt.c: Include pretty-print.h
10739         (tree_conflicts_with_clobbers_p): Use %qE for identifiers in
10740         diagnostics.
10741         (resolve_operand_name_1): Translate named operand name to locale
10742         character set.
10743         * stor-layout.c (finalize_record_size): Use %qE for identifiers in
10744         diagnostics.
10745         * toplev.c (announce_function): Translate function names to locale
10746         character set.
10747         (warn_deprecated_use): Use %qE for identifiers in diagnostics.
10748         (default_tree_printer): Use pp_identifier or translate identifiers
10749         to locale character set.  Mark "<anonymous>" for translation.
10750         * tree-mudflap.c (mx_register_decls, mudflap_finish_file): Use %qE
10751         for identifiers in diagnostics.
10752         * tree.c (handle_dll_attribute): Use %qE for identifiers in
10753         diagnostics.
10754         * varasm.c (output_constructor): Use %qE for identifiers in
10755         diagnostics.
10756
10757 2009-05-04  Rafael Avila de Espindola  <espindola@google.com>
10758
10759         * configure.ac: use ` ` instead of $()
10760         * configure: Regenerate.
10761
10762 2009-05-05  Ben Elliston  <bje@au.ibm.com>
10763
10764         * config/pa/linux-atomic.c: Eliminate conditional include of
10765         errno.h on non-LP64 systems to simplify build requirements.
10766
10767 2009-05-04  Joseph Myers  <joseph@codesourcery.com>
10768
10769         * c-common.c (handle_mode_attribute): Use %qE for identifiers in
10770         diagnostics.
10771         * c-decl.c (check_bitfield_type_and_width): Make orig_name a tree
10772         and pass value to identifier_to_locale.
10773         (warn_variable_length_array): Make name a tree.
10774         (grokdeclarator): Separate diagnostic texts for named and unnamed
10775         declarators.  Use %qE for named declarators.
10776         * c-parser.c (c_lex_one_token): Use %qE for identifiers in
10777         diagnostics.
10778         * c-pragma.c (pop_alignment, handle_pragma_pack): Use %qE for
10779         identifiers in diagnostics.
10780         * c-typeck.c (push_member_name, start_init): Pass identifiers to
10781         identifier_to_locale.  Mark "anonymous" strings for translation.
10782
10783 2009-05-04  Michael Eager <eager@eagercon.com>
10784
10785         * config/rs6000/rs6000.c (rs6000_legitimate_address): Allow
10786         address for DImode/DFmode only if double-precision FP regs.
10787
10788 2009-05-04  Michael Eager <eager@eagercon.com>
10789
10790         * config/rs6000/rs6000.c (rs6000_libcall_value): Add
10791         TARGET_SINGLE_FLOAT check.
10792
10793 2009-05-04  Michael Eager <eager@eagercon.com>
10794
10795         * config/rs6000/xilinx.h: Add CPP_SPEC for -mxilinx-fpu options.
10796
10797 2009-05-04  Michael Eager <eager@eagercon.com>
10798
10799         * gcc/config.gcc: (powerpc-xilinx-eabi*): Add tm t-xilinx
10800         * config/rs6000/t-xilinx: New
10801
10802 2009-05-04  Paolo Bonzini  <bonzini@gnu.org>
10803
10804         * doc/tm.texi (LEGITIMIZE_ADDRESS): Revise documentation.
10805         * gcc/defaults.h (LEGITIMIZE_ADDRESS): Delete.
10806         * gcc/explow.c (memory_address): Use target hook.
10807         * gcc/targhooks.c (default_legitimize_address): New.
10808         * gcc/targhooks.h (default_legitimize_address): New.
10809         * gcc/target.h (legitimize_address): New.
10810         * gcc/target-def.h (TARGET_LEGITIMIZE_ADDRESS): New.
10811         (TARGET_INITIALIZER): Include it.
10812         * gcc/system.h (LEGITIMIZE_ADDRESS): Poison.
10813
10814         * config/bfin/bfin-protos.h (legitimize_address): Remove.
10815         * config/bfin/bfin.c (legitimize_address): Remove.
10816         * config/bfin/bfin.h (LEGITIMIZE_ADDRESS): Remove.
10817         * config/m68hc11/m68hc11-protos.h (m68hc11_legitimize_address):
10818         Remove.
10819         * config/m68hc11/m68hc11.c (m68hc11_legitimize_address): Remove.
10820         * config/m68hc11/m68hc11.h (LEGITIMIZE_ADDRESS): Remove.
10821
10822         * gcc/config/arm/arm.h (LEGITIMIZE_ADDRESS, ARM_LEGITIMIZE_ADDRESS,
10823         THUMB_LEGITIMIZE_ADDRESS, THUMB2_LEGITIMIZE_ADDRESS): Delete.
10824         * gcc/config/s390/s390.h (LEGITIMIZE_ADDRESS): Delete.
10825         * gcc/config/m32c/m32c.h (LEGITIMIZE_ADDRESS): Delete.
10826         * gcc/config/sparc/sparc.h (LEGITIMIZE_ADDRESS): Delete.
10827         * gcc/config/m32r/m32r.h (LEGITIMIZE_ADDRESS): Delete.
10828         * gcc/config/i386/i386.h (LEGITIMIZE_ADDRESS): Delete.
10829         * gcc/config/sh/sh.h (LEGITIMIZE_ADDRESS): Delete.
10830         * gcc/config/avr/avr.h (LEGITIMIZE_ADDRESS): Delete.
10831         * gcc/config/m68hc11/m68hc11.h (LEGITIMIZE_ADDRESS): Delete.
10832         * gcc/config/iq2000/iq2000.h (LEGITIMIZE_ADDRESS): Delete.
10833         * gcc/config/mn10300/mn10300.h (LEGITIMIZE_ADDRESS): Delete.
10834         * gcc/config/m68k/m68k.h (LEGITIMIZE_ADDRESS): Delete.
10835         * gcc/config/score/score.h (LEGITIMIZE_ADDRESS): Delete.
10836         * gcc/config/pa/pa.h (LEGITIMIZE_ADDRESS): Delete.
10837         * gcc/config/mips/mips.h (LEGITIMIZE_ADDRESS): Delete.
10838         * gcc/config/alpha/alpha.h (LEGITIMIZE_ADDRESS): Delete.
10839         * gcc/config/frv/frv.h (LEGITIMIZE_ADDRESS): Delete.
10840         * gcc/config/spu/spu.h (LEGITIMIZE_ADDRESS): Delete.
10841         * gcc/config/xtensa/xtensa.h (LEGITIMIZE_ADDRESS): Delete.
10842         * gcc/config/cris/cris.h (LEGITIMIZE_ADDRESS): Delete.
10843         * gcc/config/rs6000/rs6000.h (LEGITIMIZE_ADDRESS): Delete.
10844         * gcc/config/picochip/picochip.h (LEGITIMIZE_ADDRESS): Delete.
10845
10846         * gcc/config/s390/s390-protos.h (legitimize_address): Delete.
10847         * gcc/config/m32c/m32c-protos.h (m32c_legitimize_address): Delete.
10848         * gcc/config/sparc/sparc-protos.h (legitimize_address): Delete.
10849         * gcc/config/i386/i386-protos.h (legitimize_address): Delete.
10850         * gcc/config/avr/avr-protos.h (legitimize_address): Delete.
10851         * gcc/config/mn10300/mn10300-protos.h (legitimize_address): Delete.
10852         * gcc/config/score/score-protos.h (score_legitimize_address): Delete.
10853         * gcc/config/arm/arm-protos.h (arm_legitimize_address,
10854         (thumb_legitimize_address): Delete.
10855         * gcc/config/pa/pa-protos.h (hppa_legitimize_address): Delete.
10856         * gcc/config/mips/mips-protos.h (mips_legitimize_address): Delete.
10857         * gcc/config/alpha/alpha-protos.h (alpha_legitimize_address): Delete.
10858         * gcc/config/frv/frv-protos.h (frv_legitimize_address): Delete.
10859         * gcc/config/spu/spu-protos.h (spu_legitimize_address): Delete.
10860         * gcc/config/xtensa/xtensa-protos.h (xtensa_legitimize_address):
10861         Delete.
10862         * gcc/config/rs6000/rs6000-protos.h (rs6000_legitimize_address):
10863         Delete.
10864
10865         * config/arm/arm.c (arm_legitimize_address): Maybe call Thumb version.
10866         * config/m32c/m32c.c (m32c_legitimize_address): Standardize.
10867         * config/m32r/m32r.c (m32r_legitimize_address): New.
10868         * config/m68k/m68k.c (m68k_legitimize_address): New.
10869         * config/score/score.c (score_legitimize_address): Standardize.
10870         * config/score/score3.c (score3_legitimize_address): Standardize.
10871         * config/score/score3.h (score3_legitimize_address): Adjust.
10872         * config/score/score7.c (score7_legitimize_address): Standardize.
10873         * config/score/score7.h (score7_legitimize_address): Adjust.
10874         * config/sh/sh.c (sh_legitimize_address): New.
10875         * config/iq2000/iq2000.c (iq2000_legitimize_address): New.
10876
10877         * gcc/config/s390/s390.c (legitimize_address): Rename to...
10878         (s390_legitimize_address): ... this.
10879         * gcc/config/sparc/sparc.c (legitimize_address): Rename to...
10880         (sparc_legitimize_address): ... this.
10881         * gcc/config/i386/i386.c (legitimize_address): Rename to...
10882         (ix86_legitimize_address): ... this.
10883         * gcc/config/avr/avr.c (legitimize_address): Rename to...
10884         (avr_legitimize_address): ... this.
10885         * gcc/config/mn10300/mn10300.c (legitimize_address): Rename to...
10886         (mn10300_legitimize_address): ... this.
10887         * config/alpha/alpha.c (alpha_legitimize_address): Wrap...
10888         (alpha_legitimize_address_1): ... the old alpha_legitimize_address.
10889         (alpha_expand_mov): Adjust call.
10890
10891         * config/frv/frv.c (frv_legitimize_address): Return x on failure.
10892         * config/spu/spu.c (spu_legitimize_address): Likewise.
10893         * config/xtensa/xtensa.c (xtensa_legitimize_address): Likewise.
10894         * config/rs6000/rs6000.c (rs6000_legitimize_address): Likewise.
10895
10896 2009-05-04  Joseph Myers  <joseph@codesourcery.com>
10897
10898         * intl.c (locale_encoding, locale_utf8): New.
10899         (gcc_init_libintl): Initialize locale_encoding and locale_utf8.
10900         * intl.h (locale_encoding, locale_utf8): Declare.
10901         * pretty-print.c: Include ggc.h.  Include iconv.h if HAVE_ICONV.
10902         (pp_base_tree_identifier, decode_utf8_char, identifier_to_locale):
10903         New.
10904         * pretty-print.h (pp_identifier): Call identifier_to_locale on ID
10905         argument.
10906         (pp_tree_identifier): Define to call pp_base_tree_identifier.
10907         (pp_base_tree_identifier): Declare as function.
10908         (identifier_to_locale): Declare.
10909         * Makefile.in (pretty-print.o): Update dependencies.
10910         * varasm.c (finish_aliases_1): Use %qE for identifiers in diagnostics.
10911
10912 2009-05-04  Richard Guenther  <rguenther@suse.de>
10913
10914         PR middle-end/40015
10915         * builtins.c (fold_builtin_memory_op): Do not decay to element
10916         type if the size matches the whole array.
10917
10918 2009-05-04  Kazu Hirata  <kazu@codesourcery.com>
10919
10920         * expmed.c (synth_mult): When trying out a shift, pass the result
10921         of a signed shift.
10922
10923 2009-05-04  Kazu Hirata  <kazu@codesourcery.com>
10924
10925         * expmed.c (shiftsub_cost): Rename to shiftsub0_cost.
10926         (shiftsub1_cost): New.
10927         (init_expmed): Compute shiftsub1_cost.
10928         (synth_mult): Optimize multiplications by constants of the form
10929         -(2^^m-1) for some constant positive integer m.
10930
10931 2009-05-03  Richard Guenther  <rguenther@suse.de>
10932
10933         PR c/39983
10934         * c-typeck.c (array_to_pointer_conversion): Do not built
10935         ADDR_EXPRs of arrays of pointer-to-element type.
10936         * c-gimplify.c (c_gimplify_expr): Revert change fixing
10937         up wrong ADDR_EXPRs after-the-fact.
10938         * c-common.c (strict_aliasing_warning): Strip pointer
10939         conversions for obtaining the original type.
10940         * builtins.c (fold_builtin_memset): Handle array types.
10941         (fold_builtin_memory_op): Handle folded POINTER_PLUS_EXPRs
10942         and array types
10943
10944 2009-05-03  Richard Guenther  <rguenther@suse.de>
10945
10946         PR middle-end/23329
10947         * tree-ssa.c (useless_type_conversion_p_1): Use get_deref_alias_set.
10948         Do not lose casts from array types with unknown extent to array
10949         types with known extent.
10950         * tree-ssa-copy.c (may_propagate_copy): Remove hack checking for
10951         alias set compatibility.
10952
10953 2009-05-03  Manuel López-Ibáñez  <manu@gcc.gnu.org>
10954
10955         * flags.h (extra_warnings): Delete.
10956         * toplev.c (process_options): Handle Wuninitialized here.
10957         * opts.c (extra_warnings): Delete.
10958         (set_Wextra): Delete.
10959         (common_handle_option): -Wextra can be handled automatically.
10960         * c-opts.c (c_common_handle_option): Delete obsolete code.
10961         (c_common_post_options): Simplify comment.
10962         * common.opt (W): Add Var.
10963         (Wextra): Add Var.
10964         (Wuninitialized): Initialize to -1.
10965
10966 2009-05-03  Adam Nemet  <anemet@caviumnetworks.com>
10967             Richard Guenther  <rguenther@suse.de>
10968
10969         * expr.c (get_def_for_expr): New function.
10970         (expand_expr_real_1) <PLUS_EXPR, MINUS_EXPR>: Adjust to work with
10971         SSA rather than trees.
10972         <MULT_EXPR>: Likewise.  Use subexp0 and subexp1 instead of
10973         TREE_OPERAND (exp, 0) and TREE_OPERAND (exp, 1).
10974         
10975 2009-05-03  Joseph Myers  <joseph@codesourcery.com>
10976
10977         * c-common.c (reswords): Add _Imaginary.
10978         * c-common.c (enum rid): Add RID_IMAGINARY.
10979
10980 2009-05-03  Paolo Bonzini  <bonzini@gnu.org>
10981
10982         * tree.h (TYPE_VECTOR_OPAQUE): Fix documentation.
10983         Patch by Richard Guenther.
10984
10985 2009-05-03  Anatoly Sokolov  <aesok@post.ru>
10986
10987         * defaults.h (FRAME_POINTER_REQUIRED): Provide default.
10988         * doc/tm.texi (FRAME_POINTER_REQUIRED): Revise documentation.
10989         * config/alpha/alpha.h (FRAME_POINTER_REQUIRED): Delete.
10990         * config/s390/s390.h (FRAME_POINTER_REQUIRED): Delete.
10991         * config/spu/spu.h (FRAME_POINTER_REQUIRED): Delete.
10992         * config/sh/sh.h (FRAME_POINTER_REQUIRED): Delete.
10993         * config/pdp11/pdp11.h (FRAME_POINTER_REQUIRED): Delete.
10994         * config/stormy16/stormy16.h (FRAME_POINTER_REQUIRED): Delete.
10995         * config/m68hc11/m68hc11.h (FRAME_POINTER_REQUIRED): Delete.
10996         * config/iq2000/iq2000.h (FRAME_POINTER_REQUIRED): Delete.
10997         * config/mn10300/mn10300.h (FRAME_POINTER_REQUIRED): Delete.
10998         * config/ia64/ia64.h (FRAME_POINTER_REQUIRED): Delete.
10999         * config/m68k/m68k.h (FRAME_POINTER_REQUIRED): Delete.
11000         * config/rs6000/rs6000.h (FRAME_POINTER_REQUIRED): Delete.
11001         * config/picochip/picochip.h (FRAME_POINTER_REQUIRED): Delete.
11002         * config/mcore/mcore.h (FRAME_POINTER_REQUIRED): Delete.
11003         * config/h8300/h8300.h (FRAME_POINTER_REQUIRED): Delete.
11004         * config/v850/v850.h (FRAME_POINTER_REQUIRED): Delete.
11005
11006 2009-05-02  Richard Guenther  <rguenther@suse.de>
11007
11008         PR tree-optimization/39940
11009         * tree-ssa-pre.c (eliminate): Make sure we may propagate before
11010         doing so.
11011
11012 2009-05-02  Richard Guenther  <rguenther@suse.de>
11013
11014         PR middle-end/40001
11015         * tree-ssa.c (execute_update_addresses_taken): Properly check
11016         if we can mark a variable DECL_GIMPLE_REG_P.
11017         * gimple.c (is_gimple_reg): Re-order check for DECL_GIMPLE_REG_P
11018         back to the end of the function.
11019         (is_gimple_reg_type): Remove complex type special casing.
11020         * gimplify.c (gimplify_bind_expr): Do not set DECL_GIMPLE_REG_P
11021         if not optimizing.
11022
11023 2009-05-02  Ben Elliston  <bje@au.ibm.com>
11024
11025         * doc/collect2.texi (Collect2): Document search path behaviour
11026         when configured with --with-ld.
11027
11028 2009-05-02  Jan Hubicka  <jh@suse.cz>
11029
11030         * tree-ssa-coalesce.c (coalesce_cost): Do not take ciritical
11031         parameter; update callers.
11032         (coalesce_cost_edge): EH edges are costier because they needs
11033         splitting even if not critical and even more costier when there are
11034         multiple EH predecestors.
11035
11036 2009-05-02  Jan Hubicka  <jh@suse.cz>
11037
11038         * except.c (remove_eh_handler_and_replace): Handle updating after
11039         removing TRY blocks.
11040
11041 2009-05-02  Eric Botcazou  <ebotcazou@adacore.com>
11042
11043         * store-motion.c (compute_store_table): Add ENABLE_CHECKING guard.
11044
11045 2009-05-02  Steven Bosscher  <steven@gcc.gnu.org>
11046
11047         * varasm.c: Do not include c-pragma.h.
11048         * attribs.c: Do not incude c-common.h.
11049
11050 2009-05-01  Michael Matz  <matz@suse.de>
11051
11052         * calls.c (initialize_argument_information): Handle SSA names like
11053         decls with a non MEM_P DECL_RTL.
11054
11055 2009-05-01  Steven Bosscher  <steven@gcc.gnu.org>
11056
11057         * ipa-reference.c: Do not include c-common.h, include splay-tree.h.
11058         * ipa-utils.c: Likewise.
11059         * ipa-type-escape.c: Likewise.
11060         * cgraphunit.c Do not include c-common.h.
11061         * ipa-pure-const.c: Likewise.
11062         * tree-if-conv.c: Likewise.
11063         * matrix-reorg.c: Do not include c-common.h and c-tree.h.
11064         * ipa-struct-reorg.c: Likewise.
11065         * tree-nomudflap.c: Likewise.
11066         * tree-ssa-structalias.c: Likewise.
11067
11068 2009-05-01  Steven Bosscher  <steven@gcc.gnu.org>
11069
11070         * store-motion.c: Many cleanups to make this pass a first-class
11071         citizen instead of an appendix to gcse load motion.  Add TODO list
11072         to make this pass faster/cleaner/better.
11073
11074         (struct ls_expr): Post gcse.c-split cleanups.
11075         Rename to st_expr.  Rename "loads" field to "antic_stores".  Rename
11076         "stores" field to "avail_stores".
11077         (pre_ldst_mems): Rename to store_motion_mems.
11078         (pre_ldst_table): Rename to store_motion_mems_table.
11079         (pre_ldst_expr_hash): Rename to pre_st_expr_hash, update users.
11080         (pre_ldst_expr_eq): Rename to pre_st_expr_eq, update users.
11081         (ldst_entry): Rename to st_expr_entry, update users.
11082         (free_ldst_entry): Rename to free_st_expr_entry, update users.
11083         (free_ldst_mems): Rename to free_store_motion_mems, update users.
11084         (enumerate_ldsts): Rename to enumerate_store_motion_mems,
11085         update caller.
11086         (first_ls_expr): Rename to first_st_expr, update users.
11087         (next_ls_expr): Rename to next_st_expr, update users.
11088         (print_ldst_list): Rename to print_store_motion_mems.  Print names of
11089         fields properly for store motion instead of names inherited from load
11090         motion in gcse.c.
11091         (ANTIC_STORE_LIST, AVAIL_STORE_LIST): Remove.
11092         (LAST_AVAIL_CHECK_FAILURE): Explain what this is.  Undefine when we
11093         are done with it.
11094
11095         (ae_kill): Rename to st_kill, update users.
11096         (ae_gen): Rename to st_avloc, update users.
11097         (transp): Rename to st_transp, update users.
11098         (pre_insert_map): Rename to st_insert_map, update users.
11099         (pre_delete_map): Rename to st_delete_map, update users.
11100         (insert_store, build_store_vectors, free_store_memory,
11101         one_store_motion_pass): Update for abovementioned changes.
11102
11103         (gcse_subst_count, gcse_create_count): Remove.
11104         (one_store_motion_pass): New statistics counters "n_stores_deleted"
11105         and "n_stores_created", local variables.
11106
11107         (extract_mentioned_regs, extract_mentioned_regs_1): Rewrite to
11108         use for_each_rtx.
11109
11110         (regvec, compute_store_table_current_insn): Remove.
11111         (reg_set_info, reg_clear_last_set): Remove.
11112         (compute_store_table): Use DF caches instead of local dataflow
11113         solvers.
11114
11115 2009-05-01  Joseph Myers  <joseph@codesourcery.com>
11116
11117         * c-objc-common.c (c_tree_printer): Print identifiers with
11118         pp_identifier, not pp_string.  Mark "({anonymous})" for
11119         translation.
11120         * c-pretty-print.c (pp_c_ws_string): New.
11121         (pp_c_cv_qualifier, pp_c_type_specifier,
11122         pp_c_specifier_qualifier_list, pp_c_parameter_type_list,
11123         pp_c_storage_class_specifier, pp_c_function_specifier,
11124         pp_c_attributes, pp_c_bool_constant, pp_c_constant,
11125         pp_c_primary_expression, pp_c_postfix_expression,
11126         pp_c_unary_expression, pp_c_shift_expression,
11127         pp_c_relational_expression, pp_c_equality_expression,
11128         pp_c_logical_and_expression, pp_c_logical_or_expression): Mostly
11129         use pp_string and pp_c_ws_string in place of pp_identifier and
11130         pp_c_identifier for non-identifiers.  Mark English strings for
11131         translation.
11132         * c-pretty-print.h (pp_c_ws_string): Declare.
11133
11134 2009-04-30  Paul Pluzhnikov  <ppluzhnikov@google.com>
11135             Roland McGrath <roland@redhat.com>
11136
11137         * configure.ac (HAVE_LD_BUILDID): New check for ld --build-id support.
11138         (ENABLE_LD_BUILDID): New configuration option.
11139         * gcc.c [HAVE_LD_BUILDID and ENABLE_LD_BUILDID]
11140         (LINK_BUILDID_SPEC): New macro.
11141         (init_spec): If defined, prepend it between LINK_EH_SPEC and
11142         link_spec.
11143         * doc/install.texi: Document --enable-linker-build-id option.
11144         * configure: Rebuild.
11145         * config.in: Rebuild.
11146
11147 2009-04-30  Adam Nemet  <anemet@caviumnetworks.com>
11148
11149         * config/mips/mips.h (FRAME_GROWS_DOWNWARD,
11150         MIPS_GP_SAVE_AREA_SIZE): Define new macros.
11151         (STARTING_FRAME_OFFSET): Return 0 if FRAME_GROWS_DOWNWARD.  Use
11152         MIPS_GP_SAVE_AREA_SIZE.
11153         * config/mips/mips.c (struct mips_frame_info): Update comment
11154         before arg_pointer_offset and hard_frame_pointer_offset.
11155         (mips_compute_frame_info): Update diagram before function: to
11156         correctly use stack_pointer_rtx for fp_sp_offset and gp_sp_offset, to
11157         indicate the position of frame_pointer_rtx with -fstack-protector and
11158         to show args_size.  Don't allocate cprestore area for leaf functions
11159         if FRAME_GROWS_DOWNWARD.  Use MIPS_GP_SAVE_AREA_SIZE to set
11160         cprestore_size.
11161         (mips_initial_elimination_offset): Update for FRAME_GROWS_DOWNWARD.
11162
11163 2009-04-30  Michael Matz  <matz@suse.de>
11164
11165         PR tree-optimization/39955
11166         * config/rs6000/rs6000.c (rs6000_check_sdmode): Also check SSA_NAMEs.
11167
11168 2009-04-30  Dave Korn  <dave.korn.cygwin@gmail.com>
11169
11170         * ira.c (setup_cover_and_important_classes):  Use safe macro
11171         REG_CLASS_FOR_CONSTRAINT instead of calling regclass_for_constraint
11172         directly.
11173         * genpreds.c (write_tm_preds_h):  Output suitable definition of
11174         REG_CLASS_FOR_CONSTRAINT.
11175
11176 2009-04-30  Rafael Avila de Espindola  <espindola@google.com>
11177
11178         * alloc-pool.c (alloc_pool_descriptor): Use an insert_opion value
11179         instead of an int.
11180         * bitmap.c (bitmap_descriptor): Likewise.
11181         * ggc-common.c (loc_descriptor): Likewise.
11182         * varray.c (varray_descriptor): Likewise.
11183         * vec.c (vec_descriptor): Likewise.
11184
11185 2009-04-30  Eric Botcazou  <ebotcazou@adacore.com>
11186
11187         * Makefile.in (dce.o): Add $(EXCEPT_H).
11188         * dce.c: Include except.h and delete redundant vector definitions.
11189         (deletable_insn_p): Return false for non-call insns that can throw
11190         if DF is running.
11191
11192 2009-04-30  Steven Bosscher  <steven@gcc.gnu.org>
11193
11194         * gcse.c (ae_gen): Remove.
11195         (can_assign_to_reg_p): Rename to can_assign_to_reg_without_clobbers_p
11196         and make non-static function to make it available in store-motion.c.
11197         Update call sites with search-and-replace.
11198         (enumerate_ldsts, reg_set_info, reg_clear_last_set, store_ops_ok,
11199         extract_mentioned_regs, extract_mentioned_regs_helper,
11200         find_moveable_store, compute_store_table, load_kills_store, find_loads,
11201         store_killed_in_insn, store_killed_after, store_killed_before,
11202         build_store_vectors, insert_insn_start_basic_block, insert-store,
11203         remove_reachable_equiv_notes, replace_store_insn, delete_store,
11204         free_store_memory, one_store_motion_pass, gate_rtl_store_motion,
11205         execute_rtl_store_motion, pass_rtl_store_motion): Move to...
11206         * store-motion.c: ...new file.  Also copy data structures from gcse.c
11207         and clean up to remove parts not used by store motion.
11208         * rtl.h (can_assign_to_reg_without_clobbers_p): Add prototype.
11209         * Makefile.in (store-motion.o): New rule. Add to OBJS-common.
11210
11211 2009-04-30  Ramana Radhakrishnan  <ramana.radhakrishnan@arm.com>
11212
11213         PR target/38571
11214         * config/arm/arm.h (FUNCTION_BOUNDARY): Set to 16 for thumb
11215         when optimizing for size.
11216
11217 2009-04-30  Hans-Peter Nilsson  <hp@axis.com>
11218
11219         * gcse.c (gcse_constant_p): Fix typo in last change.
11220
11221 2009-04-30  Rafael Avila de Espindola  <espindola@google.com>
11222
11223         * plugin.c: Include plugin-version.h only if ENABLE_PLUGIN is defined.
11224
11225 2009-04-30  Andreas Krebbel  <krebbel1@de.ibm.com>
11226
11227         * gcse.c (gcse_constant_p): Make sure the constant is sharable.
11228
11229 2009-04-29  James E. Wilson  <wilson@codesourcery.com>
11230
11231         * config/mips/mips.c (mips_add_offset): Use gen_int_mode for
11232         CONST_HIGH_PART result.
11233
11234 2009-04-29  Anatoly Sokolov  <aesok@post.ru>
11235
11236         * config/avr/avr.c (initial_elimination_offset): Rename to
11237         avr_initial_elimination_offset.
11238         (frame_pointer_required_p): Rename to avr_frame_pointer_required_p,
11239         change return type to bool.
11240         (avr_can_eliminate): New function.
11241         * config/avr/avr.h (CAN_ELIMINATE): Use avr_can_eliminate.
11242         (FRAME_POINTER_REQUIRED): Use avr_frame_pointer_required_p.
11243         (INITIAL_ELIMINATION_OFFSET): Use avr_initial_elimination_offset.
11244         * config/avr/avr-protos.h (initial_elimination_offset): Rename to
11245         avr_initial_elimination_offset.
11246         (frame_pointer_required_p): Rename to avr_frame_pointer_required_p.
11247         (avr_initial_elimination_offset): Define.
11248
11249 2009-04-29  Eric Botcazou  <ebotcazou@adacore.com>
11250             Steven Bosscher  <steven@gcc.gnu.org>
11251
11252         PR rtl-optimization/39938
11253         * Makefile.in (cfgrtl.o): Add $(INSN_ATTR_H).
11254         * cfgrtl.c: Include insn-attr.h.
11255         (rest_of_pass_free_cfg): New function.
11256         (pass_free_cfg): Use rest_of_pass_free_cfg as execute function.
11257         * resource.c (init_resource_info): Remove call to df_analyze.
11258
11259 2009-04-29  Richard Guenther  <rguenther@suse.de>
11260
11261         PR target/39943
11262         * config/i386/i386.c (ix86_vectorize_builtin_conversion): Only
11263         allow conversion to signed integers.
11264
11265 2009-04-29  Richard Guenther  <rguenther@suse.de>
11266
11267         * tree-cfg.c (verify_gimple_assign_binary): Allow vector
11268         shifts of floating point vectors if the shift amount is
11269         a constant multiple of the element size.
11270
11271 2009-04-29  Andreas Krebbel  <krebbel1@de.ibm.com>
11272             Michael Matz  <matz@suse.de>
11273
11274         PR middle-end/39927
11275         PR bootstrap/39929
11276         * tree-outof-ssa.c (emit_partition_copy): New function.
11277         (insert_partition_copy_on_edge, insert_rtx_to_part_on_edge,
11278         insert_part_to_rtx_on_edge): Perform the partition base var
11279         copy using emit_partition_copy.
11280         (insert_value_copy_on_edge): Convert constants to the right mode.
11281         (insert_rtx_to_part_on_edge): Add UNSIGNEDSRCP parameter.
11282         (elim_create): Pass the sign of the src to insert_rtx_to_part_on_edge.
11283
11284 2009-04-29  Bernd Schmidt  <bernd.schmidt@analog.com>
11285
11286         * config/bfin/bfin.c (bfin_optimize_loop): If we need a scratch reg,
11287         scan backwards to try to find a constant to initialize it.
11288
11289         * config/bfin/bfin.c (bfin_optimize_loop): When looking for the last
11290         insn before the loop_end instruction, don't look past labels.
11291
11292 2009-04-29  Richard Guenther  <rguenther@suse.de>
11293
11294         PR middle-end/39937
11295         * tree-ssa-forwprop.c (forward_propagate_addr_expr_1): Do not
11296         loose type conversions.
11297         (forward_propagate_addr_expr): Fix tuplification bug.  Remove
11298         stmts only if there are no uses of its definition.
11299
11300 2009-04-29  Bernd Schmidt  <bernd.schmidt@analog.com>
11301
11302         * config/bfin/bfin.h (splitting_loops): Declare.
11303         * config/bfin/bfin-protos.h (WA_05000257, WA_05000283, WA_05000315):
11304         Reorder bit definitions to be ascending.
11305         (WA_LOAD_LCREGS, ENABLE_WA_LOAD_LCREGS): New macros.
11306         * config/bfin/bfin.c (splitting_loops): New variable.
11307         (bfin_cpus): Add WA_LOAD_LCREGS as needed.
11308         (struct loop_info): Remove members INIT and LOOP_INIT.
11309         (bfin_optimize_loop): Don't set them.  Reorder the code that generates
11310         the LSETUP sequence.  Allow LC to be loaded from any register, but
11311         also add a case to push/pop a PREG scratch if ENABLE_WA_LOAD_LCREGS.
11312         (bfin_reorg_loops): When done, split all BB_ENDs with splitting_loops
11313         set to 1.
11314         * config/bfin/bfin.md (loop_end splitter): Use splitting_loops instead
11315         of reload_completed.
11316
11317         From Jie Zhang:
11318         * config/bfin/bfin.md (movsi_insn): Refine constraints.
11319
11320 2009-04-29  Rafael Avila de Espindola  <espindola@google.com>
11321
11322         * Makefile.in (PLUGIN_VERSION_H): New.
11323         (OBJS-common): Remove plugin-version.o.
11324         (plugin.o): Depend on (PLUGIN_VERSION_H).
11325         (plugin-version.o): Remove.
11326         * configure: Regenerate
11327         * configure.ac: Create plugin-version.h.
11328         * gcc-plugin.h (plugin_gcc_version): Remove.
11329         (plugin_default_version_check): Change signature.
11330         * plugin-version.c: Remove.
11331         * plugin.c: Include plugin-version.h.
11332         (str_plugin_gcc_version_name): Remove.
11333         (try_init_one_plugin): Pass gcc version to plugin_init.
11334         (plugin_default_version_check): Both gcc and plugin versions are now
11335         arguments.
11336
11337 2009-04-29  Bernd Schmidt  <bernd.schmidt@analog.com>
11338         
11339         * config/bfin/bfin.c (bfin_optimize_loop): Unify handling of
11340         problematic last insns.  Test for TYPE_CALL rather than CALL_P.
11341         Remove special case testing for last insn of inner loops. Don't fail
11342         if the loop ends with a jump, emit an extra nop instead.
11343
11344         * config/bfin/bfin.c (bfin_register_move_cost): Test for subsets of
11345         DREGS rather than comparing directly.  Remove code that tries to
11346         account for latencies.
11347
11348 2009-04-29  Richard Guenther  <rguenther@suse.de>
11349
11350         PR tree-optimization/39941
11351         * tree-ssa-pre.c (eliminate): Schedule update-ssa after
11352         eliminating an indirect call.
11353
11354 2009-04-29  Richard Guenther  <rguenther@suse.de>
11355
11356         * tree-cfg.c (verify_types_in_gimple_reference): Add require_lvalue
11357         parameter.  Allow invariants as base if !require_lvalue.
11358         (verify_gimple_assign_single): Adjust.
11359
11360 2009-04-29  Bernd Schmidt  <bernd.schmidt@analog.com>
11361
11362         * config/bfin/bfin.md (sp_or_sm, spm_string, spm_name): New macro.
11363         (ss<spm_name>hi3, ss<spm_name>hi3_parts, ss<spm_name>hi3_low_parts,
11364         ss<spm_name_hi3_high_parts): New patterns, replacing ssaddhi3,
11365         ssubhi3, ssaddhi3_parts and sssubhi3_parts.
11366         (flag_mulhi3_parts): Produce a HImode output rather than trying to set
11367         a VEC_SELECT.
11368         * config/bfin/bfin.c (bfin_expand_builtin,
11369         case BFIN_BUILTIN_CPLX_SQU): Adjust accordingly.
11370
11371 2009-04-28  Richard Guenther  <rguenther@suse.de>
11372
11373         * tree-vect-loop.c (get_initial_def_for_induction): Use
11374         correct types for pointer increment.
11375
11376 2009-04-29  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
11377
11378         * toplev.c (print_version): Update GMP version string calculation.
11379
11380 2009-04-28  Eric Botcazou  <ebotcazou@adacore.com>
11381
11382         PR rtl-optimization/39938
11383         * resource.c (init_resource_info): Add call to df_analyze.
11384
11385 2009-04-28  Uros Bizjak  <ubizjak@gmail.com>
11386
11387         * config/alpha/alpha.md (usegp): Cast the result of
11388         alpha_find_lo_sum_using_gp to enum attr_usegp.
11389         * config/alpha/alpha.c (override_options): Remove end-of-structure
11390         marker element from cpu_table.  Use array size of cpu_table to handle
11391         -mcpu and -mtune options.
11392         (tls_symbolic_operand_type): Change 0 to TLS_MODEL_NONE.
11393
11394 2009-04-28  Joseph Myers  <joseph@codesourcery.com>
11395
11396         * config.gcc (powerpc*-*-* | rs6000-*-*): Add
11397         rs6000/option-defaults.h to tm_file.  Support cpu_32, cpu_64,
11398         tune_32 and tune_64.
11399         * doc/install.texi (--with-cpu-32, --with-cpu-64): Document
11400         support on PowerPC.
11401         * config/rs6000/rs6000.h (OPTION_DEFAULT_SPECS): Move to ...
11402         * config/rs6000/option-defaults.h: ... here.  New file.
11403         (OPT_64, OPT_32): Define.
11404         (MASK_64BIT): Define to 0 if not already defined.
11405         (OPT_ARCH64, OPT_ARCH32): Define.
11406         (OPTION_DEFAULT_SPECS): Add entries for cpu_32, cpu_64, tune_32
11407         and tune_64.
11408
11409 2009-04-28  Ramana Radhakrishnan  <ramana.radhakrishnan@arm.com>
11410
11411         * config/arm/arm.c (arm_override_options): Emit error on using
11412         fpa with AAPCS.
11413
11414 2009-04-28  Uros Bizjak  <ubizjak@gmail.com>
11415
11416         PR rtl-optimization/39914
11417         * ira-conflicts.c (ira_build_conflicts): Prohibit call used
11418         registers for allocnos created from user-defined variables only
11419         when not optimizing.
11420
11421 2009-04-28  Richard Guenther  <rguenther@suse.de>
11422
11423         PR middle-end/39937
11424         * fold-const.c (fold_binary): Use distribute_real_division only
11425         on float types.
11426
11427 2009-04-28  Steve Ellcey  <sje@cup.hp.com>
11428
11429         * config.gcc (hppa*64*-*-hpux11*): Set use_gcc_stdint and
11430         add hpux-stdint.h to tm_file.
11431         (hppa[12]*-*-hpux11*): Ditto.
11432         (ia64*-*-hpux*): Ditto.
11433         * config/hpux-stdint.h: New.
11434         * config/ia64/hpux.h (TARGET_OS_CPP_BUILTINS): Set
11435         __STDC_EXT__ for all compiles.
11436         * config/pa/pa-hpux.h: Ditto.
11437         * config/pa/pa-hpux10.h: Ditto.
11438         * config/pa/pa-hpux11.h: Ditto.
11439
11440 2009-04-28  Catherine Moore  <clm@codesourcery.com>
11441
11442         * debug.h (set_name): Add comment.
11443
11444 2009-04-28  Andrew Pinski  <pinskia@gmail.com>
11445
11446         PR target/39929
11447         * config/darwin.c (machopic_gen_offset): Check
11448         currently_expanding_to_rtl if current_ir_type returns IR_GIMPLE.
11449         * config/arm/arm.c (require_pic_register): Likewise.
11450
11451 2009-04-28  Paolo Bonzini  <bonzini@gnu.org>
11452
11453         * config/m32c/m32c.c (TARGET_PROMOTE_FUNCTION_RETURN,
11454         m32c_promote_function_return, TARGET_PROMOTE_PROTOTYPES,
11455         m32c_promote_prototypes): Delete.
11456
11457 2009-04-28  Michael Matz  <matz@suse.de>
11458
11459         PR middle-end/39922
11460         * tree-outof-ssa.c (insert_value_copy_on_edge): Don't convert
11461         constants.
11462
11463 2009-04-28  Richard Guenther  <rguenther@suse.de>
11464
11465         * tree-vect-stmts.c (vect_get_vec_def_for_operand): Fix type error.
11466
11467 2009-04-28  Ramana Radhakrishnan  <ramana.radhakrishnan@arm.com>
11468
11469         * config/arm/arm-cores.def: Add support for arm1156t2f-s.
11470         * doc/invoke.texi (ARM Options): Document support for arm1156t2f-s.
11471         * config/arm/arm-tune.md: Regenerate.
11472
11473 2009-04-28  Alexander Monakov  <amonakov@ispras.ru>
11474
11475         * sel-sched-ir.c (maybe_tidy_empty_bb): Do not attempt to delete a
11476         block if there are complex incoming edges.
11477         (sel_merge_blocks): Remove useless assert.
11478         (sel_redirect_edge_and_branch): Check that edge was redirected.
11479         * sel-sched-ir.h (_eligible_successor_edge_p): Remove assert.
11480         (sel_find_rgns): Delete declaration.
11481         * sel-sched.c (purge_empty_blocks): Attempt to remove first block of
11482         the region when it is not a preheader.
11483
11484 2009-04-28  Uros Bizjak  <ubizjak@gmail.com>
11485
11486         PR c/39323
11487         * config/alpha/elf.h (MAX_OFILE_ALIGNMENT): Sync with elfos.h
11488
11489 2009-04-28  Richard Guenther  <rguenther@suse.de>
11490
11491         * tree.h (SSA_NAME_VALUE): Remove.
11492         (struct tree_ssa_name): Remove value_handle member.
11493         * tree-vrp.c (execute_vrp): Initialize/free the value-handle
11494         array for jump threading.
11495         * tree-ssa-propagate.c (ssa_prop_init): Do not initialize
11496         SSA_NAME_VALUEs.
11497         * print-tree.c (print_node): Do not dump SSA_NAME_VALUEs.
11498         * tree-flow.h (threadedge_initialize_values): Declare.
11499         (threadedge_finalize_values): Likewise.
11500         * tree-ssa-threadedge.c (ssa_name_values): New global variable.
11501         (SSA_NAME_VALUE): Define.
11502         (threadedge_initialize_values): New function.
11503         (threadedge_finalize_values): Likewise.
11504         * tree-ssa-dom.c (ssa_name_values): New global variable.
11505         (SSA_NAME_VALUE): Define.
11506         (tree_ssa_dominator_optimize): Initialize/free the value-handle array.
11507
11508 2009-04-28  Ira Rosen  <irar@il.ibm.com>
11509
11510         * tree-vect-loop-manip.c (vect_create_cond_for_alias_checks):
11511         Use REPORT_VECTORIZED_LOCATIONS instead 
11512         REPORT_VECTORIZED_LOOPS.
11513         * tree-vectorizer.c (vect_verbosity_level): Make static.
11514         (vect_loop_location): Rename to vect_location.
11515         (vect_set_verbosity_level): Update comment.
11516         (vect_set_dump_settings): Use REPORT_VECTORIZED_LOCATIONS
11517         and vect_location.
11518         (vectorize_loops): Fix comment. Use REPORT_VECTORIZED_LOCATIONS
11519         and vect_location. Use REPORT_UNVECTORIZED_LOCATIONS
11520         instead REPORT_UNVECTORIZED_LOOPS.
11521         * tree-vectorizer.h (enum vect_def_type): Rename vect_invariant_def
11522         and vect_loop_def to vect_external_def and vect_internal_def.
11523         (enum verbosity_levels): Rename REPORT_VECTORIZED_LOOPS
11524         and REPORT_UNVECTORIZED_LOOPS to REPORT_VECTORIZED_LOCATIONS and 
11525         REPORT_UNVECTORIZED_LOCATIONS.
11526         (enum vect_relevant): Update comment. Rename vect_unused_in_loop
11527         and vect_used_in_loop and to vect_unused_in_scope and 
11528         vect_used_in_scope.
11529         (STMT_VINFO_RELEVANT_P): Use vect_unused_in_scope.
11530         (vect_verbosity_level): Remove declaration.
11531         (vect_analyze_operations): Likewise.
11532         (vect_analyze_stmt): Declare.
11533         * tree-vect-loop.c (vect_determine_vectorization_factor): Use
11534         REPORT_UNVECTORIZED_LOCATIONS.
11535         (vect_get_loop_niters): Fix indentation.
11536         (vect_analyze_loop_form): Use REPORT_UNVECTORIZED_LOCATIONS.
11537         (vect_analyze_loop_operations): New function.
11538         (vect_analyze_loop): Call vect_analyze_loop_operations instead of
11539         vect_analyze_operations.
11540         (vect_is_simple_reduction): Use new names.
11541         (vectorizable_live_operation, vect_transform_loop): Likewise.
11542         * tree-vect-data-refs.c (vect_check_interleaving): Add a return value
11543         to specify whether the data references can be a part of interleaving
11544         chain.
11545         (vect_analyze_data_ref_dependence): Use new names.
11546         (vect_analyze_data_refs_alignment, vect_analyze_data_refs): Likewise.
11547         (vect_create_addr_base_for_vector_ref): Remove redundant code.
11548         * tree-vect-patterns.c (widened_name_p): Use new names.
11549         (vect_recog_dot_prod_pattern): Likewise.
11550         * tree-vect-stmts.c (vect_stmt_relevant_p): Use new names.
11551         (process_use, vect_mark_stmts_to_be_vectorized, 
11552         vect_model_simple_cost, vect_model_store_cost,
11553         vect_get_vec_def_for_operand, vect_get_vec_def_for_stmt_copy,
11554         vectorizable_call, vectorizable_conversion, vectorizable_assignment,
11555         vectorizable_operation, vectorizable_type_demotion,
11556         vectorizable_type_promotion, vectorizable_store, vectorizable_load,
11557         vectorizable_condition): Likewise.
11558         (vect_analyze_operations): Split into vect_analyze_loop_operations
11559         and ...
11560         (vect_analyze_stmt): ... new function.
11561         (new_stmt_vec_info): Use new names.
11562         (vect_is_simple_use): Use new names and fix comment.
11563         * tree-vect-slp.c (vect_get_and_check_slp_defs): Use new names.
11564         (vect_build_slp_tree, vect_analyze_slp, vect_schedule_slp): Likewise.
11565
11566 2009-04-28  Uros Bizjak  <ubizjak@gmail.com>
11567
11568         PR target/39911
11569         * config/i386/i386.c (print_operand) ['Z']: Handle floating point
11570         and integer modes for x87 operands.  Do not ICE for unsupported size,
11571         generate error instead.  Generate error for unsupported operand types.
11572         ['z']: Do not handle HImode memory operands specially.  Warning
11573         for floating-point operands.  Fallthru to 'Z' for unsupported operand
11574         types.  Do not ICE for unsupported size, generate error instead.
11575         (output_387_binary_op): Use %Z to output operands.
11576         (output_fp_compare): Ditto.
11577         (output_387_reg_move): Ditto.
11578
11579 2009-04-28  Ben Elliston  <bje@au.ibm.com>
11580
11581         PR c++/35652
11582         Revert:
11583
11584         2009-03-27  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
11585
11586         * builtins.c (c_strlen): Do not warn here.
11587         * c-typeck.c (build_binary_op): Adjust calls to pointer_int_sum.
11588         * c-common.c (pointer_int_sum): Take an explicit location.
11589         Warn about offsets out of bounds.
11590         * c-common.h (pointer_int_sum): Adjust declaration.
11591
11592 2009-04-27  Ian Lance Taylor  <iant@google.com>
11593
11594         * collect2.c (is_ctor_dtor): Change type of ret field in struct
11595         names to symkind.
11596         * dce.c (run_fast_df_dce): Change type of old_flags to int.
11597         * df-core.c (df_set_flags): Change return type to int.  Change
11598         type of old_flags to int.
11599         (df_clear_flags): Likewise.
11600         * df-scan.c (df_def_record_1): Change 0 to VOIDmode.
11601         (df_get_conditional_uses): Likewise.
11602         * df.h (df_set_flags, df_clear_flags): Update declarations.
11603         * dwarf2out.c (struct indirect_string_node): Change type of form
11604         field to enum dwarf_form.
11605         (AT_string_form): Change return type to enum dwarf_form.
11606         * fixed-value.c (fixed_compare): Add cast to enum type.
11607         * fwprop.c (update_df): Change 0 to VOIDmode.
11608         * gensupport.c: Change 0 to UNKNOWN.
11609         * gimple.h (gimple_cond_code): Add cast to enum type.
11610         * haifa-sched.c (reemit_notes): Add cast to enum type.
11611         * hooks.c (hook_int_void_no_regs): Remove function.
11612         * hooks.h (hook_int_void_no_regs): Remove declaration.
11613         * optabs.c (expand_widen_pattern_expr): Change 0 to VOIDmode.
11614         * predict.c (combine_predictions_for_insn): Add casts to enum type.
11615         * real.c (real_arithmetic): Add cast to enum type.
11616         (real_compare): Likewise.
11617         * target.h (struct gcc_target): Change return type of
11618         branch_target_register_class to enum reg_class.
11619         * target-def.h (TARGET_BRANCH_TARGET_REGISTER_CLASS): Define as
11620         default_branch_target_register_class.
11621         * targhooks.c (default_branch_target_register_class): New function.
11622         * targhooks.h (default_branch_target_register_class): Declare.
11623         * tree-data-ref.c (print_direction_vector): Add cast to enum type.
11624         * tree-vect-data-refs.c (vect_supportable_dr_alignment): Remove
11625         cast to int.
11626         * tree-vect-loop.c (vect_create_epilog_for_reduction): Change 0 to
11627         ERROR_MARK.
11628         * tree-vect-slp.c (vect_build_slp_tree): Change 0 to
11629         vect_uninitialized_def.  Change 0 to ERROR_MARK.
11630         * tree-vect-stmts.c (supportable_widening_operation): Don't
11631         initialize icode1 and icode2.
11632         * tree-vectorizer.h (enum vect_def_type): Add vect_uninitialized_def.
11633         * config/sol2-c.c (cmn_err_length_specs): Change 0 to FMT_LEN_none
11634         and to STD_C89.
11635         (cmn_err_flag_specs): Change 0 to STD_C89.
11636         (cmn_err_char_table): Likewise.
11637         * config/arm/arm.c (get_arm_condition_code): Change type of code
11638         to enum arm_cond_code.
11639         (IWMMXT_BUILTIN): Change 0 to UNKNOWN.
11640         (IWMMXT_BUILTIN2): Likewise.
11641         (neon_builtin_type_bits): Don't define typedef.
11642         (neon_builtin_datum): Change type of bits field to int.
11643         (arm_expand_neon_args): Add cast to enum type.
11644         * config/ia64/ia64.c (tls_symbolic_operand_type): Change 0 to
11645         TLS_MODEL_NONE.
11646         * config/i386/i386.c (bdesc_multi_arg): Change 0 to UNKNOWN.  Add
11647         casts to enum type.
11648         * config/mips/mips.c (LOONGSON_BUILTIN_ALIAS): Change 0 to
11649         MIPS_FP_COND_f.
11650         * config/mips/mips.md (jal_macro): Return enum constant.
11651         (single_insn): Likewise.
11652         * config/rs6000/rs6000.c (bdesc_altivec_preds): Change 0 to
11653         CODE_FOR_nothing.
11654         * config/rs6000/rs6000-c.c (altivec_overloaded_builtins): Add
11655         casts to enum type.
11656         * config/s390/s390.c (s390_tune_flags): Change type to int.
11657         (s390_arch_flags): Likewise.
11658         (s390_handle_arch_option): Change flags field of struct pta to int.
11659         * config/s390/s390.h (s390_tune_flags): Update declaration.
11660         (s390_arch_flags): Likewise.
11661         * config/sh/sh.c (prepare_move_operands): Compare
11662         tls_symbolic_operand result with enum constant.
11663         (sh_reorg): Change PUT_MODE to PUT_REG_NOTE_KIND.
11664         (sh_expand_prologue): Add cast to enum type.
11665         (sh_expand_epilogue): Likewise.
11666         (tls_symbolic_operand): Change return type to enum tls_model.
11667         (fpscr_set_from_mem): Add cast to enum type.
11668         (legitimize_pic_address): Compare tls_symbolic_operand result with
11669         enum constant.
11670         (sh_target_reg_class): Change return type to enum reg_class.
11671         * config/sh/sh.h (OVERRIDE_OPTIONS): Change CPU_xxx to
11672         PROCESSOR_xxx.
11673         * config/sh/sh-protos.h (tls_symbolic_operand): Update declaration.
11674         * config/sparc/sparc.c (sparc_override_options): Add cast to enum type.
11675         * config/sparc/sparc.md (empty_delay_slot): Return enum constant.
11676         (pic, calls_alloca, calls_eh_return, leaf_function): Likewise.
11677         (delayed_branch, tls_call_delay): Likewise.
11678         (eligible_for_sibcall_delay): Likewise.
11679         (eligible_for_return_delay): Likewise. 
11680         * config/spu/spu.c (expand_builtin_args): Add cast to enum type.
11681         (spu_expand_builtin_1): Likewise.
11682
11683         * c-typeck.c (convert_for_assignment): Issue -Wc++-compat warnings
11684         for all types of conversions.
11685         (output_init_element): Issue -Wc++-compat warning if needed when
11686         initializing a bitfield with enum type.
11687         * c-parser.c (c_parser_expression): Set original_type to
11688         original_type of right hand operand of comman operator.
11689
11690 2009-04-27  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
11691
11692         * doc/c-tree.texi (Types, Functions, Expression trees): Fix
11693         grammar nits.
11694         * doc/cfg.texi (Maintaining the CFG, Liveness information): Likewise.
11695         * doc/cpp.texi (Standard Predefined Macros)
11696         (Implementation-defined behavior): Likewise.
11697         * doc/extend.texi (Function Attributes, Type Attributes): Likewise.
11698         * doc/gimple.texi (GIMPLE Exception Handling)
11699         (@code{GIMPLE_ASSIGN}): Likewise.
11700         * doc/install.texi (Prerequisites, Configuration, Specific): Likewise.
11701         * doc/invoke.texi (Warning Options, Optimize Options)
11702         (AVR Options, Darwin Options): Likewise.
11703         (Optimize Options): Reformulate -fwhole-program description.
11704         * doc/loop.texi (Lambda): Likewise.
11705         * doc/md.texi (Output Template, Define Constraints)
11706         (Standard Names, Insn Splitting): Likewise.
11707         * doc/options.texi (Option properties): Likewise.
11708         * doc/passes.texi (Tree-SSA passes): Likewise.
11709         * doc/rtl.texi (Side Effects, Assembler, Insns): Likewise.
11710         * doc/tm.texi (Register Classes, Old Constraints, Scalar Return)
11711         (File Names and DBX): Likewise.
11712         * doc/trouble.texi (Incompatibilities): Likewise.
11713
11714 2009-04-27  Trevor Smigiel  <trevor_smigiel@playstation.sony.com>
11715
11716         * spu.c (spu_machine_dependent_reorg): Make sure branch label on hint
11717         instruction is correct.
11718
11719 2009-04-27  Trevor Smigiel  <trevor_smigiel@playstation.sony.com>
11720
11721         Allow non-constant arguments to conversion intrinsics.
11722         * spu-protos.h (exp2_immediate_p, spu_gen_exp2): Declare.
11723         * predicates.md (spu_inv_exp2_operand, spu_exp2_operand): New.
11724         * spu.c (print_operand): Handle 'v' and 'w'.
11725         (exp2_immediate_p, spu_gen_exp2): Define.
11726         * spu-builtins.def (spu_convts, spu_convtu, spu_convtf_0,
11727         spu_convtf_1): Update parameter descriptions.
11728         * spu-builtins.md (spu_csflt, spu_cuflt, spu_cflts, spu_cfltu): Update.
11729         * constraints.md ('v', 'w'): New.
11730         * spu.md (UNSPEC_CSFLT, UNSPEC_CFLTS, UNSPEC_CUFLT, UNSPEC_CFLTU):
11731         Remove.
11732         (i2f, I2F): New define_mode_attr.
11733         (floatsisf2, floatv4siv4sf2, fix_truncsfsi2, fix_truncv4sfv4si2,
11734         floatunssisf2, floatunsv4siv4sf2, fixuns_truncsfsi2,
11735         fixuns_truncv4sfv4si2):  Update to use mode attribute.
11736         (float<mode><i2f>2_mul, float<mode><i2f>2_div,
11737         fix_trunc<mode><f2i>2_mul, floatuns<mode><i2f>2_mul,
11738         floatuns<mode><i2f>2_div, fixuns_trunc<mode><f2i>2_mul): New
11739         patterns for combine.
11740
11741 2009-04-27  Steven Bosscher  <steven@gcc.gnu.org>
11742
11743         * dbgcnt.def (cprop1, cprop2, gcse, jump_bypass): Remove
11744         (cprop, hoist, pre, store_motion): New debug counters.
11745         * tree-pass.h (pass_tracer): Move to list of gimple passes, it
11746         is not an RTL pass anymore.
11747         (pass_profiling): Remove extern decl for pass removed in 2005.
11748         (pass_gcse, pass_jump_bypass): Remove.
11749         * final.c (rest_of_clean_state): Set flag_rerun_cse_after_global_opts
11750         to 0 for clean state.
11751         * toplev.h (flag_rerun_cse_after_global_opts): Add extern declaration.
11752         * cse.c (gate_handle_cse_after_global_opts,
11753         rest_of_handle_cse_after_global_opts): New functions.
11754         (pass_cse_after_global_opts): New pass, does local CSE.
11755         * timevar.def (TV_GCSE, TV_CPROP1, TV_CPROP2, TV_BYPASS): Remove.
11756         (TV_CPROP): New timevar.
11757         * gcse.c (flag_rerun_cse_after_global_opts): New global variable.
11758         (run_jump_opt_after_gcse, max_gcse_regno): Remove global vars.
11759         (gcse_main, recompute_all_luids): Remove.
11760         (compute_hash_table_work): Call max_reg_num instead of reading
11761         max_gcse_regno.
11762         (cprop_jump): Don't set run_jump_opt_after_gcse.
11763         (constprop_register): Always allow to alter jumps.
11764         (cprop_insn): Likewise.
11765         (do_local_cprop): Likewise.
11766         (local_cprop_pass): Likewise.  Return non-zero if something changed.
11767         (cprop): Remove function, fold interesting bits into one_cprop_pass.
11768         (find_implicit_sets): Add note about missed optimization opportunity.
11769         (one_cprop_pass): Rewrite to be "the" CPROP pass, called from the
11770         pass_rtl_cprop execute function.
11771         Don't bother tracking the pass number, each pass gets its own dumpfile
11772         now anyway.
11773         Always allow to alter jumpsand bypass jumps.
11774         (bypass_block): Don't ignore regno >= max_gcse_regno, find_bypass_set
11775         will just find no suitable set.
11776         (pre_edge_insert): Fix dumping, this function is for PRE only.
11777         (one_pre_gcse_pass): Rewrite to be "the" PRE pass, called from the
11778         pass_rtl_pre execute function.
11779         (hoist_code): Return non-zero if something changed.  Keep track of
11780         substitutions and insertions for statistics gathering similar to PRE.
11781         (one_code_hoisting_pass): Rewrite to be "the" code hoisting pass,
11782         called from the pass_rtl_hoist execute function.  Show pass statistics.
11783         (compute_store_table): Use max_reg_num directly instead of using the
11784         formerly global max_gcse_regno.
11785         (build_store_vectors): Likewise.
11786         (replace_store_insn): Fix dumping.
11787         (store_motion): Rename to ...
11788         (one_store_motion_pass): ... this.  Rewrite to be "the" STORE_MOTION
11789         pass, called from the pass_rtl_store_motion execute function.  Keep
11790         track of substitutions and insertions for statistics gathering similar
11791         to PRE.
11792         (bypass_jumps): Remove, fold interesting bits into ...
11793         (one_cprop_pass): ... this.  Rewrite to be "the" CPROP pass, called
11794         from the pass_rtl_cprop execute function.
11795         (gate_handle_jump_bypass, rest_of_handle_jump_bypass,
11796         pass_jump_bypass): Remove.
11797         (gate_handle_gcse, rest_of_handle_gcse): Remove.
11798         (gate_rtl_cprop, execute_rtl_cprop, pass_rtl_cprop): New.
11799         (gate_rtl_pre, execute_rtl_pre, pass_rtl_pre): New.
11800         (gate_rtl_hoist, execute_rtl_hoist, pass_rtl_hoist): New.
11801         (gate_rtl_store_motion, execute_rtl_store_motion,
11802         pass_rtl_store_motion): New.
11803         * common.opt: Remove flag_cse_skip_blocks, adjust documentation to
11804         make it clear that -fcse-skip-blocks is a no-op for backward compat.
11805         * passes.c (init_optimization_passes): Remove pass_gcse and
11806         pass_jump_bypass.  Schedule cprop, pre, hoist, cprop, store_motion,
11807         and cse_after_global_opts in place of pass_gcse.  Schedule cprop
11808         instead of pass_jump_bypass.
11809
11810 2009-04-27  Richard Guenther  <rguenther@suse.de>
11811
11812         PR middle-end/39928
11813         * gimplify.c (gimplify_expr): If we are required to create
11814         a temporary make sure it ends up as register.
11815
11816 2009-04-27  H.J. Lu  <hongjiu.lu@intel.com>
11817
11818         PR target/39903
11819         * config/i386/i386.c (construct_container): Don't call
11820         gen_reg_or_parallel with BLKmode on X86_64_SSE_CLASS,
11821         X86_64_SSESF_CLASS and X86_64_SSEDF_CLASS.
11822
11823 2009-04-27  Michael Matz  <matz@suse.de>
11824
11825         * ssaexpand.h (struct ssaexpand): Member 'values' is a bitmap.
11826         (get_gimple_for_ssa_name): Adjust, lookup using SSA_NAME_DEF_STMT.
11827         * tree-ssa-live.h: (find_replaceable_exprs): Return a bitmap.
11828         (dump_replaceable_exprs): Take a bitmap.
11829         * cfgexpand.c (gimple_cond_pred_to_tree): Handle bitmap instead of
11830         array.
11831         (expand_gimple_basic_block): Likewise.
11832         * tree-ssa-ter.c (struct temp_expr_table_d): Make
11833         replaceable_expressions member a bitmap.
11834         (free_temp_expr_table): Pass back and deal with bitmap, not gimple*.
11835         (mark_replaceable): Likewise.
11836         (find_replaceable_in_bb, dump_replaceable_exprs): Likewise.
11837         * tree-outof-ssa.c (remove_ssa_form): 'values' is a bitmap.
11838
11839 2009-04-27  Richard Guenther  <rguenther@suse.de>
11840
11841         * tree-cfg.c (remove_useless_stmts): Verify stmts afterwards.
11842         (verify_stmts): Dispatch to gimple/type verification code.
11843         * tree-inline.c (remap_gimple_op_r): Work around C++ FE
11844         issue with call argument types.
11845
11846 2009-04-27  Michael Matz  <matz@suse.de>
11847
11848         * tree-into-ssa.c (regs_to_rename, mem_syms_to_rename): Remove.
11849         (init_update_ssa, delete_update_ssa, update_ssa): Remove references
11850         to above.
11851
11852 2009-04-27  Richard Sandiford  <rdsandiford@googlemail.com>
11853             Eric Botcazou  <ebotcazou@adacore.com>
11854
11855         * resource.c (find_basic_block): Use BLOCK_FOR_INSN to look up
11856         a label's basic block.
11857         (mark_target_live_regs): Tidy and rework obsolete comments.
11858         Change back DF problem to LIVE.  If a label starts a basic block,
11859         assume that all registers that used to be live then still are.
11860         (init_resource_info): If a label starts a basic block, set its
11861         BLOCK_FOR_INSN accordingly.
11862         (fini_resource_info): Undo the setting of BLOCK_FOR_INSN.
11863
11864 2009-04-27  Richard Guenther  <rguenther@suse.de>
11865
11866         * tree-flow-inline.h (function_ann): Remove.
11867         (get_function_ann): Likewise.
11868         * tree-dfa.c (create_function_ann): Remove.
11869         * tree-flow.h (struct static_var_ann_d): Remove.
11870         (struct function_ann_d): Likewise.
11871         (union tree_ann_d): Remove fdecl member.
11872         (function_ann_t): Remove.
11873         (function_ann, get_function_ann, create_function_ann): Remove
11874         declarations.
11875
11876 2009-04-27  Uros Bizjak  <ubizjak@gmail.com>
11877
11878         * config/alpha/alpha.c (code_for_builtin): Declare as enum insn_code.
11879
11880 2009-04-27  Jan Hubicka  <jh@suse.cz>
11881
11882         * ipa-pure-const.c (struct funct_state_d): New fields
11883         state_previously_known, looping_previously_known; remove
11884         state_set_in_source.
11885         (analyze_function): Use new fields.
11886         (propagate): Avoid assumption that state_set_in_source imply
11887         nonlooping.
11888
11889         * tree-ssa-loop-niter.c (finite_loop_p): New function.
11890         * tree-ssa-loop-ivcanon.c (empty_loop_p): Use it.
11891         * cfgloop.h (finite_loop_p): Declare.
11892
11893 2009-04-26  Michael Matz  <matz@suse.de>
11894
11895         * tree-flow.h (tree_ann_common_d): Remove aux and value_handle members.
11896
11897 2009-04-26  Michael Matz  <matz@suse.de>
11898
11899         * tree-pass.h (pass_del_ssa, pass_mark_used_blocks,
11900         pass_free_cfg_annotations, pass_free_datastructures): Remove decls.
11901         * gimple-low.c (mark_blocks_with_used_vars, mark_used_blocks,
11902         pass_mark_used_blocks): Remove.
11903         * tree-optimize.c (pass_free_datastructures,
11904         execute_free_cfg_annotations, pass_free_cfg_annotations): Remove.
11905         * passes.c (init_optimization_passes): Don't call
11906         pass_mark_used_blocks, remove dead code.
11907
11908 2009-04-26  H.J. Lu  <hongjiu.lu@intel.com>
11909
11910         * tree-outof-ssa.c (rewrite_trees): Add ATTRIBUTE_UNUSED.
11911         * tree-ssa-live.h (register_ssa_partition): Likewise.
11912
11913 2009-04-26  Michael Matz  <matz@suse.de>
11914
11915         Expand from SSA.
11916         * builtins.c (fold_builtin_next_arg): Handle SSA names.
11917         * tree-ssa-copyrename.c (rename_ssa_copies): Use ssa_name() directly.
11918         * tree-ssa-coalesce.c (create_outofssa_var_map): Mark only useful
11919         SSA names. 
11920         (compare_pairs): Swap cost comparison.
11921         (coalesce_ssa_name): Don't use change_partition_var.
11922         * tree-nrv.c (struct nrv_data): Add modified member.
11923         (finalize_nrv_r): Set it.
11924         (tree_nrv): Use it to update statements.
11925         (pass_nrv): Require PROP_ssa.
11926         * tree-mudflap.c (mf_decl_cache_locals,
11927         mf_build_check_statement_for): Use make_rename_temp.
11928         (pass_mudflap_2): Require PROP_ssa, run ssa update at finish.
11929         * alias.c (find_base_decl): Handle SSA names.
11930         * emit-rtl (set_reg_attrs_for_parm): Make non-static.
11931         (component_ref_for_mem_expr): Don't leak SSA names into RTL.
11932         * rtl.h (set_reg_attrs_for_parm): Declare.
11933         * tree-optimize.c (pass_cleanup_cfg_post_optimizing): Rename
11934         to "optimized", remove unused locals at finish.
11935         (execute_free_datastructures): Make global, call
11936         delete_tree_cfg_annotations.
11937         (execute_free_cfg_annotations): Don't call
11938         delete_tree_cfg_annotations.
11939
11940         * ssaexpand.h: New file.
11941         * expr.c (toplevel): Include ssaexpand.h.
11942         (expand_assignment): Handle SSA names the same as register variables.
11943         (expand_expr_real_1): Expand SSA names.
11944         * cfgexpand.c (toplevel): Include ssaexpand.h.
11945         (SA): New global variable.
11946         (gimple_cond_pred_to_tree): Fold TERed comparisons into predicates.
11947         (SSAVAR): New macro.
11948         (set_rtl): New helper function.
11949         (add_stack_var): Deal with SSA names, use set_rtl.
11950         (expand_one_stack_var_at): Likewise.
11951         (expand_one_stack_var): Deal with SSA names.
11952         (stack_var_size_cmp): Use code (SSA_NAME / DECL) as tie breaker
11953         before unique numbers.
11954         (expand_stack_vars): Use set_rtl.
11955         (expand_one_var): Accept SSA names, add asserts for them, feed them
11956         to above subroutines.
11957         (expand_used_vars): Expand all partitions (without default defs),
11958         then only the local decls (ignoring those expanded already).
11959         (expand_gimple_cond): Remove edges when jumpif() expands an
11960         unconditional jump.
11961         (expand_gimple_basic_block): Don't clear EDGE_EXECUTABLE here,
11962         or remove abnormal edges.  Ignore insns setting the LHS of a TERed
11963         SSA name.
11964         (gimple_expand_cfg): Call into rewrite_out_of_ssa, initialize
11965         members of SA; deal with PARM_DECL partitions here; expand
11966         all PHI nodes, free tree datastructures and SA.  Commit instructions
11967         on edges, clear EDGE_EXECUTABLE and remove abnormal edges here.
11968         (pass_expand): Require and destroy PROP_ssa, verify SSA form, flow
11969         info and statements at start, collect garbage at finish.
11970         * tree-ssa-live.h (struct _var_map): Remove partition_to_var member.
11971         (VAR_ANN_PARTITION) Remove.
11972         (change_partition_var): Don't declare.
11973         (partition_to_var): Always return SSA names.
11974         (var_to_partition): Only accept SSA names.
11975         (register_ssa_partition): Only check argument.
11976         * tree-ssa-live.c (init_var_map): Don't allocate partition_to_var
11977         member.
11978         (delete_var_map): Don't free it.
11979         (var_union): Only accept SSA names, simplify.
11980         (partition_view_init): Mark only useful SSA names as used.
11981         (partition_view_fini): Only deal with SSA names.
11982         (change_partition_var): Remove.
11983         (dump_var_map): Use ssa_name instead of partition_to_var member.
11984         * tree-ssa.c (delete_tree_ssa): Don't remove PHI nodes on RTL
11985         basic blocks.
11986         * tree-outof-ssa.c (toplevel): Include ssaexpand.h and expr.h.
11987         (struct _elim_graph): New member const_dests; nodes member vector of
11988         ints.
11989         (set_location_for_edge): New static helper.
11990         (create_temp): Remove.
11991         (insert_partition_copy_on_edge, insert_part_to_rtx_on_edge,
11992         insert_value_copy_on_edge, insert_rtx_to_part_on_edge): New functions.
11993         (new_elim_graph): Allocate const_dests member.
11994         (clean_elim_graph): Truncate const_dests member.
11995         (delete_elim_graph): Free const_dests member.
11996         (elim_graph_size): Adapt to new type of nodes member.
11997         (elim_graph_add_node): Likewise.
11998         (eliminate_name): Likewise.
11999         (eliminate_build): Don't take basic block argument, deal only with
12000         partition numbers, not variables.
12001         (get_temp_reg): New static helper.
12002         (elim_create): Use it, deal with RTL temporaries instead of trees.
12003         (eliminate_phi): Adjust all calls to new signature.
12004         (assign_vars, replace_use_variable, replace_def_variable): Remove.
12005         (rewrite_trees): Only do checking.
12006         (edge_leader, stmt_list, leader_has_match, leader_match): Remove.
12007         (same_stmt_list_p, identical_copies_p, identical_stmt_lists_p,
12008         init_analyze_edges_for_bb, fini_analyze_edges_for_bb,
12009         contains_tree_r, MAX_STMTS_IN_LATCH,
12010         process_single_block_loop_latch, analyze_edges_for_bb,
12011         perform_edge_inserts): Remove.
12012         (expand_phi_nodes): New global function.
12013         (remove_ssa_form): Take ssaexpand parameter.  Don't call removed
12014         functions, initialize new parameter, remember partitions having a
12015         default def.
12016         (finish_out_of_ssa): New global function.
12017         (rewrite_out_of_ssa): Make global.  Adjust call to remove_ssa_form,
12018         don't reset in_ssa_p here, don't disable TER when mudflap.
12019         (pass_del_ssa): Remove.
12020         * tree-flow.h (struct var_ann_d): Remove out_of_ssa_tag and
12021         partition members.
12022         (execute_free_datastructures): Declare.
12023         * Makefile.in (SSAEXPAND_H): New variable.
12024         (tree-outof-ssa.o, expr.o, cfgexpand.o): Depend on SSAEXPAND_H.
12025         * basic-block.h (commit_one_edge_insertion): Declare.
12026         * passes.c (init_optimization_passes): Move pass_nrv and
12027         pass_mudflap2 before pass_cleanup_cfg_post_optimizing, remove
12028         pass_del_ssa, pass_free_datastructures, pass_free_cfg_annotations.
12029         * cfgrtl.c (commit_one_edge_insertion): Make global, don't declare.
12030         (redirect_branch_edge): Deal with super block when expanding, split
12031         out jump patching itself into ...
12032         (patch_jump_insn): ... here, new static helper.
12033
12034 2009-04-26  Michael Matz  <matz@suse.de>
12035
12036         * tree-ssa-copyrename.c (rename_ssa_copies): Don't iterate
12037         beyond num_ssa_names.
12038         * tree-ssa-ter.c (free_temp_expr_table): Likewise.
12039         * tree-ssa-coalesce.c (create_outofssa_var_map): Likewise.
12040
12041 2009-04-26  Jakub Jelinek  <jakub@redhat.com>
12042
12043         PR inline-asm/39543
12044         * fwprop.c (forward_propagate_asm): New function.
12045         (forward_propagate_and_simplify): Propagate also into __asm, if it
12046         doesn't increase the number of referenced registers.
12047
12048         PR c/39889
12049         * stmt.c (warn_if_unused_value): Look through NON_LVALUE_EXPR.
12050
12051 2009-04-26  Jakub Jelinek  <jakub@redhat.com>
12052
12053         * tree-nested.c (get_nonlocal_vla_type): If not optimizing, call
12054         note_nonlocal_vla_type for nonlocal VLAs.
12055         (note_nonlocal_vla_type, note_nonlocal_block_vlas,
12056         contains_remapped_vars, remap_vla_decls): New functions.
12057         (convert_nonlocal_reference_stmt): If not optimizing, call
12058         note_nonlocal_block_vlas on GIMPLE_BIND block vars.
12059         (nesting_copy_decl): Return {VAR,PARM,RESULT}_DECL unmodified
12060         if it wasn't found in var_map.
12061         (finalize_nesting_tree_1): Call remap_vla_decls.  If outermost
12062         GIMPLE_BIND doesn't have gimple_bind_block, chain debug_var_chain
12063         to BLOCK_VARS (DECL_INITIAL (root->context)) instead of calling
12064         declare_vars.
12065         * gimplify.c (nonlocal_vlas): New variable.
12066         (gimplify_var_or_parm_decl): Add debug VAR_DECLs for non-local
12067         referenced VLAs.
12068         (gimplify_body): Create and destroy nonlocal_vlas.
12069
12070         * dwarf2out.c (loc_descr_plus_const): New function.
12071         (build_cfa_aligned_loc, tls_mem_loc_descriptor,
12072         mem_loc_descriptor, loc_descriptor_from_tree_1,
12073         descr_info_loc, gen_variable_die): Use it.
12074
12075         * tree.h (DECL_BY_REFERENCE): Note that it is also valid for
12076         !TREE_STATIC VAR_DECLs.
12077         * dwarf2out.c (loc_by_reference, gen_decl_die): Handle
12078         DECL_BY_REFERENCE on !TREE_STATIC VAR_DECLs.
12079         (gen_variable_die): Likewise.  Don't look at TREE_PRIVATE if
12080         DECL_BY_REFERENCE is valid.
12081         * dbxout.c (DECL_ACCESSIBILITY_CHAR): Don't look at TREE_PRIVATE
12082         for PARM_DECLs, RESULT_DECLs or !TREE_STATIC VAR_DECLs.
12083         * tree-nested.c (get_nonlocal_debug_decl, get_local_debug_decl):
12084         Copy DECL_BY_REFERENCE.
12085         (struct nesting_copy_body_data): New type.
12086         (nesting_copy_decl): New function.
12087         (finalize_nesting_tree_1): Remap types of debug_var_chain variables,
12088         if they have variable length.
12089
12090 2009-04-26  Michael Matz  <matz@suse.de>
12091
12092         * tree-sra.c (sra_build_assignment): Don't use into_ssa mode,
12093         mark new temporaries for renaming.
12094
12095 2009-04-26  Joseph Myers  <joseph@codesourcery.com>
12096
12097         PR c/39581
12098         * c-decl.c (global_bindings_p): Return negative value.
12099         (c_variable_size): New.  Based on variable_size from
12100         stor-layout.c.
12101         (grokdeclarator): Call c_variable_size not variable_size.
12102
12103 2009-04-26  Uros Bizjak  <ubizjak@gmail.com>
12104
12105         * config/i386/i386.c (print_operand) ['z']: Fix typo.
12106
12107 2009-04-26  Kai Tietz  <kai.tietz@onevision.com>
12108
12109         * config/i386/mingw-w64.h (STANDARD_INCLUDE_DIR):
12110         Redefine it to just use mingw/include.
12111         (ASM_SPEC): Rules for -m32 and -m64.
12112         (LINK_SPEC): Use Likewise.
12113         (SPEC_32): New define.
12114         (SPEC_64): Likewise.
12115         (SUB_LINK_SPEC): Likewise.
12116         (MULTILIB_DEFAULTS): New define.
12117         * config/i386/t-mingw-w64 (MULTILIB_OPTIONS):
12118         Add multilib options.
12119         (MULTILIB_DIRNAMES): Likewise.
12120         (MULTILIB_OSDIRNAMES): Likewise.
12121         (LIBGCC): Likewise.
12122         (INSTALL_LIBGCC): Likewise.
12123
12124 2009-04-26  Joseph Myers  <joseph@codesourcery.com>
12125
12126         PR c/39556
12127         * c-tree.h (enum c_inline_static_type): New.
12128         (record_inline_static): Declare.
12129         * c-decl.c (struct c_inline_static, c_inline_statics,
12130         record_inline_static, check_inline_statics): New.
12131         (pop_file_scope): Call check_inline_statics.
12132         (start_decl): Call record_inline_static instead of pedwarning
12133         directly for static in inline function.
12134         * c-typeck.c (build_external_ref): Call record_inline_static
12135         instead of pedwarning directly for static referenced in inline
12136         function.
12137
12138 2009-04-26  Steven Bosscher  <steven@gcc.gnu.org>
12139
12140         * df-scan.c (df_insn_rescan): Salvage insn's LUID if the insn is
12141         not new but only being rescanned.
12142         * gcse.c (uid_cuid, max_uid, INSN_CUID, max_cuid, struct reg_set,
12143         reg_set_table, REG_SET_TABLE_SLOP, reg_set_in_block,
12144         alloc_reg_set_mem, free_reg_set_mem, record_one_set,
12145         record_set_info, compute_set, grealloc): Remove.
12146         (recompute_all_luids): New function.
12147         (gcse_main): Don't compute sets, and don't do related memory
12148         allocations/free-ing.  If something changed before the end of the
12149         pass, update LUIDs using recompute_all_luids.
12150         (alloc_gcse_mem): Don't compute LUIDs.  Don't allocate reg_set memory.
12151         (free_gcse_mem): Don't free it either.
12152         (oprs_unchanged_p, load_killed_in_block, record_last_reg_set_info):
12153         Use the df insn LUIDs.
12154         (load_killed_in_block): Likewise.
12155         (compute_hash_table_work): Don't compute reg_set_in_block.
12156         (compute_transp): Use DF_REG_DEF_CHAINs.
12157         (local_cprop_pass): Don't use compute_sets and related functions.
12158         (one_cprop_pass, pre_gcse, one_pre_gcse_pass, one_code_hoisting_pass):
12159         Use get_max_uid() instead of max_cuid.
12160         (insert_insn_end_basic_block, pre_insert_copy_insn,
12161         update_ld_motion_stores): Don't try to
12162         keep reg_set tables up to date.
12163         (pre_insert_copies): Use df insn LUIDs.
12164         (sbitmap pre_redundant_insns): Replace with uses of INSN_DELETED_P.
12165         (reg_set_info): Don't use extra bitmap argument.
12166         (compute_store_table): Don't compute reg_set_in_block.  Use DF scan
12167         information to compute regs_set_in_block.
12168         (free_store_memory, store_motion): Don't nullify reg_set_in_block.
12169         (bypass_jumps): Don't use compute_sets and friends.
12170
12171 2009-04-26  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
12172
12173         PR testsuite/39710
12174         * opts.c (undocumented_msg): Do not leave blank even with
12175         ENABLE_CHECKING.
12176
12177 2009-04-25  Joseph Myers  <joseph@codesourcery.com>
12178
12179         * c-decl.c (build_enumerator): Allow values folding to integer
12180         constants but not integer constant expressions with a pedwarn if
12181         pedantic.
12182
12183 2009-04-25  Joseph Myers  <joseph@codesourcery.com>
12184
12185         PR c/39582
12186         * c-typeck.c (c_expr_sizeof_type): Create a C_MAYBE_CONST_EXPR
12187         with non-null C_MAYBE_CONST_EXPR_PRE if size of a variable-length
12188         type is an integer constant.
12189
12190 2009-04-25  Uros Bizjak  <ubizjak@gmail.com>
12191
12192         PR target/39897
12193         * config/i386/i386.c (print_operand) ['z']: Revert handling of
12194         HImode operands.
12195
12196 2009-04-25  Joseph Myers  <joseph@codesourcery.com>
12197
12198         PR c/39564
12199         * c-decl.c (grokdeclarator): Diagnose declarations of functions
12200         with variably modified return type and no storage class
12201         specifiers, except for the case of nested functions.  Distinguish
12202         extern declarations of functions with variably modified return
12203         types from those of objects with variably modified types.
12204
12205 2009-04-25  Jan Hubicka  <jh@suse.cz>
12206
12207         * tree.c (list_equal_p): New function.
12208         * tree.h (list_equal_p): Declare.
12209         * coretypes.h (edge_def, edge, const_edge, basic_block_def
12210         basic_block_def, basic_block, const_basic_block): New.
12211         * tree-eh.c (make_eh_edge): EH edges are not abnormal.
12212         (redirect_eh_edge): New function.
12213         (make_eh_edge_update_phi): EH edges are not abnormal.
12214         * except.c: Include tree-flow.h.
12215         (list_match): New function.
12216         (eh_region_replaceable_by_p): New function.
12217         (replace_region): New function.
12218         (hash_type_list): New function.
12219         (hash_eh_region): New function.
12220         (eh_regions_equal_p): New function.
12221         (merge_peers): New function.
12222         (remove_unreachable_regions): Verify EH tree when checking;
12223         merge peers.
12224         (copy_eh_region_1): New function.
12225         (copy_eh_region): New function.
12226         (push_reachable_handler): New function.
12227         (build_post_landing_pads, dw2_build_landing_pads): Be ready for
12228         regions without label but with live RESX.
12229         * except.h (redirect_eh_edge_to_label): New.
12230         * tree-flow.h (redirect_eh_edge): New.
12231         * coretypes.h (edge_def, edge, const_edge, basic_block_def
12232         basic_block_def, basic_block, const_basic_block): Remove.
12233         * Makefile.in (except.o): Add dependency on tree-flow.h
12234         * tree-cfg.c (gimple_redirect_edge_and_branch): Handle EH edges.
12235         * basic-block.h (edge, const_edge, basic_block, const_basic_block):
12236         Remove.
12237
12238 2009-04-25  Eric Botcazou  <ebotcazou@adacore.com>
12239
12240         PR bootstrap/39645
12241         * config/sparc/sparc.c (sparc_gimplify_va_arg): Set TREE_ADDRESSABLE
12242         on the destination of memcpy.
12243
12244 2009-04-25  Paolo Bonzini  <bonzini@gnu.org>
12245
12246         * doc/tm.texi (REGNO_OK_FOR_BASE_P, REGNO_MODE_OK_FOR_BASE_P,
12247         REGNO_MODE_OK_FOR_REG_BASE_P, REGNO_MODE_CODE_OK_FOR_BASE_P,
12248         REGNO_OK_FOR_INDEX_P): Mention strict/nonstrict difference.
12249
12250 2009-04-25  Jan Hubicka  <jh@suse.cz>
12251
12252         * tree-eh.c (tree_remove_unreachable_handlers): Handle shared labels.
12253         (tree_empty_eh_handler_p): Allow non-EH predecestors; allow region
12254         to be reached by different label than left.
12255         (update_eh_edges): Update comment; remove edge_to_remove if possible
12256         and return true if suceeded.
12257         (cleanup_empty_eh): Accept sharing map; handle shared regions.
12258         (cleanup_eh): Compute sharing map.
12259         * except.c (remove_eh_handler_and_replace): Add argument if we should
12260         update regions.
12261         (remove_unreachable_regions): Update for label sharing.
12262         (label_to_region_map): Likewise.
12263         (get_next_region_sharing_label): New function.
12264         (remove_eh_handler_and_replace): Add update_catch_try parameter; update
12265         prev_try pointers.
12266         (remove_eh_handler): Update.
12267         (remove_eh_region_and_replace_by_outer_of): New function.
12268         * except.h (struct eh_region): Add next_region_sharing_label.
12269         (remove_eh_region_and_replace_by_outer_of,
12270         get_next_region_sharing_label): Declare.
12271         * tree-cfgcleanup.c (tree_forwarder_block_p): Simplify.
12272
12273 2009-04-25  Jan Hubicka  <jh@suse.cz>
12274
12275         * tree-cfg.c (split_critical_edges): Split also edges where we can't
12276         insert code even if they are not critical.
12277
12278 2009-04-25  Jan Hubicka  <jh@suse.cz>
12279
12280         * tree-cfg.c (gimple_can_merge_blocks_p): EH edges are unmergable.
12281         (gimple_can_remove_branch_p): EH edges won't remove branch by
12282         redirection.
12283         * tree-inline.c (update_ssa_across_abnormal_edges): Do handle
12284         updating of non-abnormal EH edges.
12285         * tree-cfg.c (gimple_can_merge_blocks_p): EH edges are unmergable.
12286         (gimple_can_remove_branch_p): EH edges are unremovable by redirection.
12287         (split_critical_edges): Split also edges where emitting code on them
12288         will lead to splitting later.
12289
12290 2009-04-25  Uros Bizjak  <ubizjak@gmail.com>
12291             H.J. Lu  <hongjiu.lu@intel.com>
12292
12293         PR target/39590
12294         * configure.ac (HAVE_AS_IX86_FILDQ): On x86 targets check whether
12295         the configured assembler supports fildq and fistpq mnemonics.
12296         (HAVE_AS_IX86_FILDS): Rename from HAVE_GAS_FILDS_FISTS.
12297         * configure: Regenerated.
12298         * config.in: Ditto.
12299
12300         * config/i386/i386.c (print_operand): Handle 'Z'.
12301         ['z']: Remove handling of special fild/fist suffixes.
12302         (output_fix_trunc): Use '%Z' to output suffix of fist{,p,tp} insn.
12303         * config/i386/i386.md (*floathi<mode>2_i387): Use '%Z' to output
12304         suffix of fild insn.
12305         (*floatsi<mode>2_vector_mixed): Ditto.
12306         (*float<SSEMODEI24:mode><MODEF:mode>2_mixed_interunit): Ditto.
12307         (*float<SSEMODEI24:mode><MODEF:mode>2_mixed_nointerunit): Ditto.
12308         (*float<SSEMODEI24:mode><X87MODEF:mode>2_i387_with_temp): Ditto.
12309         (*float<SSEMODEI24:mode><X87MODEF:mode>2_i387): Ditto.
12310         * config/i386/gas.h (GAS_MNEMONICS): Remove.
12311
12312 2009-04-25  Ben Elliston  <bje@au.ibm.com>
12313  
12314         * genrecog.c (validate_pattern): Do not warn for VOIDmode CALLs as
12315         the source of a set operation.
12316
12317 2009-04-25  Anatoly Sokolov  <aesok@post.ru>
12318
12319         * target.h (struct gcc_target): Add case_values_threshold field.
12320         * target-def.h (TARGET_CASE_VALUES_THRESHOLD): New.
12321         (TARGET_INITIALIZER): Use TARGET_CASE_VALUES_THRESHOLD.
12322         * targhooks.c (default_case_values_threshold): New function.
12323         * targhooks.h (default_case_values_threshold): Declare function.
12324         * stmt.c (expand_case): Use case_values_threshold target hook.
12325         * expr.h (case_values_threshold): Remove declartation.
12326         * expr.c (case_values_threshold): Remove function.
12327         * doc/tm.texi (CASE_VALUES_THRESHOLD): Revise documentation.
12328
12329         * config/avr/avr.h (CASE_VALUES_THRESHOLD): Remove macro.
12330         * config/avr/avr.c (TARGET_CASE_VALUES_THRESHOLD): Define macro.
12331         (avr_case_values_threshold): Declare as static.
12332         * config/avr/avr-protos.h (avr_case_values_threshold): Remove.
12333
12334         * config/avr/mn10300.h (CASE_VALUES_THRESHOLD): Remove macro.
12335         * config/avr/mn10300.c (TARGET_CASE_VALUES_THRESHOLD): Define macro.
12336         (mn10300_case_values_threshold): New function.
12337
12338 2009-04-24  H.J. Lu  <hongjiu.lu@intel.com>
12339
12340         * ira.c (setup_cover_and_important_classes): Add enum cast.
12341
12342 2009-04-24  Vladimir Makarov  <vmakarov@redhat.com>
12343
12344         * genpreds.c (write_enum_constraint_num): Output definition of
12345         CONSTRAINT_NUM_DEFINED_P macro.
12346         * ira.c (setup_cover_and_important_classes): Use
12347         CONSTRAINT_NUM_DEFINED_P instead of CONSTRAINT__LIMIT in #ifdef.
12348         
12349 2009-04-24  DJ Delorie  <dj@redhat.com>
12350
12351         * config/sh/sh.h (LIBGCC2_DOUBLE_TYPE_SIZE): Test
12352         __SH2A_SINGLE_ONLY__ also.
12353
12354 2009-04-24  Steve Ellcey  <sje@cup.hp.com>
12355
12356         * config/ia64/ia64.md (movfs_internal): Allow flt constants.
12357         (movdf_internal): Ditto.
12358         * config/ia64/ia64.c (ia64_legitimate_constant_p): Allow
12359         SFmode and DFmode constants.
12360         (ia64_print_operand): Add 'G' format for printing
12361         floating point constants.
12362
12363 2009-04-24  Richard Guenther  <rguenther@suse.de>
12364
12365         * tree-vrp.c (extract_range_from_binary_expr): Handle overflow
12366         from unsigned additions.
12367
12368 2009-04-24  Joseph Myers  <joseph@codesourcery.com>
12369
12370         * c-typeck.c (set_init_index): Allow array designators that are
12371         not integer constant expressions with a pedwarn if pedantic.
12372
12373 2009-04-24  Bernd Schmidt  <bernd.schmidt@analog.com>
12374
12375         * simplify-rtx.c (simplify_binary_operation_1, case AND): Result is
12376         zero if no overlap in nonzero bits between the operands.
12377
12378 2009-04-24  Ian Lance Taylor  <iant@google.com>
12379
12380         * combine.c (record_value_for_reg): Change 0 to VOIDmode, twice.
12381         (record_dead_and_set_regs): Likewise.
12382         * df.h (struct df_mw_hardreg): Change flags field to int.
12383         (struct df_base_ref): Likewise.
12384         (struct df): Change changeable_flags field to int.
12385         * df-scan.c (df_defs_record): Change clobber_flags to int.
12386         * dwarf2.h (enum dwarf_tag): Make lo_user and hi_user values enum
12387         constants rather than #define macros.
12388         (enum dwarf_attribute, enum dwarf_location_atom): Likewise.
12389         (enum dwarf_type, enum dwarf_endianity_encoding): Likewise.
12390         (enum dwarf_calling_convention): Likewise.
12391         (enum dwarf_line_number_x_ops): Likewise.
12392         (enum dwarf_call_frame_info): Likewise.
12393         (enum dwarf_source_language): Likewise.
12394         * dwarf2out.c (int_loc_descriptor): Add cast to enum type.
12395         (add_calling_convention_attribute): Likewise.
12396         * fold-const.c (fold_undefer_overflow_warnings): Add cast to enum type.
12397         (combine_comparisons): Change compcode to int.  Add cast to enum type.
12398         * genrecog.c (maybe_both_true_2): Change c to int.
12399         (write_switch): Likewise.  Add cast to enum type.
12400         * gimplify.c (gimplify_omp_for): Handle return values from
12401         gimplify_expr using MIN rather than bitwise or.
12402         (gimplify_expr): Add cast to enum type.
12403         * ipa-prop.c (update_jump_functions_after_inlining): Change
12404         IPA_BOTTOM to IPA_JF_UNKNOWN.
12405         * ira.c (setup_class_subset_and_memory_move_costs): Change mode to int.
12406         Add casts to enum type.
12407         (setup_cover_and_important_classes): Change cl to int.  Add casts
12408         to enum type.
12409         (setup_class_translate): Change cl and mode to int.
12410         (ira_init_once): Change mode to int.
12411         (free_register_move_costs): Likewise.
12412         (setup_prohibited_mode_move_regs): Add casts to enum type.
12413         * langhooks.c (add_builtin_function_common): Rework assertion that
12414         value fits bitfield.
12415         * mcf.c (add_fixup_edge): Change type parameter to edge_type.
12416         * omega.c (omega_do_elimination): Avoid math on enum types.
12417         * optabs.c (expand_vec_shift_expr): Remove casts to int.
12418         * opts.c (set_debug_level): Change 2 to enum constant.  Use new
12419         int local to handle integral_argment value.
12420         * regmove.c (try_auto_increment): Change PUT_MODE to
12421         PUT_REG_NOTE_KIND.
12422         * reload.c (push_secondary_reload): Add casts to enum type.
12423         (secondary_reload_class, find_valid_class): Likewise.
12424         * reload1.c (emit_input_reload_insns): Likewise.
12425         * rtl.h (NOTE_VAR_LOCATION_STATUS): Likewise.
12426         * sel-sched.c (init_hard_regs_data): Change cur_mode to int.
12427         * sel-sched-ir.c (hash_with_unspec_callback): Change 0 to enum
12428         constant.
12429         * tree.c (build_common_builtin_nodes): Add casts to enum type.
12430         * tree-complex.c (complex_lattice_t): Typedef to int rather than
12431         enum type.
12432         (expand_complex_libcall): Add casts to enum type.
12433         * tree-into-ssa.c (get_ssa_name_ann): Change 0 to enum constant.
12434         * tree-vect-loop.c (vect_model_reduction_cost): Compare reduc_code
12435         with ERROR_MARK, not NUM_TREE_CODES.
12436         (vect_create_epilog_for_reduction): Likewise.
12437         (vectorizable_reduction): Don't initialize epiloc_reduc_code.
12438         When not using it, set it to ERROR_MARK rather than NUM_TREE_CODES.
12439         * tree-vect-patterns.c (vect_pattern_recog_1): Change vec_mode to
12440         enum machine_mode.
12441         * tree-vect-stmts.c (new_stmt_vec_info): Change 0 to
12442         vect_unused_in_loop.  Change 0 to loop_vect.
12443         * tree-vectorizer.c (vect_set_verbosity_level): Add casts to enum type.
12444         * var-tracking.c (get_init_value): Change return type to enum
12445         var_init_status.
12446         * vec.h (DEF_VEC_FUNC_P) [iterate]: Cast 0 to type T.
12447         * config/arm/arm.c (fp_model_for_fpu): Change to array to enum
12448         arm_fp_model.
12449         (arm_override_options): Add casts to enum type.
12450         (arm_emit_tls_decoration): Likewise.
12451         * config/i386/i386.c (ix86_function_specific_restore): Add casts
12452         to enum type.
12453         * config/i386/i386-c.c (ix86_pragma_target_parse): Likewise.
12454         * config/ia64/ia64.c (ia64_expand_compare): Change magic to int.
12455         * config/rs6000/rs6000.c (rs6000_override_options): Add casts to
12456         enum type.
12457         * config/s390/s390.c (code_for_builtin_64): Change to array of
12458         enum insn_code.
12459         (code_for_builtin_31): Likewise.
12460         (s390_expand_builtin): Change code_for_builtin to enum insn_code
12461         const *.
12462         * config/sparc/sparc.c (sparc_override_options): Change value
12463         field in struct code_model to enum cmodel.  In initializer change
12464         0 to NULL and add cast to enum type.
12465
12466         * c-typeck.c (build_modify_expr): Add lhs_origtype parameter.
12467         Change all callers.  Issue a -Wc++-compat warning using
12468         lhs_origtype if necessary.
12469         (convert_for_assignment): Issue -Wc++-compat warnings about
12470         invalid conversions to enum type on assignment.
12471         * c-common.h (build_modify_expr): Update declaration.
12472
12473 2009-04-24  Nick Clifton  <nickc@redhat.com>
12474
12475         * config/iq2000/iq2000.c (function_arg): Handle TImode values.
12476         (function_arg_advance): Likewise.
12477         * config/iq2000/iq2000.md (movsi_internal2): Fix the length of the
12478         5th alternative.
12479
12480 2009-04-24  Andreas Krebbel  <krebbel1@de.ibm.com>
12481
12482         * config/s390/constraints.md ('I', 'J'): Fix condition.
12483
12484 2009-04-24  Diego Novillo  <dnovillo@google.com>
12485
12486         * gengtype-parse.c (parse_error): Add newline after message.
12487
12488 2009-04-24  H.J. Lu  <hongjiu.lu@intel.com>
12489
12490         * config/i386/sse.md (avxmodesuffixs): Removed.
12491         (*avx_pinsr<avxmodesuffixs>): Renamed to ...
12492         (*avx_pinsr<ssevecsize>): This.
12493
12494 2009-04-24  Bernd Schmidt  <bernd.schmidt@analog.com>
12495
12496         * loop-iv.c (replace_single_def_regs): Look for REG_EQUAL notes;
12497         follow chains of regs with a single definition, and allow expressions
12498         that are function_invariant_p.
12499         (simple_rhs_p): Allow expressions that are function_invariant_p.
12500
12501 2009-04-24  Paolo Bonzini  <bonzini@gnu.org>
12502
12503         PR middle-end/39867
12504         * fold-const.c (fold_cond_expr_with_comparison): When folding
12505         > and >= to MAX, make sure the MAX uses the same type as the
12506         comparison's operands.
12507
12508 2009-04-24  Nick Clifton  <nickc@redhat.com>
12509
12510         * config/frv/frv.c (frv_frame_access): Do not use reg+reg
12511         addressing for DImode accesses.
12512         (frv_print_operand_address): Handle PLUS case.
12513         * config/frv/frv.h (FIXED_REGISTERS): Mark link register as fixed.
12514
12515 2009-04-24  Jakub Jelinek  <jakub@redhat.com>
12516
12517         PR rtl-optimization/39794
12518         * alias.c (canon_true_dependence): Add x_addr argument.
12519         * rtl.h (canon_true_dependence): Adjust prototype.
12520         * cse.c (check_dependence): Adjust canon_true_dependence callers.
12521         * cselib.c (cselib_invalidate_mem): Likewise.
12522         * gcse.c (compute_transp): Likewise.
12523         * dse.c (scan_reads_nospill): Likewise.
12524         (record_store, check_mem_read_rtx): Likewise.  For non-const-or-frame
12525         addresses pass base->val_rtx as mem_addr, for const-or-frame addresses
12526         canon_base_addr of the group, plus optional offset.
12527         (struct group_info): Rename canon_base_mem to
12528         canon_base_addr.
12529         (get_group_info): Set canon_base_addr to canon_rtx of base, not
12530         canon_rtx of base_mem.
12531
12532 2009-04-23  Paolo Bonzini  <bonzini@gnu.org>
12533
12534         * config/sh/sh.c (sh_expand_prologue, sh_expand_epilogue):
12535         Use memory_address_p instead of GO_IF_LEGITIMATE_ADDRESS.
12536
12537 2009-04-23  Ulrich Weigand  <Ulrich.Weigand@de.ibm.com>
12538
12539         * config/spu/spu-builtins.h: Delete file.
12540
12541         * config/spu/spu.h (enum spu_builtin_type): Move here from
12542         spu-builtins.h.
12543         (struct spu_builtin_description): Likewise.  Add GTY marker.
12544         Do not use enum spu_function_code or enum insn_code.
12545         (spu_builtins): Add extern declaration.
12546
12547         * config/spu/spu.c: Do not include "spu-builtins.h".
12548         (enum spu_function_code, enum spu_builtin_type_index,
12549         V16QI_type_node, V8HI_type_node, V4SI_type_node, V2DI_type_node,
12550         V4SF_type_node, V2DF_type_node, unsigned_V16QI_type_node,
12551         unsigned_V8HI_type_node, unsigned_V4SI_type_node,
12552         unsigned_V2DI_type_node): Move here from spu-builtins.h.
12553         (spu_builtin_types): Make static.  Add GTY marker.
12554         (spu_builtins): Add extern declaration with GTY marker.
12555         Include "gt-spu.h".
12556
12557         * config/spu/spu-c.c: Do not include "spu-builtins.h".
12558         (spu_resolve_overloaded_builtin): Do not use spu_function_code.
12559         Check programmatically whether all parameters are scalar.
12560
12561         * config/spu/t-spu-elf (spu.o, spu-c.o): Update dependencies.
12562
12563 2009-04-23  Eric Botcazou  <ebotcazou@adacore.com>
12564
12565         * gimplify.c (gimplify_modify_expr_rhs) <VAR_DECL>: Do not do a direct
12566         assignment from the constructor either if the target is volatile.
12567
12568 2009-04-23  Daniel Jacobowitz  <dan@codesourcery.com>
12569
12570         * config/arm/arm.md (insv): Do not share operands[0].
12571
12572 2009-04-23  Nathan Sidwell  <nathan@codesourcery.com>
12573
12574         * config/vxlib-tls.c (active_tls_threads): Delete.
12575         (delete_hook_installed): New.
12576         (tls_delete_hook): Don't delete the delete hook.
12577         (tls_destructor): Delete it here.
12578         (__gthread_set_specific): Adjust installing the delete hook.
12579         (tls_delete_hook): Use __gthread_enter_tsd_dtor_context and
12580         __gthread_leave_tsd_dtor_context.
12581
12582 2009-04-23  Rafael Avila de Espindola  <espindola@google.com>
12583
12584         * c-format.c (gcc_tdiag_char_table): Add support for %E.
12585
12586 2009-04-23  Uros Bizjak  <ubizjak@gmail.com>
12587
12588         * config/alpha/alpha.c (alpha_legitimize_reload_address): Add cast to
12589         enum type.
12590         (alpha_rtx_costs): Ditto.
12591         (emit_unlikely_jump): Use add_reg_note.
12592         (emit_frame_store_1): Ditto.
12593         (alpha_expand_prologue): Ditto.
12594         (alpha_expand_builtin): Change 0 to EXPAND_NORMAL in function call.
12595         * config/alpha/alpha.c (Unicos/Mk address splitter): Use add_reg_note.
12596
12597 2009-04-23  Nick Clifton  <nickc@redhat.com>
12598
12599         * config/v850/v850.md (epilogue): Remove suppressed code.
12600         (return): Rename to return_simple and remove test of frame size.
12601         * config/v850/v850.c (expand_epilogue): Rename call to gen_return
12602         to gen_return_simple.
12603
12604 2009-04-22  Jing Yu  <jingyu@google.com>
12605
12606         PR testsuite/39781
12607         * config/arm/arm.h: Define HANDLE_PRAGMA_PACK_PUSH_POP.
12608
12609 2009-04-22  Andrew Pinski  <andrew_pinski@playstation.sony.com>
12610
12611         PR C/31499
12612         * c-typeck.c (process_init_element): Treat VECTOR_TYPE like ARRAY_TYPE
12613         and RECORD_TYPE/UNION_TYPE.  When outputing the actual element and the
12614         value is a VECTOR_CST, the element type is the element type of the
12615         vector.
12616
12617 2009-04-22  DJ Delorie  <dj@redhat.com>
12618
12619         * config/m32c/m32c.h: Update GTY annotations to new syntax.
12620
12621 2009-04-22  Jakub Jelinek  <jakub@redhat.com>
12622
12623         * alias.c (find_base_term): Move around LO_SUM case, so that
12624         CONST falls through into PLUS/MINUS handling.
12625
12626         PR c/39855
12627         * fold-const.c (fold_binary) <case LSHIFT_EXPR>: When optimizing
12628         into 0, use omit_one_operand.
12629
12630 2009-04-23  Ben Elliston  <bje@au.ibm.com>
12631
12632         * config/rs6000/linux-unwind.h (get_regs): Remove type
12633         puns. Change the type of `pc' to an array of unsigned ints and
12634         update all users.  Constify frame24.
12635
12636 2009-04-22  DJ Delorie  <dj@redhat.com>
12637
12638         * config/m32c/m32c.c (m32c_special_page_vector_p): Move
12639         declarations before code.
12640         (current_function_special_page_vector): Likewise.
12641         (m32c_expand_insv): Silence a warning.
12642
12643 2009-04-21  Taras Glek  <tglek@mozilla.com>
12644
12645         * alias.c: Update GTY annotations to new syntax.
12646         * basic-block.h: Likewise.
12647         * bitmap.h: Likewise.
12648         * c-common.h: Likewise.
12649         * c-decl.c: Likewise.
12650         * c-parser.c: Likewise.
12651         * c-pragma.c: Likewise.
12652         * c-tree.h: Likewise.
12653         * cfgloop.h: Likewise.
12654         * cgraph.h: Likewise.
12655         * config/alpha/alpha.c: Likewise.
12656         * config/arm/arm.h: Likewise.
12657         * config/avr/avr.h: Likewise.
12658         * config/bfin/bfin.c: Likewise.
12659         * config/cris/cris.c: Likewise.
12660         * config/darwin.c: Likewise.
12661         * config/frv/frv.c: Likewise.
12662         * config/i386/i386.c: Likewise.
12663         * config/i386/i386.h: Likewise.
12664         * config/i386/winnt.c: Likewise.
12665         * config/ia64/ia64.h: Likewise.
12666         * config/iq2000/iq2000.c: Likewise.
12667         * config/mips/mips.c: Likewise.
12668         * config/mmix/mmix.h: Likewise.
12669         * config/pa/pa.c: Likewise.
12670         * config/pa/pa.h: Likewise.
12671         * config/rs6000/rs6000.c: Likewise.
12672         * config/s390/s390.c: Likewise.
12673         * config/sparc/sparc.c: Likewise.
12674         * config/xtensa/xtensa.c: Likewise.
12675         * cselib.h: Likewise.
12676         * dbxout.c: Likewise.
12677         * dwarf2out.c: Likewise.
12678         * except.c: Likewise.
12679         * except.h: Likewise.
12680         * fixed-value.h: Likewise.
12681         * function.c: Likewise.
12682         * function.h: Likewise.
12683         * gimple.h: Likewise.
12684         * integrate.c: Likewise.
12685         * optabs.c: Likewise.
12686         * output.h: Likewise.
12687         * real.h: Likewise.
12688         * rtl.h: Likewise.
12689         * stringpool.c: Likewise.
12690         * tree-data-ref.c: Likewise.
12691         * tree-flow.h: Likewise.
12692         * tree-scalar-evolution.c: Likewise.
12693         * tree-ssa-address.c: Likewise.
12694         * tree-ssa-alias.h: Likewise.
12695         * tree-ssa-operands.h: Likewise.
12696         * tree.c: Likewise.
12697         * tree.h: Likewise.
12698         * varasm.c: Likewise.
12699         * varray.h: Likewise.
12700         * vec.h: Likewise.
12701         * coretypes.h: Do not define GTY macro if it is already defined.
12702         * doc/gty.texi: Update GTY documentation to new syntax.
12703         * gengtype-lex.l: Enforce attribute-like syntax for GTY
12704         annotations on structs.
12705         * gengtype-parse.c: Likewise.
12706
12707 2009-04-22  Mark Heffernan  <meheff@google.com>
12708
12709         * gcc.c (LINK_COMMAND_SPEC): Link with gcov with -fprofile-generate=.
12710
12711 2009-04-22  Kazu Hirata  <kazu@codesourcery.com>
12712
12713         * config/arm/arm.c (arm_rtx_costs_1): Use power_of_two_operand
12714         where appropriate.
12715
12716 2009-04-22  Kazu Hirata  <kazu@codesourcery.com>
12717
12718         * config/arm/arm.c (arm_size_rtx_costs): Treat a PLUS with a shift
12719         the same as a PLUS without a shift.  Increase the cost of a
12720         CONST_INT in MULT.
12721
12722 2009-04-22  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
12723
12724         * Makefile.in: Update dependencies.
12725         * errors.c (warning): Remove unused parameter 'opt'. Returns 'void'.
12726         * errors.h: Remove bogus comment about compatibility.
12727         (warning): Update declaration.
12728         * genautomata.c: Update all calls to warning.
12729         * gimple.c: Do not include errors.h. Include toplev.h.
12730         * tree-ssa-structalias.c: Do not include errors.h.
12731         * omega.c: Likewise.
12732         * tree-ssa-reassoc.c: Likewise.
12733         * config/spu/spu-c.c: Likewise.
12734         * config/spu/t-spu-elf: Update dependencies.
12735
12736 2009-04-22  Richard Guenther  <rguenther@suse.de>
12737
12738         PR tree-optimization/39824
12739         * tree-ssa-ccp.c (fold_const_aggregate_ref): For INDIRECT_REFs
12740         make sure the types are compatible.
12741
12742 2009-04-22  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
12743
12744         PR c++/14875
12745         * c-common.c (c_parse_error): Take a token_flags parameter.
12746         Use token_type for the token type instead.
12747         Pass token_flags to cpp_type2name.
12748         * c-common.h (c_parse_error): Update declaration.
12749         * c-parser.c (c_parser_error): Pass 0 as token flags.
12750
12751 2009-04-22  Andrey Belevantsev  <abel@ispras.ru>
12752
12753         PR rtl-optimization/39580
12754         * sel-sched-ir.c (insert_in_history_vect): Remove incorrect gcc_assert. 
12755         
12756 2009-04-22  Ulrich Weigand  <Ulrich.Weigand@de.ibm.com>
12757
12758         * function.c (expand_function_end): Do not emit a jump to the "naked"
12759         return label for fall-through returns.
12760         * except.c (sjlj_emit_function_exit): Always place the call to the
12761         unregister function at the location installed by expand_function_end.
12762
12763 2009-04-22  Richard Guenther  <rguenther@suse.de>
12764
12765         PR tree-optimization/39845
12766         * tree-switch-conversion.c (build_arrays): Add new referenced vars.
12767         (gen_inbound_check): Likewise.
12768
12769 2009-04-22  Nathan Sidwell  <nathan@codesourcery.com>
12770
12771         * gthr-vxworks.h (struct __gthread_once_t): Add alignment and
12772         padding for PPC.
12773         (__GTHREAD_ONCE_INIT): Adjust ppc initializer.
12774         * config/vxlib.c (__gthread_once): Add race guard for PPC.
12775
12776 2009-04-22  Paolo Bonzini  <bonzini@gnu.org>
12777
12778         * config/sh/sh.c (shift_insns_rtx, shiftcosts, gen_shifty_op,
12779         sh_dynamicalize_shift_p, shl_and_scr_length): Truncate
12780         shift counts to avoid out-of-bounds array accesses.
12781
12782 2009-04-22  Paolo Bonzini  <bonzini@gnu.org>
12783
12784         * config/sparc/sparc.h (POINTER_SIZE): Fix comment.
12785         (Pmode): Move above.
12786
12787 2009-04-22  Uros Bizjak  <ubizjak@gmail.com>
12788
12789         * config/alpha/alpha.c: Use REG_P, MEM_P, CONST_INT_P, JUMP_P,
12790         NONJUMP_INSN_P, CALL_P, LABEL_P and NOTE_P predicates instead of
12791         GET_CODE macro.  Use IN_RANGE macro where appropriate.
12792         * config/alpha/alpha.h: Ditto.
12793         * config/alpha/alpha.md: Ditto.
12794         * config/alpha/constraints.md: Ditto.
12795         * config/alpha/predicates.md: Ditto.
12796         
12797 2009-04-22  Paolo Bonzini  <bonzini@gnu.org>
12798
12799         * defaults.h (GO_IF_MODE_DEPENDENT_ADDRESS): Provide empty default.
12800         * config/frv/frv.h (GO_IF_MODE_DEPENDENT_ADDRESS): Delete.
12801         * config/s390/s390.h (GO_IF_MODE_DEPENDENT_ADDRESS): Delete.
12802         * config/m32c/m32c.h (GO_IF_MODE_DEPENDENT_ADDRESS): Delete.
12803         * config/spu/spu.h (GO_IF_MODE_DEPENDENT_ADDRESS): Delete.
12804         * config/i386/i386.h (GO_IF_MODE_DEPENDENT_ADDRESS): Delete.
12805         * config/sh/sh.h (GO_IF_MODE_DEPENDENT_ADDRESS): Delete.
12806         * config/pdp11/pdp11.h (GO_IF_MODE_DEPENDENT_ADDRESS): Delete.
12807         * config/avr/avr.h (GO_IF_MODE_DEPENDENT_ADDRESS): Delete.
12808         * config/crx/crx.h (GO_IF_MODE_DEPENDENT_ADDRESS): Delete.
12809         * config/fr30/fr30.h (GO_IF_MODE_DEPENDENT_ADDRESS): Delete.
12810         * config/m68hc11/m68hc11.h (GO_IF_MODE_DEPENDENT_ADDRESS): Delete.
12811         * config/cris/cris.h (GO_IF_MODE_DEPENDENT_ADDRESS): Delete.
12812         * config/iq2000/iq2000.h (GO_IF_MODE_DEPENDENT_ADDRESS): Delete.
12813         * config/mn10300/mn10300.h (GO_IF_MODE_DEPENDENT_ADDRESS): Delete.
12814         * config/ia64/ia64.h (GO_IF_MODE_DEPENDENT_ADDRESS): Delete.
12815         * config/m68k/m68k.h (GO_IF_MODE_DEPENDENT_ADDRESS): Delete.
12816         * config/picochip/picochip.h (GO_IF_MODE_DEPENDENT_ADDRESS): Delete.
12817         * config/arc/arc.h (GO_IF_MODE_DEPENDENT_ADDRESS): Delete.
12818         * config/mcore/mcore.h (GO_IF_MODE_DEPENDENT_ADDRESS): Delete.
12819         * config/score/score.h (GO_IF_MODE_DEPENDENT_ADDRESS): Delete.
12820         * config/arm/arm.h (GO_IF_MODE_DEPENDENT_ADDRESS): Delete.
12821         * config/pa/pa.h (GO_IF_MODE_DEPENDENT_ADDRESS): Delete.
12822         * config/mips/mips.h (GO_IF_MODE_DEPENDENT_ADDRESS): Delete.
12823         * config/v850/v850.h (GO_IF_MODE_DEPENDENT_ADDRESS): Delete.
12824         * config/mmix/mmix.h (GO_IF_MODE_DEPENDENT_ADDRESS): Delete.
12825         * config/bfin/bfin.h (GO_IF_MODE_DEPENDENT_ADDRESS): Delete.
12826
12827 2009-04-22  Laurynas Biveinis  <laurynas.biveinis@gmail.com>
12828
12829         * cfghooks.c (tidy_fallthru_edges): Remove find_basic_blocks
12830         references from comments.
12831         * cfgbuild.c: (count_basic_blocks): Delete.
12832         (find_basic_blocks_1): Delete.
12833         (find_basic_blocks): Delete.
12834         * except.c (finish_eh_generation): Make static.  Move comment from
12835         except.h here.  Remove find_basic_blocks references from comments.
12836         * except.h (finish_eh_generation): Delete.
12837         * basic-block.h (find_basic_blocks): Delete.
12838         * config/sh/sh.c (sh_output_mi_thunk): Delete a "#if 0" block.
12839
12840 2009-04-22  Dave Korn  <dave.korn.cygwin@gmail.com>
12841
12842         * sdbout.c (sdbout_symbol):  Pass VOIDmode to eliminate_regs.
12843         (sdbout_parms):  Likewise.
12844
12845 2009-04-21  Kaz Kojima  <kkojima@gcc.gnu.org>
12846
12847         * config/sh/sh.c (prepare_cbranch_operands): Use
12848         LAST_AND_UNUSED_RTX_CODE instead of CODE_FOR_nothing.
12849         (expand_cbranchdi4): Likewise.
12850         (from_compare): Add cast to enum type.
12851         (expand_cbranchsi4): Use add_reg_note.
12852         (output_stack_adjust, push, pop, sh_expand_prologue): Likewise.
12853         (sh_insn_length_adjustment): Use sh_cpu_attr instead of sh_cpu.
12854         (sh_initialize_trampoline): Change 0 to LCT_NORMAL in function call.
12855         (sh_expand_builtin): Change 0 to EXPAND_NORMAL in function call.
12856         * config/sh/sh.md (cbranchsi4): Use LAST_AND_UNUSED_RTX_CODE
12857         instead of CODE_FOR_nothing.
12858         (cbranchdi4): Likewise.  Fix the order of arguments for
12859         gen_rtx_fmt_ee.
12860         (push_fpscr): Use add_reg_note.
12861         (pop_fpscr, movdf_i4+1, reload_outdf__RnFRm+3, reload_outdf__RnFRm+4,
12862         reload_outdf__RnFRm+5, fpu_switch+1, fpu_switch+2): Likewise.
12863         
12864 2009-04-21  Joseph Myers  <joseph@codesourcery.com>
12865
12866         * ABOUT-GCC-NLS, ChangeLog, ChangeLog-1997, ChangeLog-1998,
12867         ChangeLog-1999, ChangeLog-2000, ChangeLog-2001, ChangeLog-2002,
12868         ChangeLog-2003, ChangeLog-2004, ChangeLog-2005, ChangeLog-2006,
12869         ChangeLog-2007, ChangeLog-2008, ChangeLog.dataflow, ChangeLog.lib,
12870         ChangeLog.ptr, ChangeLog.tree-ssa, ChangeLog.tuples, FSFChangeLog,
12871         FSFChangeLog.10, FSFChangeLog.11, LANGUAGES, ONEWS, acinclude.m4,
12872         config/alpha/gnu.h, config/alpha/libgcc-alpha-ldbl.ver,
12873         config/alpha/t-osf4, config/alpha/t-vms, config/alpha/va_list.h,
12874         config/alpha/x-vms, config/arc/t-arc,
12875         config/arm/README-interworking, config/arm/arm-c.c,
12876         config/arm/gentune.sh, config/arm/libgcc-bpabi.ver,
12877         config/arm/t-arm, config/arm/t-arm-elf, config/arm/t-arm-softfp,
12878         config/arm/t-bpabi, config/arm/t-linux, config/arm/t-linux-eabi,
12879         config/arm/t-netbsd, config/arm/t-pe, config/arm/t-strongarm-elf,
12880         config/arm/t-symbian, config/arm/t-vxworks, config/arm/t-wince-pe,
12881         config/avr/t-avr, config/bfin/elf.h, config/bfin/libgcc-bfin.ver,
12882         config/bfin/linux.h, config/bfin/t-bfin, config/bfin/t-bfin-elf,
12883         config/bfin/t-bfin-linux, config/bfin/t-bfin-uclinux,
12884         config/bfin/uclinux.h, config/cris/mulsi3.asm, config/cris/t-cris,
12885         config/cris/t-elfmulti, config/crx/t-crx,
12886         config/darwin-ppc-ldouble-patch.def, config/darwin-sections.def,
12887         config/divmod.c, config/fr30/t-fr30, config/frv/libgcc-frv.ver,
12888         config/frv/t-frv, config/frv/t-linux, config/h8300/genmova.sh,
12889         config/h8300/t-h8300, config/i386/athlon.md,
12890         config/i386/darwin-libgcc.10.4.ver,
12891         config/i386/darwin-libgcc.10.5.ver, config/i386/libgcc-glibc.ver,
12892         config/i386/mach.h, config/i386/netbsd.h, config/i386/t-crtpc,
12893         config/i386/t-cygming, config/i386/t-cygwin, config/i386/t-i386,
12894         config/i386/t-linux64, config/i386/t-nwld,
12895         config/i386/t-rtems-i386, config/i386/t-sol2-10,
12896         config/i386/x-mingw32, config/ia64/div.md, config/ia64/elf.h,
12897         config/ia64/ia64.opt, config/ia64/libgcc-glibc.ver,
12898         config/ia64/libgcc-ia64.ver, config/ia64/linux.h,
12899         config/ia64/sysv4.h, config/ia64/t-hpux, config/ia64/t-ia64,
12900         config/iq2000/abi, config/iq2000/lib2extra-funcs.c,
12901         config/iq2000/t-iq2000, config/libgcc-glibc.ver,
12902         config/m32r/libgcc-glibc.ver, config/m32r/t-linux,
12903         config/m32r/t-m32r, config/m68hc11/t-m68hc11,
12904         config/m68k/t-floatlib, config/m68k/t-linux, config/m68k/t-mlibs,
12905         config/m68k/t-uclinux, config/mcore/t-mcore,
12906         config/mcore/t-mcore-pe, config/mips/20kc.md, config/mips/4130.md,
12907         config/mips/5400.md, config/mips/5500.md, config/mips/crti.asm,
12908         config/mips/crtn.asm, config/mips/irix-crti.asm,
12909         config/mips/irix-crtn.asm, config/mips/libgcc-mips16.ver,
12910         config/mips/mips-dsp.md, config/mips/mips-dspr2.md,
12911         config/mips/mips-fixed.md, config/mips/sb1.md,
12912         config/mips/sr71k.md, config/mips/t-elf, config/mips/t-gofast,
12913         config/mips/t-iris6, config/mips/t-isa3264,
12914         config/mips/t-libgcc-mips16, config/mips/t-linux64,
12915         config/mips/t-mips, config/mips/t-r3900, config/mips/t-rtems,
12916         config/mips/t-sb1, config/mips/t-sde, config/mips/t-sdemtk,
12917         config/mips/t-slibgcc-irix, config/mips/t-sr71k, config/mips/t-st,
12918         config/mips/t-vr, config/mips/t-vxworks, config/mmix/t-mmix,
12919         config/mn10300/t-linux, config/mn10300/t-mn10300,
12920         config/pa/pa32-regs.h, config/pa/t-hpux-shlib, config/pa/t-linux,
12921         config/pa/t-linux64, config/pa/t-pa64, config/pdp11/t-pdp11,
12922         config/picochip/libgccExtras/clzsi2.asm,
12923         config/picochip/t-picochip, config/rs6000/darwin-ldouble-format,
12924         config/rs6000/darwin-libgcc.10.4.ver,
12925         config/rs6000/darwin-libgcc.10.5.ver,
12926         config/rs6000/libgcc-ppc-glibc.ver, config/rs6000/ppc-asm.h,
12927         config/rs6000/t-aix43, config/rs6000/t-aix52,
12928         config/rs6000/t-darwin, config/rs6000/t-fprules,
12929         config/rs6000/t-fprules-fpbit, config/rs6000/t-linux64,
12930         config/rs6000/t-lynx, config/rs6000/t-netbsd,
12931         config/rs6000/t-ppccomm, config/rs6000/t-ppcendian,
12932         config/rs6000/t-ppcgas, config/rs6000/t-rs6000,
12933         config/rs6000/t-rtems, config/rs6000/t-spe,
12934         config/rs6000/t-vxworks, config/s390/libgcc-glibc.ver,
12935         config/score/t-score-elf, config/sh/divcost-analysis,
12936         config/sh/libgcc-glibc.ver, config/sh/t-netbsd, config/sh/t-sh,
12937         config/sh/t-sh64, config/sh/t-superh, config/sh/t-symbian,
12938         config/sparc/libgcc-sparc-glibc.ver, config/sparc/sol2-bi.h,
12939         config/sparc/sol2-gas.h, config/sparc/sol2-gld-bi.h,
12940         config/sparc/t-elf, config/sparc/t-linux64, config/sparc/t-sol2,
12941         config/stormy16/stormy-abi, config/stormy16/t-stormy16,
12942         config/t-darwin, config/t-libunwind, config/t-libunwind-elf,
12943         config/t-linux, config/t-lynx, config/t-slibgcc-elf-ver,
12944         config/t-slibgcc-sld, config/t-sol2, config/t-vxworks,
12945         config/udivmod.c, config/udivmodsi4.c, config/v850/t-v850,
12946         config/v850/t-v850e, config/xtensa/t-xtensa, diagnostic.def,
12947         gdbinit.in, glimits.h, gstab.h, gsyms.h, java/ChangeLog,
12948         java/ChangeLog.ptr, java/ChangeLog.tree-ssa, libgcc-std.ver,
12949         limitx.h, version.c, xcoff.h: Add copyright and license notices.
12950         * config/h8300/genmova.sh: Include copyright and license notices
12951         in generated output.
12952         * config/h8300/mova.md: Regenerate.
12953         * doc/install.texi2html: Include word "Copyright" in copyright
12954         notice and use name "Free Software Foundation, Inc.".
12955         * ChangeLog, ChangeLog-2000, ChangeLog-2001, ChangeLog-2002,
12956         ChangeLog-2003, ChangeLog-2004, ChangeLog-2005, ChangeLog-2006,
12957         ChangeLog-2007, ChangeLog-2008: Correct dates.
12958
12959 2009-04-21  Eric Botcazou  <ebotcazou@adacore.com>
12960
12961         * c-common.c (c_common_truthvalue_conversion): Use LOCATION to build
12962         NE_EXPR operations as well.
12963         * c-parser.c (c_parser_condition): Do not set location information on
12964         the condition.
12965         (c_parser_conditional_expression): Likewise.
12966         (c_parser_binary_expression): Set location information on operators.
12967         * c-typeck.c (build_unary_op) <TRUTH_NOT_EXPR>: Reset the location if
12968         TRUTH_NOT_EXPR has been folded.
12969         * fold-const.c (fold_truth_not_expr): Copy location information from
12970         the incoming expression to the outgoing one.
12971         * gimplify.c (shortcut_cond_r): Add locus parameter.  Pass it to
12972         recursive calls on the LHS of the operator but pass that of the
12973         operator to recursive calls on the RHS of the operator.  Set it
12974         on the COND_EXPR.
12975         (shortcut_cond_expr): Set the locus of the operator on the second
12976         COND_EXPR and that of the expression on the first in degenerate cases.
12977         Pass the locus of the expression to calls to shortcut_cond_r.
12978         Set the locus of the 'then' block on the associated jump, if any.
12979         (gimplify_boolean_expr): Add locus parameter.  Set it on the COND_EXPR.
12980         (gimplify_expr) <TRUTH_ANDIF_EXPR>: Pass the locus of the outer
12981         expression to call to gimplify_boolean_expr.
12982
12983 2009-04-21  Kai Tietz  <kai.tietz@onevision.com>
12984
12985         * config.gcc: Add additional configuration for
12986         i686-w64-mingw* and x86_64-w64-mingw* triplet.
12987         * config/i386/mingw-w64.h: New mingw-w64 specific header.
12988         (CPP_SPEC): Redefine for allowing -municode option.
12989         (STARTFILE_SPEC): Likewise.
12990         * config/i386/t-mingw-w64: New.
12991         * config/i386/mingw-w64.opt: New.
12992         (municode): Add new target option.
12993         * doc/invoke.texi (municode): Add documentation for new option.
12994
12995 2009-04-21  Ian Lance Taylor  <iant@google.com>
12996
12997         * config/rs6000/rs6000-c.c (altivec_resolve_overloaded_builtin):
12998         Correct test for number of arguments.
12999         * config/spu/spu-c.c (spu_resolve_overloaded_builtin): Likewise.
13000
13001 2009-04-21  Andreas Schwab  <schwab@linux-m68k.org>
13002
13003         * config/m68k/linux.h (FINALIZE_TRAMPOLINE): Use enum for second
13004         argument of emit_library_call.
13005
13006 2009-04-21  Richard Guenther  <rguenther@suse.de>
13007
13008         PR middle-end/39829
13009         * gimple.c (walk_stmt_load_store_addr_ops): Catch addresses
13010         inside VIEW_CONVERT_EXPRs.
13011
13012 2009-04-21  Martin Jambor  <mjambor@suse.cz>
13013
13014         * tree-switch-conversion.c (build_constructors): Split a long line.
13015         (constructor_contains_same_values_p): New function.
13016         (build_one_array): Create assigns of constants if possible, do not
13017         call mark_sym_for_renaming, call update_stmt.
13018         (build_arrays): Call make_ssa_name (create_tmp_var ()) instead of
13019         make_rename_temp.  Do not call mark_symbols_for_renaming, call
13020         update_stmt.
13021         (gen_def_assigns): Do not call mark_symbols_for_renaming or
13022         find_new_referenced_vars, call update_stmt.
13023         (gen_inbound_check): Use create_tmp_var and create ssa names manually
13024         instead of calling make_rename_temp.  Do not call
13025         find_new_referenced_vars or mark_symbols_for_renaming, call
13026         update_stmt.
13027
13028 2009-04-21  Richard Guenther  <rguenther@suse.de>
13029
13030         PR tree-optimization/39827
13031         * tree-ssa-phiprop.c (propagate_with_phi): Check SSA_NAME is in range.
13032         (tree_ssa_phiprop): Pass the correct array size.
13033
13034 2009-04-21  Uros Bizjak  <ubizjak@gmail.com>
13035
13036         * config/alpha/alpha.md (tune): Add cast to enum attr_tune.
13037
13038 2009-04-21  Manuel López-Ibáñez  <manu@gcc.gnu.org>
13039
13040         PR 16202
13041         * c-typeck.c (lvalue_p): Move declaration ...
13042         * c-common.h (lvalue_p): ... to here.
13043         * c-common.c (candidate_equal_p): New.
13044         (add_tlist): Use it.
13045         (merge_tlist): Use it.
13046         (warn_for_collisions_1): Likewise.
13047         (warning_candidate_p): Accept more candidates.
13048         (verify_tree): A warning candidate can be an expression. Use
13049         candidate_equal_p.
13050
13051 2009-04-21  Ben Elliston  <bje@au.ibm.com>
13052
13053         PR target/5267
13054         * doc/invoke.texi (RS/6000 and PowerPC Options): Add documentation
13055         for -mcall-eabi, -mcall-aixdesc, -mcall-freebsd and -mcall-openbsd
13056         options.  Remove -mcall-solaris documentation.
13057
13058 2009-04-21  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
13059
13060         PR c++/13358
13061         * doc/invoke.texi (-Wlong-long): Update description.
13062         * c-lex (interpret_integer): Only warn if there was no previous
13063         overflow and -Wlong-long is enabled.
13064         * c-decl.c (declspecs_add_type): Drop redundant flags.
13065         * c.opt (Wlong-long): Init to -1.
13066         * c-opts.c (sanitize_cpp_opts): Synchronize cpp's warn_long_long
13067         and front-end warn_long_long. Wlong-long only depends on other
13068         flags if it is uninitialized.
13069         * c-parser.c (disable_extension_diagnostics): warn_long_long is
13070         the same for CPP and FE.
13071         (restore_extension_diagnostics): Likewise.
13072
13073 2009-04-20  Ian Lance Taylor  <iant@google.com>
13074
13075         Fix enum conversions which are invalid in C++:
13076         * auto-inc-dec.c (attempt_change): Change 0 to SET in function call.
13077         * calls.c (store_one_arg): Change 0 to EXPAND_NORMAL in function call.
13078         * cse.c (hash_rtx_cb): Change 0 to VOIDmode in function call.
13079         * dbgcnt.c (dbg_cnt_set_limit_by_name): Add cast to enum type.
13080         * dbxout.c (dbxout_symbol): Change 0 to VOIDmode in function call.
13081         (dbxout_parms): Likewise.
13082         * df-core.c (df_set_flags): Change changeable_flags parameter to int.
13083         (df_clear_flags): Likewise.
13084         * df-problems.c (df_rd_bb_local_compute_process_def): Change
13085         top_flag parameter to int.
13086         (df_chain_create_bb_process_use): Likewise.
13087         (df_chain_add_problem): Change chain_flags parameter to unsigned int.
13088         Remove cast.
13089         * df-scan.c (df_ref_create): Change ref_flags parameter to int.
13090         (df_ref_create_structure, df_def_record_1): Likewise.
13091         (df_defs_record, df_uses_record, df_get_call_refs): Likewise.
13092         (df_notes_rescan): Change 0 to VOIDmode in function call.
13093         (df_get_call_refs, df_insn_refs_collect): Likewise.
13094         (df_bb_regs_collect): Likewise.
13095         (df_entry_block_defs_collect): Likewise.
13096         (df_exit_block_uses_collect): Likewise.
13097         * df.h: Update declarations.
13098         * double-int.c (double_int_divmod): Add cast to enum type.
13099         * dse.c (replace_inc_dec): Reverse parameters to gen_int_mode.
13100         * dwarf2out.c (new_reg_loc_descr): Add casts to enum type.
13101         (based_loc_descr): Likewise.
13102         (loc_descriptor_from_tree_1): Change first_op and second_op to
13103         enum dwarf_location_atom.  Add cast to enum type.
13104         * expmed.c (init_expmed): Change 0 to SET in function call.
13105         * expr.c (init_expr_target): Change 0 to VOIDmode in function call.
13106         (expand_expr_real_1): Change 0 to EXPAND_NORMAL in function call.
13107         (do_store_flag): Likewise.
13108         * fixed-value.h (struct fixed_value): Change mode to enum
13109         machine_mode.
13110         * function.c (assign_parms): Change 0 to VOIDmode in function call.
13111         * genautomata.c (insert_automaton_decl): Change 1 to INSERT in
13112         function call.
13113         (insert_insn_decl, insert_decl, insert_state): Likewise.
13114         (automata_list_finish): Likewise.
13115         * genrecog.c (process_define_predicate): Add cast to enum type.
13116         * gensupport.c (init_predicate_table): Add cast to enum type.
13117         * gimple.c (gimple_build_return): Change 0 to ERROR_MARK in
13118         function call.
13119         (gimple_build_call_1, gimple_build_label): Likewise.
13120         (gimple_build_goto, gimple_build_asm_1): Likewise.
13121         (gimple_build_switch_1, gimple_build_cdt): Likewise.
13122         * gimple.h (GIMPLE_CHECK): Change 0 to ERROR_MARK in function call.
13123         (enum fallback): Rename from enum fallback_t.
13124         (fallback_t): Typedef as int.
13125         * gimple-low.c (lower_builtin_setjmp): Change TSI_SAME_STMT to
13126         GSI_SAME_STMT in function call.
13127         * ira.c (setup_class_subset_and_memory_move_costs): Add casts to
13128         enum type.
13129         (setup_reg_class_relations): Likewise.
13130         (setup_reg_class_nregs): Change cl to int.  Add casts to enum type.
13131         (setup_prohibited_class_mode_regs): Add cast to enum type.
13132         (setup_prohibited_mode_move_regs): Likewise.
13133         * ira-costs.c (record_reg_classes): Change rclass to enum reg_class.
13134         (record_address_regs): Change i to enum reg_class.
13135         * lists.c (alloc_EXPR_LIST): Add cast to enum type.
13136         * machmode.h (GET_MODE_CLASS): Cast value to enum mode_class.
13137         (GET_MODE_WIDER_MODE): Cast value to enum machine_mode.
13138         (GET_MODE_2XWIDER_MODE): Likewise.
13139         (GET_CLASS_NARROWEST_MODE): Likewise.
13140         * omp-low.c (expand_omp_for): Add cast to enum type.
13141         * optabs.c (debug_optab_libfuncs): Add casts to enum type.
13142         * opts.c (enable_warning_as_error): Change kind to diagostic_t.
13143         * postreload.c (reload_cse_simplify_operands): Change rclass local
13144         to enum reg_class.
13145         * predict.c (combine_predictions_for_insn): Change best_predictor
13146         and predictor to enum br_predictor.
13147         (combine_predictions_for_bb): Likewise.
13148         (build_predict_expr): Change assignment to PREDICT_EXPR_OUTCOME to
13149         use SET_PREDICT_EXPR_OUTCOME.
13150         * real.c (real_arithmetic): Change icode to code in function call.
13151         * reginfo.c (init_move_cost): Add casts to enum type.
13152         (init_reg_sets_1, init_fake_stack_mems): Likewise.
13153         * regmove.c (regclass_compatible_p): Change class0 and class1 to
13154         enum reg_class.
13155         * reload.c (find_valid_class): Add casts to enum type.
13156         (push_reload): Change 0 to NO_REGS in function call.
13157         (find_reloads): Change this_alternative to array of enum
13158         reg_class.  Remove some now-unnecessary casts.
13159         (make_memloc): Change 0 to VOIDmode in function call.
13160         * reload1.c (reload): Change 0 to VOIDmode in function call.
13161         (eliminate_regs_1, elimination_effects): Likewise.
13162         (eliminate_regs_in_insn): Likewise.
13163         (emit_input_reload_insns): Add cast to enum type.
13164         (delete_output_reload): Change 0 to VOIDmode in function call.
13165         * reorg.c (insn_sets_resource_p): Convert include_delayed_effects
13166         to enum type in function call.
13167         * tree.h (PREDICT_EXPR_OUTCOME): Add cast to enum type.
13168         (SET_PREDICT_EXPR_OUTCOME): Define.
13169         * tree-dump.c (get_dump_file_info): Change phase parameter to int.
13170         (get_dump_file_name, dump_begin, dump_enabled_p): Likewise.
13171         (dump_initialized_p, dump_flag_name, dump_end): Likewise.
13172         (dump_function): Likewise.
13173         * tree-dump.h: Update declarations.
13174         * tree-pass.h: Update declarations.
13175         * varasm.c (assemble_integer): Change mclass to enum mode_class.
13176         * config/arm/arm.c (thumb_legitimize_reload_address): Add cast to
13177         enum type.
13178         (arm_rtx_costs_1): Correct parenthesization.
13179         (arm_rtx_costs): Add casts to enum type.
13180         (adjacent_mem_locations): Reverse arguments to const_ok_for_op.
13181         (vfp_emit_fstmd): Use add_rg_note.
13182         (emit_multi_reg_push, emit_sfm): Likewise.
13183         (thumb_set_frame_pointer): Likewise.
13184         (arm_expand_prologue): Likewise.
13185         (arm_regno_class): Change return type to enum reg_class.
13186         (thumb1_expand_prologue): Use add_reg_note.
13187         * config/arm/arm-protos.h (arm_regno_class): Update declaration.
13188         * config/arm/arm.h (INITIALIZE_TRAMPOLINE): Change 0 to LCT_NORMAL
13189         in function call.
13190         * config/arm/gentune.sh: Add cast to enum type.
13191         * config/arm/arm-tune.md: Rebuild.
13192         * config/i386/i386.c (ix86_expand_prologue): Use add_reg_note.
13193         (ix86_split_fp_branch, predict_jump): Likewise.
13194         (ix86_expand_multi_arg_builtin): Change sub_code from enum
13195         insn_code to enum rtx_code.
13196         (ix86_builtin_vectorized_function): Add cast to enum type.
13197         * config/i386/i386.md (truncdfsf2): Change slot to enum
13198         ix86_stack_slot.
13199         (truncxf<mode>2, isinf<mode>2): Likewise.
13200         * config/i386/i386-c.c (ix86_pragma_target_parse): Add cast to
13201         enum type.
13202         * config/ia64/ia64.c (ia64_split_tmode_move): Use add_reg_note.
13203         (spill_restore_mem, do_spill, ia64_expand_prologue): Likewise.
13204         (insert_bundle_state): Change 1 to INSERT in function call.
13205         (ia64_add_bundle_selector_before): Likewise.
13206         * config/ia64/ia64.md (cpu attr): Add cast to enum type.
13207         (save_stack_nonlocal): Change 0 to LCT_NORMAL in function call.
13208         (restore_stack_nonlocal): Likewise.
13209         * config/mips/mips.h (MIPS_ICACHE_SYNC): Change 0 to LCT_NORMAL in
13210         function call.
13211         * config/mips/mips.c (mips_binary_cost): Change 0 to SET in
13212         function call.
13213         (mips_rtx_costs): Likewise.
13214         (mips_override_options): Add casts to enum type.
13215         * config/mips/sdemtk.h (MIPS_ICACHE_SYNC): Change 0 to LCT_NORMAL
13216         in function call.
13217         * config/pa/pa.c (legitimize_pic_address): Use add_reg_note.
13218         (store_reg, set_reg_plus_d): Likewise.
13219         (hppa_expand_prologue, hppa_profile_hook): Likewise.
13220         * config/rs6000/rs6000.c (rs6000_init_hard_regno_mode_ok): Add
13221         cast to enum type.
13222         (altivec_expand_vec_set_builtin): Change 0 to EXPAND_NORMAL in
13223         function call.
13224         (emit_unlikely_jump): Use add_reg_note.
13225         (rs6000_emit_allocate_stack): Likewise.
13226         (rs6000_frame_related, rs6000_emit_prologue): Likewise.
13227         (output_toc): Change 1 to INSERT in function call.
13228         (output_profile_hook): Change 0 to LCT_NORMAL in function call.
13229         (rs6000_initialize_trampoline): Likewise.
13230         (rs6000_init_dwarf_reg_sizes_extra): Change 0 to EXPAND_NORMAL in
13231         function call.
13232         * config/s390/s390.c (s390_rtx_costs): Add cast to enum type.
13233         (s390_expand_movmem): Change 0 to OPTAB_DIRECT in function call.
13234         (s390_expand_setmem, s390_expand_cmpmem): Likewise.
13235         (save_gprs): Use add_reg_note.
13236         (s390_emit_prologue): Likewise.
13237         (s390_expand_builtin): Change 0 to EXPAND_NORMAL in function call.
13238         * config/sparc/sparc.c (sparc_expand_prologue): Use add_reg_note.
13239         (sparc_fold_builtin): Add cast to enum type.
13240         * config/spu/spu.c (spu_emit_branch_or_set): Change ior_code to
13241         enum insn_code.
13242         (spu_expand_prologue): Use add_reg_note.
13243         (expand_builtin_args): Change 0 to EXPAND_NORMAL in function call.
13244
13245 2009-04-20  Ian Lance Taylor  <iant@google.com>
13246
13247         * c-parser.c (c_parser_attributes): Change VEC back to tree list.
13248         (c_parser_postfix_expression_after_primary): Get VEC for list of
13249         arguments.  Get original types of arguments.  Call
13250         build_function_call_vec.
13251         (cached_expr_list_1, cached_expr_list_2): New static variables.
13252         (c_parser_expr_list): Change return type to VEC *.  Add
13253         p_orig_types parameter.  Change all callers.
13254         (c_parser_release_expr): New static function.
13255         (c_parser_vec_to_tree_list): New static function.
13256         * c-typeck.c (build_function_call): Rewrite to build a VEC and
13257         call build_function_call_vec.
13258         (build_function_call_vec): New function, based on old
13259         build_function_call.
13260         (convert_arguments): Remove nargs and argarray parameters.  Change
13261         values to a VEC.  Add origtypes parameter.
13262         (build_modify_expr): Add rhs_origtype parameter.  Change all callers.
13263         (convert_for_assignment): Add origtype parameter.  Change all
13264         callers.  If warn_cxx_compat, check for conversion to an enum
13265         type when calling a function.
13266         (store_init_value): Add origtype parameter.  Change all callers.
13267         (digest_init): Likewise.
13268         (struct init_node): Add origtype field.
13269         (add_pending_init): Add origtype parameter.  Change all callers.
13270         (output_init_element): Likewise.
13271         (output_pending_init_elements): Pass origtype from init_node to
13272         output_init_element.
13273         (process_init_element): Pass origtype from c_expr to
13274         output_init_element.
13275         (c_finish_return): Add origtype parameter.  Change all callers.
13276         * c-common.c (sync_resolve_size): Change params to VEC *.  Change
13277         caller.
13278         (sync_resolve_params): Likewise.
13279         (sync_resolve_return): Change params to first_param.  Change caller.
13280         (resolve_overloaded_builtins): Change params to VEC *.  Change
13281         callers.  Save first parameter around call to build_function_call_vec.
13282         * c-decl.c (finish_decl): Add origtype parameter.  Change all
13283         callers.  Call build_function_call_vec rather than
13284         build_function_call for cleanup.
13285         * c-tree.h: Update declarations.
13286         * c-common.h: Update declarations.
13287         * stub-objc.c (objc_rewrite_function_call): Change parameter from
13288         params to first_param.
13289         * target.h (struct gcc_target): Change resolve_overloaded_builtin
13290         params parameter from tree to void *.
13291         * config/rs6000/rs6000-c.c (altivec_resolve_overloaded_builtin):
13292         Change arglist parameter to have type void *, and to be a pointer
13293         to a VEC.
13294         * config/rs6000/rs6000-protos.h
13295         (altivec_resolve_overloaded_builtin): Update declaration.
13296         * config/spu/spu-c.c (spu_resolved_overloaded_builtin): Change
13297         fnargs parameter to have type void *, and to be a pointer to a
13298         VEC.  Call build_function_call_vec instead of
13299         build_function_call.
13300         * config/spu/spu-protos.h (spu_expand_builtin): Update declaration.
13301
13302 2009-04-20  Joey Ye  <joey.ye@intel.com>
13303             Xuepeng Guo  <xuepeng.guo@intel.com>
13304             H.J. Lu  <hongjiu.lu@intel.com>
13305
13306         * config/i386/atom.md: Add bypasses with ix86_dep_by_shift_count.
13307
13308         * config/i386/i386.c (LEA_SEARCH_THRESHOLD): New macro.
13309         (IX86_LEA_PRIORITY): Likewise.
13310         (distance_non_agu_define): New function.
13311         (distance_agu_use): Likewise.
13312         (ix86_lea_for_add_ok): Likewise.
13313         (ix86_dep_by_shift_count): Likewise.
13314
13315         * config/i386/i386.md: Call ix86_lea_for_add_ok to decide we
13316         should split for LEA.
13317
13318         * config/i386/i386-protos.h (ix86_lea_for_add_ok): Declare new
13319         function.
13320         (ix86_dep_by_shift_count): Likewise.
13321
13322 2009-04-20  Richard Guenther  <rguenther@suse.de>
13323
13324         * expr.c (handled_component_p): Move ...
13325         * tree.h (handled_component_p): ... here.
13326         * tree.def: Re-order BIT_FIELD_REF, COMPONENT_REF,
13327         ARRAY_REF, ARRAY_RANGE_REF, VIEW_CONVERT_EXPR, IMAGPART_EXPR
13328         and REALPART_EXPR to be in one group.
13329
13330 2009-04-20  Richard Guenther  <rguenther@suse.de>
13331
13332         * basic-block.h (get_all_dominated_blocks): Declare.
13333         * dominance.c (get_all_dominated_blocks): New function.
13334         * tree-cfg.c (get_all_dominated_blocks): Remove.
13335         (remove_edge_and_dominated_blocks): Adjust.
13336         * tree-ssa-phiprop.c (tree_ssa_phiprop_1): Fold in ...
13337         (tree_ssa_phiprop): ... here.  Use get_all_dominated_blocks
13338         instead of recursing.
13339
13340 2009-04-20  Doug Kwan  <dougkwan@google.com>
13341
13342         * cgraph.h (cgraph_node_ptr): New type for vector functions.
13343         (struct cgraph_node_set_def): New type.
13344         (cgraph_node_set) New type. Also declare vector functions.
13345         (struct cgraph_node_set_element_def): New type.
13346         (cgraph_node_set_element): Ditto.
13347         (cgraph_node_set_iterator): New iterator type.
13348         (cgraph_node_set_new, cgraph_node_set_find, cgraph_node_set_add,
13349         cgraph_node_set_remove, dump_cgraph_node_set,
13350         debug_cgraph_node_set): New prototypes.
13351         (csi_end_p, csi_next, csi_node, csi_start, cgraph_node_in_set_p,
13352         cgraph_node_set_size): New inlines.
13353         * tree-pass.h (struct cgraph_node_set_def): New decl to avoid
13354         including cgraph.h.
13355         (struct ipa_opt_pass): Add struct cgraph_node_set_def
13356         argument to function 'write_summary'.
13357         * ipa.c: Include ggc.h.
13358         (hash_cgraph_node_set_element,
13359         eq_cgraph_node_set_element, cgraph_node_set_new,
13360         cgraph_node_set_add, cgraph_node_set_remove,
13361         cgraph_node_set_find, dump_cgraph_node_set,
13362         debug_cgraph_node_set): New functions.
13363         * Makefile.in (ipa.o): Add dependency on GGC_H.
13364
13365 2009-04-20  Ira Rosen  <irar@il.ibm.com>
13366
13367         PR tree-optimization/39675
13368         * tree-vect-loop.c (vect_transform_loop): Remove currently redundant
13369         check of the return code of vect_schedule_slp. Check that
13370         stmt_vec_info still exists for the statement, before checking its
13371         vectorization type.
13372
13373 2009-04-20  Michael Matz  <matz@suse.de>
13374
13375         * Makefile.in (generated_files): Take out $(simple_generated_c).
13376
13377 2009-04-19  Dave Korn  <dave.korn.cygwin@gmail.com>
13378
13379         * config/i386/cygwin-stdint.h (INTPTR_TYPE):  Remove "long".
13380         (UINTPTR_TYPE):  Likewise.
13381
13382 2009-04-19  Joseph Myers  <joseph@codesourcery.com>
13383
13384         PR c/37481
13385         * c-typeck.c (digest_init): Check for initializing an array with a
13386         string literal.
13387
13388 2009-04-19  Joseph Myers  <joseph@codesourcery.com>
13389
13390         PR c/19771
13391         * c-semantics.c (pop_stmt_list): Propagate
13392         STATEMENT_LIST_HAS_LABEL to parent statement list.
13393
13394 2009-04-19  Adam Nemet  <anemet@caviumnetworks.com>
13395
13396         * config/mips/mips.h (mips_tune_attr): New macro.
13397         * config/mips/mips.md (cpu): Use it.
13398
13399 2009-04-19  Joseph Myers  <joseph@codesourcery.com>
13400
13401         PR c/38243
13402         * c-decl.c (shadow_tag_warned): Diagnose use of restrict when
13403         declaring a tag.
13404
13405 2009-04-19  Diego Novillo  <dnovillo@google.com>
13406
13407         * toplev.c (compile_file): Move call to coverage_finish ...
13408         * cgraphunit.c (ipa_passes): ... here.
13409         Call cgraph_process_new_functions.
13410         * ipa-utils.c (get_base_var): Handle CONSTRUCTOR.
13411         * Makefile.in (cgraphunit.o): Add dependency on COVERAGE_H.
13412
13413 2009-04-19  Jan Hubicka  <jh@suse.cz>
13414
13415         * cgraph.c (cgraph_create_edge, cgraph_set_call_stmt): Set proper
13416         cfun.
13417         (dump_cgraph_node): Dump can throw external flag.
13418         * ipa-pure-const.c (propagate): Fix propagation of nothrow flags.
13419
13420 2009-04-19  Manuel López-Ibáñez  <manu@gcc.gnu.org>
13421
13422         PR c/32061
13423         PR c++/36954
13424         * doc/invoke.texi: Add -Wlogical-op to -Wextra.
13425         * common.opt (Wlogical-op): Move from here...
13426         * c.opt (Wlogical-op): ... to here.
13427         * c-typeck.c (parser_build_binary_op): Update call to
13428         warn_logical_operator.
13429         * c-opts.c (c_common_post_options): Enable warn_logical_op with
13430         extra_warnings.
13431         * c-common.c (warn_logical_op): Update.
13432         * c-common.h (warn_logical_op): Update declaration.
13433
13434 2009-04-19  Eric Botcazou  <ebotcazou@adacore.com>
13435
13436         * tree.c (protected_set_expr_location): Fix formatting.
13437
13438 2009-04-18  Joseph Myers  <joseph@codesourcery.com>
13439
13440         PR c/27676
13441         * c-typeck.c (readonly_warning): new.
13442         (build_unary_op, build_modify_expr): Use readonly_warning for
13443         storing into something readonly but not const-qualified.
13444
13445 2009-04-18  Joseph Myers  <joseph@codesourcery.com>
13446
13447         PR c/22367
13448         * c-typeck.c (build_unary_op): Check for taking address of
13449         expression of type void.
13450
13451 2009-04-18  Joseph Myers  <joseph@codesourcery.com>
13452
13453         PR c/35210
13454         * c-typeck.c (build_function_call): Check for calling a function
13455         with qualified void return types.  Call require_complete_type when
13456         generating a trap.
13457
13458 2009-04-18  Jan Hubicka  <jh@suse.cz>
13459
13460         * cgraph.c (cgraph_make_edge, dump_cgraph_node, cgraph_set_call_stmt):
13461         Set nothrow flag.
13462         * cgraph.h (struct function): Reduce loop_nest to 30 bits; add
13463         can_throw_external flag.
13464         * ipa-reference.c (ipa_utils_reduced_inorder): Update call.
13465         * ipa-pure-const.c (ignore_edge): New function.
13466         (propagate): Compute order for NOTHROW computation; set NOTHROWs
13467         only over can_throw_external edges.
13468         (local_pure_const): Add nothrow flag.
13469         * ipa-utils.c (searchc): Add ignore_edge callback.
13470         (ipa_utils_reduced_inorder): Add ignore_edge callback.
13471         * ipa-utils.h (ipa_utils_reduced_inorder): Update prototype.
13472         (set_nothrow_function_flags): Update cgraph.
13473         * tree-cfg.c (verify_stmt): Relax nothrow checking when in IPA mode.
13474
13475 2009-04-18  Richard Guenther  <rguenther@suse.de>
13476
13477         PR middle-end/39804
13478         * tree-ssa-ccp.c (fold_stmt_1): New function factored from ...
13479         (fold_stmt): ... this and ...
13480         (fold_stmt_inplace): ... this.
13481         (fold_stmt_1): Fold references in calls and asms.
13482         * tree-cfg.c (remove_useless_stmts_cond): Use fold_stmt.
13483
13484 2009-04-18  Kazu Hirata  <kazu@codesourcery.com>
13485
13486         * tree-vrp.c (ssa_name_nonzero_p): Remove.
13487         * tree.h: Remove the prototype for ssa_name_nonzero_p.
13488
13489 2009-04-18  Kazu Hirata  <kazu@codesourcery.com>
13490
13491         * tree.c (function_args_count): Remove.
13492         * tree.h: Remove the prototype for function_args_count.
13493
13494 2009-04-18  Kazu Hirata  <kazu@codesourcery.com>
13495
13496         * tree-iterator.c (expr_only): Remove.
13497         * tree.h: Remove the prototype for expr_only.
13498
13499 2009-04-18  Kazu Hirata  <kazu@codesourcery.com>
13500
13501         * reginfo.c (cannot_change_mode_set_regs): Remove.
13502         * rtl.h: Remove the prototype for cannot_change_mode_set_regs.
13503
13504 2009-04-08  Anatoly Sokolov  <aesok@post.ru>
13505
13506         * config/avr/avr.md (*rotlsi3_8, *rotlsi3_16, *rotlsi3_24 ): Check
13507         whether operands 0 and 1 overlaps.
13508
13509 2009-04-18  Manuel López-Ibáñez  <manu@gcc.gnu.org>
13510
13511         PR middle-end/36902
13512         * tree-vrp.c (check_array_ref): Pass a location_t instead of a
13513         pointer. Use warning_at instead of warning.
13514         (search_for_addr_array): Likewise.
13515         (check_array_bounds): Likewise.
13516         (check_all_array_refs): Check that the incoming edge is not in the
13517         list of edges to be removed.
13518         (check_all_array_refs): Avoid the temporal pointer.
13519         (vrp_visit_cond_stmt): Fix typo.
13520         (simplify_switch_using_ranges): Handle the case where the switch
13521         index is an integer constant.
13522
13523 2009-04-18  Adam Nemet  <anemet@caviumnetworks.com>
13524
13525         * config/mips/mips.c (mips_final_postscan_insn): Make it static.
13526
13527 2009-04-18  Kazu Hirata  <kazu@codesourcery.com>
13528
13529         * doc/extend.texi, doc/invoke.texi: Fix typos.
13530
13531 2009-04-17  Cary Coutant  <ccoutant@google.com>
13532
13533         * tree-flow-inline.h (get_lineno): Fix inverted test.
13534
13535 2009-04-17  Diego Novillo  <dnovillo@google.com>
13536
13537         * tree-ssa-pre.c (create_expression_by_pieces): Remove
13538         assertion for AVAIL_OUT.
13539
13540 2009-04-17  Mike Frysinger  <vapier@gentoo.org>
13541
13542         PR target/38627
13543         * config/sh/lib1funcs.asm [__ELF__ && __linux__]: Add .note.GNU-stack.
13544         * config/sh/linux-atomic.asm: Likewise.
13545
13546 2009-04-17  Diego Novillo  <dnovillo@google.com>
13547
13548         * except.c (debug_eh_tree): New.
13549         (struct eh_region, struct eh_status): Move ...
13550         * except.h: ... here.
13551         (add_type_for_runtime): Declare extern.
13552         (lookup_type_for_runtime): Likewise.
13553         (debug_eh_tree): Declare.
13554         * Makefile.in (GTFILES): List except.h before except.c
13555
13556 2009-04-17  Diego Novillo  <dnovillo@google.com>
13557
13558         * omp-low.c (create_omp_child_function): Set DECL_CONTEXT for DECL.
13559         * cgraphunit.c (cgraph_build_static_cdtor): Likewise.
13560         * tree-dfa.c (find_referenced_vars_in): Factor out of ...
13561         (find_vars_r): ... here.
13562         * tree-flow.h (find_referenced_vars_in): Declare.
13563         * tree-ssa-pre.c (create_expression_by_pieces): Assert
13564         that AVAIL_OUT exists for BLOCK.
13565         * Makefile.in (CGRAPH_H): Add dependency on cif-code.def
13566         (tree-loop-distribution.o): Fix dependency on TREE_VECTORIZER_H.
13567         (tree-parloops.o): Likewise.
13568
13569 2009-04-17  Simon Baldwin  <simonb@google.com>
13570
13571         * toplev.c (default_tree_printer): Add handling for %E format.
13572
13573 2009-04-17  Diego Novillo  <dnovillo@google.com>
13574
13575         * tree-pretty-print.c (dump_generic_node): Add break after
13576         TREE_BINFO handler.  Handle COMPLEX_TYPE, REAL_TYPE and
13577         FIXED_POINT_TYPE.  Handle NULL TREE_TYPEs.  Handle METHOD_TYPE and
13578         FUNCTION_TYPE together.  Call print_struct_decl when printing
13579         structures and TDF_SLIM is not given.
13580         (print_struct_decl): Fix logic for detecting recursion.
13581
13582 2009-04-17  Rafael Avila de Espindola  <espindola@google.com>
13583
13584         PR 31567
13585         * gcc.c (create_at_file): New.
13586         (compile_input_file_p): New.
13587         (do_spec_1): Use @args files for %i. Use create_at_file for %o.
13588         * main.c (main): Update call to toplev_main.
13589         * toplev.c (toplev_main): Change signature. Call expandargv.
13590         * toplev.h (toplev_main): Change signature.
13591
13592 2009-04-17  Eric Botcazou  <ebotcazou@adacore.com>
13593
13594         * dwarf2out.c (field_byte_offset): Use the type size as the field size
13595         if the latter is not constant.
13596
13597 2009-04-17  David Edelsohn  <edelsohn@gnu.org>
13598
13599         * dbxout.c (xcoff_debug_hooks): Add set_name_debug_nothing.
13600
13601 2009-04-17  Eric Botcazou  <ebotcazou@adacore.com>
13602
13603         * dbxout.c (dbxout_block): Reinstate test on TREE_USED.
13604         * tree-ssa-live.c (remove_unused_scope_block_p): Update TREE_USED bit.
13605
13606 2009-04-17  Richard Guenther  <rguenther@suse.de>
13607
13608         * tree-ssa-structalias.c (get_constraint_for_component_ref):
13609         Handle component references view-converting an invariant address.
13610
13611 2009-04-17  Adam Nemet  <anemet@caviumnetworks.com>
13612
13613         * doc/tm.texi (TARGET_DEFAULT_TARGET_FLAGS,
13614         TARGET_MIN_ANCHOR_OFFSET, TARGET_MAX_ANCHOR_OFFSET,
13615         TARGET_HAVE_SRODATA_SECTION, TARGET_HAVE_TLS,
13616         TARGET_UNWIND_TABLES_DEFAULT, TARGET_TERMINATE_DW2_EH_FRAME_INFO):
13617         Use @deftypevr rather than @deftypevar.
13618
13619 2009-04-17  Richard Guenther  <rguenther@suse.de>
13620
13621         * tree-ssa-forwprop.c (get_prop_dest_stmt): Clean up tuplification.
13622         (get_prop_source_stmt): Likewise.
13623         (can_propagate_from): Likewise.
13624
13625 2009-04-17  Andrew Stubbs  <ams@codesourcery.com>
13626
13627         * configure.ac: Add new AC_SUBST for TM_ENDIAN_CONFIG,
13628         TM_MULTILIB_CONFIG and TM_MULTILIB_EXCEPTIONS_CONFIG.
13629         (--with-multilib-list): Add default value.
13630         * configure: Regenerate.
13631         * Makefile.in (TM_ENDIAN_CONFIG): Define.
13632         (TM_MULTILIB_CONFIG, TM_MULTILIB_EXCEPTIONS_CONFIG): Define.
13633         * config.gcc (sh-*-*): Switch to using TM_ENDIAN_CONFIG,
13634         TM_MULTILIB_CONFIG, and TM_MULTILIB_EXCEPTIONS_CONFIG.
13635         Don't add default cpu to multilib list unnecessarily, but do enable
13636         the relevant compiler option..
13637         Add support for --with-multilib-list=<blank> and
13638         --with-multilib-list=!<somelib> to supress unwanted multilibs.
13639         * config/sh/t-sh (DEFAULT_ENDIAN, OTHER_ENDIAN): New variables.
13640         (MULTILIB_ENDIAN, MULTILIB_CPUS): Delete variables.
13641         (MULTILIB_OPTIONS): Redefine using OTHER_ENDIAN and
13642         TM_MULTILIB_CONFIG.
13643         (MULTILIB_EXCEPTIONS): Add TM_MULTILIB_EXCEPTIONS_CONFIG.
13644         (MULTILIB_OSDIRNAMES): New variable.
13645         * config/sh/t-1e: Delete file.
13646         * config/sh/t-mlib-sh1: Delete file.
13647         * config/sh/t-mlib-sh2: Delete file.
13648         * config/sh/t-mlib-sh2a: Delete file.
13649         * config/sh/t-mlib-sh2a-nofpu: Delete file.
13650         * config/sh/t-mlib-sh2a-single: Delete file.
13651         * config/sh/t-mlib-sh2a-single-only: Delete file.
13652         * config/sh/t-mlib-sh2e: Delete file.
13653         * config/sh/t-mlib-sh3e: Delete file.
13654         * config/sh/t-mlib-sh4: Delete file.
13655         * config/sh/t-mlib-sh4-nofpu: Delete file.
13656         * config/sh/t-mlib-sh4-single: Delete file.
13657         * config/sh/t-mlib-sh4-single-only: Delete file.
13658         * config/sh/t-mlib-sh4a: Delete file.
13659         * config/sh/t-mlib-sh4a-nofpu: Delete file.
13660         * config/sh/t-mlib-sh4a-single: Delete file.
13661         * config/sh/t-mlib-sh4a-single-only: Delete file.
13662         * config/sh/t-mlib-sh4al: Delete file.
13663         * config/sh/t-mlib-sh5-32media: Delete file.
13664         * config/sh/t-mlib-sh5-32media-nofpu: Delete file.
13665         * config/sh/t-mlib-sh5-64media: Delete file.
13666         * config/sh/t-mlib-sh5-64media-nofpu: Delete file.
13667         * config/sh/t-mlib-sh5-compact: Delete file.
13668         * config/sh/t-mlib-sh5-compact-nofpu: Delete file.
13669         * config/sh/t-linux: Don't override MULTILIB_EXCEPTIONS.
13670         * doc/install.texi (Options specification): Add
13671         --with-multilib-list and --with-endian.
13672
13673 2009-04-17  Rafael Avila de Espindola  <espindola@google.com>
13674
13675         * Makefile.in (REVISION_s): Always include quotes. Change ifdef to use
13676         REVISION_c.
13677         (OBJS-common): Add plugin-version.o.
13678         (plugin-version.o): New.
13679         * gcc-plugin.h (plugin_gcc_version): New.
13680         (plugin_default_version_check): New.
13681         (plugin_init_func, plugin_init): Add version argument.
13682         * plugin-version.c: New.
13683         * plugin.c (str_plugin_gcc_version_name): New.
13684         (try_init_one_plugin): Read plugin_gcc_version from the plugin and
13685         pass it to the init function.
13686         (plugin_default_version_check): New.
13687
13688 2009-04-17  Richard Guenther  <rguenther@suse.de>
13689
13690         * tree-ssa-alias.c (refs_may_alias_p_1): Do not use TBAA
13691         for decl-vs-decl disambiguation.
13692
13693 2009-04-17  Andreas Krebbel  <krebbel1@de.ibm.com>
13694
13695         * config/s390/s390.h (s390_tune_attr): New macro definition.
13696         * config/s390/s390.md (cpu attribute): Map to s390_tune_attr.
13697
13698 2009-04-17  Richard Guenther  <rguenther@suse.de>
13699
13700         * tree-ssa-ccp.c (struct fold_stmt_r_data): Remove.
13701         (fold_stmt_r): Likewise.
13702         (maybe_fold_reference): New function.
13703         (fold_gimple_assign): Handle cases fold_stmt_r did.
13704         (fold_stmt): Do not use fold_stmt_r.
13705         (fold_stmt_inplace): Likewise.
13706
13707 2009-04-17  Richard Guenther  <rguenther@suse.de>
13708
13709         * tree-ssa-dom.c (gimple_assign_unary_useless_conversion_p): Remove.
13710         (record_equivalences_from_stmt): Remove useless checks and
13711         simplifications.
13712         * tree-ssa-pre.c (eliminate): Avoid converting a constant if
13713         the type is already suitable.
13714
13715 2009-04-17  Paolo Bonzini  <bonzini@gnu.org>
13716
13717         * config/sh/sh.h (FUNCTION_VALUE): Fix call to sh_promote_prototypes.
13718
13719 2009-04-17  Uros Bizjak  <ubizjak@gmail.com>
13720
13721         * config/arm/sfp-machine.h (__gcc_CMPtype): New typedef.
13722         (CMPtype): Define as __gcc_CMPtype.
13723
13724 2009-04-17  Aurelien Jarno  <aurelien@aurel32.net>
13725
13726         * config.gcc: Add soft-fp/t-softfp and i386/t-linux to tmake_file
13727         for i[34567]86-*-kfreebsd*-gnu*, x86_64-*-kfreebsd*-gnu*.
13728
13729 2009-04-17  Richard Guenther  <rguenther@suse.de>
13730
13731         PR tree-optimization/39746
13732         * tree-ssa-alias.c (ref_maybe_used_by_call_p_1): Remove
13733         special-casing for builtins and static variable use/def.
13734         (call_may_clobber_ref_p_1): Likewise.
13735
13736 2009-04-16  Ian Lance Taylor  <iant@google.com>
13737
13738         * df.h: Include "timevar.h".
13739         (struct df_problem): Change tv_id field to timevar_id_t.
13740         * tree-pass.h: Include "timevar.h".
13741         (struct opt_pass): Change tv_id field to timevar_id_t.
13742         * timevar.h (timevar_id_t): Define TV_NONE.
13743         * passes.c (execute_one_ipa_transform_pass): Check for tv_id !=
13744         TV_NONE rather than tv_id != 0.
13745         (execute_one_pass): Likewise.
13746         * Makefile.in (DF_H): Add $(TIMEVAR_H).
13747         (TREE_PASS_H): Define.  Change all instances of tree-pass.h in
13748         dependencies to $(TREE_PASS_H).
13749         * bt-load.c (pass_branch_target_load_optimize1): Set tv_id field
13750         to TV_NONE.
13751         (pass_branch_target_load_optimize2): Likewise.
13752         * cfglayout.c (pass_into_cfg_layout_mode): Likewise.
13753         (pass_outof_cfg_layout_mode): Likewise.
13754         * cgraphbuild.c (pass_remove_cgraph_callee_edges): Likewise.
13755         (pass_rebuild_cgraph_edges): Likewise.
13756         (pass_remove_cgraph_callee_edges): Likewise.
13757         * df-core.c (pass_df_initialize_opt): Likewise.
13758         (pass_df_initialize_no_opt): Likewise.
13759         (pass_df_finish): Likewise.
13760         * emit-rtl.c (pass_unshare_all_rtl): Likewise.
13761         * except.c (pass_set_nothrow_function_flags): Likewise.
13762         (pass_convert_to_eh_region_ranges): Likewise.
13763         * final.c (pass_compute_alignments): Likewise.
13764         * function.c (pass_instantiate_virtual_regs): Likewise.
13765         (pass_init_function): Likewise.
13766         (pass_leaf_regs): Likewise.
13767         (pass_match_asm_constraints): Likewise.
13768         * gimple-low.c (pass_lower_cf): Likewise.
13769         (pass_mark_used_blocks): Likewise.
13770         * init-regs.c (pass_initialize_regs): Likewise.
13771         * integrate.c (pass_initial_value_sets): Likewise.
13772         * ira.c (pass_ira): Likewise.
13773         * jump.c (pass_cleanup_barriers): Likewise.
13774         * omp-low.c (pass_expand_omp): Likewise.
13775         (pass_lower_omp): Likewise.
13776         * matrix-reorg.c (pass_ipa_matrix_reorg): Likewise.
13777         * recog.c (pass_split_all_insns): Likewise.
13778         (pass_split_after_reload): Likewise.
13779         (pass_split_before_regstack): Likewise.
13780         (pass_split_before_sched2): Likewise.
13781         (pass_split_for_shorten_branches): Likewise.
13782         * reginfo.c (pass_reginfo_init): Likewise.
13783         (pass_subregs_of_mode_init): Likewise.
13784         (pass_subregs_of_mode_finish): Likewise.
13785         * passes.c (pass_postreload): Likewise.
13786         * stack-ptr-mod.c (pass_stack_ptr_mod): Likewise.
13787         * tree-cfg.c (pass_remove_useless_stmts): Likewise.
13788         (pass_warn_function_return): Likewise.
13789         (pass_warn_function_noreturn): Likewise.
13790         * tree-complex.c (pass_lower_complex): Likewise.
13791         (pass_lower_complex_O0): Likewise.
13792         * tree-if-conv.c (pass_if_conversion): Likewise.
13793         * tree-into-ssa.c (pass_build_ssa): Likewise.
13794         * tree-mudflap.c (pass_mudflap_1): Likewise.
13795         (pass_mudflap_2): Likewise.
13796         * tree-nomudflap.c (pass_mudflap_1): Likewise.
13797         (pass_mudflap_2): Likewise.
13798         * tree-nrv.c (pass_return_slot): Likewise.
13799         * tree-object-size.c (pass_object_sizes): Likewise.
13800         * tree-optimize.c (pass_all_optimizations): Likewise.
13801         (pass_early_local_passes): Likewise.
13802         (pass_all_early_optimizations): Likewise.
13803         (pass_cleanup_cfg): Likewise.
13804         (pass_cleanup_cfg_post_optimizing): Likewise.
13805         (pass_free_datastructures): Likewise.
13806         (pass_free_cfg_annotations): Likewise.
13807         (pass_fixup_cfg): Likewise.
13808         (pass_init_datastructures): Likewise.
13809         * tree-ssa.c (pass_early_warn_uninitialized): Likewise.
13810         (pass_late_warn_uninitialized): Likewise.
13811         (pass_update_address_taken): Likewise.
13812         * tree-ssa-ccp.c (pass_fold_builtins): Likewise.
13813         * tree-ssa-math-opts.c (pass_cse_reciprocals): Likewise.
13814         (pass_cse_sincos): Likewise.
13815         (pass_convert_to_rsqrt): Likewise.
13816         * tree-ssa-structalias.c (pass_build_alias): Likewise.
13817         * tree-stdarg.c (pass_stdarg): Likewise.
13818         * tree-tailcall.c (pass_tail_recursion): Likewise.
13819         (pass_tail_calls): Likewise.
13820         * tree-vect-generic.c (pass_lower_vector): Likewise.
13821         (pass_lower_vector_ssa): Likewise.
13822         * tree-vectorizer.c (pass_ipa_increase_alignment): Likewise.
13823
13824 2009-04-16  Joseph Myers  <joseph@codesourcery.com>
13825
13826         * config/mips/mips.c (mips_rtx_cost_data): Use SOFT_FP_COSTS in
13827         XLR entry.
13828         * config/mips/mips.h (MIPS_ISA_LEVEL_SPEC, MIPS_ARCH_FLOAT_SPEC):
13829         Handle -march=xlr.
13830         * config/mips/xlr.md (ir_xlr_alu): Also accept insn types move,
13831         logical and signext.
13832
13833 2009-04-16  Kaz Kojima  <kkojima@gcc.gnu.org>
13834
13835         PR target/39767
13836         * config/sh/predicates.md (arith_operand): Check if the operand
13837         of TRUNCATE is a REG.
13838
13839 2009-04-16  Kazu Hirata  <kazu@codesourcery.com>
13840
13841         * cfgrtl.c (delete_insn_chain_and_edges): Remove.
13842         * rtl.h: Remove the prototype for delete_insn_chain_and_edges.
13843
13844 2009-04-16  Kazu Hirata  <kazu@codesourcery.com>
13845
13846         * tree-iterator.c (tsi_split_statement_list_after,
13847         tsi_split_statement_list_before): Remove.
13848         * tree-iterator.h: Remove the prototypes for
13849         tsi_split_statement_list_after and tsi_split_statement_list_before.
13850
13851 2009-04-16  Kazu Hirata  <kazu@codesourcery.com>
13852
13853         * tree-ssa-propagate.c (stmt_makes_single_load): Remove.
13854         * tree-ssa-propagate.h: Remove the prototype for
13855         stmt_makes_single_load.
13856
13857 2009-04-16  Kazu Hirata  <kazu@codesourcery.com>
13858
13859         * emit-rtl.c (set_mem_attrs_from_reg): Remove.
13860         * rtl.h: Remove the prototype for set_mem_attrs_from_reg.
13861
13862 2009-04-16  Kazu Hirata  <kazu@codesourcery.com>
13863
13864         * tree-iterator.c (EXPR_LAST_BODY): Remove.
13865
13866 2009-04-16  Kazu Hirata  <kazu@codesourcery.com>
13867
13868         * except.c (eh_region_outer_p): Remove.
13869         * except.h: Remove the prototype for eh_region_outer_p.
13870
13871 2009-04-16  Kazu Hirata  <kazu@codesourcery.com>
13872
13873         * function.c (current_function_assembler_name): Remove.
13874         * function.h: Remove the prototype for
13875         current_function_assembler_name.
13876
13877 2009-04-16  Ian Lance Taylor  <iant@google.com>
13878
13879         * rtlanal.c (alloc_reg_note): New function, broken out of add_reg_note.
13880         (add_reg_note): Call alloc_reg_note.
13881         * rtl.h (alloc_reg_note): Declare.
13882         * combine.c (try_combine): Use alloc_reg_note.
13883         (recog_for_combine, move_deaths): Likewise.
13884         (distribute_notes): Use alloc_reg_note and add_reg_note.
13885         * haifa-sched.c (sched_create_recovery_edges): Use add_reg_note.
13886         * combine-stack-adj.c (adjust_frame_related_expr): Likewise.
13887         * reload1.c (eliminate_regs_1): Use alloc_reg_note.
13888
13889 2009-04-16  Vladimir Makarov  <vmakarov@redhat.com>
13890
13891         PR rtl-optimization/39762
13892         * ira-int.h (ira_register_move_cost, ira_may_move_in_cost,
13893         ira_may_move_out_cost): Add comments about way of their usage.
13894         (ira_get_register_move_cost, ira_get_may_move_cost): New functions.
13895
13896         * ira-conflicts.c (process_regs_for_copy): Use function
13897         ira_get_register_move_cost instead of global
13898         ira_register_move_cost.
13899
13900         * ira-color.c (update_copy_costs, calculate_allocno_spill_cost,
13901         color_pass, move_spill_restore, update_curr_costs): Ditto.
13902
13903         * ira-lives.c (process_single_reg_class_operands): Ditto.
13904
13905         * ira-emit.c (emit_move_list): Ditto.
13906
13907         * ira-costs.c (copy_cost): Don't call ira_init_register_move_cost.
13908         (record_reg_classes): Ditto.  Use functions
13909         ira_get_register_move_cost and ira_get_may_move_cost instead of
13910         global vars ira_register_move_cost, ira_may_move_out_cost and
13911         ira_may_move_in_cost.
13912         (record_address_regs): Don't call ira_init_register_move_cost.
13913         Use function ira_get_may_move_cost instead of global
13914         ira_may_move_in_cost.
13915         (process_bb_node_for_hard_reg_moves): Use function
13916         ira_get_register_move_cost instead of global ira_register_move_cost.
13917         (ira_costs): Don't call ira_init_register_move_cost.
13918
13919 2009-04-16  Richard Guenther  <rguenther@suse.de>
13920
13921         * tree-cfg.c (verify_gimple_assign_binary):
13922         Allow POINTER_PLUS_EXPR-like PLUS_EXPR for vectors.
13923         * ipa-struct-reorg.c (gen_size): Fold the built expressions.
13924         (create_general_new_stmt): Note that this function is broken.
13925
13926 2009-04-16  Rafael Avila de Espindola  <espindola@google.com>
13927
13928         * common.opt (fhelp): Add Var(help_flag).
13929         * gcc-plugin.h (plugin_info): Add help.
13930         * plugin.c (plugin_name_args): Add help.
13931         (register_plugin_info): Set plugin->help.
13932         (print_help_one_plugin): New.
13933         (print_plugins_help): New.
13934         * plugin.h (print_plugins_help): New.
13935         * toplev.c (toplev_main): Call print_plugins_help if needed.
13936
13937 2009-04-16  Richard Guenther  <rguenther@suse.de>
13938
13939         * gimple.c (gimple_copy): Do not clear addresses_taken bitmap.
13940         (gimple_ior_addresses_taken_1): New function.
13941         (gimple_ior_addresses_taken): Likewise.
13942         * gimple.h (struct gimple_statement_with_ops_base): Remove
13943         addresses_taken member.
13944         (gimple_ior_addresses_taken): Declare.
13945         (gimple_addresses_taken, gimple_addresses_taken_ptr,
13946         gimple_set_addresses_taken): Remove.
13947         * ipa-reference.c (mark_address): New function.
13948         (scan_stmt_for_static_refs): Use it for marking addresses taken.
13949         * tree-ssa-operands.c (add_to_addressable_set): Rename to ...
13950         (mark_address_taken): ... this.  Just set TREE_ADDRESSABLE.
13951         (gimple_add_to_addresses_taken): Remove.
13952         (get_tmr_operands): Call mark_address_taken.
13953         (get_asm_expr_operands): Likewise.
13954         (get_expr_operands): Likewise.
13955         (build_ssa_operands): Do not clear the addresses_taken bitmap.
13956         (free_stmt_operands): Do not free it.
13957         * tree-ssa.c (delete_tree_ssa): Likewise.
13958         (execute_update_addresses_taken): Use gimple_ior_addresses_taken.
13959
13960 2009-04-16  Richard Guenther  <rguenther@suse.de>
13961
13962         * gimple.h (walk_stmt_load_store_addr_ops): Declare.
13963         (walk_stmt_load_store_ops): Likewise.
13964         * gimple.c (get_base_loadstore): New function.
13965         (walk_stmt_load_store_addr_ops): Likewise.
13966         (walk_stmt_load_store_ops): Likewise.
13967         * ipa-pure-const.c (check_op): Simplify.
13968         (check_load, check_store): New functions.
13969         (check_stmt): Use walk_stmt_load_store_ops.
13970         * ipa-reference.c (mark_load): Adjust signature.
13971         (mark_store): Likewise.
13972         (scan_stmt_for_static_refs): Use walk_stmt_load_store_addr_ops.
13973
13974 2009-04-16  Rafael Avila de Espindola  <espindola@google.com>
13975
13976         * gcc-plugin.h (plugin_event): Add PLUGIN_INFO.
13977         (plugin_info): New.
13978         * opts.c (common_handle_option): Don't call print_version.
13979         * plugin.c (plugin_name_args): Add version.
13980         (register_plugin_info): New.
13981         (register_callback): Handle PLUGIN_INFO.
13982         (try_init_one_plugin): New.
13983         (init_one_plugin): Use try_init_one_plugin. Only free plugin_name_args
13984         if failed to init.
13985         (finalize_one_plugin): New.
13986         (finalize_plugins): New.
13987         (print_one_plugin): New.
13988         (print_plugins_versions): New.
13989         * plugin.h (print_plugins_versions): New.
13990         (finalize_plugins): New.
13991         * toplev.c (compile_file): Don't call initialize_plugins.
13992         (print_version): Call print_plugins_versions.
13993         (toplev_main): Call initialize_plugins. Print version if needed.
13994         Call finalize_plugins.
13995
13996 2009-04-16  Rafael Avila de Espindola  <espindola@google.com>
13997
13998         * common.opt (fversion): New.
13999         * gcc.c (print_version): New.
14000         (process_command): Don't print the version. Just set print_version.
14001         (main): Print version. Call subprocesses if print_version and
14002         verbose_flag are set.
14003         * opts.c (common_handle_option): Handle OPT_fversion.
14004
14005 2009-04-16  Richard Guenther  <rguenther@suse.de>
14006             Ira Rosen  <irar@il.ibm.com>
14007
14008         PR tree-optimization/39698
14009         * tree-vect-loop.c (get_initial_def_for_reduction): Use the
14010         type of the reduction variable.  Only generate the def if
14011         it is needed.
14012
14013         * omp-low.c (expand_omp_for_generic): When converting to a pointer
14014         make sure to first convert to an integer of the same precision.
14015         * tree-vect-loop-manip.c (vect_update_ivs_after_vectorizer): Retain
14016         the type of the evolution correctly in computing the new
14017         induction variable base.
14018
14019 2009-04-16  Richard Guenther  <rguenther@suse.de>
14020
14021         PR middle-end/39625
14022         * tree-cfg.c (make_blocks): Split statements with to-be
14023         abnormal SSA names on the lhs.
14024
14025 2009-04-16  Paolo Bonzini  <bonzini@gnu.org>
14026
14027         * c-common.c (vector_targets_convertible_p, vector_types_convertible_p):
14028         Use TYPE_VECTOR_OPAQUE instead of targetm.vector_opaque_p.
14029         * c-typeck.c (really_start_incremental_init): Likewise.
14030         * target-def.h (TARGET_VECTOR_OPAQUE_P): Remove.
14031         (TARGET_INITIALIZER): Remove it.
14032         * target.h (struct target): Remove vector_opaque_p.
14033         * tree.c (build_opaque_vector_type): New.
14034         * tree.h (TYPE_VECTOR_OPAQUE): New.
14035         (build_opaque_vector_type): Declare.
14036         * doc/tm.texi (TARGET_VECTOR_OPAQUE_P): Remove.
14037         * config/rs6000/rs6000.c (build_opaque_vector_type,
14038         rs6000_is_vector_type, TARGET_VECTOR_OPAQUE_P): Remove.
14039         (rs6000_init_builtins): Use build_opaque_vector_type for
14040         opaque_V4SI_type_node.
14041
14042 2009-04-15  Catherine Moore  <clm@codesourcery.com>
14043
14044         * debug.h (set_name):  Declare.
14045         * dwarf2out.c (dwarf2out_set_name): Declare.
14046         (dwarf2_debug_hooks): Add set_name.
14047         (find_AT_string): New.
14048         (add_AT_string): Call find_AT_string.
14049         (dwarf2out_set_name): New.
14050         * cp/decl.c (grokdeclarator): Call set_name.
14051         * vmsdbgout.c (vmsdbg_debug_hooks): Add set_name_debug_nothing.
14052         * debug.c (do_nothing_debug_hooks):  Likewise.
14053         * dbxout.c (dbx_debug_hooks): Likewise.
14054         * sdbout.c (sdb_debug_hooks): Likewise.
14055
14056 2009-04-15  Michael Eager  <eager@eagercon.com>
14057
14058         * config/rs6000/rs6000.c (rs6000_function_value): Set function return
14059         reg for single-precision FPU.
14060         * config/rs6000/rs6000.md (movsi_internal1): Only for
14061         !TARGET_SINGLE_FPU.
14062         (movsi_internal1_single): New. Add pattern to move SI values to/from
14063         single-precision FP regs.
14064
14065 2009-04-15  Richard Guenther  <rguenther@suse.de>
14066
14067         * omp-low.c (lower_rec_input_clauses): Build correct address
14068         expressions.
14069         (expand_omp_for_generic): Fix multiplication type.
14070         * tree-loop-distribution.c (build_size_arg): Build a size_t argument.
14071         (generate_memset_zero): Fix types.
14072         * tree-profile.c (prepare_instrumented_value): Correctly
14073         widen a pointer.
14074
14075 2009-04-15  Ian Lance Taylor  <iant@google.com>
14076
14077         * c.opt (Wenum-compare): Enable for C and Objc.  Initialize to -1.
14078         * c-opts.c (c_common_handle_option): For C, set warn_enum_compare
14079         for -Wall and for -Wc++-compat.
14080         (c_common_post_options): For C++, set warn_enum_compare if not
14081         already set.
14082         * c-tree.h (struct c_expr): Add field original_type.
14083         (build_external_ref): Update declaration.
14084         * c-parser.c (c_parser_braced_init): Set original_type.
14085         (c_parser_initelt): Likewise.
14086         (c_parser_expr_no_commas): Likewise.
14087         (c_parser_conditional_expression): Likewise.
14088         (c_parser_cast_expression): Likewise.
14089         (c_parser_unary_expression): Likewise.  Pull setting of
14090         original_code to top of function.
14091         (c_parser_sizeof_expression): Set original_type.
14092         (c_parser_alignof_expression): Likewise.
14093         (c_parser_postfix_expression): Likewise.  Pull setting of
14094         original_code to top of function.
14095         (c_parser_postfix_expression_after_paren_type): Set original_type.
14096         (c_parser_postfix_expression_after_primary): Likewise.
14097         (c_parser_expression): Likewise.
14098         * c-typeck.c (build_external_ref): Add type parameter.  Change all
14099         callers.
14100         (c_expr_sizeof_expr): Set original_type field.
14101         (parser_build_unary_op): Likewise.
14102         (parser_build_binary_op): Likewise.  Optionally warn about
14103         comparisons of enums of different types.
14104         (digest_init): Set original_type field.
14105         (really_start_incremental_init): Likewise.
14106         (push_init_level, pop_init_level): Likewise.
14107         * doc/invoke.texi (Warning Options): -Wenum-compare now
14108         supported in C.
14109
14110 2009-04-15  Richard Guenther  <rguenther@suse.de>
14111
14112         * tree-ssa-pre.c (eliminate): When replacing a PHI node carry
14113         out a necessary conversion.
14114         * tree-ssa-sccvn.c (run_scc_vn): Also assign value-ids to
14115         names we didn't value number.
14116         * tree-mudflap.c (mf_build_check_statement_for): Use correct types.
14117
14118 2009-04-15  Richard Guenther  <rguenther@suse.de>
14119
14120         PR tree-optimization/39764
14121         * tree-ssa-ccp.c (get_value): Canonicalize value with
14122         canonicalize_float_value.
14123
14124 2009-04-15  Jan Hubicka  <jh@suse.cz>
14125
14126         * builtins.def (va_start, va_end, va_copy): Fix my previous commit.
14127         Wrong version of patch.
14128
14129 2009-04-15  Jan Hubicka  <jh@suse.cz>
14130
14131         * builtins.def (va_start, va_end, va_copy): Mark nothrow.
14132
14133 2009-04-15  Nathan Sidwell  <nathan@codesourcery.com>
14134
14135         * config/rs6000/rs6000.c (rs6000_init_builtins): Set TYPE_NAME of
14136         our distinct integral and vector types.
14137
14138 2009-04-15  Rafael Avila de Espindola  <espindola@google.com>
14139
14140         * class.c (build_vtbl_ref_1): Remove call to assemble_external.
14141         * init.c (build_vtbl_address): Remove call to assemble_external.
14142
14143 2009-04-14  Daniel Jacobowitz  <dan@codesourcery.com>
14144
14145         * config/rs6000/rs6000.c (rs6000_dwarf_register_span): Fix debug
14146         output for other floating point modes.
14147
14148 2009-04-14  Diego Novillo  <dnovillo@google.com>
14149
14150         * diagnostic.c (diagnostic_report_diagnostic): Do not
14151         warn about loaded plugins for DK_ERROR and DK_WARNING.
14152         * c-decl.c (declspecs_add_type): Move call to
14153         invoke_plugin_callbacks ...
14154         * c-parser.c (c_parser_declspecs): ... here.
14155         * plugin.c (dump_active_plugins): Tidy output.
14156
14157 2009-04-14  Diego Novillo  <dnovillo@google.com>
14158             Le-Chun Wu  <lcwu@google.com>
14159
14160         * configure.ac: Add --enable-plugin support.
14161         Define ENABLE_PLUGIN and PLUGINLIBS when specified.
14162         * Makefile.in (PLUGIN_H): Define.
14163         Export ENABLE_PLUGIN and GMPINC to site.exp.
14164         Add PLUGINLIBS to link command.
14165         Add/modify dependencies for plugin.o and files including plugin.h.
14166         (plugin.o): New.
14167         * config.in: Regenerate.
14168
14169         * opts.c (common_handle_option): Handle OPT_fplugin_ and
14170         OPT_fplugin_arg_.
14171
14172 2009-04-14  Le-Chun Wu  <lcwu@google.com>
14173
14174         * tree-pass.h (register_one_dump_file): Add a prototype for
14175         register_one_dump_file.
14176         * toplev.c (compile_file): Call initialize_plugins.
14177         (do_compile): Call invoke_plugin_callbacks.
14178         (toplev_main): Call invoke_plugin_callbacks.
14179         * common.opt: Add -fplugin= and -fplugin-arg-.
14180         * gcc-plugin.h: New public header file for plugins to include.
14181         * plugin.c: New source file.
14182         * plugin.h: New internal header file.
14183         * passes.c (register_one_dump_file): Make it external.
14184
14185         * c-parser.c (c_parser_declspecs): Call invoke_plugin_callbacks.
14186
14187 2009-04-14  Diego Novillo  <dnovillo@google.com>
14188
14189         * doc/plugins.texi: New.
14190         * doc/gccint.texi: Add reference to Plugins chapter.
14191         * doc/invoke.texi: Document -fplugin and -fplugin-arg
14192         * diagnostic.c (diagnostic_report_diagnostic): Warn about
14193         loaded plugins, if any.
14194         * timevar.def (TV_PLUGIN_INIT): Define.
14195         (TV_PLUGIN_RUN): Define.
14196         * plugin.c: Include timevar.h
14197         (plugins_active_p): New.
14198         (dump_active_plugins): New.
14199         (debug_active_plugins): New.
14200
14201 2009-04-14  Joseph Myers  <joseph@codesourcery.com>
14202
14203         * config/sol2.h (LINK_ARCH32_SPEC_BASE): Use %R with absolute
14204         library paths.
14205         * config/sparc/sol2-bi.h (LINK_ARCH64_SPEC_BASE): Likewise.
14206
14207 2009-04-14  Kazu Hirata  <kazu@codesourcery.com>
14208
14209         * config/arm/arm.c (arm_rtx_costs_1): Treat a minus with a shift
14210         the same as a minus without a shift.
14211
14212 2009-04-14  Nick Clifton  <nickc@redhat.com>
14213
14214         * config/stormy16/stormy16.md (ineqbranch_1): Do not assume that
14215         comparisons with small integers will always produce a short
14216         branch.
14217
14218 2009-04-14  Rafael Avila de Espindola  <espindola@google.com>
14219
14220         Merge:
14221         2008-12-19  Diego Novillo  <dnovillo@google.com>
14222
14223         * cgraph.c (dump_cgraph_node): Show memory address of NODE.
14224
14225 2009-04-14  Richard Guenther  <rguenther@suse.de>
14226
14227         * tree-cfg.c (verify_gimple_assign_unary): Adjust vector code
14228         verification.
14229         (verify_gimple_assign_binary): Likewise.  Handle shifts and
14230         rotates correctly.
14231         (verify_gimple_phi): Print the mismatched argument position.
14232         * tree-vect-loop-manip.c (vect_update_ivs_after_vectorizer):
14233         Fix types.
14234         (vect_update_init_of_dr): Likewise.
14235         * matrix-reorg.c (transform_access_sites): Do what the
14236         comment suggests.
14237         * omp-low.c (expand_omp_atomic_pipeline): Use the correct types.
14238
14239 2009-04-13  Michael Eager  <eager@eagercon.com>
14240
14241         * config/rs6000/rs6000-c.c: generate defines if rs6000_xilinx_fpu:
14242         _XFPU, _XFPU_SP_LITE, _XFPU_SP_FULL, _XFPU_DP_LITE, _XFPU_DP_FULL
14243         * config/rs6000/xilinx.h: New.  Spec for powerpc-xilinx-eabi
14244         * config.gcc (powerpc-xilinx-eabi): add xilinx.h to tm_file,
14245         remove duplicate config
14246
14247 2009-04-13  Dwarakanath Rajagopal  <dwarak.rajagopal@amd.com>
14248
14249         * ipa-inline.c (cgraph_decide_inlining_of_small_function): Dump
14250         file_name:line_number type locator of the call site.
14251
14252 2009-04-13  Vladimir Makarov  <vmakarov@redhat.com>
14253
14254         * genautomata.c: Put blank after comma.
14255         (automaton_decls): New.
14256         (struct unit_usage): Add comments to member next.
14257         (store_alt_unit_usage): Keep the list ordered.
14258         (unit_present_on_list_p, equal_alternatives_p): New.
14259         (check_regexp_units_distribution): Check units distribution
14260         correctness correctly.
14261         (main): Don't write automata if error is found.  Return correct
14262         exit code.
14263
14264         * config/m68k/cf.md (cfv4_ds): Remove.
14265         (cfv4_pOEP1, cfv4_sOEP1, cfv4_pOEP2,cfv4_sOEP2, cfv4_pOEP3,
14266         cfv4_sOEP3): Assign to cfv4_oep instead of cfv4_ds.
14267
14268         * config/rs6000/power4.md (lsuq_power4, iq_power4, fpq_power4,
14269         power4-load-ext, power4-store, power4-store-update,
14270         power4-fpstore, power4-fpstore-update, power4-two, power4-three,
14271         power4-insert, power4-compare, power4-lmul-cmp, power4-imul-cmp,
14272         power4-lmul, , power4-imul, power4-imul3, power4-sdiv,
14273         power4-sqrt, power4-isync): Modify reservation to make correct
14274         unit distribution to automata.
14275
14276         * config/rs6000/power5.md (iq_power5, fpq_power5, power5-store,
14277         power5-store-update, power5-two, power5-three, power5-lmul,
14278         power5-imul, power5-imul3, power5-sdiv, power5-sqrt): Ditto.
14279
14280 2009-04-13  Adam Nemet  <anemet@caviumnetworks.com>
14281
14282         * except.c (pass_set_nothrow_function_flags): Set name and add
14283         TODO_dump_func.
14284         (set_nothrow_function_flags): Mention in the dump file when
14285         changing a function to nothrow.
14286
14287 2009-04-13  Ozkan Sezer  <sezeroz@gmail.com>
14288
14289         PR/39066
14290         * gbl-ctors.h (DO_GLOBAL_CTORS_BODY): Use __SIZE_TYPE__
14291         instead of unsigned long.
14292
14293 2009-04-13  Ramana Radhakrishnan  <ramana.radhakrishnan@arm.com>
14294
14295         * config/arm/arm.c (return_used_this_function): Remove.
14296         (arm_output_function_prologue): Remove use of
14297         return_used_this_function.
14298         (output_return_instruction): Replace use of
14299         return_used_this_function
14300         by cfun->machine->return_used_this_function.
14301         (arm_output_epilogue): Likewise.
14302         (arm_output_function_epilogue): Likewise.
14303         (thumb_unexpanded_epilogue): Likewise.
14304         * config/arm/arm.h (struct machine_function):
14305         New member return_used_this_function.
14306
14307 2009-04-12  Mark Mitchell  <mark@codesourcery.com>
14308
14309         * doc/install.texi: Correct description of default directory for
14310         --with-gxx-include-dir.
14311
14312 2009-04-12  Eric Botcazou  <ebotcazou@adacore.com>
14313
14314         * fold-const.c (build_range_check): Properly deal with enumeral and
14315         boolean base types.
14316
14317 2009-04-12  Steven Bosscher  <steven@gcc.gnu.org>
14318
14319         * doc/invoke.texi (max_gcse_passes): Remove documentation.
14320         * params.def (PARAM_MAX_GCSE_PASSES): Remove.
14321         * params.h (MAX_GCSE_PASSES): Remove.
14322         * gcse.c (gcse_main): Run CPROP1, PRE or HOIST, and CPROP2
14323         in sequence.  Remove ability to run multiple passes.
14324         (bypass_jumps): Report run as third CPROP pass.
14325
14326 2009-04-12  Adam Nemet  <anemet@caviumnetworks.com>
14327
14328         PR middle-end/39651
14329         * except.c (can_throw_external): Look at each insn in a SEQUENCE
14330         when deciding whether the whole SEQUENCE can throw.
14331
14332 2009-04-12  Uros Bizjak  <ubizjak@gmail.com>
14333
14334         PR target/39740
14335         * config/alpha/predicates.md (local_symbolic_operand): Return 1 for
14336         offseted label references.
14337
14338 2009-04-11  Jan Hubicka  <jh@suse.cz>
14339
14340         * tree-ssa-pre.c (eliminate): Fix call of update_stmt.
14341
14342 2009-04-11  Richard Guenther  <rguenther@suse.de>
14343
14344         PR middle-end/39732
14345         * tree-inline.c (declare_return_variable): Mark DECL_BY_REFERENCE
14346         return variables as TREE_ADDRESSABLE.
14347
14348 2009-04-11  Richard Guenther  <rguenther@suse.de>
14349
14350         PR tree-optimization/39713
14351         * tree-ssa-sccvn.c (vn_get_expr_for): Make sure built
14352         reference trees have SSA_NAME operands.
14353
14354 2009-04-11  Richard Guenther  <rguenther@suse.de>
14355
14356         PR c/39712
14357         * c-gimplify.c (c_gimplify_expr): Adjust check for mismatched
14358         address expressions.
14359
14360 2009-04-11  Dave Korn  <dave.korn.cygwin@gmail.com>
14361
14362         * config/i386/cygwin-stdint.h (INT_LEAST32_TYPE):  Update to
14363         match changes in Cygwin 1.7
14364         (UINT_LEAST32_TYPE, INT_FAST16_TYPE, INT_FAST32_TYPE,
14365         UINT_FAST16_TYPE, UINT_FAST32_TYPE):  Likewise.
14366
14367 2009-04-10  Paolo Bonzini  <bonzini@gnu.org>
14368
14369         PR tree-optimization/39701
14370         * doc/invoke.texi (Optimization Options): Document change in
14371         meaning and initialization of -fdelete-null-pointer-checks.
14372
14373 2009-04-10  H.J. Lu  <hongjiu.lu@intel.com>
14374
14375         PR middle-end/39701
14376         * common.opt (-fdelete-null-pointer-checks): Initialize to 1.
14377
14378         * opts.c (decode_options): Don't set flag_delete_null_pointer_checks
14379         here.
14380
14381         * doc/invoke.texi: Update -fdelete-null-pointer-checks.
14382
14383 2009-04-10  Chao-ying Fu  <fu@mips.com>
14384
14385         * doc/tm.texi (Instruction Output): Document
14386         TARGET_ASM_FINAL_POSTSCAN_INSN.
14387         * target.h (final_postscan_insn): New field in asm_out.
14388         * target-def.h (TARGET_ASM_FINAL_POSTSCAN_INSN): New define.
14389         (TARGET_ASM_OUT): Add TARGET_ASM_FINAL_POSTSCAN_INSN.
14390         * final.c (final_scan_insn): Call
14391         targetm.asm_out.final_postscan_insn after outputting
14392         an asm macro and a normal instruction.
14393
14394         * config/mips/mips.h (FINAL_PRESCAN_INSN): New define.
14395         * config/mips/mips-protos.h (mips_final_prescan_insn): Declare.
14396         * config/mips/mips.c (mips_at_reg_p): New for_each_rtx callback.
14397         (mips_final_prescan_insn, mips_final_postscan_insn): New functions.
14398         (TARGET_ASM_FINAL_POSTSCAN_INSN): New define.
14399
14400 2009-04-10  Paolo Bonzini  <bonzini@gnu.org>
14401
14402         PR middle-end/39701
14403         * fold-const.c (tree_single_nonzero_warnv_p): Pass non-static
14404         variables as non-NULL even with -fdelete-null-pointer-checks.
14405
14406 2009-04-10  H.J. Lu  <hongjiu.lu@intel.com>
14407
14408         * config/rs6000/darwin-vecsave.asm: Remove extra "*/".
14409
14410 2009-04-09  H.J. Lu  <hongjiu.lu@intel.com>
14411
14412         PR target/39678
14413         * config/i386/i386.c (classify_argument): Handle SCmode with
14414         (bit_offset % 64) != 0.
14415
14416 2009-04-09  Sandra Loosemore  <sandra@codesourcery.com>
14417
14418         * doc/invoke.texi (Optimize Options): Add cross-reference to
14419         -Q --help=optimizers examples.
14420
14421 2009-04-10  Ben Elliston  <bje@au.ibm.com>
14422
14423         PR target/36800
14424         * config/rs6000/rs6000.c (rs6000_gimplify_va_arg): Do not set
14425         regalign for the reg == fpr and TDmode case.
14426
14427 2009-04-09  David Ayers  <ayers@fsfe.org>
14428
14429         PR objc/29200
14430         * objc/objc-act.c (warn_with_method): Remove helper function.
14431         (check_duplicates): Call warning and inform directly.
14432         (really_start_method): Likewise.
14433
14434 2009-04-09  Paolo Bonzini  <bonzini@gnu.org>
14435
14436         * expmed.c (expand_divmod): Always use a comparison for a division
14437         by a large unsigned integer.
14438
14439         * fold-const.c (tree_single_nonzero_warnv_p): Always treat decls
14440         for things others than variables or functions as nonzero.
14441
14442 2009-04-09  Nick Clifton  <nickc@redhat.com>
14443
14444         * unwind-compat.c: Change copyright header to refer to version
14445         3 of the GNU General Public License with version 3.1 of the
14446         GCC Runtime Library Exception and to point readers at the
14447         COPYING3 and COPYING3.RUNTIME files and the FSF's license web page.
14448         * config/alpha/crtfastmath.c: Likewise.
14449         * config/alpha/linux-unwind.h: Likewise.
14450         * config/alpha/qrnnd.asm: Likewise.
14451         * config/alpha/vms-crt0-64.c: Likewise.
14452         * config/alpha/vms-crt0.c: Likewise.
14453         * config/alpha/vms-dwarf2.asm: Likewise.
14454         * config/alpha/vms-dwarf2eh.asm: Likewise.
14455         * config/alpha/vms-psxcrt0-64.c: Likewise.
14456         * config/alpha/vms-psxcrt0.c: Likewise.
14457         * config/alpha/vms_tramp.asm: Likewise.
14458         * config/arc/initfini.c: Likewise.
14459         * config/arc/lib1funcs.asm: Likewise.
14460         * config/arm/bpabi-v6m.S: Likewise.
14461         * config/arm/bpabi.S: Likewise.
14462         * config/arm/bpabi.c: Likewise.
14463         * config/arm/crti.asm: Likewise.
14464         * config/arm/crtn.asm: Likewise.
14465         * config/arm/ieee754-df.S: Likewise.
14466         * config/arm/ieee754-sf.S: Likewise.
14467         * config/arm/lib1funcs.asm: Likewise.
14468         * config/arm/libunwind.S: Likewise.
14469         * config/arm/linux-atomic.c: Likewise.
14470         * config/arm/mmintrin.h: Likewise.
14471         * config/arm/pr-support.c: Likewise.
14472         * config/arm/unaligned-funcs.c: Likewise.
14473         * config/arm/unwind-arm.c: Likewise.
14474         * config/arm/unwind-arm.h: Likewise.
14475         * config/avr/libgcc.S: Likewise.
14476         * config/bfin/crti.s: Likewise.
14477         * config/bfin/crtlibid.s: Likewise.
14478         * config/bfin/crtn.s: Likewise.
14479         * config/bfin/lib1funcs.asm: Likewise.
14480         * config/bfin/linux-unwind.h: Likewise.
14481         * config/cris/arit.c: Likewise.
14482         * config/cris/cris_abi_symbol.c: Likewise.
14483         * config/darwin-64.c: Likewise.
14484         * config/darwin-crt2.c: Likewise.
14485         * config/darwin-crt3.c: Likewise.
14486         * config/darwin.h: Likewise.
14487         * config/dbxelf.h: Likewise.
14488         * config/dfp-bit.c: Likewise.
14489         * config/dfp-bit.h: Likewise.
14490         * config/elfos.h: Likewise.
14491         * config/fixed-bit.c: Likewise.
14492         * config/fixed-bit.h: Likewise.
14493         * config/fp-bit.c: Likewise.
14494         * config/fp-bit.h: Likewise.
14495         * config/fr30/crti.asm: Likewise.
14496         * config/fr30/crtn.asm: Likewise.
14497         * config/fr30/lib1funcs.asm: Likewise.
14498         * config/freebsd-spec.h: Likewise.
14499         * config/frv/cmovd.c: Likewise.
14500         * config/frv/cmovh.c: Likewise.
14501         * config/frv/cmovw.c: Likewise.
14502         * config/frv/frvbegin.c: Likewise.
14503         * config/frv/frvend.c: Likewise.
14504         * config/frv/lib1funcs.asm: Likewise.
14505         * config/glibc-stdint.h: Likewise.
14506         * config/h8300/clzhi2.c: Likewise.
14507         * config/h8300/crti.asm: Likewise.
14508         * config/h8300/crtn.asm: Likewise.
14509         * config/h8300/ctzhi2.c: Likewise.
14510         * config/h8300/fixunssfsi.c: Likewise.
14511         * config/h8300/lib1funcs.asm: Likewise.
14512         * config/h8300/parityhi2.c: Likewise.
14513         * config/h8300/popcounthi2.c: Likewise.
14514         * config/i386/ammintrin.h: Likewise.
14515         * config/i386/att.h: Likewise.
14516         * config/i386/avxintrin.h: Likewise.
14517         * config/i386/biarch64.h: Likewise.
14518         * config/i386/bmmintrin.h: Likewise.
14519         * config/i386/cpuid.h: Likewise.
14520         * config/i386/cross-stdarg.h: Likewise.
14521         * config/i386/crtfastmath.c: Likewise.
14522         * config/i386/crtprec.c: Likewise.
14523         * config/i386/cygming-crtbegin.c: Likewise.
14524         * config/i386/cygming-crtend.c: Likewise.
14525         * config/i386/cygwin.asm: Likewise.
14526         * config/i386/emmintrin.h: Likewise.
14527         * config/i386/gmm_malloc.h: Likewise.
14528         * config/i386/gthr-win32.c: Likewise.
14529         * config/i386/i386.h: Likewise.
14530         * config/i386/immintrin.h: Likewise.
14531         * config/i386/linux-unwind.h: Likewise.
14532         * config/i386/linux64.h: Likewise.
14533         * config/i386/mm3dnow.h: Likewise.
14534         * config/i386/mmintrin-common.h: Likewise.
14535         * config/i386/mmintrin.h: Likewise.
14536         * config/i386/nmmintrin.h: Likewise.
14537         * config/i386/pmm_malloc.h: Likewise.
14538         * config/i386/pmmintrin.h: Likewise.
14539         * config/i386/smmintrin.h: Likewise.
14540         * config/i386/sol2-c1.asm: Likewise.
14541         * config/i386/sol2-ci.asm: Likewise.
14542         * config/i386/sol2-cn.asm: Likewise.
14543         * config/i386/sol2-gc1.asm: Likewise.
14544         * config/i386/tmmintrin.h: Likewise.
14545         * config/i386/unix.h: Likewise.
14546         * config/i386/w32-unwind.h: Likewise.
14547         * config/i386/wmmintrin.h: Likewise.
14548         * config/i386/x86-64.h: Likewise.
14549         * config/i386/x86intrin.h: Likewise.
14550         * config/i386/xmmintrin.h: Likewise.
14551         * config/ia64/crtbegin.asm: Likewise.
14552         * config/ia64/crtend.asm: Likewise.
14553         * config/ia64/crtfastmath.c: Likewise.
14554         * config/ia64/crti.asm: Likewise.
14555         * config/ia64/crtn.asm: Likewise.
14556         * config/ia64/fde-glibc.c: Likewise.
14557         * config/ia64/lib1funcs.asm: Likewise.
14558         * config/ia64/linux-unwind.h: Likewise.
14559         * config/ia64/quadlib.c: Likewise.
14560         * config/ia64/unwind-ia64.c: Likewise.
14561         * config/linux.h: Likewise.
14562         * config/m32c/m32c-lib1.S: Likewise.
14563         * config/m32c/m32c-lib2-trapv.c: Likewise.
14564         * config/m32c/m32c-lib2.c: Likewise.
14565         * config/m32r/initfini.c: Likewise.
14566         * config/m68hc11/larith.asm: Likewise.
14567         * config/m68hc11/m68hc11-crt0.S: Likewise.
14568         * config/m68k/cf.md: Likewise.
14569         * config/m68k/crti.s: Likewise.
14570         * config/m68k/crtn.s: Likewise.
14571         * config/m68k/lb1sf68.asm: Likewise.
14572         * config/m68k/linux-unwind.h: Likewise.
14573         * config/mcore/crti.asm: Likewise.
14574         * config/mcore/crtn.asm: Likewise.
14575         * config/mcore/lib1.asm: Likewise.
14576         * config/mips/linux-unwind.h: Likewise.
14577         * config/mips/loongson.h: Likewise.
14578         * config/mips/mips16.S: Likewise.
14579         * config/mmix/crti.asm: Likewise.
14580         * config/mmix/crtn.asm: Likewise.
14581         * config/pa/fptr.c: Likewise.
14582         * config/pa/hpux-unwind.h: Likewise.
14583         * config/pa/lib2funcs.asm: Likewise.
14584         * config/pa/linux-atomic.c: Likewise.
14585         * config/pa/linux-unwind.h: Likewise.
14586         * config/pa/milli64.S: Likewise.
14587         * config/pa/quadlib.c: Likewise.
14588         * config/pa/stublib.c: Likewise.
14589         * config/picochip/libgccExtras/adddi3.asm: Likewise.
14590         * config/picochip/libgccExtras/ashlsi3.asm: Likewise.
14591         * config/picochip/libgccExtras/ashlsi3.c: Likewise.
14592         * config/picochip/libgccExtras/ashrsi3.asm: Likewise.
14593         * config/picochip/libgccExtras/ashrsi3.c: Likewise.
14594         * config/picochip/libgccExtras/cmpsi2.asm: Likewise.
14595         * config/picochip/libgccExtras/divmod15.asm: Likewise.
14596         * config/picochip/libgccExtras/divmodhi4.asm: Likewise.
14597         * config/picochip/libgccExtras/divmodsi4.asm: Likewise.
14598         * config/picochip/libgccExtras/longjmp.asm: Likewise.
14599         * config/picochip/libgccExtras/lshrsi3.asm: Likewise.
14600         * config/picochip/libgccExtras/lshrsi3.c: Likewise.
14601         * config/picochip/libgccExtras/parityhi2.asm: Likewise.
14602         * config/picochip/libgccExtras/popcounthi2.asm: Likewise.
14603         * config/picochip/libgccExtras/setjmp.asm: Likewise.
14604         * config/picochip/libgccExtras/subdi3.asm: Likewise.
14605         * config/picochip/libgccExtras/ucmpsi2.asm: Likewise.
14606         * config/picochip/libgccExtras/udivmodhi4.asm: Likewise.
14607         * config/picochip/libgccExtras/udivmodsi4.asm: Likewise.
14608         * config/rs6000/750cl.h: Likewise.
14609         * config/rs6000/altivec.h: Likewise.
14610         * config/rs6000/biarch64.h: Likewise.
14611         * config/rs6000/crtresfpr.asm: Likewise.
14612         * config/rs6000/crtresgpr.asm: Likewise.
14613         * config/rs6000/crtresxfpr.asm: Likewise.
14614         * config/rs6000/crtresxgpr.asm: Likewise.
14615         * config/rs6000/crtsavfpr.asm: Likewise.
14616         * config/rs6000/crtsavgpr.asm: Likewise.
14617         * config/rs6000/darwin-asm.h: Likewise.
14618         * config/rs6000/darwin-fallback.c: Likewise.
14619         * config/rs6000/darwin-fpsave.asm: Likewise.
14620         * config/rs6000/darwin-ldouble.c: Likewise.
14621         * config/rs6000/darwin-tramp.asm: Likewise.
14622         * config/rs6000/darwin-unwind.h: Likewise.
14623         * config/rs6000/darwin-vecsave.asm: Likewise.
14624         * config/rs6000/darwin-world.asm: Likewise.
14625         * config/rs6000/e500crtres32gpr.asm: Likewise.
14626         * config/rs6000/e500crtres64gpr.asm: Likewise.
14627         * config/rs6000/e500crtres64gprctr.asm: Likewise.
14628         * config/rs6000/e500crtrest32gpr.asm: Likewise.
14629         * config/rs6000/e500crtrest64gpr.asm: Likewise.
14630         * config/rs6000/e500crtresx32gpr.asm: Likewise.
14631         * config/rs6000/e500crtresx64gpr.asm: Likewise.
14632         * config/rs6000/e500crtsav32gpr.asm: Likewise.
14633         * config/rs6000/e500crtsav64gpr.asm: Likewise.
14634         * config/rs6000/e500crtsav64gprctr.asm: Likewise.
14635         * config/rs6000/e500crtsavg32gpr.asm: Likewise.
14636         * config/rs6000/e500crtsavg64gpr.asm: Likewise.
14637         * config/rs6000/e500crtsavg64gprctr.asm: Likewise.
14638         * config/rs6000/eabi-ci.asm: Likewise.
14639         * config/rs6000/eabi-cn.asm: Likewise.
14640         * config/rs6000/eabi.asm: Likewise.
14641         * config/rs6000/linux-unwind.h: Likewise.
14642         * config/rs6000/linux64.h: Likewise.
14643         * config/rs6000/paired.h: Likewise.
14644         * config/rs6000/paired.md: Likewise.
14645         * config/rs6000/ppc64-fp.c: Likewise.
14646         * config/rs6000/ppu_intrinsics.h: Likewise.
14647         * config/rs6000/rs6000.h: Likewise.
14648         * config/rs6000/si2vmx.h: Likewise.
14649         * config/rs6000/sol-ci.asm: Likewise.
14650         * config/rs6000/sol-cn.asm: Likewise.
14651         * config/rs6000/spe.h: Likewise.
14652         * config/rs6000/spu2vmx.h: Likewise.
14653         * config/rs6000/sysv4.h: Likewise.
14654         * config/rs6000/tramp.asm: Likewise.
14655         * config/rs6000/vec_types.h: Likewise.
14656         * config/s390/linux-unwind.h: Likewise.
14657         * config/s390/tpf-unwind.h: Likewise.
14658         * config/score/crti.asm: Likewise.
14659         * config/score/crtn.asm: Likewise.
14660         * config/sh/crt1.asm: Likewise.
14661         * config/sh/crti.asm: Likewise.
14662         * config/sh/crtn.asm: Likewise.
14663         * config/sh/divtab-sh4-300.c: Likewise.
14664         * config/sh/divtab-sh4.c: Likewise.
14665         * config/sh/divtab.c: Likewise.
14666         * config/sh/lib1funcs-4-300.asm: Likewise.
14667         * config/sh/lib1funcs-Os-4-200.asm: Likewise.
14668         * config/sh/lib1funcs.asm: Likewise.
14669         * config/sh/lib1funcs.h: Likewise.
14670         * config/sh/linux-atomic.asm: Likewise.
14671         * config/sh/linux-unwind.h: Likewise.
14672         * config/sh/shmedia.h: Likewise.
14673         * config/sh/sshmedia.h: Likewise.
14674         * config/sh/ushmedia.h: Likewise.
14675         * config/sparc/crtfastmath.c: Likewise.
14676         * config/sparc/linux-unwind.h: Likewise.
14677         * config/sparc/sol2-c1.asm: Likewise.
14678         * config/sparc/sol2-ci.asm: Likewise.
14679         * config/sparc/sol2-cn.asm: Likewise.
14680         * config/spu/divmodti4.c: Likewise.
14681         * config/spu/divv2df3.c: Likewise.
14682         * config/spu/float_disf.c: Likewise.
14683         * config/spu/float_unsdidf.c: Likewise.
14684         * config/spu/float_unsdisf.c: Likewise.
14685         * config/spu/float_unssidf.c: Likewise.
14686         * config/spu/mfc_multi_tag_release.c: Likewise.
14687         * config/spu/mfc_multi_tag_reserve.c: Likewise.
14688         * config/spu/mfc_tag_release.c: Likewise.
14689         * config/spu/mfc_tag_reserve.c: Likewise.
14690         * config/spu/mfc_tag_table.c: Likewise.
14691         * config/spu/multi3.c: Likewise.
14692         * config/spu/spu_internals.h: Likewise.
14693         * config/spu/spu_intrinsics.h: Likewise.
14694         * config/spu/spu_mfcio.h: Likewise.
14695         * config/spu/vec_types.h: Likewise.
14696         * config/spu/vmx2spu.h: Likewise.
14697         * config/stormy16/stormy16-lib2.c: Likewise.
14698         * config/svr4.h: Likewise.
14699         * config/sync.c: Likewise.
14700         * config/v850/lib1funcs.asm: Likewise.
14701         * config/vxlib-tls.c: Likewise.
14702         * config/vxlib.c: Likewise.
14703         * config/vxworks-dummy.h: Likewise.
14704         * config/xtensa/crti.asm: Likewise.
14705         * config/xtensa/crtn.asm: Likewise.
14706         * config/xtensa/ieee754-df.S: Likewise.
14707         * config/xtensa/ieee754-sf.S: Likewise.
14708         * config/xtensa/lib1funcs.asm: Likewise.
14709         * config/xtensa/lib2funcs.S: Likewise.
14710         * config/xtensa/linux-unwind.h: Likewise.
14711         * config/xtensa/unwind-dw2-xtensa.c: Likewise.
14712         * config/xtensa/unwind-dw2-xtensa.h: Likewise.
14713         * coretypes.h: Likewise.
14714         * crtstuff.c: Likewise.
14715         * defaults.h: Likewise.
14716         * dwarf2.h: Likewise.
14717         * emutls.c: Likewise.
14718         * gbl-ctors.h: Likewise.
14719         * gcov-io.h: Likewise.
14720         * ginclude/float.h: Likewise.
14721         * ginclude/iso646.h: Likewise.
14722         * ginclude/stdarg.h: Likewise.
14723         * ginclude/stdbool.h: Likewise.
14724         * ginclude/stddef.h: Likewise.
14725         * ginclude/stdfix.h: Likewise.
14726         * ginclude/stdint-gcc.h: Likewise.
14727         * ginclude/tgmath.h: Likewise.
14728         * gthr-aix.h: Likewise.
14729         * gthr-dce.h: Likewise.
14730         * gthr-gnat.c: Likewise.
14731         * gthr-gnat.h: Likewise.
14732         * gthr-lynx.h: Likewise.
14733         * gthr-mipssde.h: Likewise.
14734         * gthr-nks.h: Likewise.
14735         * gthr-posix.c: Likewise.
14736         * gthr-posix.h: Likewise.
14737         * gthr-posix95.h: Likewise.
14738         * gthr-rtems.h: Likewise.
14739         * gthr-single.h: Likewise.
14740         * gthr-solaris.h: Likewise.
14741         * gthr-tpf.h: Likewise.
14742         * gthr-vxworks.h: Likewise.
14743         * gthr-win32.h: Likewise.
14744         * gthr.h: Likewise.
14745         * libgcc2.c: Likewise.
14746         * libgcc2.h: Likewise.
14747         * libgcov.c: Likewise.
14748         * tsystem.h: Likewise.
14749         * typeclass.h: Likewise.
14750         * unwind-c.c: Likewise.
14751         * unwind-compat.h: Likewise.
14752         * unwind-dw2-fde-compat.c: Likewise.
14753         * unwind-dw2-fde-darwin.c: Likewise.
14754         * unwind-dw2-fde-glibc.c: Likewise.
14755         * unwind-dw2-fde.c: Likewise.
14756         * unwind-dw2-fde.h: Likewise.
14757         * unwind-dw2.c: Likewise.
14758         * unwind-dw2.h: Likewise.
14759         * unwind-generic.h: Likewise.
14760         * unwind-pe.h: Likewise.
14761         * unwind-sjlj.c: Likewise.
14762         * unwind.inc: Likewise.
14763         * config/arm/neon-gen.ml: Change generated copyright header to
14764         refer to version 3 of the GNU General Public License with
14765         version 3.1 of the GCC Runtime Library Exception and to point
14766         readers at the COPYING3 and COPYING3.RUNTIME files and the
14767         FSF's license web page.
14768         * config/arm/arm_neon.h: Regenerate.
14769
14770 2009-04-09  Jakub Jelinek  <jakub@redhat.com>
14771
14772         * config/cris/cris.md: Change copyright header to refer to version
14773         3 of the GNU General Public License.
14774         * doc/install.texi2html: Change copyright header to refer to version
14775         3 of the GNU General Public License and to point readers at the
14776         COPYING3 file and the FSF's license web page.
14777         * config/vax/linux.h: Likewise.
14778
14779 2009-04-09  Paolo Bonzini  <bonzini@gnu.org>
14780
14781         * config/i386/i386.md (cmpcc): New.
14782         * config/i386/sync.md (sync_compare_and_swap*): Set FLAGS_REG.
14783         (sync_compare_and_swap_cc*): Delete.
14784
14785         * config/s390/s390.c (s390_compare_emitted): Remove.
14786         (s390_emit_compare): Handle MODE_CC s390_compare_op0 like
14787         s390_compare_emitted used to be handled.  Assert that modes match.
14788         (s390_emit_compare_and_swap): Use s390_emit_compare, do not
14789         refer to sync_compare_and_swap_ccsi.
14790         * config/s390/s390.h (s390_compare_emitted): Remove.
14791         * config/s390/s390.md (seq): Look for MODE_CC s390_compare_op0
14792         instead of s390_compare_emitted.
14793         (stack_protect_test, sync_compare_and_swap_cc): Set s390_compare_op0
14794         instead of s390_compare_emitted.
14795         * config/s390/s390.md (cmpcc): New.
14796         (sync_compare_and_swapqi, sync_compare_and_swaphi): Clobber
14797         CC_REGNUM, do not pretend it's set.
14798         (sync_compare_and_swap_cc*): Delete.
14799         * config/s390/predicates.md (cc_reg_operand): New.
14800
14801         * expr.c (sync_compare_and_swap_cc): Delete.
14802         * optabs.h (sync_compare_and_swap_cc): Delete.
14803         * optabs.c (prepare_cmp_insn): Ignore which specific CCmode
14804         is being used with can_compare_p.
14805         (emit_cmp_and_jump_insn_1): Likewise when looking in the optab.
14806         (find_cc_set): New.
14807         (expand_bool_compare_and_swap): Do not use sync_compare_and_swap_cc,
14808         look for a MODE_CC set instead.  Use emit_store_flag.
14809         (expand_compare_and_swap_loop): Likewise, with some additional
14810         complication to avoid a force_reg when useless.  Use
14811         emit_cmp_and_jump_insns.
14812         * genopinit.c (optabs): Delete sync_compare_and_swap_cc.
14813         * doc/md.texi (sync_compare_and_swap_cc): Merge with
14814         sync_compare_and_swap documentation.
14815
14816 2009-04-09  Jan Hubicka  <jh@suse.cz>
14817
14818         * except.c (find_prev_try): Break out from ....
14819         (duplicate_eh_regions): ... here; properly update prev_try pointers
14820         when duplication part of tree.
14821         (dump_eh_tree): Improve dumping.
14822         (verify_eh_region): New.
14823         (verify_eh_tree): Use it.
14824
14825 2009-04-06  Richard Guenther  <rguenther@suse.de>
14826
14827         * c-gimplify.c (c_gimplify_expr): Fix the invalid GENERIC
14828         &ARRAY addresses by adjusting their types and prepending
14829         a conversion.
14830         * tree-cfg.c (verify_gimple_assign_single): Verify that
14831         addresses are correct.
14832
14833 2009-04-09  Richard Guenther  <rguenther@suse.de>
14834
14835         * tree-ssa-ccp.c (maybe_fold_stmt_addition): Move non-constant
14836         indices into an array reference if possible.
14837         * tree-ssa-forwprop.c (tree_ssa_forward_propagate_single_use_vars):
14838         Fold POINTER_PLUS_EXPR statements with invariant address.
14839
14840 2009-04-09  Alan Modra  <amodra@bigpond.net.au>
14841
14842         PR target/39634
14843         * config.gcc (powerpc64-*-linux*): Always build biarch.
14844
14845 2009-04-09  Joseph Myers  <joseph@codesourcery.com>
14846
14847         PR c/39613
14848         * c-typeck.c (do_case): If case label is not an INTEGER_CST, fold
14849         it and pedwarn if this results in an INTEGER_CST.
14850
14851 2009-04-08  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
14852
14853         * doc/install.texi: Update minimum GMP version.  Remove obsolete
14854         text in MPFR section.
14855
14856 2009-04-08  Jakub Jelinek  <jakub@redhat.com>
14857
14858         * dwarf2out.c (class_scope_p): New static inline.
14859         (class_or_namespace_scope_p): Use it.
14860         (gen_variable_die): Use DW_TAG_member tag for static data member
14861         declarations instead of DW_TAG_variable.
14862
14863         PR middle-end/39573
14864         * omp-low.c (expand_omp_taskreg): Finalize taskreg static local_decls
14865         variables.
14866
14867 2009-04-08  Richard Guenther  <rguenther@suse.de>
14868
14869         * tree-ssa-sccvn.c (valueize_refs): Do not continue to
14870         valueize random data.
14871
14872 2009-04-08  David Edelsohn  <edelsohn@gnu.org>
14873
14874         * config.gcc (aix tm_file):  Add aix-stdint.h.
14875         (aix tm clause use_gcc_stdint):  Set to wrap.
14876         * config/rs6000/aix-stdint.h:  New file.
14877
14878 2009-04-08  Richard Guenther  <rguenther@suse.de>
14879
14880         PR middle-end/36291
14881         * tree-dfa.c (add_referenced_var): Do not recurse into
14882         global initializers.
14883         * tree-ssa-ccp.c (get_symbol_constant_value): Add newly
14884         exposed variables.
14885         (fold_const_aggregate_ref): Likewise.
14886
14887 2009-04-08  Paolo Bonzini  <bonzini@gnu.org>
14888
14889         * recog.c (ordered_comparison_operator): New.
14890         * gensupport.c (std_preds): Add it.
14891         * doc/md.texi (Machine-Independent Predicates): Document it.
14892
14893 2009-04-08  Jan Hubicka  <jh@suse.cz>
14894
14895         * tree-eh.c (cleanup_eh): When not optimizing, do not try EH merging.
14896         * function.h (rtl_eh): Remove exception_handler_label_map.
14897         * except.c (ehl_hash, ehl_eq, add_ehl_entry,
14898         remove_exception_handler_label, for_each_eh_label_1): Remove.
14899         (rtl_remove_unreachable_regions): Remove.
14900         (convert_from_eh_region_ranges): Do not remove unreachable regions.
14901         (find_exception_handler_labels): Don't build the hashtable.
14902         (maybe_remove_eh_handler): Remove.
14903         (for_each_eh_label): Rewrite to walk the tree.
14904         (rest_of_handle_eh): Do not cleanup cfg prior EH construction.
14905         * except.h (maybe_remove_eh_handler): Remove.
14906         * passes.c (init_optimization_passes): Schedule second EH cleanup
14907         before out-of-ssa.
14908         * cfgrtl.c (rtl_delete_block, rtl_merge_blocks,
14909         cfg_layout_merge_blocks): Do not call maybe_remove_eh_handler.
14910
14911 2009-04-08  Paolo Bonzini  <bonzini@gnu.org>
14912
14913         * genoutput.c (validate_optab_operands): New.
14914         (gen_insn, gen_expand): Call it.
14915
14916         * genflags.c (gen_insn): Detect misused iterators.
14917         (main): Pass line_no to gen_insn, exit with status 1 on error.
14918
14919         * genextract.c (line_no): Make global.
14920         (VEC_safe_set_locstr): Change assertion to error message.
14921         (main): Exit with status 1 on error.
14922
14923 2009-04-08  Joseph Myers  <joseph@codesourcery.com>
14924
14925         PR c/39614
14926         PR c/39673
14927         * c-common.h (C_MAYBE_CONST_EXPR_PRE, C_MAYBE_CONST_EXPR_EXPR,
14928         C_MAYBE_CONST_EXPR_INT_OPERANDS, C_MAYBE_CONST_EXPR_NON_CONST,
14929         EXPR_INT_CONST_OPERANDS): Remove duplicate definitions.
14930         * c-convert.c (convert): Do not call fold on results of conversion
14931         functions when the result is a C_MAYBE_CONST_EXPR.
14932         * c-parser.c (c_parser_postfix_expression): Do not fold condition
14933         of __builtin_choose_expr.
14934         * c-typeck.c (remove_c_maybe_const_expr): New.
14935         (build_unary_op, build_conditional_expr, build_compound_expr,
14936         build_binary_op, c_objc_common_truthvalue_conversion): Call
14937         remove_c_maybe_const_expr on any input C_MAYBE_CONST_EXPR with
14938         integer operands.
14939
14940 2009-04-08  Bingfeng Mei  <bmei@broadcom.com>
14941
14942         * fold-const.c (const_binop): Combine two VECTOR_CST under operation
14943         CODE to produce a new one. Add a prototype to use fold_convert_const
14944
14945 2009-04-08  Danny Smith  <dannysmith@users.sourceforge.net>
14946
14947         PR bootstrap/39660
14948         * config/i386/host-mingw32.c (mingw32_gt_pch_use_address): Don't
14949         mix declarations and code.
14950
14951 2009-04-08  Ben Elliston  <bje@au.ibm.com>
14952
14953         * gcc.c: Replace `CC' with `GCC' throughout.
14954
14955 2009-04-07  H.J. Lu  <hongjiu.lu@intel.com>
14956
14957         * doc/invoke.texi: Document Atom support.
14958
14959 2009-04-07  Jason Merrill  <jason@redhat.com>
14960
14961         PR c++/25185
14962         * c-common.h, c-common.c: Add flag_pretty_templates.
14963         * c-opts.c (c_common_handle_option): Set it.
14964         * c.opt: Add -fno-pretty-templates.
14965         * doc/invoke.texi (C++ Dialect Options): Likewise.
14966
14967 2009-04-07  Uros Bizjak  <ubizjak@gmail.com>
14968
14969         * config/ia64/ia64.c (ia64_builtins): Add IA64_BUILTIN_HUGE_VALQ.
14970         (ia64_init_builtins): Handle IA64_BUILTIN_HUGE_VALQ.
14971         (ia64_expand_builtin): Likewise.
14972
14973 2009-04-07  Martin Jambor  <mjambor@suse.cz>
14974
14975         * tree-ssa-alias.c (refs_may_alias_p_1): Check for
14976         is_gimple_min_invariant rather than CONSTANT_CLASS_P so that invariant
14977         ADDR_EXPRS are include too.
14978
14979 2009-04-07  Richard Guenther  <rguenther@suse.de>
14980
14981         * tree-ssa-alias.c (ref_maybe_used_by_call_p_1): Non-aliased
14982         decls are only used if passes as parameters or if they are
14983         local statics and the call is not to a builtin.
14984         (call_may_clobber_ref_p_1): Likewise.
14985
14986 2009-04-07  Paolo Bonzini  <bonzini@gnu.org>
14987
14988         * expr.c (do_store_flag): Remove last argument.  Simplify code
14989         to avoid duplication of tests already done by can_compare_p.
14990         (expand_expr_real_1): Adjust caller.
14991
14992 2009-04-07  Paolo Bonzini  <bonzini@gnu.org>
14993
14994         * optabs.c (can_compare_p): Test the predicate of a
14995         cbranch and cstore pattern.
14996
14997 2009-04-07  Paolo Bonzini  <bonzini@gnu.org>
14998
14999         * expr.c (convert_move): Use emit_store_flag instead of
15000         "emulating" it.
15001
15002 2009-04-07  Paolo Bonzini  <bonzini@gnu.org>
15003
15004         * config/i386/i386.c (ix86_compare_emitted): Remove.
15005         (ix86_expand_compare, ix86_expand_branch): Handle MODE_CC
15006         ix86_compare_op0 like ix86_compare_emitted used to be handled.
15007         * config/i386/i386.h (ix86_compare_emitted): Remove.
15008         * config/i386/i386.md (stack_protect_test): Set ix86_compare_op0
15009         instead of ix86_compare_emitted.
15010         * config/i386/sync.md (sync_compare_and_swap_cc): Likewise.
15011
15012 2009-04-07  Andrew Stubbs  <ams@codesourcery.com>
15013
15014         * config.gcc (sh-*-*): Add sysroot-suffix.h to tm_file.
15015         Add t-sysroot-suffix to tmake_file.
15016         * config/print-sysroot-suffix.sh: New file.
15017         * config/t-sysroot-suffix: New file.
15018
15019 2009-04-07  Ben Elliston  <bje@au.ibm.com>
15020
15021         * libgcc2.c (INFINITY): Use __builtin_huge_val, not __builtin_inf,
15022         as the latter produces a warning when the target does not support
15023         infinity.
15024
15025 2009-04-07  Ben Elliston  <bje@au.ibm.com>
15026
15027         * dfp.c: Replace type punning assignments with memcpy throughout.
15028         * Makefile.in (dfp.o-warn): Remove.
15029
15030 2009-04-07  Alan Modra  <amodra@bigpond.net.au>
15031
15032         PR target/39634
15033         * config.gcc: Merge powerpc-*-linux* and powerpc64-*-linux*.
15034         Include soft-fp/t-softfp after rs6000/t-linux64.
15035
15036 2009-04-06  Eric Botcazou  <ebotcazou@adacore.com>
15037
15038         * stor-layout.c (set_sizetype): Use the full precision of their
15039         machine mode for bitsize types.
15040
15041 2009-04-06  H.J. Lu  <hongjiu.lu@intel.com>
15042
15043         * config/i386/i386.md: Revert 2 accidental checkins.
15044
15045 2009-04-06  Joey Ye  <joey.ye@intel.com>
15046             Xuepeng Guo  <xuepeng.guo@intel.com>
15047             H.J. Lu  <hongjiu.lu@intel.com>
15048
15049         Atom pipeline model, tuning and insn selection.
15050         * config.gcc (atom): Add atom config options and target.
15051
15052         * config/i386/atom.md: New.
15053
15054         * config/i386/i386.c (atom_cost): New cost.
15055         (m_ATOM): New macro flag.
15056         (initial_ix86_tune_features): Set m_ATOM.
15057         (x86_accumulate_outgoing_args): Likewise.
15058         (x86_arch_always_fancy_math_387): Likewise.
15059         (processor_target): Add Atom cost.
15060         (cpu_names): Add Atom cpu name.
15061         (override_options): Set Atom ISA.
15062         (ix86_issue_rate): New case PROCESSOR_ATOM.
15063         (ix86_adjust_cost): Likewise.
15064
15065         * config/i386/i386.h (TARGET_ATOM): New target macro.
15066         (ix86_tune_indices): Add X86_TUNE_OPT_AGU.
15067         (TARGET_OPT_AGU): New target option.
15068         (target_cpu_default): Add TARGET_CPU_DEFAULT_atom.
15069         (processor_type): Add PROCESSOR_ATOM.
15070
15071         * config/i386/i386.md (cpu): Add new value "atom".
15072         (use_carry, movu): New attr.
15073         (atom.md): Include atom.md.
15074         (adddi3_carry_rex64): Set attr "use_carry".
15075         (addqi3_carry): Likewise.
15076         (addhi3_carry): Likewise.
15077         (addsi3_carry): Likewise.
15078         (*addsi3_carry_zext): Likewise.
15079         (subdi3_carry_rex64): Likewise.
15080         (subqi3_carry): Likewise.
15081         (subhi3_carry): Likewise.
15082         (subsi3_carry): Likewise.
15083         (x86_movdicc_0_m1_rex64): Likewise.
15084         (*x86_movdicc_0_m1_se): Likewise.
15085         (x86_movsicc_0_m1): Likewise.
15086         (*x86_movsicc_0_m1_se): Likewise.
15087         (*adddi_1_rex64): Emit add insn as much as possible.
15088         (*addsi_1): Likewise.
15089         (return_internal): Set atom_unit.
15090         (return_internal_long): Likewise.
15091         (return_pop_internal): Likewise.
15092         (*rcpsf2_sse): Set atom_sse_attr attr.
15093         (*qrt<mode>2_sse): Likewise.
15094         (*prefetch_sse): Likewise.
15095
15096         * config/i386/i386-c.c (ix86_target_macros_internal): New case
15097         PROCESSOR_ATOM.
15098         (ix86_target_macros_internal): Likewise.
15099
15100         * config/i386/sse.md (cpu): Set attr "atom_sse_attr".
15101         (*prefetch_sse_rex): Likewise.
15102         (sse_rcpv4sf2): Likewise.
15103         (sse_vmrcpv4sf2): Likewise.
15104         (sse_sqrtv4sf2): Likewise.
15105         (<sse>_vmsqrt<mode>2): Likewise.
15106         (sse_ldmxcsr): Likewise.
15107         (sse_stmxcsr): Likewise.
15108         (*sse_sfence): Likewise.
15109         (sse2_clflush): Likewise.
15110         (*sse2_mfence): Likewise.
15111         (*sse2_lfence): Likewise.
15112         (avx_movup<avxmodesuffixf2c><avxmodesuffix>): Set attr "movu".
15113         (<sse>_movup<ssemodesuffixf2c>): Likewise.
15114         (avx_movdqu<avxmodesuffix>): Likewise.
15115         (avx_lddqu<avxmodesuffix>): Likewise.
15116         (sse2_movntv2di): Change attr "type" to "ssemov".
15117         (sse2_movntsi): Likewise.
15118         (rsqrtv8sf2): Change attr "type" to "sseadd".
15119         (sse3_addsubv2df3): Set attr "atom_unit".
15120         (sse3_h<plusminus_insn>v4sf3): Likewise.
15121         (*sse2_pmaddwd): Likewise.
15122         (*vec_extractv2di_1_rex64): Likewise.
15123         (*vec_extractv2di_1_avx): Likewise.
15124         (sse2_psadbw): Likewise.
15125         (ssse3_phaddwv8hi3): Likewise.
15126         (ssse3_phaddwv4hi3): Likewise.
15127         (ssse3_phadddv4si3): Likewise.
15128         (ssse3_phadddv2si3): Likewise.
15129         (ssse3_phaddswv8hi3): Likewise.
15130         (ssse3_phaddswv4hi3): Likewise.
15131         (ssse3_phsubwv8hi3): Likewise.
15132         (ssse3_phsubwv4hi3): Likewise.
15133         (ssse3_phsubdv4si3): Likewise.
15134         (ssse3_phsubdv2si3): Likewise.
15135         (ssse3_phsubswv8hi3): Likewise.
15136         (ssse3_phsubswv4hi3): Likewise.
15137         (ssse3_pmaddubsw128): Likewise.
15138         (sse3_pmaddubsw: Likewise.
15139         (ssse3_palignrti): Likewise.
15140         (ssse3_palignrdi): Likewise.
15141
15142 2009-04-06  Gerald Pfeifer  <gerald@pfeifer.com>
15143
15144         * doc/install.texi (Specific): Fix two cross-references to MinGW.
15145
15146 2009-04-06  Richard Guenther  <rguenther@suse.de>
15147
15148         PR tree-optimization/28868
15149         * tree-ssa-pre.c (inserted_phi_names): New bitmap to keep track
15150         of which PHI results we inserted.
15151         (insert_into_preds_of_block): Record inserted PHIs.
15152         (eliminate): Eliminate redundant PHI nodes.
15153         (init_pre): Init inserted_phi_names.
15154
15155 2009-04-06  Richard Guenther  <rguenther@suse.de>
15156
15157         PR tree-optimization/39643
15158         * tree-ssa-ccp.c (ccp_fold): Fold REALPART_EXPRs and
15159         IMAGPART_EXPRs of complex constants.
15160         (execute_fold_all_builtins): If we folded a call queue
15161         TODO_update_address_taken.
15162
15163 2009-04-06  Jan Hubicka  <jh@suse.cz>
15164
15165         PR middle-end/39659
15166         * except.c (remove_unreachable_regions): Propagate may_contain_throw
15167         flag.
15168
15169 2009-04-06  Andrew Stubbs  <ams@codesourcery.com>
15170
15171         * config/sh/lib1funcs.asm (ic_invalidate): Move ICBI out of the
15172         delay slot.
15173         (ic_invalidate_array): Likewise.
15174
15175 2009-04-06  Hariharan Sandanagobalane  <hariharan@picochip.com>
15176
15177         * calls.c (emit_library_call_value_1): Fix a problem with parameter
15178         alignment for library calls.
15179
15180 2009-04-06  Danny Smith  <dannysmith@users.sourceforge.net>
15181
15182         * config.gcc (mingw32 tm_file):  Add mingw-stdint.h.
15183         (mingw32 tm clause use_gcc_stdint):  Set to wrap.
15184         * config/i386/mingw-stdint.h:  New file.
15185
15186 2009-04-05  Richard Guenther  <rguenther@suse.de>
15187
15188         PR tree-optimization/39648
15189         * tree-ssa-sccvn.c (vn_reference_fold_indirect): Work around
15190         our &A vs. &A[0] IL deficiencies.
15191
15192 2009-04-04  Jan Hubicka  <jh@suse.cz>
15193
15194         * except.c (sjlj_find_directly_reachable_regions): Be ready for
15195         removed toplevel regions.
15196         (sjlj_mark_call_sites): Likewise.
15197
15198 2009-04-04  Dave Korn  <dave.korn.cygwin@gmail.com>
15199
15200         * config.gcc (cygwin tm_file):  Add cygwin-stdint.h.
15201         (cygwin tm clause use_gcc_stdint):  Set to wrap.
15202         * config/i386/cygwin-stdint.h:  New file.
15203
15204 2009-04-04  Richard Guenther  <rguenther@suse.de>
15205
15206         * Makefile.in (tree-ssa-copy.o): Add $(CFGLOOP_H) dependency.
15207         * tree-ssa-copy.c (init_copy_prop): Do not propagate through
15208         single-argument PHIs if we are in loop-closed SSA form.
15209         * tree-vect-loop-manip.c (slpeel_add_loop_guard): Pass extra guards
15210         for the pre-condition.
15211         (slpeel_tree_peel_loop_to_edge): Likewise.
15212         (vect_build_loop_niters): Take an optional sequence to append stmts.
15213         (vect_generate_tmps_on_preheader): Likewise.
15214         (vect_do_peeling_for_loop_bound): Take extra guards for the
15215         pre-condition.
15216         (vect_do_peeling_for_alignment): Adjust.  Unconditionally apply
15217         the cost model check.
15218         (vect_loop_versioning): Take stmt and stmt list to put pre-condition
15219         guards if we are going to peel.  Do not apply versioning in that case.
15220         * tree-vectorizer.h (vect_loop_versioning): Adjust declaration.
15221         (vect_do_peeling_for_loop_bound): Likewise.
15222         * tree-vect-loop.c (vect_transform_loop): If we are peeling for
15223         loop bound only record extra pre-conditions, do not apply loop
15224         versioning.
15225
15226 2009-04-04  Richard Guenther  <rguenther@suse.de>
15227
15228         * tree-ssa-operands.c (pop_stmt_changes): Remove automatic
15229         renaming code.
15230
15231 2009-04-04  Jan Hubicka  <jh@suse.cz>
15232
15233         * tree-ssa-uncprop.c (associate_equivalences_with_edges): Use
15234         last_basic_block for size of bb->index indexed array.
15235         * bt-load.c (compute_defs_uses_and_gen, compute_kill,
15236         compute_out, link_btr_uses, build_btr_def_use_webs,
15237         build_btr_def_use_webs, migrate_btr_defs): Likewise.
15238
15239 2009-04-04  Jan Hubicka  <jh@suse.cz>
15240
15241         * except.c (remove_eh_handler_and_replace): Break out from ...
15242         (remove_eh_handler): ... here.
15243         (bring_to_root): New function.
15244         (remove_unreachable_regions): Collect MUST_NOT_THROW, unify runtime
15245         handled ones, bring others to root of tree.
15246
15247 2009-04-04  Jan Hubicka  <jh@suse.cz>
15248
15249         * tree-eh.c (tree_empty_eh_handler_p): Pattern match more curefully.
15250         (all_phis_safe_to_merge): New function.
15251         (update_info): New structure.
15252         (make_eh_edge_and_update_phi, update_eh_edges): New functions.
15253         (cleanup_empty_eh): Update SSA if possible.
15254
15255 2009-04-04  Richard Guenther  <rguenther@suse.de>
15256
15257         * tree-ssa.c (verify_ssa): With -O0 we do not need VOPs.
15258         * tree-ssa-operands.c (append_vdef): Do not append VOPs at -O0.
15259         (append_vuse): Likewise.
15260
15261 2009-04-04  Jakub Jelinek  <jakub@redhat.com>
15262
15263         * unwind-dw2.h (_Unwind_FrameState): Add REG_UNDEFINED enum value.
15264         * unwind-dw2.c (execute_cfa_program): Set how to REG_UNDEFINED
15265         instead of REG_UNSAVED for DW_CFA_undefined.
15266         (uw_update_context_1): Handle REG_UNDEFINED the same as REG_UNSAVED.
15267         (uw_update_context): If RA column is REG_UNDEFINED, mark it as
15268         outermost frame.
15269
15270 2009-04-04  Richard Earnshaw  <rearnsha@arm.com>
15271
15272         PR target/39501
15273         * arm.md (movsfcc): Disable if not TARGET_HARD_FLOAT.
15274         * testsuite/gcc.c-torture/execute/pr39501.c: New file.
15275         * testsuite/gcc.c-torture/execute/pr39501.x: New file.
15276
15277 2009-04-04  Richard Guenther  <rguenther@suse.de>
15278
15279         PR tree-optimization/8781
15280         PR tree-optimization/37892
15281         * tree-ssa-sccvn.h (vn_reference_fold_indirect): Declare.
15282         * tree-ssa-sccvn.c (vn_reference_fold_indirect): New function.
15283         (valueize_refs): Call it for *& valueizations.
15284         (shared_reference_ops_from_ref): Rename to ...
15285         (valueize_shared_reference_ops_from_ref): ... this and valueize.
15286         (shared_reference_ops_from_call): Rename to ...
15287         (valueize_shared_reference_ops_from_call): ... this and valueize.
15288         (vn_reference_lookup): Update.
15289         (visit_reference_op_call): Likewise.
15290         * tree-ssa-pre.c (phi_translate_1): Fold *&.
15291         (eliminate): Value-replace the call address in call statements.
15292
15293 2009-04-04  Richard Guenther  <rguenther@suse.de>
15294
15295         PR tree-optimization/39636
15296         * tree-ssa-forwprop.c
15297         (forward_propagate_addr_into_variable_array_index): Check for
15298         GIMPLE_ASSIGN before accessing the rhs code.
15299
15300 2009-04-03  Jason Merrill  <jason@redhat.com>
15301
15302         * stor-layout.c (set_sizetype): Set TYPE_CANONICAL.
15303
15304 2009-04-03  Steve Ellcey  <sje@cup.hp.com>
15305
15306         * config/ia64/ia64.md (extendsfdf2, extendsfxf2, extenddfxf2,
15307         truncdfsf2, truncxfsf2, truncxfdf2, floatdixf2, fix_truncsfdi2,
15308         fix_truncdfdi2, fix_truncxfdi2, fix_truncxfdi2_alts, floatunsdisf2,
15309         floatunsdidf2, floatunsdixf2, fixuns_truncsfdi2, fixuns_truncdfdi2,
15310         fixuns_truncxfdi2, fixuns_truncxfdi2_alts, divsi3_internal,
15311         smuldi3_highpart, umuldi3_highpart, ctzdi2, *getf_exp_xf,
15312         divdi3_internal_lat, divdi3_internal_thr, mulditi3, *mulditi3_internal,
15313         umulditi3, *umulditi3_internal, addsf3, mulsf3, abssf2, negsf2,
15314         *nabssf2, sminsf3, smaxsf3, *maddsf4, *msubsf4, *nmulsf3, *nmaddsf4,
15315         *nmaddsf4_alts, divsf3, *sqrt_approx, sqrtsf2, sqrtsf2_internal_thr,
15316         adddf3, *adddf3_trunc, muldf3, *muldf3_trunc, absdf2, negdf2, *nabsdf2,
15317         smindf3, smaxdf3, *madddf4, *madddf4_trunc, *msubdf4, *msubdf4_trunc,
15318         *nmuldf3, *nmuldf3_trunc, *nmadddf4, *nmadddf4_alts, *nmadddf4_truncsf,
15319         *nmadddf4_truncsf_alts, divdf3, sqrtdf2, sqrtdf2_internal_thr, divxf3,
15320         sqrtxf2, sqrtxf2_internal_thr, *recip_approx):
15321         Use fr_reg_or_fp01_operand instead of fr_register_operand
15322
15323         * config/ia64/div.md (extend<mode>rf2, truncrf<mode>2,
15324         recip_approx_rf, divsf3_internal_thr, divsf3_internal_lat,
15325         divdf3_internal_thr, divdf3_internal_lat divxf3_internal): Ditto.
15326
15327 2009-04-03  Vladimir Makarov  <vmakarov@redhat.com>
15328
15329         PR rtl-optimization/39607
15330         PR rtl-optimization/39631
15331
15332         Revert:
15333
15334         2009-03-30  Vladimir Makarov  <vmakarov@redhat.com>
15335         * reload.c (push_reload, find_dummy_reload): Use df_get_live_out
15336         instead of DF_LR_OUT.
15337         * ira-lives.c (process_bb_node_lives): Ditto.
15338         * ira-color.c (ira_loop_edge_freq): Use df_get_live_{out,in}
15339         instead of DF_LR_{OUT,IN}.
15340         * ira-emit.c (generate_edge_moves, add_ranges_and_copies): Ditto.
15341         * ira-build.c (create_bb_allocnos, create_loop_allocnos): Ditto.
15342
15343 2009-04-03  Steven Bosscher  <steven@gcc.gnu.org>
15344
15345         * omp-low.c (pass_expand_omp): Don't claim to provide PROP_gimple_lomp.
15346         (execute_lower_omp): Always run but take the short way out if -fopenmp
15347         is not given.
15348         (gate_lower_omp): Remove, forcing the pass manager to always run the
15349         pass and always set PROP_gimple_lomp.
15350         (pass_lower_omp): Remove gate function.
15351         * matrix-reorg.c (pass_ipa_matrix_reorg): Don't claim to provide
15352         PROP_trees.  Instead, require it.
15353         * ipa-cp.c (pass_ipa_cp): Likewise.
15354         * ipa-inline.c (pass_early_inline): Don't claim to provide PROP_cfg.
15355         (pass_ipa_early_inline, pass_inline_parameters, pass_ipa_inline): Idem.
15356         * tree-profile.c (pass_tree_profile): Don't claim to provide PROP_cfg
15357         and PROP_gimple_leh.
15358
15359 2009-04-03  Richard Guenther  <rguenther@suse.de>
15360
15361         PR middle-end/13146
15362         PR tree-optimization/23940
15363         PR tree-optimization/33237
15364         PR middle-end/33974
15365         PR middle-end/34093
15366         PR tree-optimization/36201
15367         PR tree-optimization/36230
15368         PR tree-optimization/38049
15369         PR tree-optimization/38207
15370         PR tree-optimization/38230
15371         PR tree-optimization/38301
15372         PR tree-optimization/38585
15373         PR middle-end/38895
15374         PR tree-optimization/38985
15375         PR tree-optimization/39299
15376         * tree-ssa-structalias.h: Remove.
15377         * tree-ssa-operands.h (NULL_USE_OPERAND_P): Make of type use_operand_p.
15378         (NULL_DEF_OPERAND_P): Make of type def_operand_p.
15379         (struct vuse_element_d): Remove.
15380         (struct vuse_vec_d): Likewise.
15381         (VUSE_VECT_NUM_ELEM, VUSE_VECT_ELEMENT_NC, VUSE_ELEMENT_PTR_NC,
15382         VUSE_ELEMENT_VAR_NC, VUSE_VECT_ELEMENT, VUSE_ELEMENT_PTR,
15383         SET_VUSE_VECT_ELEMENT, SET_VUSE_ELEMENT_VAR, SET_VUSE_ELEMENT_PTR,
15384         VUSE_ELEMENT_VAR): Likewise.
15385         (struct voptype_d): Likewise.
15386         (NUM_VOP_FREE_BUCKETS): Likewise.
15387         (struct ssa_operands): Remove vop_free_buckets and mpt_table fields.
15388         (struct stmt_operands_d): Remove.
15389         (VUSE_OP_PTR, VUSE_OP, SET_VUSE_OP, VUSE_NUM, VUSE_VECT,
15390         VDEF_RESULT_PTR, VDEF_RESULT, VDEF_OP_PTR, VDEF_OP, SET_VDEF_OP,
15391         VDEF_NUM, VDEF_VECT): Likewise.
15392         (copy_virtual_operands): Remove.
15393         (operand_build_cmp): Likewise.
15394         (create_ssa_artificial_load_stmt): Likewise.
15395         (enum ssa_op_iter_type): Remove ssa_op_iter_vdef.
15396         (struct ssa_operand_iterator_d): Remove vuses, vdefs, mayusesm
15397         vuse_index and mayuse_index members.  Pack and move done and iter_type
15398         members to the front.
15399         (SSA_OP_VMAYUSE): Remove.
15400         (SSA_OP_VIRTUAL_USES): Adjust.
15401         (FOR_EACH_SSA_VDEF_OPERAND): Remove.
15402         (unlink_stmt_vdef): Declare.
15403         (add_to_addressable_set): Remove.
15404         * tree-vrp.c (stmt_interesting_for_vrp): Adjust.
15405         (vrp_visit_stmt): Likewise.
15406         * doc/tree-ssa.texi (Alias analysis): Update.
15407         * doc/invoke.texi (max-aliased-vops): Remove docs.
15408         (avg-aliased-vops): Likewise.
15409         * tree-into-ssa.c (syms_to_rename): Remove.
15410         (need_to_update_vops_p): Likewise.
15411         (need_to_initialize_update_ssa_p): Rename to ...
15412         (update_ssa_initialized_fn): ... this.  Track function we are
15413         initialized for.
15414         (symbol_marked_for_renaming): Simplify.
15415         (add_new_name_mapping): Do not set need_to_update_vops_p.
15416         (dump_currdefs): Use SYMS_TO_RENAME.
15417         (rewrite_update_stmt): Always walk all uses/defs.
15418         (dump_update_ssa): Adjust.
15419         (init_update_ssa): Take function argument.  Track what we are
15420         initialized for.
15421         (delete_update_ssa): Reset SYMS_TO_RENAME and update_ssa_initialized_fn.
15422         (create_new_def_for): Initialize for cfun, assert we are initialized
15423         for cfun.
15424         (mark_sym_for_renaming): Simplify.
15425         (mark_set_for_renaming): Do not initialize update-ssa.
15426         (need_ssa_update_p): Simplify.  Take function argument.
15427         (name_mappings_registered_p): Assert we ask for the correct function.
15428         (name_registered_for_update_p): Likewise.
15429         (ssa_names_to_replace): Likewise.
15430         (release_ssa_name_after_update_ssa): Likewise.
15431         (update_ssa): Likewise.  Use SYMS_TO_RENAME.
15432         (dump_decl_set): Do not print a newline.
15433         (debug_decl_set): Do it here.
15434         (dump_update_ssa): And here.
15435         * tree-ssa-loop-im.c (move_computations): Adjust.
15436         (movement_possibility): Likewise.
15437         (determine_max_movement): Likewise.
15438         (gather_mem_refs_stmt): Likewise.
15439         * tree-dump.c (dequeue_and_dump): Do not handle SYMBOL_MEMORY_TAG
15440         or NAME_MEMORY_TAG.
15441         * tree-complex.c (update_all_vops): Remove.
15442         (expand_complex_move): Adjust.
15443         * tree-ssa-loop-niter.c (chain_of_csts_start): Use NULL_TREE.
15444         Simplify test for memory referencing statement.  Exclude
15445         non-invariant ADDR_EXPRs.
15446         * tree-pretty-print.c (dump_generic_node): Do not handle memory tags.
15447         * tree-loop-distribution.c (generate_memset_zero): Adjust.
15448         (rdg_flag_uses): Likewise.
15449         * tree-tailcall.c (suitable_for_tail_opt_p): Remove memory-tag
15450         related code.
15451         (tree_optimize_tail_calls_1): Also split the
15452         edge from the entry block if we have degenerate PHI nodes in
15453         the first basic block.
15454         * tree.c (init_ttree): Remove memory-tag related code.
15455         (tree_code_size): Likewise.
15456         (tree_node_structure): Likewise.
15457         (build7_stat): Re-write to be build6_stat.
15458         * tree.h (MTAG_P, TREE_MEMORY_TAG_CHECK, TMR_TAG): Remove.
15459         (SSA_VAR_P): Adjust.
15460         (struct tree_memory_tag): Remove.
15461         (struct tree_memory_partition_tag): Likewise.
15462         (union tree_node): Adjust.
15463         (build7): Re-write to be build6.
15464         * tree-pass.h (pass_reset_cc_flags): Remove.
15465         (TODO_update_address_taken): New flag.
15466         (pass_simple_dse): Remove.
15467         * ipa-cp.c (ipcp_update_callgraph): Update SSA form.
15468         * params.h (MAX_ALIASED_VOPS): Remove.
15469         (AVG_ALIASED_VOPS): Likewise.
15470         * omp-low.c (expand_omp_taskreg): Update SSA form.
15471         * tree-ssa-dse.c (dse_optimize_stmt): Properly query if the rhs
15472         aliases the lhs in a copy stmt.
15473         * tree-ssa-dse.c (struct address_walk_data): Remove.
15474         (memory_ssa_name_same): Likewise.
15475         (memory_address_same): Likewise.
15476         (get_kill_of_stmt_lhs): Likewise.
15477         (dse_possible_dead_store_p): Simplify, use the oracle.  Handle
15478         unused stores.  Look through PHI nodes into post-dominated regions.
15479         (dse_optimize_stmt): Simplify.  Properly remove stores.
15480         (tree_ssa_dse): Compute dominators.
15481         (execute_simple_dse): Remove.
15482         (pass_simple_dse): Likewise.
15483         * ipa-reference.c (scan_stmt_for_static_refs): Open-code
15484         gimple_loaded_syms and gimple_stored_syms computation.
15485         * toplev.c (dump_memory_report): Dump alias and pta stats.
15486         * tree-ssa-sccvn.c (vn_reference_compute_hash): Simplify.
15487         (vn_reference_eq): Likewise.
15488         (vuses_to_vec, copy_vuses_from_stmt, vdefs_to_vec,
15489         copy_vdefs_from_stmt, shared_lookup_vops, shared_vuses_from_stmt,
15490         valueize_vuses): Remove.
15491         (get_def_ref_stmt_vuses): Simplify.  Rename to ...
15492         (get_def_ref_stmt_vuse): ... this.
15493         (vn_reference_lookup_2): New function.
15494         (vn_reference_lookup_pieces): Use walk_non_aliased_vuses for
15495         walking equivalent vuses.  Simplify.
15496         (vn_reference_lookup): Likewise.
15497         (vn_reference_insert): Likewise.
15498         (vn_reference_insert_pieces): Likewise.
15499         (visit_reference_op_call): Simplify.
15500         (visit_reference_op_load): Likewise.
15501         (visit_reference_op_store): Likewise.
15502         (init_scc_vn): Remove shared_lookup_vuses initialization.
15503         (free_scc_vn): Remove shared_lookup_vuses freeing.
15504         (sort_vuses, sort_vuses_heap): Remove.
15505         (get_ref_from_reference_ops): Export.
15506         * tree-ssa-sccvn.h (struct vn_reference_s): Replace vuses
15507         vector with single vuse pointer.
15508         (vn_reference_lookup_pieces, vn_reference_lookup,
15509         vn_reference_insert, vn_reference_insert_pieces): Adjust prototypes.
15510         (shared_vuses_from_stmt): Remove.
15511         (get_ref_from_reference_ops): Declare.
15512         * tree-ssa-loop-manip.c (slpeel_can_duplicate_loop_p): Adjust.
15513         * tree-ssa-copyrename.c (copy_rename_partition_coalesce): Remove
15514         memory-tag related code.
15515         * tree-ssa-ccp.c (get_symbol_constant_value): Remove memory-tag code.
15516         (likely_value): Add comment, skip static-chain of call statements.
15517         (surely_varying_stmt_p): Adjust.
15518         (gimplify_and_update_call_from_tree): Likewise.
15519         (execute_fold_all_builtins): Do not rebuild alias info.
15520         (gimplify_and_update_call_from_tree): Properly update VOPs.
15521         * tree-ssa-loop-ivopts.c (get_ref_tag): Remove.
15522         (copy_ref_info): Remove memory-tag related code.
15523         * tree-call-cdce.c (tree_call_cdce): Rename the VOP.
15524         * ipa-pure-const.c (check_decl): Remove memory-tag related code.
15525         (check_stmt): Open-code gimple_loaded_syms and gimple_stored_syms
15526         computation.
15527         * tree-ssa-dom.c (gimple_p): Remove typedef.
15528         (eliminate_redundant_computations): Adjust.
15529         (record_equivalences_from_stmt): Likewise.
15530         (avail_expr_hash): Likewise.
15531         (avail_expr_eq): Likewise.
15532         * tree-ssa-propagate.c (update_call_from_tree): Properly update VOPs.
15533         (stmt_makes_single_load): Likewise.
15534         (stmt_makes_single_store): Likewise.
15535         * tree-ssa-alias.c: Rewrite completely.
15536         (debug_memory_partitions, dump_mem_ref_stats, debug_mem_ref_stats,
15537         debug_mem_sym_stats, dump_mem_sym_stats_for_var,
15538         debug_all_mem_sym_stats, debug_mp_info, update_mem_sym_stats_from_stmt,
15539         delete_mem_ref_stats, create_tag_raw, dump_points_to_info,
15540         dump_may_aliases_for, debug_may_aliases_for, new_type_alias):
15541         Remove public functions.
15542         (pass_reset_cc_flags): Remove.
15543         (pass_build_alias): Move ...
15544         * tree-ssa-structalias.c (pass_build_alias): ... here.
15545         * tree-ssa-alias.c (may_be_aliased): Move ...
15546         * tree-flow-inline.h (may_be_aliased): ... here.
15547         tree-ssa-alias.c (struct count_ptr_d, count_ptr_derefs,
15548         count_uses_and_derefs): Move ...
15549         * gimple.c: ... here.
15550         * gimple.h (count_uses_and_derefs): Declare.
15551         * tree-ssa-alias.c (dump_alias_stats, ptr_deref_may_alias_global_p,
15552         ptr_deref_may_alias_decl_p, ptr_derefs_may_alias_p,
15553         same_type_for_tbaa, nonaliasing_component_refs_p, decl_refs_may_alias_p,
15554         indirect_ref_may_alias_decl_p, indirect_refs_may_alias_p,
15555         ref_maybe_used_by_call_p, ref_maybe_used_by_stmt_p,
15556         call_may_clobber_ref_p, stmt_may_clobber_ref_p, maybe_skip_until,
15557         get_continuation_for_phi, walk_non_aliased_vuses, walk_aliased_vdefs):
15558         New functions.
15559         * tree-dfa.c (refs_may_alias_p): Move ...
15560         * tree-ssa-alias.c (refs_may_alias_p): ... here.  Extend.
15561         * tree-ssa-alias.h: New file.
15562         * tree-ssa-sink.c (is_hidden_global_store): Adjust.
15563         (statement_sink_location): Likewise.
15564         * opts.c (decode_options): Do not adjust max-aliased-vops or
15565         avg-aliased-vops values.
15566         * timevar.def (TV_TREE_MAY_ALIAS): Remove.
15567         (TV_CALL_CLOBBER): Likewise.
15568         (TV_FLOW_SENSITIVE): Likewise.
15569         (TV_FLOW_INSENSITIVE): Likewise.
15570         (TV_MEMORY_PARTITIONING): Likewise.
15571         (TV_ALIAS_STMT_WALK): New timevar.
15572         * tree-ssa-loop-ivcanon.c (empty_loop_p): Adjust.
15573         * tree-ssa-address.c (create_mem_ref_raw): Use build6.
15574         (get_address_description): Remove memory-tag related code.
15575         * tree-ssa-ifcombine.c (bb_no_side_effects_p): Adjust.
15576         * treestruct.def (TS_MEMORY_TAG, TS_MEMORY_PARTITION_TAG): Remove.
15577         * tree-eh.c (cleanup_empty_eh): Do not leave stale SSA_NAMEs
15578         and immediate uses in statements.  Document.
15579         * gimple-pretty-print.c (dump_gimple_mem_ops): Adjust.
15580         (dump_symbols): Remove.
15581         (dump_gimple_mem_ops): Do not dump loaded or stored syms.
15582         * alias.c (get_deref_alias_set): New function split out from ...
15583         (get_alias_set): ... here.
15584         * alias.h (get_deref_alias_set): Declare.
15585         * tree-vect-data-refs.c (vect_create_data_ref_ptr): Remove unused
15586         type parameter.  Remove restrict pointer handling.  Create a
15587         ref-all pointer in case type-based alias sets do not conflict.
15588         (vect_analyze_data_refs): Remove SMT related code.
15589         * tree-vect-stmts.c (vectorizable_store): Re-instantiate TBAA assert.
15590         (vectorizable_load): Likewise.
15591         * tree-data-ref.h (struct dr_alias): Remove symbol_tag field.
15592         (DR_SYMBOL_TAG, DR_VOPS): Remove.
15593         * tree-data-ref.c (dr_may_alias_p): Use the alias-oracle.
15594         Ignore vops and SMTs.
15595         (dr_analyze_alias): Likewise..
15596         (free_data_ref): Likewise.
15597         (create_data_ref): Likewise.
15598         (analyze_all_data_dependences): Likewise.
15599         (get_references_in_stmt): Adjust.
15600         * tree-flow-inline.h (gimple_aliases_computed_p,
15601         gimple_addressable_vars, gimple_call_clobbered_vars,
15602         gimple_call_used_vars, gimple_global_var, may_aliases, memory_partition,
15603         factoring_name_p, mark_call_clobbered, clear_call_clobbered,
15604         compare_ssa_operands_equal, symbol_mem_tag, set_symbol_mem_tag,
15605         gimple_mem_ref_stats): Remove.
15606         (gimple_vop): New function.
15607         (op_iter_next_use): Remove vuses and mayuses cases.
15608         (op_iter_next_def): Remove vdefs case.
15609         (op_iter_next_tree): Remove vuses, mayuses and vdefs cases.
15610         (clear_and_done_ssa_iter): Do not set removed fields.
15611         (op_iter_init): Likewise.  Skip vuse and/or vdef if requested.
15612         Assert we are not iterating over vuses or vdefs if not also
15613         iterating over uses or defs.
15614         (op_iter_init_use): Likewise.
15615         (op_iter_init_def): Likewise.
15616         (op_iter_next_vdef): Remove.
15617         (op_iter_next_mustdef): Likewise.
15618         (op_iter_init_vdef): Likewise.
15619         (compare_ssa_operands_equal): Likewise.
15620         (link_use_stmts_after): Handle vuse operand.
15621         (is_call_used): Use is_call_clobbered.
15622         (is_call_clobbered): Global variables are always call clobbered,
15623         query the call-clobbers bitmap.
15624         (mark_call_clobbered): Ignore global variables.
15625         (clear_call_clobbered): Likewise.
15626         * tree-ssa-coalesce.c (create_outofssa_var_map): Adjust
15627         virtual operands sanity check.
15628         * tree.def (NAME_MEMORY_TAG, SYMBOL_MEMORY_TAG, MEMORY_PARTITION_TAG):
15629         Remove.
15630         (TARGET_MEM_REF): Remove TMR_TAG operand.
15631         * tree-dfa.c (add_referenced_var): Initialize call-clobber state.
15632         Remove call-clobber related code.
15633         (remove_referenced_var): Likewise.  Do not clear mpt or symbol_mem_tag.
15634         (dump_variable): Do not dump SMTs, memory stats, may-aliases or
15635         partitions or escape reason.
15636         (get_single_def_stmt, get_single_def_stmt_from_phi,
15637         get_single_def_stmt_with_phi): Remove.
15638         (dump_referenced_vars): Tidy.
15639         (get_ref_base_and_extent): Allow bare decls.
15640         (collect_dfa_stats): Adjust.
15641         * graphite.c (rename_variables_in_stmt): Adjust.
15642         (graphite_copy_stmts_from_block): Likewise.
15643         (translate_clast): Likewise.
15644         * tree-ssa-pre.c (struct bb_bitmap_sets): Add expr_dies bitmap.
15645         (EXPR_DIES): New.
15646         (translate_vuse_through_block): Use the oracle.
15647         (phi_translate_1): Adjust.
15648         (value_dies_in_block_x): Use the oracle.  Cache the outcome
15649         in EXPR_DIES.
15650         (valid_in_sets): Check if the VUSE for
15651         a REFERENCE is available.
15652         (eliminate): Do not remove stmts during elimination,
15653         instead queue and remove them afterwards.
15654         (do_pre): Do not rebuild alias info.
15655         (pass_pre): Run TODO_rebuild_alias before PRE.
15656         * tree-ssa-live.c (remove_unused_locals): Remove memory-tag code.
15657         * tree-sra.c (sra_walk_function): Use gimple_references_memory_p.
15658         (mark_all_v_defs_stmt): Remove.
15659         (mark_all_v_defs_seq): Adjust.
15660         (sra_replace): Likewise.
15661         (scalarize_use): Likewise.
15662         (scalarize_copy): Likewise.
15663         (scalarize_init): Likewise.
15664         (scalarize_ldst): Likewise.
15665         (todoflags): Remove.
15666         (tree_sra): Do not rebuild alias info.
15667         (tree_sra_early): Adjust.
15668         (pass_sra): Run TODO_update_address_taken before SRA.
15669         * tree-predcom.c (set_alias_info): Remove.
15670         (prepare_initializers_chain): Do not call it.
15671         (mark_virtual_ops_for_renaming): Adjust.
15672         (mark_virtual_ops_for_renaming_list): Remove.
15673         (initialize_root_vars): Adjust.
15674         (initialize_root_vars_lm): Likewise.
15675         (prepare_initializers_chain): Likewise.
15676         * tree-ssa-copy.c (may_propagate_copy): Remove memory-tag related code.
15677         (may_propagate_copy_into_stmt): Likewise.
15678         (merge_alias_info): Do nothing for now.
15679         (propagate_tree_value_into_stmt): Adjust.
15680         (stmt_may_generate_copy): Likewise.
15681         * tree-ssa-forwprop.c (tidy_after_forward_propagate_addr): Do
15682         not mark symbols for renaming.
15683         (forward_propagate_addr_expr): Match up push/pop_stmt_changes
15684         with the same statement, make sure to update the new pointed-to one.
15685         * tree-ssa-dce.c (eliminate_unnecessary_stmts): Do not copy
15686         call statements, do not mark symbols for renaming.
15687         (mark_operand_necessary): Dump something.
15688         (ref_may_be_aliased): New function.
15689         (mark_aliased_reaching_defs_necessary_1): New helper function.
15690         (mark_aliased_reaching_defs_necessary): Likewise.
15691         (mark_all_reaching_defs_necessary_1): Likewise.
15692         (mark_all_reaching_defs_necessary): Likewise.
15693         (propagate_necessity): Do not process virtual PHIs.  For
15694         non-aliased loads mark all reaching definitions as necessary.
15695         For aliased loads and stores mark the immediate dominating
15696         aliased clobbers as necessary.
15697         (visited): New global static.
15698         (perform_tree_ssa_dce): Free visited bitmap after propagating
15699         necessity.
15700         (remove_dead_phis): Perform simple dead virtual PHI removal.
15701         (remove_dead_stmt): Properly unlink virtual operands when
15702         removing stores.
15703         (eliminate_unnecessary_stmts): Schedule PHI removal after
15704         stmt removal.
15705         * tree-ssa-ter.c (is_replaceable_p): Adjust.
15706         (process_replaceable): Likewise.
15707         (find_replaceable_in_bb): Likewise.
15708         * tree-ssa.c (verify_ssa_name): Verify all VOPs are
15709         based on the single gimple vop.
15710         (verify_flow_insensitive_alias_info): Remove.
15711         (verify_flow_sensitive_alias_info): Likewise.
15712         (verify_call_clobbering): Likewise.
15713         (verify_memory_partitions): Likewise.
15714         (verify_alias_info): Likewise.
15715         (verify_ssa): Adjust..
15716         (execute_update_addresses_taken): Export.  Update SSA
15717         manually.  Optimize only when optimizing.  Use a local bitmap.
15718         (pass_update_address_taken): Remove TODO_update_ssa, add
15719         TODO_dump_func.
15720         (pass_update_address_taken): Just use TODO_update_address_taken.
15721         (init_tree_ssa): Do not initialize addressable_vars.
15722         (verify_ssa): Verify new VUSE / VDEF properties.
15723         Verify that all stmts definitions have the stmt as SSA_NAME_DEF_STMT.
15724         Do not call verify_alias_info.
15725         (delete_tree_ssa): Clear the VUSE, VDEF operands.
15726         Do not free the loaded and stored syms bitmaps.  Reset the escaped
15727         and callused solutions.  Do not free addressable_vars.
15728         Remove memory-tag related code.
15729         (warn_uninitialized_var): Aliases are always available.
15730         * tree-ssa-loop-prefetch.c (gather_memory_references): Adjust.
15731         * lambda-code.c (can_put_in_inner_loop): Adjust.
15732         (can_put_after_inner_loop): Likewise.
15733         (perfect_nestify): Likewise.
15734         * tree-vect-stmts.c (vect_stmt_relevant_p): Adjust.
15735         (vect_gen_widened_results_half): Remove CALL_EXPR handling.
15736         (vectorizable_conversion): Do not mark symbols for renaming.
15737         * tree-inline.c (remap_gimple_stmt): Clear VUSE/VDEF.
15738         (expand_call_inline): Unlink the calls virtual operands before
15739         replacing it.
15740         (tree_function_versioning): Do not call update_ssa if we are not
15741         updating clones.  Simplify.
15742         * tree-ssa-phiprop.c (phivn_valid_p): Adjust.
15743         (propagate_with_phi): Likewise..
15744         * tree-outof-ssa.c (create_temp): Remove memory tag and call
15745         clobber code.  Assert we are not aliased or global.
15746         * tree-flow.h: Include tree-ssa-alias.h
15747         (enum escape_type): Remove.
15748         (struct mem_sym_stats_d): Likewise.
15749         (struct mem_ref_stats_d): Likewise.
15750         (struct gimple_df): Add vop member.  Remove global_var,
15751         call_clobbered_vars, call_used_vars, addressable_vars,
15752         aliases_compted_p and mem_ref_stats members.  Add syms_to_rename,
15753         escaped and callused members.
15754         (struct ptr_info_def): Remove all members, add points-to solution
15755         member pt.
15756         (struct var_ann_d): Remove in_vuse_list, in_vdef_list,
15757         call_clobbered, escape_mask, mpt and symbol_mem_tag members.
15758         * Makefile.in (TREE_FLOW_H): Add tree-ssa-alias.h.
15759         (tree-ssa-structalias.o): Remove tree-ssa-structalias.h.
15760         (tree-ssa-alias.o): Likewise.
15761         (toplev.o): Add tree-ssa-alias.h
15762         (GTFILES): Remove tree-ssa-structalias.h, add tree-ssa-alias.h.
15763         * gimple.c (gimple_set_bb): Fix off-by-one error.
15764         (is_gimple_reg): Do not handle memory tags.
15765         (gimple_copy): Also copy virtual operands.
15766         Delay updating the statement.  Do not reset loaded and stored syms.
15767         (gimple_set_stored_syms): Remove.
15768         (gimple_set_loaded_syms): Likewise.
15769         (gimple_call_copy_skip_args): Copy the virtual operands
15770         and mark the new statement modified.
15771         * tree-ssa-structalias.c (may_alias_p): Remove.
15772         (set_uids_in_ptset): Take the alias set to prune with as
15773         parameter.  Fold in the alias test of may_alias_p.
15774         (compute_points_to_sets): Compute whether a ptr is dereferenced
15775         in a local sbitmap.
15776         (process_constraint): Deal with &ANYTHING on the lhs, reject all
15777         other ADDRESSOF constraints on the lhs.
15778         (get_constraint_for_component_ref): Assert that we don't get
15779         ADDRESSOF constraints from the base of the reference.
15780         Properly generate UNKNOWN_OFFSET for DEREF if needed.
15781         (struct variable_info): Remove collapsed_to member.
15782         (get_varinfo_fc): Remove.
15783         (new_var_info): Do not set collapsed_to.
15784         (dump_constraint): Do not follow cycles.
15785         (dump_constraint_graph): Likewise.
15786         (build_pred_graph): Likewise.
15787         (build_succ_graph): Likewise.
15788         (rewrite_constraints): Likewise.
15789         (do_simple_structure_copy): Remove.
15790         (do_rhs_deref_structure_copy): Remove.
15791         (do_lhs_deref_structure_copy): Remove.
15792         (collapse_rest_of_var): Remove.
15793         (do_structure_copy): Re-implement.
15794         (pta_stats): New global variable.
15795         (dump_pta_stats): New function.
15796         (struct constraint_expr): Make offset signed.
15797         (UNKNOWN_OFFSET): Define special value.
15798         (dump_constraint): Dump UNKNOWN_OFFSET as UNKNOWN.
15799         (solution_set_expand): New helper function split out from ...
15800         (do_sd_constraint): ... here.
15801         (solution_set_add): Handle UNKNOWN_OFFSET.  Handle negative offsets.
15802         (do_ds_constraint): Likewise.
15803         (do_sd_constraint): Likewise.  Do not special-case ESCAPED = *ESCAPED
15804         and CALLUSED = *CALLUSED.
15805         (set_union_with_increment): Make inc argument signed.
15806         (type_safe): Remove.
15807         (get_constraint_for_ptr_offset): Handle unknown and negative
15808         constant offsets.
15809         (first_vi_for_offset): Handle offsets before start.  Bail
15810         out early for offsets beyond the variable extent.
15811         (first_or_preceding_vi_for_offset): New function.
15812         (init_base_vars): Add ESCAPED = ESCAPED + UNKNOWN_OFFSET constraint.
15813         Together with ESCAPED = *ESCAPED this properly computes reachability.
15814         (find_what_var_points_to): New function.
15815         (find_what_p_points_to): Implement in terms of find_what_var_points_to.
15816         (pt_solution_reset, pt_solution_empty_p, pt_solution_includes_global,
15817         pt_solution_includes_1, pt_solution_includes, pt_solutions_intersect_1,
15818         pt_solutions_intersect): New functions.
15819         (compute_call_used_vars): Remove.
15820         (compute_may_aliases): New main entry into PTA computation.
15821         * gimple.h (gimple_p): New typedef.
15822         (struct gimple_statement_base): Remove references_memory_p.
15823         (struct gimple_statement_with_memory_ops_base): Remove
15824         vdef_ops, vuse_ops, stores and loads members.  Add vdef and vuse
15825         members.
15826         (gimple_vuse_ops, gimple_set_vuse_ops, gimple_vdef_ops,
15827         gimple_set_vdef_ops, gimple_loaded_syms, gimple_stored_syms,
15828         gimple_set_references_memory): Remove.
15829         (gimple_vuse_op, gimple_vdef_op, gimple_vuse, gimple_vdef,
15830         gimple_vuse_ptr, gimple_vdef_ptri, gimple_set_vuse, gimple_set_vdef):
15831         New functions.
15832         * tree-cfg.c (move_block_to_fn): Fix off-by-one error.
15833         (verify_expr): Allow RESULT_DECL.
15834         (gimple_duplicate_bb): Do not copy virtual operands.
15835         (gimple_duplicate_sese_region): Adjust.
15836         (gimple_duplicate_sese_tail): Likewise.
15837         (mark_virtual_ops_in_region): Remove.
15838         (move_sese_region_to_fn): Do not call it.
15839         * passes.c (init_optimization_passes): Remove pass_reset_cc_flags
15840         and pass_simple_dse.
15841         (execute_function_todo): Handle TODO_update_address_taken,
15842         call execute_update_addresses_taken for TODO_rebuild_alias.
15843         (execute_todo): Adjust.
15844         (execute_one_pass): Init dump files early.
15845         * ipa-struct-reorg.c (finalize_var_creation): Do not mark vars
15846         call-clobbered.
15847         (create_general_new_stmt): Clear vops.
15848         * tree-ssa-reassoc.c (get_rank): Adjust.
15849         * tree-vect-slp.c (vect_create_mask_and_perm): Do not mark
15850         symbols for renaming.
15851         * params.def (PARAM_MAX_ALIASED_VOPS): Remove.
15852         (PARAM_AVG_ALIASED_VOPS): Likewise.
15853         * tree-ssanames.c (init_ssanames): Allocate SYMS_TO_RENAME.
15854         (duplicate_ssa_name_ptr_info): No need to copy the shared bitmaps.
15855         * tree-ssa-operands.c: Simplify for new virtual operand representation.
15856         (operand_build_cmp, copy_virtual_operands,
15857         create_ssa_artificial_load_stmt, add_to_addressable_set,
15858         gimple_add_to_addresses_taken): Remove public functions.
15859         (unlink_stmt_vdef): New function.
15860
15861 2009-04-03  Alan Modra  <amodra@bigpond.net.au>
15862
15863         * config.gcc (powerpc-*-linux*): Merge variants.
15864
15865 2009-04-02  Chao-ying Fu  <fu@mips.com>
15866             James Grosbach  <james.grosbach@microchip.com>
15867
15868         * config/mips/mips.c (mips_frame_info): Add acc_mask, num_acc,
15869         num_cop0_regs, acc_save_offset, cop0_save_offset, acc_sp_offset,
15870         cop0_sp_offset.
15871         (machine_function): Add interrupt_handler_p, use_shadow_register_set_p,
15872         keep_interrupts_masked_p, use_debug_exception_return_p.
15873         (mips_attribute_table): Add interrupt, use_shadow_register_set,
15874         keep_interrupts_masked, use_debug_exception_return.
15875         (mips_interrupt_type_p, mips_use_shadow_register_set_p,
15876         mips_keep_interrupts_masked_p, mips_use_debug_exception_return_p):
15877         New functions.
15878         (mips_function_ok_for_sibcall): Return false for interrupt handlers.
15879         (mips_print_operand): Process COP0 registers to print $0 .. $31
15880         correctly for GAS to process.
15881         (mips_interrupt_extra_call_saved_reg_p): New function.
15882         (mips_cfun_call_saved_reg_p): For interrupt handlers, we need to check
15883         extra registers.
15884         (mips_cfun_might_clobber_call_saved_reg_p): Likewise.
15885         (mips_compute_frame_info): Add supports for interrupt context that
15886         includes doubleword accumulators and COP0 registers.
15887         (mips_for_each_saved_acc): New function.
15888         (mips_for_each_saved_gpr_and_fpr): Change the function name from
15889         mips_for_each_saved_reg.
15890         (mips_save_reg): Save accumulators.
15891         (mips_kernel_reg_p): A new for_each_rtx callback.
15892         (mips_expand_prologue): Support interrupt handlers.
15893         (mips_restore_reg): Restore accumulators.
15894         (mips_expand_epilogue): Support interrupt handlers.
15895         (mips_can_use_return_insn): Return false for interrupt handlers.
15896         (mips_epilogue_uses): New function.
15897         * config/mips/mips.md (UNSPEC_ERET, UNSPEC_DERET, UNSPEC_DI,
15898         UNSPEC_EHB, UNSPEC_RDPGPR, UNSPEC_COP0): New UNSPEC.
15899         (mips_eret, mips_deret, mips_di, mips_ehb, mips_rdpgpr,
15900         cop0_move): New instructions.
15901         * config/mips/mips-protos.h (mips_epilogue_uses): Declare.
15902         * config/mips/mips.h (K0_REG_NUM, K1_REG_NUM, KERNEL_REG_P): New
15903         defines.
15904         (COP0_STATUS_REG_NUM, COP0_CAUSE_REG_NUM, COP0_EPC_REG_NUM):
15905         New defines.
15906         (CAUSE_IPL, SR_IPL, SR_EXL, SR_IE): New defines.
15907         (MIPS_PROLOGUE_TEMP_REGNUM, MIPS_EPILOGUE_TEMP_REGNUM): For
15908         interrupt handlers, we use K0 as the temporary register.
15909         (EPILOGUE_USES): Change to a function call.
15910         * config/mips/sde.h (MIPS_EPILOGUE_TEMP_REGNUM): For interrupt
15911         handlers, we use K0 as the temporary register.
15912
15913         * doc/extend.texi (Function Attributes): Document interrupt,
15914         use_shadow_register_set, keep_interrupts_masked,
15915         use_debug_exception_return for MIPS attributes.
15916
15917 2009-04-03  Alan Modra  <amodra@bigpond.net.au>
15918
15919         * config.gcc (powerpc64-*-gnu*): Add rs6000/default64.h to tm_file.
15920         Remove a number of t-files from tmake_file.
15921         * config/rs6000/sysv4.opt (mprototype): Name variable target_prototype.
15922         * config/rs6000/sysv4.h (TARGET_PROTOTYPE): Define.
15923         * config/rs6000/linux64.h (SUBSUBTARGET_OVERRIDE_OPTIONS): Set
15924         target_prototype, not TARGET_PROTOTYPE.
15925         (LINK_OS_GNU_SPEC): Define.
15926         * config/rs6000/t-linux64 (LIB2FUNCS_EXTRA): Delete tramp.S
15927         and darwin-ldoubdle.c.
15928
15929 2009-04-02  Michael Meissner  <meissner@linux.vnet.ibm.com>
15930
15931         PR driver/39293
15932         * gcc.c (save_temps_flag): Add support for -save-temps=obj.
15933         (cpp_options): Ditto.
15934         (default_compilers): Ditto.
15935         (display_help): Ditto.
15936         (process_command): Ditto.
15937         (do_spec_1): Ditto.
15938         (set_input): Use lbasename instead of duplicate code.
15939         (save_temps_prefix): New static for -save-temps=obj.
15940         (save_temps_length): Ditto.
15941
15942         * doc/invoke.texi (-save-temps=obj): Document new variant to
15943         -save-temps switch.
15944
15945 2009-04-02  Jeff Law  <law@redhat.com>
15946
15947         * reload1.c (fixup_eh_region_notes): Remove write-only "trap_count"
15948         variable.
15949
15950 2009-04-02  H.J. Lu  <hongjiu.lu@intel.com>
15951
15952         * configure.ac: Support -Bstatic/-Bdynamic for linker version > 2.
15953         * configure: Regenerated.
15954
15955 2009-04-02  Rafael Avila de Espindola  <espindola@google.com>
15956
15957         * c-decl.c (merge_decls): Make sure newdecl and olddecl don't
15958         share the argument list.
15959
15960 2009-04-02  Rafael Avila de Espindola  <espindola@google.com>
15961
15962         Merge
15963
15964         2009-02-12  Diego Novillo  <dnovillo@google.com>
15965
15966         * varpool.c (debug_varpool): New.
15967         * cgraph.h (debug_varpool): Declare.
15968
15969 2009-04-02  Jan Hubicka  <jh@suse.cz>
15970
15971         * passes.c (init_optimization_passes): Remove two copies of ehcleanup
15972         pass.
15973
15974 2009-04-02  H.J. Lu  <hongjiu.lu@intel.com>
15975
15976         * config/i386/i386.c (ix86_abi): Move initialization to ...
15977         (override_options): Here.
15978
15979 2009-04-02  Christian Bruel  <christian.bruel@st.com>
15980
15981         * config/sh/sh.c (sh_dwarf_register_span): New function.
15982         (TARGET_DWARF_REGISTER_SPAN): Define.
15983         * config/sh/sh-protos.h (sh_dwarf_register_span): Declare.
15984
15985 2009-04-02  Ira Rosen  <irar@il.ibm.com>
15986
15987         PR tree-optimization/39595
15988         * tree-vect-slp.c (vect_build_slp_tree): Check that the size of
15989         interleaved loads group is not  greater than the SLP group size.
15990
15991 2009-04-02  Rafael Avila de Espindola  <espindola@google.com>
15992
15993         * builtins.c (is_builtin_name): New.
15994         (called_as_built_in): Use is_builtin_name.
15995         * tree.h (is_builtin_name): New.
15996         * varasm.c (incorporeal_function_p): Use is_builtin_name
15997
15998 2009-04-02  Andrew Stubbs  <ams@codesourcery.com>
15999
16000         * config/sh/linux-unwind.h: Disable when inhibit_libc is defined.
16001
16002 2009-04-02  Dodji Seketeli  <dodji@redhat.com>
16003
16004         PR c++/26693
16005         * c-decl.c (clone_underlying_type): Move this ...
16006         * c-common.c (set_underlying_type): ... here.
16007         Also, make sure the function properly sets TYPE_STUB_DECL() on
16008         the newly created typedef variant type.
16009         * c-common.h (is_typedef_decl, set_underlying_type): Declare ...
16010         * c-common.c (is_typedef_decl, set_underlying_type): ... new entry
16011         points.
16012
16013 2009-04-02  Richard Guenther  <rguenther@suse.de>
16014
16015         PR tree-optimization/37221
16016         * tree-flow.h (degenerate_phi_result): Declare.
16017         * tree-ssa-dom.c (degenerate_phi_result): Export.
16018         * tree-scalar-evolution.c (analyze_initial_condition): If
16019         the initial condition is defined by a degenerate PHI node
16020         use the degenerate value.
16021
16022 2009-04-01  Eric Botcazou  <ebotcazou@adacore.com>
16023
16024         PR rtl-optimization/39588
16025         * combine.c (merge_outer_ops): Do not set the constant when this
16026         is not necessary.
16027         (simplify_shift_const_1): Do not modify it either in this case.
16028
16029 2009-04-01  Steven Bosscher  <steven@gcc.gnu.org>
16030
16031         * config/ia64/ia64.c (ia64_handle_option): Inform user that Itanium1
16032         tuning is deprecated if -mtune value is set to an Itanium1 variant.
16033
16034 2009-04-01  Janis Johnson  <janis187@us.ibm.com>
16035
16036         PR c/29027
16037         * c-lex.c (interpret_float): Default (no suffix) is double.
16038
16039 2009-04-1  Xinliang David Li  <davidxl@google.com>
16040
16041         * config/i386/i386.c (legitimate_constant_p): Recognize
16042         all one vector constant.
16043
16044 2009-04-01  Jan-Benedict Glaw  <jbglaw@jbglaw-dev.homezone.telefonica.de>
16045
16046         * config/vax/vax.c: Add #includes to silence warnings.
16047         Change #include order to silence two warnings.
16048
16049 2009-04-01  Jan-Benedict Glaw  <jbglaw@jbglaw-dev.homezone.telefonica.de>
16050
16051         * config/vax/linux.h (TARGET_DEFAULT): Add the MASK_QMATH flag bit.
16052         (ASM_SPEC): Pass -k to the assembler for PIC code.
16053
16054 2009-04-01  Jan-Benedict Glaw  <jbglaw@jbglaw-dev.homezone.telefonica.de>
16055
16056         * config.gcc: Add vax-*-linux* to the switch.
16057         * config/vax/linux.h: New file. (TARGET_VERSION,
16058         TARGET_OS_CPP_BUILTINS, TARGET_DEFAULT, CPP_SPEC, LINK_SPEC): Define.
16059
16060 2009-04-01  Jan-Benedict Glaw  <jbglaw@jbglaw-dev.homezone.telefonica.de>
16061
16062         * config/vax/vax.c (vax_output_int_move, adjacent_operands_p):
16063         Use predicate macros instead of GET_CODE() == foo.
16064         * config/vax/vax.md (movsi_2, movstrictqi, and<mode>3, ashrsi3,
16065         ashlsi3, rotrsi3, <unnamed>): Likewise.
16066
16067 2009-04-01  Jan-Benedict Glaw  <jbglaw@jbglaw-dev.homezone.telefonica.de>
16068
16069         * config/vax/builtins.md (jbbssiqi, jbbssihi, jbbssisi, jbbcciqi,
16070         jbbccihi, jbbccisi): Remova trailing whitespace.
16071         * config/vax/constraints.md: Likewise.
16072         * config/vax/elf.h: (ASM_PREFERRED_EH_DATA_FORMAT): Likewise.
16073         * config/vax/openbsd1.h (OBSD_OLD_GAS): Likewise.
16074         * config/vax/predicates.md: Likewise.
16075         * config/vax/vax.c (print_operand_address, vax_output_int_move,
16076         vax_expand_addsub_di_operands, adjacent_operands_p): Likewise.
16077         * config/vax/vax.h: Likewise.
16078         * config/vax/vax.md (nonlocal_goto): Likewise.
16079
16080 2009-04-01  Jan-Benedict Glaw  <jbglaw@jbglaw-dev.homezone.telefonica.de>
16081
16082         * config/vax/vax.c (vax_float_literal, vax_output_int_move)
16083         (indirectable_address_p, adjacent_operands_p): Add spaces around
16084         braces.
16085         * config/vax/vax-protos.h (adjacent_operands_p): Likewise.
16086
16087 2009-04-01  Jan-Benedict Glaw  <jbglaw@jbglaw-dev.homezone.telefonica.de>
16088
16089         * config/vax/vax.c (legitimate_constant_address_p,
16090         legitimate_constant_p, indirectable_address_p, nonindexed_address_p,
16091         index_term_p, reg_plus_index_p, legitimate_address_p,
16092         vax_mode_dependent_address_p): Update comments to match functions
16093         modified by the recent int->bool conversion.
16094
16095 2009-04-01  Jan-Benedict Glaw  <jbglaw@jbglaw-dev.homezone.telefonica.de>
16096
16097         * config/vax/builtins.md: Update copyright message.
16098         * config/vax/constraints.md: Likewise.
16099         * config/vax/netbsd-elf.h: Likewise.
16100         * config/vax/predicates.md: Likewise.
16101         * config/vax/vax-protos.h: Likewise.
16102         * config/vax/vax.c: Likewise.
16103         * config/vax/vax.h: Likewise.
16104         * config/vax/vax.md: Likewise.
16105         * config/vax/vax.opt: Likewise.
16106
16107 2009-04-01  Jan-Benedict Glaw  <jbglaw@jbglaw-dev.homezone.telefonica.de>
16108
16109         * config/vax/builtins.md (ffssi2, ffssi2_internal,
16110         sync_lock_test_and_set<mode>, sync_lock_release<mode>): Fix indention.
16111         * config/vax/constraints.md (B, R): Likewise.
16112         * config/vax/predicates.md (external_memory_operand,
16113         nonimmediate_addsub_di_operand): Likewise.
16114         * config/vax/vax.c (vax_output_int_add): Likewise.
16115         * config/vax/vax.md (movsi, movsi_2, mov<mode>, call_value,
16116         untyped_call): Likewise.
16117
16118 2009-04-01  Matt Thomas  <matt@3am-software.com>
16119
16120         * config/vax/predicates.md: New file.
16121         (symbolic_operand, local_symbolic_operand, external_symbolic_operand,
16122         external_const_operand, nonsymbolic_operand, external_memory_operand,
16123         indirect_memory_operand, indexed_memory_operand,
16124         illegal_blk_memory_operand, illegal_addsub_di_memory_operand,
16125         nonimmediate_addsub_di_operand, general_addsub_di_operand): New
16126         predicate.
16127         * config/vax/constraints.md: New file.
16128         (Z0, U06,  U08, U16, CN6, S08, S16, I, J, K, L, M, N, O, G, Q, B, R, T):
16129         New constraint.
16130         * config/vax/builtins.md: New file.
16131         (ffssi2, ffssi2_internal, sync_lock_test_and_set<mode>, jbbssiqi,
16132         jbbssihi, jbbssisi, sync_lock_release<mode>, jbbcciqi, jbbccihi,
16133         jbbccisi): Define.
16134         * config/vax/vax.opt (mqmath): Add option.
16135         * config/vax/vax.md (isfx): Extend with DI.
16136         (VAXintQH, VAXintQHSD): Define.
16137         (tst<mode>, cmp<mode>, *bit<mode>, movmemhi1, truncsiqi2, truncsihi2,
16138         mulsidi3, add<mode>3, sub<mode>, mul<mode>3, div<mode>3, and<mode>,
16139         and<mode>_const_int, ior<mode>3, xor<mode>3, neg<mode>2,
16140         one_cmpl<mode>2, ashlsi3, lshrsi3, rotlsi3): Update constraints.
16141         (movdi): Update constraints and use vax_output_int_move().
16142         (movsi, movsi_2, pushlclsymreg, pushextsymreg, movlclsymreg,
16143         movextsymreg, adddi3, adcdi3, subdi3, sbcdi3, pushextsym, movextsym,
16144         pushlclsym, movlclsym, movaddr<mode>, pushaddr<mode>,
16145         nonlocal_goto): New.
16146         (mov<mode>): Extend accepted operand types.
16147         (subdi3_old): Rename from subdi3, change update constraints and use
16148         a new implementation.
16149         * config/vax/vax.h (PCC_BITFIELD_TYPE_MATTERS): Add space.
16150         (FRAME_POINTER_CFA_OFFSET, IRA_COVER_CLASSES, CLASS_MAX_NREGS,
16151         MOVE_RATIO, CLEAR_RATIO): Define.
16152         (REG_CLASS_FROM_LETTER, CONST_OK_FOR_LETTER_P,
16153         CONST_DOUBLE_OK_FOR_LETTER_P, EXTRA_CONSTRAINT): Delete.
16154         (PRINT_OPERAND): Redefine using a function instead of inlined code.
16155         * config/vax/vax.c (TARGET_BUILTIN_SETJMP_FRAME_VALUE): Define.
16156         (split_quadword_operands): Make static and really allow variable
16157         splitting.
16158         (print_operand_address): Update for PIC generation.
16159         (print_operand, vax_builtin_setjmp_frame_value, vax_output_int_subtract,
16160         indexable_address_p, fixup_mathdi_operand,
16161         vax_expand_addsub_di_operands, adjacent_operands_p): New.
16162         (vax_float_literal, legitimate_constant_p,
16163         indirectable_constant_address_p, index_term_p,
16164         reg_plus_index_p): Return bool instead of int.
16165         (vax_rtx_costs): Fix cost for CONST_INT, indent and use HOST_WIDE_INT
16166         where needed.
16167         (vax_output_int_move, vax_output_int_add): Extend to allow PIC
16168         generation.
16169         (vax_output_conditional_branch): Indent.
16170         (legitimate_constant_address_p, indirectable_constant_address_p,
16171         indirectable_address_p, nonindexed_address_p, legitimate_address_p,
16172         vax_mode_dependent_address_p): Return bool instead of int, update for
16173         PIC generation.
16174         * config/vax/vax-protos.h (legitimate_constant_address_p,
16175         legitimate_constant_p, legitimate_address_p,
16176         vax_mode_dependent_address_p): Change declaration to bool.
16177         (legitimate_pic_operand_p, adjacent_operands_p, print_operand,
16178         vax_expand_addsub_di_operands, vax_output_int_subtract,
16179         vax_output_movmemsi): Declare.
16180         (split_quadword_operands, vax_float_literal): Delete declaration.
16181         * config/vax/netbsd-elf.h (CC1_SPEC, CC1PLUS_SPEC) Define.
16182         * config/vax/elf.h (NO_EXTERNAL_INDIRECT_ADDRESS,
16183         VAX_CC1_AND_CC1PLUS_SPEC, ASM_PREFERRED_EH_DATA_FORMAT,
16184         ASM_OUTPUT_DWARF_PCREL): Define.
16185         (ASM_SPEC): Change definition to allow PIC generation.
16186
16187 2009-04-01  Steve Ellcey  <sje@cup.hp.com>
16188
16189         * doc/sourcebuild.texi: Update front-end requirements.
16190
16191 2009-04-01  Jakub Jelinek  <jakub@redhat.com>
16192
16193         PR target/39226
16194         * config/rs6000/rs6000.md (andsi3_internal5_nomc,
16195         anddi3_internal2_nomc, anddi3_internal3_nomc): Removed.
16196         (booldi3_internal3): Use boolean_or_operator instead of
16197         boolean_operator.
16198
16199 2009-04-01  Joseph Myers  <joseph@codesourcery.com>
16200
16201         PR c/39605
16202         * c-decl.c (grokdeclarator): Pedwarn for file-scope array
16203         declarator whose size is not an integer constant expression but
16204         folds to an integer constant, then treat it as a constant
16205         subsequently.
16206
16207 2009-04-01  Richard Guenther  <rguenther@suse.de>
16208
16209         * fold-const.c (fold_plusminus_mult_expr): Do not fold
16210         i * 4 + 2 to (i * 2 + 1) * 2.
16211
16212 2009-04-01  Jakub Jelinek  <jakub@redhat.com>
16213
16214         PR c/37772
16215         * c-parser.c (c_parser_asm_statement): Skip until close paren and
16216         return if c_parser_asm_string_literal returned NULL.
16217
16218 2009-04-01  Nick Clifton  <nickc@redhat.com>
16219
16220         * config/m32c/m32c.h (LIBGCC2_UNITS_PER_WORD): Define if not
16221         already defined.
16222         * config/m32c/t-m32c (LIB2FUNCS_EXTRA): Add m32c-lib2-trapv.c.
16223         * config/m32c/m32c-lib2.c: Remove unused typedefs.  Rename the
16224         other typedefs to avoid conflicts with libgcc2.c.  Define labels
16225         to gain 16-bit bit-manipulation functions from libgcc2.c and then
16226         include it.
16227         * config/m32c/m32c-lib2-trapv.c: New file.  Define labels
16228         to gain 16-bit trapping arithmetic functions from libgcc2.c and
16229         then include it.
16230
16231 2009-04-01  Rafael Avila de Espindola  <espindola@google.com>
16232
16233         * varasm.c (default_function_rodata_section): Declare DOT as
16234         const char*.
16235
16236 2009-04-01  Kai Tietz  <kai.tietz@onevision.com>
16237             Andrey Galkin  <agalkin@hypercom.com>
16238
16239         PR/39492
16240         * config/i386/host-mingw32.c (mingw32_gt_pch_use_address):
16241         Make object_name unique for each process.
16242
16243 2009-04-01  Jakub Jelinek  <jakub@redhat.com>
16244
16245         PR other/39591
16246         * omp-low.c (remove_exit_barrier): Don't optimize if there are any
16247         addressable variables in the parallel that could go out of scope while
16248         running queued tasks.
16249
16250 2009-04-01  Anatoly Sokolov  <aesok@post.ru>
16251
16252         * config/avr/avr.h (avr_case_values_threshold): Remove declaration.
16253         (CASE_VALUES_THRESHOLD): Redefine.
16254         * config/avr/avr.c (avr_override_options): Remove initialization of
16255         avr_case_values_threshold variable.
16256         (avr_case_values_threshold): Remove variable. Add new function.
16257         * config/avr/avr-protos.h (avr_case_values_threshold): Declare.
16258         * config/avr/avr.opt (mno-tablejump): Remove option.
16259         * doc/invoke.texi (AVR Options): Remove -mno-tablejump.
16260
16261 2009-04-01  DJ Delorie  <dj@redhat.com>
16262
16263         * varasm.c (default_function_rodata_section): Don't assume
16264         anything about where the first '.' in the section name is.
16265
16266 2009-04-01  Alan Modra  <amodra@bigpond.net.au>
16267
16268         * config/rs6000/rs6000.c (rs6000_emit_stack_reset): Delete redundant
16269         rs6000_emit_stack_tie.
16270
16271 2009-03-31  Ian Lance Taylor  <iant@google.com>
16272
16273         * tree-eh.c (tree_remove_unreachable_handlers): Compare
16274         gimple_code with GIMPLE_RESX, not RESX.
16275
16276 2009-03-31  Joseph Myers  <joseph@codesourcery.com>
16277
16278         * c-common.c (c_get_ident): New.
16279         (c_common_nodes_and_builtins): Call it for type names that may be NULL.
16280
16281 2009-04-01  Ben Elliston  <bje@au.ibm.com>
16282
16283         * config/rs6000/sysv4.opt (msdata): Improve option description.
16284
16285 2009-03-31  Steve Ellcey  <sje@cup.hp.com>
16286
16287         * config/ia64/ia64.md (divsf3_internal_lat): Remove.
16288         (divdf3_internal_lat): Remove.
16289         (divxf3_internal_lat): Remove.
16290         (divxf3_internal_thr): Remove.
16291         (divxf): Use divxf3_internal.
16292         * config/ia64/div.md (divsf3_internal_lat): New.
16293         (divdf3_internal_lat): New.
16294         (divxf3_internal): New.
16295
16296 2009-03-31  Joseph Myers  <joseph@codesourcery.com>
16297
16298         PR c/448
16299         * Makefile.in (USE_GCC_STDINT): Define.
16300         (stmp-int-hdrs): Install stdint.h if applicable.
16301         * c-common.c (CHAR16_TYPE): Define in terms of UINT_LEAST16_TYPE
16302         if known.
16303         (CHAR32_TYPE): Define in terms of UINT_LEAST32_TYPE if known.
16304         (SIG_ATOMIC_TYPE, INT8_TYPE, INT16_TYPE, INT32_TYPE, INT64_TYPE,
16305         UINT8_TYPE, UINT16_TYPE, UINT32_TYPE, UINT64_TYPE,
16306         INT_LEAST8_TYPE, INT_LEAST16_TYPE, INT_LEAST32_TYPE,
16307         INT_LEAST64_TYPE, UINT_LEAST8_TYPE, UINT_LEAST16_TYPE,
16308         UINT_LEAST32_TYPE, UINT_LEAST64_TYPE, INT_FAST8_TYPE,
16309         INT_FAST16_TYPE, INT_FAST32_TYPE, INT_FAST64_TYPE,
16310         UINT_FAST8_TYPE, UINT_FAST16_TYPE, UINT_FAST32_TYPE,
16311         UINT_FAST64_TYPE, INTPTR_TYPE, UINTPTR_TYPE): Define.
16312         (c_common_nodes_and_builtins): Initialize
16313         underlying_wchar_type_node.  Do not initialize
16314         signed_wchar_type_node or unsigned_wchar_type_node.  Initialize
16315         nodes for new types.
16316         (c_stddef_cpp_builtins): Define macros for new types.
16317         * c-common.h (CTI_SIGNED_WCHAR_TYPE, CTI_UNSIGNED_WCHAR_TYPE):
16318         Remove.
16319         (CTI_UNDERLYING_WCHAR_TYPE, CTI_SIG_ATOMIC_TYPE, CTI_INT8_TYPE,
16320         CTI_INT16_TYPE, CTI_INT32_TYPE, CTI_INT64_TYPE, CTI_UINT8_TYPE,
16321         CTI_UINT16_TYPE, CTI_UINT32_TYPE, CTI_UINT64_TYPE,
16322         CTI_INT_LEAST8_TYPE, CTI_INT_LEAST16_TYPE, CTI_INT_LEAST32_TYPE,
16323         CTI_INT_LEAST64_TYPE, CTI_UINT_LEAST8_TYPE, CTI_UINT_LEAST16_TYPE,
16324         CTI_UINT_LEAST32_TYPE, CTI_UINT_LEAST64_TYPE, CTI_INT_FAST8_TYPE,
16325         CTI_INT_FAST16_TYPE, CTI_INT_FAST32_TYPE, CTI_INT_FAST64_TYPE,
16326         CTI_UINT_FAST8_TYPE, CTI_UINT_FAST16_TYPE, CTI_UINT_FAST32_TYPE,
16327         CTI_UINT_FAST64_TYPE, CTI_INTPTR_TYPE, CTI_UINTPTR_TYPE): Define.
16328         (signed_wchar_type_node, unsigned_wchar_type_node): Remove.
16329         (underlying_wchar_type_node, sig_atomic_type_node, int8_type_node,
16330         int16_type_node, int32_type_node, int64_type_node,
16331         uint8_type_node, uint16_type_node, c_uint32_type_node,
16332         c_uint64_type_node, int_least8_type_node, int_least16_type_node,
16333         int_least32_type_node, int_least64_type_node,
16334         uint_least8_type_node, uint_least16_type_node,
16335         uint_least32_type_node, uint_least64_type_node,
16336         int_fast8_type_node, int_fast16_type_node, int_fast32_type_node,
16337         int_fast64_type_node, uint_fast8_type_node, uint_fast16_type_node,
16338         uint_fast32_type_node, uint_fast64_type_node, intptr_type_node,
16339         uintptr_type_node): Define.
16340         * c-cppbuiltin.c (builtin_define_constants,
16341         builtin_define_type_minmax): New.
16342         (builtin_define_stdint_macros): Define more macros.
16343         (c_cpp_builtins): Define more limit macros.
16344         (type_suffix): New.
16345         (builtin_define_type_max): Define in terms of
16346         builtin_define_type_minmax.  Remove is_long parameter.  All
16347         callers changed.
16348         * config.gcc (use_gcc_stdint): Define.
16349         (tm_file): Add glibc-stdint.h for targets using glibc or uClibc.
16350         Add newlib-stdint.h for generic targets.
16351         * config/glibc-stdint.h, config/newlib-stdint.h,
16352         ginclude/stdint-gcc.h, ginclude/stdint-wrap.h: New.
16353         * config/m32c/m32c.h (UINTPTR_TYPE): Define.
16354         * config/score/score.h (UINTPTR_TYPE): Define.
16355         * config/sol2.h (SIG_ATOMIC_TYPE, INT8_TYPE, INT16_TYPE,
16356         INT32_TYPE, INT64_TYPE, UINT8_TYPE, UINT16_TYPE, UINT32_TYPE,
16357         UINT64_TYPE, INT_LEAST8_TYPE, INT_LEAST16_TYPE, INT_LEAST32_TYPE,
16358         INT_LEAST64_TYPE, UINT_LEAST8_TYPE, UINT_LEAST16_TYPE,
16359         UINT_LEAST32_TYPE, UINT_LEAST64_TYPE, INT_FAST8_TYPE,
16360         INT_FAST16_TYPE, INT_FAST32_TYPE, INT_FAST64_TYPE,
16361         UINT_FAST8_TYPE, UINT_FAST16_TYPE, UINT_FAST32_TYPE,
16362         UINT_FAST64_TYPE, INTPTR_TYPE, UINTPTR_TYPE): Define.
16363         * config/spu/spu.h (STDINT_LONG32): Define.
16364         * configure.ac (use_gcc_stdint): Substitute.
16365         * configure: Regenerate.
16366         * doc/cpp.texi (__SIG_ATOMIC_TYPE__, __INT8_TYPE__,
16367         __INT16_TYPE__, __INT32_TYPE__, __INT64_TYPE__, __UINT8_TYPE__,
16368         __UINT16_TYPE__, __UINT32_TYPE__, __UINT64_TYPE__,
16369         __INT_LEAST8_TYPE__, __INT_LEAST16_TYPE__, __INT_LEAST32_TYPE__,
16370         __INT_LEAST64_TYPE__, __UINT_LEAST8_TYPE__, __UINT_LEAST16_TYPE__,
16371         __UINT_LEAST32_TYPE_, __UINT_LEAST64_TYPE__, __INT_FAST8_TYPE__,
16372         __INT_FAST16_TYPE__, __INT_FAST32_TYPE__, __INT_FAST64_TYPE__,
16373         __UINT_FAST8_TYPE__, __UINT_FAST16_TYPE__, __UINT_FAST32_TYPE__,
16374         __UINT_FAST64_TYPE__, __INTPTR_TYPE__, __UINTPTR_TYPE__,
16375         __WINT_MAX__, __SIZE_MAX__, __PTRDIFF_MAX__, __UINTMAX_MAX__,
16376         __SIG_ATOMIC_MAX__, __INT8_MAX__, __INT16_MAX__, __INT32_MAX__,
16377         __INT64_MAX__, __UINT8_MAX__, __UINT16_MAX__, __UINT32_MAX__,
16378         __UINT64_MAX__, __INT_LEAST8_MAX__, __INT_LEAST16_MAX__,
16379         __INT_LEAST32_MAX__, __INT_LEAST64_MAX__, __UINT_LEAST8_MAX__,
16380         __UINT_LEAST16_MAX__, __UINT_LEAST32_MAX__, __UINT_LEAST64_MAX__,
16381         __INT_FAST8_MAX__, __INT_FAST16_MAX__, __INT_FAST32_MAX__,
16382         __INT_FAST64_MAX__, __UINT_FAST8_MAX__, __UINT_FAST16_MAX__,
16383         __UINT_FAST32_MAX__, __UINT_FAST64_MAX__, __INTPTR_MAX__,
16384         __UINTPTR_MAX__, __WCHAR_MIN__, __WINT_MIN__, __SIG_ATOMIC_MIN__,
16385         __INT8_C, __INT16_C, __INT32_C, __INT64_C, __UINT8_C, __UINT16_C,
16386         __UINT32_C, __UINT64_C, __INTMAX_C, __UINTMAX_C): Document.
16387         * doc/tm.texi (SIG_ATOMIC_TYPE, INT8_TYPE, INT16_TYPE, INT32_TYPE,
16388         INT64_TYPE, UINT8_TYPE, UINT16_TYPE, UINT32_TYPE, UINT64_TYPE,
16389         INT_LEAST8_TYPE, INT_LEAST16_TYPE, INT_LEAST32_TYPE,
16390         INT_LEAST64_TYPE, UINT_LEAST8_TYPE, UINT_LEAST16_TYPE,
16391         UINT_LEAST32_TYPE, UINT_LEAST64_TYPE, INT_FAST8_TYPE,
16392         INT_FAST16_TYPE, INT_FAST32_TYPE, INT_FAST64_TYPE,
16393         UINT_FAST8_TYPE, UINT_FAST16_TYPE, UINT_FAST32_TYPE,
16394         UINT_FAST64_TYPE, INTPTR_TYPE, UINTPTR_TYPE): Document.
16395
16396 2009-03-31  Bernd Schmidt  <bernd.schmidt@analog.com>
16397
16398         * loop-iv.c (suitable_set_for_replacement): Renamed from
16399         simplify_using_assignment; changed to return bool and to accept new
16400         args DEST and SRC.  Return true iff we find a source/destination pair
16401         that can be used to make a replacement, and fill SRC and DEST if so.
16402         Remove arg ALTERED.  Don't deal with altered regs here.  All callers
16403         changed.
16404         (simplify_using_initial_values): Deal with altered regs here and track
16405         more precisely the effect they have on the validity of our expression.
16406
16407         * loop-iv.c (simplify_using_condition): A condition of the form
16408         (EQ REG CONST) can be used to simply make a substitution.
16409         (simplify_using_initial_values): Keep track of conditions we have seen
16410         and keep using them to simplify new expressions, while applying the
16411         same substitutions to them as to the expression.
16412
16413         * simplify-rtx.c (simplify_relational_operation_1): Simplify
16414         (LTU (PLUS a C) C) or (LTU (PLUS a C) a) to (GEU a -C); likewise with
16415         GEU/LTU reversed.
16416
16417         * loop-iv.c (determine_max_iter): New arg OLD_NITER.  All callers
16418         changed.  Use this when trying to improve the upper bound.
16419         Generate the comparison by using simplify_gen_relational.
16420
16421         * loop-iv.c (simple_rhs_p): Allow more kinds of expressions.
16422
16423         * loop-iv.c (replace_single_def_regs, replace_in_expr): New static
16424         functions.
16425         (simplify_using_assignment, simplify_using_initial_values): Call
16426         replace_in_expr to make replacements.  Call replace_single_def_regs
16427         once on the initial version of the expression.
16428
16429 2009-03-31  Ramana Radhakrishnan  <ramana.radhakrishnan@arm.com>
16430
16431         PR target/27237
16432         * doc/invoke.texi (ARM Options): Update documentation for -mthumb.
16433
16434 2009-03-31  Richard Guenther  <rguenther@suse.de>
16435
16436         PR middle-end/31029
16437         * fold-const.c (fold_binary): Fold X +- Y CMP X to Y CMP 0 for
16438         equality comparisons.  Fold C - X CMP X if C % 2 == 1.
16439
16440 2009-03-31  Richard Guenther  <rguenther@suse.de>
16441
16442         * tree.h (div_if_zero_remainder): Declare.
16443         * fold-const.c (div_if_zero_remainder): Export.
16444         * tree-ssa-forwprop.c
16445         (forward_propagate_addr_into_variable_array_index): Handle
16446         constant array index addition outside of the variable index.
16447
16448 2009-03-31  Joseph Myers  <joseph@codesourcery.com>
16449
16450         PR target/39592
16451         * config/i386/i386.md (*floatunssi<mode>2_1, two unnamed
16452         define_splits, floatunssi<mode>2): Require x87 conversions from
16453         DImode to be permitted.
16454
16455 2009-03-31  Joseph Myers  <joseph@codesourcery.com>
16456
16457         PR preprocessor/15638
16458         * c-common.c (c_cpp_error): Handle CPP_DL_FATAL.
16459
16460 2009-03-31  Richard Guenther  <rguenther@suse.de>
16461
16462         PR middle-end/23401
16463         PR middle-end/27810
16464         * tree.h (DECL_GIMPLE_FORMAL_TEMP_P): Remove.
16465         (struct tree_decl_with_vis): Remove gimple_formal_temp member.
16466         * tree-eh.c (lower_eh_constructs_2): Move LHS assignment to
16467         a separate statement.
16468         * gimplify.c (pop_gimplify_context): Remove formal temp handling.
16469         (lookup_tmp_var): Likewise.
16470         (is_gimple_formal_tmp_or_call_rhs): Remove.
16471         (is_gimple_reg_or_call_rhs): Rename to ...
16472         (is_gimple_reg_rhs_or_call): ... this.
16473         (is_gimple_mem_or_call_rhs): Rename to ...
16474         (is_gimple_mem_rhs_or_call): ... this.
16475         (internal_get_tmp_var): Use is_gimple_reg_rhs_or_call.  Set
16476         DECL_GIMPLE_REG_P only if is_formal is true.
16477         (gimplify_compound_lval): Use is_gimple_reg.  Remove workaround
16478         for non-proper post-modify expression gimplification.
16479         (gimplify_self_mod_expr): For post-modify expressions gimplify
16480         the lvalue to a minimal lvalue.
16481         (rhs_predicate_for): Remove formal temp case.
16482         (gimplify_modify_expr_rhs): Likewise.
16483         (gimplify_addr_expr): Use is_gimple_reg.
16484         (gimplify_expr): Remove formal temp cases.
16485         (gimple_regimplify_operands): Likewise.
16486         * tree-ssa-pre.c (get_or_alloc_expr_for): Treat EXC_PTR_EXPR
16487         and FILTER_EXPR like constants.
16488         * gimple.c (walk_gimple_op): Fix val_only initialization, use
16489         is_gimple_reg.
16490         (is_gimple_formal_tmp_rhs): Remove.
16491         (is_gimple_reg_rhs): Remove special casing.
16492         (is_gimple_mem_rhs): Fix.
16493         (is_gimple_reg): Move DECL_GIMPLE_REG_P handling earlier.
16494         (is_gimple_formal_tmp_var): Remove.
16495         (is_gimple_formal_tmp_reg): Likewise.
16496         (is_gimple_min_lval): Allow invariant component ref parts.
16497         * gimple.h (is_gimple_formal_tmp_rhs, is_gimple_formal_tmp_var,
16498         is_gimple_formal_tmp_reg): Remove declarations.
16499         * tree-cfg.c (verify_expr): Verify that variables with address
16500         taken do not have DECL_GIMPLE_REG_P set.
16501         * tree-mudflap.c (mf_build_check_statement_for): Use
16502         force_gimple_operand instead of gimplify_expr.
16503
16504 2009-03-31  Ayal Zaks  <zaks@il.ibm.com>
16505
16506         * modulo-sched.c (sms_schedule_by_order): Pass the actual
16507         schedulable rows to compute_split_row.
16508
16509 2009-03-31  Ben Elliston  <bje@au.ibm.com>
16510
16511         PR target/31635
16512         * config/rs6000/rs6000.c (rs6000_handle_option): Handle
16513         OPT_mvrsave.
16514
16515 2009-03-31  Alan Modra  <amodra@bigpond.net.au>
16516
16517         * doc/invoke.texi (RS/6000 and PowerPC Options):Document mtls-markers.
16518         * configure.ac (HAVE_AS_TLS_MARKERS): New gas feature check.
16519         * configure: Regenerate.
16520         * config.in: Regenerate.
16521         * config/rs6000/rs6000.opt (mtls-markers): Add.
16522         * config/rs6000/rs6000.h (TARGET_TLS_MARKERS): Define.
16523         * config/rs6000/rs6000.md (tls_gd_aix, tls_gd_sysv): Add splitter.
16524         (tls_ld_aix, tls_ld_sysv): Likewise.
16525         (tls_gd, tls_gd_call_aix, tls_gd_call_sysv): New insns.
16526         (tls_ld, tls_ld_call_aix, tls_ld_call_sysv): Likewise.
16527
16528 2009-03-31  Alan Modra  <amodra@bigpond.net.au>
16529
16530         * config/spu/spu.c (spu_expand_prologue): Delete redundant code.
16531
16532 2009-03-30  Jan Hubicka  <jh@suse.cz>
16533
16534         * tree-eh.c (make_eh_edges): Set probability 100% to first edge
16535         out of RESX.
16536         (tree_remove_unreachable_handlers): Cleanup EH predecestor
16537         detection and label handling.
16538
16539 2009-03-30  Vladimir Makarov  <vmakarov@redhat.com>
16540
16541         * ira-int.h (ira_allocno): Rename left_conflicts_num to
16542         left_conflicts_size.
16543         (ALLOCNO_LEFT_CONFLICTS_NUM): Rename to
16544         ALLOCNO_LEFT_CONFLICTS_SIZE.
16545
16546         * ira-color.c (allocno_spill_priority, push_allocno_to_stack,
16547         remove_allocno_from_bucket_and_push,
16548         allocno_spill_priority_compare, push_allocnos_to_stack,
16549         setup_allocno_available_regs_num): Use ALLOCNO_LEFT_CONFLICTS_SIZE
16550         instead of ALLOCNO_LEFT_CONFLICTS_NUM.
16551         (setup_allocno_left_conflicts_num): Ditto.  Rename to
16552         setup_allocno_left_conflicts_size.
16553         (put_allocno_into_bucket): Use ALLOCNO_LEFT_CONFLICTS_SIZE
16554         instead of ALLOCNO_LEFT_CONFLICTS_NUM and
16555         setup_allocno_left_conflicts_size instead of
16556         setup_allocno_left_conflicts_num.
16557
16558         * ira-build.c (ira_create_allocno): Use
16559         ALLOCNO_LEFT_CONFLICTS_SIZE instead of
16560         ALLOCNO_LEFT_CONFLICTS_NUM.
16561
16562 2009-03-30  Vladimir Makarov  <vmakarov@redhat.com>
16563
16564         * reload.c (push_reload, find_dummy_reload): Use df_get_live_out
16565         instead of DF_LR_OUT.
16566
16567         * ira-lives.c (process_bb_node_lives): Ditto.
16568
16569         * ira-color.c (ira_loop_edge_freq): Use df_get_live_{out,in}
16570         instead of DF_LR_{OUT,IN}.
16571
16572         * ira-emit.c (generate_edge_moves, add_ranges_and_copies): Ditto.
16573
16574         * ira-build.c (create_bb_allocnos, create_loop_allocnos): Ditto.
16575
16576 2009-03-30  Jan Hubicka  <jh@suse.cz>
16577
16578         * except.c (label_to_region_map): Fix thinko.
16579
16580 2009-03-30  Steve Ellcey  <sje@cup.hp.com>
16581
16582         PR middle-end/38237
16583         * tree.h (tree_find_value): New declaration.
16584         * tree.c (tree_find_value): New function.
16585         * varasm.c (assemble_external): Avoid duplicate entries on lists.
16586
16587 2009-03-30  Jakub Jelinek  <jakub@redhat.com>
16588
16589         PR debug/39563
16590         * c-decl.c (struct c_binding): Add locus field.
16591         (bind): Add locus argument, set locus field from it.
16592         (pop_scope): For b->nested VAR_DECL or FUNCTION_DECL,
16593         add a DECL_EXTERNAL copy of b->decl to current BLOCK_VARS.
16594         (push_file_scope, pushtag, pushdecl, pushdecl_top_level,
16595         implicitly_declare, undeclared_variable, lookup_label,
16596         declare_label, c_make_fname_decl, c_builtin_function,
16597         c_builtin_function_ext_scope, store_parm_decls_newstyle): Adjust
16598         bind callers.
16599
16600 2009-03-30  H.J. Lu  <hongjiu.lu@intel.com>
16601
16602         PR target/38781
16603         * config/i386/i386.c (classify_argument): Check total size of
16604         structure.
16605
16606 2009-03-30  Martin Jambor  <mjambor@suse.cz>
16607
16608         * ipa-prop.h (jump_func_type): Rename IPA_UNKNOWN, IPA_CONST,
16609         IPA_CONST_MEMBER_PTR, and IPA_PASS_THROUGH to IPA_JF_UNKNOWN,
16610         IPA_JF_CONST, IPA_JF_CONST_MEMBER_PTR, and IPA_JF_PASS_THROUGH
16611         respectively.
16612
16613         * tree-dfa.c (get_ref_base_and_extent): Return -1 maxsize if
16614         seen_variable_array_ref while also traversing a union.
16615
16616         * tree-inline.c (optimize_inline_calls): Do not call
16617         cgraph_node_remove_callees.
16618         * cgraphbuild.c (remove_cgraph_callee_edges): New function.
16619         (pass_remove_cgraph_callee_edges): New variable.
16620         * passes.c (init_optimization_passes): Add
16621         pass_remove_cgraph_callee_edges after early inlining and before all
16622         late intraprocedural passes.
16623
16624         * omp-low.c (expand_omp_taskreg): Always set current_function_decl.
16625
16626 2009-03-30  Paolo Bonzini  <bonzini@gnu.org>
16627
16628         * config/sparc/sparc.md (*nand<V64mode>_vis, *nand<V32mode>_vis):
16629         Fix typos in names.
16630
16631 2009-03-30  Paolo Bonzini  <bonzini@gnu.org>
16632
16633         * combine.c (simplify_comparison): Use have_insn_for.
16634         * dojump.c (do_jump): Likewise.
16635
16636 2009-03-30  Paolo Bonzini  <bonzini@gnu.org>
16637
16638         * config/sparc/sparc.c (sparc_compare_emitted): Remove.
16639         (gen_compare_reg, emit_v9_brxx_insn): Handle MODE_CC
16640         sparc_compare_op0 like sparc_compare_emitted used to be handled.
16641         (sparc_expand_compare_and_swap_12): Set sparc_compare_op0
16642         instead of sparc_compare_emitted.
16643         * config/sparc/sparc.h (sparc_compare_emitted): Remove.
16644         * config/sparc/sparc.md (stack_protect_test): Set sparc_compare_op0
16645         instead of sparc_compare_emitted.
16646
16647 2009-03-30  Paolo Bonzini  <bonzini@gnu.org>
16648
16649         * bb-reorder.c (partition_hot_cold_basic_blocks): Do not
16650         enter/exit cfglayout mode.
16651         (pass_partition_block): Require it.
16652         * combine.c (find_single_use, reg_dead_at_p): Use CFG.
16653         (combine_instructions): Track basic blocks instead of labels.
16654         (update_cfg_for_uncondjump): New.
16655         (try_combine): Use it.  Update jumps after rescanning.
16656         (pass_combine): Require PROP_cfglayout.
16657         * passes.c (pass_outof_cfg_layout_mode): Move after regmove.
16658
16659 2009-03-30  Paolo Bonzini  <bonzini@gnu.org>
16660
16661         * cfglayout.c (pass_into_cfg_layout_mode, pass_outof_cfg_layout_mode):
16662         Provide/destroy PROP_cfglayout respectively.
16663         * gcse.c (pass_jump_bypass, pass_gcse): Require it.
16664         * tree-pass.h (PROP_cfglayout): New.
16665
16666 2009-03-30  Paolo Bonzini  <bonzini@gnu.org>
16667
16668         * fold-const.c (const_binop, fold_convert_const_real_from_fixed,
16669         fold_convert_const_fixed_from_fixed,
16670         fold_convert_const_fixed_from_int,
16671         fold_convert_const_fixed_from_real, fold_negate_const): Do not
16672         set TREE_CONSTANT_OVERFLOW.
16673         * tree.def: Remove mention of TREE_CONSTANT_OVERFLOW.
16674         * tree.h (TREE_CONSTANT_OVERFLOW): Delete.
16675
16676 2009-03-30  Ira Rosen  <irar@il.ibm.com>
16677
16678         * tree-vect-loop-manip.c: New file.
16679         * tree-vectorizer.c: Update documentation and included files.
16680         (vect_loop_location): Make extern.
16681         (rename_use_op): Move to tree-vect-loop-manip.c
16682         (rename_variables_in_bb, rename_variables_in_loop,
16683         slpeel_update_phis_for_duplicate_loop,
16684         slpeel_update_phi_nodes_for_guard1,
16685         slpeel_update_phi_nodes_for_guard2, slpeel_make_loop_iterate_ntimes,
16686         slpeel_tree_duplicate_loop_to_edge_cfg, slpeel_add_loop_guard,
16687         slpeel_can_duplicate_loop_p, slpeel_verify_cfg_after_peeling,
16688         set_prologue_iterations, slpeel_tree_peel_loop_to_edge,
16689         find_loop_location): Likewise.
16690         (new_stmt_vec_info): Move to tree-vect-stmts.c.
16691         (init_stmt_vec_info_vec, free_stmt_vec_info_vec, free_stmt_vec_info,
16692         get_vectype_for_scalar_type, vect_is_simple_use,
16693         supportable_widening_operation, supportable_narrowing_operation):
16694         Likewise.
16695         (bb_in_loop_p): Move to tree-vect-loop.c.
16696         (new_loop_vec_info, destroy_loop_vec_info,
16697         reduction_code_for_scalar_code, report_vect_op,
16698         vect_is_simple_reduction, vect_is_simple_iv_evolution): Likewise.
16699         (vect_can_force_dr_alignment_p): Move to tree-vect-data-refs.c.
16700         (vect_supportable_dr_alignment): Likewise.
16701         * tree-vectorizer.h (tree-data-ref.h): Include.
16702         (vect_loop_location): Declare.
16703         Reorganize function declarations according to the new file structure.
16704         * tree-vect-loop.c: New file.
16705         * tree-vect-analyze.c: Remove. Move functions to tree-vect-data-refs.c,
16706         tree-vect-stmts.c, tree-vect-slp.c, tree-vect-loop.c.
16707         * tree-vect-data-refs.c: New file.
16708         * tree-vect-patterns.c (timevar.h): Don't include.
16709         * tree-vect-stmts.c: New file.
16710         * tree-vect-transform.c: Remove. Move functions to tree-vect-stmts.c,
16711         tree-vect-slp.c, tree-vect-loop.c.
16712         * Makefile.in (OBJS-common): Remove tree-vect-analyze.o and
16713         tree-vect-transform.o. Add tree-vect-data-refs.o, tree-vect-stmts.o,
16714         tree-vect-loop.o, tree-vect-loop-manip.o, tree-vect-slp.o.
16715         (tree-vect-analyze.o): Remove.
16716         (tree-vect-transform.o): Likewise.
16717         (tree-vect-data-refs.o): Add rule.
16718         (tree-vect-stmts.o, tree-vect-loop.o, tree-vect-loop-manip.o,
16719         tree-vect-slp.o): Likewise.
16720         (tree-vect-patterns.o): Remove redundant dependencies.
16721         (tree-vectorizer.o): Likewise.
16722         * tree-vect-slp.c: New file.
16723
16724 2009-03-30  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
16725
16726         * optc-gen.awk: Warn if an option flag has multiple different
16727         help strings.
16728
16729 2009-03-30  Sebastian Pop  <sebastian.pop@amd.com>
16730
16731         * doc/invoke.texi (-floop-interchange, -floop-strip-mine,
16732         -floop-block): Document dependences on PPL, CLooG and Graphite.
16733
16734 2009-03-30  Joseph Myers  <joseph@codesourcery.com>
16735
16736         PR rtl-optimization/323
16737         * c-common.c (c_fully_fold, convert_and_check,
16738         c_common_truthvalue_conversion): Handle EXCESS_PRECISION_EXPR.
16739         (c_fully_fold_internal): Disallow EXCESS_PRECISION_EXPR.
16740         * c-common.def (EXCESS_PRECISION_EXPR): New.
16741         * c-cppbuiltin.c (builtin_define_float_constants): Define
16742         constants with enough digits for long double.
16743         * c-lex.c (interpret_float): Interpret constant with excess
16744         precision where appropriate.
16745         * c-opts.c (c_common_post_options): Set
16746         flag_excess_precision_cmdline.  Give an error for
16747         -fexcess-precision=standard for C++ for processors where the
16748         option is significant.
16749         * c-parser.c (c_parser_conditional_expression): Handle excess
16750         precision in condition.
16751         * c-typeck.c (convert_arguments): Handle arguments with excess
16752         precision.
16753         (build_unary_op): Move excess precision outside operation.
16754         (build_conditional_expr): Likewise.
16755         (build_compound_expr): Likewise.
16756         (build_c_cast): Do cast on operand of EXCESS_PRECISION_EXPR.
16757         (build_modify_expr): Handle excess precision in RHS.
16758         (convert_for_assignment): Handle excess precision in converted
16759         value.
16760         (digest_init, output_init_element, process_init_element): Handle
16761         excess precision in initializer.
16762         (c_finish_return): Handle excess precision in return value.
16763         (build_binary_op): Handle excess precision in operands and add
16764         excess precision as needed for operation.
16765         * common.opt (-fexcess-precision=): New option.
16766         * config/i386/i386.h (X87_ENABLE_ARITH, X87_ENABLE_FLOAT): New.
16767         * config/i386/i386.md (float<SSEMODEI24:mode><X87MODEF:mode>2):
16768         For standard excess precision, output explicit conversion to and
16769         truncation from XFmode.
16770         (*float<SSEMODEI24:mode><X87MODEF:mode>2_1,
16771         *float<SSEMODEI24:mode><X87MODEF:mode>2_i387_with_temp,
16772         *float<SSEMODEI24:mode><X87MODEF:mode>2_i387, two unnamed
16773         define_splits, floatdi<X87MODEF:mode>2_i387_with_xmm, two unnamed
16774         define_splits, *floatunssi<mode>2_1, two unnamed define_splits,
16775         floatunssi<mode>2, add<mode>3, sub<mode>3, mul<mode>3, divdf3,
16776         divsf3, *fop_<mode>_comm_i387, *fop_<mode>_1_i387,
16777         *fop_<MODEF:mode>_2_i387, *fop_<MODEF:mode>_3_i387,
16778         *fop_df_4_i387, *fop_df_5_i387, *fop_df_6_i387, two unnamed
16779         define_splits, sqrt<mode>2): Disable where appropriate for
16780         standard excess precision.
16781         * convert.c (convert_to_real): Do not shorten arithmetic to type
16782         for which excess precision would be used.
16783         * defaults.h (TARGET_FLT_EVAL_METHOD_NON_DEFAULT): Define.
16784         * doc/invoke.texi (-fexcess-precision=): Document option.
16785         (-mfpmath=): Correct index entry.
16786         * flags.h (enum excess_precision, flag_excess_precision_cmdline,
16787         flag_excess_precision): New.
16788         * langhooks.c (lhd_post_options): Set
16789         flag_excess_precision_cmdline.
16790         * opts.c (common_handle_option): Handle -fexcess-precision=.
16791         * toplev.c (flag_excess_precision_cmdline, flag_excess_precision,
16792         init_excess_precision): New.
16793         (lang_dependent_init_target): Call init_excess_precision.
16794         * tree.c (excess_precision_type): New.
16795         * tree.h (excess_precision_type): Declare.
16796
16797 2009-03-30  Joseph Myers  <joseph@codesourcery.com>
16798
16799         PR c/35235
16800         * c-typeck.c (build_component_ref): Do not copy qualifiers from
16801         non-lvalue to component.
16802
16803 2009-03-29  Joseph Myers  <joseph@codesourcery.com>
16804
16805         PR preprocessor/34695
16806         * Makefile.in (c-opts.o): Depend on c-tree.h.
16807         * c-common.c: Move down include of diagnostic.h.
16808         (done_lexing, c_cpp_error): New.
16809         * c-common.h (done_lexing): Declare.
16810         * c-decl.c (c_write_global_declarations): Don't check cpp_errors
16811         (parse_in).
16812         * c-opts.c: Include c-tree.h.
16813         (c_common_init_options): Set preprocessor error callback.
16814         (c_common_handle_option): Do not set preprocessor
16815         inhibit_warnings, warnings_are_errors, warn_system_headers,
16816         pedantic_errors or inhibit_warnings flags.
16817         (c_common_post_options): Do not check cpp_errors (parse_in).
16818         (c_common_finish): Do not output dependencies if there were
16819         errors.  Do not check return value of cpp_finish.
16820         * c-ppoutput.c (pp_file_change): Set input_location.
16821         * c-tree.h (c_cpp_error): Declare.
16822         * diagnostic.c (diagnostic_set_info_translated): Also initialize
16823         override_column.
16824         (diagnostic_build_prefix): Check override_column.
16825         * diagnostic.h (diagnostic_info): Add override_column field.
16826         (diagnostic_override_column): Define.
16827
16828 2009-03-28  Paolo Bonzini  <bonzini@gnu.org>
16829
16830         * c-common.c (c_expand_expr, c_staticp): Remove.
16831         * c-common.def (COMPOUND_LITERAL_EXPR): Delete.
16832         * c-common.h (emit_local_var, c_staticp, COMPOUND_LITERAL_EXPR_DECL,
16833         COMPOUND_LITERAL_EXPR_DECL_EXPR): Remove.
16834         * c-gimplify.c (gimplify_compound_literal_expr,
16835         optimize_compound_literals_in_ctor): Remove.
16836         (c_gimplify_expr): Remove COMPOUND_LITERAL_EXPR handling.
16837         * c-objc-common.h (LANG_HOOKS_STATICP): Remove.
16838         * c-semantics.c (emit_local_var): Remove.
16839
16840         * langhooks-def.h (lhd_expand_expr): Remove.
16841         * langhooks.c (lhd_expand_expr): Remove.
16842         * langhooks.h (LANG_HOOKS_DEF): Remove LANG_HOOKS_EXPAND_EXPR.
16843
16844         * expr.c (expand_expr_real_1): Move COMPOUND_LITERAL_EXPR
16845         handling from c-semantics.c; don't call into langhook.
16846         (expand_expr_addr_expr_1): Check that we don't get non-GENERIC trees.
16847         * gimplify.c (gimplify_compound_literal_expr,
16848         optimize_compound_literals_in_ctor): Move from c-gimplify.c.
16849         (gimplify_init_constructor): Call optimize_compound_literals_in_ctor.
16850         (gimplify_modify_expr_rhs, gimplify_expr): Handle COMPOUND_LITERAL_EXPR
16851         as was done in c-gimplify.c.
16852         * tree.c (staticp): Move COMPOUND_LITERAL_EXPR handling from c_staticp.
16853         * tree.h (COMPOUND_LITERAL_EXPR_DECL, COMPOUND_LITERAL_EXPR_DECL_EXPR):
16854         Move from c-common.h.
16855         * tree.def (COMPOUND_LITERAL_EXPR): Move from c-common.def.
16856
16857         * tree.c (staticp): Do not call langhook.
16858         * langhooks.c (lhd_staticp): Delete.
16859         * langhooks-def.h (lhd_staticp): Delete prototype.
16860         (LANG_HOOKS_STATICP): Delete.
16861         (LANG_HOOKS_INITIALIZER): Delete LANG_HOOKS_STATICP.
16862
16863         * doc/c-tree.texi (Expression nodes): Refer to DECL_EXPRs
16864         instead of DECL_STMTs.
16865
16866 2009-03-29  Joseph Myers  <joseph@codesourcery.com>
16867
16868         PR c/456
16869         PR c/5675
16870         PR c/19976
16871         PR c/29116
16872         PR c/31871
16873         PR c/35198
16874         * builtins.c (fold_builtin_sincos): Build COMPOUND_EXPR in
16875         void_type_node.
16876         (fold_call_expr): Return a NOP_EXPR from folding rather than the
16877         contained expression.
16878         * c-common.c (c_fully_fold, c_fully_fold_internal, c_save_expr): New.
16879         (c_common_truthvalue_conversion): Use c_save_expr.  Do not fold
16880         conditional expressions for C.
16881         (decl_constant_value_for_optimization): Move from
16882         decl_constant_value_for_broken_optimization in c-typeck.c.  Check
16883         whether optimizing and that the expression is a VAR_DECL not of
16884         array type instead of doing such checks in the caller.  Do not
16885         check pedantic.  Call gcc_unreachable for C++.
16886         * c-common.def (C_MAYBE_CONST_EXPR): New.
16887         * c-common.h (c_fully_fold, c_save_expr,
16888         decl_constant_value_for_optimization): New prototypes.
16889         (C_MAYBE_CONST_EXPR_PRE, C_MAYBE_CONST_EXPR_EXPR,
16890         C_MAYBE_CONST_EXPR_INT_OPERANDS, C_MAYBE_CONST_EXPR_NON_CONST,
16891         EXPR_INT_CONST_OPERANDS): Define.
16892         * c-convert.c (convert): Strip nops from expression.
16893         * c-decl.c (groktypename): Take extra parameters expr and
16894         expr_const_operands.  Update call to grokdeclarator.
16895         (start_decl): Update call to grokdeclarator.  Add statement for
16896         expressions used in type of decl.
16897         (grokparm): Update call to grokdeclarator.
16898         (push_parm_decl): Update call to grokdeclarator.
16899         (build_compound_literal): Add parameter non_const and build a
16900         C_MAYBE_COSNT_EXPR if applicable.
16901         (grokdeclarator): Take extra parameters expr and
16902         expr_const_operands.  Track expressions used in declaration
16903         specifiers and declarators.  Fold array sizes and track whether
16904         they are constant expressions and whether they are integer
16905         constant expressions.
16906         (parser_xref_tag): Set expr and expr_const_operands fields in
16907         return value.
16908         (grokfield): Update call to grokdeclarator.
16909         (start_function): Update call to grokdeclarator.
16910         (build_null_declspecs): Set expr and expr_const_operands fields in
16911         return value.
16912         (declspecs_add_type): Handle expressions in typeof specifiers.
16913         * c-parser.c (c_parser_declspecs): Set expr and
16914         expr_const_operands fields for declaration specifiers.
16915         (c_parser_enum_specifier): Likewise.
16916         (c_parser_struct_or_union_specifier): Likewise.
16917         (c_parser_typeof_specifier): Likewise.  Update call to
16918         groktypename.  Fold expression as needed.  Return expressions with
16919         type instead of adding statements.
16920         (c_parser_attributes): Update calls to c_parser_expr_list.
16921         (c_parser_statement_after_labels): Fold expression before passing
16922         to objc_build_throw_stmt.
16923         (c_parser_condition): Fold expression.
16924         (c_parser_asm_operands): Fold expression.
16925         (c_parser_conditional_expression): Use c_save_expr.  Update call
16926         to build_conditional_expr.
16927         (c_parser_alignof_expression): Update call to groktypename.
16928         (c_parser_postfix_expression): Preserve C_MAYBE_CONST_EXPR as
16929         original_code.  Fold expression argument of va_arg.  Create
16930         C_MAYBE_CONST_EXPR to preserve side effects of expressions in type
16931         argument to va_arg.  Update calls to groktypename.  Fold array
16932         index for offsetof.  Verify that first argument to
16933         __builtin_choose_expr has integer type.
16934         (c_parser_postfix_expression_after_paren_type): Update calls to
16935         groktypename and build_compound_literal.  Handle expressions with
16936         side effects in type name.
16937         (c_parser_postfix_expression_after_primary): Update call to
16938         c_parser_expr_list.  Set original_code for calls to
16939         __builtin_constant_p.
16940         (c_parser_expr_list): Take extra parameter fold_p.  Fold
16941         expressions if requested.
16942         (c_parser_objc_type_name): Update call to groktypename.
16943         (c_parser_objc_synchronized_statement): Fold expression.
16944         (c_parser_objc_receiver): Fold expression.
16945         (c_parser_objc_keywordexpr): Update call to c_parser_expr_list.
16946         (c_parser_omp_clause_num_threads, c_parser_omp_clause_schedule,
16947         c_parser_omp_atomic, c_parser_omp_for_loop): Fold expressions.
16948         * c-tree.h (CONSTRUCTOR_NON_CONST): Define.
16949         (struct c_typespec): Add elements expr and expr_const_operands.
16950         (struct c_declspecs): Add elements expr and expr_const_operands.
16951         (groktypename, build_conditional_expr, build_compound_literal):
16952         Update prototypes.
16953         (in_late_binary_op): Declare.
16954         * c-typeck.c (note_integer_operands): New function.
16955         (in_late_binary_op): New variable.
16956         (decl_constant_value_for_broken_optimization): Move to c-common.c
16957         and rename to decl_constant_value_for_optimization.
16958         (default_function_array_conversion): Do not strip nops.
16959         (default_conversion): Do not call
16960         decl_constant_value_for_broken_optimization.
16961         (build_array_ref): Do not fold result.
16962         (c_expr_sizeof_expr): Fold operand.  Use C_MAYBE_CONST_EXPR for
16963         result when operand is a VLA.
16964         (c_expr_sizeof_type): Update call to groktypename.  Handle
16965         expressions included in type name.  Use C_MAYBE_CONST_EXPR for
16966         result when operand names a VLA type.
16967         (build_function_call): Update call to build_compound_literal.
16968         Only fold result for calls to __builtin_* functions.  Strip
16969         NOP_EXPR from INTEGER_CST returned from such functions.  Fold
16970         the function designator.
16971         (convert_arguments): Fold arguments.  Update call to
16972         convert_for_assignment.
16973         (build_unary_op): Handle increment and decrement of
16974         C_MAYBE_CONST_EXPR.  Move lvalue checks for increment and
16975         decrement earlier.  Fold operand of increment and decrement.
16976         Handle address of C_MAYBE_CONST_EXPR.  Only fold expression being
16977         built for integer operand.  Wrap returns that are INTEGER_CSTs
16978         without being integer constant expressions or that have integer
16979         constant operands without being INTEGER_CSTs.
16980         (lvalue_p): Handle C_MAYBE_CONST_EXPR.
16981         (build_conditional_expr): Add operand ifexp_bcp.  Track whether
16982         result is an integer constant expression or can be used in
16983         unevaluated parts of one and avoid folding and wrap as
16984         appropriate.  Fold operands before possibly doing -Wsign-compare
16985         warnings.
16986         (build_compound_expr): Wrap result for C99 if operands can be used
16987         in integer constant expressions.
16988         (build_c_cast): Update call to digest_init.  Do not ignore
16989         overflow from casting floating-point constants to integers.  Wrap
16990         results that could be confused with integer constant expressions,
16991         null pointer constants or floating-point constants.
16992         (c_cast_expr): Update call to groktypename.  Handle expressions
16993         included in type name.
16994         (build_modify_expr): Handle modifying a C_MAYBE_CONST_EXPR.  Fold
16995         lhs inside possible SAVE_EXPR.  Fold RHS before assignment.
16996         Update calls to convert_for_assignment.
16997         (convert_for_assignment): Take new parameter
16998         null_pointer_constant.  Do not strip nops or call
16999         decl_constant_value_for_broken_optimization.  Set
17000         in_late_binary_op for conversions to boolean.
17001         (store_init_value): Update call to digest_init.
17002         (digest_init): Take new parameter null_pointer_constant.  Do not
17003         call decl_constant_value_for_broken_optimization.  pedwarn for
17004         initializers not constant expressions.  Update calls to
17005         convert_for_assignment.
17006         (constructor_nonconst): New.
17007         (struct constructor_stack): Add nonconst element.
17008         (really_start_incremental_init, push_init_level, pop_init_level):
17009         Handle constructor_nonconst and nonconst element.
17010         (set_init_index): Call constant_expression_warning for array
17011         designators.
17012         (output_init_element): Fold value.  Set constructor_nonconst as
17013         applicable.  pedwarn for initializers not constant expressions.
17014         Update call to digest_init.  Call constant_expression_warning
17015         where constant initializers are required.
17016         (process_init_element): Use c_save_expr.
17017         (c_finish_goto_ptr): Fold expression.
17018         (c_finish_return): Fold return value.  Update call to
17019         convert_for_assignment.
17020         (c_start_case): Fold switch expression.
17021         (c_process_expr_stmt): Fold expression.
17022         (c_finish_stmt_expr): Create C_MAYBE_CONST_EXPR as needed to
17023         ensure statement expression is not evaluated in constant expression.
17024         (build_binary_op): Track whether results are integer constant
17025         expressions or may occur in such, disable folding and wrap results
17026         as applicable.  Fold operands for -Wsign-compare warnings unless
17027         in_late_binary_op.
17028         (c_objc_common_truthvalue_conversion): Handle results folded to
17029         integer constants that are not integer constant expressions.
17030         * doc/extend.texi: Document when typeof operands are evaluated,
17031         that condition of __builtin_choose_expr is an integer constant
17032         expression, and more about use of __builtin_constant_p in
17033         initializers.
17034
17035 2009-03-29  Richard Guenther  <rguenther@suse.de>
17036
17037         * tree-ssa-forwprop.c (forward_propagate_addr_expr_1): Properly
17038         propagate addresses of array references.
17039
17040 2009-03-29  Steven Bosscher  <steven@gcc.gnu.org>
17041
17042         * regmove.c (perhaps_ends_bb_p): Remove.
17043         (optimize_reg_copy_1): Don't call perhaps_ends_bb_p.  Get basic block
17044         from INSN and check that the main loop stays within that basic block.
17045         (optimize_reg_copy_1, optimize_reg_copy_3, fixup_match_2): Likewise.
17046         (regmove_forward_pass): Split out from regmove_optimize.  Use
17047         FOR_EACH_BB and FOR_BB_INSNS instead of traversing the insns stream.
17048         (regmove_backward_pass): Split out from regmove_optimize.  Use
17049         FOR_EACH_BB_REVERSE and FOR_BB_INSNS_REVERS_SAFE.
17050         (regmove_optimize): Simplify.
17051
17052 2009-03-29  H.J. Lu  <hongjiu.lu@intel.com>
17053
17054         PR target/39545
17055         * config/i386/i386.c (classify_argument): Ignore flexible array
17056         member in struct and warn ABI change.
17057
17058 2009-03-29  H.J. Lu  <hongjiu.lu@intel.com>
17059
17060         * config/i386/i386-protos.h (ix86_agi_dependent): New.
17061
17062         * config/i386/i386.c (ix86_agi_dependent): Rewrite.
17063         (ix86_adjust_cost): Updated.
17064
17065 2009-03-29  Jan Hubicka  <jh@suse.cz>
17066
17067         PR middle-end/28850
17068         * tree-pass.h (pass_cleanup_eh): New function.
17069         (remove_unreachable_regions): Break code handling RTL
17070         to rtl_remove_unreachable_regions; remove ERT_MUST_NOT_THROW
17071         that can not be reached by runtime.
17072         (can_be_reached_by_runtime): New function.
17073         (label_to_region_map): New function.
17074         (num_eh_regions): New function.
17075         (rtl_remove_unreachable_regions): New function.
17076         (convert_from_eh_region_ranges): Call rtl_remove_unreachable_regions.
17077         (remove_eh_region): New function.
17078         * except.h: Include sbitmap and vecprim.
17079         (remove_eh_region, remove_unreachable_regions, label_to_region_map,
17080         num_eh_regions): Declare.
17081         * passes.c (init_optimization_passes): Schedule cleanup_eh.
17082         * Makefile.in (EXCEPT_H): New; replace all uses of except.h by it.
17083         * tree-eh.c (tree_remove_unreachable_handlers): New function.
17084         (tree_empty_eh_handler_p): New function.
17085         (cleanup_empty_eh): New function.
17086         (cleanup_eh): New function.
17087         (pass_cleanup_eh): New function.
17088
17089 2009-03-29  Jan Hubicka  <jh@suse.cz>
17090
17091         * except.c (verify_eh_tree): Fix handling of fun!=cfun; be ready
17092         for removed regions.
17093
17094 2009-03-29  Jan Hubicka  <jh@suse.cz>
17095
17096         * except.c (dump_eh_tree): Dump all datastructures.
17097
17098 2009-03-29  Jan Hubicka  <jh@suse.cz>
17099
17100         * except.c (duplicate_eh_regions_0): Handle AKA bitmap.
17101         (duplicate_eh_regions_1): Likewise.
17102         (duplicate_eh_regions): Likewise; cleanup code gorwing the region
17103         vector; call EH verification.
17104         (foreach_reachable_handler, can_throw_internal_1, can_throw_external_1):
17105         Be ready for region being removed.
17106
17107 2009-03-29  Jan Hubicka  <jh@suse.cz>
17108
17109         * bitmap.c (bitmap_last_set_bit): New function.
17110         * bitmap.h (bitmap_last_set_bit): Declare.
17111
17112 2009-03-29  David Ayers  <ayers@fsfe.org>
17113
17114         PR objc/27377
17115         * c-typeck.c (build_conditional_expr): Emit ObjC warnings
17116         by calling objc_compare_types and surpress warnings about
17117         incompatible C pointers that are compatible ObjC pointers.
17118
17119 2009-03-29  Adam Nemet  <anemet@caviumnetworks.com>
17120
17121         * cgraphbuild.c (build_cgraph_edges, rebuild_cgraph_edges): Don't
17122         call initialize_inline_failed.
17123         (initialize_inline_failed): Move it from here ...
17124         * cgraph.c (initialize_inline_failed): ... to here.
17125         (cgraph_create_edge): Call initialize_inline_failed rather than
17126         setting inline_failed directly.
17127
17128 2009-03-29  Ben Elliston  <bje@au.ibm.com>
17129
17130         PR target/32542
17131         * sysv4.opt (msdata): Improve comment.
17132         * linux64.h (ASM_SPEC32): Do not pass -memb when -msdata is given.
17133         * sysv4.h (SVR4_ASM_SPEC): Likewise.
17134
17135 2009-03-29  Ben Elliston  <bje@au.ibm.com>
17136
17137         PR target/30451
17138         * config/rs6000/rs6000.md (*movti_ppc64): Correct the order of
17139         load and store attributes.
17140
17141 2009-03-29  Ben Elliston  <bje@au.ibm.com>
17142
17143         * config/i386/i386.c (enum ix86_builtins): Add IX86_BUILTIN_HUGE_VALQ.
17144         (ix86_init_builtins): Add built-in function __builtin_huge_valq.
17145         (ix86_expand_builtin): Handle IX86_BUILTIN_HUGE_VALQ.
17146         * doc/extend.texi (X86 Built-in Functions): Add index entries for
17147         __builtin_infq and __builtin_huge_valq.
17148
17149 2009-03-28  Anatoly Sokolov  <aesok@post.ru>
17150
17151         * config/avr/avr.c (avr_mcu_t): Add atmega8c1, atmega16c1 and
17152         atmega8m1 devices.
17153         * config/avr/avr.h (LINK_SPEC, CRT_BINUTILS_SPECS): (Ditto.).
17154         * config/avr/t-avr (MULTILIB_MATCHES): (Ditto.)
17155
17156 2009-03-28  Xinliang David Li  <davidxl@google.com>
17157
17158         * tree-ssa-ccp.c (ccp_finalize): Add dbg_count support.
17159         (do_dbg_cnt): New function.
17160
17161 2009-03-28  Jan Hubicka  <jh@suse.cz>
17162
17163         Merge from pretty-ipa:
17164
17165         2009-03-27  Jan Hubicka  <jh@suse.cz>
17166
17167         * cgraph.c (dump_cgraph_node): Add replace output flag by process.
17168         * tree-pass.h (function_called_by_processed_nodes_p): Declare.
17169         * passes.c (function_called_by_processed_nodes_p): New.
17170         * ipa-pure-const.c (check_call): Fix handling of operands.
17171         (analyze_function): Dump debug output for skipped bodies.
17172         (local_pure_const): Use function_called_by_processed_nodes_p.
17173         * dwarf2out.c (reference_to_unused): Use output.
17174         * passes.c (do_per_function_toporder): Likewise.
17175
17176         2008-11-12  Jan Hubicka  <jh@suse.cz>
17177
17178         * tree-pass.h (pass_fixup_cfg, pass_local_pure_const): Declare.
17179         * ipa-pure-const.c (funct_state_d): Add can throw field; make
17180         state_set_in_source enum
17181         (check_decl): Ignore memory tags; do not set fake looping flags;
17182         dump diagnostics.
17183         (check_operand, check_tree, check_rhs_var, check_lhs_var,
17184         get_asm_expr_operands, scan_function_op, scan_function_stmt): Remove.
17185         (check_call, analyze_function): Rewrite.
17186         (check_stmt): New.
17187         (add_new_function): Update call of analyze_function.
17188         (generate_summary): Add call of analyze_function.
17189         (propagate): Propagate can_throw; handle state_set_in_source correctly.
17190         (local_pure_const): New function.
17191         (pass_local_pure_const): New pass.
17192         * ipa-inline.c (inline_transform): Set after_inlining.
17193         * tree-eh.c (stmt_can_throw_external): New.
17194         * tree-optimize.c (execute_fixup_cfg): Do not set after_inlining;
17195         work with aliasing built.
17196         * tree-flow.h (stmt_can_throw_external): New.
17197         * passes.c (init_optimization_passes): Schedule fixup_cfg pass early;
17198         and local pure/const pass in early and late optimization queue.
17199
17200 2009-03-28  Martin Jambor  <mjambor@suse.cz>
17201
17202         * fold-const.c (get_pointer_modulus_and_residue): New parameter
17203         allow_func_align.
17204         (fold_binary): Allow function decl aligment consideration is the
17205         second argument is integer constant one.
17206         * tree-ssa-forwprop.c (simplify_bitwise_and): New function.
17207         (tree_ssa_forward_propagate_single_use_vars): Handle assing statements
17208         with BIT_AND_EXPR on the RHS by calling simplify_bitwise_and.
17209
17210 2009-03-28  Jan Hubicka  <jh@suse.cz>
17211
17212         * dwarf2out.c (dwarf2out_begin_prologue): Use crtl->nothrow
17213         * tree-eh.c (stmt_could_throw_p): Remove check for WEAK decls.
17214         * function.h (rtl_data): Add nothrow flag.
17215         * except.c (set_nothrow_function_flags): Use crtl->nothrow;
17216         set DECL_NOTHROW for AVAILABLE functions.
17217
17218 2009-03-28  Jakub Jelinek  <jakub@redhat.com>
17219
17220         * config/rs6000/rs6000-c.c (rs6000_macro_to_expand): If macro
17221         following vector keyword has expansion starting with pixel or bool
17222         keyword, expand vector to __vector and pixel or bool to __pixel or
17223         __bool.
17224
17225         PR c++/39554
17226         * opts.c (warning_disallowed_functions, warn_disallowed_functions,
17227         warn_if_disallowed_function_p): Removed.
17228         (common_handle_option): Don't handle OPT_Wdisallowed_function_list_.
17229         * c-parser.c (c_parser_postfix_expression_after_primary): Don't call
17230         warning_if_disallowed_function_p.
17231         * flags.h (warn_if_disallowed_function_p,
17232         warn_disallowed_functions): Removed.
17233         * common.opt (Wdisallowed-function-list=): Removed.
17234         * doc/invoke.texi (-Wdisallowed-function-list=): Removed.
17235
17236 2009-03-28  Richard Guenther  <rguenther@suse.de>
17237
17238         PR tree-optimization/38723
17239         * tree-ssa-pre.c (compute_avail): Add all default definitions to
17240         the entry block.
17241
17242 2009-03-28  Jan Hubicka  <jh@suse.cz>
17243
17244         * tree-ssa-structalias.c (ipa_pta_execute): Fix bogus node->analyzed
17245         test introduced by my previous patch.
17246
17247 2009-03-28  Richard Guenther  <rguenther@suse.de>
17248
17249         * tree-ssa-copy.c (copy_prop_visit_phi_node): Do not leave
17250         the PHIs value undefined.
17251
17252 2009-03-28  Jan Hubicka  <jh@suse.cz>
17253
17254         * tree-pass.h (pass_fixup_cfg): New pass.
17255         * ipa-inline.c (inline_transform): Set
17256         always_inline_functions_inlined/after_inlining.
17257         * tree-optimize.c (execute_fixup_cfg): Do not set them here.
17258         (pass_fixup_cfg): New pass.
17259         * passes.c (init_optimization_passes): Add fixup_cfg.
17260
17261 2009-03-28  Richard Guenther  <rguenther@suse.de>
17262
17263         PR tree-optimization/38458
17264         * tree-ssa-copy.c (copy_prop_visit_phi_node): For the first
17265         argument use the arguments copy-of value.
17266
17267 2009-03-28  Richard Guenther  <rguenther@suse.de>
17268
17269         PR tree-optimization/38180
17270         * tree-ssa-ccp.c (get_default_value): Simplify.
17271         (likely_value): Likewise.
17272         (surely_varying_stmt_p): Properly handle VOP case.
17273         (ccp_initialize): Likewise.
17274         (ccp_fold): Handle propagating through *&.
17275         (fold_const_aggregate_ref): Also handle decls.
17276
17277 2009-03-28  Jan Hubicka  <jh@suse.cz>
17278
17279         * cgraph.c (dump_cgraph_node): Add replace output flag by process.
17280         * cgraph.h (cgraph_node): Likewise.
17281         * cgraphunit.c (cgraph_process_new_functions): Set process flag.
17282         (cgraph_reset_node): Use process flag.
17283         (cgraph_mark_functions_to_output): Likewise.
17284         (cgraph_expand_function): Likewise.
17285         (cgraph_expand_all_functions): Likewise.
17286         (cgraph_output_in_order): Likewise.
17287         * dwarf2out.c (reference_to_unused): Likewise.
17288         * passes.c do_per_function_toporder): Likewise.
17289
17290 2009-03-28  Jan Hubicka  <jh@suse.cz>
17291
17292         Bring from lto-branch:
17293
17294         2008-09-03  Doug Kwan  <dougkwan@google.com>
17295
17296         * cgraphbuild.c (initialize_inline_failed): Use cgraph_inline_failed_t
17297         enums instead of reason strings.
17298         * cgraph.c (cgraph_create_edge): Same.
17299         (cgraph_inline_failed_string): New function.
17300         * cgraph.h (cgraph_inline_failed_t): New enum type.
17301         (cgraph_inline_failed_string): New prototype.
17302         (struct cgraph_edge): Change type of INLINED_FAILED from constant
17303         char pointer to cgraph_inline_failed_t.
17304         (cgraph_inline_p): Adjust prototype to use cgraph_inline_failed_t.
17305         (cgraph_default_inline_p): Ditto.
17306         * cgraphunit.c (cgraph_inline_p): Change type of parameter REASON
17307         to cgraph_inline_failed_t pointer.
17308         * cif-code.def: New file.
17309         * ipa-inline.c (cgraph_mark_inline_edge): Use an enum instead of a
17310         reason string.
17311         (cgraph_check_inline_limits): Change type of REASON to pointer to
17312         cgraph_inline_failed_t.  Replace reason strings with enums.
17313         (cgraph_default_inline_p): Ditto.
17314         (cgraph_recursive_inlining_p): Ditto.
17315         (update_caller_keys): Change type of FAILED_REASON to
17316         cgraph_inline_failed_t.
17317         (cgraph_set_inline_failed): Change type of REASON to pointer to
17318         cgraph_inline_failed_t.  Call cgraph_inline_failed_string to
17319         convert enums to strings for text output.
17320         (cgraph_decide_inlining_of_small_function): Change FAILED_REASON
17321         to be of type cgraph_inline_failed_t.  Replace reason strings with
17322         enums.  Call cgraph_inline_failed_string to covert enums
17323         to strings for text output.
17324         (cgraph_decide_inlining): Replace reason strings with enums.
17325         (cgraph_decide_inlining_incrementally): Change type of FAILED_REASON
17326         to cgraph_inline_failed_t type.  Call cgraph_inline_failed_string
17327         for text output.
17328         * tree-inline.c (expand_call_inline): Change type of REASON
17329         to cgraph_inline_failed_t.  Replace reason strings with enums.
17330         Call cgraph_inline_failed_string for text output.
17331         * Makefile.in (CGRAPH_H): Add cif-code.def to dependencies.
17332         (cgraph.o): Ditto.
17333
17334 2009-03-28  Jan Hubicka  <jh@suse.cz>
17335
17336         * cgraph.c (cgraph_node, cgraph_remove_node, dump_cgraph_node,
17337         cgraph_clone_node): Remove master clone handling.
17338         (cgraph_is_master_clone, cgraph_master_clone): Remove.
17339         * cgraph.h (master_clone): Remove.
17340         (cgraph_is_master_clone, cgraph_master_clone): Remove.
17341         * ipa-type-escape.c (type_escape_execute): Remove use of master clone.
17342         (tree-ssa-structalias.c (ipa_pta_execute): Likewise.
17343
17344 2009-03-28  Jan Hubicka  <jh@suse.cz>
17345
17346         * cgraph.c (cgraph_function_body_availability): Functions declared
17347         inline are always safe to assume that it is not going to be replaced.
17348
17349 2009-03-28  Richard Guenther  <rguenther@suse.de>
17350
17351         PR tree-optimization/38513
17352         * tree-ssa-pre.c (eliminate): Remove redundant stores.
17353         * tree-ssa-sccvn.c (copy_reference_ops_from_ref): Handle
17354         EXC_PTR_EXPR and FILTER_EXPR.
17355         (get_ref_from_reference_ops): Likewise.
17356
17357 2009-03-28  Richard Guenther  <rguenther@suse.de>
17358
17359         PR tree-optimization/38968
17360         * tree-vect-analyze.c (vect_compute_data_ref_alignment):
17361         Use FLOOR_MOD_EXPR to compute misalignment.
17362
17363 2009-03-28  Richard Guenther  <rguenther@suse.de>
17364
17365         PR tree-optimization/37795
17366         * tree.h (combine_comparisons): Declare.
17367         * fold-const.c (combine_comparisons): Export.
17368         * tree-ssa-ifcombine.c (ifcombine_ifandif): Optimize two successive
17369         comparisons.
17370         (ifcombine_iforif): Use combine_comparisons.
17371
17372 2009-03-28  Jan Hubicka  <jh@suse.cz>
17373
17374         * tree-eh.c (inlinable_call_p): New function.
17375         (make_eh_edges): Use it.
17376         (verify_eh_edges): Use it.
17377         (stmt_can_throw_external, stmt_can_throw_internal): Use it.
17378         * except.c (reachable_next_level): Add inlinable_function argument
17379         (sjlj_find_directly_reachable_regions): Update.
17380         (add_reachable_handler): Do not set saw_any_handlers.
17381         (reachable_next_level): Handle MUST_NOT_THROW more curefully.
17382         (foreach_reachable_handler, can_throw_internal_1, can_throw_external_1):
17383         Add new inlinable call parameter.
17384         (can_throw_internal, can_throw_external): Update.
17385         * except.h (can_throw_internal_1, can_throw_external_1,
17386         foreach_reachable_handler): Update declaration.
17387
17388 2009-03-28  Joseph Myers  <joseph@codesourcery.com>
17389
17390         * config/arm/t-arm-coff, config/h8300/coff.h,
17391         config/i386/i386-aout.h, config/i386/i386-coff.h,
17392         config/libgloss.h, config/m68k/coff.h, config/m68k/m68k-aout.h,
17393         config/pdp11/2bsd.h, config/rs6000/aix41.h,
17394         config/rs6000/aix41.opt, config/rs6000/t-newas, config/sh/coff.h,
17395         fix-header.c, fixproto, gen-protos.c, protoize.c, scan-decls.c,
17396         scan-types.sh, scan.c, scan.h, sort-protos, sys-protos.h,
17397         sys-types.h: Remove.
17398         * Makefile.in: Remove protoize and fixproto support and references
17399         in comments.
17400         (SYSCALLS.c.X-warn, TARGET_GETGROUPS_T, STMP_FIXPROTO,
17401         PROTOIZE_INSTALL_NAME, UNPROTOIZE_INSTALL_NAME, FIXPROTO_DEFINES):
17402         Remove.
17403         (ALL_HOST_OBJS): Remove $(PROTO_OBJS).
17404         (MOSTLYCLEANFILES): Remove protoize$(exeext) and
17405         unprotoize$(exeext).
17406         (rest.encap): Don't depend on $(STMP_FIXPROTO)
17407         (.PHONY): Don't depend on proto.
17408         (libgcc-support): Don't depend on $(STMP_FIXPROTO).
17409         (proto, PROTO_OBJS, protoize$(exeext), unprotoize$(exeext),
17410         protoize.o, unprotoize.o, SYSCALLS.c.X, test-protoize-simple,
17411         deduced.h, GEN_PROTOS_OBJS, build/gen-protos$(build_exeext),
17412         build/gen-protos.o, build/scan.o, xsys-protos.h,
17413         build/fix-header$(build_exeext), build/fix-header.o,
17414         build/scan-decls.o, fixhdr.ready, stmp-fixproto,
17415         stmp-install-fixproto): Remove.
17416         (mostlyclean): Don't remove xsys-protos.hT, SYSCALLS.c.X,
17417         SYSCALLS.c or fixproto files.
17418         (install-common): Don't install protoize.
17419         (install-headers-tar, install-headers-cpio, install-headers-cp):
17420         Don't depend on $(STMP_FIXPROTO).
17421         (install-mkheaders): Don't depend on $(STMP_FIXPROTO).  Don't
17422         install fixproto files or write out fixproto settings.
17423         (uninstall): Don't uninstall protoize.
17424         * config.gcc (use_fixproto): Remove.
17425         (arm-*-coff*, armel-*-coff*, h8300-*-*, i[34567]86-*-aout*,
17426         i[34567]86-*-coff*, m68k-*-aout*, m68k-*-coff*, pdp11-*-bsd,
17427         rs6000-ibm-aix4.[12]*, powerpc-ibm-aix4.[12]*, sh-*-*): Remove.
17428         * config/m32r/t-linux (STMP_FIXPROTO): Remove.
17429         * config/m68k/m68k.c: Remove M68K_TARGET_COFF-conditional code.
17430         * config/mips/t-iris (FIXPROTO_DEFINES): Remove.
17431         * config/pa/t-pa-hpux (FIXPROTO_DEFINES): Remove.
17432         * config/pdp11/pdp11.c: Remove TWO_BSD-conditional code.
17433         * config/t-svr4 (FIXPROTO_DEFINES): Remove.
17434         * config/t-vxworks (STMP_FIXPROTO): Remove.
17435         * configure.ac (AC_TYPE_GETGROUPS, TARGET_GETGROUPS_T,
17436         STMP_FIXPROTO): Remove.
17437         * config.in, configure: Regenerate.
17438         * crtstuff.c (gid_t, uid_t): Don't undefine.
17439         * doc/install.texi: Change m68k-coff to m68k-elf in example.
17440         (arm-*-coff, arm-*-aout: Remove target entries.
17441         (*-ibm-aix*): Mention removal of support for AIX 4.2 and older.
17442         Remove mention of AIX 4.1.
17443         (m68k-*-*): Remove mention of m68k-*-aout and m68k-*-coff*.
17444         * doc/invoke.texi (Running Protoize): Remove.
17445         * doc/trouble.texi (Actual Bugs): Remove mention of fixproto.
17446         (Protoize Caveats): Remove.
17447         * tsystem.h: Update comments on headers assumed to exist.
17448
17449 2009-03-27  Vladimir Makarov  <vmakarov@redhat.com>
17450
17451         * genautomata.c: Add a new year to the copyright.  Add a new
17452         reference.
17453         (struct insn_reserv_decl): Add comments for member bypass_list.
17454         (find_bypass): Remove.
17455         (insert_bypass): New.
17456         (process_decls): Use insert_bypass.
17457         (output_internal_insn_latency_func): Output all bypasses with the
17458         same input insn in one switch case.
17459
17460         * rtl.def (define_bypass): Describe bypass choice.
17461         * doc/md.texi (define_bypass): Ditto.
17462
17463 2009-03-27  Richard Guenther  <rguenther@suse.de>
17464
17465         * gimplify.c (mark_addressable): Export.
17466         * tree-flow.h (mark_addressable): Declare.
17467         * tree-ssa-loop-manip.c (create_iv): Mark the base addressable.
17468         * tree-ssa.c (verify_phi_args): Verify that address taken
17469         variables have TREE_ADDRESSABLE set.
17470
17471 2009-03-27  Richard Guenther  <rguenther@suse.de>
17472
17473         * fold-const.c (build_fold_addr_expr_with_type_1): Rename back to ...
17474         (build_fold_addr_expr_with_type): ... this.  Remove in_fold handling.
17475         Do not mark decls TREE_ADDRESSABLE.
17476         (build_fold_addr_expr): Adjust.
17477         (fold_addr_expr): Remove.
17478         (fold_unary): Use build_fold_addr_expr.
17479         (fold_comparison): Likewise.
17480         (split_address_to_core_and_offset): Likewise.
17481         * coverage.c (tree_coverage_counter_addr): Mark the array decl
17482         TREE_ADDRESSABLE.
17483         * gimplify.c (mark_addressable): Do not exclude RESULT_DECLs.
17484         (gimplify_modify_expr_to_memcpy): Mark source and destination
17485         addressable.
17486         * omp-low.c (create_omp_child_function): Mark the object decl
17487         TREE_ADDRESSABLE.
17488         (lower_rec_input_clauses): Mark the var we take the address of
17489         TREE_ADDRESSABLE.
17490         (lower_omp_taskreg): Mark the sender decl TREE_ADDRESSABLE.
17491
17492 2009-03-27  H.J. Lu  <hongjiu.lu@intel.com>
17493
17494         PR middle-end/39315
17495         * cfgexpand.c (expand_one_stack_var_at): Change alignment
17496         limit to MAX_SUPPORTED_STACK_ALIGNMENT.
17497
17498 2009-03-27  Richard Guenther  <rguenther@suse.de>
17499
17500         PR tree-optimization/39120
17501         * tree-ssa-structalias.c (handle_rhs_call): Fill out return
17502         constraints.
17503         (handle_lhs_call): Process return constraints.  Add escape
17504         constraints if necessary.
17505         (handle_const_call): Fill out return constraints.  Make nested
17506         case more precise.  Avoid consttmp if possible.
17507         (handle_pure_call): Fill out return constraints.  Avoid
17508         callused if possible.
17509         (find_func_aliases): Simplify call handling.
17510
17511 2009-03-27  Richard Guenther  <rguenther@suse.de>
17512
17513         PR tree-optimization/39120
17514         * tree-ssa-structalias.c (do_sd_constraint): Do not use CALLUSED
17515         as a representative.
17516         (solve_graph): Do propagate CALLUSED.
17517         (handle_pure_call): Use a scalar constraint from CALLUSED for
17518         the return value.
17519         (find_what_p_points_to): CALLUSED shall not appear in poins-to
17520         solutions.
17521
17522 2009-03-27  H.J. Lu  <hongjiu.lu@intel.com>
17523
17524         PR c/39323
17525         * c-common.c (handle_aligned_attribute): Properly check alignment
17526         overflow.  Use (1U << i) instead of (1 << i).
17527
17528         * emit-rtl.c (get_mem_align_offset): Use "unsigned int" for align.
17529
17530         * expr.h (get_mem_align_offset): Updated.
17531
17532         * tree.h (tree_decl_common): Change align to "unsigned int" and
17533         move it before pointer_alias_set.
17534
17535 2009-03-27  H.J. Lu  <hongjiu.lu@intel.com>
17536             Jakub Jelinek  <jakub@redhat.com>
17537
17538         PR target/38034
17539         * config/ia64/sync.md (cmpxchg_rel_<mode>): Replace input
17540         gr_register_operand with gr_reg_or_0_operand.
17541         (cmpxchg_rel_di): Likewise.
17542         (sync_lock_test_and_set<mode>): Likewise.
17543
17544 2009-03-27  H.J. Lu  <hongjiu.lu@intel.com>
17545
17546         * jump.c (rtx_renumbered_equal_p): Use subreg_get_info.
17547         (true_regnum): Likewise.
17548
17549         * rtlanal.c (subreg_info): Moved to ...
17550         * rtl.h (subreg_info): Here.  New.
17551         (subreg_get_info): New.
17552
17553         * rtlanal.c (subreg_get_info): Make it extern.
17554
17555 2009-03-27  H.J. Lu  <hongjiu.lu@intel.com>
17556
17557         PR target/39472
17558         * config/i386/i386.c (ix86_abi): New.
17559         (override_options): Handle -mabi=.
17560         (ix86_function_arg_regno_p): Replace DEFAULT_ABI with ix86_abi.
17561         (ix86_call_abi_override): Likewise.
17562         (init_cumulative_args): Likewise.
17563         (function_arg_advance): Likewise.
17564         (function_arg_64): Likewise.
17565         (function_arg): Likewise.
17566         (ix86_pass_by_reference): Likewise.
17567         (ix86_function_value_regno_p): Likewise.
17568         (ix86_build_builtin_va_list_abi): Likewise.
17569         (setup_incoming_varargs_64): Likewise.
17570         (is_va_list_char_pointer): Likewise.
17571         (ix86_init_machine_status): Likewise.
17572         (ix86_reg_parm_stack_space): Use enum calling_abi on call_abi.
17573         (ix86_function_type_abi): Return enum calling_abi.  Rewrite
17574         for 64bit.  Replace DEFAULT_ABI with ix86_abi.
17575         (ix86_function_abi): Make it static and return enum calling_abi.
17576         (ix86_cfun_abi): Return enum calling_abi.  Replace DEFAULT_ABI
17577         with ix86_abi.
17578         (ix86_fn_abi_va_list): Updated.
17579
17580         * config/i386/i386.h (ix86_abi): New.
17581         (STACK_BOUNDARY): Replace DEFAULT_ABI with ix86_abi.
17582         (CONDITIONAL_REGISTER_USAGE): Likewise.
17583         (CUMULATIVE_ARGS): Change call_abi type to enum calling_abi.
17584         (machine_function): Likewise.
17585
17586         * config/i386/i386.md (untyped_call): Replace DEFAULT_ABI
17587         with ix86_abi.
17588         * config/i386/cygming.h (TARGET_64BIT_MS_ABI): Likewise.
17589         (STACK_BOUNDARY): Likewise.
17590         * config/i386/mingw32.h (EXTRA_OS_CPP_BUILTINS): Likewise.
17591
17592         * config/i386/i386.opt (mabi=): New.
17593
17594         * config/i386/i386-protos.h (ix86_cfun_abi): Changed to
17595         return enum calling_abi.
17596         (ix86_function_type_abi): Likewise.
17597         (ix86_function_abi): Removed.
17598
17599         * doc/invoke.texi: Document -mabi= option for x86.
17600
17601 2009-03-27  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
17602
17603         * builtins.c (real_dconstp): Delete.
17604         (fold_builtin_logarithm): Remove inaccurate log(e) special case.
17605
17606 2009-03-27  Dodji Seketeli  <dodji@redhat.com>
17607             Jakub Jelinek  <jakub@redhat.com>
17608
17609         PR debug/37959
17610         * dwarf2out.c (dwarf_attr_name): Handle DW_AT_explicit attribute.
17611         (gen_subprogram_die): When a function is explicit, generate the
17612         DW_AT_explicit attribute.
17613         * langhooks.h (struct lang_hooks_for_decls): Add
17614         function_decl_explicit_p langhook.
17615         * langhooks-def.h (LANG_HOOKS_FUNCTION_DECL_EXPLICIT_P): Define.
17616         (LANG_HOOKS_DECLS): Add LANG_HOOKS_FUNCTION_DECL_EXPLICIT_P.
17617
17618 2009-03-27  Jakub Jelinek  <jakub@redhat.com>
17619
17620         * builtins.c (fold_builtin_memory_op): Optimize memmove
17621         into memcpy if we can prove source and destination don't overlap.
17622
17623         * tree-inline.c: Include gt-tree-inline.h.
17624         (clone_fn_id_num): New variable.
17625         (clone_function_name): New function.
17626         (tree_function_versioning): Use it.
17627         * Makefile.in (GTFILES): Add tree-inline.c.
17628
17629 2009-03-27  Mark Mitchell  <mark@codesourcery.com>
17630
17631         * BASE-VER: Change to 4.5.0.
17632
17633 2009-03-27  Xinliang David Li  <davidxl@google.com>
17634
17635         PR tree-optimization/39557
17636         * tree-ssa.c (warn_uninitialized_vars): free postdom info.
17637
17638 2009-03-27  Xinliang David Li  <davidxl@google.com>
17639
17640         PR tree-optimization/39548
17641         * tree-ssa-copy.c (copy_prop_visit_phi_node): Add copy
17642         candidate check.
17643
17644 2009-03-27  H.J. Lu  <hongjiu.lu@intel.com>
17645
17646         * c-common.c (pointer_int_sum): Use %wd on return from
17647         tree_low_cst.
17648
17649 2009-03-27  H.J. Lu  <hongjiu.lu@intel.com>
17650
17651         * c-common.c (pointer_int_sum): Use HOST_WIDE_INT_PRINT_DEC
17652         on return from tree_low_cst.
17653
17654 2009-03-27  Andrew Pinski  <andrew_pinski@playstation.sony.com>
17655
17656         PR c++/36799
17657         * ginclude/stdarg.h (va_copy): Define also for
17658         __GXX_EXPERIMENTAL_CXX0X__.
17659
17660 2009-03-27  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
17661
17662         PR c++/35652
17663         * builtins.h (c_strlen): Do not warn here.
17664         * c-typeck.c (build_binary_op): Adjust calls to pointer_int_sum.
17665         * c-common.c (pointer_int_sum): Take an explicit location.
17666         Warn about offsets out of bounds.
17667         * c-common.h (pointer_int_sum): Adjust declaration.
17668
17669 2009-03-26  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
17670
17671         * doc/invoke.texi (i386 and x86-64 Windows Options): Fix texinfo
17672         markup glitch.
17673
17674 2009-03-26  Jakub Jelinek  <jakub@redhat.com>
17675
17676         PR c++/39554
17677         * opts.c (warn_if_disallowed_function_p): Don't assume
17678         get_callee_fndecl must return non-NULL.
17679
17680 2009-03-26  Vladimir Makarov  <vmakarov@redhat.com>
17681
17682         PR rtl-optimization/39522
17683         * reload1.c (reload_as_needed): Invalidate reg_last_reload_reg too
17684         when reg_reloaded_valid is set.
17685
17686 2009-03-26  Ulrich Weigand  <Ulrich.Weigand@de.ibm.com>
17687
17688         * config/spu/divv2df3.c: New file.
17689         * config/spu/t-spu-elf (LIB2FUNCS_STATIC_EXTRA): Add it.
17690         (DPBIT_FUNCS): Filter out _div_df.
17691
17692 2009-03-26  Bernd Schmidt  <bernd.schmidt@analog.com>
17693
17694         * config/bfin/bfin.c (bfin_optimize_loop): If the LSETUP goes before
17695         a jump insn, count that jump in the distance to the loop start.
17696
17697 2009-03-25  Kaz Kojima  <kkojima@gcc.gnu.org>
17698
17699         PR target/39523
17700         * config/sh/sh.c (calc_live_regs): Fix condition for global
17701         registers except PIC_OFFSET_TABLE_REGNUM.
17702
17703 2009-03-25  Kai Tietz  <kai.tietz@onevision.com>
17704
17705         PR/39518
17706         * doc/invoke.texi (-mconsole): New.
17707         (-mcygwin): New.
17708         (-mno-cygwin): New.
17709         (-mdll): New.
17710         (-mnop-fun-dllimport): New.
17711         (-mthread): New.
17712         (-mwin32): New.
17713         (-mwindows): New.
17714         (sub section "i386 and x86-64 Windows Options"): New.
17715
17716 2009-03-25  Ralf Corsépius  <ralf.corsepius@rtems.org>
17717
17718         * config/arm/rtems-elf.h: Remove LINK_GCC_C_SEQUENCE_SPEC.
17719         * config/rs6000/t-rtems: Remove MULTILIB_EXTRA_OPTS.
17720
17721 2009-03-25  Richard Guenther  <rguenther@suse.de>
17722
17723         PR middle-end/39497
17724         * Makefile.in (dfp.o-warn): Use -fno-strict-aliasing instead
17725         of -Wno-error.
17726
17727 2009-03-25  Andrey Belevantsev  <abel@ispras.ru>
17728
17729         * config/ia64/ia64.c (ia64_set_sched_flags): Zero spec_info->mask when
17730         neither of haifa/selective schedulers are working.
17731
17732 2009-03-25  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
17733
17734         * doc/invoke.texi (Debugging Options): Fix description of
17735         -fno-merge-debug-strings.
17736
17737 2009-03-24  Hans-Peter Nilsson  <hp@axis.com>
17738
17739         * config/cris/libgcc.ver: New version-script.
17740         * config/cris/t-linux (SHLIB_MAPFILES): Use it.
17741
17742         * configure.ac <GAS features, nop mnemonic>: Add pattern
17743         crisv32-*-* for "nop".
17744         <GAS features, Thread-local storage>: Add item for CRIS and CRIS v32.
17745         * configure: Regenerate.
17746
17747 2009-03-24  Ira Rosen  <irar@il.ibm.com>
17748
17749         PR tree-optimization/39529
17750         * tree-vect-transform.c (vect_create_data_ref_ptr): Call
17751         mark_sym_for_renaming for the tag copied to the new vector
17752         pointer.
17753
17754 2009-03-24  Arthur Loiret  <aloiret@debian.org>
17755
17756         * config.host (alpha*-*-linux*): Use driver-alpha.o and alpha/x-alpha.
17757         * config/alpha/linux.h (host_detect_local_cpu): Declare, add to
17758         EXTRA_SPEC_FUNCTIONS.
17759         (MCPU_MTUNE_NATIVE_SPECS, DRIVER_SELF_SPECS): New macros.
17760         * config/alpha/driver-alpha.c, config/alpha/x-alpha: New.
17761         * doc/invoke.texi (DEC Alpha Options): Document 'native' value for
17762         -march and -mtune options.
17763
17764 2009-03-24  Ralf Corsépius  <ralf.corsepius@rtems.org>
17765
17766         * config/m68k/t-rtems: Add m5329 multilib.
17767
17768 2009-03-24  Dodji Seketeli  <dodji@redhat.com>
17769             Jakub Jelinek  <jakub@redhat.com>
17770
17771         PR debug/39524
17772         * dwarf2out.c (gen_variable_die): Avoid adding duplicate declaration
17773         nodes.
17774
17775 2009-03-23  Jakub Jelinek  <jakub@redhat.com>
17776
17777         PR c/39495
17778         * c-parser.c (c_parser_omp_for_loop): Call c_parser_binary_expression
17779         instead of c_parser_expression_conv, if original_code isn't one of the
17780         4 allowed comparison codes, fail.
17781
17782 2009-03-23  Richard Guenther  <rguenther@suse.de>
17783
17784         * cgraph.h (struct cgraph_node): Reorder fields for 64-bit hosts.
17785         * tree.h (struct tree_type): Likewise.
17786         * reload.h (struct insn_chain): Likewise.
17787         * dwarf2out.c (struct dw_loc_descr_struct): Likewise.
17788         * function.h (struct function): Likewise.
17789         * tree-ssa-structalias.c (struct equiv_class_label): Likewise.
17790
17791 2009-03-23  Jakub Jelinek  <jakub@redhat.com>
17792
17793         PR tree-optimization/39516
17794         * lambda-code.c (perfect_nestify): Fix type of the uboundvar variable.
17795
17796 2009-03-23  Bingfeng Mei  <bmei@broadcom.com>
17797
17798         * config.gcc (need_64bit_hwint): Make clear that need_64bit_hwint
17799         should be set true if BITS_PER_WORD of target is bigger than 32
17800
17801 2009-03-22  Hans-Peter Nilsson  <hp@axis.com>
17802
17803         * config/cris/linux.h (CRIS_LINK_SUBTARGET_SPEC):
17804         Translate -B-options to -rpath-link.  Correct existing
17805         rpath-link and conditionalize on !nostdlib.
17806
17807 2009-03-22  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
17808
17809         * doc/extend.texi (Function Attributes, Variable Attributes):
17810         Fix typos.
17811         * doc/invoke.texi (Debugging Options, Optimize Options)
17812         (i386 and x86-64 Options, MCore Options): Likewise.
17813
17814 2009-03-20  Jakub Jelinek  <jakub@redhat.com>
17815
17816         PR debug/37890
17817         * dwarf2out.c (gen_namespace_die): Add context_die argument and use
17818         it for block local namespace aliases.
17819         (gen_decl_die): Pass context_die to gen_namespace_die.
17820
17821 2009-03-19  Jakub Jelinek  <jakub@redhat.com>
17822
17823         PR c/39495
17824         * c-omp.c (c_finish_omp_for): Allow NE_EXPR with TREE_TYPE (decl)'s
17825         minimum or maximum value.
17826
17827 2009-03-19  Alexandre Oliva  <aoliva@redhat.com>
17828
17829         * reginfo.c (globalize_reg): Recompute derived reg sets.
17830
17831 2009-03-19  Ozkan Sezer  <sezeroz@gmail.com>
17832
17833         PR target/39063
17834         * libgcc2.c (mprotect): Do not use signed arguments for
17835         VirtualProtect, use DWORD arguments.  Also fix the 'may
17836         be used uninitialized' warning for the np variable.
17837
17838 2009-03-19  Jakub Jelinek  <jakub@redhat.com>
17839
17840         PR target/39496
17841         * config/i386/i386.c (ix86_function_regparm): Don't optimize local
17842         functions using regparm calling conventions when not optimizing.
17843         (ix86_function_sseregparm): Similarly for sseregparm calling
17844         conventions.
17845
17846 2009-03-19  Li Feng  <nemokingdom@gmail.com>
17847
17848         PR middle-end/39500
17849         * tree-data-ref.c (analyze_subscript_affine_affine): There is no
17850         dependence if the first conflict is after niter iterations.
17851
17852 2009-03-19  Hans-Peter Nilsson  <hp@axis.com>
17853
17854         PR middle-end/38609
17855         * config/cris/cris.h (FRAME_POINTER_REQUIRED): Force for all
17856         functions with dynamic stack-pointer adjustments.
17857
17858 2009-03-19  Ben Elliston  <bje@au.ibm.com>
17859
17860         * doc/invoke.texi (RS/6000 and PowerPC Options): Fix -msdata-data
17861         option; change to -msdata=data.
17862
17863 2009-03-18  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
17864
17865         * c.opt: Unify help texts for -Wdeprecated, -Wsystem-headers,
17866         and -fopenmp.
17867
17868 2009-03-18  Eric Botcazou  <ebotcazou@adacore.com>
17869
17870         PR target/35180
17871         * config/sparc/sparc.md (do_builtin_setjmp_setup): Prettify asm output.
17872
17873 2009-03-18  Sandra Loosemore  <sandra@codesourcery.com>
17874
17875         * doc/invoke.texi (Code Gen Options): Expand discussion of
17876         -fno-common.
17877
17878 2009-03-18  Jakub Jelinek  <jakub@redhat.com>
17879
17880         * dse.c (struct group_info): Reorder fields for 64-bit hosts.
17881         * matrix-reorg.c (struct matrix_info): Likewise.
17882         * tree-ssa-loop-ivopts.c (struct ivopts_data): Likewise.
17883         * rtl.h (struct mem_attrs): Likewise.
17884         * df.h (struct df): Likewise.
17885         * tree-data-ref.h (struct data_dependence_relation): Likewise.
17886         * ira-int.h (struct ira_allocno): Likewise.
17887         * df-scan.c (struct df_collection_rec): Likewise.
17888         * ira.c (struct equivalence): Likewise.
17889         * function.c (struct temp_slot): Likewise.
17890         * cfgloop.h (struct loop): Likewise.
17891
17892         PR debug/39485
17893         * function.c (use_register_for_decl): When not optimizing, disregard
17894         register keyword for variables with types containing methods.
17895
17896 2009-03-18  Sebastian Pop  <sebastian.pop@amd.com>
17897
17898         PR middle-end/39447
17899         * graphite.c (exclude_component_ref): Renamed contains_component_ref_p.
17900         (is_simple_operand): Call contains_component_ref_p before calling data
17901         reference analysis that would fail on COMPONENT_REFs.
17902
17903         * tree-vrp.c (search_for_addr_array): Fix formatting.
17904
17905 2009-03-18  Richard Guenther  <rguenther@suse.de>
17906
17907         * tree-vect-transform.c (vect_loop_versioning): Fold the
17908         generated comparisons.
17909         * tree-vectorizer.c (set_prologue_iterations): Likewise.
17910         (slpeel_tree_peel_loop_to_edge): Likewise.
17911
17912 2009-03-17  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
17913
17914         PR middle-end/37805
17915         * opts.c (print_specific_help): In addition to `undocumented',
17916         accept `separate' and `joined' flags if passed alone.  Describe
17917         output by the first matched one of those.
17918         (common_handle_option): Skip over empty strings.
17919         * gcc.c (display_help): Fix help string for `--help='.
17920         * doc/invoke.texi (Option Summary, Overall Options): With
17921         `--help=', classes and qualifiers can both be repeated, but
17922         only the latter can be negated.  One should not pass only
17923         negated qualifiers.  Fix markup and examples.
17924
17925         Revert
17926         2008-10-14  Jakub Jelinek  <jakub@redhat.com>
17927         PR middle-end/37805
17928         * opts.c (common_handle_option): Don't ICE on -fhelp=joined
17929         and -fhelp=separate.
17930
17931 2009-03-17  Jing Yu  <jingyu@google.com>
17932
17933         PR middle-end/39378
17934         * function.h (struct rtl_data): Move is_thunk from here...
17935         (struct function): ...to here.
17936         * cp/method.c (use_thunk): Change is_thunk from crtl to cfun.
17937         * varasm.c (assemble_start_function): Change is_thunk from crtl to
17938         cfun.
17939         * config/alpha/alpha.c (alpha_sa_mask): Change is_thunk from crtl to
17940         cfun.
17941         (alpha_does_function_need_gp, alpha_start_function): Likewise.
17942         (alpha_output_function_end_prologue): Likewise.
17943         (alpha_end_function, alpha_output_mi_thunk_osf): Likewise.
17944         * config/rs6000/rs6000.c (rs6000_ra_ever_killed): Likewise.
17945         (rs6000_output_function_epilogue): Likewise.
17946         * config/arm/arm.h (ARM_DECLARE_FUNCTION_NAME): Likewise.
17947
17948 2009-03-17  Uros Bizjak  <ubizjak@gmail.com>
17949
17950         PR target/39482
17951         * config/i386/i386.md (*truncdfsf_mixed): Avoid combining registers
17952         from different units in a single alternative.
17953         (*truncdfsf_i387): Ditto.
17954         (*truncxfsf2_mixed): Ditto.
17955         (*truncxfdf2_mixed): Ditto.
17956
17957 2009-03-17  Jakub Jelinek  <jakub@redhat.com>
17958
17959         * dwarf2out.c (dwarf2out_imported_module_or_decl_1): Allow
17960         non-NAMESPACE_DECL IMPORTED_DECL_ASSOCIATED_DECL.
17961
17962         PR debug/39474
17963         * tree-ssa-live.c (remove_unused_locals): Don't remove local
17964         unused non-artificial variables when not optimizing.
17965
17966         PR debug/39471
17967         * dwarf2out.c (dwarf2out_imported_module_or_decl_1): Emit
17968         DW_TAG_imported_module even if decl is IMPORTED_DECL with
17969         NAMESPACE_DECL in its DECL_INITIAL.
17970
17971         PR middle-end/39443
17972         * optabs.c (set_user_assembler_libfunc): New function.
17973         * expr.h (set_user_assembler_libfunc): New prototype.
17974         * c-common.c: Include libfuncs.h.
17975         (set_builtin_user_assembler_name): Call set_user_assembler_libfunc
17976         for memcmp, memset, memcpy, memmove and abort.
17977         * Makefile.in (c-common.o): Depend on libfuncs.h.
17978
17979         PR debug/39412
17980         * dwarf2out.c (gen_inlined_enumeration_type_die,
17981         gen_inlined_structure_type_die, gen_inlined_union_type_die,
17982         gen_tagged_type_instantiation_die): Removed.
17983         (gen_decl_die): For TYPE_DECL_IS_STUB with non-NULL decl_origin
17984         do nothing.
17985
17986 2009-03-17  Janis Johnson  <janis187@us.ibm.com>
17987
17988         PR testsuite/38526
17989         * Makefile.in (site.exp): Rename TEST_GCC_EXEC_PREFIX and comment
17990         its use.
17991         (check-%): Don't set GCC_EXEC_PREFIX when invoking runtest.
17992         (check-parallel-%): Ditto.
17993         (check-consistency): Ditto.
17994
17995 2009-03-17  Kai Tietz  <kai.tietz@onevision.com>
17996
17997         * ipa-struct-reorg.c (create_general_new_stmt): Initialize
17998         local variable rhs by NULL_TREE.
17999
18000 2009-03-17  H.J. Lu  <hongjiu.lu@intel.com>
18001
18002         PR target/39477
18003         * doc/extend.texi: Correct register behavior for regparm on Intel 386.
18004
18005 2009-03-17  H.J. Lu  <hongjiu.lu@intel.com>
18006
18007         PR target/39476
18008         * config/i386/i386.c (ix86_function_regparm): Rewrite for 64bit.
18009
18010 2009-03-17  H.J. Lu  <hongjiu.lu@intel.com>
18011
18012         PR target/39473
18013         * config/i386/i386.c (ix86_expand_call): Check extra clobbers
18014         for ms->sysv ABI calls only in 64bit mode.
18015
18016         * config/i386/i386.md (untyped_call): Support 32bit.
18017
18018 2009-03-16  H.J. Lu  <hongjiu.lu@intel.com>
18019
18020         * doc/extend.texi: Replace x86_65 with x86_64.
18021
18022 2009-03-16  Jakub Jelinek  <jakub@redhat.com>
18023
18024         PR tree-optimization/39455
18025         * tree-ssa-loop-niter.c (number_of_iterations_lt_to_ne): Fix types
18026         mismatches for POINTER_TYPE_P (type).
18027         (number_of_iterations_le): Likewise.
18028
18029 2009-03-16  Hariharan Sandanagobalane  <hariharan@picochip.com>
18030
18031         * config/picochip/picochip.c: Removed profiling support.
18032         * config/picochip/picochip.md: Removed profiling instruction.
18033         * config/picochip/picochip.h: Removed profiling builtin.
18034
18035 2009-03-16  Joseph Myers  <joseph@codesourcery.com>
18036
18037         * doc/install.texi (--with-host-libstdcxx): Document.
18038
18039 2009-03-14  Anatoly Sokolov  <aesok@post.ru>
18040
18041         PR target/34299
18042         * config/avr/avr.c (avr_handle_fndecl_attribute): Move code for
18043         generate a warning if the function name does not begin with
18044         "__vector" and the function has either the 'signal' or 'interrupt'
18045         attribute, from here to ...
18046         (avr_declare_function_name): ...here. New function.
18047         * config/avr/avr.h (ASM_DECLARE_FUNCTION_NAME): Redefine.
18048         * config/avr/avr-protos.h (avr_declare_function_name): Declare.
18049
18050 2009-03-14  Jakub Jelinek  <jakub@redhat.com>
18051
18052         PR bootstrap/39454
18053         * cse.c (fold_rtx): Don't modify original const_arg1 when
18054         canonicalizing SHIFT_COUNT_TRUNCATED shift count, do it on a
18055         separate variable instead.
18056         * rtlanal.c (nonzero_bits1) <case ASHIFTRT>: Don't assume anything
18057         from out of range shift counts.
18058         (num_sign_bit_copies1) <case ASHIFTRT, case ASHIFT>: Similarly.
18059
18060 2009-03-13  Catherine Moore  <clm@codesourcery.com>
18061
18062         * config/i386/x-mingw32 (host-mingw32.o): Replace
18063         diagnostic.h with $(DIAGNOSTIC_H).
18064
18065 2009-03-12  Jakub Jelinek  <jakub@redhat.com>
18066
18067         PR target/39431
18068         * config/i386/predicates.md (cmpxchg8b_pic_memory_operand): New
18069         predicate.
18070         * config/i386/sync.md (sync_compare_and_swap<mode>,
18071         sync_compare_and_swap_cc<mode>): For DImode with -m32 -fpic check
18072         if operands[1] is cmpxchg8b_pic_memory_operand, if not force address
18073         into a register.
18074         (sync_double_compare_and_swapdi_pic,
18075         sync_double_compare_and_swap_ccdi_pic): Require operand 1 to be
18076         cmpxchg8b_pic_memory_operand instead of just memory_operand.
18077
18078 2009-03-12  H.J. Lu  <hongjiu.lu@intel.com>
18079
18080         PR target/39445
18081         * config/i386/i386.c (ix86_expand_push): Don't set memory alignment.
18082
18083 2009-03-12  H.J. Lu  <hongjiu.lu@intel.com>
18084
18085         PR target/39327
18086         * config/i386/sse.md (avx_addsubv8sf3): Correct item bits.
18087         (avx_addsubv4df3): Likewise.
18088         (*avx_addsubv4sf3): Likewise.
18089         (sse3_addsubv4sf3): Likewise.
18090
18091 2009-03-12  H.J. Lu  <hongjiu.lu@intel.com>
18092
18093         PR target/38824
18094         * config/i386/i386.md: Compare REGNO on the new peephole2 patterns.
18095
18096 2009-03-12  Vladimir Makarov  <vmakarov@redhat.com>
18097
18098         PR debug/39432
18099         * ira-int.h (struct allocno): Fix comment for calls_crossed_num.
18100         * ira-conflicts.c (ira_build_conflicts): Prohibit call used
18101         registers for allocnos created from user-defined variables.
18102
18103 2009-03-11  Ulrich Weigand  <Ulrich.Weigand@de.ibm.com>
18104
18105         PR target/39181
18106         * config/spu/spu.c (spu_expand_mov): Handle invalid subregs
18107         of non-integer mode as well.
18108
18109 2009-03-11  Adam Nemet  <anemet@caviumnetworks.com>
18110
18111         * gimplify.c (gimplify_call_expr): Don't set CALL_CANNOT_INLINE_P
18112         for functions for which the parameter types are unknown.
18113
18114 2009-03-11  Jakub Jelinek  <jakub@redhat.com>
18115
18116         PR target/39137
18117         * cfgexpand.c (get_decl_align_unit): Use LOCAL_DECL_ALIGNMENT macro.
18118         * defaults.h (LOCAL_DECL_ALIGNMENT): Define if not yet defined.
18119         * config/i386/i386.h (LOCAL_DECL_ALIGNMENT): Define.
18120         * config/i386/i386.c (ix86_local_alignment): For
18121         -m32 -mpreferred-stack-boundary=2 use 32-bit alignment for
18122         long long variables on the stack to avoid dynamic realignment.
18123         Allow the first argument to be a decl rather than type.
18124         * doc/tm.texi (LOCAL_DECL_ALIGNMENT): Document.
18125
18126 2009-03-11  Nick Clifton  <nickc@redhat.com>
18127
18128         PR target/5362
18129         * config/mcore/mcore.opt: Remove deprecated m4align and m8align
18130         options.
18131         Add description to mno-lsim option.
18132         * config/mcore/mcore.h: Remove comment about deprecated m4align
18133         option.
18134         (TARGET_DEFAULT): Remove deprecated MASK_M8ALIGN.
18135         * doc/invoke.texi: Add description of mno-lsim and
18136         mstack-increment options.
18137
18138         * config/fr30/fr30.opt: Document the -mno-lsim option.
18139         * doc/invoke.texi: Add descriptions of the FR30's -msmall-model
18140         and -mno-lsim options.
18141
18142 2009-03-11  Ulrich Weigand  <Ulrich.Weigand@de.ibm.com>
18143
18144         * fold-const.c (fold_comparison): Only call fold_inf_compare
18145         if the mode supports infinities.
18146
18147 2009-03-11  Jason Merrill  <jason@redhat.com>
18148
18149         PR debug/39086
18150         * tree-nrv.c (tree_nrv): Don't do this optimization if the front
18151         end already did.  Notice GIMPLE_CALL modifications of the result.
18152         Don't copy debug information from an ignored decl or a decl from
18153         another function.
18154
18155 2009-03-10  Richard Guenther  <rguenther@suse.de>
18156             Nathan Froyd  <froydnj@codesourcery.com>
18157
18158         PR middle-end/37850
18159         * libgcc2.c (__mulMODE3): Use explicit assignments to form the result.
18160         (__divMODE3): Likewise.
18161
18162 2009-03-09  Jakub Jelinek  <jakub@redhat.com>
18163
18164         PR tree-optimization/39394
18165         * gimplify.c (gimplify_type_sizes): Gimplify DECL_SIZE and
18166         DECL_SIZE_UNIT of variable length FIELD_DECLs.
18167
18168 2009-03-09  Andreas Krebbel  <Andreas.Krebbel@de.ibm.com>
18169
18170         * recog.c (verfiy_changes): Disallow renaming of hard regs in
18171         inline asms for register asm ("") declarations.
18172
18173 2009-03-09  Eric Botcazou  <ebotcazou@adacore.com>
18174
18175         * fold-const.c (fold_unary): Fix comment.
18176
18177 2009-03-07  Jan Hubicka  <jh@suse.cz>
18178
18179         PR target/39361
18180         * tree-inline.c (setup_one_parameter): Do replacement of const
18181         argument by constant in SSA form.
18182
18183 2009-03-07  Ulrich Weigand  <Ulrich.Weigand@de.ibm.com>
18184
18185         PR middle-end/38028
18186         * function.c (assign_parm_setup_stack): Use STACK_SLOT_ALIGNMENT to
18187         determine alignment passed to assign_stack_local.
18188         (assign_parms_unsplit_complex): Likewise.
18189         * except.c (sjlj_build_landing_pads): Likewise.
18190
18191 2009-03-06  Jakub Jelinek  <jakub@redhat.com>
18192
18193         PR middle-end/39360
18194         * tree-flow.h (add_referenced_var): Return bool instead of void.
18195         * tree-dfa.c (add_referenced_var): Return result of
18196         referenced_var_check_and_insert call.
18197         * tree-inline.c (expand_call_inline): Call add_referenced_var instead
18198         of referenced_var_check_and_insert.
18199
18200         PR debug/39372
18201         * dwarf2out.c (add_abstract_origin_attribute): Return origin_die.
18202         (gen_variable_die): Emit DW_AT_location on abstract static variable's
18203         DIE, don't emit it if abstract origin already has it.
18204         * tree-cfg.c (remove_useless_stmts_bind): GIMPLE_BINDs with any
18205         BLOCK_NONLOCALIZED_VARS in its gimple_bind_block aren't useless.
18206
18207 2009-03-06  Jan-Benedict Glaw  <jbglaw@lug-owl.de>
18208
18209         * genpreds.c (needs_variable): Fix parentheses at variable name
18210         detection.
18211         (write_tm_constrs_h): Indent generated code.
18212
18213 2009-03-06  Ramana Radhakrishnan  <ramana.radhakrishnan@arm.com>
18214
18215         * doc/extend.texi (Function Attributes): Add documentation
18216         for isr attributes.
18217
18218 2009-03-06  Jakub Jelinek  <jakub@redhat.com>
18219
18220         PR debug/39387
18221         * dwarf2out.c (dwarf2out_imported_module_or_decl_1): For IMPORTED_DECL
18222         take locus from its DECL_SOURCE_LOCATION instead of input_location.
18223
18224 2009-03-05  Bernd Schmidt  <bernd.schmidt@analog.com>
18225
18226         * config/bfin/bfin.c (bfin_discover_loop): When retrying fails, mark
18227         the loop as bad.
18228
18229 2009-03-05  Jakub Jelinek  <jakub@redhat.com>
18230
18231         PR debug/39379
18232         * tree-cfg.c (remove_useless_stmts_bind): Don't remove GIMPLE_BINDs
18233         with blocks containing IMPORTED_DECLs in BLOCK_VARS.
18234
18235 2009-03-05  Uros Bizjak  <ubizjak@gmail.com>
18236
18237         * config/i386/i386.md (R8_REG, R9_REG): New constants.
18238         * config/i386/i386.h (CONDITIONAL_REGISTER_USAGE): Use named
18239         constants instead of magic numbers.
18240         (HARD_REGNO_CALLER_SAVE_MODE): Ditto.
18241         (QI_REG_P): Ditto.
18242         * config/i386/i386.c (x86_64_int_parameter_registers): Ditto.
18243         (x86_64_ms_abi_int_parameter_registers): Ditto.
18244         (x86_64_int_return_registers): Ditto.
18245         (ix86_maybe_switch_abi): Ditto.
18246         (ix86_expand_call): Ditto for clobbered_registers array.
18247         (ix86_hard_regno_mode_ok): Ditto.
18248         (x86_extended_QIreg_mentioned_p): Ditto.
18249
18250 2009-03-05  J"orn Rennecke  <joern.rennecke@arc.com>
18251
18252         PR tree-optimization/39349
18253         * cse.c (cse_insn): Fix loop to stop at VOIDmode.
18254
18255         * combine.c (gen_lowpart_for_combine): Use omode when generating
18256         clobber.
18257
18258 2009-03-04  J"orn Rennecke  <joern.rennecke@arc.com>
18259
18260         PR rtl-optimization/39235
18261         * loop-iv.c (get_simple_loop_desc): Use XCNEW.
18262
18263 2009-03-04  Zdenek Dvorak  <ook@ucw.cz>
18264
18265         * graphite.c (nb_reductions_in_loop): Update simple_iv arguments.
18266
18267 2009-03-04  Richard Guenther  <rguenther@suse.de>
18268
18269         PR tree-optimization/39362
18270         * tree-ssa-sccvn.c (visit_use): Stores and copies from SSA_NAMEs
18271         that occur in abnormal PHIs should be varying.
18272
18273 2009-03-04  Zdenek Dvorak  <ook@ucw.cz>
18274
18275         * tree-scalar-evolution.c (analyze_scalar_evolution_in_loop):
18276         Extend comments.
18277         (simple_iv):  Take loop as an argument instead of statement.
18278         * tree-scalar-evolution.h (simple_iv): Declaration changed.
18279         * tree-ssa-loop-niter.c (number_of_iterations_exit): Update calls
18280         to simple_iv.
18281         * tree-ssa-loop-ivopts.c (determine_biv_step, find_givs_in_stmt_scev):
18282         Ditto.
18283         * tree-parloops.c (loop_parallel_p, canonicalize_loop_ivs): Ditto.
18284         * matrix-reorg.c (analyze_transpose): Ditto.
18285         * tree-data-ref.c (dr_analyze_innermost): Ditto.
18286         * tree-vect-analyze.c (vect_analyze_data_refs): Ditto.
18287         * tree-predcom.c (ref_at_iteration): Ditto.
18288         * tree-ssa-loop-prefetch.c (idx_analyze_ref): Ditto.
18289
18290 2009-03-04  Richard Guenther  <rguenther@suse.de>
18291
18292         PR tree-optimization/39358
18293         * tree-ssa-structalias.c (do_sd_constraint): Fix check for
18294         escaped_id and callused_id.
18295         (solve_graph): Likewise.
18296
18297 2009-03-04  Richard Guenther  <rguenther@suse.de>
18298
18299         PR tree-optimization/39339
18300         * tree-sra.c (try_instantiate_multiple_fields): Make it
18301         no longer ICE on the above.
18302
18303 2009-03-03  Joseph Myers  <joseph@codesourcery.com>
18304
18305         * emit-rtl.c (adjust_address_1): Reduce offset to a signed value
18306         that fits within Pmode.
18307
18308 2009-03-03  Steve Ellcey  <sje@cup.hp.com>
18309
18310         PR middle-end/10109
18311         * tm.texi (LIBCALL_VALUE): Update description.
18312
18313 2009-03-03  Steve Ellcey  <sje@cup.hp.com>
18314
18315         PR middle-end/34443
18316         * doc/extend.texi (section): Update description.
18317
18318 2009-03-03  H.J. Lu  <hongjiu.lu@intel.com>
18319
18320         PR middle-end/39345
18321         * tree-inline.c (remapped_type): New.
18322         (can_be_nonlocal): Call remapped_type instead of remap_type.
18323
18324 2009-03-03  Jakub Jelinek  <jakub@redhat.com>
18325
18326         PR fortran/39354
18327         * gimplify.c (goa_stabilize_expr): Handle tcc_comparison,
18328         TRUTH_ANDIF_EXPR and TRUTH_ORIF_EXPR.
18329
18330 2009-03-03  Richard Guenther  <rguenther@suse.de>
18331
18332         PR middle-end/39272
18333         * tree.c (tree_nonartificial_location): New function.
18334         * tree.h (tree_nonartificial_location): Declare.
18335         * builtins.c (expand_builtin_memory_chk): Provide location
18336         of the call location for artificial function pieces.
18337         (maybe_emit_chk_warning): Likewise.
18338         (maybe_emit_sprintf_chk_warning): Likewise.
18339         (maybe_emit_free_warning): Likewise.
18340         * expr.c (expand_expr_real_1): Likewise.
18341
18342 2009-03-03  Jakub Jelinek  <jakub@redhat.com>
18343
18344         PR tree-optimization/39343
18345         * tree-ssa-ccp.c (maybe_fold_offset_to_address): Don't check if
18346         COMPONENT_REF t has ARRAY_TYPE.
18347
18348 2009-03-02  Sebastian Pop  <sebastian.pop@amd.com>
18349
18350         PR middle-end/39335
18351         * tree-parloops.c (canonicalize_loop_ivs): Call fold_convert
18352         when the type precision of the induction variable should be
18353         larger than the type precision of nit.
18354         (gen_parallel_loop): Update use of canonicalize_loop_ivs.
18355         * graphite.c (graphite_loop_normal_form): Same.
18356         * tree-flow.h (canonicalize_loop_ivs): Update declaration.
18357
18358 2009-03-02  Uros Bizjak  <ubizjak@gmail.com>
18359
18360         * config/i386/i386.md (ST?_REG, MM?_REG): New constants.
18361         (*call_1_rex64_ms_sysv): Use named constants instead of magic
18362         numbers to describe clobbered registers.
18363         (*call_value_0_rex64_ms_sysv): Ditto.
18364         * config/i386/mmx.md (mmx_emms): Ditto.
18365         (mmx_femms): Ditto.
18366
18367 2009-03-02  Richard Sandiford  <rdsandiford@googlemail.com>
18368
18369         * config/mips/mips.c (mips_mdebug_abi_name): Fix the handling
18370         of ABI_64.
18371
18372 2009-03-02  Ulrich Weigand  <Ulrich.Weigand@de.ibm.com>
18373
18374         * config/spu/spu.c (TARGET_SECTION_TYPE_FLAGS): Define.
18375         (spu_section_type_flags): New function.
18376
18377 2009-03-02  Uros Bizjak  <ubizjak@gmail.com>
18378
18379         * config/i386/i386.h (CONDITIONAL_REGISTER_USAGE): Do not copy
18380         reg_class_contents of FLOAT_REGS into a temporary.
18381
18382 2009-03-02  Richard Guenther  <rguenther@suse.de>
18383             Ira Rosen  <irar@il.ibm.com>
18384
18385         PR tree-optimization/39318
18386         * tree-vect-transform.c (vectorizable_call): Transfer the EH region
18387         information to the vectorized statement.
18388
18389 2009-03-01  Uros Bizjak  <ubizjak@gmail.com>
18390
18391         * config/i386/i386.h (CONDITIONAL_REGISTER_USAGE): Do not shadow "i"
18392         variable.  Use defined names instead of magic constants for REX SSE
18393         registers.
18394
18395 2009-03-01  Richard Guenther  <rguenther@suse.de>
18396
18397         PR tree-optimization/39331
18398         * omp-low.c (lower_send_shared_vars): Do not receive new
18399         values for the reference of DECL_BY_REFERENCE parms or results.
18400
18401 2009-03-01  Jan Hubicka  <jh@suse.cz>
18402
18403         PR debug/39267
18404         * tree.h (BLOCK_NONLOCALIZED_VARS, BLOCK_NUM_NONLOCALIZED_VARS,
18405         BLOCK_NONLOCALIZED_VAR): New macros.
18406         (tree_block): Add nonlocalized_vars.
18407         * dwarf2out.c (gen_formal_parameter_die, gen_variable_die,
18408         gen_decl_die): Add origin argument.  Allow generation of die with
18409         origin at hand only.
18410         (gen_member_die, gen_type_die_with_usage, force_decl_die,
18411         declare_in_namespace, gen_namescpace_die, dwarf2out_decl): Update use
18412         of gen_*.
18413         (gen_block_die): Fix checking for unused blocks.
18414         (process_scope_var): Break out from .... ; work with origins only.
18415         (decls_for_scope) ... here; process nonlocalized list.
18416         (dwarf2out_ignore_block): Look for nonlocalized vars.
18417         * tree-ssa-live.c (remove_unused_scope_block_p): Look for nonlocalized
18418         vars.
18419         (dump_scope_block): Dump them.
18420         * tree-inline.c (remap_decls): Handle nonlocalized vars.
18421         (remap_block): Likewise.
18422         (can_be_nonlocal): New predicate.
18423         (copy_bind_expr, copy_gimple_bind): Update use of remap_block.
18424
18425 2009-03-01  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
18426
18427         * configure: Regenerate.
18428
18429 2009-03-01  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
18430
18431         * optc-gen.awk: No need to duplicate option flags twice.
18432         Reuse help texts for duplicate options which do not have any.
18433
18434         * gcc.c (display_help): Document --version.
18435
18436         * gcc.c (main): If print_help_list and verbose_flag, ensure
18437         driver output comes before subprocess output.
18438
18439         * optc-gen.awk: Assign all remaining fields to help string,
18440         space-separated, for multi-line help in *.opt.
18441
18442         * doc/invoke.texi (Warning Options): -Wsync-nand is C/C++ only.
18443         -Wno-pedantic-ms-format is for MinGW targets only.
18444
18445         * doc/options.texi (Option file format): Fix bad indentation,
18446         restoring dropped sentence.
18447
18448 2009-02-28  Jan Hubicka  <jh@suse.cz>
18449
18450         * tree-inline.c (tree_function_versioning): Output debug info.
18451
18452 2009-02-28  Jan Hubicka  <jh@suse.cz>
18453
18454         PR debug/39267
18455         * tree-inline.c (setup_one_parameter): Do not copy propagate
18456         arguments when not optimizing.
18457
18458 2009-02-28  H.J. Lu  <hongjiu.lu@intel.com>
18459
18460         PR target/39327
18461         * config/i386/sse.md (avx_addsubv8sf3): Correct item bits.
18462         (avx_addsubv4df3): Likewise.
18463         (*avx_addsubv4sf3): Likewise.
18464         (sse3_addsubv4sf3): Likewise.
18465         (*avx_addsubv2df3): Likewise.
18466         (sse3_addsubv2df3): Likewise.
18467         (avx_unpckhps256): Correct item selectors.
18468         (avx_unpcklps256): Likewise.
18469         (avx_unpckhpd256): Likewise.
18470         (avx_unpcklpd256): Likewise.
18471
18472 2009-02-28  Jan Hubicka  <jh@suse.cz>
18473
18474         * tree-inline.c (expand_call_inline): Avoid duplicate declarations of
18475         static vars.
18476         (copy_arguments_for_versioning): If var is declared don't declare it.
18477         (tree_function_versioning): First setup substitutions and then copy
18478         args.
18479
18480 2009-02-27  Jan Hubicka  <jh@suse.cz>
18481
18482         PR debug/39267
18483         * cgraph.h (varpool_output_debug_info): Remove.
18484         * cgraphunit.c (varpool_output_debug_info): Remove.
18485         * dwarf2out.c (deferred_locations_struct): New struct
18486         (deferred_locations): New type.
18487         (deferred_locations_list): New static var.
18488         (deffer_location): New function.
18489         (gen_variable_die): Use it.
18490         (decls_for_scope): Output info on local static vars.
18491         (dwarf2out_finish): Process deferred locations.
18492         * varpool.c (varpool_output_debug_info): Remove.
18493
18494 2009-02-27  Jan Hubicka  <jh@suse.cz>
18495
18496         PR debug/39267
18497         * tree.h (TREE_PROTECTED): Fix comment.
18498         (BLOCK_HANDLER_BLOCK): Remove.
18499         (struct tree_block): Remove handler_block add body_block.
18500         (inlined_function_outer_scope_p): New.
18501         (is_body_block): Remove.
18502         * dbxout.c (dbxout_block): Remove BLOCK_HANDLER_BLOCK.
18503         * dwarf2out.c (is_inlined_entry_point): Remove.
18504         (add_high_low_attributes): Use inlined_function_outer_scope_p.
18505         (gen_block_die): Use is_inlined_entry_point check.  Remove body block
18506         code.
18507         * langhooks.h (struct lang_hooks): Remove no_bodu_blocks.
18508         * gimplify.c (gimplify_expr): Gimplify body blocks.
18509         * tree-ssa-live.c (remove_unused_scope_block_p): Allow removing wrapper
18510         block with multiple subblocks.
18511         (dump_scope_block): Prettier output; dump more flags and info.
18512         (dump_scope_blocks): New.
18513         (remove_unused_locals): Use dump_scope_blocks.
18514         * tree-flow.h (dump_scope_blocks): Declare.
18515         * tree-cfg.c (execute_build_cfg): Dump scope blocks.
18516         * stmt.c (is_body_block): Remove.
18517         * tree-inline.c (remap_block): Copy BODY_BLOCK info.
18518         * langhooks-def.h (LANG_HOOKS_NO_BODY_BLOCKS): Remove.
18519
18520 2009-02-27  Sebastian Pop  <sebastian.pop@amd.com>
18521
18522         PR middle-end/39308
18523         * graphite.c (graphite_loop_normal_form): Do not call
18524         number_of_iterations_exit from a gcc_assert.
18525
18526 2009-02-27  Andreas Krebbel  <Andreas.Krebbel@de.ibm.com>
18527
18528         * config/s390/s390.c (s390_swap_cmp): Look for conditional
18529         jumps if COND is NULL.
18530         (find_cond_jump): New function.
18531         (s390_z10_optimize_cmp): Handling for reg-reg compares added.
18532         * config/s390/s390.md: Remove z10_cobra attribute value.
18533
18534 2009-02-26  Uros Bizjak  <ubizjak@gmail.com>
18535
18536         * config/alpha/alpha.h (alpha_expand_mov): Return false if
18537         force_const_mem returns NULL_RTX.
18538
18539 2009-02-26  Jan Hubicka  <jh@suse.cz>
18540
18541         PR debug/39267
18542         * cgraph.h (varpool_output_debug_info): Remove.
18543         * cgraphunit.c (varpool_output_debug_info): Remove.
18544         * dwarf2out.c (deferred_locations_struct): New struct
18545         (deferred_locations): New type.
18546         (deferred_locations_list): New static var.
18547         (deffer_location): New function.
18548         (gen_variable_die): Use it.
18549         (decls_for_scope): Output info on local static vars.
18550         (dwarf2out_finish): Process deferred locations.
18551         * varpool.c (varpool_output_debug_info): Remove.
18552
18553 2009-02-25  H.J. Lu  <hongjiu.lu@intel.com>
18554
18555         PR rtl-optimization/39241
18556         * jump.c (rtx_renumbered_equal_p): Remove 2 superfluous calls
18557         to subreg_offset_representable_p.
18558
18559 2009-02-25  Paolo Bonzini  <bonzini@gnu.org>
18560
18561         * regmove.c (regmove_optimize): Conform to struct rtl_opt_pass
18562         execute function prototype.  Get f and nregs from max_reg_num
18563         and get_insns.  Remove the first backward pass as it's dead,
18564         guard the forward pass by flag_expensive_optimizations.
18565         (rest_of_handle_regmove): Delete.
18566         (pass_regmove): Replace it with regmove_optimize.
18567
18568 2009-02-25  Martin Jambor  <mjambor@suse.cz>
18569
18570         PR tree-optimization/39259
18571         * tree-inline.c (initialize_cfun): Remove asserts for calls_setjmp and
18572         calls_alloca function flags.
18573         (copy_bb): Set calls_setjmp and alls_alloca function flags if such
18574         calls are detected.
18575
18576 2009-02-25  Paolo Bonzini  <bonzini@gnu.org>
18577
18578         * regmove.c (discover_flags_reg, flags_set_1, mark_flags_life_zones,
18579         flags_set_1_rtx, flags_set_1_set): Delete.
18580         (regmove_optimize): Do not call mark_flags_life_zones.
18581
18582 2009-02-24  Julian Brown  <julian@codesourcery.com>
18583
18584         PR target/35965
18585         * config/arm/arm.c (require_pic_register): Only set
18586         cfun->machine->pic_reg once per function.
18587
18588 2009-02-24  Sandra Loosemore  <sandra@codesourcery.com>
18589
18590         * doc/invoke.texi (Link Options): Document an easier way to pass
18591         options that take arguments to the GNU linker using -Xlinker and -Wl.
18592
18593 2009-02-24  Steve Ellcey  <sje@cup.hp.com>
18594
18595         PR target/33785
18596         * doc/tm.texi (TARGET_C99_FUNCTIONS): Fix description.
18597
18598 2009-02-24  Richard Guenther  <rguenther@suse.de>
18599
18600         PR debug/39285
18601         * dwarf2out.c (gen_enumeration_type_die): Handle CONST_DECLs.
18602
18603 2009-02-24  Richard Guenther  <rguenther@suse.de>
18604             Zdenek Dvorak  <ook@ucw.cz>
18605
18606         PR tree-optimization/39233
18607         * tree-ssa-loop-ivopts.c (add_candidate_1): Do not except pointers
18608         from converting them to a generic type.
18609
18610 2009-02-23  Sebastian Pop  <sebastian.pop@amd.com>
18611
18612         PR tree-optimization/39260
18613         * graphite.c (harmful_stmt_in_bb): Stop a SCoP when the basic block
18614         contains a condition with a real type.
18615         (build_scop_conditions_1): Conditions are always last_stmt of a bb.
18616
18617 2009-02-23  Jason Merrill  <jason@redhat.com>
18618
18619         PR c++/38880
18620         * varasm.c (initializer_constant_valid_p) [PLUS_EXPR]: Check
18621         narrowing_initializer_constant_valid_p.
18622         (narrowing_initializer_constant_valid_p): Don't return
18623         null_pointer_node for adding a pointer to itself.
18624
18625 2009-02-23  Jan Hubicka  <jh@suse.cz>
18626
18627         PR c/12245
18628         * ggc.h (htab_create_ggc): Use ggc_free to free hashtable when
18629         resizing.
18630
18631 2009-02-23  Jan Hubicka  <jh@suse.cz>
18632
18633         PR tree-optimization/37709
18634         * tree.c (block_ultimate_origin): Move here from dwarf2out.
18635         * tree.h (block_ultimate_origin): Declare.
18636         * dwarf2out.c (block_ultimate_origin): Move to tree.c
18637         * tree-ssa-live.c (remove_unused_scope_block_p):
18638         Eliminate blocks containig no instructions nor live variables nor
18639         nested blocks.
18640         (dump_scope_block): New function.
18641         (remove_unused_locals): Enable removal of dead blocks by default;
18642         enable dumping at TDF_DETAILS.
18643
18644 2009-02-21  H.J. Lu  <hongjiu.lu@intel.com>
18645
18646         * config/i386/i386.c (classify_argument): Don't allow COImode
18647         and OImode.
18648         (function_arg_advance_32): Don't allow OImode.
18649         (function_arg_32): Likewise.
18650         (function_value_32): Likewise.
18651         (return_in_memory_32): Likewise.
18652         (function_arg_64): Remove OImode comment.
18653
18654 2009-02-21  H.J. Lu  <hongjiu.lu@intel.com>
18655
18656         PR target/39261
18657         * config/i386/i386.c (ix86_expand_vector_init_one_nonzero): Use
18658         ix86_expand_vector_set for V4DImode in 64bit mode only.
18659         (ix86_expand_vector_init_one_var): Likewise.
18660
18661 2009-02-21  Sebastian Pop  <sebastian.pop@amd.com>
18662
18663         * graphite.c (graphite_trans_loop_block): Adjust tile size to 51.
18664
18665 2009-02-21  Richard Sandiford  <rdsandiford@googlemail.com>
18666
18667         PR bootstrap/39257
18668         * loop-iv.c: Revert last change.
18669         * emit-rtl.c: Likewise.
18670
18671 2009-02-21  H.J. Lu  <hongjiu.lu@intel.com>
18672
18673         PR target/39256
18674         * config/i386/i386.c (type_natural_mode): Remove an extra
18675         space in the warning message.
18676         (function_value_32): Handle 32-byte vector modes.
18677         (return_in_memory_32): Likewise.
18678
18679 2009-02-21  Richard Sandiford  <rdsandiford@googlemail.com>
18680
18681         * loop-iv.c (truncate_value): New function.
18682         (iv_subreg, get_iv_value, iv_number_of_iterations): Use it instead
18683         of lowpart_subreg.
18684         (lowpart_subreg): Move to...
18685         * emit-rtl.c: ...here.
18686
18687 2009-02-21  Danny Smith  <dannysmith@users.sourceforge.net>
18688
18689         * config/i386/winnt.c (i386_pe_asm_output_aligned_decl_common): Revert
18690         accidental and undocumented change at revision 140860.
18691
18692 2009-02-21  Joseph Myers  <joseph@codesourcery.com>
18693
18694         * config/arm/arm.c (arm_gimplify_va_arg_expr): Update prototype to
18695         take gimple_seq * arguments.
18696         (arm_mangle_type): Use CONST_CAST_TREE on type argument passed to
18697         types_compatible_p langhook.
18698
18699 2009-02-20  Mark Mitchell  <mark@codesourcery.com>
18700             Joseph Myers  <joseph@codesourcery.com>
18701
18702         * config/arm/arm.c (arm_builtin_va_list): New function.
18703         (arm_expand_builtin_va_start): Likewise.
18704         (arm_gimplify_va_arg_expr): Likewise.
18705         (TARGET_BUILD_BUILTIN_VA_LIST): Define.
18706         (TARGET_BUILD_BUILTIN_VA_START): Likewise.
18707         (TARGET_BUILD_BUILTIN_VA_ARG_EXPR): Likewise.
18708         (va_list_type): New variable.
18709         (arm_mangle_type): Mangle va_list_type appropriately.
18710
18711 2009-02-20  Jakub Jelinek  <jakub@redhat.com>
18712
18713         PR middle-end/39157
18714         * Makefile.in (loop-invariant.o): Depend on $(PARAMS_H).
18715         * params.h (LOOP_INVARIANT_MAX_BBS_IN_LOOP): Define.
18716         * params.def (loop-invariant-max-bbs-in-loop): New parameter.
18717         * opts.c (decode_options): Set loop-invariant-max-bbs-in-loop
18718         parameter to 1000 for -O1 by default.
18719         * doc/invoke.texi (loop-invariant-max-bbs-in-loop): Document new
18720         parameter.
18721         * loop-invariant.c: Include params.h.
18722         (move_loop_invariants): Don't call move_single_loop_invariants on
18723         very large loops.
18724
18725 2009-02-20  Jaka Mocnik  <jaka@xlab.si>
18726
18727         * calls.c (emit_library_call_value_1): Use slot_offset instead of
18728         offset when calculating bounds for indexing stack_usage_map.  Fixes
18729         a buffer overflow with certain target setups.
18730
18731 2009-02-20  Jakub Jelinek  <jakub@redhat.com>
18732
18733         PR target/39240
18734         * calls.c (expand_call): Clear try_tail_call if caller and callee
18735         disagree in promotion of function return value.
18736
18737 2009-02-19  Jakub Jelinek  <jakub@redhat.com>
18738
18739         PR target/39175
18740         * c-common.c (c_determine_visibility): If visibility changed and
18741         DECL_RTL has been already set, call make_decl_rtl to update symbol
18742         flags.
18743
18744 2009-02-19  H.J. Lu  <hongjiu.lu@intel.com>
18745
18746         PR c++/39188
18747         * varasm.c (assemble_variable): Don't check DECL_NAME when
18748         globalizing a variable.
18749
18750 2009-02-19  Joseph Myers  <joseph@codesourcery.com>
18751
18752         PR c/38483
18753         * builtins.c (gimplify_va_arg_expr): Evaluate the va_list
18754         expression before any __builtin_trap call.
18755         * c-typeck.c (build_function_call): Convert and check function
18756         arguments before generating a call to a trap.  Evaluate the
18757         function arguments before the trap.
18758
18759 2009-02-19  Uros Bizjak  <ubizjak@gmail.com>
18760
18761         PR target/39228
18762         * config/i386/i386.md (isinfxf2): Split from isinf<mode>2.
18763         (UNSPEC_FXAM_MEM): New unspec.
18764         (fxam<mode>2_i387_with_temp): New insn and split pattern.
18765         (isinf<mode>2): Use MODEF mode iterator.  Force operand[1] through
18766         memory using fxam<mode>2_i387_with_temp to remove excess precision.
18767
18768 2009-02-19  Richard Guenther  <rguenther@suse.de>
18769
18770         PR tree-optimization/39207
18771         PR tree-optimization/39074
18772         * tree-ssa-structalias.c (storedanything_id, var_storedanything,
18773         storedanything_tree): New.
18774         (do_ds_constraint): Simplify ANYTHING shortcutting.  Update
18775         the STOREDANYTHING solution if the lhs solution contains ANYTHING.
18776         (build_succ_graph): Add edges from STOREDANYTHING to all
18777         non-direct nodes.
18778         (init_base_vars): Initialize STOREDANYTHING.
18779         (compute_points_to_sets): Free substitution info after
18780         building the succ graph.
18781         (ipa_pta_execute): Likewise.
18782
18783         * tree-ssa-structalias.c (struct variable_info): Add may_have_pointers
18784         field.
18785         (do_ds_constraint): Do not add to special var or non-pointer
18786         field solutions.
18787         (type_could_have_pointers): Split out from ...
18788         (could_have_pointers): ... here.  For arrays use the element type.
18789         (create_variable_info_for): Initialize may_have_pointers.
18790         (new_var_info): Likewise.
18791         (handle_lhs_call): Make the HEAP variable unknown-sized.
18792         (intra_create_variable_infos): Use a type with pointers for
18793         PARM_NOALIAS, make it unknown-sized.
18794
18795 2009-02-18  H.J. Lu  <hongjiu.lu@intel.com>
18796
18797         PR target/39224
18798         * config/i386/i386.c (ix86_return_in_memory): Properly check ABI.
18799
18800 2009-02-18  Jason Merrill  <jason@redhat.com>
18801
18802         PR target/39179
18803         * tree-ssa-ccp.c (get_symbol_constant_value): Don't assume zero
18804         value if DECL_EXTERNAL.
18805         * tree-sra.c (sra_walk_gimple_assign): Likewise.
18806         * target.h (gcc_target::binds_local_p): Clarify "module".
18807         * tree.h (TREE_PUBLIC): Clarify "module".
18808
18809 2009-02-17  Xuepeng Guo  <xuepeng.guo@intel.com>
18810
18811         PR target/38891
18812         * config/i386/i386.h (CONDITIONAL_REGISTER_USAGE): Move the hunk of
18813         initialization for MS_ABI prior to the hunk of !TARGET_MMX.
18814
18815 2009-02-17  H.J. Lu  <hongjiu.lu@intel.com>
18816
18817         PR target/39082
18818         * c.opt (Wabi): Support C and ObjC.
18819         (Wpsabi): New.
18820
18821         * c-opts.c (c_common_handle_option): Handle OPT_Wabi.
18822
18823         * config/i386/i386.c (classify_argument): Warn once about the ABI
18824         change when passing union with long double.
18825
18826         * doc/invoke.texi: Update -Wabi for warning psABI changes.
18827
18828 2009-02-18  Joseph Myers  <joseph@codesourcery.com>
18829
18830         PR c/35447
18831         * c-parser.c (c_parser_compound_statement): Always enter and leave
18832         a scope.
18833
18834 2009-02-17  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
18835
18836         PR target/34587
18837         * config/darwin.h (SUPPORTS_INIT_PRIORITY): Define.
18838
18839 2009-02-18  Jakub Jelinek  <jakub@redhat.com>
18840
18841         PR tree-optimization/36922
18842         * tree-data-ref.c (initialize_matrix_A): Handle BIT_NOT_EXPR.
18843         * tree-scalar-evolution.c (interpret_rhs_expr, instantiate_scev_1):
18844         Likewise.
18845
18846 2009-02-17  Richard Sandiford  <rdsandiford@googlemail.com>
18847
18848         * config/mips/mips.c (mips_override_options): Set flag_dwarf2_cfi_asm
18849         to 0 for EABI64.
18850
18851 2009-02-17  Richard Sandiford  <rdsandiford@googlemail.com>
18852
18853         * config/mips/mips.md (type): Reclassify lui_movf as "unknown".
18854
18855 2009-02-17  Richard Sandiford  <rdsandiford@googlemail.com>
18856
18857         * config/mips/mips.c (mips_gimplify_va_arg_expr): Fix invalid
18858         tree sharing.
18859
18860 2009-02-17  Ruan Beihong  <ruanbeihong@gmail.com>
18861             Richard Sandiford  <rdsandiford@googlemail.com>
18862
18863         * config/mips/mips.c (CODE_FOR_loongson_biadd): Delete.
18864         * config/mips/loongson.md (reduc_uplus_<mode>): Rename to...
18865         (loongson_biadd): ...this.
18866
18867 2009-02-17  Richard Guenther  <rguenther@suse.de>
18868
18869         PR tree-optimization/39202
18870         * tree-ssa-structalias.c (do_structure_copy): Before collapsing
18871         a var make sure to follow existing collapses.
18872
18873 2009-02-17  Richard Guenther  <rguenther@suse.de>
18874
18875         PR middle-end/39214
18876         * langhooks.c (lhd_print_error_function): Check for NULL block.
18877
18878 2009-02-17  Richard Guenther  <rguenther@suse.de>
18879
18880         PR tree-optimization/39204
18881         * tree-ssa-pre.c (phi_translate_1): Lookup the value-number
18882         of the PHI arg.
18883
18884 2009-02-17  Uros Bizjak  <ubizjak@gmail.com>
18885
18886         * config/soft-fp/double.h: Update from glibc CVS.
18887
18888 2009-02-17  Richard Guenther  <rguenther@suse.de>
18889
18890         PR tree-optimization/39207
18891         * tree-ssa-structalias.c (find_what_p_points_to): Do not emit
18892         strict-aliasing warnings for pointers pointing to NULL.
18893
18894 2009-02-16  Joseph Myers  <joseph@codesourcery.com>
18895
18896         PR c/35446
18897         * c-parser.c (c_parser_braced_init): Call pop_init_level when
18898         skipping until next close brace.
18899
18900 2009-02-16  H.J. Lu  <hongjiu.lu@intel.com>
18901
18902         PR target/37049
18903         * config/i386/i386.c (ix86_expand_push): Set memory alignment
18904         to function argument boundary.
18905
18906 2009-02-16  Hariharan Sandanagobalane  <hariharan@picochip.com>
18907
18908         * config/picochip/picochip.md (lea_add): Allow any nonimmediate
18909         in the lea_add. Reload eventually constraints it properly.
18910         * config/picochip/constraints.md: Remove the target constraint
18911         "b", since it is not needed anymore.
18912
18913 2009-02-16  Jakub Jelinek  <jakub@redhat.com>
18914
18915         * gthr-dce.h: Uglify function parameter and local variable names.
18916         * gthr-gnat.h: Likewise.
18917         * gthr-mipssde.h: Likewise.
18918         * gthr-nks.h: Likewise.
18919         * gthr-posix95.h: Likewise.
18920         * gthr-posix.h: Likewise.
18921         * gthr-rtems.h: Likewise.
18922         * gthr-single.h: Likewise.
18923         * gthr-solaris.h: Likewise.
18924         * gthr-tpf.h: Likewise.
18925         * gthr-vxworks.h: Likewise.
18926         * gthr-win32.h: Likewise.
18927
18928 2009-02-15  H.J. Lu  <hongjiu.lu@intel.com>
18929
18930         PR target/39196
18931         * config/i386/i386.md: Restrict the new peephole2 to move
18932         between MMX/SSE registers.
18933
18934 2009-02-15  Richard Guenther  <rguenther@suse.de>
18935
18936         Revert
18937         2009-02-13  Richard Guenther  <rguenther@suse.de>
18938
18939         * configure.ac: Enable LFS.
18940         * configure: Re-generate.
18941         * config.in: Likewise.
18942
18943 2009-02-13  Ulrich Weigand  <Ulrich.Weigand@de.ibm.com>
18944
18945         * config/spu/spu_internals.h (spu_sr, spu_sra, spu_srqw,
18946         spu_srqwbyte, spu_srqwbytebc): Define.
18947         * config/spu/spu-builtins.def (spu_sr, spu_sra, spu_srqw,
18948         spu_srqwbyte, spu_srqwbytebc): New overloaded builtins.
18949         * config/spu/spu.md ("shrqbybi_<mode>", "shrqbi_<mode>",
18950         "shrqby_<mode>"): New insn-and-split patterns.
18951         * config/spu/spu.c (expand_builtin_args): Determine and return
18952         number of operands using spu_builtin_description data.
18953         (spu_expand_builtin_1): Use it.
18954
18955 2009-02-13  Steve Ellcey  <sje@cup.hp.com>
18956
18957         PR target/38056
18958         * config/ia64/ia64.c (ia64_function_ok_for_sibcall): Check
18959         TARGET_CONST_GP.
18960
18961 2009-02-13  H.J. Lu  <hongjiu.lu@intel.com>
18962
18963         PR target/39149
18964         * config/i386/i386.c (override_options): Correct warning
18965         messages for -malign-loops, -malign-jumps and -malign-functions.
18966
18967 2009-02-13  H.J. Lu  <hongjiu.lu@intel.com>
18968
18969         PR target/39152
18970         * config/i386/i386.md: Restrict the new peephole2 to move
18971         between the general purpose registers.
18972
18973 2009-02-13  H.J. Lu  <hongjiu.lu@intel.com>
18974
18975         PR target/39162
18976         * config/i386/i386.c (type_natural_mode): Add a new argument.
18977         Return the original mode and warn ABI change if vector size is 32byte.
18978         (function_arg_advance): Updated.
18979         (function_arg): Likewise.
18980         (ix86_function_value): Likewise.
18981         (ix86_return_in_memory): Likewise.
18982         (ix86_sol10_return_in_memory): Likewise.
18983         (ix86_gimplify_va_arg): Likewise.
18984         (function_arg_32): Don't warn ABX ABI change here.
18985         (function_arg_64): Likewise.
18986
18987 2009-02-13  Bernd Schmidt  <bernd.schmidt@analog.com>
18988
18989         * loop-iv.c (implies_p): In the final case, test that operands 0
18990         of the two comparisons match.
18991
18992         * config/bfin/bfin.c (find_prev_insn_start): New function.
18993         (bfin_optimize_loop): Use it in some cases instead of PREV_INSN.
18994         (find_next_insn_start): Move.
18995
18996 2009-02-13  Richard Guenther  <rguenther@suse.de>
18997
18998         * configure.ac: Enable LFS.
18999         * configure: Re-generate.
19000         * config.in: Likewise.
19001
19002 2009-02-13  Joseph Myers  <joseph@codesourcery.com>
19003
19004         PR c/35444
19005         * c-parser.c (c_parser_parms_list_declarator): Discard pending
19006         sizes on syntax error after some arguments have been parsed.
19007
19008 2009-02-12  Jakub Jelinek  <jakub@redhat.com>
19009
19010         * doc/invoke.texi (-fira): Remove.
19011
19012 2009-02-12  H.J. Lu  <hongjiu.lu@intel.com>
19013
19014         * caller-save.c: Replace regclass.c with reginfo.c in comments.
19015         * recog.c: Likewise.
19016         * rtl.h: Likewise.
19017
19018 2009-02-12  Uros Bizjak  <ubizjak@gmail.com>
19019
19020         * longlong.h (sub_ddmmss): New for ia64. Ported from GMP 4.2.
19021         (umul_ppmm): Likewise.
19022         (count_leading_zeros): Likewise.
19023         (count_trailing_zeros): Likewise.
19024         (UMUL_TIME): Likewise.
19025
19026 2009-02-12  H.J. Lu  <hongjiu.lu@intel.com>
19027
19028         * config.gcc (ia64*-*-linux*): Add ia64/t-fprules-softfp and
19029         soft-fp/t-softfp to tmake_file.
19030
19031         * config/ia64/ia64.c (ia64_soft_fp_init_libfuncs): New.
19032         (ia64_expand_compare): Use HPUX library for TFmode only for HPUX.
19033         (ia64_builtins) [IA64_BUILTIN_COPYSIGNQ, IA64_BUILTIN_FABSQ,
19034         IA64_BUILTIN_INFQ]: New.
19035         (ia64_init_builtins): Initialize __builtin_infq,
19036         __builtin_fabsq and __builtin_copysignq if not HPUX.
19037         (ia64_expand_builtin): Handle IA64_BUILTIN_COPYSIGNQ,
19038         IA64_BUILTIN_FABSQ and IA64_BUILTIN_INFQ.
19039
19040         * config/ia64/lib1funcs.asm (__divtf3): Define only if
19041         SHARED is defined.
19042         (__fixtfti): Likewise.
19043         (__fixunstfti): Likewise.
19044         (__floattitf): Likewise.
19045
19046         * config/ia64/libgcc-glibc.ver: New.
19047         * config/ia64/t-fprules-softfp: Likewise.
19048         * config/ia64/sfp-machine.h: Likewise.
19049
19050         * config/ia64/linux.h (LIBGCC2_HAS_TF_MODE): New.
19051         (LIBGCC2_TF_CEXT): Likewise.
19052         (TF_SIZE): Likewise.
19053         (TARGET_INIT_LIBFUNCS): Likewise.
19054
19055         * config/ia64/t-glibc (SHLINB_MAPFILES):
19056         Add $(srcdir)/config/ia64/libgcc-glibc.ver.
19057
19058 2009-02-12  H.J. Lu  <hongjiu.lu@intel.com>
19059
19060         * config/i386/i386.c (construct_container): Rewrite processing
19061         BLKmode with X86_64_SSE_CLASS.
19062
19063 2009-02-12  Paolo Bonzini  <bonzini@gnu.org>
19064
19065         PR target/39152
19066         * config/i386/i386.md: Replace simplify_replace_rtx with
19067         replace_rtx in the new peephole2.
19068
19069 2009-02-12  Nathan Sidwell  <nathan@codesourcery.com>
19070
19071         * doc/invoke.texi (Optimize Options): Stop claiming inlining and
19072         loop unrolling do not happen at -O2.
19073
19074 2009-02-12  Michael Matz  <matz@suse.de>
19075
19076         * gcc.c (ASM_DEBUG_SPEC): Check for -g0.
19077
19078 2009-02-12  Jakub Jelinek  <jakub@redhat.com>
19079
19080         * dwarf2out.c (dwarf2out_finish): Force output of comp_unit_die
19081         for -g3.
19082
19083 2009-02-12  Ben Elliston  <bje@au.ibm.com>
19084
19085         * config/rs6000/rs6000.md (allocate_stack): Use _stack form of
19086         patterns when updating the back chain.  Missed in the 2009-02-10
19087         change.
19088
19089 2009-02-11  Janis Johnson  <janis187@us.ibm.com>
19090
19091         * doc/extend.texi (Decimal Floating Types): Update identifier of
19092         draft TR and list of missing support.
19093
19094 2009-02-11  Jakub Jelinek  <jakub@redhat.com>
19095
19096         PR middle-end/39154
19097         * gimplify.c (omp_notice_variable): If adding GOVD_SEEN
19098         bit to variable length decl's flags, add it also to its
19099         pointer replacement variable.
19100
19101 2009-02-11  Uros Bizjak  <ubizjak@gmail.com>
19102             Jakub Jelinek  <jakub@redhat.com>
19103
19104         PR target/39118
19105         * config/i386/i386.md (UNSPEC_MEMORY_BLOCKAGE): New constant.
19106         (memory_blockage): New expander.
19107         (*memory_blockage): New insn pattern.
19108         * config/i386/i386.c (ix86_expand_prologue): Use memory_blockage
19109         instead of general blockage at the end of function prologue when
19110         frame pointer is used to access red zone area.  Do not emit blockage
19111         when profiling, it is emitted in generic code.
19112         (ix86_expand_epilogue): Emit memory_blockage at the beginning of
19113         function epilogue when frame pointer is used to access red zone area.
19114
19115 2009-02-11  Paolo Bonzini  <bonzini@gnu.org>
19116
19117         PR target/38824
19118         * config/i386/i386.md: Add two new peephole2 to avoid mov followed
19119         by arithmetic with memory operands.
19120         * config/i386/predicates.md (commutative_operator): New.
19121
19122 2009-02-10  Janis Johnson  <janis187@us.ibm.com>
19123
19124         * doc/extend.texi (Fixed-Point Types): Break long paragraphs into
19125         bulleted lists.
19126
19127 2009-02-10  Eric Botcazou  <ebotcazou@adacore.com>
19128
19129         * alias.h (record_alias_subset): Declare.
19130         * alias.c (record_alias_subset): Make global.
19131
19132 2009-02-10  Nick Clifton  <nickc@redhat.com>
19133
19134         * tree-parloops.c: Change license to GPLv3.
19135         * ipa-struct-reorg.c: Change license to GPLv3.
19136         * ipa-struct-reorg.h: Change license to GPLv3.
19137
19138 2009-02-10  Steve Ellcey  <sje@cup.hp.com>
19139
19140         PR c/39084
19141         * c-decl.c (start_struct): Return NULL on error.
19142
19143 2009-02-10  Jakub Jelinek  <jakub@redhat.com>
19144
19145         PR middle-end/39124
19146         * cfgloopmanip.c (remove_path): Call remove_bbs after
19147         cancel_loop_tree, not before it.
19148
19149         PR target/39139
19150         * function.h (struct function): Add has_local_explicit_reg_vars bit.
19151         * gimplify.c (gimplify_bind_expr): Set it if local DECL_HARD_REGISTER
19152         VAR_DECLs were seen.
19153         * tree-ssa-live.c (remove_unused_locals): Recompute
19154         cfun->has_local_explicit_reg_vars.
19155         * tree-ssa-sink.c (statement_sink_location): Don't sink BLKmode
19156         copies or clearings if cfun->has_local_explicit_reg_vars.
19157
19158 2009-02-10  Uros Bizjak  <ubizjak@gmail.com>
19159
19160         PR target/39118
19161         * config/i386/i386.c (expand_prologue): Emit blockage at the end
19162         of function prologue when frame pointer is used to access
19163         red zone area.
19164
19165 2009-02-10  Richard Guenther  <rguenther@suse.de>
19166
19167         PR middle-end/39127
19168         * gimplify.c (gimple_regimplify_operands): Always look if
19169         we need to create a temporary.
19170
19171 2009-02-10  Richard Guenther  <rguenther@suse.de>
19172
19173         PR tree-optimization/39132
19174         * tree-loop-distribution.c (todo): New global var.
19175         (generate_memset_zero): Trigger TODO_rebuild_alias.
19176         (tree_loop_distribution): Return todo.
19177
19178 2009-02-10  H.J. Lu  <hongjiu.lu@intel.com>
19179
19180         PR target/39119
19181         * config/i386/i386.c (x86_64_reg_class): Remove X86_64_AVX_CLASS.
19182         (x86_64_reg_class_name): Removed.
19183         (classify_argument): Return 0 if bytes > 32.  Return 0 if the
19184         first one isn't X86_64_SSE_CLASS or any other ones aren't
19185         X86_64_SSEUP_CLASS when size > 16bytes.  Don't turn
19186         X86_64_SSEUP_CLASS into X86_64_SSE_CLASS if the preceded one
19187         is X86_64_SSEUP_CLASS.  Set AVX modes to 1 X86_64_SSE_CLASS
19188         and 3 X86_64_SSEUP_CLASS.
19189         (construct_container): Remove X86_64_AVX_CLASS.  Handle 4
19190         registers with 1 X86_64_SSE_CLASS and 3 X86_64_SSEUP_CLASS.
19191
19192 2009-02-10  Ben Elliston  <bje@au.ibm.com>
19193
19194         * config/rs6000/rs6000.md (allocate_stack): Always use an update
19195         form instruction to update the stack back chain word, even if the
19196         user has disabled the generation of update instructions.
19197         (movdi_<mode>_update_stack): New.
19198         (movsi_update_stack): Likewise.
19199         * config/rs6000/rs6000.c (rs6000_emit_allocate_stack): Likewise,
19200         always use an update form instruction to update the stack back
19201         chain word.
19202
19203 2009-02-09  Sebastian Pop  <sebastian.pop@amd.com>
19204
19205         PR middle-end/38953
19206         * graphite.c (if_region_set_false_region): After moving a region in
19207         the false branch of a condition, remove the empty dummy basic block.
19208         (gloog): Remove wrong fix for PR38953.
19209
19210 2009-02-09  Ulrich Weigand  <Ulrich.Weigand@de.ibm.com>
19211
19212         * config/spu/spu.c (array_to_constant): Fix (latent) wrong-code
19213         generation due to implicit sign extension.
19214
19215 2009-02-09  Eric Botcazou  <ebotcazou@adacore.com>
19216
19217         PR middle-end/38981
19218         * tree-ssa-coalesce.c (add_coalesce): Cap the costs of coalesce pairs
19219         at MUST_COALESCE_COST-1 instead of MUST_COALESCE_COST.
19220
19221 2009-02-09  Richard Guenther  <rguenther@suse.de>
19222
19223         PR middle-end/35202
19224         * convert.c (convert_to_real): Disable (float)fn((double)x)
19225         to fnf(x) conversion if errno differences may occur and
19226         -fmath-errno is set.
19227
19228 2009-02-07  Anatoly Sokolov  <aesok@post.ru>
19229
19230         * config/avr/avr.c (avr_mcu_t): Add ata6289 device.
19231         * config/avr/avr.h (LINK_SPEC, CRT_BINUTILS_SPECS): (Ditto.).
19232         * config/avr/t-avr (MULTILIB_MATCHES): (Ditto.).
19233
19234 2009-02-06  Joseph Myers  <joseph@codesourcery.com>
19235
19236         PR c/35434
19237         * c-common.c (handle_alias_attribute): Disallow attribute for
19238         anything not a FUNCTION_DECL or VAR_DECL.
19239
19240 2009-02-06  Janis Johnson  <janis187@us.ibm.com>
19241
19242         PR c/39035
19243         * real.c (do_compare): Special-case compare of zero against
19244         decimal float value.
19245
19246 2009-02-06  Joseph Myers  <joseph@codesourcery.com>
19247
19248         PR c/36432
19249         * c-decl.c (grokdeclarator): Don't treat [] declarators in fields
19250         as indicating flexible array members unless the field itself is
19251         being declarared as the incomplete array.
19252
19253 2009-02-06  Jan Hubicka  <jh@suse.cz>
19254
19255         PR tree-optimization/38844
19256         * ipa-inline.c (try_inline): Stop inlining recursion when edge
19257         is already inlined.
19258
19259 2009-02-06  Richard Guenther  <rguenther@suse.de>
19260
19261         PR middle-end/38977
19262         * tree-cfg.c (need_fake_edge_p): Force a fake edge for
19263         fork because we may expand it as __gcov_fork.
19264
19265 2009-02-06  Nick Clifton  <nickc@redhat.com>
19266
19267         * config/m32c/m32c.h (PCC_BITFIELD_TYPE_MATTERS): Define to zero.
19268
19269 2009-02-06  Paolo Bonzini  <bonzini@gnu.org>
19270
19271         PR tree-optimization/35659
19272         * tree-ssa-sccvn.c (vn_constant_eq, vn_reference_eq, vn_nary_op_eq
19273         vn_phi_eq): Shortcut if hashcode does not match.
19274         (vn_reference_op_compute_hash): Do not call iterative_hash_expr for
19275         NULL operands.
19276         * tree-ssa-pre.c (pre_expr_hash): Look at hashcode if available,
19277         and avoid iterative_hash_expr.
19278         (FOR_EACH_VALUE_ID_IN_SET): New.
19279         (value_id_compare): Remove.
19280         (sorted_array_from_bitmap_set): Use FOR_EACH_VALUE_ID_IN_SET to
19281         sort expressions by value id.
19282
19283 2009-02-05  Kaz Kojima  <kkojima@gcc.gnu.org>
19284
19285         PR target/38991
19286         * config/sh/predicates.md (general_movsrc_operand): Don't check
19287         the subreg of system registers here.
19288
19289 2009-02-05  Jakub Jelinek  <jakub@redhat.com>
19290
19291         PR c++/39106
19292         * cgraphunit.c (cgraph_function_versioning): Clear also DECL_VIRTUAL_P
19293         on the copied decl.
19294
19295 2009-02-05  Paolo Bonzini  <bonzini@gnu.org>
19296
19297         PR rtl-optimization/39110
19298         * rtlanal.c (rtx_addr_can_trap_p_1): Shortcut unaligned
19299         addresses, not aligned ones.
19300
19301 2009-02-05  Daniel Berlin  <dberlin@dberlin.org>
19302             Richard Guenther  <rguenther@suse.de>
19303
19304         PR tree-optimization/39100
19305         * tree-ssa-structalias.c (do_ds_constraint): Actually do what the
19306         comment says and add edges.
19307
19308 2009-02-05  Joseph Myers  <joseph@codesourcery.com>
19309
19310         PR c/35435
19311         * c-common.c (handle_tls_model_attribute): Ignore attribute for
19312         non-VAR_DECLs without checking DECL_THREAD_LOCAL_P.
19313
19314 2009-02-04  Tobias Grosser  <grosser@fim.uni-passau.de>
19315
19316         * graphite.c (bb_in_sese_p, sese_build_livein_liveouts_use,
19317         sese_build_livein_liveouts_bb, sese_build_livein_liveouts,
19318         register_bb_in_sese, new_sese, free_sese): Moved.
19319         (dot_scop_1, build_scop_loop_nests, build_loop_iteration_domains,
19320         outermost_loop_in_scop, build_scop_iteration_domain,
19321         expand_scalar_variables_ssa_name, get_vdef_before_scop,
19322         limit_scops): Use bb_in_sese_p instead of bb_in_scop_p.
19323         Use loop_in_sese_p instead of loop_in_scop_p.
19324         (new_graphite_bb, gloog): Do not initialize SCOP_BBS_B.
19325         (new_scop, free_scop): Remove SCOP_LOOP2CLOOG_LOOP and SCOP_BBS_B.
19326         (scopdet_basic_block_info): Fix bug in scop detection.
19327         (new_loop_to_cloog_loop_str, hash_loop_to_cloog_loop,
19328         eq_loop_to_cloog_loop): Remove.
19329         (nb_loops_around_loop_in_scop, nb_loop
19330         ref_nb_loops): Moved here...
19331         * graphite.h (ref_nb_loops): ... from here.
19332         (struct scop): Remove bbs_b bitmap and loop2cloog_loop.
19333         (loop_domain_dim, loop_iteration_vector_dim): Remove.
19334         (SCOP_BBS_B, bb_in_scop_p, loop_in_scop_p): Removed.
19335         * testsuite/gcc.dg/graphite/scop-19.c: New
19336
19337 2009-02-04  Paolo Bonzini  <bonzini@gnu.org>
19338             Hans-Peter Nilsson  <hp@axis.com>
19339
19340         PR rtl-optimization/37889
19341         * rtlanal.c (rtx_addr_can_trap_p_1): Add offset and size arguments.
19342         Move offset handling from PLUS to before the switch.  Use new
19343         arguments when considering SYMBOL_REFs too.
19344         (rtx_addr_can_trap_p): Pass dummy offset and size.
19345         (enum may_trap_p_flags): Remove.
19346         (may_trap_p_1): Pass size from MEM_SIZE.
19347
19348         PR rtl-optimization/38921
19349         * loop-invariant.c (find_invariant_insn): Use may_trap_or_fault_p.
19350         * rtl.h (may_trap_after_code_motion_p): Delete prototype.
19351         * rtlanal.c (may_trap_after_code_motion_p): Delete.
19352         (may_trap_p, may_trap_or_fault_p): Pass 0/1 as flags.
19353
19354 2009-02-04  H.J. Lu  <hongjiu.lu@intel.com>
19355
19356         AVX Programming Reference (January, 2009)
19357         * config/i386/sse.md (*vpclmulqdq): New.
19358
19359 2009-02-04  Jakub Jelinek  <jakub@redhat.com>
19360
19361         PR tree-optimization/38977
19362         PR gcov-profile/38292
19363         * calls.c (special_function_p): Disregard __builtin_ prefix.
19364
19365 2009-02-04  Hariharan Sandanagobalane  <hariharan@picochip.com>
19366
19367         * config/picochip/picochip.c (GO_IF_LEGITIMATE_ADDRESS): Disallow
19368         non-indexable addresses even before reload.
19369
19370 2009-02-03  Joseph Myers  <joseph@codesourcery.com>
19371
19372         PR c/29129
19373         * c-decl.c (grokdeclarator): Mark [*] arrays in field declarators
19374         as having variable size.  Do not give an error for unnamed
19375         parameters with [*] declarators.  Give a warning for type names
19376         with [*] declarators and mark them as variable size.
19377         * c-parser.c (c_parser_sizeof_expression): Do not give an error
19378         for sizeof applied to [*] type names.
19379
19380 2009-02-03  Andrew Pinski  <andrew_pinski@playstation.sony.com>
19381
19382         PR C++/36607
19383         * convert.c (convert_to_integer): Treat OFFSET_TYPE like INTEGER_TYPE.
19384
19385 2009-02-03  Jakub Jelinek  <jakub@redhat.com>
19386
19387         * gcc.c (process_command): Update copyright notice dates.
19388         * gcov.c (print_version): Likewise.
19389         * gcov-dump.c (print_version): Likewise.
19390         * mips-tfile.c (main): Likewise.
19391         * mips-tdump.c (main): Likewise.
19392
19393 2009-02-03  Joseph Myers  <joseph@codesourcery.com>
19394
19395         PR c/35433
19396         * c-typeck.c (composite_type): Set TYPE_SIZE and TYPE_SIZE_UNIT
19397         for composite type involving a zero-length array type.
19398
19399 2009-02-03  Jakub Jelinek  <jakub@redhat.com>
19400
19401         PR target/35318
19402         * function.c (match_asm_constraints_1): Skip over
19403         initial optional % in the constraint.
19404
19405         PR inline-asm/39059
19406         * c-parser.c (c_parser_postfix_expression): If fixed point is not
19407         supported, don't accept FIXED_CSTs.
19408         * c-decl.c (finish_declspecs): Error if fixed point is not supported
19409         and _Sat is used without _Fract/_Accum.  Set specs->type to
19410         integer_type_node for cts_fract/cts_accum if fixed point is not
19411         supported.
19412
19413 2009-02-02  Catherine Moore  <clm@codesourcery.com>
19414
19415         * sde.h (SUBTARGET_ARM_SPEC): Don't assemble -fpic code as -mabicalls.
19416
19417 2009-02-02  Richard Sandiford  <rdsandiford@googlemail.com>
19418
19419         * config/mips/mips.h (FILE_HAS_64BIT_SYMBOLS): New macro.
19420         (ABI_HAS_64BIT_SYMBOLS): Use it.
19421         (DWARF2_ADDR_SIZE): Use it instead of ABI_HAS_64BIT_SYMBOLS.
19422
19423 2009-02-02  Paul Brook  <paul@codesourcery.com>
19424
19425         * config/arm/arm.md (arm_addsi3): Add r/r/k alternative.
19426
19427 2009-02-02  Jakub Jelinek  <jakub@redhat.com>
19428
19429         PR inline-asm/39058
19430         * recog.h (asm_operand_ok): Add constraints argument.
19431         * recog.c (asm_operand_ok): Likewise.  If it is set, for digits
19432         recurse on matching constraint.
19433         (check_asm_operands): Pass constraints as 3rd argument to
19434         asm_operand_ok.  Don't look up matching constraint here.
19435         * stmt.c (expand_asm_operands): Pass NULL as 3rd argument
19436         to asm_operand_ok.
19437
19438 2009-02-02  Ben Elliston  <bje@au.ibm.com>
19439
19440         * doc/tm.texi (Storage Layout): Fix TARGET_ALIGN_ANON_BITFIELD and
19441         TARGET_NARROW_VOLATILE_BITFIELD macro names.
19442
19443 2009-01-31  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
19444
19445         * doc/install.texi (hppa*-hp-hpux*): Update binutils and linker
19446         information.  Remove some obsolete information.  Reorganize.
19447
19448         * config/pa/fptr.c: Revert license to GPL 2.
19449         * config/pa/milli64.S: Likewise.
19450
19451 2009-01-31  Dave Korn  <dave.korn.cygwin@gmail.com>
19452
19453         PR target/38904
19454         * mkmap-flat.awk (END):  Use pe_dll command-line arg to pass
19455         LIBRARY name in, instead of hard-coding it.
19456         * config.gcc (i[34567]86-*-pe | i[34567]86-*-cygwin*):  Add an
19457         extra target make frag to tmake_files according to EH model.
19458         (i[34567]86-*-mingw* | x86_64-*-mingw*):  Likewise.
19459         * config/i386/t-dw2-eh, config/i386/t-sjlj-eh:  Add new target
19460         frags that define makefile variable EH_MODEL appropriately.
19461         * config/i386/cygming.h (DWARF2_UNWIND_INFO):  Add comment.
19462         * config/i386/cygwin.h (LIBGCC_EH_EXTN):  Define to nothing or
19463         to "-sjlj" according to type of EH configured.
19464         (LIBGCC_SONAME):  Concatenate it to shared library base name.
19465         * config/i386/mingw32.h (LIBGCC_EH_EXTN):  Define to "_dw2" or
19466         to "_sjlj" according to type of EH configured.
19467         (LIBGCC_SONAME):  Concatenate it to shared library base name.
19468         * config/i386/t-cygming (SHLIB_SONAME):  Use EH_MODEL.
19469         (SHLIB_LINK):  Add missing semicolon to if-else construct.
19470         (SHLIB_MKMAP_OPTS):  Pass library name to mkmap-flat.awk as
19471         string value of "pe_dll" command-line option.
19472         * config/i386/t-cygwin (SHLIB_EH_EXTENSION):  New helper.
19473         (SHLIB_SONAME):  Use it when overriding t-cygming default.
19474         (SHLIB_IMPLIB):  Override t-cygming default.
19475         (SHLIB_MKMAP_OPTS):  Pass library name to mkmap-flat.awk as
19476         string value of "pe_dll" command-line option.
19477
19478 2009-01-31  Dave Korn  <dave.korn.cygwin@gmail.com>
19479
19480         PR target/38952
19481         * config/i386/i386.c (ix86_builtin_setjmp_frame_value): New.
19482         (TARGET_BUILTIN_SETJMP_FRAME_VALUE): Override default to point at it.
19483
19484 2009-01-31  Richard Guenther  <rguenther@suse.de>
19485
19486         PR tree-optimization/38937
19487         * tree-ssa-structalias.c (do_sd_constraint): Do not shortcut
19488         computing the transitive closure.
19489
19490 2009-01-30  Richard Guenther  <rguenther@suse.de>
19491
19492         PR tree-optimization/39041
19493         * tree-ssa-forwprop.c (forward_propagate_addr_expr_1):
19494         Propagate variable indices only if the types match for this stmt.
19495
19496 2009-01-30  Jakub Jelinek  <jakub@redhat.com>
19497
19498         PR target/39013
19499         * c-decl.c (pop_scope): Set DECL_EXTERNAL for functions declared
19500         inline but never defined.
19501
19502 2009-01-30  Wolfgang Gellerich  <gellerich@de.ibm.com>
19503
19504         * config/s390/s390.md (*insv<mode>_reg_extimm): Removed.
19505         (*insv_h_di_reg_extimm): New insn.
19506         (*insv_l<mode>_reg_extimm): New insn.
19507
19508 2009-01-30  Hariharan Sandanagobalane  <hariharan@picochip.com>
19509
19510         * config/picochip/picochip.c (flag_conserve_stack): set
19511         PARAM_LARGE_STACK_FRAME and PARAM_STACK_FRAME_GROWTH to zero under
19512         fconserve-stack. Reduce call-overhead used by inliner.
19513
19514 2009-01-30  Hariharan Sandanagobalane  <hariharan@picochip.com>
19515
19516         PR/38157
19517         * common.opt (flag_conserve_stack): Initialised to zero.
19518
19519 2009-01-30  Kai Tietz  <kai.tietz@onevision.com>
19520
19521         PR/39002
19522         * config/i386/i386.c (ix86_can_use_return_insn_p): Check for nsseregs.
19523         (ix86_expand_epilogue): Take nsseregs in account to use proper restore
19524         method.
19525
19526 2009-01-29  H.J. Lu  <hongjiu.lu@intel.com>
19527
19528         * ira-color.c (allocno_reload_assign): Update comments.
19529         * regmove.c (regmove_optimize): Likewise.
19530
19531         * ra.h: Removed.
19532
19533 2009-01-29  Robert Millan  <rmh@aybabtu.com>
19534
19535         * config.gcc: Recognize GNU/kOpenSolaris (*-*-kopensolaris*-gnu).
19536         * config/i386/kopensolaris-gnu.h: New file.  Undefine
19537         `MD_UNWIND_SUPPORT'.
19538         * config/kopensolaris-gnu.h: New file (based on kfreebsd-gnu.h).
19539
19540 2009-01-29  Kazu Hirata  <kazu@codesourcery.com>
19541
19542         PR tree-optimization/39007
19543         * tree-loop-distribution.c (generate_builtin): Use
19544         recompute_dominator to compute the immediate dominator of the
19545         basic block just after the loop.
19546
19547 2009-01-29  Rainer Orth  <ro@TechFak.Uni-Bielefeld.DE>
19548
19549         * config/i386/sol2-10.h [!HAVE_AS_IX86_DIFF_SECT_DELTA]
19550         (ASM_OUTPUT_DWARF_PCREL): Define.
19551
19552 2009-01-29  Vladimir Makarov  <vmakarov@redhat.com>
19553
19554         * doc/tm.texi (TARGET_IRA_COVER_CLASSES): Modify description.
19555         * doc/passes.texi: Remove entries about regclass, local-alloc, and
19556         global.  Modify entries about regmove and IRA.
19557
19558         * ra-conflict.c: Remove the file.
19559
19560         * reload.c (push_reload, find_dummy_reload): Remove flag_ira.
19561
19562         * tree-pass.h (pass_local_alloc, pass_global_alloc): Remove.
19563         (pass_regclass_init): Rename to pass_reginfo_init.
19564
19565         * cfgloopanal.c (estimate_reg_pressure_cost): Remove flag_ira.
19566
19567         * toplev.h (flag_ira): Remove.
19568
19569         * caller-save.c (setup_save_areas): Remove flag_ira.
19570
19571         * ira-color.c (ira_reuse_stack_slot, ira_mark_new_stack_slot): Ditto.
19572
19573         * global.c: Remove the file.
19574
19575         * opts.c (decode_options): Remove flag_ira.
19576
19577         * hard-reg-set.h (losing_caller_save_reg_set): Remove.
19578
19579         * regmove.c: Modify file description.
19580         (find_use_as_address, try_auto_increment): Define them only if
19581         AUTO_INC_DEC is defined.
19582         (replacement_quality, replace_in_call_usage, fixup_match_1,
19583         stable_and_no_regs_but_for_p): Remove.
19584         (reg_set_in_bb): Make it static.
19585         (regmove_optimize): Remove flag_ira and code which worked for
19586         !flag_ira.
19587
19588         * local-alloc.c: Remove the file.
19589
19590         * common.opt (fira): Remove.
19591
19592         * ira.c: Include except.h.
19593         (eliminable_regset): Move from global.c.
19594         (mark_elimination): Ditto.  Remove flag_ira.
19595         (reg_renumber, struct equivalence, reg_equiv, equiv_mem,
19596         equiv_mem_modified, validate_equiv_mem_from_store,
19597         validate_equiv_mem, equiv_init_varies_p, equiv_init_movable_p,
19598         contains_replace_regs, memref_referenced_p, memref_used_between_p,
19599         no_equiv, recorded_label_ref): Move from local-alloc.c.
19600         (update_equiv_regs): Ditto.  Make it static.
19601         (print_insn_chain, print_insn_chains): Move it from global.c.
19602         (pseudo_for_reload_consideration_p): Ditto.  Remove flag_ira.
19603         (build_insn_chain): Ditto.  Make it static.
19604         (ra_init_live_subregs): Move from ra-conflict.c.  Make it static.
19605         Rename to init_live_subregs.
19606         (gate_ira): Remove flag_ira.
19607
19608         * regclass.c: Rename reginfo.c.  Change file description.
19609         (FORBIDDEN_INC_DEC_CLASSES): Remove.
19610         (reg_class_superclasses, forbidden_inc_dec_class, in_inc_dec): Remove.
19611         (init_reg_sets_1): Remove code for evaluation of
19612         reg_class_superclasses and losing_caller_save_reg_set.
19613         (init_regs): Remove init_reg_autoinc.
19614         (struct costs, costs, init_cost, ok_for_index_p_nonstrict,
19615         ok_for_base_p_nonstrict): Remove.
19616         (regclass_init): Rename to reginfo_init.  Don't initialize init_cost.
19617         (pass_regclass_init): Rename to pass_reginfo_init.  Modify
19618         corresponding entries.
19619         (dump_regclass, record_operand_costs, scan_one_insn,
19620         init_reg_autoinc, regclass, record_reg_classes, copy_cost,
19621         record_address_regs, auto_inc_dec_reg_p): Remove.
19622         (gt-regclass.h): Rename to gt-reginfo.h.
19623
19624         * rtl.h (dump_global_regs, retry_global_alloc,
19625         build_insn_chain, dump_local_alloc, update_equiv_regs): Remove.
19626
19627         * Makefile.in (RA_H): Remove.
19628         (OBJS-common): Remove global.o, local-alloc.o, and ra-conflict.o.
19629         Rename regclass.o to reginfo.o.
19630         (regclass.o): Rename to reginfo.o.  Rename gt-regclass.h to
19631         gt-reginfo.h.
19632         (global.o, local-alloc.o, ra-conflict.o): Remove entries.
19633         (GTFILES): Rename regclass.c to reginfo.c.
19634
19635         * passes.c (init_optimization_passes): Remove pass_local_alloc and
19636         pass_global_alloc.  Rename pass_regclass_init to pass_reginfo_init.
19637
19638         * reload1.c (compute_use_by_pseudos, reload, count_pseudo,
19639         count_spilled_pseudo, find_reg, alter_reg, delete_output_reload):
19640         Remove flag_ira.
19641         (finish_spills): Ditto.  Remove code for !flag_ira.
19642
19643 2009-01-29  Kenneth Zadeck  <zadeck@naturalbridge.com>
19644
19645         PR middle-end/35854
19646         * doc/invoke.texi (rtl debug options): Complete rewrite.
19647         * auto-inc-dec.c (pass_inc_dec): Rename pass from "auto-inc-dec"
19648         to auto_inc_dec".
19649         * mode-switching.c (pass_mode_switching): Rename pass from
19650         "mode-sw" to "mode_sw".
19651         * except.c (pass_convert_to_eh_ranges): Rename pass from
19652         "eh-ranges" to "eh_ranges".
19653         * lower-subreg.c (pass_lower_subreg): Renamed pass from "subreg"
19654         to "subreg1".
19655
19656
19657 2009-01-29  Andrey Belevantsev  <abel@ispras.ru>
19658             Alexander Monakov  <amonakov@ispras.ru>
19659
19660         PR middle-end/38857
19661         * sel-sched.c (count_occurrences_1): Check that *cur_rtx is a hard
19662         register.
19663         (move_exprs_to_boundary): Change return type and pass through
19664         should_move from move_op.  Relax assert.  Update usage ...
19665         (schedule_expr_on_boundary): ... here.  Use should_move instead of
19666         cant_move.
19667         (move_op_orig_expr_found): Indicate that insn was disconnected from
19668         stream.
19669         (code_motion_process_successors): Do not call after_merge_succs
19670         callback if original expression was not found when traversing any of
19671         the branches.
19672         (code_motion_path_driver): Change return type.  Update prototype.
19673         (move_op): Update comment.  Add a new parameter (should_move).  Update
19674         prototype.  Set *should_move based on indication provided by
19675         move_op_orig_expr_found.
19676
19677 2009-01-28  Pat Haugen  <pthaugen@us.ibm.com>
19678
19679         * doc/invoke.texi (avoid-indexed-addresses): Document new option.
19680         * config/rs6000/rs6000-protos.h (avoiding_indexed_address_p): Declare.
19681         * config/rs6000/rs6000.opt (avoid-indexed-addresses): New option.
19682         * config/rs6000/rs6000.c (rs6000_override_options): Default
19683         avoid-indexed-addresses on for Power6, off for everything else.
19684         (avoiding_indexed_address_p): New function.
19685         (rs6000_legitimize_address): Use it.
19686         (rs6000_legitimate_address): Likewise.
19687         * config/rs6000/rs6000.md (movXX_updateX): Likewise
19688
19689 2009-01-28  Kazu Hirata  <kazu@codesourcery.com>
19690
19691         PR tree-optimization/38997
19692         * tree-loop-distribution.c (generate_memset_zero): Use
19693         POINTER_PLUS_EXPR for a pointer addition.
19694
19695 2009-01-28  Andreas Krebbel  <krebbel1@de.ibm.com>
19696
19697         * config/s390/s390.md (bswap<mode>2): New pattern added.
19698
19699 2009-01-28  Wolfgang Gellerich  <gellerich@de.ibm.com>
19700
19701         * config/s390/s390.md (*tls_load_31): Added type attribute.
19702
19703 2009-01-28  Wolfgang Gellerich  <gellerich@de.ibm.com>
19704
19705         * config/s390/s390.md: Fix a few comments.
19706
19707 2009-01-28  Wolfgang Gellerich  <gellerich@de.ibm.com>
19708
19709         * config/s390/s390.md (*tmsi_reg): Fixed z10prop attribute.
19710         (*tm<mode>_full): Fixed z10prop attribute.
19711         (*tst<mode>_extimm): Fixed z10prop attribute.
19712         (*tst<mode>_cconly_extimm): Fixed z10prop attribute.
19713         (*tstqiCCT_cconly): Fixed z10prop attribute.
19714         (*cmpsi_ccu_zerohi_rlsi): Fixed z10prop attribute.
19715         (*movsi_larl): Fixed z10prop attribute.
19716         (*movsi_zarch): Fixed z10prop attribute.
19717         (*movsi_eas): Fixed z10prop attribute.
19718         (*movhi): Fixed z10prop attribute.
19719         (*movqi): Fixed z10prop attribute.
19720         (*movstrictqi): Fixed z10prop attribute.
19721         (*mov<mode>): Fixed z10prop attribute.
19722         (*movcc): Fixed z10prop attribute.
19723         (*sethighpartdi_64): Fixed z10prop attribute.
19724         (*zero_extendhi<mode>2_z10): Fixed z10prop attribute.
19725         (*negdi2_sign_cc): Fixed z10prop attribute.
19726         (*negdi2_sign): Fixed z10prop attribute.
19727         (*absdi2_sign_cc): Fixed z10prop attribute.
19728         (*absdi2_sign): Fixed z10prop attribute.
19729         (*negabsdi2_sign_cc): Fixed z10prop attribute.
19730         (*negabsdi2_sign): Fixed z10prop attribute.
19731         (*cmp_and_trap_signed_int<mode>): Fixed z10prop attribute.
19732         (*cmp_and_trap_unsigned_int<mode>): Fixed z10prop attribute.
19733         (doloop_si64): Fixed z10prop attribute.
19734         (doloop_si31): Fixed z10prop attribute.
19735         (doloop_long): Fixed z10prop attribute.
19736         (indirect_jump): Fixed z10prop attribute.
19737         (nop): Fixed z10prop attribute.
19738         (main_base_64): Fixed z10prop attribute.
19739         (reload_base_64): Fixed z10prop attribute.
19740
19741 2009-01-28  Jakub Jelinek  <jakub@redhat.com>
19742
19743         PR rtl-optimization/38740
19744         * reorg.c (gate_handle_delay_slots): Avoid dbr scheduling
19745         if !optimize.
19746         * config/mips/mips.c (mips_reorg): Likewise.
19747
19748 2009-01-28  Richard Guenther  <rguenther@suse.de>
19749
19750         PR tree-optimization/38926
19751         * tree-ssa-pre.c (add_to_value): Assert we add only expressions
19752         with the correct value id to a value.
19753         (do_regular_insertion): Use the value number of edoubleprime
19754         for the value number of the expr.
19755
19756         Revert
19757         2008-08-21  Richard Guenther  <rguenther@suse.de>
19758
19759         * tree-ssa-pre.c (insert_into_preds_of_block): Before inserting
19760         a PHI ask VN if it is already available.
19761         * tree-ssa-sccvn.h (vn_phi_lookup): Declare.
19762         * tree-ssa-sccvn.c (vn_phi_lookup): Export.
19763
19764 2009-01-28  Jakub Jelinek  <jakub@redhat.com>
19765
19766         PR middle-end/38934
19767         * tree-vrp.c (extract_range_from_assert): For LE_EXPR and LT_EXPR
19768         set to varying whenever max has TREE_OVERFLOW set, similarly
19769         for GE_EXPR and GT_EXPR and TREE_OVERFLOW min.
19770
19771 2009-01-28  Richard Guenther  <rguenther@suse.de>
19772
19773         PR middle-end/38908
19774         * tree-ssa.c (warn_uninitialized_var): Do not warn for seemingly
19775         uninitialized aggregate uses in call arguments.
19776
19777 2009-01-28  Paolo Bonzini  <bonzini@gnu.org>
19778
19779         PR tree-optimization/38984
19780         * tree-ssa-structalias.c (get_constraints_for_1): Do not use
19781         the nothing_id variable if -fno-delete-null-pointer-checks.
19782
19783 2009-01-28  Uros Bizjak  <ubizjak@gmail.com>
19784
19785         PR target/38988
19786         * config/i386/i386.md (set_rip_rex64): Wrap operand 1 in label_ref.
19787         (set_got_offset_rex64): Ditto.
19788
19789 2009-01-27  H.J. Lu  <hongjiu.lu@intel.com>
19790
19791         PR target/38941
19792         * doc/extend.texi: Improve local variable with asm reg.
19793
19794 2009-01-27  Adam Nemet  <anemet@caviumnetworks.com>
19795
19796         * c.opt (Wpacked-bitfield-compat): Change init value to -1.
19797         * c-opts.c (c_common_post_options): If -W*packed-bitfield-compat
19798         was not supplied then set warn_packed_bitfield_compat to the
19799         default value of 1.
19800         * stor-layout.c (place_field): Check warn_packed_bitfield_compat
19801         against 1.
19802
19803 2009-01-27  Richard Guenther  <rguenther@suse.de>
19804
19805         PR tree-optimization/38503
19806         * cfgexpand.c (expand_gimple_basic_block): Ignore
19807         GIMPLE_CHANGE_DYNAMIC_TYPE during expansion.
19808         * tree-ssa-structalias.c (set_uids_in_ptset): Do not prune
19809         variables that cannot have TBAA applied.
19810         (compute_points_to_sets): Do not remove GIMPLE_CHANGE_DYNAMIC_TYPE
19811         statements.
19812
19813 2009-01-27  Uros Bizjak  <ubizjak@gmail.com>
19814
19815         PR middle-end/38969
19816         * calls.c (initialize_argument_information): Do not wrap complex
19817         arguments in SAVE_EXPR.
19818
19819 2009-01-26  Andreas Tobler  <a.tobler@schweiz.org>
19820
19821         * config/t-vxworks (LIBGCC2_INCLUDES): Fix typo.
19822         (INSTALL_LIBGCC): Revert typo commit.
19823
19824 2009-01-26  Richard Guenther  <rguenther@suse.de>
19825
19826         PR tree-optimization/38745
19827         * tree-ssa-alias.c (update_alias_info_1): Exclude RESULT_DECL
19828         from special handling.
19829
19830 2009-01-26  Richard Guenther  <rguenther@suse.de>
19831
19832         PR tree-optimization/38745
19833         * tree-ssa.c (execute_update_addresses_taken): Do not include
19834         variables that cannot possibly be a register in not_reg_needs.
19835         Do not clear TREE_ADDRESSABLE on vars that may not become
19836         registers.
19837         * tree-ssa.c (update_alias_info_1): Include those in the set
19838         of addressable vars.
19839
19840 2009-01-26  Richard Guenther  <rguenther@suse.de>
19841
19842         PR middle-end/38851
19843         * Makefile.in (tree-ssa-dse.o): Add langhooks.h.
19844         * tree-ssa-dse.c: Include langhooks.h
19845         (execute_simple_dse): Remove stores with zero size.
19846
19847 2009-01-24  Jakub Jelinek  <jakub@redhat.com>
19848
19849         PR c/38957
19850         * c-typeck.c (c_finish_return): Handle POINTER_PLUS_EXPR the same way
19851         as PLUS_EXPR.
19852
19853 2009-01-24  Julian Brown  <julian@codesourcery.com>
19854
19855         * config/arm/t-linux-eabi (LIB2FUNCS_STATIC_EXTRA): Add
19856         config/arm/linux-atomic.c.
19857         * config/arm/linux-atomic.c: New.
19858
19859 2009-01-24  Eric Botcazou  <ebotcazou@adacore.com>
19860
19861         * config/sparc/linux.h (DBX_REGISTER_NUMBER): Delete.
19862         * config/sparc/linux64.h (DBX_REGISTER_NUMBER): Likewise.
19863         * config/sparc/sysv4.h (DBX_REGISTER_NUMBER): Likewise.
19864
19865 2009-01-24  H.J. Lu  <hongjiu.lu@intel.com>
19866
19867         PR c/38938
19868         * c-opts.c (c_common_handle_option): Update warn_pointer_sign
19869         properly.
19870
19871 2009-01-24  Sebastian Pop  <sebastian.pop@amd.com>
19872
19873         PR tree-optimization/38953
19874         * graphite.c (graphite_verify): Add a call to verify_loop_closed_ssa.
19875         (scop_adjust_phis_for_liveouts): Initialize false_i to zero.
19876         (gloog): Split the exit of the scop when the scop exit is a loop exit.
19877         (graphite_transform_loops): Only call cleanup_tree_cfg if gloog
19878         changed the CFG.
19879
19880 2009-01-24  Paul Brook  <paul@codesourcery.com>
19881
19882         * config/arm/neon.md (neon_type): Move to arm.md.
19883         (neon_mov<VSTRUCT>): Add neon_type attribute.
19884         * config/arm/arm.md (neon_type): Move to here.
19885         (conds): Add "unconditioal" and use as default for NEON insns.
19886
19887 2009-01-24  Ben Elliston  <bje@au.ibm.com>
19888
19889         * bitmap.h (BITMAP_FREE): Eliminate `implicit conversion from
19890         void *' warning from -Wc++-compat.
19891         * Makefile.in (dominance.o-warn): Remove.
19892
19893 2009-01-23  Paolo Bonzini  <bonzini@gnu.org>
19894
19895         PR tree-optimization/38932
19896         * fold-const.c (fold_unary_ignore_overflow): New.
19897         * tree.h (fold_unary_ignore_overflow): Declare.
19898         * tree-ssa-ccp.c (ccp_fold): Use fold_unary_ignore_overflow.
19899         * tree-ssa-sccvn.c (visit_reference_op_load,
19900         simplify_unary_expression): Likewise.
19901
19902 2009-01-22  Adam Nemet  <anemet@caviumnetworks.com>
19903
19904         * c-decl.c (finish_struct): Move code to set DECL_PACKED after
19905         DECL_BIT_FIELD is alreay known.  Also inherit packed for bitfields
19906         regardless of their type.
19907         * c-common.c (handle_packed_attribute): Don't ignore packed on
19908         bitfields.
19909         * c.opt (Wpacked-bitfield-compat): New warning option.
19910         * stor-layout.c (place_field): Warn if offset of a field changed.
19911         * doc/extend.texi (packed): Mention the ABI change.
19912         * doc/invoke.texi (-Wpacked-bitfield-compat): Document.
19913         (Warning Options): Add it to the list.
19914
19915 2009-01-22  H.J. Lu  <hongjiu.lu@intel.com>
19916
19917         * c-opts.c (c_common_post_options): Fix a typo in comments.
19918
19919 2009-01-22  Steve Ellcey  <sje@cup.hp.com>
19920
19921         PR middle-end/38615
19922         * gimplify.c (gimplify_init_constructor): Fix promotion of const
19923         variables to static.
19924         * doc/invoke.texi (-fmerge-all-constants): Update description.
19925
19926 2009-01-22  Uros Bizjak  <ubizjak@gmail.com>
19927
19928         PR target/38931
19929         * config/i386/i386.md (*movsi_1): Use type "mmx" for alternative 2.
19930         (*movdi_1_rex64): Use type "mmx" for alternative 5.
19931
19932 2009-01-22  Richard Earnshaw  <rearnsha@arm.com>
19933
19934         * arm.h (DATA_ALIGNMENT): Align structures, unions and arrays to
19935         a word boundary.
19936         (LOCAL_ALIGNMENT): Similarly.
19937
19938 2009-01-22  Mark Shinwell  <shinwell@codesourcery.com>
19939             Joseph Myers  <joseph@codesourcery.com>
19940
19941         * config/arm/arm.c (all_architectures): Add iWMMXt2 entry.
19942         * config/arm/arm-cores.def: New ARM_CORE entry for iWMMXt2.
19943         * config/arm/arm-tune.md: Regenerate.
19944         * doc/invoke.texi (ARM Options): Document -mcpu=iwmmxt2 and
19945         -march=iwmmxt2.
19946
19947 2009-01-22  Mark Shinwell  <shinwell@codesourcery.com>
19948
19949         * config/arm/bpabi.h (SUBTARGET_EXTRA_ASM_SPEC): Bump EABI
19950         version number to five.
19951
19952 2009-01-22  Dodji Seketeli  <dodji@redhat.com>
19953
19954         PR c++/38930
19955         * c-decl.c (clone_underlying_type): Revert PR c++/26693 changes.
19956         * c-common.c (set_underlying_type): Likewise.
19957         (is_typedef_decl ): Likewise
19958         * tree.h: Likewise
19959         (set_underlying_type): Likewise.
19960         (is_typedef_type): Likewise.
19961
19962 2009-01-21  Vladimir Makarov  <vmakarov@redhat.com>
19963
19964         PR middle-end/38587
19965         * ira-color.c (coalesce_spill_slots): Don't coalesce allocnos
19966         crossing setjmps.
19967
19968 2009-01-21  Dave Korn  <dave.korn.cygwin@gmail.com>
19969
19970         PR bootstrap/37660
19971         * config/i386/cygwin.h (SHARED_LIBGCC_SPEC):  New helper macro.
19972         (LIBGCC_SPEC):  Don't define.
19973         (REAL_LIBGCC_SPEC):  Define instead, using SHARED_LIBGCC_SPEC.
19974
19975 2009-01-21  Uros Bizjak  <ubizjak@gmail.com>
19976
19977         PR rtl-optimization/38879
19978         * alias.c (base_alias_check): Unaligned access via AND address can
19979         alias all surrounding object types except those with sizes equal
19980         or wider than the size of unaligned access.
19981
19982 2009-01-21  Dodji Seketeli  <dodji@redhat.com>
19983
19984         PR c++/26693
19985         * c-decl.c (clone_underlying_type): Move this ...
19986         * c-common.c (set_underlying_type): ... here.
19987         Also, make sure the function properly sets TYPE_STUB_DECL() on
19988         the newly created typedef variant type.
19989         (is_typedef_decl ): New entry point.
19990         * tree.h: Added a new member member_types_needing_access_check to
19991         struct tree_decl_non_common.
19992         (set_underlying_type): New entry point.
19993         (is_typedef_type): Likewise.
19994
19995 2009-01-21  Bingfeng Mei  <bmei@broadcom.com>
19996
19997         * alias.c (walk_mems_1, walk_mems_2, insn_alias_sets_conflict_p):
19998         Check whether two instructions have memory references that
19999         belong to conflicting alias sets.  walk_mems_1 and walk_mems_2
20000         are helper functions for traversing.
20001         * alias.h (insn_alias_sets_confilict_p): New prototypes.
20002         * ddg.c (add_inter_loop_mem_dep): Call insn_alias_sets_conflict_p
20003         not to draw dependency edge for instructions with non-conflicting
20004         alias sets.
20005
20006 2009-01-20  Joseph Myers  <joseph@codesourcery.com>
20007
20008         PR other/38758
20009         * longlong.h: Update copyright years.  Use soft-fp license notice.
20010         Sync __clz_tab declaration with glibc.
20011
20012 2009-01-20  Steve Ellcey  <sje@cup.hp.com>
20013
20014         PR target/30687
20015         * doc/extend.texi (syscall_linkage): New.
20016         (version_id): Modify.
20017
20018 2009-01-20  Andrew Pinski  <andrew_pinski@playstation.sony.com>
20019             Richard Guenther  <rguenther@suse.de>
20020
20021         PR tree-optimization/38747
20022         PR tree-optimization/38748
20023         * tree-ssa-forwprop.c (forward_propagate_addr_expr_1): Disable the VCE
20024         conversion if the base address is an indirect reference and the
20025         aliasing sets could cause issues.
20026
20027 2009-01-20  Sebastian Pop  <sebastian.pop@amd.com>
20028
20029         * common.opt (fgraphite, fgraphite-identity): Add comment for
20030         explaining why these options are not documented.
20031
20032 2009-01-20  Sebastian Pop  <sebastian.pop@amd.com>
20033
20034         * graphite.c (stmt_simple_for_scop_p): Also handle cases when
20035         gimple_call_lhs is NULL.
20036
20037 2009-01-20  Paolo Bonzini  <bonzini@gnu.org>
20038
20039         PR target/38868
20040         * emit-rtl.c (adjust_address_1): Make sure memref is never
20041         overwritten.
20042
20043 2009-01-20  Ben Elliston  <bje@au.ibm.com>
20044
20045         * libgcov.c (__gcov_execl, __gcov_execlp, __gcov_execle): Remove
20046         const qualifier from arg parameter. Remove unnecessary cast to char *.
20047         * gcov-io.h (__gcov_execl, __gcov_execlp, __gcov_execle): Remove
20048         const qualifier from arg 2.
20049
20050 2009-01-19  Iain Sandoe  <iain.sandoe@sandoe-acoustics.co.uk>
20051
20052         * config/darwin.h: Add static-libgfortran to LINK_SPEC.
20053
20054 2009-01-19  Vladimir Makarov  <vmakarov@redhat.com>
20055
20056         PR c/38869
20057         * rtl.h (reinit_regs): New prototype.
20058         * regclass.c: Include ira.h.
20059         (reinit_regs): New.
20060         * Makefile.in (regclass.o): Add ira.h.
20061         * config/i386/i386.c (ix86_maybe_switch_abi): Use reinit_regs.
20062
20063 2009-01-18  H.J. Lu  <hongjiu.lu@intel.com>
20064
20065         PR target/38736
20066         * c-common.c (handle_aligned_attribute): Use
20067         ATTRIBUTE_ALIGNED_VALUE instead of BIGGEST_ALIGNMENT for
20068         default alignment value.
20069
20070         * c-cppbuiltin.c (c_cpp_builtins): Define __BIGGEST_ALIGNMENT__.
20071
20072         * defaults.h (ATTRIBUTE_ALIGNED_VALUE): New.
20073         * config/i386/i386.h (ATTRIBUTE_ALIGNED_VALUE): Likewise.
20074
20075         * doc/extend.texi: Update __attribute__ ((aligned)).  Document
20076         __BIGGEST_ALIGNMENT__.
20077
20078         * doc/tm.texi: Document ATTRIBUTE_ALIGNED_VALUE.
20079
20080 2009-01-18  Richard Guenther  <rguenther@suse.de>
20081
20082         PR tree-optimization/38819
20083         * tree-flow.h (operation_could_trap_helper_p): Declare.
20084         * tree-eh.c (operation_could_trap_helper_p): Export.
20085         * tree-ssa-sccvn.h (vn_nary_may_trap): Declare.
20086         * tree-ssa-sccvn.c (vn_nary_may_trap): New function.
20087         * tree-ssa-pre.c (insert_into_preds_of_block): Check if we
20088         are about to insert a possibly trapping instruction and fail
20089         in this case.
20090
20091 2009-01-18  Andreas Schwab  <schwab@suse.de>
20092
20093         * doc/install.texi (Configuration): Remove obsolete paragraph
20094         about use of --with-gnu-ld with --with-gnu-as.
20095
20096 2009-01-18  Kazu Hirata  <kazu@codesourcery.com>
20097
20098         * doc/extend.texi, doc/gimple.texi, doc/invoke.texi,
20099         doc/md.texi, doc/sourcebuild.texi, doc/tm.texi: Fix typos.
20100         Follow spelling conventions.
20101
20102 2009-01-18  Ben Elliston  <bje@au.ibm.com>
20103
20104         * bitmap.c (bitmap_obstack_alloc_stat): Adjust cast to eliminate
20105         C++ warning about implicit conversion from void * to struct
20106         bitmap_head_def *.
20107         (bitmap_obstack_free): Likewise for bitmap_element *.
20108         * Makefile.in (bitmap.o-warn): Remove.
20109
20110 2009-01-17  Dave Korn  <dave.korn.cygwin@gmail.com>
20111
20112         * Makefile.in (BACKENDLIBS):  Reorder to match dependencies.
20113
20114 2009-01-17  Sebastian Pop  <sebastian.pop@amd.com>
20115             Tobias Grosser  <tobi.grosser@amd.com>
20116
20117         * graphite.c (graphite_trans_scop_block): Do not block single
20118         nested loops.
20119
20120 2009-01-16  Alexandre Oliva  <aoliva@redhat.com>
20121
20122         * ebitmap.h (ebitmap_iter_init): Initialize all fields.
20123         * ipa-struct-reorg.c (gen_struct_type): Replace known-true
20124         test with assertion.
20125
20126 2009-01-16  Richard Guenther  <rguenther@suse.de>
20127
20128         PR tree-optimization/38835
20129         PR middle-end/36227
20130         * fold-const.c (fold_binary): Remove PTR + INT -> (INT)(PTR p+ INT)
20131         and INT + PTR -> (INT)(PTR p+ INT) folding.
20132         * tree-ssa-address.c (create_mem_ref): Properly use POINTER_PLUS_EXPR.
20133
20134 2009-01-16  Adam Nemet  <anemet@caviumnetworks.com>
20135
20136         PR target/38554
20137         * expmed.c (expand_shift): With SHIFT_COUNT_TRUNCATED, don't lift
20138         the subreg from a lowpart subreg if it is also casting the value.
20139
20140 2009-01-16  Sebastian Pop  <sebastian.pop@amd.com>
20141             Tobias Grosser  <tobi.grosser@amd.com>
20142
20143         * graphite.c (compare_prefix_loops): New.
20144         (build_scop_canonical_schedules): Rewritten.
20145         (graphite_transform_loops): Move build_scop_canonical_schedules
20146         after build_scop_iteration_domain.
20147
20148 2009-01-16  Sebastian Pop  <sebastian.pop@amd.com>
20149             Tobias Grosser  <tobi.grosser@amd.com>
20150
20151         * graphite.c (add_conditions_to_domain): Add the loops to
20152         the dimension of the iteration domain.  Do copy the domain
20153         only when it exists.
20154         (build_scop_conditions_1): Do not call add_conditions_to_domain.
20155         (add_conditions_to_constraints): New.
20156         (can_generate_code_stmt, can_generate_code): Removed.
20157         (gloog): Do not call can_generate_code.
20158         (graphite_transform_loops): Call add_conditions_to_constraints
20159         after building the iteration domain.
20160
20161 2009-01-16  Jakub Jelinek  <jakub@redhat.com>
20162
20163         PR tree-optimization/38789
20164         * tree-ssa-threadedge.c
20165         (record_temporary_equivalences_from_stmts_at_dest): Ignore calls to
20166         __builtin_constant_p.
20167
20168 2009-01-16  Kenneth Zadeck  <zadeck@naturalbridge.com>
20169
20170         * dce.c (delete_unmarked_insns): Reversed the order that insns are
20171         examined before deleting them.
20172
20173 2009-01-16  Richard Earnshaw  <rearnsha@arm.com>
20174
20175         * function.c (aggregate_value_p): Correctly extract the function
20176         type from CALL_EXPR_FN lookup.
20177
20178 2009-01-16  Hariharan Sandanagobalane  <hariharan@picochip.com>
20179
20180         * config/picochip/picochip.c (picochip_override_options): Revert
20181         CFI asm flag disable commited previously.
20182
20183 2009-01-15  Sebastian Pop  <sebastian.pop@amd.com>
20184             Tobias Grosser  <tobi.grosser@amd.com>
20185             Jan Sjodin  <jan.sjodin@amd.com>
20186
20187         * graphite.c (scan_tree_for_params): On substractions negate
20188         all the coefficients of the term.
20189         (clast_to_gcc_expression_red): New.  Handle reduction expressions
20190         of more than two operands.
20191         (clast_to_gcc_expression): Call clast_to_gcc_expression_red.
20192         (get_vdef_before_scop): Handle also the case of default definitions.
20193
20194 2009-01-15  Richard Sandiford  <rdsandiford@googlemail.com>
20195
20196         * caller-save.c (add_used_regs_1, add_used_regs): New functions.
20197         (insert_one_insn): Use them instead of REG_DEAD and REG_INC notes.
20198         Also use them when walking CALL_INSN_FUNCTION_USAGE.
20199
20200 2009-01-15  H.J. Lu  <hongjiu.lu@intel.com>
20201             Joey Ye  <joey.ye@intel.com>
20202
20203         PR middle-end/37843
20204         * cfgexpand.c (expand_stack_alignment): Don't update stack
20205         boundary nor check incoming stack boundary here.
20206         (gimple_expand_cfg): Update stack boundary and check incoming
20207         stack boundary here.
20208
20209 2009-01-15  Kenneth Zadeck  <zadeck@naturalbridge.com>
20210
20211         * dce.c (find_call_stack_args, delete_unmarked_insns): Fixed comments.
20212
20213 2009-01-14  Jakub Jelinek  <jakub@redhat.com>
20214
20215         PR rtl-optimization/38245
20216         * calls.c (expand_call): Add stack arguments to
20217         CALL_INSN_FUNCTION_USAGE even for pure calls (when
20218         ACCUMULATE_OUTGOING_ARGS) and even for args partially passed
20219         in regs and partially in memory or BLKmode arguments.
20220         (emit_library_call_value_1): Add stack arguments to
20221         CALL_INSN_FUNCTION_USAGE even for pure calls (when
20222         ACCUMULATE_OUTGOING_ARGS).
20223         * dce.c: Include tm_p.h.
20224         (find_call_stack_args): New function.
20225         (deletable_insn_p): Call it for CALL_P insns.  Add ARG_STORES
20226         argument.
20227         (mark_insn): Call find_call_stack_args for CALL_Ps.
20228         (prescan_insns_for_dce): Walk insns backwards in bb rather than
20229         forwards.  Allocate and free arg_stores bitmap if needed, pass it
20230         down to deletable_insn_p, don't mark stores set in arg_stores
20231         bitmap, clear the bitmap at the beginning of each bb.
20232         * Makefile.in (dce.o): Depend on $(TM_P_H).
20233
20234 2009-01-14  Michael Meissner  <gnu@the-meissners.org>
20235
20236         PR target/22599
20237         * config/i386/i386.c (print_operand): Add tests for 'D', 'C', 'F', 'f'
20238         to make sure the insn is a conditional test (bug 22599).  Reformat a
20239         few long lines.
20240
20241 2009-01-14  Sebastian Pop  <sebastian.pop@amd.com>
20242
20243         PR middle-end/38431
20244         * graphite.c (get_vdef_before_scop, scop_adjust_vphi): New.
20245         (scop_adjust_phis_for_liveouts): Call scop_adjust_vphi.
20246         (gloog): Do not call cleanup_tree_cfg.
20247         (graphite_transform_loops): Call cleanup_tree_cfg after all
20248         scops have been code generated.
20249
20250 2009-01-14  Basile Starynkevitch  <basile@starynkevitch.net>
20251         * doc/gty.texi (Invoking the garbage collector): Added new node
20252         and section documenting ggc_collect.
20253
20254 2009-01-14  Richard Guenther  <rguenther@suse.de>
20255
20256         PR tree-optimization/38826
20257         PR middle-end/38477
20258         * tree-ssa-structalias.c (emit_alias_warning): Emit the pointer
20259         initialization notes only if we actually emitted a warning.
20260         (intra_create_variable_infos): Add constraints for a result decl
20261         that is passed by hidden reference.
20262         (build_pred_graph): Mark all related variables non-direct on
20263         address-taking.
20264
20265 2009-01-14  Nick Clifton  <nickc@redhat.com>
20266
20267         * ira-conflicts.c: Include addresses.h for the definition of
20268         base_reg_class.
20269         (ira_build_conflicts): Use base_reg_class instead of BASE_REG_CLASS.
20270         * Makefile.in: Add a dependency of ira-conflicts.o on addresses.h.
20271
20272 2009-01-13  Vladimir Makarov  <vmakarov@redhat.com>
20273
20274         PR target/38811
20275         * Makefile.in (ira-lives.o): Add except.h.
20276
20277         * ira-lives.c: Include except.h.
20278         (process_bb_node_lives): Process can_throw_internal.
20279
20280 2009-01-13  Jakub Jelinek  <jakub@redhat.com>
20281
20282         PR rtl-optimization/38774
20283         * combine.c (simplify_set): When undoing cc_use change, don't do
20284         PUT_CODE on the newly created comparison, but instead put back the
20285         old comparison.
20286
20287 2009-01-13  Joseph Myers  <joseph@codesourcery.com>
20288
20289         * doc/invoke.texi (ARM Options): Update lists of -mcpu and -march
20290         values.  Remove duplicate arm8 entry.
20291
20292 2009-01-13  Sebastian Pop  <sebastian.pop@amd.com>
20293
20294         PR tree-optimization/38786
20295         * graphite.c (expand_scalar_variables_ssa_name): New, outlined from
20296         the SSA_NAME case of expand_scalar_variables_expr.
20297         Set the type of an expression to the type of its assign statement.
20298         (expand_scalar_variables_expr): Also gather the scalar computation
20299         used to index the memory access.  Do not pass loop_p.
20300         Fix comment.  Stop recursion on tcc_constant or tcc_declaration.
20301         (expand_scalar_variables_stmt): Pass to expand_scalar_variables_expr
20302         the gimple_stmt_iterator where it inserts new code.
20303         Do not pass loop_p.
20304         (copy_bb_and_scalar_dependences): Do not pass loop_p.
20305         (translate_clast): Update call to copy_bb_and_scalar_dependences.
20306
20307 2009-01-13  Sebastian Pop  <sebastian.pop@amd.com>
20308
20309         * graphite.h (debug_value): Removed.
20310         * graphite.c (debug_value): Removed.
20311
20312 2009-01-13  Richard Earnshaw  <rearnsha@arm.com>
20313
20314         * config/arm/arm.c (output_move_double): Don't synthesize thumb-2
20315         ldrd/strd with two 32-bit instructions.
20316
20317 2009-01-13  Richard Earnshaw  <rearnsha@arm.com>
20318
20319         * config/arm/arm.c (struct processors): Pass for speed down into
20320         cost helper functions.
20321         (const_ok_for_op): Handle COMPARE and inequality nodes.
20322         (arm_rtx_costs_1): Rewrite.
20323         (arm_size_rtx_costs): Update prototype.
20324         (arm_rtx_costs): Pass speed down to helper functions.
20325         (arm_slowmul_rtx_costs): Rework cost calculations.
20326         (arm_fastmul_rtx_costs, arm_xscale_rtx_costs): Likewise.
20327         (arm_9e_rtx_costs): Likewise.
20328
20329 2009-01-13  Uros Bizjak  <ubizjak@gmail.com>
20330
20331         * config/alpha/alpha.c (alpha_legitimate_address_p): Explicit
20332         relocations of local symbols wider than UNITS_PER_WORD are not valid.
20333         (alpha_legitimize_address): Do not split local symbols wider than
20334         UNITS_PER_WORD into HIGH/LO_SUM parts.
20335
20336 2009-01-13  Danny Smith  <dannysmith@users.sourceforge.net>
20337
20338         PR bootstrap/38580
20339         * gcc.c (process_command): Replace call to execvp with calls
20340         to pex_one and exit.
20341
20342 2009-01-03  Anatoly Sokolov  <aesok@post.ru>
20343
20344         PR target/29141
20345         * config/avr/t-avr (LIB1ASMFUNCS): Add _tablejump_elpm.
20346         * config/avr/libgcc.S (__do_global_ctors, __do_global_dtors): Add
20347         variant for devices with 3-byte PC.
20348         (__tablejump_elpm__): New.
20349
20350 2009-01-12  Jakub Jelinek  <jakub@redhat.com>
20351
20352         PR c/32041
20353         * c-parser.c (c_parser_postfix_expression): Allow `->' in
20354         offsetof member-designator, handle it as `[0].'.
20355
20356 2009-01-12  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
20357
20358         * pa.c (pa_asm_output_mi_thunk): Use pc-relative branch to thunk
20359         function when not using named sections on targets with named sections
20360         if branch distance is less than 262132.
20361
20362 2009-01-12  Richard Earnshaw  <rearnsha@arm.com>
20363
20364         * combine.c (combine_instructions):  Recompute
20365         optimize_this_for_speed_p  for each BB in the main combine loop.
20366
20367 2009-01-12  Tomas Bily  <tbily@suse.cz>
20368
20369         PR middlend/38385
20370         * tree-loop-distribution.c (prop_phis): New function.
20371         (generate_builtin): Call prop_phis.
20372         * testsuite/gcc.dg/tree-ssa/pr38385.c: New file.
20373
20374 2009-01-12  Jakub Jelinek  <jakub@redhat.com>
20375
20376         PR tree-optimization/38807
20377         * tree-ssa-reassoc.c (remove_visited_stmt_chain): Don't look at
20378         gimple_visited_p unless stmt is GIMPLE_ASSIGN.
20379
20380 2009-01-11  Adam Nemet  <anemet@caviumnetworks.com>
20381
20382         * expmed.c (store_bit_field_1): Properly truncate the paradoxical
20383         subreg of op0 to the original op0.
20384
20385 2009-01-11  Laurent GUERBY  <laurent@guerby.net>
20386
20387         * doc/sourcebuild.texi (Source Tree): Move up intl and fixinc.
20388
20389 2009-01-11  Markus Schoepflin  <markus.schoepflin@comsoft.de>
20390
20391         PR debug/7055
20392         * mips-tfile.c (parse_def): Fix parsing of def strings
20393         starting with digits.
20394
20395 2009-01-10  Jakub Jelinek  <jakub@redhat.com>
20396
20397         PR target/38695
20398         * config/arm/arm.c (arm_is_long_call_p): Don't call
20399         arm_function_in_section_p if decl isn't a FUNCTION_DECL.
20400
20401 2009-01-09  Steven Bosscher  <steven@gcc.gnu.org>
20402
20403         * regrename.c (regrename_optimize): Fix dumping.
20404         (find_oldest_value_reg): Preserve REG_POINTER.
20405         (copy_hardreg_forward_1): Likewise.
20406
20407 2009-01-09  Diego Novillo  <dnovillo@google.com>
20408
20409         * gimple.h (struct gimple_statement_base) <uid>: Document
20410         the restrictions on its use.
20411         (gimple_uid): Tidy.
20412         (gimple_set_uid): Tidy.
20413
20414 2009-01-09  Jakub Jelinek  <jakub@redhat.com>
20415
20416         * config/i386/i386.c (ix86_expand_movmem, ix86_expand_setmem): Add
20417         zero guard even if align_bytes != 0 and count is smaller than
20418         size_needed.
20419
20420 2009-01-09  Vladimir Makarov  <vmakarov@redhat.com>
20421
20422         PR rtl-optimization/38495
20423         * ira-emit.c (print_move_list, ira_debug_move_list): New functions.
20424         (add_range_and_copies_from_move_list): Print all added ranges.
20425         Add ranges to memory optimized destination.
20426
20427 2009-01-09  Jakub Jelinek  <jakub@redhat.com>
20428
20429         PR target/38686
20430         PR target/38708
20431         * config/i386/i386.c (override_options): Reject
20432         -mstringop-strategy=rep_8byte with -m32.
20433         (ix86_expand_movmem): For size_needed == 1 set epilogue_size_needed
20434         to 1.  Do count comparison against epilogue_size_needed at compile
20435         time even when count_exp was constant forced into register.  For
20436         size_needed don't jump to epilogue, instead just avoid aligning
20437         and invoke the body algorithm.  If need_zero_guard, add zero guard
20438         even if count is non-zero, but smaller than size_needed + number of
20439         bytes that could be stored for alignment.
20440         (ix86_expand_setmem): For size_needed == 1 set epilogue_size_needed
20441         to 1.  If need_zero_guard, add zero guard even if count is non-zero,
20442         but smaller than size_needed + number of bytes that could be stored
20443         for alignment.  Compare size_needed with epilogue_size_needed instead
20444         of desired_align - align, don't adjust size_needed, pass
20445         epilogue_size_needed to the epilogue expanders.
20446
20447         PR c/35742
20448         * c-pretty-print.c (pp_c_expression): Handle GOTO_EXPR like BIND_EXPR.
20449
20450 2009-01-09  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
20451
20452         * pa.c (last_address): Change to unsigned.
20453         (update_total_code_bytes): Change argument to unsigned.  Don't
20454         check if insn addresses are set.
20455         (pa_output_function_epilogue): Set last_address to UINT_MAX if insn
20456         addresses are not set.
20457         (pa_asm_output_mi_thunk): Handle wrap when updating last_address.
20458
20459 2009-01-09  Nick Clifton  <nickc@redhat.com>
20460
20461         * config/sh/symbian.c: Replace uses of DECL_INLINE with
20462         DECL_DECLARED_INLINE_P.
20463
20464 2009-01-09  Jakub Jelinek  <jakub@redhat.com>
20465
20466         PR middle-end/38347
20467         * dojump.c (do_jump_by_parts_zero_rtx): Use mode instead of
20468         GET_MODE (op0) in operand_subword_force calls.
20469
20470         PR middle-end/38771
20471         * fold-const.c (fold_unary): For COMPOUND_EXPR and COND_EXPR,
20472         fold_convert arg0 operands to TREE_TYPE (op0) first.
20473
20474 2009-01-08  Vladimir Makarov  <vmakarov@redhat.com>
20475
20476         * params.def (ira-max-conflict-table-size): Decrease default value
20477         to 1000.
20478
20479 2009-01-08  Jakub Jelinek  <jakub@redhat.com>
20480
20481         PR tree-optimization/37031
20482         * lambda-code.c (lambda_collect_parameters): Call pointer_set_destroy
20483         on parameter_set.
20484         (build_access_matrix): Reserve correct size for AM_MATRIX vector,
20485         allocate it using gc instead of heap, use VEC_quick_push instead of
20486         VEC_safe_push.
20487         * graphite.c (build_access_matrix): Allocate AM_MATRIX vector using gc
20488         instead of heap, use VEC_quick_push instead of VEC_safe_push.
20489         * tree-data-ref.h (struct access_matrix): Change matrix to gc
20490         allocated vector from heap allocated.
20491         * lambda.h: Add DEF_VEC_ALLOC_P for gc allocated lambda_vector.
20492         * tree-loop-linear.c (linear_transform_loops): Allocate nest
20493         vector only after perfect_loop_nest_depth call.
20494
20495 2009-01-08  Sebastian Pop  <sebastian.pop@amd.com>
20496             Jan Sjodin  <jan.sjodin@amd.com>
20497
20498         PR tree-optimization/38559
20499         * graphite.c (debug_value, copy_constraint,
20500         swap_constraint_variables, scale_constraint_variable, ): New.
20501         (get_lower_bound, get_upper_bound): Removed.
20502         (graphite_trans_bb_strip_mine): Clean up this code that works
20503         only for constant number of iterations.  Fully copy upper and
20504         lower bound constraints, not only the constant part of them.
20505         * graphite.h (debug_value): Declared.
20506
20507 2009-01-08  Ira Rosen  <irar@il.ibm.com>
20508
20509         PR tree-optimization/37194
20510         * tree-vect-transform.c (vect_estimate_min_profitable_iters):
20511         Don't add the cost of cost model guard in prologue to scalar
20512         outside cost in case of known number of iterations.
20513
20514 2009-01-07  Nathan Froyd  <froydnj@codesourcery.com>
20515             Alan Modra  <amodra@bigpond.net.au>
20516
20517         * config/rs6000/rs6000.c (rs6000_legitimize_address): Check for
20518         non-word-aligned REG+CONST addressing.
20519
20520 2009-01-07  Uros Bizjak  <ubizjak@gmail.com>
20521
20522         PR target/38706
20523         * config/alpha/alpha.c (alpha_end_function): For TARGET_ABI_OSF, call
20524         free_after_compilation when outputting a thunk.
20525         (alpha_output_mi_thunk_osf): Assert that we are processing a thunk.
20526         Do not call free_after_compilation here.
20527
20528 2009-01-07  Uros Bizjak  <ubizjak@gmail.com>
20529
20530         * config/i386/i386.c (ix86_target_string): Use ARRAY_SIZE.
20531         (ix86_valid_target_attribute_inner_p): Ditto.
20532
20533 2009-01-07  Jan Sjodin  <jan.sjodin@amd.com>
20534
20535         PR tree-optimization/38492
20536         PR tree-optimization/38498
20537         * tree-check.c (operator_is_linear, scev_is_linear_expression): New.
20538         * tree-chrec.h (scev_is_linear_expression): Declared.
20539         * graphite.c (graphite_cannot_represent_loop_niter): New.
20540         (scopdet_basic_block_info): Call graphite_cannot_represent_loop_niter.
20541         (graphite_loop_normal_form): Use gcc_assert.
20542         (scan_tree_for_params): Use CASE_CONVERT.
20543         (phi_node_is_iv, bb_contains_non_iv_scalar_phi_nodes): New.
20544         (build_scop_conditions_1): Call bb_contains_non_iv_scalar_phi_nodes.
20545         Use gcc_assert.  Discard scops that contain unhandled cases.
20546         (build_scop_conditions): Return a boolean status for unhandled cases.
20547         (strip_mine_profitable_p): Print the loop number, not its depth.
20548         (is_interchange_valid): Pass the depth of the loop nest, don't
20549         recompute it wrongly.
20550         (graphite_trans_bb_block): Same.
20551         (graphite_trans_bb_block): Print tentative of loop blocking.
20552         (graphite_trans_scop_block): Do not print that the loop has been
20553         blocked.
20554         (graphite_transform_loops): Do not handle scops that contain condition
20555         scalar phi nodes.
20556
20557 2009-01-07  H.J. Lu  <hongjiu.lu@intel.com>
20558
20559         AVX Programming Reference (December, 2008)
20560         * config/i386/avxintrin.h (_mm256_stream_si256): New.
20561         (_mm256_stream_pd): Likewise.
20562         (_mm256_stream_ps): Likewise.
20563
20564         * config/i386/i386.c (ix86_builtins): Add IX86_BUILTIN_MOVNTDQ256,
20565         IX86_BUILTIN_MOVNTPD256 and IX86_BUILTIN_MOVNTPS256.
20566         (ix86_special_builtin_type): Add VOID_FTYPE_PV4DI_V4DI.
20567         (bdesc_special_args): Add __builtin_ia32_movntdq256,
20568         __builtin_ia32_movntpd256 and __builtin_ia32_movntps256.
20569         (ix86_init_mmx_sse_builtins): Handle VOID_FTYPE_PV4DI_V4DI.
20570         (ix86_expand_special_args_builtin): Likewise.
20571
20572         * config/i386/sse.md (AVXMODEDI): New.
20573         (avx_movnt<mode>): Likewise.
20574         (avx_movnt<mode>): Likewise.
20575         (<sse>_movnt<mode>): Remove AVX support.
20576         (sse2_movntv2di): Likewise.
20577
20578 2009-01-07  Richard Guenther  <rguenther@suse.de>
20579
20580         PR middle-end/38751
20581         * fold-const.c (extract_muldiv): Remove obsolete comment.
20582         (fold_plusminus_mult_expr): Undo MINUS_EXPR
20583         to PLUS_EXPR canonicalization for the canonicalization.
20584
20585 2009-01-07  Gerald Pfeifer  <gerald@pfeifer.com>
20586
20587         * doc/install.texi (alpha*-dec-osf*): Remove note on 32-bit
20588         hosted cross-compilers generating less efficient code.
20589
20590 2009-01-06  Richard Sandiford  <rdsandiford@googlemail.com>
20591
20592         * function.h (rtl_data): Add a dbr_scheduled_p field.
20593         * reorg.c (dbr_schedule): Set it.
20594         (gate_handle_delay_slots): Check it.
20595         * config/mips/mips.c (mips_base_delayed_branch): Delete.
20596         (mips_reorg): Check flag_delayed_branch instead of
20597         mips_base_delayed_branch.
20598         (mips_override_options): Don't set mips_base_delayed_branch
20599         or flag_delayed_branch.
20600
20601 2009-01-06  Richard Sandiford  <rdsandiford@googlemail.com>
20602
20603         PR rtl-optimization/38426.
20604         * ira.c (ira): Set current_function_is_leaf earlier.
20605
20606 2009-01-06  Jakub Jelinek  <jakub@redhat.com>
20607
20608         PR rtl-optimization/38722
20609         * combine.c (try_combine): Don't modify PATTERN (i3) and notes
20610         too early, only set a flag and modify after last possible
20611         undo_all point.
20612
20613 2009-01-06  Janis Johnson  <janis187@us.ibm.com>
20614
20615         PR c/34252
20616         * ginclude/float.h: Rename DECnn_DEN to DECnn_SUBNORMAL_MIN.
20617         * real.c (decimal_single_format): Correct values of emin and emax.
20618         (decimal_double_format): Ditto.
20619         (decimal_quad_format): Ditto.
20620         * c-cppbuiltin.c (builtin_define_decimal_float_constants): Adjust
20621         computation of DECnn_MIN and DECnn_MAX for corrected values of
20622         emin and emax.  Define __DECnn_SUBNORMAL_MIN__ instead of
20623         __DECnn_MIN__, and adjust its computation for the corrected value
20624         of emin.
20625
20626 2009-01-06  Jan Hubicka  <jh@suse.cz>
20627
20628         PR target/38744
20629         * config/i386/i386.c (ix86_expand_call): Use ARRAY_SIZE.
20630
20631 2009-01-06  Gerald Pfeifer  <gerald@pfeifer.com>
20632
20633         * doc/contrib.texi (Contributors): Slightly adjust the end note.
20634         Add Robert Clark to the list of testers.
20635
20636 2009-01-06  Jan Hubicka  <jh@suse.cz>
20637             Kai Tietz  <kai.tietz@onevision.com>
20638
20639         * config/i386/i386.md (*msabi_syvabi): Add SSE regs clobbers.
20640         * config/i386/i386.c (ix86_expand_call): Add clobbers.
20641
20642 2009-01-06  Jan Hubicka  <jh@suse.cz>
20643             Kai Tietz  <kai.tietz@onevision.com>
20644
20645         * config/i386/i386.h (CONDITIONAL_CALL_USAGE): SSE regs are not used
20646         for w64 ABI.
20647         * config/i386/i386.c (struct ix86_frame): Add padding0 and nsseregs.
20648         (ix86_nsaved_regs): Count only general purpose regs.
20649         (ix86_nsaved_sseregs): New.
20650         (ix86_compute_frame_layout): Update nsseregs; set preferred alignment
20651         to 16 for w64; compute padding and size of sse reg save area.
20652         (ix86_emit_save_regs, ix86_emit_save_regs_using_mov): Save only
20653         general purpose regs.
20654         (ix86_emit_save_sse_regs_using_mov): New.
20655         (ix86_expand_prologue): Save SSE regs if needed.
20656         (ix86_emit_restore_regs_using_mov): Use only general purpose regs.
20657         (ix86_emit_restore_sse_regs_using_mov): New.
20658         (ix86_expand_epilogue): Save SSE regs if needed.
20659
20660 2009-01-06  Jan Hubicka  <jh@suse.cz>
20661             Kai Tietz  <kai.tietz@onevision.com>
20662
20663         * config/i386/i386.h (ACCUMULATE_OUTGOING_ARGS): Enable for MSABI
20664         * config/i386/i386.c (init_cumulative_args): Disallow calls of MSABI
20665         functions when accumulate outgoing args is off.
20666
20667 2009-01-06  H.J. Lu  <hongjiu.lu@intel.com>
20668
20669         PR bootstrap/38742
20670         * ira-color.c (ira_reuse_stack_slot): Check ENABLE_IRA_CHECKING
20671         before using pseudos_have_intersected_live_ranges_p.
20672
20673         * ira-int.h (ira_assert): Always define.
20674
20675 2009-01-06  H.J. Lu  <hongjiu.lu@intel.com>
20676
20677         AVX Programming Reference (December, 2008)
20678         * config/i386/avxintrin.h (_mm_permute2_pd): Removed.
20679         (_mm256_permute2_pd): Likewise.
20680         (_mm_permute2_ps): Likewise.
20681         (_mm256_permute2_ps): Likewise.
20682         * config/i386/i386.md (UNSPEC_VPERMIL2): Likewise.
20683         * config/i386/sse.md (avx_vpermil2<mode>3): Likewise.
20684
20685         * config/i386/i386.c (ix86_builtins): Remove
20686         IX86_BUILTIN_VPERMIL2PD, IX86_BUILTIN_VPERMIL2PS,
20687         IX86_BUILTIN_VPERMIL2PD256 and IX86_BUILTIN_VPERMIL2PS256.
20688         (ix86_builtin_type): Remove V8SF_FTYPE_V8SF_V8SF_V8SI_INT,
20689         V4DF_FTYPE_V4DF_V4DF_V4DI_INT, V4SF_FTYPE_V4SF_V4SF_V4SI_INT
20690         and V2DF_FTYPE_V2DF_V2DF_V2DI_INT.
20691         (bdesc_args): Remove __builtin_ia32_vpermil2pd,
20692         __builtin_ia32_vpermil2ps, __builtin_ia32_vpermil2pd256 and
20693         __builtin_ia32_vpermil2ps256.
20694         (ix86_init_mmx_sse_builtins): Updated.
20695         (ix86_expand_args_builtin): Likewise.
20696
20697 2009-01-05  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
20698
20699         * pa.c (output_call): Relocate non-jump insns in the delay slot of
20700         long absolute calls when generating PA 2.0 code.
20701
20702 2009-01-05  Vladimir Makarov  <vmakarov@redhat.com>
20703
20704         PR rtl-optimization/38583
20705         * params.h (IRA_MAX_CONFLICT_TABLE_SIZE): New macro.
20706
20707         * params.def (ira-max-conflict-table-size): New.
20708
20709         * doc/invoke.texi (ira-max-conflict-table-size): Decribe.
20710
20711         * ira.h (ira_conflicts_p): New external definition.
20712
20713         * ira-conflicts.c (build_conflict_bit_table): Do not build too big
20714         table.  Report this.  Return result of building.
20715         (ira_build_conflicts): Use ira_conflicts_p.  Check result of
20716         building conflict table.
20717
20718         * ira-color.c (fast_allocation): Use num instead of ira_allocnos_num.
20719         (ira_color): Use ira_conflicts_p.
20720
20721         * global.c: Include ira.h.
20722         (pseudo_for_reload_consideration_p, build_insn_chain): Use
20723         ira_conflicts_p.
20724
20725         * Makefile.in (global.o): Add ira.h.
20726
20727         * ira-build.c (mark_all_loops_for_removal,
20728         propagate_some_info_from_allocno): New.
20729         (remove_unnecessary_allocnos): Call
20730         propagate_some_info_from_allocno.
20731         (remove_low_level_allocnos): New.
20732         (remove_unnecessary_regions): Add parameter.  Call
20733         mark_all_loops_for_removal and remove_low_level_allocnos.  Pass
20734         parameter to remove_unnecessary_regions.
20735         (ira_build): Remove all regions but root if the conflict table was
20736         not built.  Update conflict hard regs for allocnos crossing calls.
20737
20738         * ira.c (ira_conflicts_p): New global.
20739         (ira): Define and use ira_conflicts_p.
20740
20741         * reload1.c (compute_use_by_pseudos, reload, count_pseudo,
20742         count_spilled_pseudo, find_reg, alter_reg, finish_spills,
20743         emit_input_reload_insns, delete_output_reload): Use ira_conflicts_p.
20744
20745 2009-01-06  Ben Elliston  <bje@au.ibm.com>
20746
20747         * gengtype-lex.l (YY_NO_INPUT): Define.
20748
20749 2009-01-05  Andrew Pinski  <andrew_pinski@playstation.sony.com>
20750
20751         PR c/34911
20752         * c-common.c (handle_vector_size_attribute): Also reject
20753         BOOLEAN_TYPE types.
20754
20755 2009-01-05  Sebastian Pop  <sebastian.pop@amd.com>
20756
20757         PR tree-optimization/38492
20758         * graphite.c (rename_map_elt, debug_rename_elt,
20759         debug_rename_map_1, debug_rename_map, new_rename_map_elt,
20760         rename_map_elt_info, eq_rename_map_elts,
20761         get_new_name_from_old_name, bb_in_sese_p): Moved around.
20762         (sese_find_uses_to_rename_use): Renamed sese_build_livein_liveouts_use.
20763         (sese_find_uses_to_rename_bb): Renamed sese_build_livein_liveouts_bb.
20764         (sese_build_livein_liveouts): New.
20765         (new_sese, free_sese): New.
20766         (new_scop): Call new_sese.
20767         (free_scop): Call free_sese.
20768         (rename_variables_from_edge, rename_phis_end_scop): Removed.
20769         (register_old_new_names): Renamed register_old_and_new_names.
20770         (register_scop_liveout_renames, add_loop_exit_phis,
20771         insert_loop_close_phis, struct igp,
20772         default_liveout_before_guard, add_guard_exit_phis,
20773         insert_guard_phis, copy_renames): New.
20774         (translate_clast): Call insert_loop_close_phis and insert_guard_phis.
20775         (sese_add_exit_phis_edge): Renamed scop_add_exit_phis_edge.
20776         (rewrite_into_sese_closed_ssa): Renamed scop_insert_phis_for_liveouts.
20777         (scop_adjust_phis_for_liveouts): New.
20778         (gloog): Call scop_adjust_phis_for_liveouts.
20779
20780         * graphite.h (struct sese): Documented.  Added fields liveout,
20781         num_ver and livein.
20782         (SESE_LIVEOUT, SESE_LIVEIN, SESE_LIVEIN_VER, SESE_NUM_VER): New.
20783         (new_sese, free_sese, sese_build_livein_liveouts): Declared.
20784         (struct scop): Added field liveout_renames.
20785         (SCOP_LIVEOUT_RENAMES): New.
20786
20787 2009-01-05  Harsha Jagasia  <harsha.jagasia@amd.com>
20788
20789         PR tree-optimization/38510
20790         * graphite.c (recompute_all_dominators): Call mark_irreducible_loops.
20791         (translate_clast): Call recompute_all_dominators before
20792         graphite_verify.
20793         (gloog): Call recompute_all_dominators before graphite_verify.
20794
20795 2009-01-05  Harsha Jagasia  <harsha.jagasia@amd.com>
20796             Jan Sjodin  <jan.sjodin@amd.com>
20797
20798         PR tree-optimization/38500
20799         * graphite.c (create_sese_edges): Call fix_loop_structure after
20800         splitting blocks.
20801
20802 2009-01-05  Joel Sherrill  <joel.sherrill@oarcorp.com>
20803
20804         * config.gcc: Add m32r*-*-rtems*.
20805         * config/m32r/rtems.h: New file.
20806
20807 2009-01-05  Ben Elliston  <bje@au.ibm.com>
20808
20809         * Makefile.in (.po.gmo): Use mkinstalldirs, not test -d || mkdir.
20810         (.po.pox): Likewise.
20811         (po/gcc.pot): Likewise.
20812
20813 2009-01-04  David S. Miller  <davem@davemloft.net>
20814
20815         * config/sparc/sparc.h (SECONDARY_MEMORY_NEEDED_RTX): Delete.
20816         (STARTING_FRAME_OFFSET): Always set to zero.
20817
20818 2009-01-04  Richard Sandiford  <rdsandiford@googlemail.com>
20819
20820         * tree.def (LSHIFT_EXPR, RSHIFT_EXPR): Add commentary.
20821         * tree-cfg.c (verify_gimple_assign_binary): Allow shifts of
20822         fixed-point types, and vectors of the same.
20823
20824 2009-01-04  Richard Sandiford  <rdsandiford@googlemail.com>
20825
20826         * config/mips/sync.md (*mb_barrier): Rename to...
20827         (*memory_barrier): ...this.
20828
20829 2009-01-04  Jonathan Wakely  <jwakely.gcc@gmail.com>
20830
20831         * doc/extend.texi (Function Attributes): Move @cindex after @item
20832         for 'artificial' and 'flatten'. Fix grammar for 'externally_visible'
20833         and put in alphabetical order. Fix 'target' name and put in order.
20834         * doc/invoke.texi (-Wstrict-null-sentinel, -fipa-matrix-reorg): Fix
20835         typos.
20836
20837 2009-01-04  Uros Bizjak  <ubizjak@gmail.com>
20838
20839         * config/s390/s390.md (UNSPEC_MB): Rename from UNSPECV_MB.
20840         (memory_barrier): Expand as unspec instead of unspec_volatile.
20841         Remove mem:BLK from insn operands.  Use Pmode scratch register.
20842         (*memory_barrier): Define as unspec instead of unspec_volatile.
20843         Use (match_dup 0) as input operand.
20844
20845         * config/sparc/sparc.md (UNSPEC_MEMBAR): Rename from UNSPECV_MEMBAR.
20846         * config/sparc/sync.md (memory_barrier): Expand as unspec instead of
20847         unspec_volatile.  Remove mem:BLK from insn operands.  Use Pmode
20848         scratch register.  Remove operand 1.
20849         (*stbar): Define as unspec instead of unspec_volatile.
20850         Use (match_dup 0) as input operand, remove (const_int 8).
20851         (*membar): Define as unspec instead of unspec_volatile.
20852         Use (match_dup 0) as input operand, remove input operand 2.
20853
20854         * config/xtensa/xtensa.md (UNSPEC_MEMW): Rename from UNSPECV_MEMW.
20855         (memory_barrier): Expand as unspec instead of unspec_volatile.
20856         Remove mem:BLK from insn operands.  Use Pmode scratch register.
20857         (*memory_barrier): Define as unspec instead of unspec_volatile.
20858         Use (match_dup 0) as input operand.
20859
20860         * config/ia64/sync.md (memory_barrier): Redefine as expander pattern.
20861         Remove mem:BLK from insn operands.  Use Pmode scratch register.
20862         Set volatile flag on operand 0.
20863         (*memory_barrier): New insn pattern.
20864
20865         * config/rs6000/sync.md (memory_barrier): Remove mem:BLK from
20866         insn operands.
20867         (*memory_barrier): Use (match_dup 0) as input operand.
20868
20869         * config/mips/sync.md (memory_barrier): Redefine as expander pattern.
20870         Remove mem:BLK from insn operands.  Use Pmode scratch register.
20871         Set volatile flag on operand 0.
20872         (*mb_internal): New insn pattern.
20873
20874         * config/alpha/sync.md (*memory_barrier): Rename from *mb_internal.
20875
20876 2009-01-04  Steven Bosscher  <steven@gcc.gnu.org>
20877
20878         PR middle-end/38586
20879         * function.c (struct temp_slot): Move to the section of the file
20880         that deals with temp slots.  Remove field 'address'.
20881         (temp_slot_address_table): New hash table of address -> temp slot.
20882         (struct temp_slot_address_entry): New struct, items for the table.
20883         (temp_slot_address_compute_hash, temp_slot_address_hash,
20884         temp_slot_address_eq, insert_temp_slot_address): Support functions
20885         for the new table.
20886         (find_temp_slot_from_address): Rewrite to use the new hash table.
20887         (remove_unused_temp_slot_addresses): Remove addresses of temp
20888         slots that have been made available.
20889         (remove_unused_temp_slot_addresses_1): Call-back for htab_traverse,
20890         worker function for remove_unused_temp_slot_addresses.
20891         (assign_stack_temp_for_type): Don't clear the temp slot address list.
20892         Add the temp slot address to the address -> temp slot map.
20893         (update_temp_slot_address): Update via insert_temp_slot_address.
20894         (free_temp_slots): Call remove_unused_temp_slot_addresses.
20895         (pop_temp_slots): Likewise.
20896         (init_temp_slots): Allocate the address -> temp slot map, or empty
20897         the map if it is already allocated.
20898         (prepare_function_start): Initialize temp slot processing.
20899
20900 2009-01-04  Steven Bosscher  <steven@gcc.gnu.org>
20901
20902         PR middle-end/38584
20903         * cfgexpand.c (estimate_stack_frame_size): Simplify the estimate:
20904         Calculate the size of all stack vars assuming no packing of stack
20905         vars will happen, replacing a quadratic algorithm with a linear one.
20906
20907 2009-01-03  Jakub Jelinek  <jakub@redhat.com>
20908
20909         PR target/38707
20910         * expmed.c (store_bit_field_1): Don't modify op0 if movstrict insn
20911         can't be used.
20912
20913 2009-01-03  Diego Novillo  <dnovillo@google.com>
20914
20915         * doc/contrib.texi: Update contributions.
20916
20917 2009-01-03  Jakub Jelinek  <jakub@redhat.com>
20918
20919         PR c++/38705
20920         * builtins.c (fold_builtin_memory_op): Give up if either operand
20921         is volatile.  Set srctype or desttype to non-qualified version
20922         of the other type.
20923
20924         PR c/38700
20925         * builtins.c (fold_builtin_expect): Only check DECL_WEAK for VAR_DECLs
20926         and FUNCTION_DECLs.
20927
20928 2009-01-02  Kenneth Zadeck  <zadeck@naturalbridge.com>
20929
20930         PR rtl-optimization/35805
20931         * df-problems.c (df_lr_finalize): Add recursive call to resolve lr
20932         problem if fast dce is able to remove any instructions.
20933         * dce.c (dce_process_block): Fix dump message.
20934
20935 2009-01-02  Mark Mitchell  <mark@codesourcery.com>
20936
20937         PR 33649
20938         * tree-ssa-pre.c (compute_antic): Correct loop bounds.
20939
20940 2009-01-02  Jakub Jelinek  <jakub@redhat.com>
20941
20942         PR middle-end/38690
20943         * tree-flow.h (op_code_prio, op_prio): New prototypes.
20944         * tree-pretty-print.c (op_code_prio): New function.
20945         (op_prio): No longer static.  Use op_code_prio.
20946         * gimple-pretty-print.c (dump_unary_rhs, dump_binary_rhs):
20947         Use op_prio and op_code_prio to determine if () should be
20948         printed around operand(s) or not.
20949
20950         * gimple-pretty-print.c (dump_unary_rhs, dump_binary_rhs,
20951         dump_gimple_call, dump_gimple_switch, dump_gimple_cond,
20952         dump_gimple_label, dump_gimple_try, dump_symbols, dump_gimple_phi,
20953         dump_gimple_mem_ops, dump_bb_header, dump_bb_end, pp_cfg_jump): Use
20954         pp_character instead of pp_string for single letter printing.
20955
20956 2009-01-02  Richard Sandiford  <rdsandiford@googlemail.com>
20957
20958         * doc/extend.texi: Fix '#pragma GCC option' typo.
20959
20960 2009-01-02  Richard Guenther  <rguenther@suse.de>
20961
20962         * doc/install.texi (--enable-checking): Mention different
20963         default for stage1.
20964         (--enable-stage1-checking): Document.
20965
20966 2009-01-01  Andrew Pinski  <pinskia@gmail.com>
20967
20968         PR middle-end/30142
20969         * tree-cfg.c (verify_expr): Add INDIRECT_REF case.  Change MODIFY_EXPR
20970         case to be an error.
20971
20972 2009-01-02  Ben Elliston  <bje@au.ibm.com>
20973
20974         * config/fp-bit.h (pack_d): Constify argument.
20975         * config/fp-bit.c (makenan): Constify return type. Remove casts.
20976         (isnan): Constify argument.
20977         (isinf): Likewise.
20978         (iszero): Likewise.
20979         (pack_d): Likewise.
20980         (_fpadd_parts): Constify return type.
20981         (_fpmul_parts): Likewise.
20982         (_fpdiv_parts): Likewise.
20983
20984 2009-01-01  Jakub Jelinek  <jakub@redhat.com>
20985
20986         PR c/36489
20987         * c-typeck.c (add_pending_init): Add IMPLICIT argument.  Only
20988         warn about overwriting initializer with side-effects or
20989         -Woverride-init if !IMPLICIT.
20990         (output_init_element): Likewise.  Pass IMPLICIT down to
20991         add_pending_init.
20992         (process_init_element): Add IMPLICIT argument.  Pass it down
20993         to output_init_element.
20994         (push_init_element, pop_init_level, set_designator): Adjust
20995         process_init_element callers.
20996         (set_nonincremental_init, set_nonincremental_init_from_string):
20997         Adjust add_pending_init callers.
20998         (output_pending_init_elements): Adjust output_init_element callers.
20999         * c-tree.h (process_init_element): Adjust prototype.
21000         * c-parser.c (c_parser_initelt, c_parser_initval): Adjust
21001         process_init_element callers.
21002
21003 \f
21004 Copyright (C) 2009 Free Software Foundation, Inc.
21005
21006 Copying and distribution of this file, with or without modification,
21007 are permitted in any medium without royalty provided the copyright
21008 notice and this notice are preserved.