OSDN Git Service

2008-10-13 Matthias Klose <doko@ubuntu.com>
[pf3gnuchains/gcc-fork.git] / gcc / ChangeLog
1 2008-10-13  Matthias Klose  <doko@ubuntu.com>
2
3         * gcc/config/pa/linux-atomic.c: Work around missing header file
4         for hppa64-linux-gnu targets.
5
6 2008-10-13  Andrew Pinski  <andrew_pinski@playstation.sony.com>
7             Kaushal Kantawala <Kaushal_Kantawala@playstation.sony.com>
8             Trevor Smigiel  <Trevor_Smigiel@playstation.sony.com>
9             Grace Cao  <grace_cao@playstation.sony.com>
10
11         * doc/invoke.texi (-mgen-cell-microcode): Document.
12         (-mwarn-cell-microcode): Document.
13         * cfglayout.c (locator_location): Export.
14         * rtl.h (locator_location): Define prototype.
15         * config/rs6000/predicates.md (cc_reg_not_micro_cr0_operand): New predicate.
16         * rs6000/rs6000-protos.h (rs6000_final_prescan_insn): Define prototype.
17         * config/rs6000/rs6000.opt (mgen-cell-microcode): New option.
18         (mwarn-cell-microcode): New option.
19         * rs6000/rs6000.c (rs6000_cell_dont_microcode): Delete unused variable.
20         (rs6000_override_options): Set rs6000_gen_cell_microcode if tuning for
21         cell and not already set.
22         Turn off string instructions if not generating cell microcode.
23         (rs6000_final_prescan_insn): New function that warns about microcoded
24         instructions.
25         * config/rs6000/rs6000.h (FINAL_PRESCAN_INSN): Define.
26         * config/rs6000/rs6000.md
27         Replace cc_reg_not_cr0_operand with cc_reg_not_micro_cr0_operand if
28         the instruction would have been microcoded on the Cell.
29         Set cell_micro to always on unnamed patterns for the string instructions.
30         (cell_micro): Update definition, remove load/store conditional microcoded.
31         (sign_extend:DI): Define new pattern for non microcoded version.
32         (sign_extend:SI): Likewise.
33         (compare (div:P)): Set cell_micro to not.
34         (andsi3): Define as an expand.
35         (andsi3_mc): New pattern.
36         (andsi3_nomc): New pattern.
37         (andsi3_internal0_nomc): New pattern.
38         (andsi3_internal2): Rename to ...
39         (andsi3_internal2_mc): this and enable iff generating microcode.
40         (andsi3_internal3): Rename to ...
41         (andsi3_internal3_mc): this and enable iff generating microcode.
42         (andsi3_internal4): Enable iif generating microcode.
43         (andsi3_internal5): Rename to ..
44         (andsi3_internal5_mc): this and enable iff generating microcode.
45         (andsi3_internal5_nomc): New pattern.
46         (extzvdi_internal1): Enable iff generating microcode.
47         (extzvdi_internal2): Likewise.
48         (rotlsi3_internal7): Set cell_micro to always if non immediate form.
49         (anddi3): Change to expand.
50         (anddi3_mc): Rename from anddi3.
51         (anddi3_no_mc): New pattern.
52         (anddi3_internal2): Rename to ..
53         (anddi3_internal2_mc): this and enable iff generating microcode.
54         (anddi3_internal2_nomc): New pattern.
55         (anddi3_internal3): Rename to ..
56         (anddi3_internal3_mc): this and enable iff generating microcode.
57         (anddi3_internal3_nomc): New pattern.
58         (movti_string): Set cell_micro to always if TARGET_STRING.
59         (stmsi8): Set cell_micro to always.
60         (stmsi7): Likewise.
61         (stmsi6): Likewise.
62         (stmsi5): Likewise.
63         (stmsi4): Likewise.
64         (stmsi3): Likewise.
65         (stmsi8_power): Likewise.
66         (stmsi7_power): Likewise.
67         (stmsi6_power): Likewise.
68         (stmsi5_power): Likewise.
69         (stmsi4_power): Likewise.
70         (stmsi3_power): Likewise.
71         (movsi_update2): Enable iff generating microcode.
72         (movhi_update3): Likewise.
73         (lmw): Set cell_micro to always.
74
75 2008-10-13  Richard Sandiford  <rdsandiford@googlemail.com>
76
77         * config/s390/s390.md (UNSPEC_POOL_OFFSET): New constant.
78         * config/s390/s390.c (machine_function): Remove
79         decomposed_literal_pool_addresses_ok_p.
80         (s390_decompose_address): Check for UNSPEC_POOL_OFFSET instead of
81         the difference of two labels.
82         (s390_output_addr_const_extra): Handle UNSPEC_POOL_OFFSET.
83         (s390_pool_offset): New function.
84         (s390_find_constant, s390_find_execute, s390_dump_pool): Use it.
85         (s390_reorg): Don't set decomposed_literal_pool_addresses_ok_p.
86
87 2008-10-13  Nathan Froyd  <froydnj@codesourcery.com>
88
89         * doc/install.texi (powerpc-*-*): Require binutils 2.15.
90         (powerpc*-*-linux-gnu*): Describe.
91         * config/rs6000/ppc-asm.h (HIDDEN_FUNC): New macro.
92         * config/rs6000/crtresfpr.asm, config/rs6000/crtresgpr.asm,
93         config/rs6000/crtresxfpr.asm, config/rs6000/crtresxgpr.asm,
94         config/rs6000/crtsavfpr.asm, config/rs6000/crtsavgpr.asm,
95         config/rs6000/e500crtres32gpr.asm,
96         config/rs6000/e500crtres64gpr.asm,
97         config/rs6000/e500crtres64gprctr.asm,
98         config/rs6000/e500crtrest32gpr.asm,
99         config/rs6000/e500crtrest64gpr.asm,
100         config/rs6000/e500crtresx32gpr.asm,
101         config/rs6000/e500crtresx64gpr.asm,
102         config/rs6000/e500crtsav32gpr.asm,
103         config/rs6000/e500crtsav64gpr.asm,
104         config/rs6000/e500crtsav64gprctr.asm,
105         config/rs6000/e500crtsavg32gpr.asm,
106         config/rs6000/e500crtsavg64gpr.asm,
107         config/rs6000/e500crtsavg64gprctr.asm: Use it.
108         * config/rs6000/crtsavres.asm: Really remove.
109
110 2008-10-13  Kai Tietz  <kai.tietz@onevision.com>
111
112         Fix PR/25502
113         * c-format.c (convert_format_name_to_system_name): Use
114         TARGET_OVERRIDES_FORMAT_INIT.
115         * config.gcc (extra_options): Add for mingw targets mingw.opt.
116         * config/i386/mingw.opt: New.
117         * config/i386/mingw32.h (TARGET_OVERRIDES_FORMAT_INIT): New.
118         * config/i386/msformat-c.c (TARGET_OVERRIDES_FORMAT_INIT): New.
119         (ms_printf_length_specs): Removed const specifier.
120         * doc/tm.texi (TARGET_OVERRIDES_FORMAT_INIT): New.
121         * doc/invoke.texi (Wno-pedantic-ms-format): New.
122
123 2008-10-13  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
124
125         * builtins.c: Remove MPFR_VERSION_NUM(2,3,0) conditionals.
126         * doc/install.texi: Bump recommended MPFR to 2.3.2.
127
128 2008-10-12  Kenneth Zadeck <zadeck@naturalbridge.com>
129
130         PR middle-end/37808
131         * df-scan.c (df_ref_change_reg_with_loc_1): Added test to make
132         sure that ref has valid bb.
133         
134 2008-10-12  Richard Henderson  <rth@redhat.com>
135
136         PR middle-end/37447
137         * Makefile.in (reload1.o): Depend on EMIT_RTL_H.
138         * alias.c (value_addr_p, stack_addr_p): Remove.
139         (nonoverlapping_memrefs_p): Remove IRA special case.
140         * emit-rtl.c (get_spill_slot_decl, set_mem_attrs_for_spill): New.
141         * emit-rtl.h (set_mem_attrs_for_spill): Declare.
142         * reload1.c (alter_reg): Use it.
143
144 2008-10-12  Uros Bizjak  <ubizjak@gmail.com>
145
146         * config/i386/driver-i386.c (detect_caches_cpuid2): Use array
147         of registers instead of eax, ebx, ecx and edx.  Use for loop
148         and check register for non-zero value before the call
149         to decode_caches_intel.
150
151 2008-10-11  Kenneth Zadeck <zadeck@naturalbridge.com>
152
153         PR rtl-optimization/37448
154         * df.h: (df_ref_class): New enum.
155         (DF_REF_TYPE_NAMES, df_ref_extract): Removed.
156         (struct df_ref): Replaced with union df_ref_d.
157         (df_base_ref, df_artificial_ref, df_regular_ref, df_extract_ref):
158         New members of df_ref_d union.
159         (DF_REF_REAL_REG, DF_REF_REGNO, DF_REF_REAL_LOC, DF_REF_REG,
160         DF_REF_LOC, DF_REF_BB, DF_REF_INSN_INFO, DF_REF_INSN,
161         DF_REF_CLASS, DF_REF_TYPE, DF_REF_CHAIN, DF_REF_ID, DF_REF_FLAGS,
162         DF_REF_ORDER, DF_REF_IS_ARTIFICIAL, DF_REF_NEXT_REG,
163         DF_REF_PREV_REG, DF_REF_EXTRACT_WIDTH, DF_REF_EXTRACT_OFFSET,
164         DF_REF_EXTRACT_MODE): Replaced definition to access union
165         df_ref_d.
166         (DF_MWS_REG_DEF_P, DF_MWS_REG_USE_P, DF_MWS_TYPE): New macros.
167         (df_scan_bb_info, df_bb_regno_first_def_find,
168         df_bb_regno_last_def_find, df_find_def, df_find_use,
169         df_refs_chain_dump, df_regs_chain_dump, df_ref_debug,
170         debug_df_ref, df_chain_create, df_chain_unlink, df_chain_copy,
171         df_ref_create, df_ref_remove, df_compute_accessed_bytes,
172         df_get_artificial_defs, df_get_artificial_uses, union_defs)
173         Replaced struct df_ref * with df_ref.
174         * df-scan.c (df_collection_rec, df_null_ref_rec,
175         df_ref_chain_delete_du_chain, df_ref_chain_delete, df_install_ref,
176         df_grow_ref_info, df_ref_create, df_reg_chain_unlink,
177         df_ref_compress_rec, df_ref_remove, df_ref_chain_delete_du_chain,
178         df_ref_chain_delete, df_free_collection_rec, df_insn_rescan,
179         df_reorganize_refs_by_reg_by_reg,
180         df_reorganize_refs_by_reg_by_insn, df_reorganize_refs_by_reg,
181         df_ref_change_reg_with_loc_1, df_notes_rescan, df_swap_refs,
182         df_sort_and_compress_refs, df_install_ref, df_install_refs,
183         df_ref_record, df_get_conditional_uses, df_get_call_refs,
184         df_bb_refs_record, df_exit_block_uses_collect,
185         df_record_exit_block_uses, df_reg_chain_mark,
186         df_reg_chain_verify_unmarked, df_refs_verify): Replaced struct
187         df_ref * with df_ref.
188         (df_ref_record, df_uses_record, df_ref_create_structure): Added
189         df_ref_class parameter.
190         (df_scan_problem_data): Added new pools for different types of
191         refs.
192         (df_scan_free_internal, df_scan_alloc, df_free_ref,
193         df_ref_create_structure): Processed new ref pools.
194         (df_scan_start_dump): Added counts of refs and insns.
195         (df_ref_create, df_notes_rescan, df_def_record_1, df_uses_record,
196         df_get_call_refs, df_insn_refs_collect, df_bb_refs_collect,
197         df_entry_block_defs_collect, df_exit_block_uses_collect): Added
198         code to pass df_ref_class down to ref creation functions.
199         (df_reg_chain_unlink, df_ref_remove, df_ref_change_reg_with_loc_1,
200         df_reg_chain_mark): Use macros to hide references to df_refs.
201         (df_ref_chain_change_bb): Removed.
202         (df_insn_change_bb): Remove calls to df_ref_insn_change_bb.
203         (df_ref_equal_p, df_ref_compare, df_ref_create_structure):
204         Enhanced to understand df_ref union structure.
205         * fwprop.c (local_ref_killed_between_p, use_killed_between,
206         all_uses_available_at, update_df, try_fwprop_subst,
207         forward_propagate_subreg, forward_propagate_and_simplify,
208         forward_propagate_into, fwprop, fwprop_addr): Replaced struct
209         df_ref * with df_ref.
210         (use_killed_between, all_uses_available_at): Use macros to hide
211         references to df_refs.
212         * regstat.c (regstat_bb_compute_ri,
213         regstat_bb_compute_calls_crossed): Replaced struct df_ref * with
214         df_ref.
215         * see.c (see_handle_relevant_defs, see_handle_relevant_uses,
216         see_handle_relevant_refs, see_analyze_one_def,
217         see_update_relevancy, see_propagate_extensions_to_uses): Replaced
218         struct df_ref * with df_ref.
219         * ra-conflict.c (record_one_conflict, clear_reg_in_live,
220         global_conflicts): Replaced struct df_ref * with df_ref.
221         * ddg.c (create_ddg_dep_from_intra_loop_link,
222         add_cross_iteration_register_deps, build_inter_loop_deps):
223         Replaced struct df_ref * with df_ref.
224         (create_ddg_dep_from_intra_loop_link,
225         add_cross_iteration_register_deps): Use macros to hide references
226         to df_refs.
227         * auto-inc-dec.c (find_inc, merge_in_block): Replaced struct
228         df_ref * with df_ref.
229         * df-core.c (df_bb_regno_first_def_find,
230         df_bb_regno_last_def_find, df_find_def, df_find_use,
231         df_refs_chain_dump, df_regs_chain_dump, df_ref_debug,
232         debug_df_ref): Replaced struct df_ref * with df_ref.
233         (df_mws_dump, df_ref_debug): Use macros to hide references to df_refs.
234         * cse.c (cse_extended_basic_block): Replaced struct df_ref * with
235         df_ref.
236         * web.c (union_defs, entry_register, replace_ref, web_main):
237         Replaced struct df_ref * with df_ref.
238         (union_defs, replace_ref): Use macros to hide references to df_refs.
239         * global.c (compute_regs_asm_clobbered, build_insn_chain):
240         Replaced struct df_ref * with df_ref.
241         * ifcvt.c (dead_or_predicable): Replaced struct df_ref * with df_ref.
242         * sel-sched-ir.c (maybe_downgrade_id_to_use, setup_id_reg_sets, ):
243         Replaced struct df_ref * with df_ref.
244         * ira-lives.c (mark_ref_live, def_conflicts_with_inputs_p,
245         mark_ref_dead, process_bb_node_lives): Replaced struct df_ref *
246         with df_ref.
247         * local-alloc.c (block_alloc): Replaced struct df_ref * with df_ref.
248         * df-byte-scan.c (df_compute_accessed_bytes_extract,
249         df_compute_accessed_bytes_strict_low_part,
250         df_compute_accessed_bytes_subreg, df_compute_accessed_bytes):
251         Replaced struct df_ref * with df_ref.
252         (df_compute_accessed_bytes): Use macros to hide references to df_refs.
253         * init-regs.c (initialize_uninitialized_regs): Replaced struct
254         df_ref * with df_ref.
255         * loop-invariant.c (invariant_for_use, hash_invariant_expr_1,
256         check_dependency, check_dependencies, record_uses): Replaced
257         struct df_ref * with df_ref.
258         (invariant_for_use, check_dependency): Use macros to hide
259         references to df_refs.
260         * loop-iv.c (iv_analysis_loop_init, iv_get_reaching_def,
261         get_biv_step_1, get_biv_step, record_iv, iv_analyze_def,
262         iv_analyze, biv_p): Replaced struct df_ref * with df_ref.
263         (iv_analysis_loop_init, iv_get_reaching_def): Use macros to hide
264         references to df_refs.
265         * ira.c (compute_regs_asm_clobbered): Replaced struct df_ref *
266         with df_ref.
267         * combine.c (create_log_links): Replaced struct df_ref * with df_ref.
268         * df-problems.c (df_rd_bb_local_compute_process_def,
269         df_lr_bb_local_compute, df_live_bb_local_compute, df_chain_create,
270         df_chain_unlink_1, df_chain_unlink, df_chain_copy,
271         df_chain_remove_problem, df_chain_create_bb_process_use,
272         df_chain_create_bb, df_chain_top_dump, df_chain_bottom_dump,
273         df_byte_lr_check_regs, df_byte_lr_bb_local_compute,
274         df_byte_lr_simulate_defs, df_byte_lr_simulate_uses,
275         df_byte_lr_simulate_artificial_refs_at_top,
276         df_byte_lr_simulate_artificial_refs_at_end, df_create_unused_note,
277         df_note_bb_compute, df_note_add_problem, df_simulate_defs,
278         df_simulate_uses, df_simulate_artificial_refs_at_end,
279         df_simulate_artificial_refs_at_top): Replaced struct df_ref * with
280         df_ref.
281         (df_chain_dump): Use macros to hide references to df_refs.
282         * config/mips/mips.c (r10k_simplify_address): Replaced struct
283         df_ref * with df_ref.
284         * dce.c (mark_nonreg_stores, delete_corresponding_reg_eq_notes,
285         mark_artificial_uses, mark_reg_dependencies,
286         byte_dce_process_block): Replaced struct df_ref * with df_ref.
287
288 2008-10-11  Eric Botcazou  <ebotcazou@adacore.com>
289
290         * tree.h (contains_packed_reference): Mention ARRAY_RANGE_REF in
291         head comment.
292         (array_ref_element_size): Likewise.
293         (array_ref_low_bound): Likewise.
294         (array_ref_up_bound): Likewise.
295         * expr.c (contains_packed_reference): Likewise.
296         (array_ref_element_size): Likewise.
297         (array_ref_low_bound): Likewise.
298         (array_ref_up_bound): Likewise.
299         * tree-ssa-loop-ivopts.c (idx_contains_abnormal_ssa_name_p): Deal
300         with ARRAY_RANGE_REF.
301         (idx_find_step): Likewise.
302         (idx_record_use): Likewise.
303         (strip_offset_1): Likewise.
304         (idx_remove_ssa_names): Likewise.
305
306 2008-10-11  Uros Bizjak  <ubizjak@gmail.com>
307             Andi Kleen  <ak@linux.intel.com>
308
309         * config/i386/cpuid.h (__cpuid_count): New defines.
310         * config/i386/driver-i386.c (struct cache_desc): New structure.
311         (describe_cache): Use struct cache_desc to pass cache descriptions.
312         (detect_l2_cache): Ditto. Rename from decode_l2_cache.
313         (detect_caches_amd): Use struct cache_desc to describe caches.
314         (decode_caches_intel): Use struct cache_desc to pass cache
315         descriptions.  Update descriptions to match latest (rev -032,
316         December 2007) CPUID documentation.  Do not check valid bit here.
317         Check for Xeon MP value 0x49 problems.
318         (detect_caches_cpuid2): New function, split from detect_caches_intel.
319         Check valid bit before calling decode_caches_intel.  Detect number
320         of times to repeat CPUID instruction.
321         (detect_caches_cpuid4): New function.
322         (detect_caches_intel): Depending on max_level, call
323         detect_caches_cpuid2 or detect_caches_cpuid4.  Call detect_l2_cache
324         only when other methods fail to provide valid L2 cache description.
325
326 2008-10-11  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
327
328         PR middle-end/37608
329         * pa.md (call, call_value): Generate an rtx for register r4 and pass
330         it to PIC call patterns.
331         (call_symref_pic): Revise pattern to expose PIC register save.  Remove
332         code generation and attributes from pattern.  Change peephole2 to split
333         for noreturn case.  Revise split pattern for non noreturn case.
334         (call_symref_64bit, call_reg_pic, call_reg_64bit, call_val_symref_pic,
335         call_val_symref_64bit, call_val_reg_pic, call_val_reg_64bit): Likewise.
336         * pa.c (attr_length_call): Simplify extraction of call rtx.  Add some
337         asserts.
338
339 2008-10-11  David Edelsohn  <edelsohn@gnu.org>
340
341         * config/rs6000/rs6000.md (aux_truncdfsf2): Remove TARGET_SINGLE_FLOAT.
342         (addsf3, subsf3, mulsf3 ! TARGET_POWERPC): Remove TARGET_SINGLE_FLOAT
343         and fp_type.
344         (divdf3): Reformat long line.
345
346 2008-10-11  Michael J. Eager  <eager@eagercon.com>
347
348         * config/rs6000/rs6000.c (rs6000_parse_fpu_option): Interpret
349         -mfpu options.
350         (rs6000_handle_option): Process -mfpu options.
351         * config/rs6000/rs6000.h: (TARGET_XILINX_FPU): New.
352         (enum fpu_type_t): New.
353         * config/rs6000/rs6000.md (attr fp_type): New.  Include xfpu.md.
354         (addsf3, subsf3, mulsf3, adddf3, subdf3, muldf3, trunctfdf2): Set
355         fp_type.
356         (floatsisf2): Remove TARGET_SINGLE_FPU condition.
357         (floatdidf2): Add TARGET_SINGLE_FPU condition.
358         * config/rs6000/rs6000.opt (-mfpu): New.
359         (-mxilinx-fpu): New.
360         * config/rs6000/sysv4.h: (DRIVER_SELF_SPECS): New.
361         * config/rs6000/xfpu.h: New. Define TARGET_XILINX_FPU.
362         * config/rs6000/xfpu.md: New. Define Xilinx pipeline.
363         * gcc/config.gcc: powerpc-xilinx-eabi target: New.
364         * gcc/doc/invoke.texi (RS/6000 and PowerPC Options): Add -mfpu option.
365
366 2008-10-11  Jakub Jelinek  <jakub@redhat.com>
367
368         PR target/35760
369         * config/rs6000/rs6000.c (rs6000_legitimize_address): Only create
370         LO_SUM on Darwin if mode has just one unit.
371
372 2008-10-10  H.J. Lu  <hongjiu.lu@intel.com>
373
374         PR debug/37002
375         * dwarf2out.c (mem_loc_descriptor): Use DRAP for vDRAP which
376         has been optimized out.
377
378 2008-10-10  Richard Sandiford  <rdsandiford@googlemail.com>
379
380         * config/sh/sh.h (PREFERRED_RELOAD_CLASS): Test PIC_ADDR_P
381         instead of PIC_DIRECT_ADDR_P.
382         (SECONDARY_INPUT_RELOAD_CLASS): Likewise.
383         (IS_LITERAL_OR_SYMBOLIC_S16_P, IS_LITERAL_OR_SYMBOLIC_U16_P): Delete.
384         (IS_NON_EXPLICIT_CONSTANT_P): Don't test PIC_OFFSET_P.
385         (PIC_OFFSET_P): Rename to...
386         (PCREL_SYMOFF_P): ...this.
387         (PIC_DIRECT_ADDR_P): Delete.
388         (MOVI_SHORI_BASE_OPERAND_P): Check PCREL_SYMOFF_P instead of
389         PIC_OFFSET_P.
390         (OUTPUT_ADDR_CONST_EXTRA): Don't require unspecs to have a
391         single argument.  Handle UNSPEC_EXTRACT_S16, UNSPEC_EXTRACT_U16,
392         UNSPEC_SYMOFF and UNSPEC_PCREL_SYMOFF.
393         * config/sh/sh.c (print_operand): Remove CONST handling.
394         (unspec_caller_rtx_p): Rewrite to use split_const and check
395         the operands of UNSPEC bases.
396         (fixup_mova): Replace (unspec [(minus A B)] UNSPEC_PIC)
397         with (unspec [A B] UNSPEC_SYMOFF).
398         (nonpic_symbol_mentioned_p): Check for UNSPEC_SYMOFF and
399         UNSPEC_PCREL_SYMOFF.
400         (sh_secondary_reload): Test PIC_ADDR_P instead of PIC_DIRECT_ADDR_P.
401         * config/sh/sh.md (UNSPEC_EXTRACT_S16): New unspec.
402         (UNSPEC_EXTRACT_U16): Likewise.
403         (UNSPEC_SYMOFF): Likewise.
404         (UNSPEC_PCREL_SYMOFF): Likewise.
405         (movsi_const): Use UNSPEC_EXTRACT_*16s to extract 16-bit portions
406         of constants.
407         (movsi_const_16bit): Likewise.
408         (movdi_const, movdi_const_32bit, movdi_const_16bit): Likewise.
409         (GOTaddr2picreg): Replace (unspec [(minus A (minus B pc))] UNSPEC_PIC)
410         with (unspec [A B] UNSPEC_PCREL_SYMOFF).
411         (sym_label2reg): Replace (minus (const (unspec [A] UNSPEC_PIC)) B)
412         with (unspec [A B] UNSPEC_SYMOFF).
413         (symPLT_label2reg): Replace (minus A (minus B pc)) with
414          (unspec [A B] PCREL_UNSPEC_SYMOFF).
415         * config/sh/constraints.md (Css): Check for an UNSPEC_EXTRACT_S16.
416         (Csu): Likewise UNSPEC_EXTRACT_U16.
417         (Csy): Test PIC_ADDR_P instead of PIC_DIRECT_ADDR_P.
418         (Cpg): Update after changes to IS_NON_EXPLICIT_CONSTANT_P.
419
420 2008-10-10  Stepan Kasal  <skasal@redhat.com>
421
422         * gcc/doc/invoke.texi (Optimize Options): Fix typo in examples
423         for loop strip mining and loop blocking.
424
425 2008-10-10  Alexandre Oliva  <aoliva@redhat.com>
426
427         * fortran/trans-types.c (gfc_get_nodesc_array_type): Don't
428         vary types depending on debug info.
429
430 2008-10-10  Alexandre Oliva  <aoliva@redhat.com>
431
432         * c-gimplify.c (c_genericize): Don't refer to DECL_ASSEMBLER_NAME
433         before ensuring it's already computed.
434
435 2008-10-09  Jakub Jelinek  <jakub@redhat.com>
436
437         * rtl.h (locator_eq): New decl.
438         * cfglayout.c (locator_scope): New function.
439         (insn_scope): Use it.
440         (locator_eq): New function.
441         (fixup_reorder_chain): Search for last insn in src bb
442         that has locator set or first insn in dest bb.  Use
443         locator_eq instead of == to compare locators.
444         * cfgrtl.c (cfg_layout_merge_blocks): Likewise.
445         * cfgcleanup.c (try_forward_edges): Use locator_eq instead of
446         == to compare locators.
447
448         * tree-ssa-live.c (remove_unused_locals): Mark all edge's goto_block
449         as used.
450         * gimple-low.c (lower_function_body, lower_gimple_return,
451         lower_builtin_setjmp): Set gimple_block on the newly created stmts.
452         * tree-cfg.c (make_cond_expr_edges, make_goto_expr_edges): Only set
453         goto_block on edges if goto_locus is known.
454
455         PR middle-end/37774
456         * tree.h (get_object_alignment): Declare.
457         * emit-rtl.c (set_mem_attributes_minus_bitpos): Call
458         get_object_alignment if needed.
459         * builtins.c (get_pointer_alignment): Move ADDR_EXPR operand handling
460         to ...
461         (get_object_alignment): ... here.  New function.  Try harder to
462         determine alignment from get_inner_reference returned offset.
463
464 2008-10-08  Jakub Jelinek  <jakub@redhat.com>
465
466         * graphite.c (gloog): Don't call find_unreachable_blocks
467         before delte_unreachable_blocks.
468
469         * cfgexpand.c (expand_gimple_cond): Convert also goto_block and
470         goto_locus of true_edge into RTL locator.
471
472 2008-10-08  Uros Bizjak  <ubizjak@gmail.com>
473
474         * config/i386/i386.md (*jcc_btdi_rex64): Clobber FLAGS_REG.
475         (*jcc_btdi_mask_rex64): Ditto.
476         (*jcc_btsi): Ditto.
477         (*jcc_btsi_mask): Ditto.
478         (*jcc_btsi_1): Ditto.
479         (*jcc_btsi_mask_1): Ditto.
480
481 2008-10-08  Paul Brook  <paul@codesourcery.com>
482
483         * config/arm/bpabi.h (ARM_FUNCTION_PROFILER): Define new EABI
484         compatible profiler (__gnu_mcount_nc).
485         (SUBTARGET_FRAME_POINTER_REQUIRED): Define.
486
487 2008-10-08  H.J. Lu  <hongjiu.lu@intel.com>
488
489         * config/i386/i386.c (initial_ix86_tune_features): Add
490         X86_TUNE_USE_VECTOR_FP_CONVERTS.
491         * config/i386/i386.h (ix86_tune_indices): Likewise.
492         (TARGET_USE_VECTOR_FP_CONVERTS): New.
493
494         * config/i386/i386.md: Check TARGET_USE_VECTOR_FP_CONVERTS
495         instead of (TARGET_USE_VECTOR_CONVERTS || TARGET_GENERIC)
496         for FP to FP splitters.
497
498 2008-10-08  H.J. Lu  <hongjiu.lu@intel.com>
499
500         * config/i386/i386.md: Add missing gen_sse2_cvtdq2p to convert
501         splitter.
502
503 2008-10-08  Jakub Jelinek  <jakub@redhat.com>
504
505         PR target/36635
506         PR target/37290
507         PR rtl-optimization/37341
508         * cse.c (cse_cc_succs): Add ORIG_BB argument, don't follow edges
509         to ORIG_BB, pass through ORIG_BB recursively.
510         (cse_condition_code_reg): Adjust caller.
511
512 2008-10-08  Kai Tietz  <kai.tietz@onevision.com>
513
514         * sdbout.c (sdbout_one_type): Treat the value type
515         CONST_DECL for enumerals.
516
517 2008-10-07  H.J. Lu  <hongjiu.lu@intel.com>
518
519         * config/i386/i386.md: Remove trailing white spaces.
520
521 2008-10-07  Kenneth Zadeck <zadeck@naturalbridge.com>
522
523         PR rtl-optimization/37448
524         * alloc-pool.c (struct alloc_pool_descriptor) [elt_size]: New field.
525         (stuct alloc_pool_descriptor) [created, allocated, current, peak]:
526         Make unsigned long.
527         (struct output_info) [count]: Renamed total_created and made
528         unsigned long.
529         (struct output_info) [size]: Renamed total_allocated and made
530         unsigned long.
531         (create_alloc_pool, empty_alloc_pool, pool_alloc, pool_free):
532         Properly keep track of desc->size.
533         (print_statistics, dump_alloc_pool_statistics): Enhance the
534         printing of statistics to print the number of elements and to use
535         unsigned longs.
536         
537 2008-10-07  Jakub Jelinek  <jakub@redhat.com>
538
539         PR middle-end/37576
540         * opts.h (CL_SAVE): Move up to flags range.
541         (CL_PARAMS, CL_WARNING, CL_OPTIMIZATION, CL_TARGET,
542         CL_COMMON): Renumber.
543         (CL_MIN_OPTION_CLASS): Set to CL_PARAMS.
544         * opts.c (common_handle_option): Revert last change.
545
546 2008-10-07  H.J. Lu  <hongjiu.lu@intel.com>
547
548         * config/i386/i386-protos.h (ix86_schedule): New.
549
550         * config/i386/i386.c (ix86_schedule): New.
551         (override_options): Add schedule to processor_alias_table.  Set
552         ix86_schedule from the schedule field in processor_alias_table.
553         (ix86_function_specific_save): Save ix86_schedule.
554         (ix86_function_specific_restore): Restore ix86_schedule.
555
556         * config/i386/i386.md (cpu): Map to ix86_schedule instead of
557         ix86_tune.  Add none and remove i386, i486, pentium4, nocona
558         and generic32.
559
560         * config/i386/i386.opt: Add schedule.
561
562         * config/i386/ppro.md: Remove generic32.
563
564 2008-10-07  Simon Martin  <simartin@users.sourceforge.net>
565
566         PR c/35437
567         * expr.c (count_type_elements): Handle ERROR_MARK.
568
569 2008-10-07  Jakub Jelinek  <jakub@redhat.com>
570
571         PR debug/29609
572         PR debug/36690
573         PR debug/37616
574         * basic-block.h (struct edge_def): Add goto_block field.
575         * cfglayout.c (fixup_reorder_chain): Ensure that there is at least
576         one insn with locus corresponding to edge's goto_locus if !optimize.
577         * profile.c (branch_prob): Copy edge's goto_block.
578         * cfgrtl.c (force_nonfallthru_and_redirect): Use goto_locus for
579         emitted jumps.
580         (cfg_layout_merge_blocks): Emit a nop with edge's goto_locus
581         locator in between the merged basic blocks if !optimize and needed.
582         * cfgexpand.c (expand_gimple_cond): Convert goto_block and
583         goto_locus into RTL locator.  For unconditional jump use that
584         locator for the jump insn.
585         (expand_gimple_cond): Convert goto_block and goto_locus into
586         RTL locator for all remaining edges.  For unconditional jump
587         use that locator for the jump insn.
588         * cfgcleanup.c (try_forward_edges): Avoid the optimization if
589         there is more than one edge or insn locator along the forwarding
590         edges and !optimize.  If there is just one, set e->goto_locus.
591         * tree-cfg.c (make_cond_expr_edges, make_goto_expr_edges): Set also
592         edge's goto_block.
593         (move_block_to_fn): Adjust edge's goto_block.
594
595 2008-10-07  H.J. Lu  <hongjiu.lu@intel.com>
596
597         PR middle-end/37731
598         * expmed.c (expand_mult): Properly check DImode constant in
599         CONST_DOUBLE.
600
601 2008-10-07  Jakub Jelinek  <jakub@redhat.com>
602
603         PR debug/37738
604         * dwarf2out.c (common_block_die_table): New variable.
605         (common_block_die_table_hash, common_block_die_table_eq): New
606         functions.
607         (gen_variable_die): Look up a DW_TAG_common_block die for a particular
608         COMMON block in the current scope rather than globally.  Optimize
609         DW_OP_addr SYMBOL_REF DW_OP_plus_uconst off into
610         DW_OP_addr SYMBOL_REF+off.
611
612 2008-10-07  Eric Botcazou  <ebotcazou@adacore.com>
613
614         * tree-ssa-loop-ivopts.c (may_be_nonaddressable_p) <VIEW_CONVERT_EXPR>:
615         Return true for non-addressable GIMPLE operands.
616
617 2008-10-07  H.J. Lu  <hongjiu.lu@intel.com>
618
619         PR target/24765
620         * config/i386/i386.c (initial_ix86_tune_features): Remove
621         X86_TUNE_USE_BIT_TEST.
622         * config/i386/i386.h (ix86_tune_indices): Likewise.
623         (TARGET_USE_BIT_TEST): Removed.
624
625 2008-10-07  Bernhard Reutner-Fischer  <aldot@gcc.gnu.org>
626
627         * config.gcc (arm*-*-*): Add aapcs-linux to supported ABIs.
628
629 2008-10-06  Adam Nemet  <anemet@caviumnetworks.com>
630
631         * config/mips/mips.md (mulsi3_mul3, muldi3_mul3): Merge these ...
632         (mul<mode>3_mul3): ... into this new template.
633
634 2008-10-06  Aldy Hernandez  <aldyh@redhat.com>
635
636         * gimplify.c (gimplify_arg): Add location argument.  Use it.
637         (gimplify_call_expr): Pass location to gimplify_arg.
638         (gimplify_modify_expr_to_memcpy): Same.
639         (gimplify_modify_expr_to_memset): Same.
640
641 2008-10-06  Andrew Pinski  <andrew_pinski@playstation.sony.com>
642
643         * config/rs6000/rs6000-c.c (altivec_resolve_overloaded_builtin):
644         Update calls to build_unary_op and build_indirect_ref for location
645         changes.
646
647 2008-10-06  Aldy Hernandez  <aldyh@redhat.com>
648
649         build_modify_expr.
650         * c-decl.c (finish_decl): Pass input_location to build_unary_op.
651         * c-typeck.c (array_to_pointer_conversion): Pass location to
652         build_unary_op.
653         (function_to_pointer_conversion): Use error_at and warning_at.
654         (build_indirect_ref): Same.
655         (build_array_ref): Pass location to build_binary_op.
656         (parser_build_unary_op): Do not set location after calling
657         build_unary_op.
658         (build_unary_op): Add location argument.  Use it throughout.  Set
659         EXPR_LOCATION before returning new tree.
660         (build_modify_expr): Same.
661         (build_binary_op): Use location throughout.  Set EXPR_LOCATION before
662         returning node.
663         * c-omp.c (c_finish_omp_atomic): Pass location to build_unary_op,
664         build_indirect_ref, build_modify_expr.
665         (c_finish_omp_for): Same.  Use error_at instead of error.
666         * c-common.c (c_common_truthvalue_conversion): Pass location to
667         build_unary_op.
668         (warn_for_div_by_zero): Add location argument.
669         * c-common.h: Add argument to build_modify_expr, build_indirect_ref,
670         build_unary_op, warn_for_div_by_zero.
671         * c-parser.c (c_parser_typeof_specifier): Use
672         protected_set_expr_location.
673         (c_parser_statement_after_labels): Same.
674         (c_parser_condition): Same.
675         (c_parser_expr_no_commas): Pass correct location to build_modify_expr.
676         (c_parser_conditional_expression): Use protected_set_expr_location.
677         (c_parser_unary_expression): Pass location to build_indirect_ref.
678         (c_parser_postfix_expression_after_primary): Pass location to
679         build_indirect_ref, build_unary_op.
680         (c_parser_omp_for_loop): Set the increment expression's EXPR_LOCATION.
681
682 2008-10-06  Joshua Kinard  <kumba@gentoo.org>
683
684         * doc/invoke.texi: List r1x000 family under the -march MIPS option.
685         * config/mips/mips.h (PROCESSOR_R10000): New processor_type.
686         * config/mips/mips.c (mips_cpu_info_table): Add r10000, r12000,
687         r14000 and r16000.
688         (mips_rtx_cost_data): Add a PROCESSOR_R10000 entry.
689         (mips_issue_rate): Handle PROCESSOR_R10000.
690         * config/mips/mips.md (cpu): Add r10000.
691         Include r10000.md.
692         * config/mips/10000.md: New file.
693
694 2008-10-06  Richard Sandiford  <rdsandiford@googlemail.com>
695
696         * config/rs6000/rs6000-protos.h (rs6000_find_base_term): Declare.
697         * config/rs6000/rs6000.h (FIND_BASE_TERM): New macro.
698         * config/rs6000/rs6000.c (rs6000_find_base_term): New function.
699
700 2008-10-06  Richard Sandiford  <rdsandiford@googlemail.com>
701
702         * config/darwin-protos.h (machopic_function_base_name): Delete.
703         (machopic_function_base_sym): Likewise.
704         (machopic_gen_offset): Declare.
705         * config/darwin.h (MACHOPIC_FUNCTION_BASE_NAME): New macro.
706         (ASM_OUTPUT_LABELREF): Use it instead of a hard-coded string constant.
707         * config/darwin.c (machopic_function_base_name): Delete.
708         (machopic_function_base_sym): Likewise.
709         (gen_pic_offset): Rename to...
710         (machopic_gen_offset): ...this and remove the pic_base argument.
711         Instead use MACHO_DYNAMIC_NO_PIC_P to decide whether a PIC offset
712         is needed.  Create an UNSPEC_MACHOPIC_OFFSET if so, and set
713         crtl->uses_pic_offset_table.
714         (machopic_indirect_data_reference): Use new machopic_gen_offset
715         interface.
716         (machopic_legitimize_pic_address): Likewise.
717         (machopic_operand_p): Check for UNSPEC_MACHOPIC_OFFSET.
718
719         * config/i386/darwin.h (GOT_SYMBOL_NAME): Use
720         MACHOPIC_FUNCTION_BASE_NAME instead of machopic_function_base_name.
721         * config/i386/i386.c (output_set_got): Likewise.
722         (darwin_local_data_pic): Check for an UNSPEC_MACHOPIC_OFFSET
723         instead of a MINUS.
724         (legitimate_pic_operand_p): Handle UNSPEC_MACHOPIC_OFFSET.
725         (legitimate_address_p): Likewise.
726         (output_pic_addr_const): Likewise.
727         (output_addr_const_extra): Likewise.
728         (ix86_delegitimize_address): Expect darwin_local_data_pic to
729         match an UNSPEC rather than a MINUS.
730         * config/i386/i386.md (UNSPEC_MACHOPIC_OFFSET): Define.
731         (builtin_setjmp_receiver): Use machopic_gen_offset.
732         * config/i386/predicates.md (pic_symbolic_operand): Handle
733         UNSPEC_MACHOPIC_OFFSET.
734
735         * config/rs6000/rs6000.c (rs6000_legitimize_reload_address):
736         Use machopic_gen_offset and machopic_operand_p.
737         (rs6000_output_addr_const_extra): Handle UNSPEC_MACHOPIC_OFFSET.
738         (rs6000_emit_prologue): Use MACHOPIC_FUNCTION_BASE_NAME.
739         * config/rs6000/rs6000.md (UNSPEC_MACHOPIC_OFFSET): Define.
740         (builtin_setjmp_receiver): Use MACHOPIC_FUNCTION_BASE_NAME.
741         Set crtl->uses_pic_offset_table.
742
743 2008-10-06  Richard Sandiford  <rdsandiford@googlemail.com>
744
745         * config/rs6000/rs6000-protos.h (rs6000_output_addr_const_extra):
746         Declare.
747         * config/rs6000/rs6000.h (OUTPUT_ADDR_CONST_EXTRA): New macro.
748         * config/rs6000/rs6000.md (UNSPEC_TOCREL): New constant.
749         * config/rs6000/rs6000.c (constant_pool_expr_1): Delete.
750         (constant_pool_expr_p): Use split_const and check the base.
751         (toc_relative_expr_p): Likewise, checking for an UNSPEC_TOCREL
752         instead of a MINUS.
753         (legitimate_constant_pool_address_p): Check toc_relative_p
754         instead of constant_pool_expr_p.
755         (print_operand_address): Always use output_addr_const for
756         constant pool addresses.
757         (rs6000_output_addr_const_extra): New function.
758         (create_TOC_reference): Create an UNSPEC_TOCREL instead of a MINUS.
759
760 2008-10-06  Vladimir Makarov  <vmakarov@redhat.com>
761
762         PR middle-end/37535
763
764         * ira-lives.c (mark_reg_live, mark_reg_dead): New functions.
765         (mark_ref_live, mark_ref_dead): Use them.
766         (def_conflicts_with_inputs_p): Remove.
767         (mark_early_clobbers): New function.
768         (process_bb_node_lives): Call preprocess_constraints and
769         mark_early_clobbers.
770
771         * doc/rtx.texi (clobber): Change how RA deals with clobbers.
772
773 2008-10-06  Danny Smith  <dannysmith@users.sourceforge.net>
774
775         * config/i386/mingw32.h (REAL_LIBGCC_SPEC): Add thread cleanup
776         lib with -mthread switch.
777
778 2008-10-05  Dodji Seketeli  <dodji@redhat.com>
779
780         PR c++/37410
781         * dwarf2out.c (dwarf2out_imported_module_or_decl): Split this
782         function in two, making it call a new and reusable
783         dwarf2out_imported_module_or_decl() that takes the containing
784         BLOCK of the declaration in argument.
785         (dwarf2out_imported_module_or_decl_real): New function.
786         (decls_for_scope, gen_decl_die, dwarf2out_decl): Take
787         IMPORTED_DECL in account.
788         * tree.def: Added IMPORTED_DECL node type.
789         * tree.h: Added accessors for IMPORTED_DECL nodes.
790         * tree.c (init_ttree): Initialise IMPORTED_DECL node type.
791
792 2008-10-05  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
793
794         * doc/gimple.texi: Fix some typos, wrap some long lines,
795         fix some broken wraps with continuations.
796         * tree-ssa-reassoc.c: Fix comment typos.
797
798 2000-10-04  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
799
800         PR target/37603
801         * pa.c (legitimize_pic_address): Force function labels to memory in
802         word mode.
803
804 2008-10-04  Anton Blanchard  <anton@samba.org>
805
806         * config/rs6000/rs6000.c (rs6000_emit_sync): Use gen_lwsync().
807         (rs6000_split_atomic_op): Same.
808         (rs6000_split_compare_and_swap): Same.
809         (rs6000_split_compare_and_swapqhi): Same.
810
811 2008-10-04  Richard Guenther  <rguenther@suse.de>
812
813         * tree-ssa-sccvn.c (vn_reference_op_eq): Use types_compatible_p
814         instead of pointer equality.
815         (vn_nary_op_eq): Likewise.
816
817 2008-10-03  Andrew Pinski  <andrew_pinski@playstation.sony.com>
818
819         * config/rs6000/rs6000.md (fseldfsf4): Add TARGET_SINGLE_FLOAT 
820         condition.
821         (fselsfdf4): Make condition on "TARGET_HARD_FLOAT && TARGET_FPRS &&
822         TARGET_DOUBLE_FLOAT && TARGET_SINGLE_FLOAT".
823
824 2008-10-03  Danny Smith  <dannysmith@users.sourceforge.net>
825
826         * config/i386/winnt.c (i386_pe_strip_name_encoding_full):
827         Revert previous change.
828
829 2008-10-03  Tom Tromey  <tromey@redhat.com>
830
831         * stringpool.c (ggc_alloc_string): Terminate string.
832
833 2008-10-03  Jakub Jelinek  <jakub@redhat.com>
834
835         * gimplify.c (gimplify_function_tree): For -finstrument-functions
836         use gimple_bind_{,set_}block instead of gimple_{,set_}block.
837         * gimple.h (gimple_bind_set_block): Allow second argument to be NULL.
838
839         PR debug/37726
840         * gimplify.c (declare_vars): Use gimple_bind_block instead of
841         gimple_block.
842
843 2008-10-03  Pascal Obry  <obry@adacore.com>
844
845         * gcov.c (create_file_names): Properly handle UNIX and DOS
846         directory separators.
847         (make_gcov_file_name): Likewise + convert the ':' DOS drive
848         separator to '~' to ensure clean filenames on Windows.
849
850 2008-10-02  Danny Smith  <dannysmith@users.sourceforge.net>
851
852         * config/i386/winnt.c (i386_pe_strip_name_encoding_full):
853         Add a null terminator to the stripped name.
854
855 2008-10-02  David Edelsohn  <edelsohn@gnu.org>
856
857         * config/rs6000/rs6000.c (USE_FP_FOR_ARG_P): Revert
858         TARGET_DOUBLE_FLOAT, TARGET_SINGLE_FLOAT.
859         (function_arg_advance): Condition on TARGET_DOUBLE_FLOAT,
860         TARGET_SINGLE_FLOAT.  Revert SCALAR_FLOAT_MODE_P condition.
861         (function_arg): Condition on TARGET_DOUBLE_FLOAT, TARGET_SINGLE_FLOAT.
862         (rs6000_function_value): Revert TARGET_DOUBLE_FLOAT,
863         TARGET_SINGLE_FLOAT.
864
865 2008-10-02  Daniel Jacobowitz  <dan@codesourcery.com>
866
867         * builtins.c (fold_builtin_pow): Check for 0 ** NEGATIVE.
868
869 2008-10-02  Richard Guenther  <rguenther@suse.de>
870
871         PR middle-end/37713
872         * tree-ssa.c (useless_type_conversion_p_1): For COMPLEX_TYPE
873         and VECTOR_TYPE recurse with useless_type_conversion_p which
874         properly handles void pointer conversion.
875
876 2008-10-02  Danny Smith  <dannysmith@users.sourceforge.net>  
877
878         PR target/37528
879         * config/i386/mingw32.h (LIBGCC_SPEC) : Replace with ..
880         (REAL_LIBGCC_SPEC): New.  Always include -lgcc.
881
882 2008-10-01  Andrew Pinski  <andrew_pinski@playstation.sony.com>
883
884         * config/rs6000/rs6000-c.c (altivec_resolve_overloaded_builtin):
885         Handle ALTIVEC_BUILTIN_VEC_SPLATS, ALTIVEC_BUILTIN_VEC_PROMOTE,
886         ALTIVEC_BUILTIN_VEC_EXTRACT, and ALTIVEC_BUILTIN_VEC_INSERT specially,
887         they translate to non builtins.
888         * config/rs6000/rs6000.c (altivec_init_builtins): Add new variable
889         opaque_ftype_opaque.  Define builtins __builtin_vec_splats,
890         __builtin_vec_promote, __builtin_vec_extract, and
891         __builtin_vec_insert.
892         * config/rs6000/rs6000.h (enum rs6000_builtins): Add
893         ALTIVEC_BUILTIN_VEC_EXTRACT, ALTIVEC_BUILTIN_VEC_PROMOTE,
894         ALTIVEC_BUILTIN_VEC_INSERT, and ALTIVEC_BUILTIN_VEC_SPLATS.
895         * config/rs6000/altivec.h (vec_extract): Define
896         (vec_insert): Define.
897         (vec_splats): Define.
898         (vec_promote): Define.
899
900 2008-10-01  Andrew Pinski  <andrew_pinski@playstation.sony.com>
901             Yukishige Shibata  <shibata@rd.scei.sony.co.jp>
902             Trevor Smigiel  <Trevor_Smigiel@playstation.sony.com>
903
904         * config/rs6000/rs6000-c.c (altivec_overloaded_builtins): Add Cell
905         Altivec intrinsics.
906         * config/rs6000/rs6000.c (altivec_expand_lv_builtin): Delete
907         prototype.  Add new parameter, blk.
908         Use BLKmode for the MEM if blk is true.
909         (altivec_expand_builtin): Handle ALTIVEC_BUILTIN_STVLX,
910         ALTIVEC_BUILTIN_STVLXL, ALTIVEC_BUILTIN_STVRX, and
911         ALTIVEC_BUILTIN_STVRXL.
912         Update usage of altivec_expand_lv_builtin.
913         Handle ALTIVEC_BUILTIN_LVLX, ALTIVEC_BUILTIN_LVLXL,
914         ALTIVEC_BUILTIN_LVRX, and ALTIVEC_BUILTIN_LVRXL.
915         (altivec_init_builtins): If compiling for the Cell, also define the
916         cell VMX builtins.
917         * config/rs6000/rs6000.h (rs6000_builtins): Define
918         ALTIVEC_BUILTIN_LVLX, ALTIVEC_BUILTIN_LVLXL, ALTIVEC_BUILTIN_LVRX,
919         ALTIVEC_BUILTIN_LVRXL, ALTIVEC_BUILTIN_STVLX, ALTIVEC_BUILTIN_STVLXL,
920         ALTIVEC_BUILTIN_STVRX, ALTIVEC_BUILTIN_STVRXL,
921         ALTIVEC_BUILTIN_VEC_LVLX, ALTIVEC_BUILTIN_VEC_LVLXL,
922         ALTIVEC_BUILTIN_VEC_LVRX, ALTIVEC_BUILTIN_VEC_LVRXL,
923         ALTIVEC_BUILTIN_VEC_STVLX, ALTIVEC_BUILTIN_VEC_STVLXL,
924         ALTIVEC_BUILTIN_VEC_STVRX, and ALTIVEC_BUILTIN_VEC_STVRXL.
925         * config/rs6000/altivec.md (define_constants): Define UNSPEC_LVLX,
926         UNSPEC_LVLXL, UNSPEC_LVRX, UNSPEC_LVRXL, UNSPEC_STVLX, UNSPEC_STVLXL,
927         UNSPEC_STVRX, and UNSPEC_STVRXL.
928         (altivec_lvlx): New pattern.
929         (altivec_lvlxl): New pattern.
930         (altivec_lvrx): New pattern.
931         (altivec_lvrxl): New pattern.
932         (altivec_stvlx): New pattern.
933         (altivec_stvlxl): New pattern.
934         (altivec_stvrx): New pattern.
935         (altivec_stvrxl): New pattern.
936         * config/rs6000/altivec.h (vec_lvlx): Define if PPU is defined.
937         (vec_lvlxl): Likewise.
938         (vec_lvrx): Define if PPU is defined.
939         (vec_lvrxl): Likewise.
940         (vec_stvlx): Define if PPU is defined.
941         (vec_stvlxl): Likewise.
942         (vec_stvrx): Define if PPU is defined.
943         (vec_stvrxl): Likewise.
944
945 2008-10-01  Geert Bosch  <bosch@adacore.com>
946
947         * tree.c (contains_placeholder_p): Return 0 for a SAVE_EXPR.
948
949 2008-10-01  Richard Guenther  <rguenther@suse.de>
950
951         PR tree-optimization/37617
952         * tree-ssa-pre.c (create_expression_by_pieces): During FRE
953         do not add to the NEW_SETS.
954
955 2008-10-01  Richard Guenther  <rguenther@suse.de>
956
957         PR middle-end/37285
958         * tree-vrp.c (execute_vrp): If we optimized away the default
959         case make sure to promote the label that got in place of it
960         to a default case label.
961
962 2008-10-01  Richard Henderson  <rth@redhat.com>
963
964         PR tree-opt/35737
965         * tree-complex.c (set_component_ssa_name): Don't optimize
966         is_gimple_min_invariant values with ssa_names in abnormal phis.
967
968 2008-09-30  Paolo Bonzini  <bonzini@gnu.org>
969
970         PR tree-optimization/37662
971         * tree-ssa-ccp.c (fold_gimple_assign): Invert the operands of a
972         commutative binary operation if they are in the wrong order and
973         fold_build2 produces non-GIMPLE.
974
975 2008-09-30  Jakub Jelinek  <jakub@redhat.com>
976
977         PR tree-optimization/37662
978         PR tree-optimization/37663
979         * tree-vrp.c (simplify_truth_ops_using_ranges): Don't call
980         get_value_range with non-SSA_NAME.  Don't assert operands have been
981         folded, instead just bail out.
982
983 2008-09-30  Andrew Pinski  <andrew_pinski@playstation.sony.com>
984
985         * config/rs6000/rs6000.md (fnmadds combiner): Revert typo.
986
987 2008-09-30  Richard Guenther  <rguenther@suse.de>
988
989         PR middle-end/37491
990         * tree-vect-transform.c (vect_create_data_ref_ptr): Properly
991         build restrict-qualified pointers.
992         (vectorizable_store): Move alias check later.
993         (vectorizable_load): Likewise.
994
995 2008-09-30  Paolo Bonzini  <bonzini@gnu.org>
996
997         * c-common.c (empty_if_body_warning): Remove.
998         * c-common.h (empty_if_body_warning): Remove.
999         * c-parser.c (c_parser_if_body, c_parser_else_body): Implement
1000         here the -Wempty-body warning for `if' and `else' statements.
1001         * c-typeck.c (c_finish_if_stmt): Do not call empty_body_warning.
1002
1003 2008-09-29  H.J. Lu  <hongjiu.lu@intel.com>
1004
1005         * config/i386/i386.opt: Add msse2avx.
1006
1007         * config/i386/linux.h (ASM_SPEC): New.  Support -msse2avx.
1008         * config/i386/linux64.h (ASM_SPEC): Likewise.
1009
1010         * doc/invoke.texi: Document -msse2avx.
1011
1012 2008-09-29  Eric Botcazou  <ebotcazou@adacore.com>
1013
1014         * dwarf2out.c (constant_size): Use HOST_WIDE_INT in parameter type.
1015
1016 2008-09-29  Joseph Myers  <joseph@codesourcery.com>
1017
1018         * ifcvt.c (noce_emit_store_flag): If using condition from original
1019         jump, reverse it if if_info->cond was reversed.
1020
1021 2008-09-29  Eric Botcazou  <ebotcazou@adacore.com>
1022
1023         * expr.c (expand_expr_real_1) <normal_inner_ref>: Force op0 to
1024         non-constant memory if it cannot be forced to constant memory.
1025         Overhaul surrounding code and factor out common condition.
1026
1027 2008-09-29  Jeff Law <law@redhat.com>
1028
1029         * reload1.c (alter_reg): Add missing curly braces.
1030
1031 2008-09-29  Michael J. Eager  <eager@eagercon.com>
1032
1033         * config/rs6000/predicates.md (easy_fp_constant): Single FP consts
1034         are easy.
1035         * config/rs6000/rs6000.c (rs6000_override_options): Move
1036         rs6000_init_hard_regno_mode_ok after all options changed.
1037         Set rs6000_single_float, rs6000_double_float if TARGET_HARD_FLOAT.
1038         (rs6000_handle_option): Process -msingle-float, -mdouble-float,
1039         -msimple-fpu flags.  Add warning messages if single FP not configured.
1040         (rs6000_file_start): Output gnu_attribute for single-float.
1041         (legitimate_lo_sum_address_p): Condition on TARGET_DOUBLE_FLOAT.
1042         (rs6000_legitimize_address): Likewise.
1043         (rs6000_legitimize_reload_address): Likewise.
1044         (rs6000_emit_move): Condition on TARGET_DOUBLE_FLOAT,
1045         TARGET_SINGLE_FLOAT.
1046         (function_arg_advance): Likewise (partial conversion).
1047         (setup_incoming_varargs): Condition on TARGET_DOUBLE_FLOAT.
1048         (rs6000_gimplify_va_arg): Condition on TARGET_DOUBLE_FLOAT,
1049         TARGET_SINGLE_FLOAT.
1050         (rs6000_split_multireg_move): Condition on TARGET_DOUBLE_FLOAT.
1051         (rs6000_emit_prologue): Likewise.
1052         (rs6000_function_value): Condition on TARGET_DOUBLE_FLOAT,
1053         TARGET_SINGLE_FLOAT.
1054         (rs6000_libcall_value): Likewise.
1055         * config/rs6000/rs6000.h (TARGET_SINGLE_FLOAT): New default to 1.
1056         (TARGET_DOUBLE_FLOAT): New default to 1
1057         (TARGET_SIMPLE_FPU): New default to 0
1058         (TARGET_SINGLE_FPU): New default to 0
1059         (TARGET_SINGLE_FLOAT_MODE): New.
1060         (TARGET_DOUBLE_FLOAT_MODE): New.
1061         * config/rs6000/singlefp.h: New; redefine TARGET_SINGLE_FLOAT,
1062         TARGET_DOUBLE_FLOAT, TARGET_SIMPLE_FPU, TARGET_SINGLE_FPU,
1063         UNITS_PER_FP_WORD
1064         * config/rs6000/rs6000.md (define_mode_iterator): Condition on
1065         TARGET_DOUBLE_FLOAT, TARGET_SINGLE_FLOAT.
1066         (extendsfdf2, extendsfdf2_fpr, truncdfsf2, truncdfsf2_fpr,
1067         copysigndf3,fseldfsf4, negdf2, negdf2_fpr, absdf2, absdf2_fpr,
1068         nabsdf2_fpr, adddf3, adddf3_fpr, subdf3, subdf3_fpr, muldf3,
1069         muldf3_fpr, divdf3, divdf3_fpr, sqrtdf2, smaxdf3, smindf3,
1070         movdfcc, *fseldfdf4, floatsidf2, *floatsidf2_internal,
1071         floatunssidf2, *floatunssidf2_internal, fix_truncdfsi2,
1072         *fix_truncdfsi2_internal, fix_truncdfsi2_internal_gfxopt,
1073         fix_truncdfsi2_mfpgpr, fctiwz, btruncdf2, ceildf2, floordf2,
1074         rounddf2, floatdidf2, floatsidf_ppc64_mfpgpr, floatsidf_ppc64,
1075         floatunssidf_ppc64, fix_truncdfdi2, movdf_hardfloat32,
1076         movdf_hardfloat64_mfpgpr, movdf_hardfloat64, extenddftf2_fprs,
1077         extenddftf2_internal, trunctfdf2_internal2, fix_trunc_helper,
1078         abstf2_internal, movdf_update1, movdf_update2, cmpdf_internal1,
1079         cmptf_internal1, *cmptf_internal2): Condition on
1080         TARGET_DOUBLE_FLOAT.
1081         (aux_truncdfsf2, negsf2, *negsf2, abssf2, *abssf2, addsf3, subsf3,
1082         mulsf3, divsf3, sqrtsf2, copysignsf3, smaxsf3, sminsf3, movsfcc,
1083         *fselsfsf4, fixuns_truncsfsi2, fix_truncsfsi2, floatunssisf2,
1084         btruncsf2, ceilsf2, floorsf2, roundsf2, floatdisf2_internal1,
1085         floatdisf2_internal2, *movsf_hardfloat, trunctfsf2_fprs,
1086         *movsf_update1, *movsf_update2, *cmpsf_internal1): Condition on
1087         TARGET_SINGLE_FLOAT.
1088         (divsf3, sqrtsf2, divdf3, divdf3_fpr): Condition on TARGET_SIMPLE_FPU.
1089         * config/rs6000/rs6000.opt (-msingle-float): New.
1090         (-mdouble-float): New.
1091         (-msimple-fpu): New.
1092         * doc/invoke.texi (RS/6000 and PowerPC Options): Add
1093         -msingle-float, -mdouble-float, -msimple-fpu options.
1094         * config/rs6000/rs6000-c.c (rs6000_cpu_cpp_builtins): Set
1095         _SOFT_DOUBLE for -msingle-float.
1096         * config.gcc: New config for target=powerpc-xilinx-eabi.
1097
1098 2008-09-29  Tobias Grosser  <grosser@fim.uni-passau.de>
1099
1100         * graphite.c (dot_all_scops_1): Remove unused checks. SCoPs always
1101         have exit and entry.
1102         (new_scop): Take entry and exit edge to define new SCoP.
1103         (sd_region_p): New structure used during SCoP detection.
1104         (move_scops): Delete.
1105         (move_sd_regions): New.
1106         (scopdet_info): Change the definition from edges back to basic_blocks.
1107         (scopdet_edge_info):  Work on basic_blocks and rename to
1108         scopdet_basic_block_info.
1109         (split_difficult_bb): At the moment removed. We should later
1110         add it at another place.
1111         (build_scops_1): Work on basic_blocks.
1112         (bb_in_sd_region): New.
1113         (find_single_entry_edge): New.
1114         (find_single_exit_edge): New.
1115         (create_single_entry_edge): New.
1116         (sd_region_without_exit): New.
1117         (create_single_exit_edge): New.
1118         (unmark_exit_edges): New.
1119         (mark_exit_edges): New.
1120         (create_sese_edges): New.
1121         (build_graphite_scops): New.
1122         (build_scops): Make SCoPs SESE.
1123         (limit_scops): Use the new functions.
1124
1125 2008-09-29  Hans-Peter Nilsson  <hp@axis.com>
1126
1127         * config/cris/cris.h (IRA_COVER_CLASSES): Define.
1128
1129 2008-09-28  Andrew Pinski  <andrew_pinski@playstation.sony.com>
1130
1131         PR target/37640
1132         * config/rs6000/rs6000.c (rs6000_expand_compare_and_swapqhi): Force
1133         address to a register before taking the lower part.
1134
1135 2008-09-28  Kaz Kojima  <kkojima@gcc.gnu.org>
1136
1137         * config/sh/sh.h (OVERRIDE_OPTIONS): Unset flag_dwarf2_cfi_asm
1138         for SHmedia.
1139
1140 2008-09-28  Andrew Pinski  <andrew_pinski@playstation.sony.com>
1141             Kaushal Kantawala  <kaushal_kantawala@playstation.sony.com>
1142
1143         PR tree-opt/36891
1144         * tree-ssa-loop-im.c (rewrite_reciprocal): Set DECL_GIMPLE_REG_P on
1145         the newly created variable.
1146         Create a VECTOR_CST of all 1s for vector types.
1147
1148 2008-09-28  Eric Botcazou  <ebotcazou@adacore.com>
1149
1150         PR middle-end/36575
1151         * fold-const.c (div_and_round_double) <ROUND_DIV_EXPR>: Fix typo.
1152
1153 2008-09-28  Eric Botcazou  <ebotcazou@adacore.com>
1154
1155         * expmed.c (store_fixed_bit_field): Always use convert_to_mode in
1156         order to convert between modes.
1157         (extract_bit_field_1): Test TRULY_NOOP_TRUNCATION on the right mode.
1158
1159 2008-09-27  Kaz Kojima  <kkojima@gcc.gnu.org>
1160
1161         * config/sh/sh.c (sh_gimplify_va_arg_expr): Use VIEW_CONVERT_EXPR
1162         if needed.
1163
1164 2008-09-26  Vladimir Makarov  <vmakarov@redhat.com>
1165
1166         Revert:
1167         2008-09-25  Vladimir Makarov  <vmakarov@redhat.com>
1168         * ira-lives.c:...
1169         * doc/rtl.texi:...
1170
1171 2008-09-26  Adam Nemet  <anemet@caviumnetworks.com>
1172
1173         * config/mips/mips.h (ISA_HAS_DMUL3, ISA_HAS_BADDU, ISA_HAS_BBIT,
1174         ISA_HAS_CINS, ISA_HAS_EXTS, ISA_HAS_SEQ_SNE, ISA_HAS_POP): Change
1175         them to yield false with MIPS16.
1176
1177 2008-09-26  Jakub Jelinek  <jakub@redhat.com>
1178
1179         PR middle-end/37275
1180         * dwarf2out.c (tls_mem_loc_descriptor): New function.
1181         (mem_loc_descriptor): Use it for MEM.  For PLUS fail if second
1182         mem_loc_descriptor failed.  Accept UNSPEC.
1183         (loc_descriptor): Use tls_mem_loc_descriptor for MEM.  For PARALLEL
1184         fail if one of the loc_descriptor calls for pieces failed.
1185         (loc_descriptor_from_tree_1): Handle even DECL_EXTERNAL __thread vars,
1186         as long as they bind locally.  For COMPONENT_REF, ARRAY_REF etc. fail
1187         if loc_descriptor_from_tree_1 on offset failed.
1188
1189         PR middle-end/37576
1190         * opts.c (common_handle_option): Don't call print_specific_help with
1191         CL_SAVE as first argument.
1192
1193 2008-09-26  Peter O'Gorman  <pogma@thewrittenword.com>
1194             Steve Ellcey  <sje@cup.hp.com>
1195
1196         * configure: Regenerate for new libtool.
1197         * aclocal.m4: Ditto.
1198
1199 2008-09-26  Pat Haugen  <pthaugen@us.ibm.com>
1200
1201         * config/rs6000/rs6000.c (rs6000_emit_allocate_stack): Use correct
1202         alias set on MEM when saving stack pointer.
1203         * config/rs6000/rs6000.md (allocate_stack): Likewise
1204
1205 2008-09-26  Dorit Nuzman  <dorit@il.ibm.com>
1206
1207         PR tree-optimization/37574
1208         * tree-vectorizer.c (vect_is_simple_use): Fix indentation.
1209         * tree-vect-transform.c (vect_get_constant_vectors): Use vectype
1210         instead of vector_type for constants. Take computation out of loop.
1211         (vect_get_vec_def_for_operand): Use only vectype for constant case,
1212         and use only vector_type for invariant case.
1213         (get_initial_def_for_reduction): Use vectype instead of vector_type.
1214
1215 2008-09-25  Jakub Jelinek  <jakub@redhat.com>
1216
1217         PR c/37645
1218         * c-common.c (handle_weakref_attribute): Ignore the attribute unless
1219         the decl is a VAR_DECL or FUNCTION_DECL.
1220
1221 2008-09-25  Vladimir Makarov  <vmakarov@redhat.com>
1222
1223         PR middle-end/37535
1224         * ira-lives.c (mark_reg_live, mark_reg_dead): New functions.
1225         (mark_ref_live, mark_ref_dead): Use them.
1226         (def_conflicts_with_inputs_p): Remove.
1227         (mark_early_clobbers): New function.
1228         (process_bb_node_lives): Call preprocess_constraints and
1229         mark_early_clobbers.
1230
1231         * doc/rtl.texi (clobber): Change how RA deals with clobbers.
1232
1233 2008-09-25  Vladimir Makarov  <vmakarov@redhat.com>
1234
1235         PR middle-end/37448
1236         * ira-int.h (IRA_ALLOCNO_TEMP): Rename to ALLOCNO_TEMP.
1237         (ira_compress_allocno_live_ranges): New prototype.
1238
1239         * ira-color.c: Rename IRA_ALLOCNO_TEMP to ALLOCNO_TEMP.
1240         (coalesced_allocnos_living_at_program_points): New.
1241         (coalesced_allocnos_live_at_points_p,
1242         set_coalesced_allocnos_live_points): New functions.
1243         (coalesce_spill_slots): Rewrite.
1244         
1245         * ira-lives.c (remove_some_program_points_and_update_live_ranges,
1246         ira_compress_allocno_live_ranges): New functions.
1247
1248         * ira-build.c (ira_flattening): Call
1249         ira_compress_allocno_live_ranges.
1250         (ira_build): Ditto.
1251
1252 2008-09-25  H.J. Lu  <hongjiu.lu@intel.com>
1253
1254         * config/i386/i386.md: Check cmp/branch fuse for cmp peephole
1255         optimization.
1256
1257 2008-09-25  Richard Sandiford  <rdsandiford@googlemail.com>
1258
1259         * combine.c (make_compound_operation): Handle the 'E' format.
1260         (count_rtxs): Likewise.
1261         (update_table_tick): Likewise.
1262         (get_last_value_validate): Likewise.
1263
1264 2008-09-25  Eric Botcazou  <ebotcazou@adacore.com>
1265
1266         * dbxout.c (dbxout_parms): Fetch the inner REG inside a PARALLEL.
1267
1268 2008-09-25 Sergei Dyshel <sergeid@il.ibm.com>
1269
1270         * matrix-reorg.c (transform_allocation_sites): Initializers 
1271         added to avoid the warning.
1272
1273 2008-09-25  Martin Jambor  <mjambor@suse.cz>
1274
1275         * cgraph.c (free_nodes): New variable.
1276         (NEXT_FREE_NODE): New macro.
1277         (cgraph_create_node): Reuse nodes from the free list.  Do not
1278         update uid if doing so.
1279         (cgraph_remove_node): Add the node to the free list.
1280
1281 2008-09-25  Gerald Pfeifer  <gerald@pfeifer.com>
1282
1283         * config/freebsd.h (HANDLE_PRAGMA_PACK_PUSH_POP): Define.
1284
1285 2008-09-24  Richard Henderson  <rth@redhat.com>
1286
1287         * dwarf2.h (DW_OP_GNU_encoded_addr): New.
1288         * unwind-dw2.c (execute_stack_op): Handle it.
1289
1290 2008-09-24  David Edelsohn  <edelsohn@gnu.org>
1291
1292         Revert:
1293         2008-09-24  Michael J. Eager  <eager@eagercon.com>
1294
1295 2008-09-24  Aldy Hernandez  <aldyh@redhat.com>
1296
1297         * c-common.c (fname_decl): New location argument.
1298         * c-common.h (fname_decl): Same.
1299         * c-parser.c (c_lex_one_token): Use {warning,error}_at instead of
1300         {warning,error}.
1301         (c_parser_typeof_specifier): Same.
1302         (c_parser_parms_list_declarator): Same.
1303         (c_parser_asm_string_literal): Same.
1304         (c_parser_compound_statement_nostart): Same.
1305         (c_parser_label): Same.
1306         (c_parser_do_statement): Same.
1307         (c_parser_asm_statement): Same.
1308         (c_parser_unary_expression): Same.
1309         (c_parser_sizeof_expression): Same.
1310         (c_parser_postfix_expression): Same.
1311         (c_parser_pragma): Same.
1312         (c_parser_omp_clause_collapse): Same.
1313         (c_parser_omp_clause_num_threads): Same.
1314         (c_parser_omp_clause_schedule): Same.
1315         (c_parser_omp_all_clauses): Same.
1316         (c_parser_omp_sections_scope): Same.
1317         (c_parser_omp_for_loop): Same.  Pass condition's location to
1318         c_objc_common_truthvalue_conversion.
1319         (c_parser_enum_specifier): Remove comment.
1320
1321 2008-09-24  Michael J. Eager  <eager@eagercon.com>
1322
1323         * config/rs6000/predicates.md (easy_fp_constant): Single FP consts
1324         are easy.
1325         * config/rs6000/rs6000.c (rs6000_override_options): Move
1326         rs6000_init_hard_regno_mode_ok after all options changed.
1327         Set rs6000_single_float, rs6000_double_float if TARGET_HARD_FLOAT.
1328         (rs6000_handle_option): Process -msingle-float, -mdouble-float,
1329         -msimple-fpu flags.  Add warning messages if single FP not configured.
1330         (rs6000_file_start): Output gnu_attribute for single-float.
1331         (legitimate_lo_sum_address_p): Condition on TARGET_DOUBLE_FLOAT.
1332         (rs6000_legitimize_address): Likewise.
1333         (rs6000_legitimize_reload_address): Likewise.
1334         (rs6000_emit_move): Condition on TARGET_DOUBLE_FLOAT,
1335         TARGET_SINGLE_FLOAT.
1336         (function_arg_advance): Likewise.
1337         (function_arg): Likewise.
1338         (setup_incoming_varargs): Condition on TARGET_DOUBLE_FLOAT.
1339         (rs6000_gimplify_va_arg): Condition on TARGET_DOUBLE_FLOAT,
1340         TARGET_SINGLE_FLOAT.
1341         (rs6000_split_multireg_move): Condition on TARGET_DOUBLE_FLOAT.
1342         (rs6000_emit_prologue): Likewise.
1343         (rs6000_function_value): Condition on TARGET_DOUBLE_FLOAT,
1344         TARGET_SINGLE_FLOAT.
1345         (rs6000_libcall_value): Likewise.
1346         * config/rs6000/rs6000.h (TARGET_SINGLE_FLOAT): New default to 1.
1347         (TARGET_DOUBLE_FLOAT): New default to 1
1348         (TARGET_SIMPLE_FPU): New default to 0
1349         (TARGET_SINGLE_FPU): New default to 0
1350         (TARGET_SINGLE_FLOAT_MODE): New.
1351         (TARGET_DOUBLE_FLOAT_MODE): New.
1352         * config/rs6000/singlefp.h: New; redefine TARGET_SINGLE_FLOAT,
1353         TARGET_DOUBLE_FLOAT, TARGET_SIMPLE_FPU, TARGET_SINGLE_FPU,
1354         UNITS_PER_FP_WORD
1355         * config/rs6000/rs6000.md (define_mode_iterator): Condition on
1356         TARGET_DOUBLE_FLOAT, TARGET_SINGLE_FLOAT.
1357         (extendsfdf2, extendsfdf2_fpr, truncdfsf2, truncdfsf2_fpr,
1358         copysigndf3,fseldfsf4, negdf2, negdf2_fpr, absdf2, absdf2_fpr,
1359         nabsdf2_fpr, adddf3, adddf3_fpr, subdf3, subdf3_fpr, muldf3,
1360         muldf3_fpr, divdf3, divdf3_fpr, sqrtdf2, smaxdf3, smindf3,
1361         movdfcc, *fseldfdf4, floatsidf2, *floatsidf2_internal,
1362         floatunssidf2, *floatunssidf2_internal, fix_truncdfsi2,
1363         *fix_truncdfsi2_internal, fix_truncdfsi2_internal_gfxopt,
1364         fix_truncdfsi2_mfpgpr, fctiwz, btruncdf2, ceildf2, floordf2,
1365         rounddf2, floatdidf2, floatsidf_ppc64_mfpgpr, floatsidf_ppc64,
1366         floatunssidf_ppc64, fix_truncdfdi2, movdf_hardfloat32,
1367         movdf_hardfloat64_mfpgpr, movdf_hardfloat64, extenddftf2_fprs,
1368         extenddftf2_internal, trunctfdf2_internal2, fix_trunc_helper,
1369         abstf2_internal, movdf_update1, movdf_update2, cmpdf_internal1,
1370         cmptf_internal1, *cmptf_internal2): Condition on
1371         TARGET_DOUBLE_FLOAT.
1372         (aux_truncdfsf2, negsf2, *negsf2, abssf2, *abssf2, addsf3, subsf3,
1373         mulsf3, divsf3, sqrtsf2, copysignsf3, smaxsf3, sminsf3, movsfcc,
1374         *fselsfsf4, fixuns_truncsfsi2, fix_truncsfsi2, floatunssisf2,
1375         btruncsf2, ceilsf2, floorsf2, roundsf2, floatdisf2_internal1,
1376         floatdisf2_internal2, *movsf_hardfloat, trunctfsf2_fprs,
1377         *movsf_update1, *movsf_update2, *cmpsf_internal1): Condition on
1378         TARGET_SINGLE_FLOAT.
1379         (divsf3, sqrtsf2, divdf3, divdf3_fpr): Condition on TARGET_SIMPLE_FPU.
1380         * config/rs6000/rs6000.opt (-msingle-float): New.
1381         (-mdouble-float): New.
1382         (-msimple-fpu): New.
1383         * doc/invoke.texi (RS/6000 and PowerPC Options): Add
1384         -msingle-float, -mdouble-float, -msimple-fpu options.
1385         * config/rs6000/rs6000-c.c (rs6000_cpu_cpp_builtins): Set
1386         _SOFT_DOUBLE for -msingle-float.
1387         * config.gcc: New config for target=powerpc-xilinx-eabi.
1388
1389 2008-09-23  Eric Botcazou  <ebotcazou@adacore.com>
1390
1391         * config/sparc/constraints.md: New file.
1392         * config/sparc/sparc.md: Include it.
1393         * config/sparc/sparc-protos.h (memory_ok_for_ldd): Declare.
1394         (sparc_extra_constraint_check): Delete.
1395         * config/sparc/sparc.c (register_ok_for_ldd): Minor tweaks.
1396         (memory_ok_for_ldd): New predicate.
1397         (sparc_extra_constraint_check): Delete.
1398         * config/sparc/sparc.h (REG_CLASS_FROM_LETTER): Likewise.
1399         (CONST_OK_FOR_LETTER_P): Likewise.
1400         (CONST_DOUBLE_OK_FOR_LETTER_P): Likewise.
1401         (EXTRA_CONSTRAINT): Likewise.
1402
1403 2008-08-23  Steve Ellcey  <sje@cup.hp.com>
1404
1405         * regrename.c (do_replace): Copy REG_POINTER value to new reg.
1406
1407 2008-09-23  Richard Sandiford  <rdsandiford@googlemail.com>
1408
1409         * alias.c (find_base_value): Use FIND_BASE_TERM.
1410         * doc/tm.texi (FIND_BASE_TERM): Update documentation.
1411
1412 2008-09-23  Richard Sandiford  <rdsandiford@googlemail.com>
1413
1414         * config/i386/i386.c: Include cselib.h.
1415         (ix86_pic_register_p): New function.
1416         (ix86_delegitimize_address): Use it to check for the PIC register.
1417
1418 2008-09-23  Richard Sandiford  <rdsandiford@googlemail.com>
1419
1420         * doc/tm.texi (FIND_BASE_TERM): Expand documentation.
1421         * config/i386/i386.c (ix86_find_base_term): Don't check for
1422         SYMBOL_REF and LABEL_REF.
1423
1424 2008-09-23  Richard Sandiford  <rdsandiford@googlemail.com>
1425
1426         * config/i386/i386.c (ix86_delegitimize_address): Wrap the
1427         constant PLUS in a CONST.
1428
1429 2008-09-23  Kai Tietz  <kai.tietz@onevision.com>
1430
1431         * config/i386/i386.c (ix86_function_ok_for_sibcall): Correct
1432         check for sibcall support for w64.
1433
1434 2008-09-23  Eric Botcazou  <ebotcazou@adacore.com>
1435
1436         * c-ppoutput.c (cb_used_define): Do nothing for a builtin node.
1437
1438 2008-09-23  Aldy Hernandez  <aldyh@redhat.com>
1439
1440         * c-tree.h: Add argument to c_objc_common_truthvalue_conversion,
1441         parser_build_binary_op.
1442         * c-decl.c (build_enumerator): Pass location to build_binary_op.
1443         * c-typeck.c (build_array_ref): Same.
1444         (parser_build_unary_op): New location argument.
1445         (pointer_diff): Pass location to build_binary_op,
1446         c_objc_common_truthvalue_conversion.
1447         (build_modify_expr): Same.
1448         (build_unary_op): New location argument.
1449         (build_binary_op): New location argument.
1450         (c_objc_common_truthvalue_conversion): Pass location to
1451         c_*common_truthvalue_conversion.
1452         * c-convert.c (convert): Same.
1453         * c-common.c (binary_op_error): New location argument.
1454         (pointer_int_sum): Pass location to build_binary_op.
1455         (c_common_truthvalue_conversion): New location argument.
1456         (warn_for_sign_compare): Same.
1457         * c-common.h: Add location argument to c_common_truthvalue_conversion,
1458         binary_op_error, build_binary_op, warn_for_sign_compare.
1459         * c-parser.c (c_parser_condition): Pass location to
1460         c_*common_truthvalue_conversion.
1461         (c_parser_conditional_expression): Save condition's location and pass
1462         it on down.
1463         (c_parser_binary_expression): Same, but for the binary operator's
1464         location.
1465         (c_parser_omp_for_loop): Pass location to
1466         c_objc_common_truthvalue_conversion.
1467
1468 2008-09-23  Martin Jambor  <mjambor@suse.cz>
1469
1470         * cgraph.c (cgraph_free_edge): Use sizeof(*e).
1471         (cgraph_node_remove_callees): New temporary f.  Hold the next item
1472         in f when looping.
1473         (cgraph_node_remove_callers): Likewise.
1474
1475         * ipa-prop.c (ipa_edge_removal_hook): Use ATTRIBUTE_UNUSED.
1476         (ipa_node_removal_hook): Likewise.
1477
1478         * doc/gimple.texi (gimple_copy_call_skip_args): Changed to
1479         gimple_call_copy_skip_args and moved to the gimple_call section.
1480         * gimple.c (gimple_copy_call_skip_args): Renamed to
1481         gimple_call_copy_skip_args.  Changed al users.
1482
1483 2008-09-22  Vladimir Makarov  <vmakarov@redhat.com>
1484
1485         * ira-color.c (start_allocno_priorities): Rename to
1486         setup_allocno_priorities.  Use costs and
1487         ALLOCNO_EXCESS_PRESSURE_POINTS_NUM instead of frequencies and
1488         range lengths.  Get rid off doubles.
1489         (ira_fast_allocations): Call start_allocno_priorities.
1490         
1491 2008-09-22  David Daney  <ddaney@avtrex.com>
1492
1493         PR target/37593
1494         * config/mips/mips.h (FUNCTION_PROFILER): Call _mcount via a
1495         register if TARGET_LONG_CALLS.
1496
1497 2008-09-22  Richard Guenther  <rguenther@suse.de>
1498
1499         PR tree-optimization/37145
1500         * tree-ssa-sccvn.c (copy_reference_ops_from_ref): Re-enable
1501         value-numbering union accesses with their offset and size only.
1502         (visit_reference_op_load): Fix simplification of inserted conversions.
1503         * tree-ssa-pre.c (find_or_generate_expression): Do not
1504         recursively generate expressions if running FRE.
1505
1506 2008-09-22  Adam Nemet  <anemet@caviumnetworks.com>
1507
1508         * config/mips/mips.h (ISA_HAS_BADDU): New macro.
1509         * config/mips/mips.md (*baddu_si_eb, *baddu_si_el, *baddu_di<mode>):
1510         New patterns.
1511
1512 2008-09-22  Richard Guenther  <rguenther@suse.de>
1513
1514         PR tree-optimization/37145
1515         * tree-ssa-pre.c (fully_constant_expression): Simplify builtin calls.
1516         (phi_translate_1): Constant fold references.
1517
1518 2008-09-22  Ira Rosen  <irar@il.ibm.com>
1519
1520         PR tree-optimization/37482
1521         * tree-vectorizer.h (struct _slp_instance): Add new field.
1522         (SLP_INSTANCE_FIRST_LOAD_STMT): New.
1523         (get_earlier_stmt): New function.
1524         * tree-vect-analyze.c (vect_find_first_load_in_slp_instance): New
1525         function.
1526         (vect_analyze_slp_instance): Set SLP_INSTANCE_FIRST_LOAD_STMT.
1527         * tree-vect-transform.c (vect_finish_stmt_generation): Remove the
1528         asserts that GSI points to the scalar statement being vectorized.
1529         Set new statement location according to GSI.
1530         (vect_schedule_slp_instance): Use GSI of
1531         SLP_INSTANCE_FIRST_LOAD_STMT when vectorizing loads.
1532
1533 2008-09-21  Jan Hubicka  <jh@suse.cz>
1534
1535         * ipa-cp.c (ipcp_estimate_growth): Check recursive calls.
1536         (ipcp_insert_stage): Update dead_nodes bitmap.
1537
1538 2008-09-22  Danny Smith  <dannysmith@users.sourceforge.net>
1539
1540         PR target/37528 
1541         * config/i386/t-cygming (SHLIB_LC): Remove.
1542         (SHLIB_LINK): Don't add static objects to SHLIB_IMPLIB
1543         * config/i386/t-cygwin (SHLIB_LC): Specify all required libraries.
1544
1545 2008-09-22  Hans-Peter Nilsson  <hp@axis.com>
1546
1547         PR middle-end/37170
1548         PR middle-end/37280
1549         * final.c (mark_symbol_ref_as_used): New helper function.
1550         (output_operand): Instead of just looking inside MEMs for
1551         SYMBOL_REFs, use new helper function and for_each_rtx.
1552         * varasm.c (assemble_external): Move #ifndef ASM_OUTPUT_EXTERNAL
1553         to after weak-handling.  Don't mark decls with TREE_STATIC as weak.
1554         Make head comment more general.
1555         * config/darwin.c (machopic_output_indirection): Handle weak
1556         references here, like in assemble_external.
1557
1558 2008-09-21  Eric Botcazou  <ebotcazou@adacore.com>
1559
1560         * config/sparc/sparc-protos.h (gen_compare_operator): Declare.
1561         (sparc_emit_float_lib_cmp): Change return type.
1562         * config/sparc/sparc.c (gen_compare_reg): Add comment about TFmode.
1563         (gen_compare_operator): New function.
1564         (sparc_emit_float_lib_cmp): Return the new operator to be used in
1565         the comparison sequence.  Minor tweaks.
1566         * config/sparc/sparc.md (seq, sne, sgt, slt, sge, sle): Assert
1567         that the final operator and the result of sparc_emit_float_lib_cmp
1568         match for software TFmode; use emit_insn in lieu of emit_jump_insn.
1569         (beq, bne, bgt, blt, bge, ble, bunordered, bordered, bungt, bunlt,
1570         buneq, bunge, bunle, bltgt): Assert that the final operator and the
1571         result of sparc_emit_float_lib_cmp match for software TFmode.
1572         (movqicc, movhicc, movsicc, movdicc): Merge into...
1573         (mov<I:mode>cc): ...this.
1574         (movsfcc, movdfcc, movtfcc): Merge into...
1575         (mov<F:mode>cc): ...this.
1576         (movqi_cc_sp64, movhi_cc_sp64, movsi_cc_sp64, movdi_cc_sp64): Merge
1577         into...
1578         (mov<I:mode>_cc_v9): ...this.
1579         (movdi_cc_sp64_trunc): Delete.
1580         (movqi_cc_reg_sp64, movhi_cc_reg_sp64, movsi_cc_reg_sp64,
1581         movdi_cc_reg_sp64): Merge into...
1582         (mov<I:mode>_cc_reg_sp64): ...this.
1583         (movsf_cc_sp64): Rename into...
1584         (movsf_cc_v9): ...this.
1585         (movdf_cc_sp64): Rename into...
1586         (movdf_cc_v9): ...this.
1587         (movtf_cc_hq_sp64): Rename into...
1588         (movtf_cc_hq_v9): ...this.
1589         (movtf_cc_sp64): Rename into...
1590         (movtf_cc_v9): ...this.  Adjust for renaming of movdf_cc_sp64.
1591
1592 2008-09-21  Diego Novillo  <dnovillo@google.com>
1593
1594         * doc/gccint.texi: Include generic.texi and gimple.texi.
1595         Re-order index.
1596         * doc/tree-ssa.texi (GENERIC): Move to generic.texi.
1597         (GIMPLE): Move to gimple.texi.
1598         (Annotations): Remove references to to stmt_ann_t and
1599         ssa_name_ann_t.
1600         (SSA Operands): Rename from 'Statement Operands'.
1601         * doc/generic.texi: New.
1602         * doc/gimple.texi: New.
1603         * Makefile.in (TEXI_GCCINT_FILES): Add generic.texi and gimple.texi.
1604         * Makefile.in (TEXI_GCCINT_FILES):
1605         * gimple.c (gimple_copy_call_skip_args): Rename from
1606         giple_copy_call_skip_args.  Update all users.
1607         * doc/gimple.texi (gimple_copy_call_skip_args): Document.
1608
1609 2008-09-21  Ira Rosen  <irar@il.ibm.com>
1610
1611         PR tree-optimization/37539
1612         * tree-vect-transform.c (vect_transform_strided_load): Save vector
1613         statement in related statement field only for the first load of the
1614         group of loads with the same data reference.
1615
1616 2008-09-20  Adam Nemet  <anemet@caviumnetworks.com>
1617
1618         * config/mips/mips.h (TUNE_OCTEON): New macro.
1619         * config/mips/mips.c (mips_issue_rate): Return 2 for Octeon.
1620         (mips_multipass_dfa_lookahead): Return 2 for Octeon.
1621         * config/mips/octeon.md: New file.
1622         * config/mips/mips.md: Include octeon.md.  Restore
1623         semi-alphabetical order of include files.
1624
1625 2008-09-20  H.J. Lu  <hongjiu.lu@intel.com>
1626
1627         PR target/37571
1628         * config/i386/i386.md (*jcc_fused_1): Removed.
1629         (*jcc_fused_2): Likewise.
1630         (*jcc_fused_3): Likewise.
1631         (*jcc_fused_4): Likewise.
1632
1633 2008-09-20  Richard Sandiford  <rdsandiford@googlemail.com>
1634
1635         * doc/tm.texi (TARGET_IRA_COVER_CLASSES): Define.
1636         (IRA_COVER_CLASSES): Refer to TARGET_IRA_COVER_CLASSES.
1637         * target.h (gcc_target): Add ira_cover_classes.
1638         * ira.c: Remove IRA_COVER_CLASSES guards.
1639         (setup_cover_and_important_classes): Use targetm.ira_cover_classes
1640         instead of IRA_COVER_CLASSES.
1641         (setup_cover_and_important_classes): Remove IRA_COVER_CLASSES guard.
1642         (setup_class_translate): Likewise.
1643         (setup_reg_class_intersect_union): Likewise.
1644         (find_reg_class_closure): Replace IRA_COVER_CLASSES guard with a
1645         test of targetm.ira_cover_classes.
1646         * opts.c (decode_options): Use targetm.ira_cover_classes instead
1647         of IRA_COVER_CLASSES.
1648         * target-def.h (TARGET_IRA_COVER_CLASSES): Define.
1649         (TARGET_INITIALIZER): Include it.
1650         * targhooks.h (default_ira_cover_classes): Declare.
1651         * targhooks.c (default_ira_cover_classes): New function.
1652
1653 2008-09-19  Bob Wilson  <bob.wilson@acm.org>
1654         
1655         * config/xtensa/xtensa.md (reload<mode>_literal): Handle MEM operands.
1656         
1657 2008-09-19  Ian Lance Taylor  <iant@google.com>
1658
1659         * varasm.c (narrowing_initializer_constant_valid_p): Return
1660         NULL_TREE if ENDTYPE is not an integer.
1661
1662 2008-09-19  Andrew Pinski  <andrew_pinski@playstation.sony.com>
1663
1664         PR tree-opt/30930
1665         * tree-ssa.c (execute_update_addresses_taken): Also update
1666         DECL_GIMPLE_REG_P for vector and complex types.
1667
1668 2008-09-19  Andrew MacLeod  <amacleod@redhat.com>
1669             Jan Hubicka  <jh@suse.cz>
1670
1671         PR middle-end/37567
1672         * tree-ssa-ter.c (free_temp_expr_table): Make sure fields are actually
1673         empty before freeing them.
1674         (find_replaceable_exprs): Move asserts to free_temp_expr_table.
1675
1676 2008-09-18  Bob Wilson  <bob.wilson@acm.org>
1677
1678         * configure.ac: Add HAVE_AS_TLS check for Xtensa.
1679         * config/xtensa/predicates.md (tls_symbol_operand): New.
1680         * config/xtensa/xtensa.c (TARGET_HAVE_TLS): Define.
1681         (TARGET_CANNOT_FORCE_MEM): Define.
1682         (xtensa_tls_symbol_p): New.
1683         (xtensa_emit_move_sequence): Check for and legitimize TLS addresses.
1684         (xtensa_legitimate_address_p): Disallow constant pool TLS references.
1685         (xtensa_tls_module_base): New.
1686         (xtensa_call_tls_desc): New.
1687         (xtensa_legitimize_tls_address): New.
1688         (xtensa_legitimize_address): Handle TLS symbols.
1689         (xtensa_tls_referenced_p_1): New.
1690         (xtensa_tls_referenced_p): New.
1691         (xtensa_output_addr_const_extra): Handle UNSPEC_TPOFF and
1692         UNSPEC_DTPOFF.
1693         (XTENSA_BUILTIN_THREAD_POINTER): New.
1694         (XTENSA_BUILTIN_SET_THREAD_POINTER): New.
1695         (xtensa_init_builtins): Set NOTHROW and READONLY for umulsidi3
1696         builtin.  Add declarations for __builtin_thread_pointer and
1697         __builtin_set_thread_pointer.
1698         (xtensa_fold_builtin): Recognize new builtins.
1699         (xtensa_expand_builtin): Expand new builtins.
1700         * config/xtensa/xtensa.h (XCHAL_HAVE_THREADPTR): Define default value.
1701         (TARGET_THREADPTR): Define.
1702         (HAVE_AS_TLS): Define default value.
1703         (LEGITIMATE_CONSTANT_P): Disallow TLS references.
1704         * config/xtensa/xtensa.md (UNSPEC_TPOFF, UNSPEC_DTPOFF): New.
1705         (UNSPEC_TLS_FUNC, UNSPEC_TLS_ARG, UNSPEC_TLS_CALL, UNSPEC_TP): New.
1706         (UNSPECV_SET_TP): New.
1707         (sym_TPOFF, sym_DTPOFF): New.
1708         (load_tp, set_tp, tls_func, tls_arg, tls_call): New.
1709         * config/xtensa/xtensa-protos.h (xtensa_tls_referenced_p): Declare.
1710         * configure: Regenerated.
1711         
1712 2008-09-18  H.J. Lu  <hongjiu.lu@intel.com>
1713
1714         PR target/37394
1715         * config/ia64/ia64.c (ia64_optimization_options): Move
1716         checking and setting flag_schedule_insns_after_reload and
1717         ia64_flag_schedule_insns2 back to ...
1718         (ia64_override_options): Here.
1719
1720 2008-09-18  Andrew Pinski  <andrew_pinski@playstation.sony.com>
1721
1722         PR rtl-opt/37451
1723         * loop-doloop.c (doloop_modify): New argument zero_extend_p and
1724         zero extend count after the correction to it is done.
1725         (doloop_optimize): Update call to doloop_modify, don't zero extend
1726         count before call.
1727
1728 2008-09-18  Martin Jambor  <mjambor@suse.cz>
1729
1730         * ipa-cp.c (ipcp_estimate_growth): Return 0 instead of false.
1731
1732         * ipa-prop.c: Correct comments.
1733         * ipa-prop.h: Likewise.
1734
1735 2008-09-18  Jan Hubicka  <jh@suse.cz>
1736
1737         PR middle-end/37448
1738         * ipa-reference.c (ipa_reference_local_vars_info_d,
1739         ipa_reference_global_vars_info_d,
1740         ipa_reference_local_vars_info_t, ipa_reference_global_vars_info_t,
1741         ipa_reference_vars_info_t): Move here from ipa-reference.h
1742         (node_duplication_hook_holder, node_removal_hook_holder): New.
1743         (get_reference_vars_info_from_cgraph): Rename to ...
1744         (get_reference_vars_info): ... this one, use cgraph uids.
1745         (get_local_reference_vars_info, get_global_reference_vars_info):
1746         Use cgraph instead of decl.
1747         (ipa_reference_get_read_local, ipa_reference_get_written_local):
1748         Remove.
1749         (ipa_reference_get_read_global, ipa_reference_get_not_read_global
1750         ipa_reference_get_written_global,
1751         ipa_reference_get_not_written_global): Use cgraph argument.
1752         (check_call): Simplify avail check.
1753         (scan_stmt_for_static_refs): Update.
1754         (propagate_bits): Update.
1755         (merge_callee_local_info): Remove.
1756         (init_function_info): Use cgraph nodes.
1757         (clean_function_local_data): Break out from ...
1758         (clean_function): ... here.
1759         (copy_local_bitmap, copy_global_bitmap): New functions.
1760         (duplicate_node_data, remove_node_data): New functions.
1761         (generate_summary): Register hooks; use visibility instead of
1762         master clones.
1763         (propafate): Use cgraph nodes; copy bitmap to each node in cycle.
1764         * ipa-reference.h (ipa_reference_local_vars_info_d,
1765         ipa_reference_global_vars_info_d,
1766         ipa_reference_local_vars_info_t, ipa_reference_global_vars_info_t,
1767         ipa_reference_vars_info_t): Move to ipa-reference.c
1768         (ipa_reference_get_read_local, ipa_reference_get_written_local):
1769         Remove.
1770         (ipa_reference_get_read_global, ipa_reference_get_written_global,
1771         ipa_reference_get_not_read_global,
1772         ipa_reference_get_not_written_global): Update prototype.
1773         * ipa-pure-const.c (funct_state_vec): Turn into VECtor.
1774         (init_state): Remove.
1775         (node_duplication_hook_holder, node_removal_hook_holder): New.
1776         (get_function_state, set_function_state): Use VECtor.
1777         (analyze_function): Check body availability.
1778         (add_new_function): Likewise.
1779         (duplicate_node_data, remove_node_data): New.
1780         (generate_summary): Register hooks; do not care about clones.
1781         (propafate): Do not care about clones; recursive functions are
1782         not looping.
1783         * ipa-utils.c (searchc, ipa_utils_reduced_inorder): Do not skip clones.
1784         * ipa-prop.c (edge_removal_hook_holder, node_removal_hook_holder,
1785         * edge_duplication_hook_holder, node_duplication_hook_holder): Make
1786         static.
1787         * tree-flow.h (function_ann_d): Remove reference_vars_info.
1788         * tree-ssa-opreands.c (add_call_clobber_ops, add_call_read_ops):
1789         Update call of ipa-reference accesors.
1790
1791 2008-09-18  Simon Baldwin  <simonb@google.com>
1792
1793         * c-opts.c (c_common_handle_option): Add handling for
1794         -Wbuiltin-macro-redefined command line option.
1795         * c.opt: Added builtin-macro-redefined option.
1796         * doc/invoke.texi (Warning Options): Add -Wbuiltin-macro-redefined
1797         documentation.
1798
1799 2008-09-18  Richard Guenther  <rguenther@suse.de>
1800
1801         PR tree-optimization/37258
1802         * tree-ssa-sccvn.c (vn_phi_compute_hash): Include the precision
1803         and signedness for integral types.
1804         (vn_phi_eq): Require compatible types.
1805
1806 2008-09-18  Jakub Jelinek  <jakub@redhat.com>
1807
1808         PR debug/34037
1809         * gimplify.c (gimplify_type_sizes): When not optimizing, ensure
1810         TYPE_MIN_VALUE and TYPE_MAX_VALUE is not is not DECL_IGNORED_P
1811         VAR_DECL.
1812         * cfgexpand.c (expand_used_vars): Keep DECL_ARTIFICIAL
1813         !DECL_IGNORED_P vars in local_decls list for instantiate_decls,
1814         ggc_free other TREE_LIST nodes from that chain.
1815         * function.c (instantiate_decls): Instantiate also DECL_RTL
1816         of vars in cfun->local_decls, free that list afterwards.
1817
1818 2008-09-18  Eric Botcazou  <ebotcazou@adacore.com>
1819
1820         * config/sparc/sol2.h (WIDEST_HARDWARE_FP_SIZE): Move to...
1821         * config/sparc/sparc.h (WIDEST_HARDWARE_FP_SIZE): ...here.
1822
1823 2008-09-18  Andrew MacLeod  <amacleod@redhat.com>
1824
1825         * tree-outof-ssa.c (eliminate_useless_phis): Fix formatting.
1826         * tree-flow-.h (struct immediate_use_iterator_d): Fix comment.
1827
1828 2008-09-18  Andrew MacLeod  <amacleod@redhat.com>
1829
1830         PR tree-optimization/37102
1831         * tree-outof-ssa.c (remove_gimple_phi_args): Remove all the PHI args
1832         from a node. Check to see if another PHI is dead.
1833         (eliminate_useless_phis): Rename from eliminate_virtual_phis and 
1834         remove real PHIs which have no uses.
1835         (rewrite_out_of_ssa): Call eliminate_useless_phis.
1836
1837 2008-09-18  Richard Guenther  <rguenther@suse.de>
1838
1839         PR middle-end/37284
1840         * tree-cfg.c (remove_useless_stmts_1): Remove
1841         GIMPLE_CHANGE_DYNAMIC_TYPE if not optimizing.
1842
1843 2008-09-18  Nick Clifton  <nickc@redhat.com>
1844
1845         * config/frv/frv.h (IRA_COVER_CLASSES): Define.
1846         (SECONDARY_INPUT_RELOAD_CLASS): Omit unused argument in call
1847         to frv_secondary_reload_class.
1848         (SECONDARY_OUTPUT_RELOAD_CLASS): Likewise.
1849         * config/frv/frv.c (TARGET_SECONDARY_RELOAD): Define.
1850         (frv_secondary_reload_class): Omit unused parameter.
1851         (frv_secondary_reload): New function.  Handle the case when
1852         secondary_reload_class() is called before the reload_(in|out)
1853         _optabs have been initialised.
1854         * config/frv/frv-protos.h (frv_secondary_reload_class): Omit
1855         unused parameter.
1856         * config/frv/frv.md: Define an exclusion set between fr550_m0
1857         and fr550_f0.
1858
1859 2008-09-18  Richard Guenther  <rguenther@suse.de>
1860
1861         PR tree-optimization/37456
1862         * tree-ssa-reassoc.c (build_and_add_sum): If the stmt we
1863         want to insert after ends a BB insert on the single fallthru
1864         outgoing edge.
1865
1866 2008-09-18  Andreas Krebbel  <krebbel1@de.ibm.com>
1867
1868         * doc/invoke.texi: Document -mhard-dfp, -mno-hard-dfp.
1869         Mention -march=z9-109, z9-ec and z10.
1870
1871 2008-09-18  Uros Bizjak  <ubizjak@gmail.com>
1872
1873         PR rtl-optimization/37544
1874         * regrename.c (maybe_mode_change): Exit early when copy_mode
1875         is narrower than orig_mode and narrower than new_mode.
1876
1877 2008-09-18  Alexander Monakov  <amonakov@ispras.ru>
1878
1879         PR middle-end/37499
1880         * sched-int.h (struct _haifa_insn_data): Remove unused field ref_count.
1881
1882         * sched-rgn.c (ref_counts): Remove.
1883         (insn_referenced): New static variable.
1884         (INSN_REF_COUNT): Remove.
1885         (sched_run_compute_dependencies): Use insn_referenced instead of
1886         INSN_REF_COUNT.
1887         (add_branch_dependences): Likewise.  Delete dead assignment.
1888
1889 2008-09-17  Adam Nemet  <anemet@caviumnetworks.com>
1890
1891         * haifa-sched.c (dep_cost_1): Recognize the producer even if the
1892         consumer is an asm.  Add comment why this is important.
1893         (choose_ready): Add comment to the "INSN_CODE (insn) >= 0 ||
1894         recog_memoized (insn) < 0" assert.  Put ENABLE_CHECKING around it.
1895
1896 2008-09-17  Joseph Myers  <joseph@codesourcery.com>
1897
1898         * expr.c (emit_group_store): Do not shift before moving via a
1899         stack slot.
1900
1901 2008-09-17  Eric Botcazou  <ebotcazou@adacore.com>
1902
1903         * varasm.c (initializer_constant_valid_p): Forbid view-conversions
1904         from aggregate to non-aggregate type if the bit pattern is not fully
1905         preserved afterwards.
1906
1907 2008-09-17  Richard Guenther  <rguenther@suse.de>
1908
1909         * tree-cfg.c (verify_types_in_gimple_assign): Rename to ...
1910         (verify_gimple_assign): ... this.  Split into ...
1911         (verify_gimple_assign_unary): ... this,
1912         (verify_gimple_assign_binary): ... that,
1913         (verify_gimple_assign_single): ... and this.
1914         (verify_types_in_gimple_stmt): Call verify_gimple_assign.
1915         Fix GIMPLE_CHANGE_DYNAMIC_TYPE handling.
1916         (verify_types_in_gimple_min_lval): Handle TARGET_MEM_REF.
1917         (verify_types_in_gimple_reference): Be forgiving with
1918         VIEW_CONVERT_EXPRs.
1919         (verify_gimple_phi): Deal with virtual operands.
1920
1921         * tree.def (PREDICT_EXPR): Change to tcc_expression.
1922
1923 2008-09-17  Andrew Pinski  <andrew_pinski@playstation.sony.com>
1924
1925         * tree.c (get_callee_fndecl): Don't call the language hook.
1926         * langhooks.h (lang_hooks): Remove lang_get_callee_fndecl.
1927         * langhooks-def.h (LANG_HOOKS_GET_CALLEE_FNDECL): Kill.
1928         (LANG_HOOKS_INITIALIZER): Remove LANG_HOOKS_GET_CALLEE_FNDECL.
1929
1930 2008-09-17  Jakub Jelinek  <jakub@redhat.com>
1931
1932         * tree.c (protected_set_expr_location): Don't unnecessarily
1933         check for error_mark_node.
1934
1935 2008-09-17  Art Haas  <ahaas@impactweather.com>
1936
1937         * ipa-reference.c (analyze_function): Declare step only if
1938         ENABLE_CHECKING is defined.
1939
1940 2008-09-17  Jan Hubicka  <jh@suse.cz>
1941
1942         PR c++/18071
1943         * tree.h (DECL_INLINE): remove.
1944         (DECL_DECLARED_INLINE_P): Update docs.
1945         (DECL_NO_INLINE_WARNING_P): new.
1946         (tree_function_decl): Replace inline_flag by no_inline_warning_flag.
1947         * tree-inline.c (inlinable_function_p): Set DECL_NO_INLINE_WARNING_P.
1948
1949 2008-09-17  Jakub Jelinek  <jakub@redhat.com>
1950             Rainer Orth  <ro@TechFak.Uni-Bielefeld.DE>
1951
1952         PR bootstrap/37441
1953         * dwarf2out.c (dwarf2out_do_cfi_asm) [MIPS_DEBUGGING_INFO]: Return
1954         false.
1955
1956 2008-09-17  Jan Hubicka  <jh@suse.cz>
1957
1958         * ipa-reference.c (ipa_obstack): Remove.
1959         (local_info_obstack, global_info_obstack): New.
1960         (add_static_var): We now handle variables only.
1961         (mark_address_taken, mark_load, mark_store): New functions based on ...
1962         (check_operand): ... remove.
1963         (get_asm_stmt_operands): Rename to ...
1964         (check_asm_memory_clobber): ... this. Look only for memory clobber.
1965         (scan_stmt_for_static_refs): Rewrite.
1966         (scan_op_for_static_refs): Rename to ...
1967         (scan_initializer_for_static_refs): do not look for VAR_DECL
1968         initializers; stop recursion on types and decls.
1969         (ipa_init): Use proper obstacks.
1970         (analyze_variable): Use scan_initializer_for_static_refs.
1971         (init_function_info): Use local obstack.
1972         (analyze_function): Simplify.
1973         (add_new_function): We don't need visited_nodes obstack.
1974         (generate_summary): Use proper obstacks; cleanup after propagation.
1975
1976 2008-09-17  Richard Guenther  <rguenther@suse.de>
1977
1978         PR middle-end/37385
1979         PR tree-optimization/37491
1980         * alias.c (get_alias_set): Use the canonical type.
1981         * tree-vect-transform.c (vectorizable_store): Use the type of
1982         the lhs for the vector type.  Adjust checking.
1983         (vectorizable_load): Adjust checking.
1984
1985 2008-09-16  Jakub Jelinek  <jakub@redhat.com>
1986             Adam Nemet  <anemet@caviumnetworks.com>
1987
1988         PR rtl-optimization/37483
1989         * ifcvt.c (noce_try_sign_mask): Use if_info->test_bb instead of
1990         if_info->insn_b's bb as argument to optimize_bb_for_speed_p.
1991         Rearrange code to better match the original comment.  Check
1992         t_unconditional first.  Improve comment.
1993
1994 2008-09-16  Jakub Jelinek  <jakub@redhat.com>
1995
1996         PR c/37529
1997         * gimplify.c (gimplify_expr) <case GOTO_EXPR>: If gimplification of
1998         GOTO_DESTINATION failed, don't create GIMPLE_GOTO.
1999
2000         PR c++/37530
2001         * gimplify.c (gimplify_expr) <case TRY_CATCH_EXPR>: Don't create
2002         GIMPLE_TRY if cleanup sequence is empty.
2003
2004 2008-09-16  Andrew Pinski  <andrew_pinski@playstation.sony.com>
2005
2006         PR middle-end/37263
2007         * tree-ssa-loop-ivopts.c (determine_use_iv_cost_condition): Prefer the
2008         eliminate IV if the cost are the same.
2009
2010 2008-09-16  Richard Guenther  <rguenther@suse.de>
2011
2012         PR middle-end/37380
2013         * tree-sra.c (sra_build_assignment): Do not call the gimplifier
2014         if not necessary.
2015
2016 2008-09-16  Richard Guenther  <rguenther@suse.de>
2017
2018         PR tree-optimization/37508
2019         * tree-vrp.c (simplify_truth_ops_using_ranges): Also allow -1.
2020
2021 2008-09-15  Kaz Kojima  <kkojima@gcc.gnu.org>
2022
2023         * config/sh/sh.md (movsf_ie): Fix length for TARGET_SH2A.
2024
2025 2008-09-15  Andrew Pinski  <andrew_pinski@playstation.sony.com>
2026
2027         * config/rs6000/rs6000.md (floatsidf2): Rewrite PowerPC64 case to
2028         use gen_floatdidf2 directly.
2029         (floatunssidf2): Likewise.
2030         (floatsidf_ppc64_mfpgpr): Remove.
2031         (floatsidf_ppc64): Remove.
2032         (floatunssidf_ppc64): Remove.
2033
2034 2008-09-15  Jakub Jelinek  <jakub@redhat.com>
2035
2036         * ira-color.c (finish_cost_update): Free update_cost_queue_elems
2037         rather than update_cost_queue.
2038
2039         * tree-ssa-alias.c (init_alias_info): Call bitmap_obstack_release
2040         in every call starting with the second one, instead of only when
2041         alias_bitmap_obstack.elements != NULL.
2042
2043         * tree-predcom.c (filter_suitable_components): Free all refs in
2044         act->refs vector before calling release_component.
2045         (add_ref_to_chain): Free ref if not adding it to chain->refs.
2046
2047         * tree-data-ref.c (free_subscripts): Free all subscript objects.
2048
2049         * tree-loop-linear.c (linear_transform_loops): Initialize
2050         lambda_obstack only after calling perfect_loop_nest_depth.
2051         Goto free_and_continue instead of just continue for later failures.
2052
2053         PR middle-end/37479
2054         * doc/invoke.texi: Document -fno-dwarf2-cfi-asm.
2055
2056         PR libmudflap/36397
2057         * tree-mudflap.c (mf_xform_derefs_1): Handle VIEW_CONVERT_EXPR.
2058
2059 2008-09-14  Andreas Schwab  <schwab@suse.de>
2060
2061         * tree-call-cdce.c (check_target_format): Accept Motorola formats.
2062
2063 2008-09-14  Jan Hubicka  <jh@suse.cz>
2064
2065         * invoke.texi (-fconserve-stack): Document.
2066         * opts.c (decode_options): Handle conserve_stack.
2067         * common.opt (fconvserve_stack): New.
2068
2069 2008-09-14  David Edelsohn  <edelsohn@gnu.org>
2070
2071         * config.host: Add x-aix to host_xmake_file.
2072         * config/rs6000/t-aix52: Do not override LDFLAGS.
2073         * config/rs6000/x-aix: New file.
2074
2075 2008-09-14  Andy Hutchinson  <hutchinsonandy@aim.com>
2076
2077         PR target/19636
2078         PR target/24894
2079         PR target/31644
2080         PR target/31786
2081         * config/avr/avr.c (legitimate_address_p): Fix problem where subreg
2082         is not recognized as a valid register usage. Allow REG_X to be used
2083         as a base pointer.
2084         * config/avr/avr.h (LEGITIMIZE_RELOAD_ADDRESS): Remove code that
2085         forces a reload when using a base register.
2086
2087 2008-09-14  Danny Smith  <dannysmith@users.sourceforge.net>
2088
2089         * config/i386/cygming-crtend.c (register_frame_ctor): If
2090         DEFAULT_USE_CXA_ATEXIT, register __gcc_deregister_frame
2091         directly with atexit.
2092         (deregister_frame_ctor): Rename to ...
2093         (deregister_frame_dtor): Use to call __gcc_deregister_frame
2094         if !DEFAULT_USE_CXA_ATEXIT.
2095
2096 2008-09-13  Jan Hubicka  <jh@suse.cz>
2097
2098         * cgraph.c: Include value-prof.h
2099         * Makefile.in (cgraph.o): Add value-prof.h dependency.
2100
2101 2008-09-13  Jan Hubicka  <jh@suse.cz>
2102
2103         PR middle-end/32581
2104         * tree-profile.c (add_abnormal_goto_call_edges): New function.
2105         (tree_gen_interval_profiler, tree_gen_pow2_profiler,
2106         tree_gen_one_value_profiler, tree_gen_average_profiler,
2107         tree_gen_ic_func_profiler, tree_gen_ior_profiler): Use it.
2108
2109 2008-09-13  Jan Hubicka  <jh@suse.cz>
2110
2111         * i386.c (ix86_expand_movmem, ix86_expand_movstr): Avoid processing
2112         too many bytes on misalligned blocks.
2113
2114 2008-09-13  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
2115
2116         * doc/cfg.texi: Fix some typos.
2117         * doc/extend.texi: Likewise.
2118         * doc/install.texi: Likewise.
2119         * doc/invoke.texi: Likewise.
2120         * doc/rtl.texi: Likewise.
2121         * doc/tree-ssa.texi: Likewise.
2122
2123 2008-09-13  Richard Guenther  <rguenther@suse.de>
2124
2125         PR middle-end/30141
2126         * tree-nested.c (finalize_nesting_tree_1): Generate valid
2127         gimple stores for memory rhs.
2128
2129 2008-09-13  H.J. Lu  <hongjiu.lu@intel.com>
2130
2131         PR rtl-optimization/37489
2132         * cse.c (fold_rtx): Don't return const_true_rtx for float
2133         compare if FLOAT_STORE_FLAG_VALUE is undefined.
2134
2135 2008-09-13  Jan Hubicka  <jh@suse.cz>
2136
2137         PR tree-optimization/37392
2138         * tree-inline.c (remap_gimple_stmt): Do not remap return value.
2139
2140 2008-09-13  Martin Jambor  <mjambor@suse.cz>
2141             Jan Hubicka  <jh@suse.cz>
2142
2143         * cgraph.c (free_edges): New variable.
2144         (NEXT_FREE_EDGE): New macro.
2145         (cgraph_free_edge): New function.
2146         (cgraph_remove_edge): Call cgraph_remove_edge_1.
2147         (cgraph_node_remove_callees): Likewise.
2148         (cgraph_node_remove_callers): Likewise.
2149         (cgraph_create_edge): Reuse edges from the free list.  Do not
2150         update uid if doing so.
2151         (cgraph_remove_*_hook): Add free call.
2152
2153 2008-09-13  Richard Sandiford  <rdsandiford@googlemail.com>
2154
2155         * ira-color.c (conflict_allocno_vec): Delete.
2156         (update_cost_queue_elem): New structure.
2157         (update_cost_queue): New variable.
2158         (update_cost_queue_tail): Likewise.
2159         (update_cost_queue_elems): Likewise.
2160         (allocno_update_cost_check): Delete.
2161         (initiate_cost_update): Allocate update_cost_queue_elems
2162         instead of allocno_update_cost_check.
2163         (finish_cost_update): Update the free()s accordingly.
2164         (start_update_cost): New function.
2165         (queue_update_cost): Likewise.
2166         (get_next_update_cost): Likewise.
2167         (update_copy_costs_1): Inline into...
2168         (update_copy_costs): ...here.  Use a queue instead of recursive calls.
2169         Use cover_class instead of ALLOCNO_COVER_CLASS (another_allocno),
2170         once we've established they are equal.  Don't allocate update
2171         costs if there is nothing to add to them.
2172         (update_conflict_hard_regno_costs): Remove ALLOCNO and
2173         DIVISOR arguments.  Use a queue instead of recursive calls;
2174         process all the allocnos in the initial queue, rather than
2175         a single allocno.
2176         (assign_hard_reg): Use queue_update_cost instead of
2177         conflict_allocno_vec.  Queue coalesced allocnos instead
2178         of calling update_conflict_hard_regno_costs for each one.
2179         Just call update_conflict_hard_regno_costs once for the
2180         entire queue.
2181         (ira_color): Remove conflict_allocno_vec handling.
2182
2183 2008-09-12  Sebastian Pop  <sebastian.pop@amd.com>
2184
2185         PR tree-optimization/37484
2186         * graphite.c (scop_record_loop): Use snprintf instead of sprintf.
2187         (save_var_name): Same.
2188         (initialize_cloog_names): Same.
2189         (initialize_cloog_names): Same.
2190
2191 2008-09-12  Sebastian Pop  <sebastian.pop@amd.com>
2192
2193         * tree-scalar-evolution.c (set_instantiated_value): Set
2194         instantiated_below.
2195
2196 2008-09-12  Vladimir Makarov  <vmakarov@redhat.com>
2197
2198         PR rtl-opt/37377
2199
2200         * ira-build.c (common_loop_tree_node_dominator): Remove.
2201         (copy_live_ranges_to_removed_store_destinations): New function.
2202         (regno_top_level_allocno_map): Move to top level from ...
2203         (ira_flattening): ... here.  Use
2204         copy_live_ranges_to_removed_store_destinations.
2205
2206         * ira-emit.c (generate_edge_moves): Fix a comment.
2207
2208 2008-09-12  Anatoly Sokolov  <aesok@post.ru>
2209
2210         PR target/37466
2211         * config/avr/avr.md (movsi_lreg_const peephole2): Add match_dup for
2212         scratch register after 'set' pattern.
2213
2214 2008-09-12  Ulrich Weigand  <Ulrich.Weigand@de.ibm.com>
2215
2216         * emit-rtl.c (set_reg_attrs_from_value): Fix invalid alignment
2217         information passed to mark_reg_pointer.
2218         * explow.c (force_reg): Likewise.
2219
2220 2008-09-12  Ulrich Weigand  <Ulrich.Weigand@de.ibm.com>
2221
2222         * config/spu/spu.c (spu_override_options): Default to -mno-safe-hints
2223         when building for the celledp architecture.
2224
2225 2008-09-12  Richard Guenther  <rguenther@suse.de>
2226
2227         * tree-vrp.c (simplify_truth_ops_using_ranges): Fix types.
2228
2229 2008-09-12  Eric Botcazou  <ebotcazou@adacore.com>
2230
2231         PR rtl-optimization/37424
2232         * ira-color.c (coalesced_pseudo_reg_slot_compare): Untie by comparing
2233         the regnos instead of the addresses.
2234
2235 2008-09-11  Janis Johnson  <janis187@us.ibm.com>
2236
2237         * ginclude/float.h (DEC_EVAL_METHOD): Correct the macro name.
2238
2239 2008-09-11  Richard Guenther  <rguenther@suse.de>
2240
2241         * tree-ssa-uncprop.c (associate_equivalences_with_edges): Avoid
2242         entering the weaker equivalence recording.
2243
2244         * tree-ssa-phiprop.c (propagate_with_phi): Fix tuplification.
2245
2246 2008-09-11  Jeff Law <law@redhat.com>
2247
2248         * reload1.c (alter_reg): Undo the BYTE_BIG_ENDIAN correction performed
2249         by assign_stack_local on the IRA path for stack slot sharing
2250         as well as the non-IRA path.
2251
2252 2008-09-11  Uros Bizjak  <ubizjak@gmail.com>
2253
2254         * config/i386/i386.h: Fix whitespace issues.
2255
2256 2008-09-11  Martin Jambor  <mjambor@suse.cz>
2257
2258         * ipa-prop.h (struct ipa_param_flags): Removed.
2259         (struct ipa_param_descriptor): New structure.
2260         (struct ipa_node_params): ipcp_lattices, param_decls and
2261         param_flags moved to ipa_param_description.
2262         (ipa_get_ith_param): Renamed to ipa_get_param, changed to access
2263         descriptors.  Renamed all users.
2264         (ipa_is_ith_param_modified): Renamed to ipa_is_param_modified,
2265         changed to access descriptors.  Renamed all users.
2266         (ipa_is_ith_param_called): Renamed to ipa_is_param_called, changed
2267         to access descriptors. Renamed all users.
2268         * ipa-cp.c (ipcp_init_cloned_node): Call
2269         ipa_initialize_node_params instead of ipa_count_formal_params and
2270         ipa_create_param_decls_array.
2271         (ipcp_analyze_node): Likewise.
2272         (ipcp_get_ith_lattice): Renamed to ipcp_get_lattice, changed to access
2273         descriptors.  Renamed all users.
2274         (ipcp_initialize_node_lattices): Remove allocation.
2275         * ipa-inline.c (inline_indirect_intraprocedural_analysis): Call
2276         ipa_initialize_node_params instead of ipa_count_formal_params and
2277         ipa_create_param_decls_array.
2278         * ipa-prop.c (ipa_create_param_decls_array): Renamed to
2279         ipa_populate_param_decls, made static, added parameter info,
2280         renamed mt to node, removed allocation, changed to use
2281         descriptors.
2282         (ipa_count_formal_params): Made static, added parameter info,
2283         renamed mt to node.
2284         (ipa_initialize_node_params): New function.
2285         (ipa_check_stmt_modifications): Changed to use descriptors.
2286         (ipa_detect_param_modifications): Removed allocation, changed to
2287         use descriptors.
2288         (ipa_note_param_call): Changed to use descriptors.
2289         (ipa_analyze_params_uses): Removed allocation.
2290         (ipa_free_node_params_substructures): Changed to use descriptors.
2291         (ipa_edge_duplication_hook): Use the unused attribute.
2292         (ipa_node_duplication_hook): Use the unused attribute, changed to
2293         use descriptors, changed to duplicate descriptors.
2294
2295         * ipa-inline.c (cgraph_mark_inline_edge): New parameter new_edges,
2296         changed all callers.  Call ipa_propagate_indirect_call_infos if doing
2297         indirect inlining.  Made static.
2298         (cgraph_decide_inlining): Freeing ipa-prop structures after inlining
2299         functions called only once.
2300         (cgraph_decide_recursive_inlining): Don't call
2301         ipa_propagate_indirect_call_infos, pass new_edges to
2302         cgraph_mark_inline_edge instead.
2303         (cgraph_decide_inlining_of_small_functions): Don't call
2304         ipa_propagate_indirect_call_infos, pass new_edges to
2305         cgraph_mark_inline_edge instead.
2306         (cgraph_decide_inlining): Don't call
2307         ipa_propagate_indirect_call_infos.
2308         * ipa-prop.c: Check that vectors are allocated.
2309
2310         * ipa-inline.c (cgraph_mark_inline_edge): Returns boolean, true
2311         iff a new cgraph edges have been created.
2312         (cgraph_decide_inlining): New variable redo_always_inline.
2313         Flattening and always_inlining loop until callgraph stabilizes.
2314         * ipa-prop.c (update_call_notes_after_inlining): Returns boolean,
2315         true iff new cgraph edges have been created.
2316         (propagate_info_to_inlined_callees): Likewise.
2317         (ipa_propagate_indirect_call_infos): Likewise.
2318
2319 2008-09-11  Richard Guenther  <rguenther@suse.de>
2320
2321         * tree-vectorizer.c (slpeel_add_loop_guard): Fix types.
2322         (set_prologue_iterations): Likewise.
2323         * tree-vect-transform.c (vect_create_addr_base_for_vector_ref):
2324         Likewise.
2325         (vect_update_init_of_dr): Likewise.
2326         * tree-ssa-forwprop.c (forward_propagate_addr_expr_1): Fix
2327         type verification.
2328         * fold-const.c (fold_unary): Do not generate calculations
2329         in sub-types.
2330
2331 2008-09-11  Paolo Bonzini  <bonzini@gnu.org>
2332
2333         * dojump.c (do_jump) [BIT_AND_EXPR]: Move below.  Fall through to
2334         TRUTH_AND_EXPR for boolean (1-bit precision) expressions.
2335         (do_jump) [BIT_IOR_EXPR]: Compile as TRUTH_OR_EXPR.
2336
2337         * tree-flow.h (simplify_stmt_using_ranges): Accept a GSI, return
2338         a bool.
2339         * tree-ssa-propagate.c (substitute_and_fold): Pass a GSI to
2340         VRP's simplify_stmt_using_ranges.  Do simplify_stmt_using_ranges
2341         before finalizing the changes.
2342         * tree-vrp.c (extract_range_from_binary_expr): Add limited support
2343         for BIT_IOR_EXPR.
2344         (simplify_truth_ops_using_ranges): New.
2345         (simplify_div_or_mod_using_ranges, simplify_abs_using_ranges,
2346         simplify_cond_using_ranges, simplify_switch_using_ranges): Return
2347         whether a simplification was made.
2348         (simplify_stmt_using_ranges): Ditto, and accept a GSI.  For GS_ASSIGN,
2349         use a switch statement and also call simplify_truth_ops_using_ranges.
2350
2351 2008-09-11  Jan Hubicka  <jh@suse.cz>
2352
2353         * ggc-common.c (loc_array): Make static.
2354         * dce.c (rest_of_handle_ud_dce): Free worklist.
2355
2356 2008-09-11  Jan Hubicka  <jh@suse.cz>
2357
2358         * cgraph.c (cgraph_release_function_body): Plug memory leak on
2359         ipa_transforms_to_apply and CFG; ggc_free gimple df and struct
2360         function so we are sure we do not dangle it forever.
2361         * function.c (outer_function_chain, find_function_data): Remove.
2362         (function_context_stack): New.
2363         (push_function_context, pop_function_context): Update.
2364         * function.h (struct function): Remove pointer outer.
2365         (outer_function_chain, find_function_data): Remove.
2366         * stmt.c (force_label_rtx): Remove dead call of find_function_data.
2367
2368 2008-09-11  Jan Hubicka  <jh@suse.cz>
2369
2370         PR middle-end/37448
2371         * cgraph.c (cgraph_create_edge): Use !cgraph_edge for sanity check.
2372
2373 2008-09-11  Jan Hubicka  <jh@suse.cz>
2374
2375         * tree-ssa-pre.c (phi_translate_1): Fix memory leak
2376
2377 2008-09-11  Jan Hubicka  <jh@suse.cz>
2378
2379         * tree-ssa.c (redirect_edge_var_map_clear): Fix formatting.
2380         (free_var_map_entry): New function.
2381         (redirect_edge_var_map_destroy): Use it.
2382
2383 2008-09-11  Jan Hubicka  <jh@suse.cz>
2384
2385         PR middle-end/37448
2386         * tree-inline.c (add_lexical_block): Replace with ...
2387         (prepend_lexical_block): ... prepend at begginig.
2388         (remap_blocks): Use it and reverse later.
2389         (expand_call_inline): Use prepend_lexical_block.
2390
2391 2008-09-11  Jan Hubicka  <jh@suse.cz>
2392
2393         * gimplify.c (pop_gimplify_context): Free bind_expr_stack.
2394
2395 2008-09-11  Jan Hubicka  <jh@suse.cz>
2396
2397         * function.c (free_after_compilation): Call insn_locators_free.
2398         * cfglayout.c (insn_locators_free): New function.
2399         * rtl.h (insn_locators_free): Declare.
2400
2401 2008-09-11  Jan Hubicka  <jh@suse.cz>
2402
2403         * ifcvt.c (check_cond_move_block): Make regs argument pointer to
2404         vector pointer.
2405         (cond_move_process_if_block): Update call.
2406
2407 2008-09-11  Jan Hubicka  <jh@suse.cz>
2408
2409         * toplev.c (dump_memory_report): Call dump_vec_loc_statistics.
2410         * vec.c: Include hashtab.h
2411         (vec_descriptor, ptr_hash_entry): New structures.
2412         (vec_desc_hash, vec_ptr_map): New static variables.
2413         (hash_descriptor, eq_descriptor, hash_ptr, eq_ptr, vec_descriptor,
2414         register_overhead, free_overhead, vec_heap_free): New functions.
2415         (vec_gc_o_reserve_1): ggc_free when resizing to 0.
2416         (vec_heap_o_reserve_1): free when resizing to 0; add statistics.
2417         (cmp_statistic, add_statistics, dump_vec_loc_statistics):
2418         New functions.
2419
2420 2008-09-11  Ira Rosen  <irar@il.ibm.com>
2421
2422         PR tree-optimization/37474
2423         * tree-vect-analyze.c (vect_supported_load_permutation_p): Check the
2424         length of load permutation.
2425
2426 2008-09-11  Andreas Schwab  <schwab@suse.de>
2427
2428         * config/m68k/m68k.h (IRA_COVER_CLASSES): Define.
2429
2430 2008-09-11  Jakub Jelinek  <jakub@redhat.com>
2431
2432         PR target/37382
2433         * expmed.c (extract_low_bits): Avoid creating invalid subregs.
2434         * dse.c (find_shift_sequence): Use extract_low_bits instead of
2435         simplify_gen_subreg.
2436
2437 2008-09-11  Ira Rosen  <irar@il.ibm.com>
2438
2439         * tree-vect-transform.c (vectorizable_store): Use the rhs vector type
2440         for alias check.
2441
2442 2008-09-10  Jakub Jelinek  <jakub@redhat.com>
2443
2444         PR middle-end/37338
2445         * gimplify.c (gimplify_body): Call default_rtl_profile.
2446
2447         PR target/36904
2448         * config/rs6000/rs6000-c.c (rs6000_macro_to_expand): Return NULL
2449         instead of tok->val.node if not expanding to something else.  Handle
2450         intervening CPP_PADDING tokens.
2451         (altivec_categorize_keyword): Remove unneeded comparisons.
2452
2453 2008-09-10  Richard Guenther  <rguenther@suse.de>
2454
2455         * tree-ssa-pre.c (phi_translate_1): Fix memory leak.
2456
2457 2008-09-10  Richard Guenther  <rguenther@suse.de>
2458
2459         PR middle-end/37432
2460         * tree-inline.c (insert_init_stmt): Make sure to not
2461         insert invalid gimple stores.
2462
2463 2008-09-10  Sebastian Pop  <sebastian.pop@amd.com>
2464
2465         PR tree-optimization/37388
2466         * toplev.c (process_options): Fail and warn when graphite
2467         flags are used, but the compiler has not been configured
2468         with graphite libraries.
2469         * graphite.c (graphite_transform_loops): Remove printfs
2470         to dump_file for the case when graphite is not available.
2471
2472 2008-09-10  H.J. Lu  <hongjiu.lu@intel.com>
2473
2474         PR target/37434:
2475         * config/i386/i386.c (ix86_expand_vector_init_interleave): Force
2476         the even element into register.
2477         (ix86_expand_vector_init_general): Don't use
2478         ix86_expand_vector_init_interleave on V16QImode and V8HImode
2479         if we can't move from GPR to SSE register directly.
2480
2481 2008-09-10  Bernd Schmidt  <bernd.schmidt@analog.com>
2482
2483         * config/bfin/bfin.c (workaround_speculation): Correct algorithm to
2484         not lose track of the number of NOPs needed.  Number of NOPs needed
2485         for sync vs. loads workaround was switched; corrected.  Run second
2486         pass for all workarounds.  No NOPs needed after call insns.  Change
2487         second pass to use find_next_insn_start and find_load helpers in order
2488         to properly detect parallel insns.
2489         * config/bfin/bfin.md (cbranch_with_nops): Increase length.
2490
2491 2008-09-10  Jan Hubicka  <jh@suse.cz>
2492
2493         * value-prof.c (gimple_ic): Fix tuplification bug.
2494         * sched-deps.c (sched_insns_conditions_mutex_p): Silence unitialized
2495         var warning.
2496
2497 2008-09-10  Jakub Jelinek  <jakub@redhat.com>
2498
2499         PR tree-optimization/37353
2500         * tree-call-cdce.c (cond_dead_built_in_calls): Remove.
2501         (shrink_wrap_conditional_dead_built_in_calls): Add calls argument, use
2502         calls instead of cond_dead_built_in_calls.
2503         (tree_call_cdce): Add cond_dead_built_in_calls automatic variable,
2504         initalize the vector only before adding first entry.  Use VEC_safe_push
2505         instead of VEC_quick_push.  Pass cond_dead_built_in_calls to
2506         shrink_wrap_conditional_dead_built_in_calls call.
2507
2508 2008-09-10  Ira Rosen  <irar@il.ibm.com>
2509
2510         PR tree-optimization/37385
2511         * tree-vect-transform.c (vect_create_data_ref_ptr): Add a new
2512         argument, and use it as a vector type if not NULL.
2513         (vectorizable_store): Call vect_create_data_ref_ptr with the type of
2514         vectorized rhs.
2515         (vect_setup_realignment): Call vect_create_data_ref_ptr with
2516         additional argument.
2517         (vectorizable_load): Likewise.
2518
2519 2008-09-10  Jakub Jelinek  <jakub@redhat.com>
2520
2521         * config/i386/i386.md (SWI32): New mode iterator.
2522         (jcc_fused_1, jcc_fused_2, jcc_fused_3, jcc_fused_4): Use it instead
2523         of SWI.
2524
2525 2008-09-09  Vladimir Makarov  <vmakarov@redhat.com>
2526
2527         PR rtl-optimization/37435
2528         * caller-save.c (insert_restore, insert_save): Check the mode by
2529         reg_save_code.
2530
2531 2008-09-09  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
2532
2533         PR other/37265
2534         * dwarf2asm.c (dw2_force_const_mem): Use unstripped symbol name for
2535         splay tree lookup.
2536         (dw2_output_indirect_constant_1): Use unstripped name in symbol
2537         reference.
2538
2539 2008-09-09  Sandra Loosemore  <sandra@codesourcery.com>
2540
2541         * doc/invoke.texi (ARM Options): Correct errors in discussion
2542         of -mfloat-abi, -mhard-float, and -msoft-float.
2543
2544 2008-09-09  Jakub Jelinek  <jakub@redhat.com>
2545             Jan Hubicka  <jh@suse.cz>
2546
2547         PR middle-end/37356
2548         * tree-inline.c (copy_bb): Insert stmt into copy_basic_block before
2549         calling gimple_regimplify_operands on it.  Iterate over all newly
2550         added statements, not just the last one.
2551         (insert_init_stmt): Insert stmt into seq first, then call
2552         gimple_regimplify_operands on it.  Don't create new gimplification
2553         context, nor find referenced vars.
2554
2555 2008-09-09  Jakub Jelinek  <jakub@redhat.com>
2556
2557         PR other/37419
2558         * ipa-prop.h (ipa_propagate_indirect_call_infos): Change last argument
2559         to pointer to vector pointer.
2560         * ipa-prop.c (ipa_propagate_indirect_call_infos,
2561         propagate_info_to_inlined_callees): Likewise.
2562         (update_call_notes_after_inlining): Likewise.  Push new indirect edge
2563         to *new_edges instead of new_edges.  Reread IPA_EDGE_REF after
2564         ipa_check_create_edge_args.
2565         * ipa-inline.c (cgraph_decide_recursive_inlining): Change last
2566         argument to pointer to vector pointer.
2567         (cgraph_decide_inlining_of_small_function): Adjust
2568         cgraph_decide_recursive_inlining and ipa_propagate_indirect_call_infos
2569         calls.
2570
2571         PR target/37438
2572         * config/i386/i386.md (zero_extendqihi2_movzbl): Enable when
2573         optimizing for size, not speed.
2574
2575         PR rtl-optimization/37408
2576         * function.c (assign_parm_find_stack_rtl): Set correct MEM_SIZE
2577         if parm is promoted.
2578
2579 2008-09-09  Sebastian Pop  <sebastian.pop@amd.com>
2580
2581         PR tree-optimization/37375
2582         * tree-scalar-evolution.c (scev_info_str): Add field
2583         instantiated_below.
2584         (new_scev_info_str, eq_scev_info, find_var_scev_info,
2585         set_scalar_evolution, get_scalar_evolution, get_instantiated_value,
2586         set_instantiated_value): Pass instantiated_below.
2587         (analyze_scalar_evolution_1, analyze_scalar_evolution): Update calls
2588         to above functions.
2589         (instantiate_scev_1, instantiate_scev): Pass a basic block above which
2590         the definitions are not instantiated.
2591
2592         * tree-scalar-evolution.h (instantiate_scev): Update declaration.
2593         (block_before_loop): New.
2594         * tree-data-ref.c (dr_analyze_indices): Update uses of
2595         instantiate_scev.
2596         * graphite.c (block_before_scop): New.
2597         (loop_affine_expr, stmt_simple_for_scop_p, harmful_stmt_in_bb): Pass a
2598         basic block, not a loop for determining the parameters.
2599         (scopdet_edge_info, build_scops_1): Do not pass outermost loop in the
2600         scop.
2601         (idx_record_params, find_params_in_bb, find_scop_parameters,
2602         build_loop_iteration_domains, add_conditions_to_domain): Update calls
2603         to instantiate_scev.
2604
2605         * Makefile.in (cfgloopmanip.o): Add missing dependency on TREE_FLOW_H.
2606
2607 2008-09-09  Vladimir Makarov  <vmakarov@redhat.com>
2608
2609         PR rtl-opt/37333
2610
2611         * ira-build.c (ira_create_allocno): Setup frequency to 0.
2612
2613         * ira-color.c (update_conflict_hard_regno_costs): Remove assert.
2614         Check zero freq and increase if necessary.
2615
2616 2008-09-09  Vladimir Makarov  <vmakarov@redhat.com>
2617
2618         * ira-conflicts.c (process_regs_for_copy): Check that the hard
2619         regno is in the right range.  Add comments.
2620
2621 2008-09-09  Rainer Orth  <ro@TechFak.Uni-Bielefeld.DE>
2622
2623         * Makefile.in (mips-tfile.o-warn): Don't error out on mips-tfile.c
2624         warnings.
2625         * mips-tfile.c (copy_object): Cast alloca result to int *.
2626         * mips-tdump.c (print_symbol): Cast xmalloc return values to
2627         proper types.
2628         Rename class to sclass.
2629         (read_tfile): Cast read_seek return values to proper types.
2630         Cast xcalloc return value to proper type.
2631
2632 2008-09-09  Rainer Orth  <ro@TechFak.Uni-Bielefeld.DE>
2633
2634         * config/sol2.h (REGISTER_TARGET_PRAGMAS): Move ...
2635         * config/i386/sol2.h (REGISTER_SUBTARGET_PRAGMAS): ... here.
2636         * config/sparc/sol2.h (REGISTER_TARGET_PRAGMAS): ... and here.
2637
2638 2008-09-09  Jan Hubicka  <jh@suse.cz>
2639
2640         * profile.c (is_edge_inconsistent): Add debug output; ignore
2641         negative count on fake edges.
2642         (is_inconsistent): Add debug output.
2643
2644 2008-09-09  Andrey Belevantsev  <abel@ispras.ru>
2645
2646         * haifa-sched.c (advance_one_cycle): Do not print '\n' before printing
2647         dump message.
2648         (choose_ready): When first insn is chosen from the ready list, also
2649         dump it.
2650
2651 2008-09-09  Andrey Belevantsev  <abel@ispras.ru>
2652
2653         PR rtl-optimization/37360
2654         * haifa-sched.c (max_issue): Do not assert that we never issue more
2655         insns than issue_rate.  Add comment.
2656
2657 2008-09-09  Richard Guenther  <rguenther@suse.de>
2658
2659         * tree-cfg.c (verify_types_in_gimple_op): Remove.
2660         (verify_types_in_gimple_call): Rename to ...
2661         (verify_gimple_call): ... this.  Enhance.
2662         (verify_types_in_gimple_cond): Remove.
2663         (verify_gimple_comparison): New function ...
2664         (verify_types_in_gimple_assign): ... split out from here.
2665         (verify_types_in_gimple_return): Rename to ...
2666         (verify_gimple_return): ... this.  Enhance.
2667         (verify_types_in_gimple_switch): Rename to ...
2668         (verify_gimple_switch): ... this.  Enhance.
2669         (verify_gimple_goto): New function.
2670         (verify_types_in_gimple_phi): Rename to ...
2671         (verify_gimple_phi): ... this.  Enhance.
2672         (verify_types_in_gimple_stmt): Adjust calls to helper functions.
2673         Fold in single-statement cases from verify_types_in_gimple_seq_2.
2674         (verify_types_in_gimple_seq_2): Remove cases handled in
2675         verify_types_in_gimple_stmt.
2676
2677 2008-09-09  Bernd Schmidt  <bernd.schmidt@analog.com>
2678
2679         * config/bfin/bfin.c (n_regs_to_save): New static variable.
2680         (push_multiple_operation, pop_multiple_operation): Set it.
2681         (workaround_rts_anomaly): New function.
2682         (workaround_speculation): New function, broken out of bfin_reorg.
2683         (bfin_reorg): Call the new functions.
2684
2685 2008-09-09  Richard Guenther  <rguenther@suse.de>
2686
2687         PR middle-end/37354
2688         PR middle-end/30165
2689         * gimplify.c (gimplify_conversion): Change conversions of
2690         non-register type to VIEW_CONVERT_EXPRs.
2691         (gimplify_addr_expr): If we need to make the operand
2692         addressable make sure to use a properly initialized
2693         temporary for that so it gets a valid gimple store.
2694
2695 2008-09-09  Aldy Hernandez  <aldyh@redhat.com>
2696
2697         * function.h (struct function): Add function_start_locus.
2698         * cfgexpand.c (gimple_expand_cfg): Use it.
2699         * c-parser.c (c_parser_declaration_or_fndef): Set it.
2700
2701 2008-09-09  Richard Guenther  <rguenther@suse.de>
2702
2703         PR tree-optimization/37433
2704         * tree-ssa-ccp.c (ccp_fold): Properly guard folding of
2705         function calls.
2706
2707 2008-09-09  Richard Guenther  <rguenther@suse.de>
2708
2709         PR tree-optimization/37387
2710         * tree-ssa-ifcombine.c (ifcombine_iforif): Convert the name
2711         and bits to a common type.
2712
2713 2008-09-09  Nick Clifton  <nickc@redhat.com>
2714
2715         * config/v850/v850.md (return): Restore frame size restriction.
2716
2717 2008-09-09  Paolo Bonzini  <bonzini@gnu.org>
2718
2719         * c-common.c (c_expand_decl): Remove.
2720         * c-common.h (anon_aggr_type_p): Remove prototype.
2721         (DECL_ANON_UNION_ELEMS): Remove.
2722         * c-objc-common.h (LANG_HOOKS_EXPAND_DECL): Remove.
2723         * c-decl.c (anon_aggr_type_p): Remove.
2724         * langhooks-def.h (LANG_HOOKS_EXPAND_DECL): Remove.
2725         (LANG_HOOKS_INITIALIZER): Remove LANG_HOOKS_EXPAND_DECL.
2726         * langhooks.h (struct lang_hooks): Remove expand_decl.
2727         * langhooks.c (lhd_expand_decl): Remove.
2728         * stmt.c (expand_anon_union_decl): Remove.
2729         * tree.h (expand_anon_union_decl): Remove prototype.
2730
2731 2008-08-09  Andy Hutchinson  <hutchinsonandy@aim.com>
2732
2733         PR target/36609
2734         * config/avr/avr.c (avr_reorg): Create RTL for reversed compare with
2735         zero.
2736         * config/avr/avr.md  (QISI) : Define mode iterator.
2737         (negated_tst<mode>) : Redefine as split using mode macro.
2738         (reversed_tstqi): Define insn as reversed compare with zero.
2739         (reversed_tsthi): Ditto.
2740         (reversed_tstsi): Ditto.
2741
2742 2008-09-08  Jakub Jelinek  <jakub@redhat.com>
2743
2744         PR middle-end/37393
2745         * tree-inline.c (copy_bb): When replacing a gimple_call_va_arg_pack_p
2746         call stmt by new_call, clear gimple_bb on stmt after gsi_replace.
2747
2748         PR middle-end/37414
2749         * predict.c (optimize_function_for_size_p): Don't segfault if
2750         FUN is NULL.
2751         * fold-const.c (LOGICAL_OP_NON_SHORT_CIRCUIT, fold_truthop,
2752         tree_swap_operands_p): Don't test cfun != NULL before calling
2753         optimize_function_for_s*_p.
2754
2755 2008-09-08  Eric Botcazou  <ebotcazou@adacore.com>
2756
2757         * ira-color.c (ira_reuse_stack_slot): Set slot_num on success at the
2758         end of the search.
2759
2760 2008-09-08  M R Swami Reddy <MR.Swami.Reddy@nsc.com>
2761
2762         * crx/crx.h (IRA_COVER_CLASSES): Define.
2763
2764 2008-09-08  Jakub Jelinek  <jakub@redhat.com>
2765
2766         PR middle-end/37337
2767         * tree-ssa-dom.c (optimize_stmt): Call maybe_clean_or_replace_eh_stmt
2768         even when a stmt has been gimple_modified_p, but after fold_stmt is
2769         not any longer.  Remove unneeded may_have_exposed_new_symbols
2770         initializations.
2771
2772 2008-09-08  Richard Guenther  <rguenther@suse.de>
2773
2774         PR tree-optimization/37421
2775         * tree-ssa-sccvn.c (visit_copy): Make sure to fully
2776         valueize the RHS.
2777
2778 2008-09-08  Jakub Jelinek  <jakub@redhat.com>
2779
2780         PR middle-end/37415
2781         * opts.c (common_handle_option): Handle OPT_ftree_store_ccp.
2782
2783 2008-09-08  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
2784
2785         PR driver/37409
2786         * pa-hpux.h (LINK_SPEC): Strip -fwhole-program.
2787         * pa-hpux10.h (LINK_SPEC): Likewise.
2788         * pa-hpux11.h (LINK_SPEC): Likewise.
2789
2790 2008-09-07  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
2791
2792         * pa32-regs.h (IRA_COVER_CLASSES): Define.
2793         * pa64-regs.h (IRA_COVER_CLASSES): Define.
2794
2795 2008-09-07  Helge Deller  <deller@gmx.de>
2796
2797         * pa/linux-atomic.c: New file.
2798         * pa/t-linux (LIB2FUNCS_STATIC_EXTRA): Define.
2799         * pa/t-linux64 (LIB2FUNCS_STATIC_EXTRA): Define.
2800
2801 2008-09-07  Richard Guenther  <rguenther@suse.de>
2802             Ira Rosen  <irar@il.ibm.com>
2803
2804         PR tree-optimization/36630
2805         * tree-vect-transform.c (vect_update_ivs_after_vectorizer):
2806         Call STRIP_NOPS before calling evolution_part_in_loop_num.
2807
2808 2008-09-07  Dorit Nuzman  <dorit@il.ibm.com>
2809             Ira Rosen  <irar@il.ibm.com>
2810
2811         PR tree-optimization/35642
2812         * config/rs6000/altivec.md (mulv8hi3): Implement.
2813
2814 2008-09-06  Jeff Law <law@redhat.com>
2815
2816         * h8300/h8300.h (IRA_COVER_CLASSES): Define.
2817
2818 2008-09-06  Jan Hubicka  <jh@suse.cz>
2819
2820         PR tree-optimization/14703
2821         * tree-ssa-live.c (remove_unused_scope_block_p): Remove ignored
2822         declarations.
2823         * passes.c (init_optimization_passes): Recompute inline parameters.
2824
2825 2008-09-06  Richard Sandiford  <rdsandiford@googlemail.com>
2826
2827         * config/mips/mips.c (mips_function_ok_for_sibcall): Check for
2828         DECL being null.
2829
2830 2008-09-06  Richard Sandiford  <rdsandiford@goolemail.com>
2831             Peter Fuerst  <post@pfrst.de>
2832
2833         * doc/invoke.texi: Document -mr10k-cache-barrier=.
2834         * doc/extend.texi: Document __builtin_mips_cache.
2835         * config/mips/mips-ftypes.def: Add a (VOID, SI, CVPOINTER) entry.
2836         * config/mips/mips.opt (mr10k-cache-barrier=): New option.
2837         * config/mips/mips.h (TARGET_CPU_CPP_BUILTINS): Define
2838         __GCC_HAVE_BUILTIN_MIPS_CACHE.
2839         (TARGET_CACHE_BUILTIN, ISA_HAS_CACHE): New macros.
2840         * config/mips/mips.c (mips_r10k_cache_barrier_setting): New enum.
2841         (set_push_mips_isas): New variable.
2842         (mips_r10k_cache_barrier): New variable.
2843         (cache): New availability predicate.
2844         (mips_builtins): Add an entry for __builtin_mips_cache.
2845         (mips_build_cvpointer_type): New function.
2846         (MIPS_ATYPE_CVPOINTER): New macro.
2847         (mips_prepare_builtin_arg): Only use the insn's mode if the rtx's
2848         mode is VOIDmode.
2849         (r10k_simplified_address_p, r10k_simplify_address)
2850         (r10k_uncached_address_p, r10k_safe_address_p)
2851         (r10k_needs_protection_p_1, r10k_needs_protection_p_store)
2852         (r10k_needs_protection_p_call, r10k_needs_protection_p)
2853         (r10k_insert_cache_barriers): New functions.
2854         (mips_reorg_process_insns): Delete cache barriers after a
2855         branch-likely instruction.
2856         (mips_reorg): Call r10k_insert_cache_barriers.
2857         (mips_handle_option): Handle OPT_mr10k_cache_barrier_.
2858         * config/mips/mips.md (UNSPEC_MIPS_CACHE): New constant.
2859         (UNSPEC_R10K_CACHE_BARRIER): Likewise.
2860         (mips_cache, r10k_cache_barrier): New define_insns.
2861
2862 2008-09-06  Richard Sandiford  <rdsandiford@googlemail.com>
2863
2864         * ira-int.h (ira_zero_hard_reg_set, ira_one_hard_reg_set): Delete.
2865         * ira-color.c (setup_allocno_left_conflicts_num): Use
2866         hard_reg_set_equal_p instead of a comparison with
2867         ira_zero_hard_reg_set.
2868         * ira.c (setup_reg_subclasses): Likewise.
2869         (setup_cover_and_important_classes): Likewise.
2870         (setup_class_translate): Likewise.
2871         (setup_reg_class_intersect_union): Likewise.
2872         (ira_zero_hard_reg_set, ira_one_hard_reg_set): Delete.
2873         (ira_init_once): Don't initialize them.
2874
2875 2008-09-05  Vladimir Makarov  <vmakarov@redhat.com>
2876
2877         * doc/tm.texi (IRA_COVER_CLASSES): Fix a typo.
2878
2879 2008-09-05  Vladimir Makarov  <vmakarov@redhat.com>
2880
2881         * ira-color.c (ira_fast_allocation): Permit global allocno allocation.
2882
2883 2008-09-05  Trevor Smigiel <Trevor_Smigiel@playstation.sony.com>
2884
2885         Improved branch hints, safe hints, and scheduling.
2886
2887         * haifa-sched.c (sched_emit_insn) : Define.
2888         * sched-int.h (sched_emit_insn) : Add prototype.
2889         * doc/invoke.texi (-mdual-nops, -mhint-max-nops,
2890         -mhint-max-distance -msafe-hints) : Document.
2891         * config/spu/spu.c (spu_flag_var_tracking): New.
2892         (TARGET_SCHED_INIT_GLOBAL, TARGET_SCHED_INIT,
2893         TARGET_SCHED_REORDER, TARGET_SCHED_REORDER2,
2894         TARGET_ASM_FILE_START): Define.
2895         (TARGET_SCHED_ADJUST_PRIORITY): Remove.
2896         (STOP_HINT_P, HINTED_P, SCHED_ON_EVEN_P): Define.
2897         (spu_emit_branch_hint): Add blocks argument.
2898         (insert_branch_hints, insert_nops): Remove.
2899         (pad_bb, insert_hbrp_for_ilb_runout, insert_hbrp, in_spu_reorg,
2900         uses_ls_unit, spu_sched_init_global, spu_sched_init,
2901         spu_sched_reorder, asm_file_start): New functions.
2902         (clock_var, spu_sched_length, pipe0_clock,
2903         pipe1_clock, prev_clock_var, prev_priority,
2904         spu_ls_first, prev_ls_clock): New static variables.
2905         * config/spu/spu.h (TARGET_DEFAULT): Add MASK_SAFE_HINTS.
2906         * config/spu.md (iprefetch): Add operand, make it clobber MEM.
2907         (nopn_nv): Add a non-volatile version of nop.
2908         * config/spu/spu.opt (-mdual-nops, -mhint-max-nops,
2909         -mhint-max-distance, -msafe-hints): New options.
2910
2911 2008-09-05  Janis Johnson  <janis187@us.ibm.com>
2912             Samuel Tardieu  <sam@rfc1149.net>
2913
2914         * opts.c (decode_options): Combine nested if statements.
2915
2916         PR target/37283
2917         * opts.c (decode_options): Handle more relationships among
2918         unit-at-a-time, toplevel-reorder, and section-anchors.
2919
2920 2008-09-05  David Daney  <ddaney@avtrex.com>
2921
2922         * doc/install.texi (--enable-reduced-reflection): Document new option.
2923
2924 2008-09-05  Bob Wilson  <bob.wilson@acm.org>
2925
2926         * config/xtensa/predicates.md (nonimmed_operand, mem_operand): Use
2927         constantpool_mem_p.
2928         (constantpool_operand): New.
2929         (move_operand): Disallow sub-word modes for the constant pool.
2930         * config/xtensa/xtensa.c (TARGET_SECONDARY_RELOAD): Define.
2931         (xtensa_secondary_reload_class): Replace with....
2932         (xtensa_secondary_reload): this function.  Remove SIGN_EXTEND check.
2933         Set icode for sub-word reloads from the constant pool.
2934         * config/xtensa/xtensa.h (SECONDARY_INPUT_RELOAD_CLASS): Delete.
2935         (SECONDARY_OUTPUT_RELOAD_CLASS): Delete.
2936         * config/xtensa/xtensa.md (reload<mode>_literal): New.
2937         * config/xtensa/xtensa-protos.h: Update prototypes.
2938
2939 2008-09-05  Joseph Myers  <joseph@codesourcery.com>
2940
2941         * config/mips/mips.h (enum reg_class): Add FRAME_REGS.
2942         (REG_CLASS_NAMES): Update.
2943         (REG_CLASS_CONTENTS): Update.
2944         * config/mips/mips.c (mips_regno_to_class): Use FRAME_REGS instead
2945         of ALL_REGS for regs 77 and 78.
2946         * function.c (instantiate_virtual_regs_in_insn): Assert that
2947         return value of simplify_gen_subreg is not NULL.
2948
2949 2008-09-05  Paolo Bonzini  <bonzini@gnu.org>
2950
2951         * emit-rtl.c (gen_rtvec): Rewrite not using gen_rtvec_v.
2952         (gen_rtvec_v): Fix coding standards.
2953
2954 2008-09-04  Jan Hubicka  <jh@suse.cz>
2955
2956         * i386.c (decide_alg): Be more conservative about optimizing for size.
2957
2958 2008-09-04  Ian Lance Taylor  <iant@google.com>
2959
2960         * varasm.c (narrowing_initializer_constant_valid_p): New
2961         static function.
2962         (initializer_constant_valid_p): Call it.
2963
2964 2008-09-04  Jeff Law  <law@redhat.com>
2965
2966         * fold-const.c (native_encode_real): Fix computation of WORDS.
2967         (native_interpret_real): Likewise.
2968
2969 2008-09-04  Janis Johnson  <janis187@us.ibm.com>
2970
2971         * config/rs6000/t-rs6000: Remove target gt-rs6000.h.
2972
2973 2008-09-04  Vladimir Makarov  <vmakarov@redhat.com>
2974
2975         * ira-conflicts.c (process_regs_for_copy): Check insn to check
2976         that the cost is already taken into account in ira-costs.c
2977
2978         * ira-int.h (ira_debug_copy, ira_debug_copies): New.
2979
2980         * ira-build.c (print_copy, print_copies, ira_debug_copy,
2981         ira_debug_copies): New.
2982         (ira_bulid): Call print_copies.
2983
2984         * doc/tm.texi (IRA_COVER_CLASSES): Fix the description.
2985
2986 2008-09-04  Samuel Tardieu  <sam@rfc1149.net>
2987
2988         PR target/32783
2989         * config/rs6000/rs6000.c (optimization_options): Remove check of
2990         flag_toplevel_order.
2991
2992 2008-09-04  Adam Nemet  <anemet@caviumnetworks.com>
2993
2994         * config/mips/mips.h (ISA_HAS_SEQ_SNE): New macro.
2995         * config/mips/mips.c (mips_expand_scc): Also expand seq and sne if
2996         second operand is a reg_imm10_operand.
2997         * config/mips/mips.md (*seq_<GPR:mode><GPR2:mode>_seq,
2998         *sne_<GPR:mode><GPR2:mode>_sne): New patterns.
2999         (*seq_<GPR:mode><GPR2:mode>): Rename to
3000         *seq_zero_<GPR:mode><GPR2:mode>.  Don't match if
3001         ISA_HAS_SEQ_SNE.
3002         (*seq_<GPR:mode><GPR2:mode>_mips16): Rename to
3003         *seq_zero_<GPR:mode><GPR2:mode>_mip16.  Don't match if
3004         ISA_HAS_SEQ_SNE.
3005         (*sne_<GPR:mode><GPR2:mode>): Rename to
3006         *sne_zero_<GPR:mode><GPR2:mode>.  Don't match if
3007         ISA_HAS_SEQ_SNE.
3008
3009 2008-09-04  Adam Nemet  <anemet@caviumnetworks.com>
3010
3011         * config/mips/mips.h (ISA_HAS_EXTS): New macro.
3012         * config/mips/mips.md (*ashr_trunc<mode>): Name the pattern
3013         combining an arithmetic right shift by more than 31 and a
3014         trunction.  Don't match for out-of-range shift amounts.  Set
3015         attribute mode to <MODE>.
3016         (*lshr32_trunc<mode>): Name the pattern combining a logical right
3017         shift by 32 and and a truncation.  Set attribute mode to <MODE>.
3018         (*<optab>_trunc<mode>_exts): New pattern for truncated right
3019         shifts by less than 32.
3020         (extv): Change predicate on first operand to accept registers.
3021         Change predicate of the other operands from immediate_operand to
3022         const_int_operand.  Expand exts when source is a register.
3023         (extzv): Change predicate of the constant operands from
3024         immediate_operand to const_int_operand.
3025         (extzv<mode>): Change predicate of the constant operands from
3026         immediate_operand to const_int_operand and no constraint. Also
3027         remove mode.
3028         (*extzv_trunc<mode>_exts): New pattern.
3029
3030 2008-09-04  Adam Nemet  <anemet@caviumnetworks.com>
3031
3032         * config/mips/mips.h (ISA_HAS_CINS): New macro.
3033         * config/mips/mips-protos.h (mask_low_and_shift_p,
3034         mask_low_and_shift_len): Declare.
3035         * config/mips/mips.c (mask_low_and_shift_p,
3036         mask_low_and_shift_len): New functions.
3037         (mips_print_operand): Handle new operand prefix "m".
3038         * config/mips/mips.md (*cins<mode>): New pattern.
3039
3040 2008-09-04  Bernd Schmidt  <bernd.schmidt@analog.com>
3041
3042         * config/bfin/bfin.c (gen_one_bundle): Don't create new nops when
3043         optimizing for size.
3044
3045 2008-09-04  Richard Sandiford  <rdsandiford@googlemail.com>
3046
3047         * df-scan.c (df_get_entry_block_def_set): Add STACK_POINTER_REGNUM
3048         regardless of epilogue_completed.
3049
3050 2008-09-04  Vladimir Makarov  <vmakarov@redhat.com>
3051
3052         PR middle-end/37359
3053         * ira-lives.c (process_bb_node_lives): Check setjmp.
3054
3055 2008-09-04  Richard Sandiford  <rdsandiford@googlemail.com>
3056
3057         PR middle-end/37243
3058         * ira-build.c (form_loop_tree): Reverse BB walk.
3059         (create_bb_allocnos): Likewise.
3060         * ira-lives.c (make_regno_born_and_dead, regs_set): Delete.
3061         (mark_reg_store): Rename to...
3062         (mark_ref_live): ...this and take a df_ref argument instead of
3063         note_stores arguments.  Assert that we have a register.
3064         (mark_reg_clobber): Delete.
3065         (def_conflicts_with_inputs_p): New function.
3066         (mark_reg_conflicts): Delete.
3067         (mark_reg_death): Rename to...
3068         (mark_ref_dead): ...this and take a df_ref argument instead of
3069         a register.  Assert that we have a register.
3070         (process_bb_node_lives): Hoist frequency calculation out of
3071         instruction walk.  Convert from a forwards scan to a backwards scan.
3072         Use DF_REF_USES and DF_REF_DEFS instead of register notes and
3073         note_stores.  Remove EH_RETURN_DATA_REGNO and regs_set handling.
3074         (create_allocno_live_ranges): Don't create regs_set.
3075
3076 2008-09-04  Ian Lance Taylor  <iant@google.com>
3077
3078         * rtl.h (LABEL_REF_NONLOCAL_P): Don't check for REG_LABEL_OPERAND
3079         or REG_LABEL_TARGET.
3080         * calls.c (emit_library_call_value_1): Use MEM_P rather than
3081         comparing MODE with MEM.
3082         * gimple.c (gimple_build_predict): Cast END_PREDICTORS before
3083         comparing with GF_PREDICT_TAKEN.
3084         (gimple_get_lhs): Change code to enum gimple_code.
3085         (gimple_set_lhs): Likewise.
3086         * ifcvt.c (noce_process_if_block): Correct GET_MODE to GET_CODE.
3087         * omp-low.c (find_omp_clause): Change kind parameter to enum
3088         omp_clause_code.
3089         * tree-flow.h (find_omp_clause): Update declaration.
3090         * regrename.c (clear_dead_regs): Change kind parameter to enum
3091         reg_note.
3092         * reload1.c (eliminate_regs_1): Use REG_NOTE_KIND rather than
3093         GET_MODE.
3094         * see.c (see_get_extension_data): Change return type to enum
3095         entry_type.  Change UNKNOWN to NOT_RELEVANT, SIGN_EXTEND to
3096         SIGNED_EXTENDED_DEF, ZERO_EXTEND to ZERO_EXTENDED_DEF.
3097         (see_gen_normalized_extension): Change extension_code parameter to
3098         enum entry_type.
3099         (see_seek_pre_extension_expr): Change extension_code to enum
3100         entry_type.
3101         (see_merge_one_def_extension): Likewise.
3102         (see_handle_relevant_defs): Likewise.
3103         (see_handle_relevant_uses): Likewise.
3104         (see_analyze_one_def): Likewise.
3105         * tree-cfg.c (need_fake_edge_p): Compare gimple code with
3106         GIMPLE_ASM rather than ASM_EXPR.
3107         * tree-ssa-alias.c (is_escape_site): Compare gimple code with
3108         GIMPLE_RETURN rather than RETURN_EXPR.
3109         * tree-ssa-ccp.c (likely_value): Change code to enum gimple_code.
3110         (evaluate_stmt): Likewise.
3111         * tree-vect-analyze.c (vect_analyze_operations): Change relevance
3112         to enum vect_relevant.
3113         (vect_mark_stmts_to_be_vectorized): Change assertion to not
3114         compare gimple codes with tree codes.
3115
3116 2008-09-04  Paul Brook  <paul@codesourcery.com>
3117
3118         * config/arm/arm.c (arm_size_rtx_costs): Call cost function.
3119
3120 2008-09-04  Bernd Schmidt  <bernd.schmidt@analog.com>
3121
3122         * config/bfin/bfin.c (bfin_function_ok_for_sibcall): Restore a null
3123         pointer check lost in the recent no-unit-at-a-time patch.
3124
3125 2008-09-04  Jan Hubicka  <jh@suse.cz>
3126
3127         PR middle-end/37343
3128         * tree-switch-conversion.c (check_final_bb): Accept only IP
3129         invariants.
3130
3131 2008-09-04  Jan Hubicka  <jh@suse.cz>
3132
3133         * tree-vrp.c (vrp_evaluate_conditional_warnv_with_ops_using_ranges):
3134         Break out from ...
3135         (vrp_evaluate_conditional_warnv_with_ops): ... this one.  Add
3136         using_ranges argument.
3137         (vrp_evaluate_conditional): Avoid bogus warning for type range.
3138         (vrp_visit_cond_stmt): Update call of
3139         vrp_evaluate_conditional_warnv_with_ops
3140
3141 2008-09-04  Jan Hubicka  <jh@suse.cz>
3142
3143         PR tree-optimization/37345
3144         PR tree-optimization/37358
3145         PR tree-optimization/37357
3146         * tree.c (build_function_type_skip_args): Build distinct type copy;
3147         set TYPE_CONTEXT.
3148         (build_function_decl_skip_args): Set type of new decl not orig decl;
3149         clear DECL_VINDEX for methods turned into functions.
3150
3151 2008-09-04  Nick Clifton  <nickc@redhat.com>
3152
3153         * configure.ac (HAVE_GAS_LCOMM_WITH_ALIGNMENT): New assembler check.
3154         * configure: Regenerate.
3155         * config.in: Regenerate.
3156         * config/i386/bsd.h (ASM_OUTPUT_ALIGNED_LOCAL): Use .lcomm with an
3157         alignment field, if it is supported.
3158
3159 2008-09-04  Kai Tietz  <kai.tietz@onevision.com>
3160
3161         * config/i386/t-mingw32 (SHLIB_LC): Change order of import
3162         libraries.
3163
3164 2008-09-03  David Edelsohn  <edelsohn@gnu.org>
3165
3166         * config/rs6000/rs6000.c (processor_target_table): Do not
3167         enable VMX for POWER6.
3168
3169 2008-09-03  Anton Blanchard  <anton@samba.org>
3170
3171         * config/rs6000/rs6000.c (rs6000_split_lock_test_and_set): Do not
3172         emit memory barrier before operation.
3173
3174 2008-09-03  John David Anglin  <dave.anglin@nrc.cnrc.gc.ca>
3175
3176         PR testsuite/37325
3177         * config/pa/pa64-hpux.h (ASM_OUTPUT_EXTERNAL_REAL): Call
3178         default_elf_asm_output_external.
3179
3180 2008-09-03  Jeff Law  <law@redhat.com>
3181
3182         * h8300.c (expand_a_shift): Avoid invalid RTL sharing.
3183
3184 2008-09-03  Richard Henderson  <rth@redhat.com>
3185
3186         * config/alpha/alpha.c (alpha_split_lock_test_and_set): Move
3187         memory barrier to below the test-and-set.
3188         (alpha_split_lock_test_and_set_12): Likewise.
3189
3190 2008-09-03  Vladimir Makarov  <vmakarov@redhat.com>
3191
3192         PR rtl-opt/37243
3193
3194         * ira-int.h (ira_loop_tree_node): Rename mentioned_allocnos to
3195         all_allocnos.
3196
3197         * ira-color.c (print_loop_title): Use all_allocnos.
3198         (color_pass): Ditto.  Don't add border_allocnos.  Check that
3199         subloop allocno in the correspdoning bitmap all_allocnos.
3200
3201         * ira-emit.c (change_loop): Use all_allocnos.
3202
3203         * ira-build.c (create_loop_tree_nodes, finish_loop_tree_node): Ditto.
3204         (ira_create_allocno): Set up all_allocnos bit for the created allocno.
3205         (create_cap_allocno): Remove setting mentioned_allocnos.
3206         (create_insn_allocnos): Ditto.
3207         (remove_unnecessary_allocnos): Use all_allocnos.
3208         (check_allocno_creation): Check that allocnos are in the
3209         corresponding bitmap all_allocnos.
3210
3211 2008-09-03  Vladimir Makarov  <vmakarov@redhat.com>
3212
3213         PR rtl-opt/37243
3214
3215         * ira-conflicts.c (REG_SUBREG_P, go_through_subreg): New.
3216         (process_regs_for_copy): Process subregs.  Refine check when cost
3217         is taken into account in ira-costs.c.
3218         (process_reg_shuffles): Use REG_SUBREG_P.
3219         (add_insn_allocno_copies): Ditto.  Ignore modes.
3220
3221         * ira-color.c (conflict_allocno_vec): New.
3222         (COST_HOP_DIVISOR): New macro.
3223         (update_copy_costs_1): Use it.
3224         (update_conflict_hard_regno_costs): New function.
3225         (assign_hard_reg): Use it.
3226         (ira_color): Allocate and free conflict_allocno_vec.
3227
3228 2008-09-03  Vladimir Makarov  <vmakarov@redhat.com>
3229
3230         PR rtl-opt/37296
3231
3232         * ira-int.h (ira_sort_insn_chain): Remove.
3233
3234         * ira.c (basic_block_order_nums, chain_insn_order,
3235         chain_freq_compare, chain_bb_compare, ira_sort_insn_chain): Remove.
3236         (ira): Don't call ira_sort_insn_chain.
3237
3238         * reload1.c (reload): Don't call ira_sort_insn_chain.
3239
3240 2008-09-03  Andrew Pinski  <andrew_pinski@playstation.sony.com>
3241
3242         PR middle-end/37293
3243         * cgraphunit.c (update_call_expr): Remove eh regions from statements
3244         which become non throw.
3245         (cgraph_function_versioning): Also clear DECL_WEAK.  Call
3246         update_call_expr after updating the flags on the decl.
3247
3248 2008-09-03  Jan Hubicka  <jh@suse.cz>
3249
3250         PR tree-optimization/37315
3251         * cgraph.c (cgraph_create_edge): Use gimple_has_body_p.
3252         * cgraphunit.c (verify_cgraph_node): drop gimple_body check.
3253         (cgraph_analyze_functions): Use node->analyzed
3254         (cgraph_mark_functions_to_output): Likewise.
3255         (cgraph_expand_function): All functions can be released after
3256         expanding.
3257         (cgraph_optimize): Use gimple_has_body_p.
3258         * ipa-inline.c (cgraph_clone_inlined_nodes): Use analyzed flag.
3259         (cgraph_decide_inlining_incrementally): Likewise.
3260         (inline_transform): Inline transform.
3261         * tree-inline.c (initialize_cfun): Do now shallow copy structure;
3262         copy fields needed.
3263         (inlinable_function_p): Drop gimple_body check.
3264         (expand_call_inline): Use gimple_has_body_p.
3265         * gimple.c (gimple_has_body_p): New.
3266         * gimple.h (gimple_has_body_p): Add prototype.
3267         * tree-cfg.c (execute_build_cfg): Remove gimple_body.
3268         (dump_function_to_file): Use gimple_has_body_p check.
3269
3270 2008-09-03  Jakub Jelinek  <jakub@redhat.com>
3271
3272         PR c++/37346
3273         * gimple.h (gimple_has_substatements): GIMPLE_OMP_CRITICAL has
3274         substatements.
3275         * tree-inline.c (remap_gimple_stmt): Handle GIMPLE_OMP_CRITICAL.
3276
3277 2008-09-03  Bernd Schmidt  <bernd.schmidt@analog.com>
3278
3279         From Michael Frysinger  <michael.frysinger@analog.com>
3280         * config/bfin/bfin.c (bfin_cpus[]): Add 0.1 for bf522, bf523, bf524,
3281         bf525, bf526, bf527, bf542, bf544, bf547, bf548, and bf549.  Add 0.2
3282         for bf538.
3283
3284 2008-09-03  Hari Sandanagobalane  <hariharan@picochip.com>
3285
3286         Add picoChip port.
3287         * doc/extend.texi: Document picoChip builtin functions.
3288         * doc/invoke.texi: Document picoChip options.
3289         * doc/contrib.texi: Add picoChip contribution.
3290         * doc/md.texi: Document picoChip constraints.
3291         * config.gcc: Add picochip-*-*.
3292         * config/picochip/: Add new port.
3293
3294 2008-09-03  Richard Guenther  <rguenther@suse.de>
3295
3296         PR tree-optimization/37328
3297         * tree-sra.c (sra_build_assignment): Gimplify properly.
3298         (generate_copy_inout): Take the correct stmt as definition,
3299         remove bogus assert.
3300
3301 2008-09-03  Bernd Schmidt  <bernd.schmidt@analog.com>
3302
3303         * config/bfin/bfin.c (bfin_expand_prologue): Honour no_stack_limit
3304         attributes.
3305
3306         From Michael Frysinger  <michael.frysinger@analog.com>
3307         * config/bfin/bfin.c (bfin_handle_option): Remove BF561 warning.
3308
3309 2008-09-03 Danny Smith  <dannysmith@usrs.sourceforge.net>
3310
3311         * gthr-win32.h (CONST_CAST2): Really make sure CONST_CAST2 is defined.
3312         (__gthread_setspecific): Revert 2008-08-31 change to
3313         __GTHREAD_HIDE_W32API case.  Apply it to !__GTHREAD_HIDE_W32API case.
3314
3315 2008-09-02  Aldy Hernandez  <aldyh@redhat.com>
3316
3317         * diagnostic.c (error_at): New.
3318         * toplev.h (error_at): New prototype.
3319         * c-typeck.c (build_array_ref): Call error_at instead of error.
3320         Pass location to pedwarn.
3321
3322 2008-09-02  Adam Nemet  <anemet@caviumnetworks.com>
3323
3324         * sel-sched.c (sel_hard_regno_rename_ok): Mark arguments unused.
3325
3326 2008-09-02  Jakub Jelinek  <jakub@redhat.com>
3327
3328         * dwarf2out.c (tree_add_const_value_attribute): Only handle
3329         VAR_DECL and CONST_DECL.
3330
3331 2008-09-02  H.J. Lu  <hongjiu.lu@intel.com>
3332             Jakub Jelinek  <jakub@redhat.com>
3333
3334         * config/i386/i386.c (X86_64_VARARGS_SIZE): Removed.
3335         (setup_incoming_varargs_64): Assume cum != NULL. Set/check
3336         ix86_varargs_gpr_size and ix86_varargs_fpr_size.  Use
3337         ix86_varargs_gpr_size instead of X86_64_REGPARM_MAX.
3338         Don't set ix86_save_varrargs_registers.
3339         (ix86_setup_incoming_varargs): Assume cum != NULL.
3340         (ix86_va_start): Check ix86_varargs_gpr_size and
3341         ix86_varargs_fpr_size instead of cfun->va_list_gpr_size and
3342         cfun->va_list_fpr_size, respectively.  Subtract 8*X86_64_REGPARM_MAX
3343         from frame pointer if ix86_varargs_gpr_size == 0.
3344         (ix86_compute_frame_layout): Updated.
3345         * config/i386/i386.h (ix86_save_varrargs_registers): Removed.
3346         (ix86_varargs_gpr_size): Define.
3347         (ix86_varargs_fpr_size): Likewise.
3348         (machine_function): Remove save_varrargs_registers.
3349         Add varargs_gpr_size and varargs_fpr_size.
3350
3351 2008-09-02  Jakub Jelinek  <jakub@redhat.com>
3352
3353         * config/alpha/alpha.c (va_list_skip_additions,
3354         alpha_stdarg_optimize_hook, alpha_gimplify_va_arg_1): Tuplify.
3355         (alpha_gimplify_va_arg): Call unshare_expr on second use of
3356         offset_field.
3357
3358         PR tree-optimization/36766
3359         * tree-cfg.c (gimple_purge_all_dead_eh_edges): Do nothing
3360         for already removed basic blocks.
3361
3362         PR target/36332
3363         * real.c (real_maxval): Clear a lower bit to make real_maxval
3364         match get_max_float for IBM long double format.
3365
3366 2008-09-02  Andreas Schwab  <schwab@suse.de>
3367
3368         * configure.ac: Use m4_quote to quote the expansion of m4_do.
3369         * configure: Regenerate.
3370
3371 2008-09-02  Richard Sandiford  <rdsandiford@googlemail.com>
3372
3373         * simplify-rtx.c (simplify_binary_operation_1): Check for CONST,
3374         SYMBOL_REF and LABEL_REF when applying plus_constant, instead of
3375         checking for a non-VOID CONSTANT_P.
3376
3377 2008-09-02  Jan Hubicka  <jh@suse.cz>
3378
3379         * predict.c (pass_strip_predict_hints): Avoid bugs dump file.
3380         * expmed.c (expand_divmod): Fix test of smod_pow2_cheap and
3381         sdiv_pow2_cheap
3382
3383 2008-09-02  H.J. Lu  <hongjiu.lu@intel.com>
3384
3385         * expr.c (emit_group_store): Don't assert stack temp mode size.
3386
3387 2008-09-02  Sebastian Pop  <sebastian.pop@amd.com>
3388             Tobias Grosser  <grosser@fim.uni-passau.de>
3389             Jan Sjodin  <jan.sjodin@amd.com>
3390             Harsha Jagasia  <harsha.jagasia@amd.com>
3391             Dwarakanath Rajagopal  <dwarak.rajagopal@amd.com>
3392             Konrad Trifunovic  <konrad.trifunovic@inria.fr>
3393             Adrien Eliche  <aeliche@isty.uvsq.fr>
3394
3395         Merge from graphite branch.
3396         * graphite.c: New.
3397         * graphite.h: New.
3398         * tree-loop-linear.c (perfect_loop_nest_depth): Export.
3399         * doc/invoke.texi (-floop-block, -floop-interchange,
3400         -floop-strip-mine): Document new flags.
3401         * tree-into-ssa.c (gimple_vec): Moved...
3402         * tree-loop-distribution.c (rdg_component): Moved...
3403         * cfgloopmanip.c: Include tree-flow.h.
3404         (update_dominators_in_loop): New.
3405         (create_empty_if_region_on_edge): New.
3406         (create_empty_loop_on_edge): New.
3407         (loopify): Use update_dominators_in_loop.
3408         * tree-pass.h (pass_graphite_transforms): Declared.
3409         * configure: Regenerate.
3410         * tree-phinodes.c (make_phi_node): Export.
3411         (add_phi_node_to_bb): New, split from create_phi_node.
3412         * tree-chrec.c (for_each_scev_op): New.
3413         * tree-chrec.h (for_each_scev_op): Declared.
3414         * tree-ssa-loop-ivopts.c (get_phi_with_result): New.
3415         (remove_statement): Call get_phi_with_result.
3416         * config.in (HAVE_cloog): Undef.
3417         * gdbinit.in (pgg): New.
3418         * timevar.def (TV_GRAPHITE_TRANSFORMS): New.
3419         * tree-ssa-loop.c (graphite_transforms): New.
3420         (gate_graphite_transforms): New.
3421         (pass_graphite_transforms): New.
3422         * configure.ac (PPLLIBS, PPLINC, CLOOGLIBS, CLOOGINC,
3423         HAVE_cloog): Defined.
3424         * tree-vectorizer.c (rename_variables_in_bb): Export.
3425         * tree-data-ref.c (dr_may_alias_p): Export.
3426         (stmt_simple_memref_p): New.
3427         (find_data_references_in_stmt): Export.
3428         (find_data_references_in_loop): Export.
3429         (create_rdg_edge_for_ddr): Initialize RDGE_RELATION.
3430         (create_rdg_edges_for_scalar): Initialize RDGE_RELATION.
3431         (create_rdg_vertices): Export.
3432         (build_empty_rdg): New.
3433         (build_rdg): Call build_empty_rdg.  Free dependence_relations.
3434         * tree-data-ref.h (rdg_component): ... here.
3435         (scop_p): New.
3436         (struct data_reference): Add a field scop.
3437         (DR_SCOP): New.
3438         (find_data_references_in_loop): Declared.
3439         (find_data_references_in_stmt): Declared.
3440         (create_rdg_vertices): Declared.
3441         (dr_may_alias_p): Declared.
3442         (stmt_simple_memref_p): Declared.
3443         (struct rdg_edge): Add a field ddr_p relation.
3444         (build_empty_rdg): Declared.
3445         * lambda.h (lambda_matrix): Declare a VEC of.
3446         (find_induction_var_from_exit_cond): Declared.
3447         (lambda_vector_compare): New.
3448         * common.opt (fgraphite, floop-strip-mine,
3449         floop-interchange, floop-block): New flags.
3450         * lambda-code.c (find_induction_var_from_exit_cond): Export.
3451         * cfgloop.c (is_loop_exit): New.
3452         * cfgloop.h (is_loop_exit): Declared.
3453         (create_empty_if_region_on_edge): Declared.
3454         (create_empty_loop_on_edge): Declared.
3455         * tree-flow.h (add_phi_node_to_bb): Declared.
3456         (make_phi_node): Declared.
3457         (rename_variables_in_bb): Declared.
3458         (perfect_loop_nest_depth): Declared.
3459         (graphite_transform_loops): Declared.
3460         * Makefile.in (cfgloopmanip.o): Depend on TREE_FLOW_H.
3461         (graphite.o-warn): Add -Wno-error.
3462         (PPLLIBS, PPLINC, CLOOGLIBS, CLOOGINC): Declared.
3463         (LIBS): Add GMPLIBS, CLOOGLIBS, PPLLIBS.
3464         (INCLUDES): Add PPLINC, CLOOGINC.
3465         (OBJS-common): Add graphite.o.
3466         (graphite.o): Add rule.
3467         * gimple.h (gimple_vec): ... here.
3468         * tree-cfg.c (print_loops): Start printing at ENTRY_BLOCK_PTR.
3469         * passes.c (init_optimization_passes): Schedule
3470         pass_graphite_transforms.
3471
3472 2008-09-02  Samuel Tardieu  <sam@rfc1149.net>
3473
3474         PR target/37283
3475         * opts.c (decode_options): Move processing of -fno-unit-at-a-time
3476         and -fno-toplevel-reorder after handle_options.
3477
3478 2008-09-02  Paul Brook  <paul@codesourcery.com>
3479
3480         * config/arm/arm.c (arm_tune_cortex_a9): Define.
3481         (arm_override_options): Set arm_tune_cortex_a9.
3482         (arm_rtx_costs_1): Make register shifts more expensive on Cortex-A9.
3483         (arm_issue_rate): Handle cortexa9.
3484         * config/arm/arm.h (arm_tune_cortex_a9): Declare.
3485         * config/arm/arm-cores.def: Add cortex-a9.
3486         * config/arm/arm-tune.md: Regenerate.
3487         * config/arm/arm.md: Include cortex-a9.md.
3488         (generic_sched, generic_vfp): Add cortexa9.
3489         * config/arm/cortex-a9.md: New file.
3490
3491 2008-09-02  Richard Guenther  <rguenther@suse.de>
3492
3493         PR tree-optimization/37327
3494         * tree-vrp.c (register_new_assert_for): Make sure to not have
3495         TREE_OVERFLOW set on the bound.
3496
3497 2008-09-02  Alexander Monakov  <amonakov@ispras.ru>
3498
3499         Fixed typo in date of the 2008-09-01 MOVE_RATIO commit.
3500
3501         * config/ia64/ia64.opt (msched-ar-data-spec): Default to 1.
3502         * config/ia64/ia64.c (ia64_set_sched_flags): Always initialize
3503         spec_info->mask.
3504
3505 2008-09-02  Victor Kaplansky  <victork@il.ibm.com>
3506
3507         * gcc/config/spu/spu.md (divdf3): Removed.
3508
3509 2008-09-02  Jakub Jelinek  <jakub@redhat.com>
3510
3511         PR tree-optimization/37095
3512         * cgraph.c (cgraph_node): When creating new cgraph node after
3513         assembler_name_hash has been populated, record it in the hash
3514         table.
3515
3516 2008-09-01  Paul Brook  <paul@codesourcery.com>
3517
3518         * doc/invoke.texi: Document -mword-relocations.
3519         * config/arm/uclinux-elf.h (TARGET_DEFAULT_WORD_RELOCATIONS): Define.
3520         * config/arm/symbian.h (TARGET_DEFAULT_WORD_RELOCATIONS): Define.
3521         * config/arm/vxworks.h (TARGET_DEFAULT_WORD_RELOCATIONS): Define.
3522         * config/arm/arm.c (arm_split_constant): Use arm_emit_movpair.
3523         (arm_rtx_costs_1, arm_size_rtx_costs): Handle HIGH and LO_SUM.
3524         (arm_emit_movpair): New function.
3525         (arm_print_operand <c>): Handle sybolic addresses.
3526         * config/arm/arm.h (TARGET_USE_MOVT): Define.
3527         (TARGET_DEFAULT_WORD_RELOCATIONS): Define.
3528         * config/arm/arm-protos.h (arm_emit_movpair): Add prototype.
3529         * config/arm/arm.opt: Add -mword-relocations.
3530         * config/arm/arm.md (movsi): Use arm_emit_movpair.
3531         (arm_movt, arm_movw): New.
3532
3533 2008-09-01  Paul Brook  <paul@codesourcery.com>
3534
3535         * config/arm/arm.c (arm_override_options): Set arm_abi earlier.
3536         Allow Interworking on ARMv4 EABI based targets.
3537         * config/arm/bpabi.h (TARGET_FIX_V4BX_SPEC): Define.
3538         (SUBTARGET_EXTRA_ASM_SPEC, LINK_SPEC): Add TARGET_FIX_V4BX_SPEC.
3539
3540 2008-09-01  Paul Brook  <paul@codesourcery.com>
3541
3542         * config/arm/thumb2.md (thumb2_negscc): Match the correct operand for
3543         optimized LT0 test.  Remove optimization for GT.
3544
3545 2008-09-01  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
3546
3547         * pa64-hpux.h (LIB_SPEC): Link against librt when building static
3548         openmp applications.
3549         * pa-hpux11.h (LIB_SPEC): Likewise.
3550
3551         * ira.c (setup_eliminable_regset): Only declare i if ELIMINABLE_REGS
3552         is defined.
3553
3554 2008-09-01  Jan Hubicka  <jh@suse.cz>
3555
3556         * predict.c (maybe_hot_count_p, maybe_hot_edge_p): When profile is
3557         present, use only counts; when guessed use only frequencies.
3558         (estimate_bb_frequencies): Use function_frequency.
3559         * profile.c (compute_branch_probabilities): Exit early when
3560         profile reading failed. Set profile_status.
3561         (branch_prob): Do not set profile_status.
3562
3563 2008-09-01  Aldy Hernandez  <aldyh@redhat.com>
3564
3565         * tree.c (protected_set_expr_location): New.
3566         * tree.h (protected_set_expr_location): New prototype.
3567         * c-tree.h (build_array_ref): Add argument.
3568         (parser_build_unary_op): Same.
3569         * c-typeck.c (build_indirect_ref): Handle new location argument.
3570         (build_array_ref): Same.
3571         (parser_build_unary_op): Same.
3572         * gimplify.c (gimplify_asm_expr): Set input_location before calling
3573         error.
3574         * c-omp.c (c_finish_omp_atomic): Pass location when calling
3575         build_indirect_ref.
3576         * c-common.c (finish_label_address_expr): Handle new location argument.
3577         * c-common.h (build_indirect_ref): Add argument.
3578         (finish_label_address_expr): Same.
3579         * c-parser.c (c_parser_unary_expression): Pass location to build
3580         functions.
3581         (c_parser_postfix_expression): Same.
3582
3583 2008-09-01  Paul Brook  <paul@codesourcery.com>
3584
3585         * config/arm/arm.md: Include cortex-r4f.md.
3586         (attr fpu): Update type list.
3587         (attr type): Add fcpys, ffariths, ffarithd, fadds, faddd, fconsts,
3588         fconstd, fcmps and fcmpd.
3589         (attr tune_cortexr4): Define.
3590         (attr generic_sched, attr generic_vfp): Use tune_cortexr4.
3591         * config/arm/vfp.md: Document fcpys, ffariths, ffarithd, fadds, faddd,
3592         fconsts, fconstd, fcmps and fcmpd.  Use them in insn patterns.
3593         * config/arm/arm.c (arm_issue_rate): Add cortexr4f.
3594         * config/arm/arm1020e.md (v10_ffarith, v10_farith): Use new insn types.
3595         * config/arm/cortex-a8-neon.md (cortex_a8_vfp_add_sub,
3596         cortex_a8_vfp_farith: Ditto.
3597         * config/arm/vfp11.md (vfp_ffarith, vfp_farith): Ditto.
3598         * config/arm/cortex-r4.md: Use tune_cortexr4.
3599         * config/arm/cortex-r4f.md: New file.
3600
3601 2008-09-01  Richard Guenther  <rguenther@suse.de>
3602
3603         PR tree-optimization/37305
3604         * tree-ssa-ccp.c (ccp_fold): Do not set TREE_OVERFLOW on
3605         the result of constant conversions.
3606         (fold_gimple_assign): Likewise.
3607
3608 2008-09-01  Andrey Belevantsev  <abel@ispras.ru>
3609
3610         * sel-sched-ir.c (cmp_v_in_regset_pool): Surround with
3611         #ifdef ENABLE_CHECKING.
3612
3613 2008-09-01  Andrey Belevantsev  <abel@ispras.ru>
3614
3615         * sel-sched-dump.c: Surround with #ifdef INSN_SCHEDULING.
3616         * sched-int.h (print_insn, print_pattern, print_value): Declare also
3617         when !INSN_SCHEDULING.
3618
3619 2008-09-01  Andreas Schwab  <schwab@suse.de>
3620
3621         * config/ia64/ia64.c (TARGET_ADDRESS_COST): Update.
3622
3623 2008-09-01  Paul Brook  <paul@codesourcery.com>
3624
3625         * config/arm/arm.c (arm_no_early_mul_dep): Handle multiply-subtract.
3626
3627 2008-09-01  Jan Hubicka  <jh@suse.cz>
3628
3629         * config/spu/spu.c (spu_expand_block_move) Update call of MOVE_RATIO.
3630
3631         * expr.c (MOVE_BY_PIECES_P, CLEAR_BY_PIECES_P, SET_BY_PIECES_P):
3632         Pass speed operand.
3633         * expr.h (MOVE_RATIO, CLEAR_RATIO, SET_RATIO): Update.
3634         * gimplify.c (gimplify_init_constructor): Add speed operand.
3635         * tree-sra.c (decide_block_copy): Likewise.
3636         * tree-inline.c (estimate_move_cost): Likewise.
3637         * config/alpha/alpha.h (MOVE_RATIO): Update.
3638         * config/frv/frv.c (MOVE_RATIO): Update.
3639         * config/spu/spu.h (MOVE_RATIO): Update.
3640         * config/sparc/sparc.h (MOVE_RATIO): Update.
3641         * config/i386/i386.h (MOVE_RATIO, CLEAR_RATIO): Update.
3642         * config/m68hc11/m68hc11.h (MOVE_RATIO): Update.
3643         * config/cris/cris.h (MOVE_RATIO): Update.
3644         * config/mn10300/mn10300.h (MOVE_RATIO): Update.
3645         * config/arm/arm.h (MOVE_RATIO): Update.
3646         * config/pa/pa.md: Update uses of MOVE_RATIO
3647         * config/pa/pa.h (MOVE_RATIO): Update.
3648         * config/mips/mips.h (MOVE_RATIO, MOVE_BY_PIECES,
3649         CLEAR_RATIO, SET_RATIO): Update.
3650         * config/h8300/h8300.h (MOVE_RATIO): Update.
3651         * config/v850/v850.h (MOVE_RATIO): Update.
3652         * config/bfin/bfin.h (MOVE_RATIO): Update.
3653
3654 2008-08-31  Andrey Belevantsev  <abel@ispras.ru>
3655             Dmitry Melnik  <dm@ispras.ru>
3656             Dmitry Zhurikhin  <zhur@ispras.ru>
3657             Alexander Monakov  <amonakov@ispras.ru>
3658             Maxim Kuvyrkov  <maxim@codesourcery.com>
3659
3660         * sel-sched.h, sel-sched-dump.h, sel-sched-ir.h, sel-sched.c,
3661         sel-sched-dump.c, sel-sched-ir.c: New files.
3662         * Makefile.in (OBJS-common): Add selective scheduling object files.
3663         (sel-sched.o, sel-sched-dump.o, sel-sched-ir.o): New entries.
3664         (SEL_SCHED_IR_H, SEL_SCHED_DUMP_H): New entries.
3665         (sched-vis.o): Add dependency on $(INSN_ATTR_H).
3666         * cfghooks.h (get_cfg_hooks, set_cfg_hooks): New prototypes.
3667         * cfghooks.c (get_cfg_hooks, set_cfg_hooks): New functions.
3668         (make_forwarder_block): Update loop latch if we have redirected
3669         the loop latch edge.
3670         * cfgloop.c (get_loop_body_in_custom_order): New function.
3671         * cfgloop.h (LOOPS_HAVE_FALLTHRU_PREHEADERS): New enum field.
3672         (CP_FALLTHRU_PREHEADERS): Likewise.
3673         (get_loop_body_in_custom_order): Declare.
3674         * cfgloopmanip.c (has_preds_from_loop): New.
3675         (create_preheader): Honor CP_FALLTHRU_PREHEADERS.
3676         Assert that the preheader edge will be fall thru when it is set.
3677         * common.opt (fsel-sched-bookkeeping, fsel-sched-pipelining,
3678         fsel-sched-pipelining-outer-loops, fsel-sched-renaming,
3679         fsel-sched-substitution, fselective-scheduling): New flags.
3680         * cse.c (hash_rtx_cb): New.
3681         (hash_rtx): Use it.
3682         * dbgcnt.def (sel_sched_cnt, sel_sched_region_cnt,
3683         sel_sched_insn_cnt): New counters.
3684         * final.c (compute_alignments): Export.  Free dominance
3685         info after loop_optimizer_finalize.
3686         * genattr.c (main): Output maximal_insn_latency prototype.
3687         * genautomata.c (output_default_latencies): New.
3688         Factor its code from ...
3689         (output_internal_insn_latency_func): ... here.
3690         (output_internal_maximal_insn_latency_func): New.
3691         (output_maximal_insn_latency_func): New.
3692         * hard-reg-set.h (UHOST_BITS_PER_WIDE_INT): Define unconditionally.
3693         (struct hard_reg_set_iterator): New.
3694         (hard_reg_set_iter_init, hard_reg_set_iter_set,
3695         hard_reg_set_iter_next): New functions.
3696         (EXECUTE_IF_SET_IN_HARD_REG_SET): New macro.
3697         * lists.c (remove_free_INSN_LIST_node,
3698         remove_free_EXPR_LIST_node): New functions.
3699         * loop-init.c (loop_optimizer_init): When
3700         LOOPS_HAVE_FALLTHRU_PREHEADERS, set CP_FALLTHRU_PREHEADERS when
3701         calling create_preheaders.
3702         (loop_optimizer_finalize): Do not verify flow info after reload.
3703         * recog.c (validate_replace_rtx_1): New parameter simplify.
3704         Default it to true.  Update all uses.  Factor out simplifying
3705         code to ...
3706         (simplify_while_replacing): ... this new function.
3707         (validate_replace_rtx_part,
3708         validate_replace_rtx_part_nosimplify): New.
3709         * recog.h (validate_replace_rtx_part,
3710         validate_replace_rtx_part_nosimplify): Declare.
3711         * rtl.c (rtx_equal_p_cb): New.
3712         (rtx_equal_p): Use it.
3713         * rtl.h (rtx_equal_p_cb, hash_rtx_cb): Declare.
3714         (remove_free_INSN_LIST_NODE, remove_free_EXPR_LIST_node,
3715         debug_bb_n_slim, debug_bb_slim,    print_rtl_slim): Likewise.
3716         * vecprim.h: Add a vector type for unsigned int.
3717         * haifa-sched.c: Include vecprim.h and cfgloop.h.
3718         (issue_rate, sched_verbose_param, note_list, dfa_state_size,
3719         ready_try, cycle_issued_insns, spec_info): Make global.
3720         (readyp): Initialize.
3721         (dfa_lookahead): New global variable.
3722         (old_max_uid, old_last_basic_block): Remove.
3723         (h_i_d): Make it a vector.
3724         (INSN_TICK, INTER_TICK, QUEUE_INDEX, INSN_COST): Make them work
3725         through HID macro.
3726         (after_recovery, adding_bb_to_current_region_p):
3727         New variables to handle correct insertion of the recovery code.
3728         (struct ready_list): Move declaration to sched-int.h.
3729         (rgn_n_insns): Removed.
3730         (rtx_vec_t): Move to sched-int.h.
3731         (find_insn_reg_weight): Remove.
3732         (find_insn_reg_weight1): Rename to find_insn_reg_weight.
3733         (haifa_init_h_i_d, haifa_finish_h_i_d):
3734         New functions to initialize / finalize haifa instruction data.
3735         (extend_h_i_d, init_h_i_d): Rewrite.
3736         (unlink_other_notes): Move logic to add_to_note_list.  Handle
3737         selective scheduler.
3738         (ready_lastpos, ready_element, ready_sort, reemit_notes,
3739         find_fallthru_edge): Make global, remove static prototypes.
3740         (max_issue): Make global.  Add privileged_n and state parameters.  Use
3741         them.
3742         (extend_global, extend_all): Removed.
3743         (init_before_recovery): Add new param.  Fix the handling of the case
3744         when we insert a recovery code before the EXIT which has a predecessor
3745         with a fallthrough edge to it.
3746         (create_recovery_block): Make global.  Rename to
3747         sched_create_recovery_block.  Update.
3748         (change_pattern): Rename to sched_change_pattern.  Make global.
3749         (speculate_insn): Rename to sched_speculate_insn.  Make global.
3750         Split haifa-specific functionality into ...
3751         (haifa_change_pattern): New static function.
3752         (sched_extend_bb): New static function.
3753         (sched_init_bbs): New function.
3754         (current_sched_info): Change type to struct haifa_sched_info.
3755         (insn_cost): Adjust for selective scheduling.
3756         (dep_cost_1): New function.  Move logic from ...
3757         (dep_cost): ... here.
3758         (dep_cost): Use dep_cost_1.
3759         (contributes_to_priority_p): Use sched_deps_info instead of
3760         current_sched_info.
3761         (priority): Adjust to work with selective scheduling.  Process the
3762         corner case when all dependencies don't contribute to priority.
3763         (rank_for_schedule): Use ds_weak instead of dep_weak.
3764         (advance_state): New function.  Move logic from ...
3765         (advance_one_cycle): ... here.
3766         (add_to_note_list, concat_note_lists): New functions.
3767         (rm_other_notes): Make static.  Adjust for selective scheduling.
3768         (remove_notes, restore_other_notes): New functions.
3769         (move_insn): Add two arguments.  Update assert.  Don't call
3770         reemit_notes.
3771         (choose_ready): Remove lookahead variable, use dfa_lookahead.
3772         Remove more_issue, max_points.  Move the code to initialize
3773         max_lookahead_tries to max_issue.
3774         (schedule_block): Remove rgn_n_insns1 parameter.  Don't allocate
3775         ready.  Adjust use of move_insn.  Call restore_other_notes.
3776         (luid): Remove.
3777         (sched_init, sched_finish): Move Haifa-specific initialization/
3778         finalization to ...
3779         (haifa_sched_init, haifa_sched_finish): ... respectively.
3780         New functions.
3781         (setup_sched_dump): New function.
3782         (haifa_init_only_bb): New static function.
3783         (haifa_speculate_insn): New static function.
3784         (try_ready): Use haifa_* instead of speculate_insn and change_pattern.
3785         (extend_ready, extend_all): Remove.
3786         (sched_extend_ready_list, sched_finish_ready_list): New functions.
3787         (create_check_block_twin, add_to_speculative_block): Use
3788         haifa_insns_init instead of extend_global.  Update to use new
3789         initialization functions.  Change parameter.  Factor out code from
3790         create_check_block_twin to ...
3791         (sched_create_recovery_edges) ... this new function.
3792         (add_block): Remove.
3793         (sched_scan_info): New.
3794         (extend_bb): Use sched_scan_info.
3795         (init_bb, extend_insn, init_insn, init_insns_in_bb, sched_scan): New
3796         static functions for walking through scheduling region.
3797         (sched_luids): New vector variable to replace uid_to_luid.
3798         (luids_extend_insn): New function.
3799         (sched_max_luid): New variable.
3800         (luids_init_insn): New function.
3801         (sched_init_luids, sched_finish_luids): New functions.
3802         (insn_luid): New debug function.
3803         (sched_extend_target): New function.
3804         (haifa_init_insn): New static function.
3805         (sched_init_only_bb): New hook.
3806         (sched_split_block): New hook.
3807         (sched_split_block_1): New function.
3808         (sched_create_empty_bb): New hook.
3809         (sched_create_empty_bb_1): New function.
3810         (common_sched_info, ready): New global variables.
3811         (current_sched_info_var): Remove.
3812         (move_block_after_check): Use common_sched_info.
3813         (haifa_luid_for_non_insn): New static function.
3814         (init_before_recovery): Use haifa_init_only_bb instead of add_block.
3815         (increase_insn_priority): New.
3816         * modulo-sched.c: (issue_rate): Remove static declaration.
3817         (sms_sched_info): Change type to haifa_sched_info.
3818         (sms_sched_deps_info, sms_common_sched_info): New variables.
3819         (setup_sched_infos): New.
3820         (sms_schedule): Initialize them.  Call haifa_sched_init/finish.
3821         Do not call regstat_free_calls_crossed.
3822         (sms_print_insn): Use const_rtx.
3823         * params.def (PARAM_MAX_PIPELINE_REGION_BLOCKS,
3824         PARAM_MAX_PIPELINE_REGION_INSNS, PARAM_SELSCHED_MAX_LOOKAHEAD,
3825         PARAM_SELSCHED_MAX_SCHED_TIMES, PARAM_SELSCHED_INSNS_TO_RENAME,
3826         PARAM_SCHED_MEM_TRUE_DEP_COST): New.
3827         * sched-deps.c (sched_deps_info): New.  Update all relevant uses of
3828         current_sched_info to use it.
3829         (enum reg_pending_barrier_mode): Move to sched-int.h.
3830         (h_d_i_d): New variable. Initialize to NULL.
3831         ({true, output, anti, spec, forward}_dependency_cache): Initialize
3832         to NULL.
3833         (estimate_dep_weak): Remove static declaration.
3834         (sched_has_condition_p): New function.  Adjust users of
3835         sched_get_condition to use it instead.
3836         (conditions_mutex_p): Add arguments indicating which conditions are
3837         reversed.  Use them.
3838         (sched_get_condition_with_rev): Rename from sched_get_condition.  Add
3839         argument to indicate whether returned condition is reversed.  Do not
3840         generate new rtx when condition should be reversed; indicate it by
3841         setting new argument instead.
3842         (add_dependence_list_and_free): Add deps parameter.
3843         Update all users.  Do not free dependence list when
3844         deps context is readonly.
3845         (add_insn_mem_dependence, flush_pending_lists): Adjust for readonly
3846         contexts.
3847         (remove_from_dependence_list, remove_from_both_dependence_lists): New.
3848         (remove_from_deps): New. Use the above functions.
3849         (cur_insn, can_start_lhs_rhs_p): New static variables.
3850         (add_or_update_back_dep_1): Initialize present_dep_type.
3851         (haifa_start_insn, haifa_finish_insn, haifa_note_reg_set,
3852         haifa_note_reg_clobber, haifa_note_reg_use, haifa_note_mem_dep,
3853         haifa_note_dep): New functions implementing dependence hooks for
3854         the Haifa scheduler.
3855         (note_reg_use, note_reg_set, note_reg_clobber, note_mem_dep,
3856         note_dep): New functions.
3857         (ds_to_dt, extend_deps_reg_info, maybe_extend_reg_info_p): New
3858         functions.
3859         (init_deps): Initialize last_reg_pending_barrier and deps->readonly.
3860         (free_deps): Initialize deps->reg_last.
3861         (sched_analyze_reg, sched_analyze_1, sched_analyze_2,
3862         sched_analyze_insn): Update to use dependency hooks infrastructure
3863         and readonly contexts.
3864         (deps_analyze_insn): New function.  Move part of logic from ...
3865         (sched_analyze): ... here.  Also move some logic to ...
3866         (deps_start_bb): ... here.  New function.
3867         (add_forw_dep, delete_forw_dep): Guard use of INSN_DEP_COUNT with
3868         sel_sched_p.
3869         (sched_deps_init): New function.  Move code from ...
3870         (init_dependency_caches): ... here.  Remove.
3871         (init_deps_data_vector): New.
3872         (sched_deps_finish): New function.  Move code from ...
3873         (free_dependency_caches): ... here.  Remove.
3874         (init_deps_global, finish_deps_global): Adjust for use with
3875         selective scheduling.
3876         (get_dep_weak): Move logic to ...
3877         (get_dep_weak_1): New function.
3878         (ds_merge): Move logic to ...
3879         (ds_merge_1): New static function.
3880         (ds_full_merge, ds_max_merge, ds_get_speculation_types): New functions.
3881         (ds_get_max_dep_weak): New function.
3882         * sched-ebb.c (sched_n_insns): Rename to sched_rgn_n_insns.
3883         (n_insns): Rename to rgn_n_insns.
3884         (debug_ebb_dependencies): New function.
3885         (init_ready_list): Use it.
3886         (begin_schedule_ready): Use sched_init_only_bb.
3887         (ebb_print_insn): Indicate when an insn starts a new cycle.
3888         (contributes_to_priority, compute_jump_reg_dependencies,
3889         add_remove_insn, fix_recovery_cfg): Add ebb_ prefix to function names.
3890         (add_block1): Remove to ebb_add_block.
3891         (ebb_sched_deps_info, ebb_common_sched_info): New variables.
3892         (schedule_ebb): Initialize them.  Use remove_notes instead of
3893         rm_other_notes.  Use haifa_local_init/finish.
3894         (schedule_ebbs): Use haifa_sched_init/finish.
3895         * sched-int.h: Include vecprim.h, remove rtl.h.
3896         (struct ready_list): Delete declaration.
3897         (sched_verbose_param, enum sched_pass_id_t,
3898         bb_vec_t, insn_vec_t, rtx_vec_t): New.
3899         (struct sched_scan_info_def): New structure.
3900         (sched_scan_info, sched_scan, sched_init_bbs,
3901         sched_init_luids, sched_finish_luids, sched_extend_target,
3902         haifa_init_h_i_d, haifa_finish_h_i_d): Declare.
3903         (struct common_sched_info_def): New.
3904         (common_sched_info, haifa_common_sched_info,
3905         sched_emulate_haifa_p): Declare.
3906         (sel_sched_p): New.
3907         (sched_luids): Declare.
3908         (INSN_LUID, LUID_BY_UID, SET_INSN_LUID): Declare.
3909         (sched_max_luid, insn_luid): Declare.
3910         (note_list, remove_notes, restore_other_notes, bb_note): Declare.
3911         (sched_insns_init, sched_insns_finish, xrecalloc, reemit_notes,
3912         print_insn, print_pattern, print_value, haifa_classify_insn,
3913         sel_find_rgns, sel_mark_hard_insn, dfa_state_size, advance_state,
3914         setup_sched_dump, sched_init, sched_finish,
3915         sel_insn_is_speculation_check): Export.
3916         (struct ready_list): Move from haifa-sched.c.
3917         (ready_try, ready, max_issue): Export.
3918         (ebb_compute_jump_reg_dependencies, find_fallthru_edge,
3919         sched_init_only_bb, sched_split_block, sched_split_block_1,
3920         sched_create_empty_bb, sched_create_empty_bb_1,
3921         sched_create_recovery_block, sched_create_recovery_edges): Export.
3922         (enum reg_pending_barrier_mode): Export.
3923         (struct deps): New fields `last_reg_pending_barrier' and `readonly'.
3924         (deps_t): New.
3925         (struct sched_info): Rename to haifa_sched_info.  Use const_rtx for
3926         print_insn field.  Move add_block and fix_recovery_cfg to
3927         common_sched_info_def.  Move compute_jump_reg_dependencies,
3928         use_cselib  ...
3929         (struct sched_deps_info_def): ... this new structure.
3930         (sched_deps_info): Declare.
3931         (struct spec_info_def): Remove weakness_cutoff, add
3932         data_weakness_cutoff and control_weakness_cutoff.
3933         (spec_info): Declare.
3934         (struct _haifa_deps_insn_data): Split from haifa_insn_data.  Add
3935         dep_count field.
3936         (struct haifa_insn_data): Rename to struct _haifa_insn_data.
3937         (haifa_insn_data_def, haifa_insn_data_t): New typedefs.
3938         (current_sched_info): Change type to struct haifa_sched_info.
3939         (haifa_deps_insn_data_def, haifa_deps_insn_data_t): New typedefs.
3940         (h_d_i_d): New variable.
3941         (HDID): New accessor macro.
3942         (h_i_d): Change type to VEC (haifa_insn_data_def, heap) *.
3943         (HID): New accessor macro.  Rewrite h_i_d accessor macros through HID
3944         and HDID.
3945         (IS_SPECULATION_CHECK_P): Update for selective scheduler.
3946         (enum SCHED_FLAGS): Update for selective scheduler.
3947         (enum SPEC_SCHED_FLAGS): New flag SEL_SCHED_SPEC_DONT_CHECK_CONTROL.
3948         (init_dependency_caches, free_dependency_caches): Delete declarations.
3949         (deps_analyze_insn, remove_from_deps, get_dep_weak_1,
3950         estimate_dep_weak, ds_full_merge, ds_max_merge, ds_weak,
3951         ds_get_speculation_types, ds_get_max_dep_weak, sched_deps_init,
3952         sched_deps_finish, haifa_note_reg_set, haifa_note_reg_use,
3953         haifa_note_reg_clobber, maybe_extend_reg_info_p, deps_start_bb,
3954         ds_to_dt): Export.
3955         (rm_other_notes): Delete declaration.
3956         (schedule_block): Remove one argument.
3957         (cycle_issued_insns, issue_rate, dfa_lookahead, ready_sort,
3958         ready_element, ready_lastpos, sched_extend_ready_list,
3959         sched_finish_ready_list, sched_change_pattern, sched_speculate_insn,
3960         concat_note_lists): Export.
3961         (struct region): Move from sched-rgn.h.
3962         (nr_regions, rgn_table, rgn_bb_table, block_to_bb, containing_rgn,
3963         RGN_NR_BLOCKS, RGN_BLOCKS, RGN_DONT_CALC_DEPS, RGN_HAS_REAL_EBB,
3964         BLOCK_TO_BB, CONTAINING_RGN): Export.
3965         (ebb_head, BB_TO_BLOCK, EBB_FIRST_BB, EBB_LAST_BB, INSN_BB): Likewise.
3966         (current_nr_blocks, current_blocks, target_bb): Likewise.
3967         (dep_cost_1, sched_is_disabled_for_current_region_p, sched_rgn_init,
3968         sched_rgn_finish, rgn_setup_region, sched_rgn_compute_dependencies,
3969         sched_rgn_local_init, extend_regions,
3970         rgn_make_new_region_out_of_new_block, compute_priorities,
3971         debug_rgn_dependencies, free_rgn_deps, contributes_to_priority,
3972         extend_rgns, deps_join rgn_setup_common_sched_info,
3973         rgn_setup_sched_infos, debug_regions, debug_region, dump_region_dot,
3974         dump_region_dot_file, haifa_sched_init, haifa_sched_finish): Export.
3975         (get_rgn_sched_max_insns_priority, sel_add_to_insn_priority,
3976         increase_insn_priority): Likewise.
3977         * sched-rgn.c: Include sel-sched.h.
3978         (ref_counts): New static variable.  Use it ...
3979         (INSN_REF_COUNT): ... here.  Rewrite and move closer to uses.
3980         (FED_BY_SPEC_LOAD, IS_LOAD_INSN): Rewrite to use HID accessor macro.
3981         (sched_is_disabled_for_current_region_p): Delete static declaration.
3982         (struct region): Move to sched-int.h.
3983         (nr_regions, rgn_table, rgn_bb_table, block_to_bb, containing_rgn,
3984         ebb_head): Define and initialize.
3985         (RGN_NR_BLOCKS, RGN_BLOCKS, RGN_DONT_CALC_DEPS, RGN_HAS_REAL_EBB,
3986         BLOCK_TO_BB, CONTAINING_RGN, debug_regions, extend_regions,
3987         BB_TO_BLOCK, EBB_FIRST_BB, EBB_LAST_BB): Move to
3988         sched-int.h.
3989         (find_single_block_region): Add new argument to indicate that EBB
3990         regions should be constructed.
3991         (debug_live): Delete declaration.
3992         (current_nr_blocks, current_blocks, target_bb):
3993         Remove static qualifiers.
3994         (compute_dom_prob_ps, check_live, update_live, set_spec_fed): Delete
3995         declaration.
3996         (init_regions): Delete declaration.
3997         (debug_region, bb_in_region_p, dump_region_dot_file, dump_region_dot,
3998         rgn_estimate_number_of_insns): New.
3999         (too_large): Use estimate_number_of_insns.
4000         (haifa_find_rgns): New. Move the code from ...
4001         (find_rgns): ... here.  Call either sel_find_rgns or haifa_find_rgns.
4002         (free_trg_info): New.
4003         (compute_trg_info): Allocate candidate tables here instead of ...
4004         (init_ready_list): ... here.
4005         (rgn_print_insn): Use const_rtx.
4006         (contributes_to_priority, extend_regions): Delete static declaration.
4007         (add_remove_insn, fix_recovery_cfg): Add rgn_ to function names.
4008         (add_block1): Rename to rgn_add_block.
4009         (debug_rgn_dependencies): Delete static qualifier.
4010         (new_ready): Use sched_deps_info.  Simplify.
4011         (rgn_common_sched_info, rgn_const_sched_deps_info,
4012         rgn_const_sel_sched_deps_info, rgn_sched_deps_info, rgn_sched_info):
4013         New.
4014         (region_sched_info): Rename to rgn_const_sched_info.
4015         (deps_join): New, extracted from ...
4016         (propagate_deps): ... here.
4017         (compute_block_dependences, debug_dependencies): Update for selective
4018         scheduling.
4019         (free_rgn_deps, compute_priorities): New functions.
4020         (sched_rgn_init, sched_rgn_finish, rgn_setup_region,
4021         sched_rgn_compute_dependencies): New functions.
4022         (schedule_region): Use them.
4023         (sched_rgn_local_init, sched_rgn_local_free, sched_rgn_local_finish,
4024         rgn_setup_common_sched_info, rgn_setup_sched_infos):
4025         New functions.
4026         (schedule_insns): Call new functions that were split out.
4027         (rgn_make_new_region_out_of_new_block): New.
4028         (get_rgn_sched_max_insns_priority): New.
4029         (rest_of_handle_sched, rest_of_handle_sched2): Call selective
4030         scheduling when appropriate.
4031         * sched-vis.c: Include insn-attr.h.
4032         (print_value, print_pattern): Make global.
4033         (print_rtl_slim, debug_bb_slim, debug_bb_n_slim): New functions.
4034         * target-def.h (TARGET_SCHED_ADJUST_COST_2,
4035         TARGET_SCHED_ALLOC_SCHED_CONTEXT, TARGET_SCHED_INIT_SCHED_CONTEXT,
4036         TARGET_SCHED_SET_SCHED_CONTEXT, TARGET_SCHED_CLEAR_SCHED_CONTEXT,
4037         TARGET_SCHED_FREE_SCHED_CONTEXT, TARGET_SCHED_GET_INSN_CHECKED_DS,
4038         TARGET_SCHED_GET_INSN_SPEC_DS, TARGET_SCHED_SKIP_RTX_P): New target
4039         hooks.  Initialize them to 0.
4040         (TARGET_SCHED_GEN_CHECK): Rename to TARGET_SCHED_GEN_SPEC_CHECK.
4041         * target.h (struct gcc_target): Add them.  Rename gen_check field to
4042         gen_spec_check.
4043         * flags.h (sel_sched_switch_set): Declare.
4044         * opts.c (sel_sched_switch_set): New variable.
4045         (decode_options): Unset flag_sel_sched_pipelining_outer_loops if
4046         pipelining is disabled from command line.
4047         (common_handle_option): Record whether selective scheduling is
4048         requested from command line.
4049         * doc/invoke.texi: Document new flags and parameters.
4050         * doc/tm.texi: Document new target hooks.
4051         * config/ia64/ia64.c (TARGET_SCHED_GEN_SPEC_CHECK): Define to
4052         ia64_gen_check.
4053         (dfa_state_size): Do not declare locally.
4054         * config/ia64/ia64.opt (msched-ar-data-spec): Default to 0.
4055         * config/rs6000/rs6000.c (rs6000_init_sched_context,
4056         rs6000_alloc_sched_context, rs6000_set_sched_context,
4057         rs6000_free_sched_context): New functions.
4058         (struct _rs6000_sched_context): New.
4059         (rs6000_sched_reorder2): Do not modify INSN_PRIORITY for selective
4060         scheduling.
4061         (rs6000_sched_finish): Do not run for selective scheduling.
4062
4063 2008-08-31  Jan Hubicka  <jh@suse.cz>
4064
4065         * frv.c (frv_rtx_costs): Update forward declaration.
4066         * spu.c (spu_rtx_costs): Likewise.
4067         * pdp11.c: Include df.h
4068         (pdp11_output_function_epilogue): Use df_set_regs_ever_live.
4069         * m68hc11.c (m68hc11_gen_highpart): Fix call of gen_rtx_SUBREG.
4070         (m68hc11_rtx_costs_1): Fix call of rtx_cost.
4071         * iq2000.c (iq2000_address_cost): Add speed argument.
4072         (iq2000_rtx_costs): Likewise.
4073         * mn10300.c (mn10300_address_cost_1): Remove speed argument;
4074         update call of mn10300_address_cost.
4075         * mcore.c: Include df.h
4076         (mcore_rtx_costs): Update prototype.
4077         * score3.c: Include df.h
4078         (score3_rtx_costs): Remove speed argument.
4079         * score7.c: Include df.h
4080         (score7_address_cost): Remove speed argument.
4081         * score-protos.h (score_address_cost): Update prototype.
4082         * score.c: Include df.h
4083         (score_rtx_costs): Update call of costs functions.
4084         * v850.c (v850_rtx_costs): Add bool argument.
4085
4086 2008-08-31  Hans-Peter Nilsson  <hp@axis.com>
4087
4088         * config/cris/cris.c (cris_rtx_costs): Correct call to rtx_costs.
4089
4090 2008-08-31  Aaron W. LaFramboise  <aaronavay62@aaronwl.com>
4091
4092         * gthr-win32.h (__gthread_setspecific): Use CONST_CAST2.
4093         * config/i386/gthr-win32.c (__gthread_setspecific): Same.
4094
4095 2008-08-31  Aaron W. LaFramboise  <aaronavay62@aaronwl.com>
4096
4097         * mkmap-flat.awk: Add option pe_dll.
4098         * config/i386/t-cygming (SHLIB_LINK): Support building libgcc_s.
4099         * config/i386/t-cygwin (SHLIB_LC): Add.
4100         * config/i386/t-mingw32 (SHLIB_LC): Add.
4101         * config/i386/mingw32.h (SHARED_LIBGCC_UNDEFS_SPEC): New.
4102         (SUBTARGET_EXTRA_SPECS): Use SHARED_LIBGCC_UNDEFS_SPEC.
4103         (LINK_SPEC): Support libgcc_s.
4104         (LIBGCC_SPEC): Support libgcc_s.
4105         (LIBGCC_SONAME): New.
4106
4107 2008-08-31  Jan Hubicka  <jh@suse.cz>
4108
4109         * predict.c (maybe_hot_bb_p, maybe_hot_edge_p): Previous commit
4110         mistakely had old version of patch.
4111
4112         * ipa-cp.c (ipcp_need_original_clone_p): Remove.
4113         (ipcp_estimate_growth): New.
4114         (ipcp_insert_stage): Use ipcp_estimate_growth.
4115         * profile.c (branch_prob): When reading failed, do not consider
4116         profile as read.
4117
4118 2008-08-31  Jan Hubicka  <jh@suse.cz>
4119
4120         * tree-ssa-loop-unswitch.c (tree_unswitch_single_loop): Check that
4121         loop is optimized for speed.
4122
4123 2008-08-31  Richard Guenther  <rguenther@suse.de>
4124
4125         PR middle-end/37289
4126         * fold-const.c (fold_binary): Retain conversions in folding
4127         ~A + 1 to -A.
4128
4129 2008-08-31  Jan Hubicka  <jh@suse.cz>
4130
4131         * postreload-gcse.c (eliminate_partially_redundant_loads):
4132         Use optimize_bb_for_size_p.
4133         * predict.c (maybe_hot_frequency_p): Make inline.
4134         (maybe_hot_count_p): Break out from ...
4135         (maybe_hot_bb_p): ... this one.
4136         (maybe_hot_edge_p): Simplify.
4137         * basic-block.h (probably_cold_bb_p): Remove.
4138
4139 2008-08-31  Jakub Jelinek  <jakub@redhat.com>
4140
4141         PR target/37168
4142         * config/rs6000/rs6000-protos.h (const_vector_elt_as_int): Add
4143         prototype.
4144         * config/rs6000/rs6000.c (const_vector_elt_as_int): No longer static.
4145         * config/rs6000/altivec.md (easy_vector_constant_add_self splitter):
4146         Also split V4SFmode.
4147         * config/rs6000/predicates.md (easy_vector_constant_add_self): Handle
4148         vector float modes.
4149
4150 2008-08-31  Jan Hubicka  <jh@suse.cz>
4151
4152         * predict.c (PROB_VERY_LIKELY): Make small enough so things
4153         become cold.
4154         * predict.def (PRED_NORETURN_CALL, PRED_COLD_CALL): Use it.
4155
4156 2008-08-31  Jakub Jelinek  <jakub@redhat.com>
4157
4158         PR debug/37287
4159         * dwarf2out.c (gen_namespace_die): For DECL_EXTERNAL modules don't
4160         add source coords.
4161
4162         * dwarf2out.c (native_encode_initializer): Subtract min_index for
4163         non-range array index.  Handle VIEW_CONVERT_EXPR and NON_LVALUE_EXPR.
4164
4165 2008-08-31  Jan Hubicka  <jh@suse.cz>
4166
4167         * sparc.h (BRANCH_COST): Fix macro definition.
4168         * avr.c (avr_operand_rtx_cost): Add speed argument.
4169         (avr_rtx_costs): Update calls of avr_operand_rtx_cost.
4170
4171 2008-08-31  Richard Guenther  <rguenther@suse.de>
4172
4173         * tree-cfg.c (verify_types_in_gimple_assign): Dump mismatched
4174         types instead of operands.  Re-instantiate verifying of
4175         binary expression operands.
4176
4177 2008-08-30  Jan Hubicka  <jh@suse.cz>
4178
4179         * fwprop.c (should_replace_address): Add speed attribute.
4180         (PR_OPTIMIZE_FOR_SPEED): New flag.
4181         (propagate_rtx_1): Use it.
4182         (propagate_rtx): Set it.
4183         (try_fwprop_subst): Update call of rtx_costs.
4184         (forward_propagate_and_simplify): LIkewise.
4185         * hooks.c (hook_int_rtx_bool_0): New
4186         (hook_bool_rtx_int_int_intp_false): Replace by ...
4187         (hook_bool_rtx_int_int_intp_bool_false): .. thisone.
4188         * hooks.h (hook_int_rtx_bool_0): New
4189         (hook_bool_rtx_int_int_intp_false): Replace by ...
4190         (hook_bool_rtx_int_int_intp_bool_false): .. thisone.
4191         * optabs.c (avoid_expensive_constant): UPdate call of rtx_cost.
4192         (prepare_cmp_insn): UPdate call of rtx_cost.
4193         * postreload.c (reload_cse_simplify_set): Update call of rtx_cost.
4194         (reload_cse_simplify_operands): Update call of rtx_cost.
4195         (reload_cse_move2add): call of rtx_cost.
4196         * target.h (struct gcc_target): Update rtx_costs and address_costs.
4197         * rtlanal.c (rtx_cost): Add speed argument.
4198         (address_cost): Add speed argument
4199         (default_address_cost): Likewise.
4200         (insn_rtx_cost): Likewise.
4201         * cfgloopanal.c (seq_cost): Add speed argument.
4202         (target_reg_cost, target_spill_cost): Turn to array.
4203         (init_set_costs): Update for speed.
4204         (estimate_reg_pressure_cost): Add speed argument.
4205         * auto-inc-dec.c (attempt_change): Update call of rtx_cost.
4206         * dojump.c (prefer_and_bit_test): UPdate call of rtx_cost.
4207         * tree-ssa-loop-ivopts.c (struct ivopts_data): New field speed.
4208         (seq_cost): Add speed argument.
4209         (computation_cost): Add speed arugment.
4210         (add_cost, multiply_by_const, get_address_cost): add speed argument.
4211         (force_expr_to_var_cost): Update for profile info.
4212         (force_var_cost): Likewise.
4213         (split_address_cost): Likewise.
4214         (ptr_difference_cost): Likewise.
4215         (difference_cost): Likewise.
4216         (get_computation_cost_at): Likewise.
4217         (determine_iv_cost): Likewise.
4218         (ivopts_global_cost_for_size): Likewise.
4219         (rewrite_use_address): Likewise.
4220         (tree_ssa_iv_optimize_loop): Initialize speed field.
4221         * cse.c (optimize_this_for_speed_p): New static var.
4222         (notreg_cost): Update call of rtx_cost.
4223         (cse_extended_basic_block): set optimize_this_for_speed_p.
4224         * ifcvt.c (cheap_bb_rtx_cost_p): Update call of rtx_cost.
4225         (noce_try_cmove_arith): Likewise.
4226         (noce_try_sign_mask): LIkewise.
4227         * expr.c (compress_float_constant): Update rtx_cost calls.
4228         * tree-ssa-address.c (most_expensive_mult_to_index): Add speed
4229         argument.
4230         (addr_to_parts): Likewise.
4231         (create_mem_ref): Likewise.
4232         * dse.c (find_shift_sequence): Add speed argument.
4233         (replace_read): Update call.
4234         * calls.c (precompute_register_parameters): Update call of rtx_cost.
4235         * expmed.c (sdiv_pow2_cheap, smod_pow2_cheap, zero_cost, add_cost,
4236         * neg_cost, shift_cost, shiftadd_cost,
4237         shiftsub_cost, mul_cost, sdiv_cost, udiv_cost ,mul_widen_cost,
4238         mul_highpart_cost): Increase dimension.
4239         (init_expmed): Initialize for both size and speed.
4240         (expand_shift): Use profile.
4241         (synth_mult): Use profile.
4242         (choose_mult_variant): Use profile.
4243         (expand_mult): Use profile.
4244         (expand_mult_highpart_optab): Use profile.
4245         (expand_mult_highpart): Use profile.
4246         (expand_smod_pow2): Use profile.
4247         (expand_divmod): Use profile.
4248         * simplify-rtx.c (simplify_binary_operation_1): Update call of
4249         rtx_cost.
4250         * loop-invariant.c (create_new_invariant): Use profile.
4251         (gain_for_invariant): Add speed parameter.
4252         (best_gain_for_invariant): Likewise.
4253         (find_invariants_to_move): Likewise.
4254         (move_single_loop_invariants): Set it.
4255         * target-def.h (TARGET_RTX_COSTS): Use hook.
4256         * rtl.h (rtx_cost, address_cost, insn_rtx_cost): Update prototpe.
4257         (optimize_insn_for_size_p, optimize_insn_for_speed_p): Declare.
4258         * output.h (default_address_cost): Update prototype.
4259         * combine.c (optimize_this_for_speed_p): New static var.
4260         (combine_validate_cost): Update call of rtx_cost.
4261         (combine_instructions): Set optimize_this_for_speed_p.
4262         (expand_compound_operation): Update call of rtx_cost.
4263         (make_extraction):Update call of rtx_cost.
4264         (force_to_mode):Update call of rtx_cost.
4265         (distribute_and_simplify_rtx):Update call of rtx_cost.
4266         * cfgloop.h (target_reg_cost, target_spill_cost): Turn to array.
4267         (estimate_reg_pressure_cost): Update prototype.
4268         * tree-flow.h (multiply_by_cost, create_mem_ref): Update prototype.
4269         * basic-block.h (optimize_insn_for_size_p, optimize_insn_for_speed_p):
4270         Remove.
4271         * config/alpha/alpha.c (alpha_rtx_costs): Update.
4272         (alpha_rtx_costs): Update.
4273         * config/frv/frv.c (frv_rtx_costs): Update.
4274         * config/s390/s390.c (s390_rtx_costs): Update.
4275         * config/m32c/m32c.c (m32c_memory_move_cost): Update.
4276         (m32c_rtx_costs): Update.
4277         * config/spu/spu.c (TARGET_ADDRESS_COST): Upate.
4278         (spu_rtx_costs): Update.
4279         * config/sparc/sparc.c (sparc_rtx_costs): Update.
4280         * config/m32r/m32r.c (m32r_rtx_costs): Update.
4281         * config/i386/i386.c (:ix86_address_cost): Update.
4282         (ix86_rtx_costs): Update.
4283         * config/sh/sh.c (sh_rtx_costs, sh_address_cost): Update.
4284         * config/pdp11/pdp11.c (pdp11_rtx_costs): Update.
4285         * config/avr/avr.c (avr_rtx_costs, avr_address_cost): Update.
4286         * config/crx/crx.c (crx_address_cost): Update.
4287         * config/xtensa/xtensa.c (xtensa_rtx_costs): Update.
4288         * config/stormy16/stormy16.c
4289         (xstormy16_address_cost, xstormy16_rtx_costs): Update.
4290         * config/m68hc11/m68hc11.c
4291         (m68hc11_address_cost, m68hc11_rtx_costs): Update.
4292         * config/cris/cris.c (cris_rtx_costs, cris_address_cost): Update.
4293         * config/iq2000/iq2000.c (iq2000_rtx_costs, iq2000_address_cost):
4294         Update.
4295         * config/mn10300/mn10300.c (mn10300_address_cost, mn10300_rtx_costs):
4296         Update
4297         * config/ia64/ia64.c (ia64_rtx_costs): Update.
4298         * config/m68k/m68k.c (m68k_rtx_costs): Update.
4299         * config/rs6000/rs6000.c (rs6000_rtx_costs): Update.
4300         * config/arc/arc.c (arc_rtx_costs, arc_address_cost): Update.
4301         * config/mcore/mcore.c (TARGET_ADDRESS_COST): Update.
4302         (mcore_rtx_costs): update.
4303         * config/score/score3.c (score3_rtx_costs): Update.
4304         * config/score/score7.c (score7_rtx_costs): Update.
4305         * config/score/score3.h (score3_rtx_costs):Update.
4306         * config/score/score7.h (score7_rtx_costs): Update.
4307         * config/score/score.c (score_rtx_costs): Update.
4308         * config/arm/arm.c (arm_address_cost): Update.
4309         (arm_rtx_costs_1): Update.
4310         (arm_rtx_costs_1): Update.
4311         (arm_size_rtx_costs): Update.
4312         (arm_size_rtx_costs): Update.
4313         (arm_size_rtx_costs): Update.
4314         (arm_xscale_rtx_costs): Update.
4315         (arm_thumb_address_cost): Update.
4316         * config/pa/pa.c (hppa_address_cost): Update.
4317         * config/mips/mips.c (mips_rtx_costs): Update.
4318         * config/vax/vax.c (vax_address_cost): Update.
4319         * config/h8300/h8300.c (h8300_shift_costs): Update.
4320         (h8300_rtx_costs): Update.
4321         * config/v850/v850.c (TARGET_ADDRESS_COST): Update.
4322         (v850_rtx_costs): Update.
4323         * config/mmix/mmix.c (mmix_rtx_costs, mmix_rtx_costs): Update.
4324         * config/bfin/bfin.c
4325         (bfin_address_cost): Update.
4326         (bfin_rtx_costs): Update.
4327         * stmt.c (lshift_cheap_p): Update.
4328
4329 2008-08-30  Andrew Pinski  <andrew_pinski@playstation.sony.com>
4330
4331         PR middle-end/36444
4332         * expmed.c (extract_bit_field_1): Check the mode size to make
4333         sure the vector modes have the same size.
4334
4335 2008-08-29  Michael Meissner  <gnu@the-meissners.org>
4336
4337         * dojump.c (top level): Include basic-block.h to declare
4338         optimize_insn_for_speed_p
4339
4340         * Makefile.in (dodump.h): Add $(BASIC_BLOCK_H) dependency.
4341
4342         * opts.h (CL_SAVE): New option class for marking options that are
4343         target specific options usable in the target attribute.
4344         (CL_MIN_OPTION_CLASS): CL_SAVE is now the minimum option.
4345
4346         * opt-functions.awk (switch_flags): Add CL_SAVE flag so backends
4347         can easily find the target specific options that are safe to use
4348         in the attribute or pragma.
4349
4350         * attribs.c (decl_attributes): Change #pragma GCC option to
4351         #pragma GCC target, and attribute((option(...))) to
4352         attribute((target(...))).
4353
4354         * doc/extend.texi (target attribute): Change from option
4355         attribute.  Delete push/pop/reset.
4356         (#pragma GCC target): Change from #pragma GCC option.  Delete
4357         push/pop/reset.
4358         (#pragma GCC push_options): Document new pragma.
4359         (#pragma GCC pop_options): Document new pragma.
4360         (#pragma GCC reset_options): Document new pragma.
4361
4362         * targhooks.c (default_target_option_valid_attribute_p): Add
4363         warning about port not supporting target attributes.
4364         (default_target_option_pragma_parse): New function, warn about
4365         #pragma GCC target not being supported.
4366
4367         * targhooks.h (default_target_option_pragma_parse): Add
4368         declaration.
4369
4370         * tree.h (TI_CURRENT_TARGET_PRAGMA): Rename from
4371         TI_CURRENT_OPTION_PRAGMA.
4372         (current_target_pragma): Rename from current_option_pragma.
4373
4374         * target.h: (struct target_option): Delete booleans for changing
4375         the optimization level on hot/cold functions.  Change signature of
4376         pragma_parse hook to take a second tree.
4377
4378         * c-tree.h (c_builtin_function_ext_scope): Add declaration.
4379
4380         * c-decl.c (c_builtin_function_ext_scope): New function, guarantee
4381         that the declaration is done at global scope.
4382
4383         * langhooks.c (add_builtin_function_common): Move most of the code
4384         from add_builtin_function here, calling the hook passed in.
4385         (add_builtin_function): Call add_builtin_function_common with
4386         standard builtin hook.
4387         (add_builtin_function_ext_scope): New function to add builtins to
4388         global scope.
4389
4390         * langhooks.h (struct lang_hooks): Add builtin_function_ext_scope
4391         hook.
4392         (add_builtin_function_ext_scope): Add declaration.
4393
4394         * c-pragma.c (handle_pragma_target): Rename from
4395         handle_pragma_option, #pragma GCC option is now #pragma GCC
4396         target.  Move warning about port not supporting target options to
4397         default pragma parse hook.  Remove push/pop/reset from this
4398         pragma.
4399         (handle_pragma_optimize): Remove push/pop/reset from this pragma.
4400         (option_stack): Delete static variable.
4401         (optimize_stack): Ditto.
4402         (optons_stack): New stack of saved target and optimization
4403         options.
4404         (handle_pragma_push_options): New function to handle pushing both
4405         target and optimization options.
4406         (handle_pragma_pop_options): New function to handle popping both
4407         target and optimization options.
4408         (handle_pragma_reset_options): New function to handle resetting
4409         both target and optimization options to their initial state.
4410         (init_pragma): Rename handle_pragma_option to
4411         handle_pragma_target.  Add support for push_options, pop_options,
4412         and reset_options pragmas.
4413
4414         * target-def.h (TARGET_OPTION_PRAGMA_PARSE): Change default to
4415         default_target_option_pragma_parse.
4416         (TARGET_OPTION_VALID_ATTRIBUTE_P): Change default to
4417         default_target_option_valid_attribute_p.
4418         (TARGET_OPTION_COLD_ATTRIBUTE_SETS_OPTIMIZATION): Delete.
4419         (TARGET_OPTION_HOT_ATTRIBUTE_SETS_OPTIMIZATION): Ditto.
4420         (TARGET_OPTION_HOOKS): Delete the fields for whether to change
4421         optimization level on hot/cold functions.
4422
4423         * tree-inline.c (tree_can_inline_p): Disable suppressing inlining
4424         if the caller and callee have different optimization levels.
4425
4426         * c-common.c (handle_target_attribute): Rename from
4427         handle_option_attribute, attribute((option(...))) is now
4428         attribute((target(...))).  Move warning if the port does not
4429         support target attributes to the default hook.
4430         (handle_hot_attribute): Delete code to change the optimization
4431         level of hot functions.
4432         (handle_cold_attribute): Ditto.
4433
4434         * config/i386/i386-c.c (ix86_pragma_target_parse): Take a second
4435         argument that is the binary tree options to use if there are no
4436         arguments.  Call ix86_valid_target_attribute_tree instead of
4437         ix86_valid_option_attribute_tree.
4438         (ix86_pragma_target_parse): Rename from ix86_pragma_option_parse.
4439         (ix86_register_pragmas): Use ix86_pragma_target_parse instead of
4440         ix86_pragma_option_parse.
4441
4442         * config/i386/i386-protos.h (ix86_valid_target_attribute_tree):
4443         Rename from ix86_valid_option_attribute_tree.
4444
4445         * config/i386/i386.c (ix86_add_new_builtins): New function to add
4446         new builtins when the ISA changes.
4447         (ix86_valid_target_attribute_tree): Rename from
4448         ix86_valid_option_attribute_tree.  Change callers.  If the
4449         function specified optimization options, use those as the starting
4450         point before setting up the target attributes.  If the
4451         optimization options were changed in the course of setting the
4452         target attributes, record the new optimization options.
4453         (ix86_valid_target_attribute_tree_inner_p): Rename from
4454         ix86_valid_option_attribute_tree_inner_p.  Change callers.  Call
4455         ix86_add_new_builtins if the ISA changed.
4456         (ix86_valid_target_attribute_p): Rename from
4457         ix86_valid_option_attribute_p.  Change callers.
4458         (enum ix86_builtins): Add IX86_BUILTIN_PCMOV to allow both
4459         __builtin_ia32_pcmov and __builtin_ia32_pcmov_v2di to be declared
4460         as delayed builtin functions.
4461         (struct builtin_isa): New structure to record builtin functions
4462         that should be delayed until the ISA for that function is used.
4463         (ix86_builtins_isa): Change from int to struct to track builtin
4464         functions we want to declare at some point.
4465         (def_builtin): If the front end can delay defining the builtin
4466         functions, don't create builtins for ISAs not part of the default
4467         options.
4468         (def_builtin_const): Ditto.
4469         (bdesc_multi_arg): Declare __builtin_ia32_pcmov and
4470         __builtin_ia32_pcmov_v2di to be different builtin functions.
4471         (ix86_expand_builtin): Changes due to ix86_builtins_isa now being
4472         a structure instead of an int.
4473         (TARGET_OPTION_VALID_ATTRIBUTE_P): Use
4474         ix86_valid_target_attribute_p, not ix86_valid_option_attribute_p.
4475         (TARGET_OPTION_COLD_ATTRIBUTE_SETS_OPTIMIZATION): Delete.
4476         (TARGET_OPTION_HOT_ATTRIBUTE_SETS_OPTIMIZATION): Ditto.
4477
4478         * config/ia64/ia64.h
4479         (TARGET_OPTION_COLD_ATTRIBUTE_SETS_OPTIMIZATION): Delete.
4480         (TARGET_OPTION_HOT_ATTRIBUTE_SETS_OPTIMIZATION): Ditto.
4481
4482         * langhooks-def.h (LANG_HOOKS_BUILTIN_FUNCTION_EXT_SCOPE): New
4483         hook, default to being the same as LANG_HOOKS_BUILTIN_FUNCTION.
4484         (LANG_HOOKS_INITIALIZER): Add
4485         LANG_HOOKS_BUILTIN_FUNCTION_EXT_SCOPE hook.
4486
4487 2008-08-30  Kaz Kojima  <kkojima@gcc.gnu.org>
4488
4489         PR target/37270
4490         * config/sh/sh.h (LEGITIMIZE_RELOAD_ADDRESS): Generate
4491         the reload address with the index register for SFmode
4492         access with a displacement.
4493
4494 2008-08-30  Jan Hubicka  <jh@suse.cz>
4495
4496         * optabs.c (expand_abs_nojump): Update BRANCH_COST call.
4497         * fold-cost.c (LOGICAL_OP_NON_SHORT_CIRCUIT, fold_truthop): Likewise.
4498         * dojump.c (do_jump): Likewise.
4499         * ifcvt.c (MAX_CONDITIONAL_EXECUTE): Likewise.
4500         (note-if_info): Add BRANCH_COST.
4501         (noce_try_store_flag_constants, noce_try_addcc,
4502         noce_try_store_flag_mask, noce_try_cmove_arith, noce_try_cmove_arith,
4503         noce_try_cmove_arith, noce_find_if_block, find_if_case_1,
4504         find_if_case_2): Use computed branch cost.
4505         * expr.h (BRANCH_COST): Update default.
4506         * predict.c (predictable_edge_p): New function.
4507         * expmed.c (expand_smod_pow2, expand_sdiv_pow2, emit_store_flag):
4508         Update BRANCH_COST call.
4509         * basic-block.h (predictable_edge_p): Declare.
4510         * config/alpha/alpha.h (BRANCH_COST): Update.
4511         * config/frv/frv.h (BRANCH_COST): Update.
4512         * config/s390/s390.h (BRANCH_COST): Update.
4513         * config/spu/spu.h (BRANCH_COST): Update.
4514         * config/sparc/sparc.h (BRANCH_COST): Update.
4515         * config/m32r/m32r.h (BRANCH_COST): Update.
4516         * config/i386/i386.h (BRANCH_COST): Update.
4517         * config/i386/i386.c (ix86_expand_int_movcc): Update use of
4518         BRANCH_COST.
4519         * config/sh/sh.h (BRANCH_COST): Update.
4520         * config/pdp11/pdp11.h (BRANCH_COST): Update.
4521         * config/avr/avr.h (BRANCH_COST): Update.
4522         * config/crx/crx.h (BRANCH_COST): Update.
4523         * config/xtensa/xtensa.h (BRANCH_COST): Update.
4524         * config/stormy16/stormy16.h (BRANCH_COST): Update.
4525         * config/m68hc11/m68hc11.h (BRANCH_COST): Update.
4526         * config/iq2000/iq2000.h (BRANCH_COST): Update.
4527         * config/ia64/ia64.h (BRANCH_COST): Update.
4528         * config/rs6000/rs6000.h (BRANCH_COST): Update.
4529         * config/arc/arc.h (BRANCH_COST): Update.
4530         * config/score/score.h (BRANCH_COST): Update.
4531         * config/arm/arm.h (BRANCH_COST): Update.
4532         * config/pa/pa.h (BRANCH_COST): Update.
4533         * config/mips/mips.h (BRANCH_COST): Update.
4534         * config/vax/vax.h (BRANCH_COST): Update.
4535         * config/h8300/h8300.h (BRANCH_COST): Update.
4536         * params.def (PARAM_PREDICTABLE_BRANCH_OUTCOME): New.
4537         * doc/invoke.texi (predictable-branch-cost-outcome): Document.
4538         * doc/tm.texi (BRANCH_COST): Update.
4539
4540 2008-08-30  Samuel Tardieu  <sam@rfc1149.net>
4541
4542         PR target/37283
4543         * config/arm/arm.c (arm_optimization_options): Set
4544         flag_section_anchors to 2 instead of 1 to distinguish it from
4545         -fsection-anchors given explicitely on the command line.
4546
4547 2008-08-30  Richard Sandiford  <rdsandiford@googlemail.com>
4548
4549         * recog.c (split_insn): Consider attaching a REG_EQUAL note to the
4550         final insn of a split.
4551
4552 2008-08-30  Jan Hubicka  <jh@suse.cz>
4553
4554         * postreload-gcse.c (gate_handle_gcse2): Disable for functions
4555         optimized for speed.
4556         * final.c (compute_alignments): Use optimize_bb_for_size_p.
4557         * tree-call-cdce.c (gate_call_cdce): Use optimize_function_for_speed_p.
4558         * opts.c (flag_predictive_commoning_set, flag_unswitch_loops_set,
4559         flag_gcse_after_reload_set): New static vars.
4560         (common_handle_option): Enable those flags for profile-use.
4561         (decode_options): Remove optimize_size flags that are handled
4562         on higher granuality.
4563         * tree-vectorizer.c (vectorize_loops): Use
4564         optimize_loop_nest_for_speed_p.
4565         * tree-ssa-pre.c (do_pre): Use optimize_function_for_speed_p.
4566         * tree-predcom.c (tree_predictive_commoning): Use
4567         optimize_loop_for_speed_p.
4568         * varasm.c (assemble_start_function): Use
4569         optimize_function_for_speed_p.
4570         * bb-reorder.c (rest_of_handle_reorder_blocks): Likewise.
4571         * predict.c (optimize_loop_for_speed_p): Fix walk.
4572
4573 2008-08-30  Jan Hubicka  <jh@suse.cz>
4574
4575         * ipa-inline.c (cgraph_estimate_growth): Discover self recursive
4576         functions.
4577         (cgraph_decide_inlining_of_small_function): Use edge->count to detect
4578         profile presence locally.
4579
4580 2008-08-29  Joseph Myers  <joseph@codesourcery.com>
4581
4582         PR bootstrap/37086
4583         * tree-vrp.c (find_switch_asserts): Make idx volatile for GCC
4584         versions before 4.0.
4585
4586 2008-08-29  Jan Hubicka  <jh@suse.cz>
4587
4588         * tree-inline.c (insert_init_stmt): Insert sequence even when
4589         not in SSA form.
4590
4591 2008-08-29  Jeff Law  <law@redhat.com>
4592
4593         * mn10300.c (mn10300_secondary_reload_class): We need secondary
4594         reloads for AM33-2 if IN is a pseudo with an equivalent memory
4595         location and class is an FP register.
4596
4597 2008-08-29  Jan Hubicka  <jh@suse.cz>
4598
4599         * see.c (see_merge_one_def_extension): Silence used uninitialized
4600         warning.
4601         * matrix-reorg.c (check_allocation_function): Likewise.
4602         * config/i386/driver-i386.c (detect_caches_amd): Likewise.
4603
4604 2008-08-29  Jakub Jelinek  <jakub@redhat.com>
4605
4606         PR c/37261
4607         * fold-const.c (fold_binary): In (X | C1) & C2 canonicalization
4608         compute new & and | in type rather than TREE_TYPE (arg0).
4609
4610         * dwarf2out.c (fortran_common): Update comment.
4611         (gen_variable_die): Swap com_die and var_die variables in Fortran
4612         COMMON block handling code.
4613
4614         * dwarf2out.c (descr_info_loc): Handle VAR_DECL.
4615
4616         * dwarf2out.c (gen_const_die): New function.
4617         (size_of_die, value_format, output_die): Output larger
4618         dw_val_class_vec using DW_FORM_block2 or DW_FORM_block4.
4619         (native_encode_initializer): New function.
4620         (tree_add_const_value_attribute): Call it.
4621         (gen_decl_die, dwarf2out_decl): Handle CONST_DECLs if is_fortran ().
4622
4623         * dwarf2out.c (gen_formal_parameter_die, gen_variable_die): For
4624         DECL_BY_REFERENCE decls don't pass TREE_READONLY and
4625         TREE_THIS_VOLATILE to add_type_attribute.
4626
4627         * dwarf2out.c (add_subscript_info): Stop on Fortran TYPE_STRING_FLAG
4628         types.
4629         (gen_array_type_die): Emit DW_TAG_string_type for Fortran character
4630         types.
4631
4632         * dwarf2out.c (loc_by_reference): New function.
4633         (add_location_or_const_value_attribute): Use it.
4634
4635         PR fortran/23057
4636         * dwarf2out.c (gen_variable_die): Represent Fortran COMMON vars
4637         as DW_TAG_variable children of DW_TAG_common_block rather than
4638         DW_TAG_member children.  Put DW_AT_external to individual
4639         DW_TAG_variable DIEs, not to DW_TAG_common_block.
4640
4641         * dwarf2out.c (add_bound_info): If lookup_decl_die failed, try
4642         loc_descriptor_from_tree_1.
4643
4644         PR fortran/29635
4645         PR fortran/23057
4646         * debug.h (struct gcc_debug_hooks): Add NAME and CHILD
4647         arguments to imported_module_or_decl.
4648         (debug_nothing_tree_tree): Removed.
4649         (debug_nothing_tree_tree_tree_bool): New prototype.
4650         * debug.c (do_nothing_debug_hooks): Adjust.
4651         (debug_nothing_tree_tree): Removed.
4652         (debug_nothing_tree_tree_tree_bool): New function.
4653         * dwarf2out.c (is_symbol_die): Handle DW_TAG_module.
4654         (gen_variable_die): Put all common vars for the
4655         same COMMON block under one DW_TAG_common_block.
4656         (declare_in_namespace): Return new context_die, for Fortran
4657         return the module DIE instead of adding extra declarations into
4658         the namespace.
4659         (gen_type_die_with_usage): Adjust declare_in_namespace caller.
4660         (gen_namespace_die): If is_fortran (), generate DW_TAG_module
4661         instead of DW_TAG_namespace.  If DECL_EXTERNAL is set, add
4662         DW_AT_declaration.
4663         (dwarf2out_global_decl): Don't skip Fortran global vars.
4664         (gen_decl_die): Likewise.  Adjust declare_in_namespace callers.
4665         (dwarf2out_imported_module_or_decl): Add NAME and CHILD arguments.
4666         If NAME is non-NULL, add DW_AT_name.  If CHILD is non-NULL, put
4667         DW_TAG_imported_declaration as child of previous
4668         DW_TAG_imported_module.
4669         * dbxout.c (dbx_debug_hooks, xcoff_debug_hooks): Adjust.
4670         * sdbout.c (sdb_debug_hooks): Likewise.
4671         * vmsdbgout.c (vmsdbg_debug_hooks): Likewise.
4672
4673 2008-08-29  Jan Hubicka  <jh@suse.cz>
4674
4675         * cgraph.c (cgraph_remove_node): Do not remove nested nodes.
4676
4677         * cgraph.h (cgraph_maybe_hot_edge_p): Declare.
4678         * ipa-cp.c (n_cloning_candidates): New static variable.
4679         (ipcp_print_profile_data, ipcp_function_scale_print): Forward declare.
4680         (ipcp_print_all_lattices): Improve debug output.
4681         (ipcp_cloning_candidate_p): New function.
4682         (ipcp_initialize_node_lattices): Use it.
4683         (ipcp_init_stage): Do only analyzis here; prettier debug output.
4684         (ipcp_propagate_stage): Prettier debug output.
4685         (ipcp_iterate_stage): Initialize latices here; prettier debug output.
4686         (ipcp_print_all_structures): Remove.
4687         (ipcp_need_redirect_p): Test !n_cloning_candidates.
4688         (ipcp_insert_stage): Prettier debug output; call
4689         cgraph_remove_unreachable_nodes before propagating.
4690         (pass_ipa_cp): Schedule function removal pass.
4691         * ipa-inline.c (inline_indirect_intraprocedural_analysis): Better
4692         debug output.
4693         (cgraph_maybe_hot_edge_p): Move to ...
4694         * predict.c (cgraph_maybe_hot_edge_p) ... here.
4695         * opts.c (flag_ipa_cp_set, flag_ipa_cp_clone_set): New.
4696         (common_handle_option): Set them; enable ipa-cp when profiling.
4697         * ipa-prop.c (ipa_print_node_jump_functions): Prettier output.
4698         (ipa_print_all_jump_functions): Likewise.
4699         (ipa_print_all_tree_maps, ipa_print_node_param_flags): Remove.
4700         (ipa_print_node_params, ipa_print_all_params): New.
4701         * ipa-prop.h (ipa_print_all_tree_maps, ipa_print_node_param_flags,
4702         ipa_print_all_param_flags): Remove.
4703         (ipa_print_node_params, ipa_print_all_params): New.
4704
4705 2008-08-29  Bob Wilson  <bob.wilson@acm.org>
4706
4707         * config/xtensa/xtensa.c (xtensa_secondary_reload_class): Revert
4708         change from 2008-04-03.
4709         * config/xtensa/xtensa.h (IRA_COVER_CLASSES): Define.
4710
4711 2008-08-29  Vladimir Makarov  <vmakarov@redhat.com>
4712
4713         PR rtl-opt/37251
4714         * ira-color.c (push_allocnos_to_stack): Truncate
4715         removed_splay_allocno_vec.
4716
4717 2008-08-29  Vladimir Makarov  <vmakarov@redhat.com>
4718
4719         PR rtl-opt/37243
4720         * ira-color (ira_fast_allocation): Don't assign hard registers to
4721         global allocnos.
4722
4723 2008-08-29  Jan Hubicka  <jh@suse.cz>
4724
4725         PR middle-end/37278
4726         * predict.c (optimize_loop_nest_for_speed_p): Do not ICE
4727         for cold internal loops.
4728
4729 2008-08-29  Richard Guenther  <rguenther@suse.de>
4730
4731         * tree-ssa-structalias.c (create_variable_info_for): Do not
4732         create fields for heap vars or vars with a noalias state.
4733         For NO_ALIAS_ANYTHING variables add a self-constraint, not one
4734         from ESCAPED.
4735
4736 2008-08-29  Richard Guenther  <rguenther@suse.de>
4737
4738         * common.opt (ftree-store-ccp): Mark as preserved for
4739         backward compatibility.
4740         * doc/invoke.texi (-ftree-store-ccp): Remove documentation.
4741         * tree-pass.h (pass_store_ccp): Remove.
4742         * tree-ssa-propagate.h (struct prop_value_d): Remove mem_ref field.
4743         (first_vdef): Remove declaration.
4744         (get_value_loaded_by): Likewise.
4745         * tree-ssa-ccp.c (do_store_ccp): Remove.
4746         (get_default_value): Simplify as do_store_ccp is always false
4747         now.  Do not initialize mem_ref.
4748         (set_value_varying): Likewise.
4749         (canonicalize_float_value): Likewise.
4750         (set_lattice_value): Likewise.
4751         (likely_value): Likewise.
4752         (surely_varying_stmt_p): Likewise.
4753         (ccp_initialize): Likewise.
4754         (ccp_lattice_meet): Likewise.
4755         (ccp_visit_phi_node): Likewise.
4756         (ccp_fold): Likewise.
4757         (evaluate_stmt): Likewise.
4758         (visit_assignment): Likewise.
4759         (ccp_visit_stmt): Likewise.
4760         (execute_ssa_ccp): Fold into ...
4761         (do_ssa_ccp): ... this.
4762         (do_ssa_store_ccp): Remove.
4763         (gate_store_ccp): Likewise.
4764         (pass_store_ccp): Likewise.
4765         * tree-ssa-copy.c (copy_prop_visit_phi_node): Do not
4766         initialize mem_ref.
4767         * tree-ssa-propagate.c (first_vdef): Remove.
4768         (get_value_loaded_by): Likewise.
4769         (replace_vuses_in): Likewise.
4770         (substitute_and_fold): Do not call replace_vuses_in.
4771         * opts.c (decode_options): Do not set flag_tree_store_ccp.
4772
4773 2008-08-29  Richard Guenther  <rguenther@suse.de>
4774
4775         PR middle-end/37236
4776         * tree-ssa-structalias.c (intra_create_variable_infos): Mark
4777         PARAM_NOALIAS tags with is_heapvar.
4778         * tree-ssa-operands.c (access_can_touch_variable): Offset
4779         based tests do not apply for heapvars.  Fix offset test.
4780
4781 2008-08-29  Jan Hubicka  <jh@suse.cz>
4782
4783         * doc/invoke.texi (-fipa-cp): Enabled by default at -O2/-Os/-O3
4784         (-fipa-cp-clone): Enabled by default at -O3.
4785         * opts.c (decode_options): Enable ipa-cp at -O2, ipa-cp-clone at -O3;
4786         make ipa-cp-clone to imply ipa-cp; disable cloning at -Os.
4787
4788 2008-08-29  Jan Hubicka  <jh@suse.cz>
4789
4790         * tree.c (build_function_type_skip_args,
4791         build_function_decl_skip_args): New functions.
4792         * tree.h (build_function_type_skip_args,
4793         build_function_decl_skip_args): Declare.
4794         * gimple.c (giple_copy_call_skip_args): New function.
4795         (giple_copy_call_skip_args): Declare.
4796
4797         * cgraph.h (cgraph_function_versioning): Add skip_args arugmnet
4798         * ipa-cp.c (ipcp_node_not_modifiable_p): Rename to ...
4799         (ipcp_node_modifiable_p): ... this one; use
4800         tree_versionable_function_p.
4801         (ipcp_create_replace_map): Improve debug output.
4802         (ipcp_need_redirect_p): Return false when not clonning.
4803         (ipcp_update_callgraph): Skip args.
4804         (ipcp_insert_stage): UPdate call of !ipcp_node_modifiable_p;
4805         skip args.
4806         * cgraphunit.c (cgraph_function_versioning): Add skip_args argument.
4807         (save_inline_function_body): Update call of tree_function_versioning.
4808         * ipa-prop.c (ipa_edge_removal_hook): Do not ICE on unanalyzed nodes.
4809         * tree-inline.c (copy_arguments_for_versioning): Add skip_args
4810         argument.
4811         (tree_function_versioning): Likewise.
4812         * tree-inline.h (tree_function_versioning): Update prototype.
4813
4814 2008-08-29  Jan Hubicka  <jh@suse.cz>
4815
4816         * loop-unswitch.c (unswitch_single_loop): Use
4817         optimize_loop_for_speed_p.
4818         * tree-ssa-threadupdate.c (mark_threaded_blocks):
4819         Use optimize_function_for_size_p.
4820         * tracer.c (ignore_bb_p): Use optimize_bb_for_size_p.
4821         * postreload-gcse.c (eliminate_partially_redundant_load):
4822         Use optimize_bb_for_size_p.
4823         * value-prof.c (gimple_divmod_fixed_value_transform,
4824         gimple_mod_pow2_value_transform, gimple_mod_subtract_transform,
4825         gimple_stringops_transform): Use optimize_bb_for_size_p.
4826         * ipa-cp.c (ipcp_insert_stage): Use optimize_function_for_size_p.
4827         * final.c (compute_alignments): Use optimize_function_for_size_p.
4828         * builtins.c (fold_builtin_cabs): Use optimize_function_for_speed_p.
4829         (fold_builtin_strcpy, fold_builtin_fputs): Use
4830         optimize_function_for_size_p.
4831         * fold-const.c (tree_swap_operands_p): Use
4832         optimize_function_for_size_p.
4833         * recog.c (relax_delay_slots): Likewise.
4834         * tree-ssa-math-opts.c (replace_reciprocal):
4835         Use optimize_bb_for_speed_p.
4836         (execute_cse_reciprocals): Use optimize_bb_for_size_p.
4837         * ipa-inline.c (cgraph_decide_recursive_inlining): Use
4838         optimize_function_for_size_p.
4839         (cgraph_decide_inlining_of_small_function): Use
4840         optimize_function_for_size_p.
4841         * global.c (find_reg): Use optimize_function_for_size_p.
4842         * opts.c (decode_options): Do not clear flag_tree_ch,
4843         flag_inline_functions, flag_unswitch_loops, flag_unroll_loops,
4844         flag_unroll_all_loops and flag_prefetch_loop_arrays. Those can
4845         work it out from profile.
4846         * tree-ssa-loop-ivcanon.c (tree_unroll_loops_completely): Use
4847         optimize_loop_for_speed_p.
4848         * predict.c (optimize_bb_for_size_p, optimize_bb_for_speed_p):
4849         Constify argument.
4850         (optimize_loop_nest_for_size_p, optimize_loop_nest_for_speed_p): New.
4851         * tree-parloops.c (parallelize_loops): Use optimize_loop_for_size_p.
4852         * tree-eh.c (decide_copy_try_finally): Use
4853         optimize_function_for_size_p.
4854         * local-alloc.c (block_alloc): Pass BB pointer.
4855         (find_free_reg): Add BB pointer, use optimize_bb_for_size_p.
4856         * gcse.c (gcse_main): Use optimize_function_for_size_p.
4857         * loop-unroll.c (decide_unrolling_and_peeling):
4858         Use optimize_loop_for_size_p.
4859         (decide_peel_completely): Likewise.
4860         * tree-vect-analyze.c (vect_mark_for_runtime_alias_test): Use
4861         optimize_loop_for_size_p.
4862         (vect_enhance_data_refs_alignment): Likewise.
4863         * tree-ssa-coalesce.c (coalesce_cost): Add optimize_for_size argument.
4864         (coalesce_cost_bb, coalesce_cost_edge, create_outofssa_var_map):
4865         Update call.
4866         * cfgcleanup.c (outgoing_edges_match): Use optimize_bb_for_speed_p.
4867         (try_crossjump_bb): Use optimize_bb_for_size_p.
4868         * tree-ssa-loop-prefetch.c (loop_prefetch_arrays): Use
4869         optimize_loop_for_speed_p.
4870         * bb-reorder.c (find_traces_1_round): Likewise.
4871         (copy_bb): Use optimize_bb_for_speed_p.
4872         (duplicate_computed_gotos): Likewise.
4873         * basic-block.h (optimize_loop_nest_for_size_p,
4874         optimize_loop_nest_for_speed_p): New.
4875         * stmt.c (expand_case): Use optimize_insn_for_size_p.
4876
4877 2008-08-29  Tristan Gingold  <gingold@adacore.com>
4878
4879         * gcov.c (main): Call expandargv.
4880
4881 2008-08-29  Jan Hubicka  <jh@suse.cz>
4882
4883         * tree-ssa-loop-ch.c (should_duplicate_loop_header_p): Check that loop
4884         is not cold.
4885         * predict.c (optimize_bb_for_size_p, optimize_bb_for_speed_p):
4886         Constify arguments.
4887         (optimize_loop_for_size_p, optimize_loop_for_speed_p): New functions.
4888         * basic-block.h (optimize_bb_for_size_p, optimize_bb_for_speed_p):
4889         Constify.
4890         (optimize_loop_for_size_p, optimize_loop_for_speed_p): Declare.
4891
4892 2008-08-29  Jan Hubicka  <jh@suse.cz>
4893
4894         * tree-pass.h (pass_strip_predict_hints): Declare.
4895         * predict.c (strip_builtin_expect): Rename to ...
4896         (strip_predict_hints): ... this one; strip also GIMPLE_PREDICT.
4897         (tree_bb_level_predictions): Do not remove GIMPLE_PREDICT.
4898         (tree_estimate_probability): Do not strip builtin_expect.
4899         (pass_strip_predict_hints): New pass.
4900         * tree-inline.c (expand_call_inline): When inlining cold function,
4901         predict it as unlikely.
4902         * passes.c (init_optimization_passes): Add pass_strip_predict_hints.
4903
4904 2008-08-29  Richard Guenther  <rguenther@suse.de>
4905
4906         PR tree-optimization/37207
4907         * tree-vrp.c (extract_range_from_binary_expr): Also try
4908         to constant fold if only one of the operands is a constant.
4909
4910 2008-08-29  Nick Clifton  <nickc@redhat.com>
4911
4912         * config/m32r/m32r.h (LEGITIMATE_CONSTANT_P): Treat LABEL_REFs in
4913         the same way as SYMBOL_REFs.
4914
4915 2008-08-28  Bob Wilson  <bob.wilson@acm.org>
4916
4917         * config/xtensa/xtensa.md (<u>mulsidi3): Use a temporary register.
4918
4919 2008-08-28  Adam Nemet  <anemet@caviumnetworks.com>
4920
4921         * config/mips/mips.h (ISA_HAS_BBIT): New macro.
4922         * config/mips/mips.md (branch_likely): Remove const.  Fix
4923         comment formatting.
4924         (define_delay for type "branch"): Change to only apply for branch
4925         with likely variant.
4926         (define_delay for type "branch" and "branch_likely" no).  New delay
4927         definition.
4928         (equality_op): New code iterator.
4929         (bbv, bbinv): New code attributes.
4930         (*branch_bit<bbv><mode>, *branch_bit<bbv><mode>_inverted): New
4931         patterns.
4932
4933 2008-08-28  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
4934             Andrew Pinski  <pinskia@gcc.gnu.org>
4935
4936         PR 18050
4937         * c-common.c (verify_tree): Fix handling of ADDR_EXPR.
4938
4939 2008-08-28  Paolo Carlini  <paolo.carlini@oracle.com>
4940
4941         * gtrh-posix.h: Fix uses of _POSIX_TIMEOUTS per the normal Posix
4942         rule that a symbolic constant must be defined and >= 0 for the
4943         corresponding facility to be present at compile-time.
4944         * gthr-posix.c: Likewise.
4945
4946 2008-08-28  Adam Nemet  <anemet@caviumnetworks.com>
4947
4948         * config/mips/mips.h (ISA_HAS_DMUL3): New macro.
4949         * config/mips/mips.md (D): New mode attribute.
4950         (mulsi3, muldi3): Merge it into ...
4951         (mul<mode>3): ... new template.  Use _mul3 ending for 3-op patterns.
4952         (muldi3_mul3): New pattern.
4953         (mulsi3_mult3): Rename to mulsi3_mul3.
4954
4955 2008-08-28  Jan Hubicka  <jh@suse.cz>
4956
4957         * expmed.c (store_bit_field_1): Be prepared for movstrict expander
4958         to fail.
4959         * predict.c (always_optimize_for_size_p): Rename to ...
4960         (optimize_function_for_size): ... this one; make extern.
4961         (optimize_function_for_speed_p): New.
4962         (optimize_bb_for_size_p, optimize_bb_for_size_p,
4963         optimize_edge_for_size_p,optimize_edge_for_size_p,
4964         optimize_insn_for_size_p, optimize_insn_for_size_p): Update.
4965         * basic-block.h (optimize_function_for_size_p,
4966         optimize_function_for_speed_p): Declare.
4967         * i386.md (optimize_size checks): Replace them by appropriate
4968         predicate.
4969         (standard_80387_constant_p, ix86_compute_frame_layout,
4970         ix86_expand_epilogue, ix86_decompose_address,
4971         print_operand, emit_i387_cw_initialization,
4972         inline_memory_move_cost, ix86_pad_returns,
4973         ix86_reorg): Replace optimize_size checks.
4974
4975 2008-08-28  Richard Sandiford  <rdsandiford@googlemail.com>
4976
4977         * rtl.h (simplify_subreg_regno): Declare.
4978         * rtlanal.c (simplify_subreg_regno): New function, split out from...
4979         * simplify-rtx.c (simplify_subreg): ...here.
4980         * reload.c (find_reloads): Use simplify_subreg_regno instead of
4981         subreg_offset_representable_p.
4982
4983 2008-08-28  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
4984
4985         PR c/30949
4986         * c-typeck.c (convert_for_assignment): Give a note describing what
4987         was passed and what was expected.
4988
4989 2008-08-28  Joey Ye  <joey.ye@intel.com>
4990
4991         * doc/extend.texi: Document AVX built-in functions.
4992         * doc/invoke.texi: Document -mavx.
4993
4994 2008-08-28  H.J. Lu  <hongjiu.lu@intel.com>
4995             Joey Ye  <joey.ye@intel.com>
4996             Xuepeng Guo  <xuepeng.guo@intel.com>
4997
4998         * config.gcc (extra_headers): Add gmmintrin.h for x86 and x86-64.
4999
5000         * config/i386/cpuid.h (bit_FMA): New.
5001         (bit_XSAVE): Likewise.
5002         (bit_OSXSAVE): Likewise.
5003         (bit_AVX): Likewise.
5004
5005         * config/i386/gas.h (ASM_OUTPUT_OPCODE): Undefine before
5006         define.  Use ASM_OUTPUT_AVX_PREFIX.
5007
5008         * config/i386/gmmintrin.h: New.
5009
5010         * config/i386/i386.c (x86_64_reg_class): Add X86_64_AVX_CLASS.
5011         (OPTION_MASK_ISA_AVX_SET): New.
5012         (OPTION_MASK_ISA_FMA_SET): Likewise.
5013         (OPTION_MASK_ISA_AVX_UNSET): Likewise.
5014         (OPTION_MASK_ISA_FMA_SET): Likewise.
5015         (OPTION_MASK_ISA_SSE4_2_UNSET): Updated.
5016         (ix86_handle_option): Handle OPT_mavx and OPT_mfma.
5017         (pta_flags): Add PTA_AVX and PTA_FMA.
5018         (override_options): Handle PTA_AVX and PTA_FMA.
5019         (init_cumulative_args): Handle warn_avx.
5020         (classify_argument): Return 0 for COImode and OImode.  Return
5021         1 and X86_64_AVX_CLASS for 256bit vector types.
5022         (examine_argument): Handle X86_64_AVX_CLASS.
5023         (construct_container): Likewise.
5024         (function_arg_advance_32): Pass OImode and 256bit vector types
5025         in AVX register.
5026         (function_arg_advance_64): Take a new argument to indicate if a
5027         parameter is named.  Handle 256bit vector types.  Return
5028         immediately for unnamed 256bit vector mode parameters.
5029         (function_arg_advance): Updated.
5030         (function_arg_32): Add comments for TImode.  Handle OImode
5031         and 256bit vector types.
5032         (function_arg_64): Take a new argument to indicate if a
5033         parameter is named.  Handle 256bit vector types.  Return NULL
5034         for unnamed 256bit vector mode parameters.
5035         (function_arg): Updated.
5036         (setup_incoming_varargs_64): Support
5037         AVX encoding for *sse_prologue_save_insn.
5038         (ix86_gimplify_va_arg): Handle 256bit vector mode parameters.
5039         (standard_sse_constant_p): Return -2 for all 1s if SSE2 isn't
5040         enabled.  For all 1s in 256bit vector modes, return 3 if AVX is
5041         enabled, otherwise return -3.
5042         (standard_sse_constant_opcode): Handle AVX and 256bit vector
5043         modes.
5044         (print_reg): Support AVX registers.  Handle 'x' and 't'.
5045         Handle 'd' to duplicate the operand.
5046         (print_operand): Likewise.  Also support AVX vector compare
5047         instructions.
5048         (output_387_binary_op): Support AVX.
5049         (output_fp_compare): Likewise.
5050         (ix86_expand_vector_move_misalign): Likewise.
5051         (ix86_attr_length_vex_default): New.
5052         (ix86_builtins): Add IX86_BUILTIN_ADDPD256,
5053         IX86_BUILTIN_ADDPS256, IX86_BUILTIN_ADDSUBPD256,
5054         IX86_BUILTIN_ADDSUBPS256, IX86_BUILTIN_ANDPD256,
5055         IX86_BUILTIN_ANDPS256, IX86_BUILTIN_ANDNPD256,
5056         IX86_BUILTIN_ANDNPS256, IX86_BUILTIN_BLENDPD256,
5057         IX86_BUILTIN_BLENDPS256, IX86_BUILTIN_BLENDVPD256,
5058         IX86_BUILTIN_BLENDVPS256, IX86_BUILTIN_DIVPD256,
5059         IX86_BUILTIN_DIVPS256, IX86_BUILTIN_DPPS256,
5060         IX86_BUILTIN_HADDPD256, IX86_BUILTIN_HADDPS256,
5061         IX86_BUILTIN_HSUBPD256, IX86_BUILTIN_HSUBPS256,
5062         IX86_BUILTIN_MAXPD256, IX86_BUILTIN_MAXPS256,
5063         IX86_BUILTIN_MINPD256, IX86_BUILTIN_MINPS256,
5064         IX86_BUILTIN_MULPD256, IX86_BUILTIN_MULPS256,
5065         IX86_BUILTIN_ORPD256, IX86_BUILTIN_ORPS256,
5066         IX86_BUILTIN_SHUFPD256, IX86_BUILTIN_SHUFPS256,
5067         IX86_BUILTIN_SUBPD256, IX86_BUILTIN_SUBPS256,
5068         IX86_BUILTIN_XORPD256, IX86_BUILTIN_XORPS256,
5069         IX86_BUILTIN_CMPSD, IX86_BUILTIN_CMPSS, IX86_BUILTIN_CMPPD,
5070         IX86_BUILTIN_CMPPS, IX86_BUILTIN_CMPPD256,
5071         IX86_BUILTIN_CMPPS256, IX86_BUILTIN_CVTDQ2PD256,
5072         IX86_BUILTIN_CVTDQ2PS256, IX86_BUILTIN_CVTPD2PS256,
5073         IX86_BUILTIN_CVTPS2DQ256, IX86_BUILTIN_CVTPS2PD256,
5074         IX86_BUILTIN_CVTTPD2DQ256, IX86_BUILTIN_CVTPD2DQ256,
5075         IX86_BUILTIN_CVTTPS2DQ256, IX86_BUILTIN_EXTRACTF128PD256,
5076         IX86_BUILTIN_EXTRACTF128PS256, IX86_BUILTIN_EXTRACTF128SI256,
5077         IX86_BUILTIN_VZEROALL, IX86_BUILTIN_VZEROUPPER,
5078         IX86_BUILTIN_VZEROUPPER_REX64, IX86_BUILTIN_VPERMILVARPD,
5079         IX86_BUILTIN_VPERMILVARPS, IX86_BUILTIN_VPERMILVARPD256,
5080         IX86_BUILTIN_VPERMILVARPS256, IX86_BUILTIN_VPERMILPD,
5081         IX86_BUILTIN_VPERMILPS, IX86_BUILTIN_VPERMILPD256,
5082         IX86_BUILTIN_VPERMILPS256, IX86_BUILTIN_VPERMIL2PD,
5083         IX86_BUILTIN_VPERMIL2PS, IX86_BUILTIN_VPERMIL2PD256,
5084         IX86_BUILTIN_VPERMIL2PS256, IX86_BUILTIN_VPERM2F128PD256,
5085         IX86_BUILTIN_VPERM2F128PS256, IX86_BUILTIN_VPERM2F128SI256,
5086         IX86_BUILTIN_VBROADCASTSS, IX86_BUILTIN_VBROADCASTSD256,
5087         IX86_BUILTIN_VBROADCASTSS256, IX86_BUILTIN_VBROADCASTPD256,
5088         IX86_BUILTIN_VBROADCASTPS256, IX86_BUILTIN_VINSERTF128PD256,
5089         IX86_BUILTIN_VINSERTF128PS256, IX86_BUILTIN_VINSERTF128SI256,
5090         IX86_BUILTIN_LOADUPD256, IX86_BUILTIN_LOADUPS256,
5091         IX86_BUILTIN_STOREUPD256, IX86_BUILTIN_STOREUPS256,
5092         IX86_BUILTIN_LDDQU256, IX86_BUILTIN_LOADDQU256,
5093         IX86_BUILTIN_STOREDQU256, IX86_BUILTIN_MASKLOADPD,
5094         IX86_BUILTIN_MASKLOADPS, IX86_BUILTIN_MASKSTOREPD,
5095         IX86_BUILTIN_MASKSTOREPS, IX86_BUILTIN_MASKLOADPD256,
5096         IX86_BUILTIN_MASKLOADPS256, IX86_BUILTIN_MASKSTOREPD256,
5097         IX86_BUILTIN_MASKSTOREPS256, IX86_BUILTIN_MOVSHDUP256,
5098         IX86_BUILTIN_MOVSLDUP256, IX86_BUILTIN_MOVDDUP256,
5099         IX86_BUILTIN_SQRTPD256, IX86_BUILTIN_SQRTPS256,
5100         IX86_BUILTIN_SQRTPS_NR256, IX86_BUILTIN_RSQRTPS256,
5101         IX86_BUILTIN_RSQRTPS_NR256, IX86_BUILTIN_RCPPS256,
5102         IX86_BUILTIN_ROUNDPD256, IX86_BUILTIN_ROUNDPS256,
5103         IX86_BUILTIN_UNPCKHPD256, IX86_BUILTIN_UNPCKLPD256,
5104         IX86_BUILTIN_UNPCKHPS256, IX86_BUILTIN_UNPCKLPS256,
5105         IX86_BUILTIN_SI256_SI, IX86_BUILTIN_PS256_PS,
5106         IX86_BUILTIN_PD256_PD, IX86_BUILTIN_SI_SI256,
5107         IX86_BUILTIN_PS_PS256, IX86_BUILTIN_PD_PD256,
5108         IX86_BUILTIN_VTESTZPD, IX86_BUILTIN_VTESTCPD,
5109         IX86_BUILTIN_VTESTNZCPD, IX86_BUILTIN_VTESTZPS,
5110         IX86_BUILTIN_VTESTCPS, IX86_BUILTIN_VTESTNZCPS,
5111         IX86_BUILTIN_VTESTZPD256, IX86_BUILTIN_VTESTCPD256,
5112         IX86_BUILTIN_VTESTNZCPD256, IX86_BUILTIN_VTESTZPS256,
5113         IX86_BUILTIN_VTESTCPS256, IX86_BUILTIN_VTESTNZCPS256,
5114         IX86_BUILTIN_PTESTZ256, IX86_BUILTIN_PTESTC256,
5115         IX86_BUILTIN_PTESTNZC256, IX86_BUILTIN_MOVMSKPD256
5116         and IX86_BUILTIN_MOVMSKPS256,
5117         (ix86_special_builtin_type): Add V32QI_FTYPE_PCCHAR,
5118         V8SF_FTYPE_PCV4SF, V8SF_FTYPE_PCFLOAT, V4DF_FTYPE_PCV2DF,
5119         V4DF_FTYPE_PCDOUBLE, V8SF_FTYPE_PCV8SF_V8SF,
5120         V4DF_FTYPE_PCV4DF_V4DF, V4SF_FTYPE_PCV4SF_V4SF,
5121         V2DF_FTYPE_PCV2DF_V2DF, VOID_FTYPE_PCHAR_V32QI,
5122         VOID_FTYPE_PFLOAT_V8SF, VOID_FTYPE_PDOUBLE_V4DF,
5123         VOID_FTYPE_PV8SF_V8SF_V8SF, VOID_FTYPE_PV4DF_V4DF_V4DF,
5124         VOID_FTYPE_PV4SF_V4SF_V4SF and VOID_FTYPE_PV2DF_V2DF_V2DF,
5125         (ix86_builtin_type): Add INT_FTYPE_V8SF_V8SF_PTEST,
5126         INT_FTYPE_V4DI_V4DI_PTEST, INT_FTYPE_V4DF_V4DF_PTEST,
5127         INT_FTYPE_V4SF_V4SF_PTEST, INT_FTYPE_V2DF_V2DF_PTEST,
5128         INT_FTYPE_V8SF, INT_FTYPE_V4DF, V8SI_FTYPE_V8SF, V8SI_FTYPE_V4SI,
5129         V8SF_FTYPE_V8SF, V8SF_FTYPE_V8SI, V8SF_FTYPE_V4SF,
5130         V4SI_FTYPE_V8SI, V4SI_FTYPE_V4DF, V4DF_FTYPE_V4DF,
5131         V4DF_FTYPE_V4SI, V4DF_FTYPE_V4SF, V4DF_FTYPE_V2DF,
5132         V4SF_FTYPE_V4DF, V4SF_FTYPE_V8SF, V2DF_FTYPE_V4DF,
5133         V8SF_FTYPE_V8SF_V8SF, V8SF_FTYPE_V8SF_V8SI,
5134         V4DF_FTYPE_V4DF_V4DF, V4DF_FTYPE_V4DF_V4DI,
5135         V4SF_FTYPE_V4SF_V4SI, V2DF_FTYPE_V2DF_V2DI,
5136         V8SF_FTYPE_V8SF_INT, V4SI_FTYPE_V8SI_INT, V4SF_FTYPE_V8SF_INT,
5137         V2DF_FTYPE_V4DF_INT, V4DF_FTYPE_V4DF_INT,
5138         V8SF_FTYPE_V8SF_V8SF_V8SF, V4DF_FTYPE_V4DF_V4DF_V4DF,
5139         V8SI_FTYPE_V8SI_V8SI_INT, V8SF_FTYPE_V8SF_V8SF_INT,
5140         V4DF_FTYPE_V4DF_V4DF_INT, V4DF_FTYPE_V4DF_V2DF_INT,
5141         V8SF_FTYPE_V8SF_V8SF_V8SI_INT, V4DF_FTYPE_V4DF_V4DF_V4DI_INT,
5142         V4SF_FTYPE_V4SF_V4SF_V4SI_INT and V2DF_FTYPE_V2DF_V2DF_V2DI_INT.
5143         (bdesc_special_args): Add IX86_BUILTIN_VZEROALL,
5144         IX86_BUILTIN_VZEROUPPER. IX86_BUILTIN_VZEROUPPER_REX64,
5145         IX86_BUILTIN_VBROADCASTSS, IX86_BUILTIN_VBROADCASTSD256,
5146         IX86_BUILTIN_VBROADCASTSS256, IX86_BUILTIN_VBROADCASTPD256,
5147         IX86_BUILTIN_VBROADCASTPS256, IX86_BUILTIN_LOADUPD256,
5148         IX86_BUILTIN_LOADUPS256, IX86_BUILTIN_STOREUPD256,
5149         IX86_BUILTIN_STOREUPS256, IX86_BUILTIN_LOADDQU256,
5150         IX86_BUILTIN_STOREDQU256, IX86_BUILTIN_LDDQU256,
5151         IX86_BUILTIN_MASKLOADPD, IX86_BUILTIN_MASKLOADPS,
5152         IX86_BUILTIN_MASKLOADPD256, IX86_BUILTIN_MASKLOADPS256,
5153         IX86_BUILTIN_MASKSTOREPD, IX86_BUILTIN_MASKSTOREPS,
5154         IX86_BUILTIN_MASKSTOREPD256 and IX86_BUILTIN_MASKSTOREPS256.
5155         (ix86_builtins): Add IX86_BUILTIN_ADDPD256,
5156         IX86_BUILTIN_ADDPS256, IX86_BUILTIN_ADDSUBPD256,
5157         IX86_BUILTIN_ADDSUBPS256, IX86_BUILTIN_ANDPD256,
5158         IX86_BUILTIN_ANDPS256, IX86_BUILTIN_ANDNPD256,
5159         IX86_BUILTIN_ANDNPS256, IX86_BUILTIN_DIVPD256,
5160         IX86_BUILTIN_DIVPS256, IX86_BUILTIN_HADDPD256,
5161         IX86_BUILTIN_HSUBPS256, IX86_BUILTIN_HSUBPD256,
5162         IX86_BUILTIN_HADDPS256, IX86_BUILTIN_MAXPD256,
5163         IX86_BUILTIN_MAXPS256, IX86_BUILTIN_MINPD256,
5164         IX86_BUILTIN_MINPS256, IX86_BUILTIN_MULPD256,
5165         IX86_BUILTIN_MULPS256, IX86_BUILTIN_ORPD256,
5166         IX86_BUILTIN_ORPS256, IX86_BUILTIN_SUBPD256,
5167         IX86_BUILTIN_SUBPS256, IX86_BUILTIN_XORPD256,
5168         IX86_BUILTIN_XORPS256, IX86_BUILTIN_VPERMILVARPD,
5169         IX86_BUILTIN_VPERMILVARPS, IX86_BUILTIN_VPERMILVARPD256,
5170         IX86_BUILTIN_VPERMILVARPS256, IX86_BUILTIN_BLENDPD256,
5171         IX86_BUILTIN_BLENDPS256, IX86_BUILTIN_BLENDVPD256,
5172         IX86_BUILTIN_BLENDVPS256, IX86_BUILTIN_DPPS256,
5173         IX86_BUILTIN_SHUFPD256, IX86_BUILTIN_SHUFPS256,
5174         IX86_BUILTIN_CMPSD, IX86_BUILTIN_CMPSS, IX86_BUILTIN_CMPPD,
5175         IX86_BUILTIN_CMPPS,
5176         IX86_BUILTIN_CMPPD256,IX86_BUILTIN_CMPPS256,
5177         IX86_BUILTIN_EXTRACTF128PD256, IX86_BUILTIN_EXTRACTF128PS256,
5178         IX86_BUILTIN_EXTRACTF128SI256, IX86_BUILTIN_CVTDQ2PD256,
5179         IX86_BUILTIN_CVTDQ2PS256, IX86_BUILTIN_CVTPD2PS256,
5180         IX86_BUILTIN_CVTPS2DQ256, IX86_BUILTIN_CVTPS2PD256,
5181         IX86_BUILTIN_CVTTPD2DQ256, IX86_BUILTIN_CVTPD2DQ256,
5182         IX86_BUILTIN_CVTTPS2DQ256, IX86_BUILTIN_VPERM2F128PD256,
5183         IX86_BUILTIN_VPERM2F128PS256, IX86_BUILTIN_VPERM2F128SI256,
5184         IX86_BUILTIN_VPERMILPD, IX86_BUILTIN_VPERMILPS,
5185         IX86_BUILTIN_VPERMILPD256, IX86_BUILTIN_VPERMILPS256,
5186         IX86_BUILTIN_VPERMIL2PD, IX86_BUILTIN_VPERMILPS,
5187         IX86_BUILTIN_VPERMILPD256, IX86_BUILTIN_VPERMILPS256,
5188         IX86_BUILTIN_VPERMIL2PD, IX86_BUILTIN_VPERMIL2PS,
5189         IX86_BUILTIN_VPERMIL2PD256, IX86_BUILTIN_VPERMIL2PS256,
5190         IX86_BUILTIN_VINSERTF128PD256, IX86_BUILTIN_VINSERTF128PS256,
5191         IX86_BUILTIN_VINSERTF128SI256, IX86_BUILTIN_MOVSHDUP256,
5192         IX86_BUILTIN_MOVSLDUP256, IX86_BUILTIN_MOVDDUP256,
5193         IX86_BUILTIN_SQRTPD256, IX86_BUILTIN_SQRTPS256,
5194         IX86_BUILTIN_SQRTPS_NR256, IX86_BUILTIN_RSQRTPS256,
5195         IX86_BUILTIN_RSQRTPS_NR256, IX86_BUILTIN_RCPPS256,
5196         IX86_BUILTIN_ROUNDPD256, IX86_BUILTIN_ROUNDPS256,
5197         IX86_BUILTIN_UNPCKHPD256, IX86_BUILTIN_UNPCKLPD256,
5198         IX86_BUILTIN_UNPCKHPS256, IX86_BUILTIN_UNPCKLPS256,
5199         IX86_BUILTIN_SI256_SI, IX86_BUILTIN_PS256_PS,
5200         IX86_BUILTIN_PD256_PD, IX86_BUILTIN_SI_SI256,
5201         IX86_BUILTIN_PS_PS256, IX86_BUILTIN_PD_PD256,
5202         IX86_BUILTIN_VTESTZPD, IX86_BUILTIN_VTESTCPD,
5203         IX86_BUILTIN_VTESTNZCPD, IX86_BUILTIN_VTESTZPS,
5204         IX86_BUILTIN_VTESTCPS, IX86_BUILTIN_VTESTNZCPS,
5205         IX86_BUILTIN_VTESTZPD256, IX86_BUILTIN_VTESTCPD256,
5206         IX86_BUILTIN_VTESTNZCPD256, IX86_BUILTIN_VTESTZPS256,
5207         IX86_BUILTIN_VTESTCPS256, IX86_BUILTIN_VTESTNZCPS256,
5208         IX86_BUILTIN_PTESTZ256, IX86_BUILTIN_PTESTC256,
5209         IX86_BUILTIN_PTESTNZC256, IX86_BUILTIN_MOVMSKPD256 and
5210         IX86_BUILTIN_MOVMSKPS256.
5211         (ix86_init_mmx_sse_builtins): Support AVX builtins.
5212         (ix86_expand_args_builtin): Likewise.
5213         (ix86_expand_special_args_builtin): Likewise.
5214         (ix86_hard_regno_mode_ok): Handle AVX modes.
5215         (ix86_expand_vector_init_duplicate): Likewise.
5216         (ix86_expand_vector_init_one_nonzero): Likewise.
5217         (ix86_expand_vector_init_one_var): Likewise.
5218         (ix86_expand_vector_init_concat): Likewise.
5219         (ix86_expand_vector_init_general): Likewise.
5220         (ix86_expand_vector_set): Likewise.
5221         (ix86_vector_mode_supported_p): Likewise.
5222         (x86_extended_reg_mentioned_p): Check INSN_P before using
5223         PATTERN.
5224
5225         * config/i386/i386-c.c (ix86_target_macros_internal): Handle
5226         OPTION_MASK_ISA_AVX and OPTION_MASK_ISA_FMA.
5227
5228         * config/i386/i386.h (TARGET_AVX): New.
5229         (TARGET_FMA): Likewise.
5230         (TARGET_CPU_CPP_BUILTINS): Handle TARGET_AVX and TARGET_FMA.
5231         (BIGGEST_ALIGNMENT): Set to 256 for TARGET_AVX.
5232         (VALID_AVX256_REG_MODE): New.
5233         (AVX256_VEC_FLOAT_MODE_P): Likewise.
5234         (AVX_FLOAT_MODE_P): Likewise.
5235         (AVX128_VEC_FLOAT_MODE_P): Likewise.
5236         (AVX256_VEC_FLOAT_MODE_P): Likewise.
5237         (AVX_VEC_FLOAT_MODE_P): Likewise.
5238         (ASM_OUTPUT_AVX_PREFIX): Likewise.
5239         (ASM_OUTPUT_OPCODE): Likewise.
5240         (UNITS_PER_SIMD_WORD): Add a FIXME for 32byte vectorizer
5241         support.
5242         (SSE_REG_MODE_P): Allow 256bit vector modes.
5243         (ix86_args): Add a warn_avx field.
5244
5245         * config/i386/i386.md (UNSPEC_PCMP): New.
5246         (UNSPEC_VPERMIL): Likewise.
5247         (UNSPEC_VPERMIL2): Likewise.
5248         (UNSPEC_VPERMIL2F128): Likewise.
5249         (UNSPEC_MASKLOAD): Likewise.
5250         (UNSPEC_MASKSTORE): Likewise.
5251         (UNSPEC_CAST): Likewise.
5252         (UNSPEC_VTESTP): Likewise.
5253         (UNSPECV_VZEROALL): Likewise.
5254         (UNSPECV_VZEROUPPER): Likewise.
5255         (XMM0_REG): Likewise.
5256         (XMM1_REG): Likewise.
5257         (XMM2_REG): Likewise.
5258         (XMM3_REG): Likewise.
5259         (XMM4_REG): Likewise.
5260         (XMM5_REG): Likewise.
5261         (XMM6_REG): Likewise.
5262         (XMM8_REG): Likewise.
5263         (XMM9_REG): Likewise.
5264         (XMM10_REG): Likewise.
5265         (XMM11_REG): Likewise.
5266         (XMM12_REG): Likewise.
5267         (XMM13_REG): Likewise.
5268         (XMM14_REG): Likewise.
5269         (XMM15_REG): Likewise.
5270         (prefix): Likewise.
5271         (prefix_vex_imm8): Likewise.
5272         (prefix_vex_w): Likewise.
5273         (length_vex): Likewise.
5274         (maxmin): Likewise.
5275         (movoi): Likewise.
5276         (*avx_ashlti3): Likewise.
5277         (*avx_lshrti3): Likewise.
5278         (*avx_setcc<mode>): Likewise.
5279         (*fop_<mode>_comm_mixed_avx): Likewise.
5280         (*fop_<mode>_comm_avx): Likewise.
5281         (*fop_<mode>_1_mixed_avx): Likewise.
5282         (*fop_<mode>_1_avx): Likewise.
5283         (*avx_<code><mode>3): Likewise.
5284         (*avx_ieee_smin<mode>3): Likewise.
5285         (*avx_ieee_smax<mode>3): Likewise.
5286         (mode): Add OI, V8SF and V4DF.
5287         (length): Support VEX prefix.
5288         (*cmpfp_i_mixed): Set prefix attribute.
5289         (*cmpfp_i_sse): Likewise.
5290         (*cmpfp_iu_mixed): Likewise.
5291         (*cmpfp_iu_sse): Likewise.
5292         (*movsi_1): Support AVX.
5293         (*movdi_2): Likewise.
5294         (*movdi_1_rex64): Likewise.
5295         (*movti_internal): Likewise.
5296         (*movti_rex64): Likewise.
5297         (*movsf_1): Likewise.
5298         (*movdf_nointeger): Likewise.
5299         (*movdf_integer_rex64): Likewise.
5300         (*movtf_internal): Likewise.
5301         (zero_extendsidi2_32): Likewise.
5302         (zero_extendsidi2_rex64): Likewise.
5303         (*extendsfdf2_mixed): Likewise.
5304         (*extendsfdf2_sse): Likewise.
5305         (*truncdfsf_fast_mixed): Likewise.
5306         (*truncdfsf_fast_sse): Likewise.
5307         (*truncdfsf_mixed): Likewise.
5308         (fix_trunc<mode>di_sse): Likewise.
5309         (fix_trunc<mode>si_sse): Likewise.
5310         (*float<SSEMODEI24:mode><MODEF:mode>2_mixed_interunit): Likewise.
5311         (*float<SSEMODEI24:mode><MODEF:mode>2_mixed_nointerunit): Likewise.
5312         (*float<SSEMODEI24:mode><MODEF:mode>2_sse_interunit): Likewise.
5313         (*float<SSEMODEI24:mode><MODEF:mode>2_sse_nointerunit): Likewise.
5314         (*rcpsf2_sse): Likewise.
5315         (*rsqrtsf2_sse): Likewise.
5316         (*sqrt<mode>2_sse): Likewise.
5317         (sse4_1_round<mode>2): Likewise.
5318         (*sse_prologue_save_insn): Disallow REX prefix for AVX.
5319         Support AVX.  Set length attribute properly for AVX.
5320
5321         * config/i386/i386-modes.def (VECTOR_MODES (INT, 32)): New.
5322         (VECTOR_MODES (FLOAT, 32)): Likewise.
5323         (VECTOR_MODE (INT, DI, 8)): Likewise.
5324         (VECTOR_MODE (INT, HI, 32)): Likewise.
5325         (VECTOR_MODE (INT, QI, 64)): Likewise.
5326         (VECTOR_MODE (FLOAT, DF, 8)): Likewise.
5327         (VECTOR_MODE (FLOAT, SF, 16)): Likewise.
5328         (VECTOR_MODE (INT, DI, 4)): Removed.
5329         (VECTOR_MODE (INT, SI, 8)): Likewise.
5330         (VECTOR_MODE (INT, HI, 16)): Likewise.
5331         (VECTOR_MODE (INT, QI, 32)): Likewise.
5332         (VECTOR_MODE (FLOAT, SF, 8)): Likewise.
5333         (INT_MODE (OI, 32)): Likewise.
5334
5335         * config/i386/i386.opt (mavx): New.
5336         (mfma): Likewise.
5337
5338         * config/i386/i386-protos.h (ix86_attr_length_vex_default): New.
5339
5340         * config/i386/mmx.md (*mov<mode>_internal_rex64): Support AVX.
5341         (*mov<mode>_internal_avx): New.
5342         (*movv2sf_internal_rex64_avx): Likewise.
5343         (*movv2sf_internal_avx): Likewise.
5344
5345         * config/i386/predicates.md (const_4_to_5_operand): New.
5346         (const_6_to_7_operand): Likewise.
5347         (const_8_to_11_operand): Likewise.
5348         (const_12_to_15_operand): Likewise.
5349         (avx_comparison_float_operator): Likewise.
5350
5351         * config/i386/sse.md (AVX256MODEI): New.
5352         (AVX256MODE): Likewise.
5353         (AVXMODEQI): Likewise.
5354         (AVXMODE): Likewise.
5355         (AVX256MODEF2P): Likewise.
5356         (AVX256MODE2P): Likewise.
5357         (AVX256MODE4P): Likewise.
5358         (AVX256MODE8P): Likewise.
5359         (AVXMODEF2P): Likewise.
5360         (AVXMODEF4P): Likewise.
5361         (AVXMODEDCVTDQ2PS): Likewise.
5362         (AVXMODEDCVTPS2DQ): Likewise.
5363         (avxvecmode): Likewise.
5364         (avxvecpsmode): Likewise.
5365         (avxhalfvecmode): Likewise.
5366         (avxscalarmode): Likewise.
5367         (avxcvtvecmode): Likewise.
5368         (avxpermvecmode): Likewise.
5369         (avxmodesuffixf2c): Likewise.
5370         (avxmodesuffixp): Likewise.
5371         (avxmodesuffixs): Likewise.
5372         (avxmodesuffix): Likewise.
5373         (vpermilbits): Likewise.
5374         (pinsrbits): Likewise.
5375         (mov<mode>): Likewise.
5376         (*mov<mode>_internal): Likewise.
5377         (push<mode>1): Likewise.
5378         (movmisalign<mode>): Likewise.
5379         (avx_movup<avxmodesuffixf2c><avxmodesuffix>): Likewise.
5380         (avx_movdqu<avxmodesuffix>): Likewise.
5381         (avx_lddqu<avxmodesuffix>): Likewise.
5382         (<plusminus_insn><mode>3): Likewise.
5383         (*avx_<plusminus_insn><mode>3): Likewise.
5384         (*avx_vm<plusminus_insn><mode>3): Likewise.
5385         (mul<mode>3): Likewise.
5386         (*avx_mul<mode>3): Likewise.
5387         (*avx_vmmul<mode>3): Likewise.
5388         (divv8sf3): Likewise.
5389         (divv4df3): Likewise.
5390         (avx_div<mode>3): Likewise.
5391         (*avx_div<mode>3): Likewise.
5392         (*avx_vmdiv<mode>3): Likewise.
5393         (avx_rcpv8sf2): Likewise.
5394         (*avx_vmrcpv4sf2): Likewise.
5395         (sqrtv8sf2): Likewise.
5396         (avx_sqrtv8sf2): Likewise.
5397         (*avx_vmsqrt<mode>2): Likewise.
5398         (rsqrtv8sf2): Likewise.
5399         (avx_rsqrtv8sf2): Likewise.
5400         (*avx_vmrsqrtv4sf2): Likewise.
5401         (<code><mode>3): Likewise.
5402         (*avx_<code><mode>3_finite): Likewise.
5403         (*avx_<code><mode>3): Likewise.
5404         (*avx_vm<code><mode>3): Likewise.
5405         (*avx_ieee_smin<mode>3): Likewise.
5406         (*avx_ieee_smax<mode>3): Likewise.
5407         (avx_addsubv8sf3): Likewise.
5408         (avx_addsubv4df3): Likewise.
5409         (*avx_addsubv4sf3): Likewise.
5410         (*avx_addsubv2df3): Likewise.
5411         (avx_h<plusminus_insn>v4df3): Likewise.
5412         (avx_h<plusminus_insn>v8sf3): Likewise.
5413         (*avx_h<plusminus_insn>v4sf3): Likewise.
5414         (*avx_h<plusminus_insn>v2df3): Likewise.
5415         (avx_cmpp<avxmodesuffixf2c><mode>3): Likewise.
5416         (avx_cmps<ssemodesuffixf2c><mode>3): Likewise.
5417         (*avx_maskcmp<mode>3): Likewise.
5418         (avx_nand<mode>3): Likewise.
5419         (*avx_<code><mode>3): Likewise.
5420         (*avx_nand<mode>3): Likewise.
5421         (*avx_<code><mode>3): Likewise.
5422         (*avx_cvtsi2ss): Likewise.
5423         (*avx_cvtsi2ssq): Likewise.
5424         (*avx_cvtsi2sd): Likewise.
5425         (*avx_cvtsi2sdq): Likewise.
5426         (*avx_cvtsd2ss): Likewise.
5427         (avx_cvtss2sd): Likewise.
5428         (avx_cvtdq2ps<avxmodesuffix>): Likewise.
5429         (avx_cvtps2dq<avxmodesuffix>): Likewise.
5430         (avx_cvttps2dq<avxmodesuffix>): Likewise.
5431         (*avx_cvtsi2sd): Likewise.
5432         (*avx_cvtsi2sdq): Likewise.
5433         (avx_cvtdq2pd256): Likewise.
5434         (avx_cvtpd2dq256): Likewise.
5435         (avx_cvttpd2dq256): Likewise.
5436         (*avx_cvtsd2ss): Likewise.
5437         (*avx_cvtss2sd): Likewise.
5438         (avx_cvtpd2ps256): Likewise.
5439         (avx_cvtps2pd256): Likewise.
5440         (*avx_movhlps): Likewise.
5441         (*avx_movlhps): Likewise.
5442         (avx_unpckhps256): Likewise.
5443         (*avx_unpckhps): Likewise.
5444         (avx_unpcklps256): Likewise.
5445         (*avx_unpcklps): Likewise.
5446         (avx_movshdup256): Likewise.
5447         (avx_movsldup256): Likewise.
5448         (avx_shufps256): Likewise.
5449         (avx_shufps256_1): Likewise.
5450         (*avx_shufps_<mode>): Likewise.
5451         (*avx_loadhps): Likewise.
5452         (*avx_storelps): Likewise.
5453         (*avx_loadlps): Likewise.
5454         (*avx_movss): Likewise.
5455         (*vec_dupv4sf_avx): Likewise.
5456         (*vec_concatv2sf_avx): Likewise.
5457         (*vec_concatv4sf_avx): Likewise.
5458         (*vec_setv4sf_0_avx): Likewise.
5459         (*vec_setv4sf_avx): Likewise.
5460         (*avx_insertps): Likewise.
5461         (avx_vextractf128<mode>): Likewise.
5462         (vec_extract_lo_<mode>): Likewise.
5463         (vec_extract_hi_<mode>): Likewise.
5464         (vec_extract_lo_<mode>): Likewise.
5465         (vec_extract_hi_<mode>): Likewise.
5466         (vec_extract_lo_v16hi): Likewise.
5467         (vec_extract_hi_v16hi): Likewise.
5468         (vec_extract_lo_v32qi): Likewise.
5469         (vec_extract_hi_v32qi): Likewise.
5470         (avx_unpckhpd256): Likewise.
5471         (*avx_unpckhpd): Likewise.
5472         (avx_movddup256): Likewise.
5473         (*avx_movddup): Likewise.
5474         (avx_unpcklpd256): Likewise.
5475         (*avx_unpcklpd): Likewise.
5476         (avx_shufpd256): Likewise.
5477         (avx_shufpd256_1): Likewise.
5478         (*avx_punpckhqdq): Likewise.
5479         (*avx_punpcklqdq): Likewise.
5480         (*avx_shufpd_<mode>): Likewise.
5481         (*avx_storehpd): Likewise.
5482         (*avx_loadhpd): Likewise.
5483         (*avx_loadlpd): Likewise.
5484         (*avx_movsd): Likewise.
5485         (*vec_concatv2df_avx): Likewise.
5486         (*avx_<plusminus_insn><mode>3): Likewise.
5487         (*avx_<plusminus_insn><mode>3): Likewise.
5488         (*avx_mulv8hi3): Likewise.
5489         (*avxv8hi3_highpart): Likewise.
5490         (*avx_umulv8hi3_highpart): Likewise.
5491         (*avx_umulv2siv2di3): Likewise.
5492         (*avx_mulv2siv2di3): Likewise.
5493         (*avx_pmaddwd): Likewise.
5494         (*avx_mulv4si3): Likewise.
5495         (*avx_ashr<mode>3): Likewise.
5496         (*avx_lshr<mode>3): Likewise.
5497         (*avx_ashl<mode>3): Likewise.
5498         (*avx_<code><mode>3): Likewise.
5499         (*avx_eq<mode>3): Likewise.
5500         (*avx_gt<mode>3): Likewise.
5501         (*avx_nand<mode>3): Likewise.
5502         (*avx_nand<mode>3): Likewise.
5503         (*avx_<code><mode>3): Likewise.
5504         (*avx_<code><mode>3): Likewise.
5505         (*avx_packsswb): Likewise.
5506         (*avx_packssdw): Likewise.
5507         (*avx_packuswb): Likewise.
5508         (*avx_punpckhbw): Likewise.
5509         (*avx_punpcklbw): Likewise.
5510         (*avx_punpckhwd): Likewise.
5511         (*avx_punpcklwd): Likewise.
5512         (*avx_punpckhdq): Likewise.
5513         (*avx_punpckldq): Likewise.
5514         (*avx_pinsr<avxmodesuffixs>): Likewise.
5515         (*avx_pinsrq): Likewise.
5516         (*avx_loadld): Likewise.
5517         (*vec_extractv2di_1_rex64_avx): Likewise.
5518         (*vec_extractv2di_1_avx): Likewise.
5519         (*vec_dupv2di_avx): Likewise.
5520         (*vec_concatv2si_avx): Likewise.
5521         (*vec_concatv4si_1_avx): Likewise.
5522         (*vec_concatv2di_avx): Likewise.
5523         (*vec_concatv2di_rex64_avx): Likewise.
5524         (*avx_uavgv16qi3): Likewise.
5525         (*avx_uavgv8hi3): Likewise.
5526         (*avx_psadbw): Likewise.
5527         (avx_movmskp<avxmodesuffixf2c>256): Likewise.
5528         (*avx_phaddwv8hi3): Likewise.
5529         (*avx_phadddv4si3): Likewise.
5530         (*avx_phaddswv8hi3): Likewise.
5531         (*avx_phsubwv8hi3): Likewise.
5532         (*avx_phsubdv4si3): Likewise.
5533         (*avx_phsubswv8hi3): Likewise.
5534         (*avx_pmaddubsw128): Likewise.
5535         (*avx_pmulhrswv8hi3): Likewise.
5536         (*avx_pshufbv16qi3): Likewise.
5537         (*avx_psign<mode>3): Likewise.
5538         (*avx_palignrti): Likewise.
5539         (avx_blendp<avxmodesuffixf2c><avxmodesuffix>): Likewise.
5540         (avx_blendvp<avxmodesuffixf2c><avxmodesuffix>): Likewise.
5541         (avx_dpp<avxmodesuffixf2c><avxmodesuffix>): Likewise.
5542         (*avx_mpsadbw): Likewise.
5543         (*avx_packusdw): Likewise.
5544         (*avx_pblendvb): Likewise.
5545         (*avx_pblendw): Likewise.
5546         (avx_vtestp<avxmodesuffixf2c><avxmodesuffix>): Likewise.
5547         (avx_ptest256): Likewise.
5548         (avx_roundp<avxmodesuffixf2c>256): Likewise.
5549         (*avx_rounds<ssemodesuffixf2c>): Likewise.
5550         (*avx_aesenc): Likewise.
5551         (*avx_aesenclast): Likewise.
5552         (*avx_aesdec): Likewise.
5553         (*avx_aesdeclast): Likewise.
5554         (avx_vzeroupper): Likewise.
5555         (avx_vzeroupper_rex64): Likewise.
5556         (avx_vpermil<mode>): Likewise.
5557         (avx_vpermilvar<mode>3): Likewise.
5558         (avx_vpermil2<mode>3): Likewise.
5559         (avx_vperm2f128<mode>3): Likewise.
5560         (avx_vbroadcasts<avxmodesuffixf2c><avxmodesuffix>): Likewise.
5561         (avx_vbroadcastss256): Likewise.
5562         (avx_vbroadcastf128_p<avxmodesuffixf2c>256): Likewise.
5563         (avx_vinsertf128<mode>): Likewise.
5564         (vec_set_lo_<mode>): Likewise.
5565         (vec_set_hi_<mode>): Likewise.
5566         (vec_set_lo_<mode>): Likewise.
5567         (vec_set_hi_<mode>): Likewise.
5568         (vec_set_lo_v16hi): Likewise.
5569         (vec_set_hi_v16hi): Likewise.
5570         (vec_set_lo_v32qi): Likewise.
5571         (vec_set_hi_v32qi): Likewise.
5572         (avx_maskloadp<avxmodesuffixf2c><avxmodesuffix>): Likewise.
5573         (avx_maskstorep<avxmodesuffixf2c><avxmodesuffix>): Likewise.
5574         (avx_<avxmodesuffixp><avxmodesuffix>_<avxmodesuffixp>): Likewise.
5575         (avx_<avxmodesuffixp>_<avxmodesuffixp><avxmodesuffix>): Likewise.
5576         (vec_init<mode>): Likewise.
5577         (*vec_concat<mode>_avx): Likewise.
5578         (blendbits): Support V8SF and V4DF.
5579         (sse2_movq128): Support AVX.
5580         (<sse>_movnt<mode>): Likewise.
5581         (sse2_movntv2di): Likewise.
5582         (sse_rcpv4sf2): Likewise.
5583         (sse_sqrtv4sf2): Likewise.
5584         (sse_rsqrtv4sf2): Likewise.
5585         (<sse>_comi): Likewise.
5586         (<sse>_ucomi): Likewise.
5587         (sse_cvtss2si): Likewise.
5588         (sse_cvtss2si_2): Likewise.
5589         (sse_cvtss2siq): Likewise.
5590         (sse_cvtss2siq_2): Likewise.
5591         (sse_cvttss2si): Likewise.
5592         (sse_cvttss2siq): Likewise.
5593         (sse2_cvtsd2si): Likewise.
5594         (sse2_cvtsd2si_2): Likewise.
5595         (sse2_cvtsd2siq): Likewise.
5596         (sse2_cvtsd2siq_2): Likewise.
5597         (sse2_cvttsd2si): Likewise.
5598         (sse2_cvttsd2siq): Likewise.
5599         (sse2_cvtdq2pd): Likewise.
5600         (*sse2_cvtpd2dq): Likewise.
5601         (*sse2_cvttpd2dq): Likewise.
5602         (*sse2_cvtpd2ps): Likewise.
5603         (sse2_cvtps2pd): Likewise.
5604         (sse3_movshdup): Likewise.
5605         (sse3_movsldup): Likewise.
5606         (sse_storehps): Likewise.
5607         (*sse4_1_extractps): Likewise.
5608         (sse2_storelpd): Likewise.
5609         (vec_dupv2df_sse3): Likewise.
5610         (*vec_concatv2df_sse3): Likewise.
5611         (*sse4_1_pextrb): Likewise.
5612         (*sse4_1_pextrb_memory): Likewise.
5613         (*sse2_pextrw): Likewise.
5614         (*sse4_1_pextrw_memory): Likewise.
5615         (*sse4_1_pextrd): Likewise.
5616         (*sse4_1_pextrq): Likewise.
5617         (sse2_pshufd_1): Likewise.
5618         (sse2_pshuflw_1): Likewise.
5619         (sse2_pshufhw_1): Likewise.
5620         (*sse2_storeq_rex64): Likewise.
5621         (*vec_dupv4si): Likewise.
5622         (<sse>_movmskp<ssemodesuffixf2c>): Likewise.
5623         (sse2_pmovmskb): Likewise.
5624         (*sse2_maskmovdqu): Likewise.
5625         (*sse2_maskmovdqu_rex64): Likewise.
5626         (sse_ldmxcsr): Likewise.
5627         (sse_stmxcsr): Likewise.
5628         (abs<mode>2): Likewise.
5629         (sse4_1_movntdqa): Likewise.
5630         (sse4_1_phminposuw): Likewise.
5631         (sse4_1_extendv8qiv8hi2): Likewise.
5632         (*sse4_1_extendv8qiv8hi2): Likewise.
5633         (sse4_1_extendv4qiv4si2): Likewise.
5634         (*sse4_1_extendv4qiv4si2): Likewise.
5635         (sse4_1_extendv2qiv2di2): Likewise.
5636         (*sse4_1_extendv2qiv2di2): Likewise.
5637         (sse4_1_extendv4hiv4si2): Likewise.
5638         (*sse4_1_extendv4hiv4si2): Likewise.
5639         (sse4_1_extendv2hiv2di2): Likewise.
5640         (*sse4_1_extendv2hiv2di2): Likewise.
5641         (sse4_1_extendv2siv2di2): Likewise.
5642         (*sse4_1_extendv2siv2di2): Likewise.
5643         (sse4_1_zero_extendv8qiv8hi2): Likewise.
5644         (*sse4_1_zero_extendv8qiv8hi2): Likewise.
5645         (sse4_1_zero_extendv4qiv4si2): Likewise.
5646         (*sse4_1_zero_extendv4qiv4si2): Likewise.
5647         (sse4_1_zero_extendv2qiv2di2): Likewise.
5648         (*sse4_1_zero_extendv2qiv2di2): Likewise.
5649         (sse4_1_zero_extendv4hiv4si2): Likewise.
5650         (*sse4_1_zero_extendv4hiv4si2): Likewise.
5651         (sse4_1_zero_extendv2hiv2di2): Likewise.
5652         (*sse4_1_zero_extendv2hiv2di2): Likewise.
5653         (sse4_1_zero_extendv2siv2di2): Likewise.
5654         (*sse4_1_zero_extendv2siv2di2): Likewise.
5655         (sse4_1_ptest): Likewise.
5656         (sse4_1_roundp<ssemodesuffixf2c>): Likewise.
5657         (sse4_2_pcmpestri): Likewise.
5658         (sse4_2_pcmpestrm): Likewise.
5659         (sse4_2_pcmpistri): Likewise.
5660         (sse4_2_pcmpistrm): Likewise.
5661         (aesimc): Likewise.
5662         (aeskeygenassist): Likewise.
5663
5664 2008-08-28  Uros Bizjak  <ubizjak@gmail.com>
5665
5666         * config/i386/predicates.md (vzeroall_operation): New.
5667
5668         * config/i386/sse.md (avx_vzeroall): New.
5669         (*avx_vzeroall): Likewise.
5670
5671 2008-08-28  Paul Brook  <paul@codesourcery.com>
5672             Mark Shinwell  <shinwell@codesourcery.com>
5673             Richard Earnshaw  <richard.earnshaw@arm.com>
5674
5675         * config/arm/arm.c (TARGET_MAX_ANCHOR_OFFSET): New.
5676         (TARGET_MIN_ANCHOR_OFFSET): New.
5677         (arm_override_options): Set correct anchor ranges for Thumb-1
5678         and Thumb-2 if required.
5679         (legitimize_pic_address): Handle case involving a TLS symbol
5680         reference with an addend.
5681         (arm_optimization_options): Enable section anchors at -O1 and
5682         above.
5683         * config/arm/arm.h (OPTIMIZATION_OPTIONS): New.
5684         * config/arm/arm-protos.h (arm_optimization_options): New.
5685
5686 2008-08-28  Nick Clifton  <nickc@redhat.com>
5687
5688         * config/stormy16/stormy16.h (IRA_COVER_CLASSES): Define.
5689         * config/stormy16/stormy16.md (zero_extendqihi2): Fix length
5690         attribute.
5691
5692         * config/v850/v850.h (IRA_COVER_CLASSES): Define.
5693         * config/v850/v850.md (return): Remove frame size restriction.
5694
5695         * config/mcore/mcore.h (IRA_COVER_CLASSES): Define.
5696
5697         * config/iq2000/iq2000.h (IRA_COVER_CLASSES): Define.
5698
5699         * config/fr30/fr30.h (IRA_COVER_CLASSES): Define.
5700
5701         * config/m32r/m32r.h (IRA_COVER_CLASSES): Define.
5702
5703 2008-08-28  Paul Brook  <paul@codesourcery.com>
5704
5705         * config/arm/vfp11.md: Update license notice.
5706         * config/arm/cortex-r4.md: Ditto.
5707
5708 2008-08-28  Richard Guenther  <rguenther@suse.de>
5709
5710         PR tree-optimization/37207
5711         * tree-ssa-ifcombine.c (recognize_single_bit_test): Fix
5712         tuplification bug.
5713
5714 2008-08-28  Dodji Seketeli  <dodji@redhat.com>
5715
5716         PR c++/36741
5717         * tree.c (int_fits_type_p): Don't forget unsigned integers
5718           of type sizetype which higher end word equals -1.
5719
5720 2008-08-28  Ira Rosen  <irar@il.ibm.com>
5721
5722         * target.h (struct vectorize): Add new target builtin.
5723         * tree-vectorizer.c (destroy_loop_vec_info): Call
5724         vect_free_slp_instance instead of vect_free_slp_node.
5725         * tree-vectorizer.h (enum slp_load_perm_type): New.
5726         (struct _slp_instance): Add new fields.
5727         (SLP_INSTANCE_LOAD_PERMUTATION): New.
5728         (SLP_INSTANCE_LOADS): New.
5729         (vect_free_slp_tree): Remove.
5730         (vect_free_slp_instance): Declare.
5731         (SLP_TREE_LOADS_PERM_TYPE, TARG_VEC_PERMUTE_COST): New.
5732         (vectorizable_load): Add argument.
5733         (vect_transform_slp_perm_load): New.
5734         * tree-vect-analyze.c (vect_analyze_operations): Add an argument to
5735         vectorizable_load.
5736         (vect_get_place_in_interleaving_chain): New function.
5737         (vect_free_slp_tree): Make static.
5738         (vect_free_slp_instance): New function.
5739         (vect_build_slp_tree): Add new arguments. Allow load permutations and
5740         collect the load location in the interleaving chain.
5741         (vect_supported_slp_permutation_p): New function.
5742         (vect_supported_load_permutation_p): Likewise.
5743         (vect_analyze_slp_instance): In case of loads permutation, call
5744         vect_supported_load_permutation_p to check that the permutation is
5745         supported.
5746         * target-def.h (TARGET_VECTORIZE_BUILTIN_VEC_PERM): New.
5747         * tree-vect-transform.c (vect_transform_stmt): Add new argument.
5748         (vect_create_mask_and_perm): New function.
5749         (vect_get_mask_element, vect_transform_slp_perm_load): Likewise.
5750         (vectorizable_load): Add an argument. Don't keep the created vectors
5751         statements in the node if permutation is required. Call
5752         vect_transform_slp_perm_load to generate the permutation.
5753         (vect_transform_stmt): Add new argument. Call vectorizable_load with
5754         additional argument.
5755         (vect_schedule_slp_instance): In case of loads permutation, allocate
5756         vectorized statements structure for all the related SLP nodes. Call
5757         vect_transform_stmt with addditional argument.
5758         (vect_transform_loop): Call vect_transform_stmt with correct arguments.
5759         * config/spu/spu.c (spu_builtin_vec_perm): New.
5760         (TARGET_VECTORIZE_BUILTIN_VEC_PERM): Redefine.
5761         * config/spu/spu.h (TARG_VEC_PERMUTE_COS): Define.
5762         * config/rs6000/rs6000.c (rs6000_builtin_vec_perm): New.
5763         (TARGET_VECTORIZE_BUILTIN_VEC_PERM): Redefine.
5764
5765 2008-08-28  Chris Fairles  <chris.fairles@gmail.com>
5766
5767         * gthr-posix.h (__gthread_create,  __gthread_join, __gthread_detach,
5768         __gthread_mutex_timed_lock, __gthread_recursive_mutex_timed_lock,
5769         __gthread_cond_signal, __gthread_cond_timedwait,
5770         __gthread_cond_timedwait_recursive): New functions.
5771         * gthr-posix.c (pthread_mutex_timedlock, pthread_cond_timedwait):
5772         Likewise.
5773         * gthr.h: Comment on defining __GTHREADS_CXX0X macro in conforming
5774         thread interfaces.
5775
5776 2008-08-28  Richard Guenther  <rguenther@suse.de>
5777
5778         PR middle-end/37005
5779         * fold-const.c (maybe_canonicalize_comparison_1): Require
5780         undefined overflow only for canonicalizing A +- CST cmp CST.
5781         Make sure to not generate new constants that are not inside
5782         their TYPE_MIN/MAX_VALUE range.
5783         (maybe_canonicalize_comparison): Remove undefined overflow
5784         checking from here.
5785         (fold_binary): Remove now duplicate folding.
5786
5787 2008-08-27  Paolo Carlini  <paolo.carlini@oracle.com>
5788
5789         * c-typeck.c (convert_for_assignment): Adjust WARN_FOR_ASSIGNMENT
5790         use not updated in the last change.
5791
5792 2008-08-27  Kaz Kojima  <kkojima@gcc.gnu.org>
5793
5794         * config/sh/sh.h (REG_CLASS_CONTENTS): Drop fr32 from FPUL_REGS.
5795         (IRA_COVER_CLASSES): Add FPUL_REGS.
5796
5797 2008-08-27  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
5798
5799         PR 37217
5800         * c-common.c (conversion_warning): Check for null operands.
5801
5802 2008-08-27  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
5803
5804         PR c/31673
5805         * c-decl.c (check_for_loop_decls): Improve error message. Give
5806         hint.
5807
5808 2008-08-27  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
5809
5810         PR c/37186
5811         * c-typeck.c (WARN_FOR_ASSIGNMENT): Add OPT parameter.
5812         (convert_for_assignment): Pass corrent OPT_W* parameter to
5813         WARN_FOR_ASSIGNMENT.
5814
5815 2008-08-27  Paolo Carlini  <paolo.carlini@oracle.com>
5816
5817         PR c++/35321
5818         * c-common.c (fold_offsetof_1): Handle TARGET_EXPR like CALL_EXPR.
5819
5820 2008-08-27  Paul Brook  <paul@codesourcery.com>
5821
5822         * config.gcc: Loosen checks for arm uclinux eabi targets.
5823
5824 2008-08-27  Paul Brook  <paul@codesourcery.com>
5825
5826         * config/arm/t-arm-coff (LIB1ASMFUNCS): Add missing undescrore on
5827         _clzsi2.
5828         * config/arm/t-linux (LIB1ASMFUNCS): Ditto.
5829
5830 2008-08-26  Douglas Gregor  <doug.gregor@gmail.com>
5831
5832         * c-common.c (do_switch_warnings): Look through the CONST_DECLs in
5833         the enumerators of an ENUMERAL_TYPE.
5834         * dbxout.c (dbxout_type): Ditto.
5835
5836 2008-08-26  Andrew Pinski  <andrew_pinski@playstation.sony.com>
5837
5838         PR rtl-opt/37219
5839         * fwprop.c (fwprop): Check that the loop_father is the outer loop.
5840         (fwprop_addr): Check that the loop_father is not the outer loop.
5841
5842 2008-08-26  Paul Brook  <paul@codesourcery.com>
5843
5844         * config/arm/vfp.md: Document fmul{s,d} and fmac{s,d} types.
5845         Remove documentation entry for fmul type.
5846         Use fmuls to annotate single-precision multiplication patterns,
5847         fmuld to annotate double-precision multiplication patterns,
5848         fmacs to annotate single-precision multiply-accumulate patterns
5849         and fmacd to annotate double-precision multiply-accumulate patterns.
5850         * config/arm/vfp11.md: Update reservations accordingly.
5851         * config/arm/arm.md: Note that certain values of the "type"
5852         attribute are documented in vfp.md.
5853         * config/arm/arm1020e.md: Remove out of date duplicate comment.
5854         (v10_cvt): Use new fmul types.
5855
5856 2008-08-26  Paul Brook  <paul@codesourcery.com>
5857
5858         * config/arm/vfp.md: Move pipeline description for VFP11 to...
5859         * config/arm/vfp11.md: ...here.  New.
5860         * config/arm/arm.md: Include vfp11.md.
5861
5862 2008-08-26  Hans-Peter Nilsson  <hp@axis.com>
5863
5864         * opts.c (decode_options) [!IRA_COVER_CLASSES]: Add missing
5865         parameter to inform call.
5866
5867 2008-08-26  Jeff Law  <law@redhat.com>
5868
5869         * mn10300.md (movqi, movhi): Split i->d*a case into two cases to
5870         avoid the possibility of getting DATA_OR_ADDRESS_REGS as the
5871         preferred class when copying a constant into a partial word register.
5872
5873 2008-08-26  Ben Elliston  <bje@au.ibm.com>
5874
5875         * rtlanal.c: Fix uses of "it's" with "its" where appropriate.
5876         * cp/typeck.c: Likewise.
5877         * cp/tree.c: Likewise.
5878         * gimple-low.c: Likewise.
5879         * jump.c: Likewise.
5880
5881 2008-08-26  Vladimir Makarov  <vmakarov@redhat.com>
5882
5883         * ira-build.c, ira-color.c, ira-costs.c, ira.h, ira-lives.c,
5884         ira.c, ira-conflicts.c, ira-emit.c, ira-int.h: New files.
5885
5886         * doc/passes.texi: Describe IRA.
5887
5888         * doc/tm.texi (IRA_COVER_CLASSES,
5889         IRA_HARD_REGNO_ADD_COST_MULTIPLIER): Describe the new macros.
5890
5891         * doc/invoke.texi (ira-max-loops-num): Describe the new parameter.
5892         (-fira, -fira-algorithm, -fira-coalesce, -fno-ira-move-spills,
5893         -fira-propagate-cost, -fno-ira-share-save-slots,
5894         -fno-ira-share-spill-slots, -fira-verbose): Describe new options.
5895
5896         * flags.h (ira_algorithm): New enumeration.
5897         (flag_ira_algorithm, flag_ira_verbose): New external variable
5898         declarations.
5899
5900         * postreload.c (gate_handle_postreload): Don't do post reload
5901         optimizations unless the reload is completed.
5902
5903         * reload.c (push_reload, find_dummy_reload): Use DF_LR_OUT for
5904         IRA.
5905
5906         * tree-pass.h (pass_ira): New external variable declaration.
5907
5908         * reload.h: Add 2008 to the Copyright.
5909
5910         * cfgloopanal.c: Include params.h.
5911         (estimate_reg_pressure_cost): Decrease cost for IRA optimization
5912         mode.
5913
5914         * params.h (IRA_MAX_LOOPS_NUM): New macro.
5915
5916         * toplev.c (ira.h): New include.
5917         (flag_ira_algorithm, flag_ira_verbose): New external variables.
5918         (backend_init_target): Call ira_init.
5919         (backend_init): Call ira_init_once.
5920         (finalize): Call finish_ira_once.
5921
5922         * toplev.h (flag_ira, flag_ira_coalesce, flag_ira_move_spills,
5923         flag_ira_share_save_slots, flag_ira_share_spill_slots): New
5924         external variables.
5925
5926         * regs.h (contains_reg_of_mode, move_cost, may_move_in_cost,
5927         may_move_out_cost): New external variable declarations.
5928         (move_table): New typedef.
5929
5930         * caller-save.c: Include headers output.h and ira.h.
5931         (no_caller_save_reg_set): New global variable.
5932         (save_slots_num, save_slots): New variables.
5933         (reg_save_code, reg_restore_code, add_stored_regs): Add
5934         prototypes.
5935         (init_caller_save): Set up no_caller_save_reg_set.
5936         (init_save_areas): Reset save_slots_num.
5937         (saved_hard_reg): New structure.
5938         (hard_reg_map, saved_regs_num, all_saved_regs): New variables.
5939         (initiate_saved_hard_regs, new_saved_hard_reg,
5940         finish_saved_hard_regs, saved_hard_reg_compare_func): New
5941         functions.
5942         (setup_save_areas): Add code for sharing stack slots.
5943         (all_blocks): New variable.
5944         (save_call_clobbered_regs): Process pseudo-register too.
5945         (mark_set_regs): Process pseudo-register too.
5946         (insert_one_insn): Put the insn after bb note in a empty basic
5947         block.  Add insn check.
5948
5949         * global.c (eliminable_regset): Make it external.
5950         (mark_elimination): Use DF_LR_IN for IRA.
5951         (pseudo_for_reload_consideration_p): New.
5952         (build_insn_chain): Make it external.  Don't ignore spilled
5953         pseudos for IRA.  Use pseudo_for_reload_consideration_p.
5954         (gate_handle_global_alloc): New function.
5955         (pass_global_alloc): Add the gate function.
5956
5957         * opts.c (decode_options): Set up flag_ira.  Print the warning for
5958         -fira.
5959         (common_handle_option): Process -fira-algorithm and -fira-verbose.
5960
5961         * timevar.def (TV_IRA, TV_RELOAD): New passes.
5962
5963         * regmove.c (regmove_optimize): Don't do replacement of output for
5964         IRA.
5965
5966         * hard-reg-set.h (no_caller_save_reg_set, reg_class_subclasses):
5967         New external variable declarations.
5968
5969         * local-alloc.c (update_equiv_regs): Make it external.  Return
5970         true if jump label rebuilding should be done.  Rescan new_insn for
5971         notes.
5972         (gate_handle_local_alloc): New function.
5973         (pass_local_alloc): Add the gate function.
5974
5975         * alias.c (value_addr_p, stack_addr_p): New functions.
5976         (nonoverlapping_memrefs_p): Use them for IRA.
5977
5978         * common.opt (fira, fira-algorithm, fira-coalesce,
5979         fira-move-spills, fira-share-save-slots, fira-share-spill-slots,
5980         fira-verbose): New options.
5981
5982         * regclass.c (reg_class_subclasses, contains_reg_of_mode,
5983         move_cost, may_move_in_cost, may_move_out_cost): Make the
5984         variables external.
5985         (move_table): Remove typedef.
5986         (init_move_cost): Make it external.
5987         (allocate_reg_info, resize_reg_info, setup_reg_classes): New
5988         functions.
5989
5990         * rtl.h (init_move_cost, allocate_reg_info, resize_reg_info,
5991         setup_reg_classes): New function prototypes.
5992         (eliminable_regset): New external variable declaration.
5993         (build_insn_chain, update_equiv_regs): New function prototypes.
5994
5995         * Makefile.in (IRA_INT_H): New definition.
5996         (OBJS-common): Add ira.o, ira-build.o, ira-costs.o,
5997         ira-conflicts.o, ira-color.o, ira-emit.o, and ira-lives.o.
5998         (reload1.o, toplev.o): Add dependence on ira.h.
5999         (cfgloopanal.o): Add PARAMS_H.
6000         (caller-save.o): Add dependence on output.h and ira.h.
6001         (ira.o, ira-build.o, ira-costs.o, ira-conflicts.o, ira-color.o,
6002         ira-emit.o, ira-lives.o): New entries.
6003
6004         * passes.c (pass_ira): New pass.
6005
6006         * params.def (PARAM_IRA_MAX_LOOPS_NUM): New parameter.
6007
6008         * reload1.c (ira.h): Include the header.
6009         (changed_allocation_pseudos): New bitmap.
6010         (init_reload): Initiate the bitmap.
6011         (compute_use_by_pseudos): Permits spilled registers in FROM.
6012         (temp_pseudo_reg_arr): New variable.
6013         (reload): Allocate and free temp_pseudo_reg_arr.  Sort pseudos for
6014         IRA.  Call alter_reg with the additional parameter.  Don't clear
6015         spilled_pseudos for IRA.  Restore original insn chain for IRA.
6016         Clear changed_allocation_pseudos at the end of reload.
6017         (calculate_needs_all_insns): Call IRA's mark_memory_move_deletion.
6018         (hard_regno_to_pseudo_regno): New variable.
6019         (count_pseudo): Check spilled pseudos.  Set up
6020         hard_regno_to_pseudo_regno.
6021         (count_spilled_pseudo): Check spilled pseudos. Update
6022         hard_regno_to_pseudo_regno.
6023         (find_reg): Use better_spill_reload_regno_p.  Check
6024         hard_regno_to_pseudo_regno.
6025         (alter_reg): Set up spilled_pseudos.  Add a new parameter.  Add
6026         code for IRA.
6027         (eliminate_regs_1): Use additional parameter for alter_reg.
6028         (finish_spills): Set up pseudo_previous_regs only for spilled
6029         pseudos.  Call reassign_pseudos once for all spilled pseudos, pass
6030         more arguments.  Don't clear live_throughout and dead_or_set for
6031         spilled pseudos.  Use additional parameter for alter_reg.  Call
6032         mark_allocation_change.  Set up changed_allocation_pseudos.
6033         Remove sanity check.
6034         (emit_input_reload_insns, delete_output_reload): Use additional
6035         parameter for alter_reg.  Call mark_allocation_change.
6036         (substitute, gen_reload_chain_without_interm_reg_p): New
6037         functions.
6038         (reloads_conflict): Use gen_reload_chain_without_interm_reg_p.
6039
6040         * testsuite/gcc.dg/20080410-1.c: New file.
6041
6042         * config/s390/s390.h (IRA_COVER_CLASSES,
6043         IRA_HARD_REGNO_ADD_COST_MULTIPLIER): Define.
6044
6045         * config/sparc/sparc.h (IRA_COVER_CLASSES): New macro.
6046
6047         * config/i386/i386.h (IRA_COVER_CLASSES): Ditto.
6048
6049         * config/ia64/ia64.h (IRA_COVER_CLASSES): Ditto.
6050
6051         * config/rs6000/rs6000.h (IRA_COVER_CLASSES): Ditto.
6052
6053         * config/arm/arm.h (IRA_COVER_CLASSES): Ditto.
6054
6055         * config/alpha/alpha.h (IRA_COVER_CLASSES): Ditto.
6056
6057         2008-08-24  Jeff Law  <law@redhat.com>
6058         * ira.c (setup_reg_class_intersect_union): Prefer smallest class
6059         when ignoring unavailable registers.
6060
6061         2008-08-24  Jeff Law  <law@redhat.com>
6062         * ira-color.c (coalesced_pseudo_reg_slot_compare): Check
6063         FRAME_GROWS_DOWNWARD and STACK_GROWS_DOWNWARD.
6064         * ira.c (setup_eliminable_regset): Check stack_realign_needed.
6065         * config/mn10300/mn10300.h (IRA_COVER_CLASSES): New macro.
6066
6067         2008-06-03 Steve Chamberlain <steve.chamberlain@gmail.com>
6068         * ira-build.c (allocno_range_compare_func): Stabilize sort.
6069
6070         2008-05-29 Andy Hutchinson <hutchinsonandy@aim.com>
6071         * config/avr/avr.h (IRA_COVER_CLASSES): New macro.
6072         * reload1.c (find_reg): Process registers in register allocation order.
6073
6074         2008-05-10 Richard Sandiford <rsandifo@nildram.co.uk>
6075         * toplev.c (backend_init_target): Move ira_init call from
6076         here...
6077         (lang_dependent_init_target): ...to here.
6078
6079         2008-05-10 Richard Sandiford <rsandifo@nildram.co.uk>
6080         * ira.c (setup_class_subset_and_memory_move_costs): Don't
6081         calculate memory move costs for NO_REGS.
6082
6083         2008-05-05 Kaz Kojima <kkojima@gcc.gnu.org>
6084         * ira-color.c (ira_fast_allocation): Use no_stack_reg_p only if
6085         STACK_REGS is defined.
6086
6087         2008-04-08 Andrew Pinski <andrew_pinski@playstation.sony.com>
6088         * config/spu/spu.h (IRA_COVER_CLASSES): New macro.
6089
6090         2008-04-04 Bernd Schmidt <bernd.schmidt@analog.com>
6091         * config/bfin/bfin.h (IRA_COVER_CLASSES): New macro.
6092
6093         2008-04-04 Kaz Kojima <kkojima@gcc.gnu.org>
6094         * config/sh/sh.h (IRA_COVER_CLASSES): Define.
6095         * config/sh/sh.md (movsicc_true+3): Check if emit returns a
6096         barrier.
6097
6098 2008-08-26  Victor Kaplansky  <victork@il.ibm.com>
6099             Dorit Nuzman  <dorit@il.ibm.com>
6100
6101         * gcc/config/spu/spu.md (vec_extract_evenv4si,
6102         vec_extract_evenv4sf, vec_extract_evenv8hi,
6103         vec_extract_evenv16qi, vec_extract_oddv4si,
6104         vec_extract_oddv4sf, vec_extract_oddv8hi, vec_extract_oddv16qi,
6105         vec_interleave_highv4sf, vec_interleave_lowv4sf,
6106         vec_interleave_highv4si, vec_interleave_lowv4si,
6107         vec_interleave_highv8hi, vec_interleave_lowv8hi,
6108         vec_interleave_highv16qi, vec_interleave_lowv16qi,
6109         vec_pack_trunc_v8hi, vec_pack_trunc_v4si): Implement.S
6110
6111 2008-08-25  Janis Johnson  <janis187@us.ibm.com>
6112
6113         PR target/36756
6114         * config/rs6000/rs6000.c (optimization_options): Don't default to
6115         section anchors without toplevel reorder.
6116
6117 2008-08-25  Ulrich Weigand  <Ulrich.Weigand@de.ibm.com>
6118
6119         * config/spu/spu_mfcio.h (mfc_begin_critical_section): New function.
6120         (mfc_end_critical_section): Likewise.
6121
6122 2008-08-25  Ulrich Weigand  <Ulrich.Weigand@de.ibm.com>
6123
6124         * config/rs6000/rs6000.c (rs6000_handle_altivec_attribute): Propagate
6125         all type qualifiers from element type to vector type.
6126
6127 2008-08-25  David Daney  <ddaney@avtrex.com>
6128
6129         * config/mips/mips.md (immediate_insn): Move up in file, fix
6130         comment typo, reformat.
6131         (fetchop_bit, atomic_hiqi_op memory_barrier,
6132         sync_compare_and_swap<mode>, compare_and_swap_12, sync_add<mode>,
6133         sync_<optab><mode>, sync_<optab>_12, sync_old_<optab><mode>,
6134         sync_old_<optab>_12, sync_new_<optab><mode>, sync_new_<optab>_12,
6135         sync_nand<mode>, sync_nand_12, sync_old_nand<mode>,
6136         sync_old_nand_12, sync_new_nand<mode>, sync_new_nand_12,
6137         sync_sub<mode>, sync_old_add<mode>, sync_old_sub<mode>,
6138         sync_new_add<mode>, sync_new_sub<mode>, sync_<optab><mode>,
6139         sync_old_<optab><mode>, sync_new_<optab><mode>, sync_nand<mode>,
6140         sync_old_nand<mode>, sync_new_nand<mode>,
6141         sync_lock_test_and_set<mode>, sync_lock_test_and_set<mode>,
6142         test_and_set_12): Moved to sync.md.
6143         (sync.md): Include.
6144         * config/mips/sync.md: New file.
6145
6146 2008-08-25  Richard Henderson  <rth@redhat.com>
6147
6148         * dwarf2out.c (def_cfa_1): Don't scale by DWARF_CIE_DATA_ALIGNMENT.
6149         (regsave): Likewise.
6150         (lookup_cfa_1): Don't rescale by DWARF_CIE_DATA_ALIGNMENT.
6151         (output_cfi_directive): Likewise.
6152         (div_data_align): New.
6153         (output_cfi): Use it.
6154
6155 2008-08-24  Adam Nemet  <anemet@caviumnetworks.com>
6156
6157         * config.gcc (mips64*-*-linux*): Handle mips64octeon*-*-linux*.
6158         * config/mips/mips.h (enum processor_type): Add PROCESSOR_OCTEON.
6159         (TARGET_OCTEON): New macro.
6160         (TARGET_CPU_CPP_BUILTINS): Define __OCTEON__ for Octeon.
6161         (MIPS_ISA_LEVEL_SPEC, MIPS_ARCH_FLOAT_SPEC): Handle -march=octeon.
6162         (ISA_HAS_POP): New macro.
6163         * config/mips/driver-native.c (host_detect_local_cpu): Handle
6164         Octeon.
6165         * config/mips/mips.c (mips_cpu_info_table, mips_rtx_cost_data):
6166         Handle Octeon.
6167         * config/mips/mips.md (cpu): Add octeon.
6168         (type): Add pop attribute value.
6169         (popcount<mode>2): New pattern.
6170         * doc/invoke.texi (-march=@var{arch}): Add octeon.
6171
6172 2008-08-24  Jan Hubicka  <jh@suse.cz>
6173
6174         * doc/invoke.texi (-fipa-cp-clone): New option.
6175         (-fipa-cp): Update docs.
6176         (--param ipcp-unit-growth):New.
6177         * ipa-cp.c: Include fibheap.h, params.h
6178         (ipcp_initialize_node_lattices): When not cloning, all externally
6179         visible functions are bottom.
6180         (ipcp_need_redirect_p): Accept clones.
6181         (ipcp_insert_stage): Use cost driven heuristics.
6182         (max_count, dead_nodes): New static vars.
6183         (ipcp_need_original_clone_p, ipcp_estimate_cloning_cost,
6184         ipcp_const_param_count): New functions.
6185         * common.opt (ipa-cp-clone): New command line option.
6186         * params.def (ipcp-unit-growth): New.
6187
6188 2008-08-24  Jan Hubicka  <jh@suse.cz>
6189
6190         * tree-inline.c (tree_function_versioning): Look harder
6191         for referenced vars.
6192
6193 2008-08-24  Razya Ladelsky  <razya@il.ibm.com>
6194
6195         PR tree-optimization/37185
6196         * matrix-reorg.c (transform_access_sites): Update changed stmt.
6197
6198 2008-08-23  Jan Hubicka  <jh@suse.cz>
6199
6200         * ipa-cp.c (ipcp_analyze_node): New function.
6201         (ipcp_update_cloned_node): Use it.
6202         (ipcp_init_stage): Likewise.
6203         * ipa-inline.c (function_insertion_hook_holder): New static var.
6204         (analyze_function): Break out from ....
6205         (inline_generate_summary): Here; register insertion hook.
6206         (cgraph_decide_inlining): Remove hook.
6207         (add_new_function): New function.
6208
6209 2008-08-23  Jan Hubicka  <jh@suse.cz>
6210
6211         * opts.c (decode_options): Revert accidental change enabling ipa-cp.
6212
6213 2008-08-23  Jan Hubicka  <jh@suse.cz>
6214
6215         * ipa-cp.c (constant_val_insert): Remove.
6216         (ipcp_propagate_one_const): Remove.
6217         (ipcp_create_replace_map): Always insert replacements to the map.
6218         (ipcp_insert_stage): Do not try to insert statements by hand.
6219         * tree-inline.c (insert_init_stmt): Break out from ...
6220         (setup_one_parameter): ... here; allow NULL BB pointer.
6221         (tree_function_versioning): Use setup_one_parameter to process
6222         replacement map.
6223
6224 2008-08-23  Jan Hubicka  <jh@suse.cz>
6225
6226         * tree.c (decl_address_ip_invariant_p): New function.
6227         * tree.h (decl_address_ip_invariant_p): Declare.
6228         * gimple.c (strip_invariant_refs): Break out from ...
6229         (is_gimple_invariant_address): ... here
6230         (is_gimple_ip_invariant_address): New function.
6231         (is_gimple_ip_invariant): New function.
6232         * gimple.h (is_gimple_ip_invariant_address, is_gimple_ip_invariant):
6233         Declare.
6234
6235         * ipa-cp.c (ipcp_lat_is_const): Remove handling of IPA_CONST_VALUE_REF.
6236         (ipcp_lat_is_insertable): All constants are insertable.
6237         (ipcp_lattice_from_jfunc, ipcp_print_all_lattices): Remove handling of
6238         IPA_CONST_VALUE_REF.
6239         (ipcp_initialize_node_lattices): Propagate all types of operands.
6240         (build_const_val): Do not handle IPA_CONST_VALUE_REF.
6241         (ipcp_create_replace_map): Reformat.
6242         (ipcp_need_redirect_p): Simplify.
6243         (ipcp_insert_stage): Check that argument is used before clonning.
6244         * ipa-prop.c (ipa_print_node_jump_functions): Do not handle
6245         IPA_CONST_REF.
6246         (compute_scalar_jump_functions): Simplify using is_gimple_ip_invariat.
6247         (determine_cst_member_ptr): Keep wrapping ADDR_EXPR of members.
6248         (update_call_notes_after_inlining): Expect ADDR_EXPR in operand.
6249         * ipa-prop.h (jump_func_type): Remove IPA_CONST_REF.
6250         (jump_func_type): Remove IPA_CONST_VALUE_REF.
6251         * tree-inline.c (tree_function_versioning): Add variables referenced
6252         by replacing trees.
6253
6254 2008-08-23  Jan Hubicka  <jh@suse.cz>
6255
6256         PR target/37094
6257         * i386.c (standard_80387_constant_p): Use optimize_size.
6258
6259 2008-08-23  Ira Rosen  <irar@il.ibm.com>
6260
6261         PR tree-optimization/37161
6262         * tree-vectorizer.h (vect_get_smallest_scalar_type): Declare.
6263         * tree-vect-analyze.c (vect_get_smallest_scalar_type): New function.
6264         (vect_determine_vectorization_factor): Move the scalar type
6265         retrieval to vect_get_smallest_scalar_type.
6266         (vect_build_slp_tree): Call vect_get_smallest_scalar_type to get
6267         scalar type. Remove redundant computation.
6268         * tree-vect-transform.c (vect_get_constant_vectors): Add argument.
6269         (vect_get_slp_defs): Take the type of RHS into account if
6270         necessary by calling vect_get_smallest_scalar_type. Call
6271         vect_get_constant_vectors with additional argument.
6272
6273 2008-08-23  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
6274
6275         PR 35648
6276         * doc/invoke.texi (Wwrite-strings): Clarify description.
6277
6278 2008-08-23  Ira Rosen  <irar@il.ibm.com>
6279
6280         PR tree-optimization/37174
6281         * tree-vect-analyze.c (vect_get_and_check_slp_defs): Check that the
6282         def stmt is a part of the loop before accessing its stmt_vec_info.
6283
6284 2008-08-22  Anatoly Sokolov  <aesok@post.ru>
6285
6286         PR target/11259
6287         * config/avr/avr.md (UNSPEC_SWAP): New constants.
6288         (*swap): New insn pattern.
6289         (*ashlqi3): Rename from ashlqi3 insn pattern.
6290         (ashlqi3): New expanders.
6291         (*lshrqi3): Rename from lshrqi3 insn pattern.
6292         (lshrqi3): New expanders.
6293         (ashlqi3_const4, ashlqi3_const5, ashlqi3_const6, lshrqi3_const4,
6294         lshrqi3_const5, lshrqi3_const6): New splitters.
6295         (andi, ashlqi3_l_const4, ashlqi3_l_const5, ashlqi3_l_const6,
6296         lshrqi3_l_const4, lshrqi3_l_const5, lshrqi3_l_const6): Define
6297         peephole2 patterns.
6298
6299 2008-08-22  Richard Guenther  <rguenther@suse.de>
6300
6301         PR tree-optimization/37078
6302         * tree-vrp.c (extract_range_from_unary_expr): Avoid generating
6303         [+INF, +INF] ranges.
6304
6305 2008-08-22  Richard Guenther  <rguenther@suse.de>
6306
6307         PR tree-optimization/37143
6308         * tree-vect-transform.c (vect_create_cond_for_align_checks): Build
6309         a conversion statement instead of a copy.
6310
6311 2008-08-22  Uros Bizjak  <ubizjak@gmail.com>
6312
6313         PR target/37184
6314         * config/i386/i386.c (ix86_match_ccmode): Handle CCAmode,
6315         CCCmode, CCOmode and CCSmode destination modes.
6316
6317         PR target/37191
6318         * config/i386/mmx.md (*vec_extractv2sf_0): Avoid combining registers
6319         from different units in a single alternative.
6320         (*vec_extractv2sf_1): Ditto.
6321         (*vec_extractv2si_0): Ditto.
6322         (*vec_extractv2si_1): Ditto.
6323         * config/i386/sse.md (sse2_storehpd): Ditto.
6324         (sse2_storelpd): Ditto.
6325         (sse2_loadhpd): Ditto.
6326         (sse2_loadlpd): Ditto.
6327
6328         PR target/37197
6329         * config/i386/i386.md (clzsi2_abm): Fix operand 1 constraints.
6330         (popcountsi2): Ditto.
6331         (clzdi2_abm): Ditto.
6332         (popcountdi2): Ditto.
6333         (clzhi2_abm): Ditto.
6334         (popcounthi2): Ditto.
6335
6336 2008-08-22  Richard Guenther  <rguenther@suse.de>
6337
6338         PR middle-end/36548
6339         PR middle-end/37125
6340         * fold-const.c (extract_muldiv_1): Optimize (X * C1) % C2 only
6341         if the multiplication does not overflow.
6342
6343 2008-08-21  Nathan Sidwell  <nathan@codesourcery.com>
6344
6345         * c-ppoutput.c (init_pp_output): Initialize src_line to 1.
6346
6347 2008-08-21  Richard Henderson  <rth@redhat.com>
6348
6349         * configure.ac (HAVE_GAS_CFI_PERSONALITY_DIRECTIVE): Remove
6350         spurrious comma from test.
6351         * configure: Rebuild.
6352
6353 2008-08-21  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
6354
6355         PR 30457
6356         * builtins.c (fold_builtin_next_arg): Add warning about undefined
6357         behaviour.
6358
6359 2008-08-21  Aldy Hernandez  <aldyh@redhat.com>
6360
6361         * c-tree.h (grokfield): New argument.
6362         * c-decl.c (grokfield): Handle new location argument.
6363         * c-parser.c (c_parser_struct_declaration): Pass location to grokfield.
6364
6365 2008-08-21  Richard Guenther  <rguenther@suse.de>
6366
6367         * tree-ssa-ccp.c (ccp_fold): Fold VIEW_CONVERT_EXPRs of constants.
6368
6369 2008-08-21  Jan Hubicka  <jh@suse.cz>
6370
6371         * cgraph.c (first_cgraph_function_insertion_hook): New variable.
6372         (cgraph_add_function_insertion_hook,
6373         cgraph_remove_function_insertion_hook,
6374         cgraph_call_function_insertion_hooks): New functions.
6375         * cgraph.h (cgraph_add_function_insertion_hook,
6376         cgraph_remove_function_insertion_hook,
6377         cgraph_call_function_insertion_hooks): Declare.
6378         * ipa-reference.c (function_insertion_hook_holder): New variable.
6379         (check_operand, look_for_address_of): When checking late, do not care
6380         about module bitmaps.
6381         (add_new_function): New function.
6382         (generate_summary): Register hooks; zero module bitmaps.
6383         (propagate): Unregister hooks.
6384         * ipa-pure-const.c (function_insertion_hook_holder): New variable.
6385         (add_new_function): New function.
6386         (generate_summary): Register hook.
6387         (propagate): Remove hook.
6388
6389         * ipa-cp.c (ipcp_need_redirect_p): Fix to not be constant 0.
6390
6391         * tree-pass.h (pass_ipa_cp): Make ipa_opt_pass.
6392         * ipa-cp.c (ipcp_update_cloned_node): New function.
6393         (build_const_val): Handle functions correctly; bring type logic
6394         into sync with tree-inline.c
6395         (ipcp_init_stage):  Take care of computing stuff needed by
6396         indirect inlining; update clones.
6397         (ipcp_generate_summary): Break out of ipcp_driver.
6398         (ipcp_driver): Do only execution and transformation.
6399         (pass_ipa_cp): Make IPA_PASS.
6400         * tree-ssa-ccp.c (fold_stmt_r): Check type before trying to fold
6401         offset to address.
6402         * ipa-inline.c (inline_indirect_intraprocedural_analysis): When doing
6403         ipcp, some info is already available.
6404         * ipa-prop.c (ipa_count_arguments): Grow edge lists as needed.
6405         * tree-inline.c (remap_ssa_name): Unshare expression.
6406
6407 2008-08-21  Richard Guenther  <rguenther@suse.de>
6408
6409         * tree-ssa-pre.c (insert_into_preds_of_block): Before inserting
6410         a PHI ask VN if it is already available.
6411         * tree-ssa-sccvn.h (vn_phi_lookup): Declare.
6412         * tree-ssa-sccvn.c (vn_phi_lookup): Export.
6413
6414 2008-08-21  Richard Guenther  <rguenther@suse.de>
6415
6416         PR middle-end/36817
6417         * tree-chrec.c (chrec_apply): Always call chrec_fold_plus which
6418         makes sure to produce a result of the correct type.
6419
6420 2008-08-21  Jan Hubicka  <jh@suse.cz>
6421         Backport from LTO branch:
6422
6423         2008-05-05  Kenneth Zadeck <zadeck@naturalbridge.com>
6424                     Jan Hubicka  <jh@suse.cz>
6425
6426         * ipa-pure-const.c
6427         (init_state, finish_state, set_function_state, generate_summary):
6428         New functions.
6429         (scan_stmt): Renamed from scan_function.  Changed to keep state in
6430         local static vars rather than cgraph aux field.
6431         (propagate): Renamed from static_execute. Changed to keep state in
6432         local static vars rather than cgraph aux field.
6433         (pass_ipa_pure_const): Changed from SIMPLE_IPA_PASS to IPA_PASS.
6434         * tree-pass.h (pass_ipa_pure_const): Turn into IPA_PASS.
6435
6436         2008-07-15  Kenneth Zadeck <zadeck@naturalbridge.com>
6437
6438         * tree-pass.h (pass_ipa_reference): Make into ipa_opt_pass.
6439         * ipa-reference.c (init_function_info, generate_summary,
6440         propagate): New functions.
6441         (analyze_function):  Call init_function_info.
6442         (static_execute): Stripped into generate_summary and propagate.
6443         (pass_ipa_reference): Made into ipa_opt_pass.
6444
6445 2008-08-21  Richard Guenther  <rguenther@suse.de>
6446
6447         PR tree-optimization/37181
6448         * tree-vrp.c (extract_range_from_binary_expr): Check for NULL
6449         folding result.
6450         (extract_range_from_unary_expr): Likewise.
6451
6452 2008-08-21  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
6453
6454         * diagnostic.c (pedwarn_at): Rename as pedwarn.
6455         (pedwarn): Delete.
6456         * toplev.h (pedwarn_at): Likewise.
6457         * builtins.c: Update all calls to pedwarn.
6458         * c-lex.c: Likewise.
6459         * toplev.c: Likewise.
6460         * c-tree.h: Likewise.
6461         * c-decl.c: Likewise.
6462         * c-errors.c: Likewise.
6463         * c-typeck.c: Likewise.
6464         * c-common.c: Likewise.
6465         * c-parser.c: Likewise.
6466
6467 2008-08-20  Joseph Myers  <joseph@codesourcery.com>
6468
6469         PR target/31070
6470         * config/sparc/sparc.c (function_arg_slotno): Handle structure
6471         with MODE_VECTOR_INT mode.
6472
6473 2008-08-21  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
6474
6475         PR middle-end/179
6476         * tree-ssa.c (warn_uninit): Do not warn for variables that can be
6477         initialized outside the current module.
6478         (warn_uninitialized_var): Ignore left-hand side when walking the
6479         trees. Ignore address expressions. Examine VUSE operands in gimple
6480         statements with a variable declaration on the right-hand side.
6481
6482 2008-08-20  Richard Sandiford  <rdsandiford@googlemail.com>
6483
6484         PR bootstrap/37155
6485         * rtlanal.c (subreg_offset_representable_p): Revert last change.
6486
6487 2008-08-20  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
6488
6489         PR 35701
6490         * c-common.c (conversion_warning): Do not warn if applying bit-and
6491         operator to unsigned constant that fits in the target type.
6492
6493 2008-08-20  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
6494
6495         PR c++/35602
6496         * c-common.c (conversion_warning): Do not warn for artificial
6497         expressions.
6498
6499 2008-08-20  Richard Guenther  <rguenther@suse.de>
6500
6501         * tree-vrp.c (op_with_constant_singleton_value_range): New function.
6502         (extract_range_from_binary_expr): Fall back to constant propagation.
6503         (extract_range_from_unary_expr): Likewise.
6504
6505 2008-08-20  Richard Guenther  <rguenther@suse.de>
6506
6507         * tree-ssa-ccp.c (maybe_fold_stmt_indirect): Do not mess
6508         with TREE_THIS_VOLATILE on shared nodes.
6509         (fold_stmt_r): Likewise.
6510
6511 2008-08-20  Jakub Jelinek  <jakub@redhat.com>
6512
6513         PR c/37171
6514         * c-parser.c (c_parser_attributes): For keywords use canonical
6515         spelling for attr_name.
6516
6517 2008-08-20  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
6518
6519         * value-prof.c (check_counter): Revert wrong call to error.
6520
6521 2008-08-20  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
6522
6523         * profile.c: Update calls to inform.
6524         * value-prof.c: Update calls to inform.
6525
6526 2008-08-20  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
6527
6528         * diagnostic.c (inform): Add an explicit location_t parameter.
6529         * toplev.h (inform): Update declaration.
6530         * builtins.c: Update all calls to inform.
6531         * c-common.c: Likewise.
6532         * c-decl.c: Likewise.
6533         * c-opts.c: Likewise.
6534         * c-pch.c: Likewise.
6535         * c-pragma.c: Likewise.
6536         * c-typeck.c: Likewise.
6537         * coverage.c: Likewise.
6538         * opts.c: Likewise.
6539         * toplev.c: Likewise.
6540         * tree-cfg.c: Likewise.
6541         * tree-ssa.c: Likewise.
6542
6543 2008-08-20  H.J. Lu  <hongjiu.lu@intel.com>
6544
6545         PR target/37169
6546         * config/i386/i386.c (ix86_expand_vector_init_one_nonzero): In
6547         V2DI mode, for SSE4.1, use movq instead of vector set if the
6548         second element is zero and inter-unit moves are OK.
6549
6550 2008-08-20  Richard Guenther  <rguenther@suse.de>
6551
6552         * tree-ssa-forwprop.c (forward_propagate_addr_expr_1): More
6553         properly handle conversion/copy chains after tuplification.
6554
6555 2008-08-20  Richard Guenther  <rguenther@suse.de>
6556
6557         * passes.c (init_optimization_passes): Move the second
6558         forwprop pass before alias computation.  Remove the second
6559         DCE pass.  Remove the first dominator and phi copy/const
6560         prop passes.
6561
6562 2008-08-20  Nick Clifton  <nickc@redhat.com>
6563
6564         * configure.ac (HAVE_GAS_CFI_DIRECTIVE): Always test for assembler
6565         support of this feature.  Do not assume that a sufficiently new
6566         assembler will support the feature regardless of the target type.
6567         (HAVE_GAS_CFI_PERSONALITY_DIRECTIVE): Likewise.
6568         * configure: Regenerate.
6569
6570 2008-08-20  Richard Guenther  <rguenther@suse.de>
6571
6572         * tree-vrp.c (found_in_subgraph): Remove.
6573         (live): New global static.
6574         (live_on_edge): New function.
6575         (blocks_visited): Remove.
6576         (register_edge_assert_for_2): Use live_on_edge.
6577         (find_conditional_asserts): Remove code dealing with
6578         found_in_subgraph.  Do not walk the CFG.
6579         (find_switch_asserts): Likewise.
6580         (find_assert_locations_1): Renamed from find_assert_locations.
6581         Move finding assert locations for conditional and switch
6582         statements first.  Update live bitmap.  Do not walk the CFG.
6583         (find_assert_locations): New function.
6584         (insert_range_assertions): Remove entry of CFG walk.
6585         Adjust call to find_assert_locations.
6586         * tree-ssa-pre.c (do_regular_insertion): Ignore critical edges
6587         that only can appear because of fake exit edges but assert we
6588         never try to insert on those.
6589         (fini_pre): Do not remove fake exit edges here...
6590         (execute_pre): ...but here, before committing edge inserts.
6591
6592 2008-08-19  Richard Guenther  <rguenther@suse.de>
6593
6594         * passes.c (init_optimization_passes): Exchange store-ccp
6595         with a ccp pass.
6596
6597 2008-08-19  Rafael Espíndola  <espindola@google.com>
6598
6599         * varasm.c (weak_decls): Move earlier in the file.
6600         (assemble_external): Add weak decls to the weak_decls list.
6601         (declare_weak): Don't add decls to the weak_decls list.
6602
6603 2008-08-19  H.J. Lu  <hongjiu.lu@intel.com>
6604
6605         PR target/37157
6606         * config/i386/sse.md (sse2_punpckhqdq, sse2_punpcklqdq): Moved
6607         before (sse2_shufpd_<mode>).
6608
6609 2008-08-19  Jakub Jelinek  <jakub@redhat.com>
6610
6611         PR debug/37156
6612         * pretty-print.c (pp_base_format): Deal with recursive BLOCK trees.
6613         * tree.c (block_nonartificial_location): Likewise.
6614
6615 2008-08-19  Richard Guenther  <rguenther@suse.de>
6616
6617         PR tree-optimization/35972
6618         PR tree-optimization/23094
6619         * tree-ssa-sccvn.h (vn_reference_lookup_pieces): Add maywalk
6620         parameter.
6621         * tree-ssa-sccvn.c (copy_reference_ops_from_ref): Properly
6622         handle MISALIGNED_INDIRECT_REF.
6623         (get_ref_from_reference_ops): New helper.
6624         (vn_reference_lookup_pieces): Walk the use-def chain using the
6625         alias-oracle if requested.
6626         * tree-ssa-pre.c (phi_translate_1): Do reference lookup with
6627         walking the use-def chain.
6628         (compute_avail): But not here.
6629         (create_component_ref_by_pieces_1): Properly handle
6630         MISALIGNED_INDIRECT_REF.
6631         (do_regular_insertion): Handle fully redundant
6632         expressions after PHI-translation also for SSA_NAME values, not
6633         only constants.  Correctly use edoubleprime for that.
6634
6635 2008-08-19  Ira Rosen  <irar@il.ibm.com>
6636
6637         * tree-vectorizer.c (supportable_widening_operation): Support
6638         multi-step conversion, return the number of steps in such conversion
6639         and the required intermediate types.
6640         (supportable_narrowing_operation): Likewise.
6641         * tree-vectorizer.h (vect_pow2): New function.
6642         (supportable_widening_operation): Change argument types.
6643         (supportable_narrowing_operation): Likewise.
6644         (vectorizable_type_promotion): Add an argument.
6645         (vectorizable_type_demotion): Likewise.
6646         * tree-vect-analyze.c (vect_analyze_operations): Call
6647         vectorizable_type_promotion and vectorizable_type_demotion with
6648         additional argument.
6649         (vect_get_and_check_slp_defs): Detect patterns.
6650         (vect_build_slp_tree): Add an argument, don't fail in case of multiple
6651         types.
6652         (vect_analyze_slp_instance): Don't fail in case of multiple types.
6653         Call vect_build_slp_tree with correct arguments. Calculate unrolling
6654         factor according to the smallest type in the loop.
6655         (vect_detect_hybrid_slp_stmts): Include statements from patterns.
6656         * tree-vect-patterns.c (vect_recog_widen_mult_pattern): Call
6657         supportable_widening_operation with correct arguments.
6658         * tree-vect-transform.c (vect_get_slp_defs): Allocate output vector
6659         operands lists according to the number of vector statements in left
6660         or right node, if exists.
6661         (vect_gen_widened_results_half): Remove unused argument.
6662         (vectorizable_conversion): Call supportable_widening_operation,
6663         supportable_narrowing_operation, and vect_gen_widened_results_half
6664         with correct arguments.
6665         (vectorizable_assignment): Change documentation, support multiple
6666         types in SLP.
6667         (vectorizable_operation): Likewise.
6668         (vect_get_loop_based_defs): New function.
6669         (vect_create_vectorized_demotion_stmts): Likewise.
6670         (vectorizable_type_demotion): Support loop-aware SLP and general
6671         multi-step conversion. Call vect_get_loop_based_defs and
6672         vect_create_vectorized_demotion_stmts for transformation.
6673         (vect_create_vectorized_promotion_stmts): New function.
6674         (vectorizable_type_promotion): Support loop-aware SLP and general
6675         multi-step conversion. Call vect_create_vectorized_promotion_stmts
6676         for transformation.
6677         (vectorizable_store): Change documentation, support multiple
6678         types in SLP.
6679         (vectorizable_load): Likewise.
6680         (vect_transform_stmt): Pass SLP_NODE to
6681         vectorizable_type_promotion and vectorizable_type_demotion.
6682         (vect_schedule_slp_instance): Move here the calculation of number
6683         of vectorized statements for each node from...
6684         (vect_schedule_slp): ... here.
6685         (vect_transform_loop): Call vect_schedule_slp without the last
6686         argument.
6687
6688 2008-08-19  Dorit Nuzman  <dorit@il.ibm.com>
6689
6690         PR bootstrap/37152
6691         * tree-vect-transform.c (vect_create_epilog_for_reduction): Change =
6692         to == in assert statement.
6693         (vectorizable_reduction): Fix typo.
6694
6695 2008-08-18  H.J. Lu  <hongjiu.lu@intel.com>
6696
6697         PR bootstrap/37153
6698         * value-prof.c (check_counter): Dereference pointer to overall
6699         count when printing it.
6700
6701 2008-08-18  H.J. Lu  <hongjiu.lu@intel.com>
6702
6703         * profile.h: Really add it.
6704
6705 2008-08-18  H.J. Lu  <hongjiu.lu@intel.com>
6706
6707         * mcf.c: Really add it.
6708
6709 2008-08-18  Paul Yuan  <yingbo.com@gmail.com>
6710             Vinodha Ramasamy  <vinodha@google.com>
6711
6712         * cgraph.c (cgraph_edge): Handle inconsistent counts when setting
6713         count_scale.
6714         * value-prof.c (check_counter): Fix the counter if
6715         flag_profile_correction is true.
6716         (tree_divmod_fixed_value_transform, tree_mod_pow2_value_transform,
6717         tree_mod_subtract_transform):
6718         Follow check_counter parameter change.
6719         * common.opt (fprofile-correction): New option.
6720         * mcf.c: New file.
6721         * profile.h: Likewise.
6722         * profile.c (edge_info, EDGE_INFO): Moved to new file profile.h.
6723         (sum_edge_counts, is_edge_inconsistent, correct_negative_edge_counts,
6724         is_inconsistent, set_bb_counts, read_profile_edge_counts): New
6725         functions.
6726         (compute_branch_probabilities): Refactored. Invokes mcf_smooth_cfg if
6727         flag_profile_correction is set.
6728
6729 2008-08-18  Richard Sandiford  <rdsandiford@googlemail.com>
6730
6731         * rtlanal.c (subreg_offset_representable_p): Check HARD_REGNO_MODE_OK.
6732
6733 2008-08-18  Tomas Bily  <tbily@suse.cz>
6734
6735         * tree.h (IS_CONVERT_EXPR_CODE_P): Renamed to CONVERT_EXPR_CODE_P.
6736         * tree-ssa-threadedge.c (simplify_control_stmt_condition): Use
6737         CONVERT_EXPR_P.
6738         * tree-data-ref.c (split_constant_offset_1): Likewise.
6739         * tree-inline.c (estimate_operator_cost): Use CASE_CONVERT.
6740         * tree-sra.c (sra_walk_expr): Likewise.
6741         * matrix-reorg.c (ssa_accessed_in_assign_rhs): Likewise.
6742         * tree-ssa-loop-niter.c (expand_simple_operations): Likewise.
6743         * gimple.h (gimple_assign_cast_p): Use CONVERT_EXPR_CODE_P.
6744         * tree-ssa-structalias.c (find_func_aliases, find_func_aliases):
6745         Likewise.
6746         * gimple.c (gimple_assign_unary_nop_p): Likewise.
6747         * tree-vect-transform.c (vectorizable_type_demotion)
6748         (vectorizable_type_promotion): Likewise.
6749         * tree-inline.c (expand_call_inline):
6750         * tree-ssa-forwprop.c (get_prop_source_stmt, can_propagate_from)
6751         (forward_propagate_addr_expr_1, forward_propagate_comparison)
6752         (tree_ssa_forward_propagate_single_use_vars): Likewise.
6753         * expr.c (expand_expr_real_1): Likewise.
6754         * tree-ssa-dom.c (hashable_expr_equal_p, iterative_hash_hashable_expr)
6755         (gimple_assign_unary_useless_conversion_p): Likewise.
6756         * tree-stdarg.c (execute_optimize_stdarg): Likewise.
6757         * tree-ssa-ccp.c (ccp_fold, fold_gimple_assign): Likewise.
6758         * fold-const.c (fold_unary): Likewise.
6759         * tree.h (CONVERT_EXPR_P): Likewise.
6760         * tree.c (simple_cst_equal, iterative_hash_expr): Likewise.
6761         * tree-ssa-loop-im.c (rewrite_bittest): Likewise.
6762         * tree-vrp.c:
6763         (register_edge_assert_for_2, extract_range_from_unary_expr)
6764         (register_edge_assert_for_1): Likewise.
6765
6766 2008-08-18  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
6767
6768         * real.h (dconst_e, dconst_third, dconst_sqrt2, dconst_e_ptr,
6769         dconst_third_ptr, dconst_sqrt2_ptr): Declare.
6770         (enum real_value_const): Delete.
6771         (get_real_const): Delete.
6772         * real.c (get_real_const): Delete.
6773         (dconst_e_ptr): Define.
6774         (dconst_third_ptr): Define.
6775         (dconst_sqrt2_ptr): Define.
6776         * builtins.c: Update all callers.
6777
6778 2008-08-18  Richard Guenther  <rguenther@suse.de>
6779
6780         * tree-ssa-reassoc.c (reassociate_bb): Properly reset the
6781         statement iterator after statement removal.
6782
6783 2008-08-18  Andreas Tobler  <a.tobler@schweiz.org>
6784
6785         * config/rs6000/driver-rs6000.c (detect_caches_freebsd): New function.
6786         (detect_processor_freebsd): Likewise.
6787         (host_detect_local_cpu): Call newly added functions for FreeBSD.
6788
6789 2008-08-18  Richard Guenther  <rguenther@suse.de>
6790
6791         * tree-cfg.c (verify_types_in_gimple_assign): Verify copies
6792         and loads have the correct types.
6793
6794 2008-08-18  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
6795
6796         PR cpp/7263
6797         * c-opts.c (cpp_opts): Remove static.
6798         * c-parser.c (cpp_opts): Declare it extern.
6799         (disable_extension_diagnostics): Handle cpp options.
6800         (enable_extension_diagnostics): Likewise.
6801
6802 2008-08-18  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
6803
6804         * diagnostics.c (permerror_at): Rename as permerror.
6805         (permerror): Delete.
6806         * toplev.h: Likewise.
6807
6808 2008-08-18  Richard Guenther  <rguenther@suse.de>
6809
6810         * passes.c (init_optimization_passes): Remove cleanup_cfg1,
6811         sdse1 and addressables2 passes.  Replace dce1 with cddce1.
6812         Move call_cdce before build_alias.  Move copyrename2,
6813         cunrolli and ccp2 beafore build_alias.  Re-add addressable2
6814         right after final inlining.
6815         * tree-cfg.c (build_gimple_cfg): Do not dump function here.
6816         (pass_build_cfg): But instead via TODO_dump_func.
6817
6818 2008-08-18  Richard Guenther  <rguenther@suse.de>
6819
6820         * tree-sra.c (generate_element_init_1): Deal with NULL constructor
6821         element index.
6822         (scalarize_init): If we failed to generate some initializers
6823         do not generate zeros for not instantiated members.  Instead
6824         rely on the copy out.
6825         * tree-ssa-operands.c (get_addr_dereference_operands): Warn
6826         about missing flow-sensitive alias info only if we have
6827         aliases computed.
6828
6829 2008-08-17  Nick Clifton  <nickc@redhat.com>
6830
6831         * doc/extend.texi (Function Attributes): Fix typo in description
6832         if hot function attribute.
6833
6834 2008-08-17  Daniel Jacobowitz  <dan@codesourcery.com>
6835             Richard Sandiford  <rdsandiford@googlemail.com>
6836
6837         * doc/install.texi (--with-mips-plt): Document.
6838         * doc/invoke.texi (-mplt, -mno-plt): Document.
6839         * config.gcc (mips*-*-*): Add mips-plt to supported_defaults
6840         and handle ${with_mips_plt}.
6841         * config/mips/mips.opt (mplt): New option.
6842         * config/mips/mips.h (TARGET_ABICALLS_PIC0): New macro.
6843         (TARGET_ABICALLS_PIC2): Likewise.
6844         (TARGET_GPWORD): Return false for TARGET_ABSOLUTE_ABICALLS.
6845         (OPTION_DEFAULT_SPECS): Add a mips-plt entry.
6846         (ASM_SPEC): Use !mabi=* instead of !mabi*.
6847         (MIPS_CALL): Use TARGET_ABICALLS_PIC2 instead of TARGET_ABICALLS
6848         to decide whether to output ".option picX" directives.
6849         * config/mips/linux.h (SUBTARGET_ASM_SPEC): Remove -mabi=64 handling.
6850         Pass -call_nonpic rather than -KPIC for -mplt.
6851         (BASE_DRIVER_SELF_SPECS): Remove -mplt if -mno-shared is not present
6852         on the command line.  Also remove it when -mabi=64 is used without
6853         -msym32.
6854         * config/mips/linux64.h (SUBTARGET_ASM_SPEC): Delete.
6855         * config/mips/mips.c (mips_use_pic_fn_addr_reg_p): Handle
6856         TARGET_ABICALLS_PIC0.
6857         (mips_classify_symbol): Use TARGET_ABICALLS_PIC2 instead of
6858         TARGET_ABICALLS.
6859         (mips16_build_function_stub): Only output ".option pic" directives
6860         and PIC stubs if TARGET_ABICALLS_PIC2.  Call through $25 instead of $1.
6861         (mips16_build_call_stub): Fix comment and remove redundant
6862         ".set at"/"set .noat" directives.
6863         (mips_function_rodata_section): Use the default behaviour for
6864         TARGET_ABSOLUTE_ABICALLS.
6865         (mips_file_start): Emit ".option pic0" for TARGET_ABICALLS_PIC0.
6866         (mips_global_pointer): Handle TARGET_ABICALLS_PIC0.
6867         (mips_restore_gp): Do nothing if the current function doesn't use
6868         a global pointer.
6869         (mips_expand_prologue): Only save $gp if the current function uses it.
6870         Use a normal move for TARGET_ABICALLS_PIC0.
6871         (mips_override_options): Only set flag_pic if TARGET_ABICALLS_PIC2.
6872
6873 2008-08-17  Richard Sandiford  <rdsandiford@googlemail.com>
6874
6875         * config/mips/mips.c (mips_save_reg_p): Don't short-circuit rest
6876         of function when handling GLOBAL_POINTER_REGNUM.
6877
6878 2008-08-16  Eric Botcazou  <ebotcazou@adacore.com>
6879
6880         PR ada/20548
6881         * common.opt (-fstack-check): Do not declare the variable here.
6882         (-fstack-check=): New option variant.
6883         * doc/invoke.texi (Code Gen Options): Document it.
6884         * expr.h (STACK_OLD_CHECK_PROTECT): New macro.
6885         (STACK_CHECK_PROTECT): Bump to 3 pages if DWARF-2 EH is used.
6886         (STACK_CHECK_STATIC_BUILTIN): New macro.
6887         * doc/tm.texi (Stack Checking): Document STACK_CHECK_STATIC_BUILTIN.
6888         * opts.c: Include expr.h.
6889         (common_handle_option) <OPT_fold_stack_check_>: New case.
6890         <OPT_fstack_check>: Likewise.
6891         * calls.c (initialize_argument_information): Use TYPE_SIZE_UNIT
6892         consistently in the test for variable-sized types.  Adjust for
6893         new behaviour of flag_stack_check.
6894         * explow.c: Include except.h.
6895         (allocate_dynamic_stack_space): Do not take into account
6896         STACK_CHECK_MAX_FRAME_SIZE for static builtin stack checking.
6897         * function.c (gimplify_parameters): Use DECL_SIZE_UNIT in the test
6898         for variable-sized parameters.  Treat all parameters whose size is
6899         greater than STACK_CHECK_MAX_VAR_SIZE as variable-sized if generic
6900         stack checking is enabled.
6901         * gimplify.c (gimplify_decl_expr): Treat non-static objects whose
6902         size is greater than STACK_CHECK_MAX_VAR_SIZE as variable-sized
6903         if generic stack checking is enabled.
6904         (expand_function_end): Adjust for new behaviour of flag_stack_check.
6905         * reload1.c (reload): Likewise.
6906         * stmt.c (expand_decl): Assert that all automatic variables have
6907         fixed size at this point and remove dead code.
6908         * flags.h (stack_check_type): New enumeration type.
6909         (flag_stack_check): Declare.
6910         * toplev.c (flag_stack_check): New global variable.
6911         * Makefile.in (opts.o): Add dependency on EXPR_H.
6912         (explow.o): Add dependency on except.h.
6913
6914 2008-08-16  Andy Hutchinson  <hutchinsonandy@aim.com>
6915
6916         * config/avr/avr.c (avr_override_options): Reduce value of
6917         PARAM_INLINE_CALL_COST.
6918
6919 2008-08-15  Eric Botcazou  <ebotcazou@adacore.com>
6920
6921         * expr.c (expand_expr_real_1) <VIEW_CONVERT_EXPR>: When converting
6922         to BLKmode, try to fetch an inner memory reference.  Use 'mode' in
6923         lieu of TYPE_MODE (type) throughout.
6924
6925 2008-08-15  Joseph Myers  <joseph@codesourcery.com>
6926
6927         * config/arm/arm.c (add_minipool_backward_ref): Check for
6928         8-byte-aligned entries in second case of forcing insertion after a
6929         particular entry.  Change third case to avoid inserting
6930         non-8-byte-aligned entries before 8-byte-aligned ones.
6931
6932 2008-08-15  Richard Guenther  <rguenther@suse.de>
6933
6934         * tree-ssa-ccp.c (maybe_fold_offset_to_reference): Do not
6935         strip components for unknown size accesses.
6936
6937 2008-08-15  Wolfgang Gellerich  <gellerich@de.ibm.com>
6938
6939         * config/s390/2097.md New file.
6940         * config/s390/s390.md ("z10prop" attribute): Define none,
6941         z10_super, z10_super_E1, z10_super_A1, z10_super_c,
6942         z10_super_c_E1, z10_fwd, z10_fwd_A1, z10_fwd_A3, z10_fwd_E1,
6943         z10_rec, z10_fr, z10_fr_A3, z10_fr_E1, z10_c, and z10_cobra as
6944         possible values and apply them to insns as appropriate.
6945         ("type" attribute): Removed itof and added ftrunctf,ftruncdf,
6946         ftruncsd, ftruncdd, itoftf, itofdf, itofsf, itofdd, itoftd,
6947         fdivdd, fdivtd, floaddd, floadsd, fmuldd, fmultd, fsimpdd,
6948         fsimpsd, fsimptd, fstoredd, fstoresd, ftoidfp as possible values.
6949         ("bfp" mode attribute): Removed.  Every occurence replaced
6950         with <mode>.
6951         * config/s390/s390.c (struct "z10_cost"): Updated entries.
6952         * config/s390/2084.md (insn_reservation "x_itof"): Updated
6953         type attribute.
6954
6955 2008-08-14  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
6956
6957         PR c/28152
6958         * c-parser.c (c_lex_one_token): Do not store the canonical spelling
6959         for keywords.
6960
6961 2008-08-14  Dorit Nuzman  <dorit@il.ibm.com>
6962
6963         * tree-vect-transform.c (vect_create_epilog_for_reduction): Takes an
6964         additional argument. Support reduction when duplication is needed due
6965         to data-types of different sizes in the loop.
6966         (get_initial_def_for_induction): Fix printout.
6967         (vect_get_vec_def_for_stmt_copy): Support case where the
6968         vec_stmt_for_operand is a phi node.
6969         (vectorizable_reduction): Support reduction when duplication is needed
6970         due to data-types of different sizes in the loop.
6971         (vectorizable_call): Remove restriction to not vectorize in case we
6972         have data-types of different sizes in the loop.
6973         (vectorizable_conversion): Likewise.
6974         (vectorizable_operation): Likewise.
6975         (vectorizable_type_demotion): Likewise.
6976         (vectorizable_type_promotion): Likewise.
6977         (vectorizable_induction): Add restriction to not vectorize in case
6978         we have data-types of different sizes in the loop.
6979
6980 2008-08-14  Christophe Saout  <christophe@saout.de>
6981             Uros Bizjak  <ubizjak@gmail.com>
6982
6983         PR target/37101
6984         * config/i386/sse.md (vec_concatv2di): Remove movlps alternative.
6985         (*vec_concatv2di_rex64_sse4_1): Ditto.
6986         (*vec_concatv2di_rex64_sse): Ditto.
6987
6988 2008-08-14  Jakub Jelinek  <jakub@redhat.com>
6989
6990         PR middle-end/37103
6991         * fold-const.c (fold_widened_comparison): Do not allow
6992         sign changes that change the result even if shorter type
6993         is wider than arg1_unw's type.
6994
6995 2008-08-13  Kazu Hirata  <kazu@codesourcery.com>
6996
6997         * gcc.dg/arm-g2.c, gcc.dg/arm-mmx-1.c, gcc.dg/arm-scd42-2.c:
6998         Skip if the multilib testing specifies -march that does not
6999         agree with the one specified in the testcase.
7000
7001 2008-08-13  Joseph Myers  <joseph@codesourcery.com>
7002
7003         * config/sparc/sparc.c (emit_soft_tfmode_cvt): Explicitly sign or
7004         zero extend SImode values being converted to TFmode before passing
7005         to libcalls.
7006
7007 2008-08-13  Ulrich Weigand  <Ulrich.Weigand@de.ibm.com>
7008
7009         * config/rs6000/rs6000-c.c (rs6000_cpu_cpp_builtins): Predefine
7010         __PPU__ when targeting the Cell/B.E. PPU processor.
7011
7012 2008-08-13  Eric Botcazou  <ebotcazou@adacore.com>
7013
7014         * gimple.h (gimple_call_set_chain): Accept SSA variables.
7015         * tree-ssa-pre.c (create_component_ref_by_pieces_1) <CALL_EXPR>:
7016         Rematerialize the static chain, if any.
7017         * tree-ssa-sccvn.c (copy_reference_ops_from_call): Also copy the
7018         static chain.
7019
7020 2008-08-13  H.J. Lu  <hongjiu.lu@intel.com>
7021
7022         * dwarf2out.c (dwarf_stack_op_name): Remove prototype.
7023         (new_loc_descr): Likewise.
7024         (add_loc_descr): Likewise.
7025         (size_of_loc_descr): Likewise.
7026         (size_of_locs): Likewise.
7027         (output_loc_operands): Likewise.
7028         (output_loc_sequence): Likewise.
7029         (new_reg_loc_descr): New.
7030         (build_cfa_loc): Use it.
7031         (build_cfa_aligned_loc): Likewise.
7032         (one_reg_loc_descriptor): Likewise.
7033         (based_loc_descr): Likewise.
7034
7035 2008-08-13  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
7036
7037         PR 30551
7038         * doc/invoke.texi (Wmain): Update.
7039         * c-decl.c (start_decl): warn_main is only 0 or 1.
7040         (start_function): Likewise. Fix formatting.
7041         (finish_function): Delete redundant warning.
7042         * c.opt (Wmain): Add Var(warn_main) and Init(-1).
7043         * c-opts (c_common_handle_option): -Wall only has effect if
7044         warn_main is uninitialized. OPT_Wmain is automatically
7045         handled. -pedantic also enables Wmain.
7046         (c_common_post_options): Handle all logic for Wmain here.
7047         * c-common.c (warn_main): Delete.
7048         (check_main_parameter_types): Make pedwarns conditional on OPT_Wmain.
7049         * c-common.h (warn_main): Delete.
7050
7051 2008-08-13  H.J. Lu  <hongjiu.lu@intel.com>
7052
7053         PR middle-end/36701
7054         * expr.c (emit_group_store): Allocate stack temp with the
7055         largest alignment when copying from register to stack.
7056
7057 2008-08-13  Richard Guenther  <rguenther@suse.de>
7058
7059         * tree.h (maybe_fold_offset_to_address): Declare.
7060         * tree-ssa-ccp.c (surely_varying_stmt_p): Fix typo in last commit.
7061         (ccp_fold): Handle pointer conversions the same as fold_stmt.
7062         Likewise for POINTER_PLUS_EXPR.
7063         (maybe_fold_offset_to_reference): Enable disabled code.
7064         (maybe_fold_offset_to_address): New function.
7065         (fold_stmt_r): Use it.
7066         (fold_gimple_assign): Likewise.
7067         * gimplify.c (gimplify_conversion): Use maybe_fold_offset_to_address.
7068         (gimplify_expr): Likewise.
7069
7070 2008-08-13  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
7071
7072         * toplev.h (pedwarn_at): Fix declaration.
7073
7074 2008-08-13  Joseph Myers  <joseph@codesourcery.com>
7075
7076         * config/sparc/linux64.h (LINK_ARCH32_SPEC, LINK_ARCH64_SPEC,
7077         LINK_SPEC): Use %R in -Y P argument.
7078
7079 2008-08-13  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
7080
7081         PR c/15236
7082         * diagnostic.c (pedwarn_at): New.
7083         * toplev.h (pedwarn_at): Declare.
7084         * c-tree.h (build_enumerator): Update declaration.
7085         * c-decl.c (finish_enum): Update comment.
7086         (build_enumerator): Take a location parameter. Give a pedwarn but do
7087         not perform any conversion.
7088         * c-parser.c (c_parser_enum_specifier): Set correct location for
7089         enumerator.
7090
7091 2008-08-13  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
7092
7093         PR 35635
7094         * c-common.c (conversion_warning): Use a switch. Ignore boolean
7095         expressions except for conversions to signed:1 bitfields. Handle
7096         COND_EXPR with constant operands.
7097
7098 2008-08-13  Richard Guenther  <rguenther@suse.de>
7099
7100         PR tree-optimization/15255
7101         * tree-ssa-reassoc.c (linearize_expr_tree): Declare.
7102         (struct oecount_s): New struct and VEC types.
7103         (cvec): New global.
7104         (oecount_hash): New function.
7105         (oecount_eq): Likewise.
7106         (oecount_cmp): Likewise.
7107         (zero_one_operation): New function.
7108         (build_and_add_sum): Likewise.
7109         (undistribute_ops_list): Perform un-distribution of multiplication
7110         and division on the chain of summands.
7111         (should_break_up_subtract): Also break up subtracts for factors.
7112         (reassociate_bb): Delete dead visited statements.
7113         Call undistribute_ops_list.  Re-sort and optimize if it did something.
7114         * passes.c (init_optimization_passes): Move DSE before
7115         reassociation.
7116         * tree-ssa-loop-niter.c (stmt_dominates_stmt_p): Correctly handle
7117         PHI nodes.
7118
7119 2008-08-12  Janis Johnson  <janis187@us.ibm.com>
7120
7121         * doc/invoke.texi (-fipa-pta): Say the option is experimental.
7122
7123         * doc/invoke.texi: Revert unintended checkin.
7124
7125 2008-08-12  Nathan Froyd  <froydnj@codesourcery.com>
7126
7127         PR libgomp/26165
7128         * gcc.c (include_spec_function): Tweak call to find_a_file.
7129
7130 2008-08-12  Jakub Jelinek  <jakub@redhat.com>
7131
7132         PR middle-end/37014
7133         * expr.c (expand_expr_real_1): Handle TRUTH_ANDIF_EXPR
7134         and TRUTH_ORIF_EXPR.
7135         * dojump.c (do_jump): Likewise.
7136
7137         PR tree-optimization/37084
7138         * tree-inline.c (copy_bb): Call gimple_regimplify_operands
7139         if id->regimplify, don't assume stmt is a cast assignment.
7140
7141 2008-08-12  Anatoly Sokolov  <aesok@post.ru>
7142
7143         * final.c (final_scan_insn): Use app_enable/app_disable functions.
7144
7145 2008-08-12  Ulrich Weigand  <Ulrich.Weigand@de.ibm.com>
7146
7147         PR bootstrap/37097
7148         * builtins.c (do_mpfr_bessel_n): Fix copy-and-paste bug introduced
7149         by last change.
7150
7151 2008-08-12  Ulrich Weigand  <Ulrich.Weigand@de.ibm.com>
7152
7153         * defaults.h (TARGET_FLOAT_FORMAT): Remove.
7154         (UNKNOWN_FLOAT_FORMAT, IEEE_FLOAT_FORMAT, VAX_FLOAT_FORMAT): Remove.
7155
7156         * config/alpha/alpha.h (TARGET_FLOAT_FORMAT): Remove.
7157         * config/iq2000/iq2000.h (TARGET_FLOAT_FORMAT): Remove.
7158         * config/pdp11/pdp11.h (TARGET_FLOAT_FORMAT): Remove.
7159         * config/score/score.h (TARGET_FLOAT_FORMAT): Remove.
7160         * config/vax/vax.h (TARGET_FLOAT_FORMAT): Remove.
7161
7162         * doc/tm.texi (Storage Layout): Remove documentation for
7163         TARGET_FLOAT_FORMAT.
7164
7165         * simplify-rtx.c (simplify_binary_operation_1): Replace
7166         TARGET_FLOAT_FORMAT check by appropriate HONOR_... checks.
7167
7168 2008-08-12  Ulrich Weigand  <Ulrich.Weigand@de.ibm.com>
7169
7170         * real.h (struct real_format): New member has_sign_dependent_rounding.
7171         * real.c (ieee_single_format, mips_single_format, motorola_single_format,
7172         spu_single_format, ieee_double_format, mips_double_format,
7173         motorola_double_format, ieee_extended_motorola_format,
7174         ieee_extended_intel_96_format, ieee_extended_intel_128_format,
7175         ieee_extended_intel_96_round_53_format, ibm_extended_format,
7176         mips_extended_format, ieee_quad_format, mips_quad_format,
7177         vax_f_format, vax_d_format, vax_g_format): Initialize it.
7178         * config/pdp11/pdp11.c (pdp11_f_format, pdp11_d_format): Likewise.
7179
7180         * defaults.h (MODE_HAS_NANS, MODE_HAS_INFINITIES,
7181         MODE_HAS_SIGNED_ZEROS, MODE_HAS_SIGN_DEPENDENT_ROUNDING): Remove.
7182         * config/spu/spu.h (MODE_HAS_NANS, MODE_HAS_INFINITIES,
7183         MODE_HAS_SIGN_DEPENDENT_ROUNDING): Remove.
7184         (ROUND_TOWARDS_ZERO): Likewise.
7185
7186         * real.h (REAL_MODE_FORMAT): Protect MODE against macro expansion.
7187         (FLOAT_MODE_FORMAT): New macro.
7188         (REAL_MODE_FORMAT_COMPOSITE_P): Remove, replace by ...
7189         (MODE_COMPOSITE_P): ... this new macro.
7190         (MODE_HAS_NANS, MODE_HAS_INFINITIES, MODE_HAS_SIGNED_ZEROS,
7191         MODE_HAS_SIGN_DEPENDENT_ROUNDING): New macros.
7192         * machmode.h (GET_MODE_INNER): Cast result to enum machine_mode.
7193
7194         * flags.h: Include "real.h".
7195
7196         * fold-const.c (const_binop): Use MODE_COMPOSITE_P instead of
7197         REAL_MODE_FORMAT_COMPOSITE_P.
7198         * simplify-rtx.c (simplify_const_binary_operation): Likewise.
7199
7200         * doc/tm.texi (Storage Layout): Remove documentation of
7201         MODE_HAS_NANS, MODE_HAS_INFINITIES, MODE_HAS_SIGNED_ZEROS,
7202         MODE_HAS_SIGN_DEPENDENT_ROUNDING.  Update documentation of
7203         ROUND_TOWARDS_ZERO and LARGEST_EXPONENT_IS_NORMAL to clarify
7204         they only apply to libgcc2.a.
7205
7206 2008-08-12  Ulrich Weigand  <Ulrich.Weigand@de.ibm.com>
7207
7208         * config/spu/float_disf.c: New file.
7209         * config/spu/float_unsdisf.c: New file.
7210         * config/spu/t-elf (LIB2FUNCS_STATIC_EXTRA): Add them.
7211         (LIB2FUNCS_EXCLUDE): Define.
7212
7213 2008-08-12  Ulrich Weigand  <Ulrich.Weigand@de.ibm.com>
7214             Trevor Smigiel  <trevor_smigiel@playstation.sony.com>
7215
7216         * real.h (struct real_format): New member round_towards_zero.
7217         * real.c (round_for_format): Respect fmt->round_towards_zero.
7218         (ieee_single_format, mips_single_format, motorola_single_format,
7219         spu_single_format, ieee_double_format, mips_double_format,
7220         motorola_double_format, ieee_extended_motorola_format,
7221         ieee_extended_intel_96_format, ieee_extended_intel_128_format,
7222         ieee_extended_intel_96_round_53_format, ibm_extended_format,
7223         mips_extended_format, ieee_quad_format, mips_quad_format,
7224         vax_f_format, vax_d_format, vax_g_format): Initialize it.
7225         * config/pdp11/pdp11.c (pdp11_f_format, pdp11_d_format): Likewise.
7226
7227         * builtins.s (do_mpfr_arg1): Consider round_towards_zero member of
7228         real_format to choose rounding mode when calling MPFR functions.
7229         (do_mpfr_arg2, do_mpfr_arg3, do_mpfr_sincos): Likewise.
7230         (do_mpfr_bessel_n, do_mpfr_remquo, do_mpfr_lgamma_r): Likewise.
7231
7232         * real.h (real_to_decimal_for_mode): Add prototype.
7233         * real.c (real_to_decimal_for_mode): Renames old real_to_decimal.
7234         Respect target rounding mode when generating decimal representation.
7235         (real_to_decimal): New stub for backwards compatibility.
7236         * c-cppbuiltin.c (builtin_define_with_hex_fp_value): Use
7237         real_to_decimal_for_mode instead of real_to_decimal.
7238
7239         * config/spu/spu.md ("floatdisf2", "floatunsdisf2"): New.
7240
7241 2008-08-12  Ulrich Weigand  <Ulrich.Weigand@de.ibm.com>
7242             Trevor Smigiel  <trevor_smigiel@playstation.sony.com>
7243
7244         * real.c (spu_single_format): New variable.
7245         * real.h (spu_single_format): Declare.
7246
7247         * config/spu/spu.c (spu_override_options): Install SFmode format.
7248         (spu_split_immediate): Use integer mode to operate on pieces of
7249         floating-point values in all cases.
7250
7251         * config/spu/spu.md (UNSPEC_FLOAT_EXTEND, UNSPEC_FLOAT_TRUNCATE): New.
7252         ("extendsfdf2"): Use UNSPEC_FLOAT_EXTEND instead of FLOAT_EXTEND.
7253         ("truncdfsf2"): Use UNSPEC_FLOAT_TRUNCATE instead of FLOAT_TRUNCATE.
7254
7255 2008-08-12  Ulrich Weigand  <Ulrich.Weigand@de.ibm.com>
7256
7257         * config/spu/spu.c (spu_safe_dma): Respect TARGET_SAFE_DMA.
7258
7259 2008-08-12  Ulrich Weigand  <Ulrich.Weigand@de.ibm.com>
7260
7261         * config/spu/spu.h (DWARF_FRAME_RETURN_COLUMN): Define.
7262
7263 2008-08-12  Jakub Jelinek  <jakub@redhat.com>
7264
7265         PR c++/36688
7266         * gimplify.c (gimplify_modify_expr_rhs): Test TREE_READONLY
7267         on the VAR_DECL instead of TYPE_READONLY on its type.
7268
7269 2008-08-12  Ira Rosen  <irar@il.ibm.com>
7270
7271         * tree-vectorizer.c: Depend on langhooks.h.
7272         (supportable_widening_operation): Add two arguments. Support double
7273         type conversions.
7274         (supportable_narrowing_operation): Likewise.
7275         * tree-vectorizer.h (supportable_widening_operation): Add two
7276         arguments.
7277         (supportable_narrowing_operation): Likewise.
7278         * tree-vect-patterns.c (vect_recog_widen_mult_pattern) : Call
7279         supportable_widening_operation with correct arguments.
7280         * tree-vect-transform.c (vectorizable_conversion): Likewise.
7281         (vectorizable_type_demotion): Support double type conversions.
7282         (vectorizable_type_promotion): Likewise.
7283         * Makefile.in (tree-vectorizer.o): Depend on langhooks.h.
7284
7285 2008-08-11  Michael Matz  <matz@suse.de>
7286
7287         * i386/i386.c (override_options): Move initialisation from
7288         flag_schedule_insns_after_reload to here from ...
7289         (optimization_options): ... here.
7290
7291 2008-08-11  Jakub Jelinek  <jakub@redhat.com>
7292
7293         PR rtl-optimization/36998
7294         * dwarf2out.c (compute_barrier_args_size_1,
7295         compute_barrier_args_size): Temporarily remove assertions.
7296
7297 2008-08-10  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
7298
7299         PR middle-end/20644
7300         * tree-ssa.c (struct walk_data): Add new flag
7301         warn_possibly_uninitialized.
7302         (warn_uninitialized_var): Use it.
7303         (warn_uninitialized_vars): New.
7304         (execute_early_warn_uninitialized): Call it.
7305         (execute_late_warn_uninitialized): Likewise.
7306
7307 2008-08-09  Andrew Pinski  <andrew_pinski@playstation.sony.com>
7308
7309         PR middle-end/36238
7310         * reload1.c (gen_reload): Guard calls to get_secondary_mem
7311         for memory subregs.
7312
7313 2008-08-09  Jan Hubicka  <jh@suse.cz>
7314
7315         PR target/37055
7316         * optabs.c (maybe_emit_unop_insn): Remove produced code if
7317         expansion failed.
7318         (expand_fix): Be prepared for expansion to fail.
7319         (expand_sfix_optab): Remove instructions if expansion failed.
7320
7321 2008-08-09  Anatoly Sokolov  <aesok@post.ru>
7322
7323         * config/avr/avr.c (avr_mcu_types): Move the AT43USB320 device to
7324         avr31 architecture.
7325         * config/avr/avr.h (CRT_BINUTILS_SPECS): (Ditto.).
7326         * config/avr/t-avr (MULTILIB_MATCHES): (Ditto.).
7327
7328 2008-08-09  Richard Sandiford  <rdsandiford@googlemail.com>
7329
7330         * config.gcc (mips*-*-linux*, mips64*-*-linux*): Add
7331         mips/t-libgcc-mips16 to tmake_file.
7332         * config/mips/mips-protos.h (mips_call_type): New enum.
7333         (mips_pic_base_register, mips_got_load): Declare.
7334         (mips_restore_gp): Take an rtx argument.
7335         (mips_use_pic_fn_addr_reg_p): Declare.
7336         (mips_expand_call): Replace the sibcall_p argument with
7337         a mips_call_type argument.  Add a lazy_p parameter.
7338         (mips_split_call): Declare.
7339         * config/mips/mips.h (MIPS16_PIC_TEMP_REGNUM): New macro.
7340         (MIPS16_PIC_TEMP): Likewise.
7341         (reg_class): Delete M16_NA_REGS.
7342         (REG_CLASS_NAMES, REG_CLASS_CONTENTS): Update accordingly.
7343         (SYMBOL_FLAG_BIND_NOW, SYMBOL_REF_BIND_NOW_P): New macros.
7344         (mips_split_hi_p): Declare.
7345         * config/mips/mips.c (mips_split_hi_p): New array.
7346         (mips_regno_to_class): Change M16_NA_REGS entries to M16_REGS.
7347         (mips_got_symbol_type_p): New function.
7348         (mips_global_symbol_p): Check SYMBOL_REF_EXTERNAL_P.
7349         (mips16_stub_function_p): New function.
7350         (mips16_local_function_p): Likewise.
7351         (mips_use_pic_fn_addr_reg_p): Likewise.
7352         (mips_cannot_force_const_mem): Return false for HIGHs.
7353         Extend CONST_INT and symbolic handling to MIPS16, using
7354         mips_symbol_insns to check that the base symbol type is a
7355         legitimate constant.  Reject GOT-based constants if
7356         TARGET_MIPS16_PCREL_LOADS.
7357         (mips_const_insns): Check targetm.cannot_force_const_mem when
7358         decomposing a symbolic base and a large offset.
7359         (mips_emit_call_insn): Add ORIG_ADDR and ADDR parameters.
7360         When calling a function that needs $25 from MIPS16 code,
7361         move the target address into $25 separately and add a USE
7362         to the call insn.
7363         (mips16_gp_pseudo_reg): Insert the initializer immediately
7364         before the first real insn.
7365         (mips_pic_base_register, mips_got_load): New functions.
7366         (mips_split_symbol): Generalize the name of the LO_SUM_OUT
7367         parameter to LOW_OUT.  Say that it can be any valid SET_SRC
7368         when splitting a load-address operation.  Split SYMBOL_GOT_DISP
7369         constants and highs of SYMBOL_GOT_PAGE_OFST constants.
7370         (mips_call_tls_get_addr): Update the call to mips_expand_call,
7371         also passing NULL_RTX rather than const0_rtx as the aux argument.
7372         (mips_rewrite_small_data_p): Check mips_lo_relocs and mips_split_p
7373         instead of TARGET_EXPLICIT_RELOCS.
7374         (mips_ok_for_lazy_binding_p): Check SYMBOL_REF_BIND_NOW_P.
7375         (mips_load_call_address): Replace the sibcall_p argument with
7376         a mips_call_type argument.  Use mips_got_load.
7377         (mips16_local_alias): New structure.
7378         (mips16_local_aliases): New variable.
7379         (mips16_local_aliases_hash): New function.
7380         (mips16_local_aliases_eq): Likewise.
7381         (mips16_local_alias): Likewise.
7382         (mips16_stub_function): Likewise.
7383         (mips16_build_function_stub): Create a local alias for the target
7384         function.  Handle TARGET_ABICALLS.  For PIC abicalls, emit a
7385         .cpload directive and an R_MIPS_NONE relocation for the target
7386         function, then load the alias rather than the function itself.
7387         Wrap the non-PIC abicalls version in ".option pic0/.option pic2".
7388         (mips16_copy_fpr_return_value): Use mips16_stub_function and
7389         mips_expand_call.  Set SYMBOL_REF_BIND_NOW on the symbol.
7390         (mips16_build_call_stub): Replace the FN parameter with an
7391         FN_PTR parameter.  Force the address into a register if it
7392         isn't a call_insn_operand; don't rely on the caller to do this.
7393         If a call to a locally-defined and locally-binding MIPS16
7394         function must be made indirectly, redirect the call to the
7395         function's local alias.  Use mips16_stub_function_p,
7396         mips16_stub_function, mips_expand_call and use_reg.
7397         Set SYMBOL_FLAG_BIND_NOW on __mips_call_* symbols.
7398         Use explicit %hi and %lo accesses where possible.
7399         Use MIPS_CALL to generate the correct code form of a
7400         jal instruction.  Add clobbers of $18 instead of uses.
7401         Update the call to mips_emit_call_insn.
7402         (mips_expand_call): Replace the SIBCALL_P argument with a
7403         mips_call_type argument and handle the new MIPS_CALL_EPILOGUE value.
7404         Take a LAZY_P parameter.  Call mips16_build_call_stub first,
7405         allowing it to modify the call address.  Update the calls to
7406         mips_load_call_address and mips_emit_call_insn.
7407         (mips_split_call): New function.
7408         (mips_init_relocs): Clear mips_split_hi_p.  Only use %gp_rel if
7409         !TARGET_MIPS16.  Split SYMBOL_GOT_DISP, and the high parts of
7410         SYMBOL_GOT_PAGE_OFST, for MIPS16 code.
7411         (mips_global_pointer): Check mips16_cfun_returns_in_fpr_p.
7412         (mips_extra_live_on_entry): Include MIPS16_PIC_TEMP_REGNUM
7413         if TARGET_MIPS16.
7414         (mips_cprestore_slot): New function.
7415         (mips_restore_gp): Take a TEMP parameter.  Handle TARGET_MIPS16
7416         and use mips_cprestore_slot.
7417         (mips_output_function_prologue): Handle TARGET_MIPS16 for
7418         LOADGP_OLDABI.
7419         (mips_emit_loadgp): Move into MIPS16_PIC_TEMP for MIPS16,
7420         then use a copygp_mips16 instruction to set up $28.
7421         (mips_expand_prologue): Initialize the cprestore slot for MIPS16 too.
7422         (mips16_lay_out_constants): Call split_all_insns_noflow.
7423         (mips_reorg_process_insns): Explicitly set all_noreorder_p to
7424         false if TARGET_MIPS16.
7425         (mips_reorg): Don't call vr4130_align_insns if TARGET_MIPS16.
7426         (mips_output_mi_thunk): Use mips_got_symbol_type_p.  Use the
7427         mips_dangerous_for_la25_p approach for MIPS16 PIC calls too.
7428         (mips_set_mips16_mode): Always set MASK_EXPLICIT_RELOCS for
7429         MIPS16 code.  Allow MIPS16 o32 PIC.
7430         (mips_override_options): Allow MIPS16 o32 PIC.
7431         * config/mips/mips.md: Lower CONST_GP_P moves into register moves
7432         after reload if TARGET_USE_GOT.
7433         (UNSPEC_COPYGP): New constant.
7434         (length): Use a default length of 8 for MIPS16 GOT loads.
7435         (*got_disp<mode>): Check mips_split_p instead of TARGET_XGOT.
7436         (*got_page<mode>): Check mips_split_hi_p.
7437         (*got_disp<mode>, *got_page<mode>): Use mips_got_load.
7438         (unspec_got<mode>, unspec_call<mode>): New expanders.
7439         (load_got<mode>, load_call<mode>): Remove the length attributes.
7440         Use a got attribute instead of a type attribute.
7441         (copygp_mips16): New insn.
7442         (restore_gp): Add a scratch clobber and pass it to mips_restore_gp.
7443         (load_call<mode>): Use a "d" constraint instead of an "r" constraint.
7444         (sibcall, sibcall_value, call, call_value): Update the calls
7445         to mips_expand_call.
7446         (call_internal, call_value_internal): Use mips_split_call.
7447         (call_value_multiple_internal): Likewise.
7448         (call_split): Move after call_internal (the insn it is split from).
7449         (call_internal_direct, call_value_internal_direct): Turn into
7450         define_insn_and_splits.  Split if TARGET_SPLIT_CALLS.
7451         (call_direct_split, call_value_direct_split): New patterns.
7452         * config/mips/constraints.md (c): Handle TARGET_MIPS16 first
7453         and use M16_REGS instead of M16_NA_REGS.
7454         * config/mips/predicates.md (const_call_insn_operand): Replace
7455         the TARGET_ABSOLUTE_ABICALLS-based check with a more general
7456         mips_use_pic_fn_addr_reg_p check.
7457         (move_operand): Reject HIGHs if mips_split_hi_p.
7458         * config/mips/mips16.S: Assembly as empty if the ABI is not suitable.
7459         (__mips16_floatunsisf): Inline __mips16_floatsisf.
7460         (CALL_STUB_NO_RET, CALL_STUB_REG): Copy the target register to $25.
7461         * config/mips/libgcc-mips16.ver: New file.
7462         * config/mips/t-libgcc-mips16 (SHLIB_MAPFILES): Add
7463         $(srcdir)/config/mips/libgcc-mips16.ver.
7464
7465 2008-08-09  Richard Sandiford  <rdsandiford@googlemail.com>
7466
7467         * config/mips/mips.c (mips_unspec_address_offset): Move earlier
7468         in file.
7469         (mips_unspec_address, mips_unspec_offset_high): Likewise.
7470         (mips_ok_for_lazy_binding_p, mips_load_call_address): Likewise.
7471         (mips16_cfun_returns_in_fpr_p): Likewise.
7472
7473 2008-08-09  Richard Sandiford  <rdsandiford@googlemail.com>
7474
7475         * config/mips/mips.h (MASK_RETURN_ADDR): Expand commentary.
7476         * config/mips/linux-unwind.h (mips_fallback_frame_state): Add 2
7477         rather than 4 to PC.
7478
7479 2008-08-09  Richard Sandiford  <rdsandiford@googlemail.com>
7480
7481         * config/mips/mips.h (STATIC_CHAIN_REGNUM): Remap to $15.
7482         (FUNCTION_PROFILER): Save the static chain pointer into $2
7483         beforehand and restore it aftewards.
7484         (TRAMPOLINE_TEMPLATE): Adjust accordingly.  Load the target
7485         address directly into $25 and call the function through $25;
7486         do not clobber $3.  Pad the DImode version to cover the space
7487         left by the deleted $25 <- $3 move.
7488         (TRAMPOLINE_SIZE): Adjust the size of the SImode version after
7489         the removal of the $25 <- $3 move.
7490         (INITIALIZE_TRAMPOLINE): Update offsets accordingly.
7491         * config/mips/sdemtk.h (FUNCTION_PROFILER): As for mips.h.
7492
7493 2008-08-09  Richard Sandiford  <rdsandiford@googlemail.com>
7494             Daniel Jacobowitz  <dan@codesourcery.com>
7495
7496         * config/mips/mips.h (FUNCTION_NAME_ALREADY_DECLARED): Delete.
7497         * config/mips/linux.h (ASM_DECLARE_FUNCTION_NAME): Delete.
7498         (ASM_DECLARE_FUNCTION_SIZE, FUNCTION_NAME_ALREADY_DECLARED): Delete.
7499         * config/mips/mips.c (mips_start_function_definition): New function.
7500         (mips_end_function_definition): Likewise.
7501         (mips_output_function_prologue): Use mips_start_function_definition.
7502         (mips_output_function_epilogue): Use mips_end_function_definition.
7503         (build_mips16_function_stub): Use mips_start_function_definition
7504         and mips_end_function_definition.
7505         (build_mips16_call_stub): Likewise.
7506
7507 2008-08-09  Richard Guenther  <rguenther@suse.de>
7508
7509         * gimple.c (gimple_build_call_1): Deal with FUNCTION_DECL fn.
7510         * gimple.h (gimple_call_fn): Adjust comment.
7511         (gimple_call_set_fndecl): New function.
7512         (gimple_call_fndecl): Adjust for GIMPLE_CALL no
7513         longer having bare FUNCTION_DECL operand.
7514         (gimple_call_return_type): Likewise.
7515         * tree-cfg.c (verify_stmt): Verify function operand of a GIMPLE_CALL.
7516
7517         * value-prof.c (gimple_divmod_fixed_value): Do not emit labels.
7518         (gimple_mod_pow2): Likewise.
7519         (gimple_mod_subtract): Likewise.
7520         (gimple_ic): Likewise.
7521         (gimple_stringop_fixed_value): Likewise.
7522         (gimple_indirect_call_to_profile): Fix for GIMPLE_CALL no
7523         longer having bare FUNCTION_DECL operand.
7524         * ipa-cp.c (ipcp_update_callgraph): Use gimple_call_set_fndecl.
7525         * omp-low.c (optimize_omp_library_calls): Likewise.
7526         * cgraphunit.c (update_call_expr): Likewise.
7527         * tree-ssa-math-opts.c (execute_cse_reciprocals): Likewise.
7528         (execute_convert_to_rsqrt): Likewise.
7529         * cfgexpand.c (gimple_to_tree): Simplify.
7530         (release_stmt_tree): Fix for GIMPLE_CALL no longer having
7531         bare FUNCTION_DECL operand.
7532         * tree-nested.c (init_tmp_var_with_call): Use gimple_call_return_type.
7533         (convert_gimple_call): Use gimple_call_fndecl.
7534         * c-common.c (c_warn_unused_result): Likewise.
7535
7536 2008-08-09  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
7537
7538         PR c/17880
7539         * c-typeck.c (digest_init): Call verify_sequence_points from here.
7540         (c_finish_return): Likewise.
7541         (c_start_case): Likewise.
7542         * c-common.c (warn_for_collisions_1): Use explicit location in warning.
7543         * c-parser.c (c_parser_condition): New. Call
7544         verify_sequence_points.
7545         (c_parser_paren_condition): Call c_parser_condition.
7546         (c_parser_for_statement): Call c_parser_condition.
7547
7548 2008-08-09  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
7549
7550         PR 36901
7551         * diagnostic.def (DK_PEDWARN, DK_PERMERROR): New.
7552         * diagnostic.c (pedantic_warning_kind, permissive_error_kind):
7553         Moved from diagnostic.h
7554         (diagnostic_report_diagnostic): Return bool. Handle DK_PEDWARN and
7555         DK_PERMERROR.
7556         (emit_diagnostic): New.
7557         (warning0, pedwarn0): Delete.
7558         (warning, warning_at, pedwarn, permerror): Return bool.
7559         * diagnostic.h (pedantic_warning_kind, permissive_error_kind):
7560         Moved to diagnostic.c.
7561         (struct diagnostic_context): Use correct type for
7562         classify_diagnostic.
7563         (diagnostic_report_diagnostic): Update declaration.
7564         (emit_diagnostic): Declare.
7565         * errors.c (warning): Return bool.
7566         * errors.h (warning): Update declaration.
7567         * toplev.h (warning0, pedwarn0): Delete.
7568         (warning, warning_at, pedwarn, permerror): Return bool.
7569         * c-errors.c (pedwarn_c99, pedwarn_c90): Use DK_PEDWARN.
7570         * c-decl.c (locate_old_decl): Delete 'diag' argument. Always use
7571         inform. Update all calls.
7572         (diagnose_mismatched_decls): Check return value of warning/pedwarn
7573         before giving informative note.
7574         (implicit_decl_warning): Likewise.
7575         * c-typeck.c (build_function_call): Likewise.
7576         * tree-sssa.c (warn_uninit): Likewise.
7577         * builtins.c (gimplify_va_arg_expr): Likewise.
7578
7579 2008-08-09  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
7580
7581         PR 7651
7582         * doc/invoke.texi (-Wextra): Move warning from here...
7583         (-Wuninitialized): ... to here.
7584
7585 2008-08-08  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
7586
7587         PR 28875
7588         * flags.h (set_Wunused): Delete
7589         * toplev.c (process_options): Handle Wunused flags here.
7590         * opts.c (maybe_warn_unused_parameter): Delete.
7591         (common_handle_option): Replace set_Wunused by warn_unused.
7592         (set_Wextra): Do not handle Wunused-parameter here.
7593         (set_Wunused): Delete.
7594         * c-opts.c (c_common_handle_option): Replace set_Wunused by
7595         warn_unused.
7596         * common.opt (Wunused): Add Var and Init.
7597         (Wunused-function): Likewise.
7598         (Wunused-label): Likewise.
7599         (Wunused-parameter): Likewise.
7600         (Wunused-value): Likewise.
7601         (Wunused-variable): Likewise.
7602
7603 2008-08-08  Peter Bergner  <bergner@vnet.ibm.com>
7604
7605         * doc/invoke.texi: Add cpu_type power7.
7606         * config.in (HAVE_AS_VSX): New.
7607         * config.gcc: Add cpu_type power7.
7608         * configure.ac (HAVE_AS_VSX): Check for assembler support of the
7609         VSX instructions.
7610         * configure: Regenerate.
7611         * config/rs6000/rs6000.c (rs6000_override_options): Alias power7 to
7612         power5.
7613         * config/rs6000/rs6000.h (ASM_CPU_POWER7_SPEC): Define.
7614         (ASM_CPU_SPEC): Pass %(asm_cpu_power7) for -mcpu=power7.
7615         (EXTRA_SPECS): Add asm_cpu_power7 spec string.
7616
7617 2008-08-08  Dorit Nuzman  <dorit@il.ibm.com>
7618
7619         * tree-vect-transform.c (vectorizable_conversion): Pass the integral
7620         type to vectorize.builtin_conversion.
7621         (vectorizable_conversion): Likewise.
7622         * config/i386/i386.c (ix86_vectorize_builtin_conversion): Always takes
7623         integral type as input.
7624         * config/rs6000/rs6000.c (rs6000_builtin_conversion): Add case for
7625         FIX_TRUNC_EXPR.
7626         (rs6000_expand_builtin): Add case for ALTIVEC_BUILTIN_VCTUXS
7627         and ALTIVEC_BUILTIN_VCTSXS.
7628         (rs6000_builtin_mul_widen_even. rs6000_builtin_mul_widen_odd): Fix
7629         formatting.
7630
7631 2008-08-08  Richard Guenther  <rguenther@suse.de>
7632
7633         * tree-ssa-ccp.c (likely_value): Calls are not all varying.
7634         (surely_varying_stmt_p): Calls are varying only if they are
7635         non-builtin and not indirect or have no result.
7636         (ccp_fold): Re-instantiate code before the tuples merge.
7637
7638 2008-08-08  Richard Guenther  <rguenther@suse.de>
7639
7640         PR tree-optimization/37056
7641         * gimple.h (gimple_assign_rhs_class): New helper function.
7642         * tree-ssa-loop-niter.c (get_val_for): Fix tuplification, handle
7643         unary operations properly.
7644
7645 2008-08-07  Jan Hubicka  <jh@suse.cz>
7646
7647         * i386.h (ix86_size_cost): Declare.
7648         (ix86_cur_cost): New function macro.
7649         * i386.md (peepholes expanding size and splitters): Predicate by
7650         optimize_insn_for_speed_p.
7651         (peepholes reduce size and splitters): Predicate by
7652         optimize_insn_for_size_p.
7653         * i386.c (ix86_size_cost): Rename from ...
7654         (size_cost): This one.
7655         (override_options): Update.
7656         (decide_alg): Likewise.
7657         (ix86_expand_clear): Use RTL profile.
7658         (ix86_pad_returns): Use RTL profile.
7659
7660 2008-08-07  Jan Hubicka  <jh@suse.cz>
7661
7662         * recog.c (split_all_insns): Set RTL profile
7663         (peephole2_optimize): Likewise.
7664         * function.c (thread_prologue_and_epilogue_insns): Likewise.
7665         * combine.c (combine_instructions): Likewise.
7666
7667 2008-08-07  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
7668
7669         * c-common.c (c_common_reswords): Also warn about keyword "bool".
7670
7671 2008-08-07  Bob Wilson  <bob.wilson@acm.org>
7672
7673         * config/xtensa/xtensa.c (xtensa_copy_incoming_a7): Copy incoming
7674         value in a6 after the set_frame_ptr insn.
7675
7676 2008-08-07  Richard Henderson  <rth@redhat.com>
7677
7678         PR debug/37033
7679         * gcc.c (cpp_options): Pass along -g*.
7680
7681 2008-08-07  Joseph Myers  <joseph@codesourcery.com>
7682
7683         * config/arm/arm.c (output_move_neon): Update comment describing
7684         big-endian vector layout.
7685         (arm_assemble_integer): Do not handle big-endian NEON vectors
7686         specially.
7687         * config/arm/neon.md (vec_set<mode>_internal, vec_extract<mode>,
7688         neon_vget_lane<mode>_sext_internal,
7689         neon_vget_lane<mode>_zext_internal, neon_vget_lane<mode>): Adjust
7690         element indices for big-endian.
7691
7692 2008-08-07  Richard Henderson  <rth@redhat.com>
7693
7694         * configure.ac (HAVE_GAS_CFI_PERSONALITY_DIRECTIVE): New.
7695         * configure, config.in: Rebuild.
7696         * debug.h (dwarf2out_do_cfi_asm): Declare.
7697         * c-cppbuiltin.c (c_cpp_builtins): Use it.
7698         * dwarf2out.c (dwarf2out_do_cfi_asm): New.
7699         (dwarf2out_cfi_label, add_fde_cfi, output_call_frame_info,
7700         dwarf2out_begin_prologue, dwarf2out_end_epilogue): Use it.
7701
7702 2008-08-07  Joseph Myers  <joseph@codesourcery.com>
7703
7704         * config/arm/iwmmxt.md (movv8qi_internal, movv4hi_internal,
7705         movv2si_internal): Combine into mov<mode>_internal.
7706         (movv2si_internal_2): Remove.
7707
7708 2008-08-07  Jan Hubicka  <jh@suse.cz>
7709
7710         PR target/37048
7711         * i386.md (single stringop patterns): Enable unconditionally.
7712
7713 2008-08-07  H.J. Lu  <hongjiu.lu@intel.com>
7714
7715         PR target/36992
7716         * config/i386/emmintrin.h (_mm_move_epi64): Use __builtin_ia32_movq128.
7717
7718         * config/i386/i386.c (ix86_builtins): Add IX86_BUILTIN_MOVQ128.
7719         (bdesc_args): Add IX86_BUILTIN_MOVQ128.
7720
7721         * config/i386/sse.md (sse2_movq128): New.
7722
7723         * doc/extend.texi: Document __builtin_ia32_movq128.
7724
7725 2008-08-07  Richard Guenther  <rguenther@suse.de>
7726
7727         PR middle-end/37042
7728         * tree-ssa-alias-warnings.c (nonstandard_alias_p): Ref-all
7729         pointers can access anything.
7730
7731 2008-08-06  Jan Hubicka  <jh@suse.cz>
7732
7733         * optabs.c (emit_unop_insn): Break out to ...
7734         (maybe_emit_unop_insn): ... this one.
7735         (expand_sfix_optab): Use maybe variant.
7736         * optabs.h (maybe_emit_unop_insn): Declare.
7737
7738         * i386.md (mov0 patterns): Enable by default.
7739         (FP conversion expanders): Disable expansion of code expanding
7740         sequences when instruction should be optimized for size.
7741         (single strinop patterns): Enable when optimizing for size.
7742         (string expanders): Disable expanding of code expanding sequences
7743         when optimizning instruction for size.
7744         * i386.c (ix86_expand_vector_move_misalign): Do code size optimization
7745         per BB basis.
7746         (ix86_fp_comparison_sahf_cost): Likewise.
7747         (ix86_expand_branch): Likewise.
7748         (ix86_expand_ashl_const): Likewise.
7749         (ix86_split_ashl): Likewise.
7750         (ix86_expand_strlen): Likewise.
7751         (ix86_emit_fp_unordered_jump): Likewie.
7752
7753 2008-08-06  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
7754
7755         * c-common.c: Fix typo.
7756         (c_common_reswords): Activate more C++ keyword warnings.
7757
7758         * matrix-reorg.c (compute_offset): Avoid C++ keywords.
7759
7760 2008-08-06  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
7761
7762         PR 26785
7763         * diagnostic.c (permerror_at): New.
7764         * toplev.h (permerror_at): Declare.
7765
7766 2008-08-06  Victor Kaplansky  <victork@il.ibm.com>
7767             Ira Rosen  <irar@il.ibm.com>
7768
7769         * tree-vect-transform.c (vect_model_simple_cost): Return
7770         immediately if stmt is pure SLP.
7771         (vect_model_store_cost): Ditto.
7772         (vect_model_load_cost): Ditto.
7773         (vectorizable_store): Remove PURE_SLP check before call
7774         to vect_model_store_cost.
7775         (vect_model_store_cost): When checking whether stmt describe
7776         strided access, add a check that it is not slp_node.
7777
7778 2008-08-06  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
7779
7780         PR 8715
7781         * c-common.c (warn_for_sign_compare): New. Handle separately the
7782         case that 'constant' is zero.
7783         * c-typeck.c (build_binary_op): Move code to c-common.c
7784
7785 2008-08-06  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
7786
7787         * config/alpha/alpha.c (alpha_preferred_reload_class,
7788         alpha_secondary_reload, alpha_emit_set_const_1, function_value,
7789         alpha_output_mi_thunk_osf): Avoid C++ keywords.
7790         * config/arm/arm.c (output_move_vfp, output_move_neon): Likewise.
7791         * config/arm/arm.md: Likewise.
7792         * config/avr/avr-protos.h (preferred_reload_class,
7793         test_hard_reg_class, avr_simplify_comparison_p,
7794         out_shift_with_cnt, class_max_nregs): Likewise.
7795         * config/avr/avr.c (class_max_nregs, avr_simplify_comparison_p,
7796         output_movqi, output_movhi, output_movsisf, out_shift_with_cnt,
7797         preferred_reload_class, test_hard_reg_class): Likewise.
7798         * config/bfin/bfin.c (legitimize_pic_address, hard_regno_mode_ok,
7799         bfin_memory_move_cost, bfin_secondary_reload,
7800         bfin_output_mi_thunk): Likewise.
7801         * config/crx/crx.c (crx_secondary_reload_class,
7802         crx_memory_move_cost): Likewise.
7803         * config/frv/frv-protos.h (frv_secondary_reload_class,
7804         frv_class_likely_spilled_p, frv_class_max_nregs): Likewise.
7805         * config/frv/frv.c (frv_override_options, frv_alloc_temp_reg,
7806         frv_secondary_reload_class, frv_class_likely_spilled_p,
7807         frv_class_max_nregs): Likewise.
7808         * config/h8300/h8300.c (h8300_classify_operand,
7809         h8300_unary_length, h8300_bitfield_length, h8300_asm_insn_count):
7810         Likewise.
7811         * config/i386/winnt.c (i386_pe_declare_function_type): Likewise.
7812         * config/ia64/ia64.c (ia64_preferred_reload_class,
7813         ia64_secondary_reload_class, ia64_output_mi_thunk): Likewise.
7814         * config/iq2000/iq2000.c (gen_int_relational): Likewise.
7815         * config/m32c/m32c.c (class_can_hold_mode, m32c_output_compare):
7816         Likewise.
7817         * config/m68hc11/m68hc11.c (preferred_reload_class,
7818         m68hc11_memory_move_cost): Likewise.
7819         * config/mcore/mcore.c (mcore_secondary_reload_class,
7820         mcore_reload_class): Likewise.
7821         * config/mips/mips.c (mips_hard_regno_mode_ok_p,
7822         mips_class_max_nregs, mips_cannot_change_mode_class,
7823         mips_preferred_reload_class, mips_secondary_reload_class,
7824         mips_output_mi_thunk): Likewise.
7825         * config/mmix/mmix.c (mmix_preferred_reload_class,
7826         mmix_preferred_output_reload_class, mmix_secondary_reload_class):
7827         Likewise.
7828         * config/mn10300/mn10300.c (mn10300_secondary_reload_class):
7829         Likewise.
7830         * config/pa/pa.c (pa_secondary_reload, pa_combine_instructions,
7831         pa_can_combine_p, pa_cannot_change_mode_class): Likewise.
7832         * config/pa/pa.h (LEGITIMIZE_RELOAD_ADDRESS): Likewise.
7833         * config/rs6000/rs6000.c (paired_expand_vector_init,
7834         rs6000_secondary_reload_class, rs6000_output_mi_thunk,
7835         compare_section_name, rs6000_memory_move_cost): Likewise.
7836         * config/s390/s390.c (s390_emit_compare_and_swap,
7837         s390_preferred_reload_class, s390_secondary_reload,
7838         legitimize_pic_address, legitimize_tls_address,
7839         legitimize_reload_address, s390_expand_cs_hqi, s390_expand_atomic,
7840         s390_class_max_nregs): Likewise.
7841         * config/s390/s390.h (LEGITIMIZE_RELOAD_ADDRESS): Likewise.
7842         * config/s390/s390.md: Likewise.
7843         * config/score/score-protos.h (score_secondary_reload_class,
7844         score_preferred_reload_class): Likewise.
7845         * config/score/score.c (score_preferred_reload_class,
7846         score_secondary_reload_class): Likewise.
7847         * config/score/score3.c (score3_output_mi_thunk,
7848         score3_preferred_reload_class, score3_secondary_reload_class,
7849         score3_hard_regno_mode_ok): Likewise.
7850         * config/score/score3.h (score3_preferred_reload_class,
7851         score3_secondary_reload_class): Likewise.
7852         * config/score/score7.c (score7_output_mi_thunk,
7853         score7_preferred_reload_class, score7_secondary_reload_class,
7854         score7_hard_regno_mode_ok): Likewise.
7855         * config/score/score7.h (score7_preferred_reload_class,
7856         score7_secondary_reload_class): Likewise.
7857         * config/sh/sh.c (prepare_move_operands, output_far_jump,
7858         output_branchy_insn, add_constant, gen_block_redirect,
7859         sh_insn_length_adjustment, sh_cannot_change_mode_class,
7860         sh_output_mi_thunk, replace_n_hard_rtx, sh_secondary_reload): Likewise.
7861         * config/sparc/sparc.c (sparc_output_mi_thunk): Likewise.
7862         * config/stormy16/stormy16.c (xstormy16_output_cbranch_hi,
7863         xstormy16_output_cbranch_si, xstormy16_secondary_reload_class,
7864         xstormy16_preferred_reload_class): Likewise.
7865         * config/xtensa/xtensa.c (xtensa_expand_compare_and_swap,
7866         xtensa_expand_atomic, override_options,
7867         xtensa_preferred_reload_class, xtensa_secondary_reload_class):
7868         Likewise.
7869         * reorg.c (try_merge_delay_insns): Likewise.
7870         * tree.c (merge_dllimport_decl_attributes): Likewise.
7871
7872         * config/frv/frv.c (frv_print_operand): Change isalpha to ISALPHA.
7873
7874 2008-08-06  Michael Matz  <matz@suse.de>
7875
7876         * Makefile.in (write_entries_to_file): Quote words.
7877         * gengtype.c: (read_input_line): Skip over leading white-space.
7878
7879 2008-08-06  Marc Gauthier  <marc@tensilica.com>
7880
7881         * config.gcc: Match more processor names for Xtensa.
7882         * configure.ac: Likewise.
7883         * doc/install.texi (Specific): Likewise.
7884         * configure: Regenerate.
7885
7886 2008-08-06  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
7887
7888         * builtins.c (expand_builtin_profile_func): Avoid C++ keywords.
7889         * calls.c (avoid_likely_spilled_reg): Likewise.
7890         * cfgexpand.c (gimple_assign_rhs_to_tree): Likewise.
7891         * cgraph.c (cgraph_clone_edge, cgraph_clone_node): Likewise.
7892         * config/i386/i386.c (ix86_expand_special_args_builtin,
7893         ix86_secondary_reload): Likewise.
7894         * except.c (struct eh_region, gen_eh_region_catch,
7895         remove_unreachable_regions, duplicate_eh_regions,
7896         assign_filter_values, build_post_landing_pads,
7897         sjlj_find_directly_reachable_regions, remove_eh_handler,
7898         reachable_next_level, foreach_reachable_handler,
7899         can_throw_internal_1, can_throw_external_1,
7900         collect_one_action_chain): Likewise.
7901         * expr.c (expand_expr_real_1, vector_mode_valid_p): Likewise.
7902         * fold-const.c (twoval_comparison_p, eval_subst): Likewise.
7903         * function.c (update_temp_slot_address, instantiate_new_reg,
7904         instantiate_virtual_regs_in_rtx,
7905         instantiate_virtual_regs_in_insn): Likewise.
7906         * gimple.c (extract_ops_from_tree, gimple_seq_copy): Likewise.
7907         * gimplify.c (gimplify_call_expr, gimplify_init_constructor,
7908         gimplify_cleanup_point_expr): Likewise.
7909         * ipa-cp.c (ipcp_lattice_changed): Likewise.
7910         * passes.c (next_pass_1): Likewise.
7911         * print-tree.c (print_node_brief, print_node): Likewise.
7912         * profile.c (branch_prob): Likewise.
7913         * tree-dump.c (dump_register): Likewise.
7914         * tree-eh.c (replace_goto_queue_cond_clause, lower_catch):
7915         Likewise.
7916         * tree-inline.c (remap_ssa_name, remap_type_1, remap_blocks,
7917         copy_statement_list, remap_gimple_op_r, copy_tree_body_r,
7918         copy_edges_for_bb, copy_cfg_body, copy_tree_r,
7919         copy_arguments_for_versioning, copy_static_chain): Likewise.
7920         * tree-into-ssa.c (names_replaced_by, add_to_repl_tbl,
7921         add_new_name_mapping, register_new_name_mapping): Likewise.
7922         * tree-mudflap.c (mf_xform_derefs): Likewise.
7923         * tree-predcom.c (struct chain, dump_chain, replace_ref_with,
7924         get_init_expr, combine_chains): Likewise.
7925         * tree-pretty-print.c (dump_generic_node): Likewise.
7926         * tree-ssa-structalias.c (create_variable_info_for): Likewise.
7927         * tree-vrp.c (simplify_cond_using_ranges): Likewise.
7928         * tree.c (substitute_in_expr, iterative_hash_expr): Likewise.
7929         * value-prof.c (gimple_duplicate_stmt_histograms): Likewise.
7930
7931 2008-08-06  H.J. Lu  <hongjiu.lu@intel.com>
7932
7933         PR middle-end/37010
7934         * calls.c (expand_call): Use the biggest preferred stack
7935         boundary.
7936
7937 2008-08-06  Michael Matz  <matz@suse.de>
7938
7939         PR target/36613
7940         * reload.c (push_reload): Merge in,out,in_reg,out_reg members
7941         for reused reload, instead of overwriting them.
7942
7943 2008-08-06  H.J. Lu  <hongjiu.lu@intel.com>
7944
7945         PR middle-end/37009
7946         * cfgexpand.c (expand_stack_alignment): Check parm_stack_boundary
7947         for incoming stack boundary.
7948
7949         * function.c (assign_parm_find_entry_rtl): Update
7950         parm_stack_boundary.
7951
7952         * function.h (rtl_data): Add parm_stack_boundary.
7953
7954         * config/i386/i386.c (ix86_finalize_stack_realign_flags): Check
7955         parm_stack_boundary for incoming stack boundary.
7956
7957 2008-08-06  Joseph Myers  <joseph@codesourcery.com>
7958
7959         * jump.c (rtx_renumbered_equal_p): Do not call subreg_regno_offset
7960         for unrepresentable subregs or treat them as equal to other regs
7961         or subregs with the same register number.
7962
7963 2008-08-06  Aldy Hernandez  <aldyh@redhat.com>
7964
7965         PR middle-end/35432
7966         * gimplify.c (gimplify_modify_expr): Do not optimize zero-sized types
7967         if want_value.
7968
7969 2008-08-06  Jan Hubicka  <jh@suse.cz>
7970
7971         * predict.c (maybe_hot_frequency_p): When profile is absent, all
7972         frequencies might be hot.
7973
7974 2008-08-06  Andreas Krebbel  <krebbel1@de.ibm.com>
7975
7976         * reload.c (find_reloads): Force constants into literal pool
7977         also if they are wrapped in a SUBREG.
7978
7979 2008-08-06  Maxim Kuvyrkov  <maxim@codesourcery.com>
7980
7981         PR target/35659
7982         * haifa-sched.c (sched_insn_is_legitimate_for_speculation_p): Move ...
7983         * sched-deps.c (sched_insn_is_legitimate_for_speculation_p): ... here.
7984         Don't allow predicated instructions for data speculation.
7985         * sched-int.h (sched_insn_is_legitimate_for_speculation_p): Move
7986         declaration.
7987
7988 2008-08-06  Maxim Kuvyrkov  <maxim@codesourcery.com>
7989
7990         * haifa-sched.c (extend_global): Split to extend_global_data and
7991         extend_region_data.  Update all uses.
7992         (extend_all): Rename to extend_block_data.
7993
7994 2008-08-06  Maxim Kuvyrkov  <maxim@codesourcery.com>
7995
7996         * sched-rgn.c (new_ready): Check if instruction can be
7997         speculatively scheduled before attempting speculation.
7998         (debug_rgn_dependencies): Remove wrongful assert.
7999
8000 2008-08-05  Bob Wilson  <bob.wilson@acm.org>
8001
8002         * config/xtensa/t-xtensa: Remove dependency for gt-xtensa.h.
8003
8004 2008-08-05  Bob Wilson  <bob.wilson@acm.org>
8005
8006         * config/xtensa/xtensa.c (xtensa_va_start): Unshare valist.
8007         (xtensa_gimplify_va_arg_expr): Unshare valist, orig_ndx, ndx, array,
8008         va_size, and type_size.
8009
8010 2008-08-04  Jason Merrill  <jason@redhat.com>
8011
8012         PR c++/37016
8013         * tree-ssa.c (useless_type_conversion_p_1): Call langhook
8014         if TYPE_STRUCTURAL_EQUALITY_P is true for both types.
8015
8016 2008-08-05  Richard Henderson  <rth@redhat.com>
8017
8018         * configure.ac (HAVE_GAS_CFI_DIRECTIVE): Check .cfi_personality.
8019         * configure: Rebuild.
8020
8021 2008-08-05  Andrew Pinski  <andrew_pinski@playstation.sony.com>
8022
8023         PR tree-opt/37024
8024         * tree-tailcall.c (process_assignment): Use gimple_assign_cast_p
8025         instead of IS_CONVERT_EXPR_CODE_P for seeing if the assignment
8026         is a conversion.
8027
8028 2008-08-05  Richard Henderson  <rth@redhat.com>
8029
8030         * Makefile.in (c-cppbuiltin.o): Depend on debug.h.
8031         * c-cppbuiltin.c (c_cpp_builtins): Define __GCC_HAVE_DWARF2_CFI_ASM.
8032         * doc/cpp.texi (__GCC_HAVE_DWARF2_CFI_ASM): Document it.
8033         * common.opt (fdwarf2-cfi-asm): New.
8034         * configure.ac (HAVE_GAS_CFI_DIRECTIVE): New.
8035         * config.in, configure: Rebuild.
8036         * dwarf2asm.c (dw2_asm_output_data_raw): New.
8037         (dw2_asm_output_data_uleb128_raw, dw2_asm_output_data_sleb128_raw):
8038         New.
8039         (dw2_force_const_mem): Externalize.
8040         * dwarf2asm.h: Update.
8041         * dwarf2out.c (dwarf2out_cfi_label): If flag_dwarf2_cfi_asm, don't
8042         generate a real label.
8043         (output_cfi_directive): New.
8044         (add_fde_cfi): If flag_dwarf2_cfi_asm, use it.
8045         (output_call_frame_info): Do nothing if flag_dwarf2_cfi_asm.
8046         (dwarf2out_begin_prologue): Emit .cfi_startproc, .cfi_personality,
8047         and .cfi_lsda.
8048         (dwarf2out_end_epilogue): Emit .cfi_endproc.
8049         (output_loc_operands_raw, output_loc_sequence_raw): New.
8050         (output_cfa_loc_raw): New.
8051
8052 2008-08-05  Paul Brook  <paul@codesourcery.com>
8053
8054         * doc/invoke.texi: Document new ARM -mfpu= and -mcpu= options.
8055         * config/arm/arm.c (all_fpus): Add vfpv3 and vfpv3-d16.
8056         (fp_model_for_fpu): Add entry for FPUTYPE_VFP3D16.
8057         (arm_file_start): Add FPUTYPE_VFP3D16.  Rename vfp3 to vfpv3.
8058         * config/arm/arm.h (TARGET_VFPD32): Define.
8059         (TARGET_VFP3): Use TARGET_VFPD32.
8060         (fputype): Add FPUTYPE_VFP3D16.
8061         (LAST_VFP_REGNUM): Use TARGET_VFPD32.
8062         * config/arm/constraints.md ("w"): Use TARGET_VFPD32.
8063         * config/arm/arm-cores.def: Add cortex-r4f.
8064         * config/arm/arm-tune.md: Regenerate.
8065
8066 2008-08-05  Ulrich Weigand  <Ulrich.Weigand@de.ibm.com>
8067
8068         * config/spu_spu_mfcio.h: Wrap in extern "C" if __cplusplus.
8069         Reword some comments throughout the file.
8070
8071         (MFC_MIN_DMA_LIST_ELEMENTS): New define.
8072         (MFC_MAX_DMA_LIST_ELEMENTS): Likewise.
8073         (MFC_MIN_DMA_LIST_SIZE): Redefine in terms of
8074         MFC_MIN_DMA_LIST_ELEMENTS.
8075         (MFC_MAX_DMA_LIST_SIZE): Redefine in terms of
8076         MFC_MAX_DMA_LIST_ELEMENTS.
8077
8078         (MFC_START_ENABLE): Remove PPU-only define.
8079         (MFC_PUTS_CMD, MFC_PUTFS_CMD, MFC_PUTBS_CMD): Likewise.
8080         (MFC_GETS_CMD, MFC_GETFS_CMD, MFC_GETBS_CMD): Likewise.
8081
8082         (MFC_PUTB_CMD, MFC_PUTF_CMD): Reimplement using symbolic constants.
8083         (MFC_PUTL_CMD, MFC_PUTLB_CMD, MFC_PUTLF_CMD): Likewise.
8084         (MFC_PUTR_CMD, MFC_PUTRB_CMD, MFC_PUTRF_CMD): Likewise.
8085         (MFC_PUTRL_CMD, MFC_PUTRLB_CMD, MFC_PUTRLF_CMD): Likewise.
8086         (MFC_GETB_CMD, MFC_GETF_CMD): Likewise.
8087         (MFC_GETL_CMD, MFC_GETLB_CMD, MFC_GETLF_CMD): Likewise.
8088         (MFC_SNDSIGB_CMD, MFC_SNDSIGF_CMD): Likewise.
8089
8090         (MFC_SDCRT_CMD, MFC_SDCRTST_CMD): New defines.
8091         (MFC_SDCRZ_CMD, MFC_SDCRST_CMD, MFC_SDCRF_CMD): Likewise.
8092         (mfc_sdcrt, mfc_sdcrtst): Likewise.
8093         (mfc_sdcrz, mfc_sdcrst, mfc_sdcrf): Likewise.
8094
8095         (spu_read_machine_status): Fix typo.
8096
8097 2008-08-05  Ulrich Weigand  <Ulrich.Weigand@de.ibm.com>
8098
8099         * config/spu/spu.h (CANNOT_CHANGE_MODE_CLASS): Allow (multi)word-sized
8100         SUBREG of multi-word hard register.
8101         * config/spu/spu.c (valid_subreg): Likewise.
8102         (adjust_operand): Handle SUBREGs of multi-word hard registers.
8103
8104 2008-08-04  Richard Guenther  <rguenther@suse.de>
8105
8106         * tree-ssa-loop-ivopts.c (add_iv_value_candidates): Also add
8107         the candidate with the stripped base if that base is different
8108         from the original base even for offset zero.
8109
8110 2008-08-04  Richard Guenther  <rguenther@suse.de>
8111
8112         PR middle-end/36691
8113         * tree-ssa-loop-niter.c (number_of_iterations_lt_to_ne): Correctly
8114         check for no_overflow.
8115
8116 2008-08-04  Richard Guenther  <rguenther@suse.de>
8117
8118         * tree-vect-transform.c (vectorizable_call): Fix tuplification.
8119
8120 2008-08-04  Paul Brook  <paul@codesourcery.com>
8121
8122         * cofig/arm/arm.c (thumb_core_reg_alloc_order): New.
8123         (arm_order_regs_for_local_alloc): New function.
8124         * config/arm/arm-protos.h (arm_order_regs_for_local_alloc): Add
8125         prototype.
8126         * config/arm/arm.h (ORDER_REGS_FOR_LOCAL_ALLOC): Define.
8127
8128 2008-08-04  H.J. Lu  <hongjiu.lu@intel.com>
8129
8130         PR target/37012
8131         * config/i386/i386.c (ix86_expand_prologue): Use UNITS_PER_WORD
8132         instead of STACK_BOUNDARY / BITS_PER_UNIT to align stack.
8133         (ix86_expand_epilogue): Likewise.
8134
8135 2008-08-04  H.J. Lu  <hongjiu.lu@intel.com>
8136
8137         * config/i386/i386.c (ix86_compute_frame_layout): Fix a typo
8138         in comments.
8139
8140 2008-08-03  Uros Bizjak  <ubizjak@gmail.com>
8141
8142         * config/i386/mmx.md (*mov<mode>_internal_rex64): Use Yi instead of x
8143         to avoid inter-unit moves for !TARGET_INTER_UNIT_MOVES.
8144         (*movv2sf_internal_rex64): Ditto.
8145
8146 2008-08-03  Jan Hubicka  <jh@suse.cz>
8147
8148         * optabs.c (expand_binop, expand_builtin_pow, expand_builtin_powi,
8149         expand_builtin_strcat): Upse optimize_insn_for_speed predicate.
8150         * expmed.c (expand_smod_pow2): Likewise.
8151
8152 2008-08-03  Uros Bizjak  <ubizjak@gmail.com>
8153
8154         PR target/36992
8155         * config/i386/sse.md (vec_concatv2di): Add Y2 constraint to
8156         alternative 0 of operand 1.
8157         (*vec_concatv2di_rex64_sse): Ditto.
8158         (*vec_concatv2di_rex64_sse4_1): Add x constraint to alternative 0
8159         of operand 1.
8160         (*sse2_storeq_rex64): Penalize allocation of "r" registers.
8161         * config/i386/mmx.md (*mov<mode>_internal_rex64): Penalize allocation
8162         of "Y2" registers to avoid SSE <-> MMX conversions for DImode moves.
8163         (*movv2sf_internal_rex64): Ditto.
8164
8165 2008-08-02  Richard Guenther  <rguenther@suse.de>
8166
8167         PR target/35252
8168         * config/i386/sse.md (SSEMODE4S, SSEMODE2D): New mode iterators.
8169         (ssedoublesizemode): New mode attribute.
8170         (sse_shufps): Call gen_sse_shufps_v4sf.
8171         (sse_shufps_1): Macroize.
8172         (sse2_shufpd): Call gen_Sse_shufpd_v2df.
8173         (sse2_shufpd_1): Macroize.
8174         (vec_extract_odd, vec_extract_even): New expanders.
8175         (vec_interleave_highv4sf, vec_interleave_lowv4sf,
8176         vec_interleave_highv2df, vec_interleave_lowv2df): Likewise.
8177         * i386.c (ix86_expand_vector_init_one_nonzero): Call
8178         gen_sse_shufps_v4sf instead of gen_sse_shufps_1.
8179         (ix86_expand_vector_set): Likewise.
8180         (ix86_expand_reduc_v4sf): Likewise.
8181
8182 2008-08-01  Doug Kwan  <dougkwan@google.com>
8183
8184         * matrix-reorg.c: Re-enable all code.
8185         (struct malloc_call_data): Change CALL_STMT to gimple type.
8186         (collect_data_for_malloc_call): Tuplify.
8187         (struct access_site_info): Change STMT to gimple type.
8188         (struct matrix_info): Change MIN_INDIRECT_LEVEL_ESCAPE_STMT,
8189         and MALLOC_FOR_LEVEL to gimple and gimple pointer type.
8190         (struct free_info): Change STMT to gimple type.
8191         (struct matrix_access_phi_node):  Change PHI to gimple type.
8192         (get_inner_of_cast_expr): Remove.
8193         (may_flatten_matrices_1): Tuplify.
8194         (may_flatten_matrices): Ditto.
8195         (mark_min_matrix_escape_level): Ditto.
8196         (ssa_accessed_in_tree): Refactor statement RHS related code into ...
8197         (ssa_accessed_in_call_rhs): New
8198         (ssa_accessed_in_assign_rhs): New
8199         (record_access_alloc_site_info): Tuplify.
8200         (add_allocation_site): Ditto.
8201         (analyze_matrix_allocation_site): Ditto.
8202         (analyze_transpose): Ditto.
8203         (get_index_from_offset): Ditto.
8204         (update_type_size): Ditto.
8205         (analyze_accesses_for_call_expr): Tuplify and renamed into ...
8206         (analyze_accesses_for_call_stmt): New. Also handle LHS of a call.
8207         (analyze_accesses_for_phi_node): Tuplify.
8208         (analyze_accesses_for_modify_stmt): Tuplify and renamed into ...
8209         (analyze_accesses_for_assign_stmt): Remove code for handling call LHS.
8210         (analyze_matrix_accesses): Tuplify.
8211         (check_var_data): New call-back type for check_var_notmodified_p.
8212         (check_var_notmodified_p): Tuplify and use call-back struct to
8213         return statement found.
8214         (can_calculate_expr_before_stmt): Factor out statement related code
8215         into ...
8216         (can_calculate_stmt_before_stmt): New.
8217         (check_allocation_function): Tuplify.
8218         (find_sites_in_func): Ditto.
8219         (record_all_accesses_in_func): Ditto.
8220         (transform_access_sites): Ditto.
8221         (transform_allocation_sites): Ditto.
8222         (matrix_reorg): Re-enable.
8223         (gate_matrix_reorg): Re-enable.
8224
8225 2008-08-01  Jakub Jelinek  <jakub@redhat.com>
8226
8227         * dwarf2out.c (compute_barrier_args_size): Set barrier_args_size
8228         for labels for which it hasn't been set yet.  If it has been set,
8229         stop walking insns and continue with next worklist item.
8230         (dwarf2out_stack_adjust): Don't call compute_barrier_args_size
8231         if the only BARRIER is at the very end of a function.
8232
8233 2008-08-01  H.J. Lu  <hongjiu.lu@intel.com>
8234
8235         * cfgexpand.c (expand_stack_alignment): Assert that
8236         stack_realign_drap and drap_rtx must match.
8237
8238         * function.c (instantiate_new_reg): If DRAP is used to realign
8239         stack, replace virtual_incoming_args_rtx with internal arg
8240         pointer.
8241
8242 2008-08-01  Richard Guenther  <rguenther@suse.de>
8243
8244         * tree-ssa-pre.c (fini_pre): Take in_fre parameter.  Free
8245         loop information only if we initialized it.
8246         (execute_pre): Call fini_pre with in_fre.
8247         * tree-ssa-loop-ivcanon (try_unroll_loop_completely): Dump
8248         if we do not unroll because we hit max-completely-peeled-insns.
8249         Use our estimation for consistency, do allow shrinking.
8250
8251 2008-08-01  H.J. Lu  <hongjiu.lu@intel.com>
8252
8253         * config/i386/i386.c (override_options): Replace ABI_STACK_BOUNDARY
8254         with MIN_STACK_BOUNDARY.
8255         (ix86_update_stack_boundary): Likewise.
8256         (ix86_expand_prologue): Assert MIN_STACK_BOUNDARY instead of
8257         STACK_BOUNDARY.
8258
8259         * config/i386/i386.h (ABI_STACK_BOUNDARY): Renamed to ...
8260         (MIN_STACK_BOUNDARY): This.
8261
8262 2008-08-01  Richard Guenther  <rguenther@suse.de>
8263
8264         PR middle-end/36997
8265         * gimplify.c (gimplify_call_expr): Set error_mark_node on GS_ERROR.
8266
8267 2008-08-01  Richard Guenther  <rguenther@suse.de>
8268
8269         PR tree-optimization/36988
8270         * tree-ssa-ccp.c (ccp_fold): Conversions of constants only
8271         do not matter if that doesn't change volatile qualification.
8272
8273 2008-08-01  Paolo Bonzini  <bonzini@gnu.org>
8274
8275         * configure.ac: Do not generate libada-mk.  Do not subst
8276         host_cc_for_libada.
8277         * libada-mk.in: Remove.
8278         * Makefile.in: Pass TARGET_LIBGCC2_CFLAGS to libgcc.mvars.
8279         * configure: Regenerate.
8280
8281 2008-08-01  Basile Starynkevitch  <basile@starynkevitch.net>
8282
8283         * tree-pass.h: Added comment about not dumping passes with name
8284         starting with star in struct opt_pass.
8285         * passes.c (register_dump_files_1): Don't do dump for a pass with
8286         name starting with star.
8287         * doc/passes.texi (Pass manager): Mention pass names and special
8288         meaning of star prefix to avoid dump.
8289
8290 2008-07-31  Adam Nemet  <anemet@caviumnetworks.com>
8291
8292         * config.gcc (mipsisa64r2*-*-linux*): New configuration.  Set ISA
8293         to MIPS64r2.
8294         * config/mips/mips.h (GENERATE_MIPS16E): Update comment.
8295         (ISA_MIPS64R2): New macro.
8296         (TARGET_CPU_CPP_BUILTINS, MULTILIB_ISA_DEFAULT): Handle it.
8297         (ISA_HAS_64BIT_REGS, ISA_HAS_MUL3, ISA_HAS_FP_CONDMOVE,
8298         ISA_HAS_8CC, ISA_HAS_FP4, ISA_HAS_PAIRED_SINGLE,
8299         ISA_HAS_MADD_MSUB, ISA_HAS_NMADD4_NMSUB4, ISA_HAS_CLZ_CLO,
8300         ISA_HAS_ROR, ISA_HAS_PREFETCH, ISA_HAS_PREFETCHX, ISA_HAS_SEB_SEH,
8301         ISA_HAS_EXT_INS, ISA_HAS_MXHC1, ISA_HAS_HILO_INTERLOCKS,
8302         ISA_HAS_SYNCI, MIN_FPRS_PER_FMT): Return true for ISA_MIPS64R2.
8303         (MIPS_ISA_LEVEL_SPEC, ASM_SPEC, LINK_SPEC): Handle -mips64r2.
8304         (TARGET_LOONGSON_2E, TARGET_LOONGSON_2F, TARGET_LOONGSON_2EF):
8305         Move up to keep list alphabetically sorted.
8306         (TUNE_20KC, TUNE_24K, TUNE_74K, TUNE_LOONGSON_2EF): Likewise.
8307         * config/mips/mips.c (mips_cpu_info_table): Add default MIPS64r2
8308         processor.
8309         * doc/invoke.texi (MIPS Options): Add -mips64r2.
8310         (-march=@var{arch}): Add mips64r2.
8311
8312 2008-07-31  H.J. Lu  <hongjiu.lu@intel.com>
8313
8314         * config/i386/darwin.h (MAIN_STACK_BOUNDARY): Define to 128.
8315
8316 2008-07-31  Steve Ellcey  <sje@cup.hp.com>
8317
8318         * expr.c (expand_assignment): Check for complete type.
8319
8320 2008-07-31  H.J. Lu  <hongjiu.lu@intel.com>
8321
8322         PR debug/36977
8323         * cfgexpand.c (expand_stack_alignment): Set stack_realign_tried.
8324
8325         * dwarf2out.c (based_loc_descr): Check crtl->stack_realign_tried
8326         for stack alignment.
8327
8328         * function.h (rtl_data): Add stack_realign_tried.  Update comments.
8329
8330 2008-07-31  Kaz Kojima  <kkojima@gcc.gnu.org>
8331
8332         * config/sh/sh.c (sh_canonical_va_list_type): Remove.
8333         (TARGET_CANONICAL_VA_LIST_TYPE): Remove.
8334
8335 2008-07-31  Jakub Jelinek  <jakub@redhat.com>
8336
8337         PR rtl-optimization/36419
8338         * dwarf2out.c (barrier_args_size): New variable.
8339         (compute_barrier_args_size, compute_barrier_args_size_1): New
8340         functions.
8341         (dwarf2out_stack_adjust): For BARRIERs call compute_barrier_args_size
8342         if not called yet in the current function, use barrier_args_size
8343         array to find the new args_size value.
8344         (dwarf2out_frame_debug): Free and clear barrier_args_size.
8345
8346 2008-07-31  H.J. Lu  <hongjiu.lu@intel.com>
8347
8348         PR debug/36980
8349         * dwarf2out.c (dwarf2out_frame_debug_expr): Move rule 17 before
8350         rule 19.
8351
8352 2008-07-31  H.J. Lu  <hongjiu.lu@intel.com>
8353
8354         PR debug/36976
8355         * dwarf2out.c (dwarf2out_args_size_adjust): New.
8356         (dwarf2out_stack_adjust): Use it.
8357         (dwarf2out_frame_debug_expr): Likewise.
8358
8359 2008-07-31  Richard Guenther  <rguenther@suse.de>
8360
8361         PR tree-optimization/36978
8362         * tree-ssa-loop-unswitch.c (tree_may_unswitch_on): Do not fold
8363         the generated condition.
8364
8365 2008-07-31  Richard Guenther  <rguenther@suse.de>
8366
8367         * passes.c (init_optimization_passes): Always call
8368         pass_early_warn_uninitialized.
8369         * opts.c (decode_options): Do not warn about -Wuninitialized at -O0.
8370         * doc/invoke.texi (-Wuninitialized): Correct for enabling at -O0.
8371         * doc/passes.texi (Warn for uninitialized variables): Adjust.
8372
8373 2008-07-31  Jakub Jelinek  <jakub@redhat.com>
8374
8375         PR c/36970
8376         * builtins.c (maybe_emit_free_warning): New function.
8377         (expand_builtin): Process BUILT_IN_FREE even at -O0.  Call
8378         maybe_emit_free_warning for BUILT_IN_FREE.
8379
8380         PR debug/36278
8381         * dwarf2out.c (get_context_die): New function.
8382         (force_decl_die, force_type_die): Use it.
8383         (dwarf2out_imported_module_or_decl): Likewise.  If base_type_die
8384         returns NULL, force generation of DW_TAG_typedef and put that into
8385         DW_AT_import.
8386
8387         PR preprocessor/36649
8388         * c-pch.c (c_common_read_pch): Save and restore
8389         line_table->trace_includes across PCH restore.
8390
8391 2008-07-30  Eric Botcazou  <ebotcazou@adacore.com>
8392
8393         PR ada/36554
8394         * dwarf2out.c (is_subrange_type): Deal with BOOLEAN_TYPE.
8395
8396 2008-07-30  Rafael Ãƒvila de Espíndola  <espindola@google.com>
8397
8398         PR 36974
8399         * final.c (call_from_call_insn): Handle COND_EXEC.
8400
8401 2008-07-30  H.J. Lu  <hongjiu.lu@intel.com>
8402
8403         * builtins.c (std_gimplify_va_arg_expr): Replace
8404         PREFERRED_STACK_BOUNDARY with MAX_SUPPORTED_STACK_ALIGNMENT.
8405         * config/i386/i386.c (ix86_gimplify_va_arg): Likewise.
8406
8407 2008-07-30  Joey Ye  <joey.ye@intel.com>
8408             H.J. Lu  <hongjiu.lu@intel.com>
8409
8410         * builtins.c (expand_builtin_setjmp_receiver): Replace
8411         virtual_incoming_args_rtx with crtl->args.internal_arg_pointer.
8412         (expand_builtin_apply_args_1): Likewise.
8413         (expand_builtin_longjmp): Need DRAP for stack alignment.
8414         (expand_builtin_apply): Likewise.
8415
8416         * caller-save.c (setup_save_areas): Call assign_stack_local_1
8417         instead of assign_stack_local to allow alignment reduction.
8418
8419         * calls.c (emit_call_1): Need DRAP for stack alignment if
8420         return pops.
8421         (expand_call): Replace virtual_incoming_args_rtx with
8422         crtl->args.internal_arg_pointer.
8423         * stmt.c (expand_nl_goto_receiver): Likewise.
8424
8425         * cfgexpand.c (get_decl_align_unit): Estimate stack variable
8426         alignment and store to stack_alignment_estimated and
8427         max_used_stack_slot_alignment.
8428         (expand_one_var): Likewise.
8429         (expand_stack_alignment): New function.
8430         (tree_expand_cfg): Initialize max_used_stack_slot_alignment
8431         and stack_alignment_estimated fields in rtl_data.  Call
8432         expand_stack_alignment at end.
8433
8434         * defaults.h (INCOMING_STACK_BOUNDARY): New.
8435         (MAX_STACK_ALIGNMENT): Likewise.
8436         (MAX_SUPPORTED_STACK_ALIGNMENT): Likewise.
8437         (SUPPORTS_STACK_ALIGNMENT): Likewise.
8438
8439         * emit-rtl.c (gen_reg_rtx): Estimate stack alignment for
8440         stack alignment when generating virtual registers.
8441
8442         * function.c (assign_stack_local): Renamed to ...
8443         (assign_stack_local_1): This.  Add a parameter to indicate
8444         if it is OK to reduce alignment.
8445         (assign_stack_local): Use it.
8446         (instantiate_new_reg): Instantiate virtual incoming args rtx
8447         to vDRAP if stack realignment and DRAP is needed.
8448         (assign_parms): Collect parameter/return type alignment and
8449         contribute to stack_alignment_estimated.
8450         (locate_and_pad_parm): Likewise.
8451         (get_arg_pointer_save_area): Replace virtual_incoming_args_rtx
8452         with crtl->args.internal_arg_pointer.
8453
8454         * function.h (rtl_data): Add new field drap_reg,
8455         max_used_stack_slot_alignment, stack_alignment_estimated,
8456         stack_realign_needed, need_drap, stack_realign_processed and
8457         stack_realign_finalized.
8458         (stack_realign_fp): New macro.
8459         (stack_realign_drap): Likewise.
8460
8461         * global.c (compute_regsets): Frame pointer is needed when
8462         stack is realigned.  Can eliminate frame pointer when stack is
8463         realigned and dynamic realigned argument pointer isn't used.
8464
8465         * reload1.c (update_eliminables):  Frame pointer is needed
8466         when stack is realigned.
8467         (init_elim_table): Can eliminate frame pointer when stack is
8468         realigned and dynamic realigned argument pointer isn't used.
8469
8470         * rtl.h (assign_stack_local_1): Declare new funtion.
8471
8472         * target-def.h (TARGET_UPDATE_STACK_BOUNDARY): New.
8473         (TARGET_GET_DRAP_RTX): Likewise.
8474         (TARGET_CALLS): Add TARGET_UPDATE_STACK_BOUNDARY and
8475         TARGET_GET_DRAP_RTX.
8476
8477         * target.h (gcc_target): Add update_stack_boundary and get_drap_rtx.
8478
8479         * tree-vectorizer.c (vect_can_force_dr_alignment_p): Replace
8480         STACK_BOUNDARY with MAX_STACK_ALIGNMENT.
8481
8482 2008-07-30  Xuepeng Guo  <xuepeng.guo@intel.com>
8483             H.J. Lu  <hongjiu.lu@intel.com>
8484
8485         * dwarf2out.c (dw_fde_struct): Add stack_realignment, drap_reg,
8486         vdrap_reg, stack_realign and drap_reg_saved.
8487         (add_cfi): Don't allow redefining CFA when DRAP is used.
8488         (reg_save): Handle stack alignment.
8489         (dwarf2out_frame_debug_expr): Add rules 16-20 to handle stack
8490         alignment.  Don't generate DWARF information for (set fp sp)
8491         when DRAP is used.
8492         (dwarf2out_begin_prologue): Initialize drap_reg and vdrap_reg
8493         to INVALID_REGNUM.
8494         (int_loc_descriptor): Move prototype forward.  Also define if
8495         DWARF2_UNWIND_INFO is true.
8496         (output_cfa_loc): Handle DW_CFA_expression.
8497         (build_cfa_aligned_loc): New.
8498         (based_loc_descr): Update assert for stack realign.  For local
8499         variables, use sp+offset when stack is aligned without drap and
8500         fp+offset when stack is aligned with drap.  For arguments, use
8501         cfa+offset when drap is used to align stack.
8502
8503 2008-07-30  Joey Ye  <joey.ye@intel.com>
8504             H.J. Lu  <hongjiu.lu@intel.com>
8505
8506         * config/i386/i386.c (ix86_force_align_arg_pointer_string):
8507         Break long line.
8508         (ix86_gen_andsp): New.
8509         (ix86_user_incoming_stack_boundary): Likewise.
8510         (ix86_default_incoming_stack_boundary): Likewise.
8511         (ix86_incoming_stack_boundary): Likewise.
8512         (ix86_can_eliminate): Likewise.
8513         (find_drap_reg): Likewise.
8514         (ix86_update_stack_boundary): Likewise.
8515         (ix86_get_drap_rtx): Likewise.
8516         (ix86_finalize_stack_realign_flags): Likewise.
8517         (TARGET_UPDATE_STACK_BOUNDARY): Likewise.
8518         (TARGET_GET_DRAP_RTX): Likewise.
8519         (override_options): Overide option value for new options.
8520         (ix86_function_ok_for_sibcall): Remove check for
8521         force_align_arg_pointer.
8522         (ix86_handle_cconv_attribute): Likewise.
8523         (ix86_function_regparm): Likewise.
8524         (setup_incoming_varargs_64): Don't set stack_alignment_needed here.
8525         (ix86_va_start): Replace virtual_incoming_args_rtx with
8526         crtl->args.internal_arg_pointer.
8527         (ix86_select_alt_pic_regnum): Check DRAP register.
8528         (ix86_save_reg): Replace force_align_arg_pointer with drap_reg.
8529         (ix86_compute_frame_layout): Compute frame layout wrt stack
8530         realignment.
8531         (ix86_internal_arg_pointer): Just return virtual_incoming_args_rtx.
8532         (ix86_expand_prologue): Decide if stack realignment is needed
8533         and generate prologue code accordingly.
8534         (ix86_expand_epilogue): Generate epilogue code wrt stack
8535         realignment is really needed or not.
8536
8537         * config/i386/i386.h (MAIN_STACK_BOUNDARY): New.
8538         (ABI_STACK_BOUNDARY): Likewise.
8539         (PREFERRED_STACK_BOUNDARY_DEFAULT): Likewise.
8540         (STACK_REALIGN_DEFAULT): Likewise.
8541         (INCOMING_STACK_BOUNDARY): Likewise.
8542         (MAX_STACK_ALIGNMENT): Likewise.
8543         (ix86_incoming_stack_boundary): Likewise.
8544         (FORCE_PREFERRED_STACK_BOUNDARY_IN_MAIN): Removed.
8545         (REAL_PIC_OFFSET_TABLE_REGNUM): Updated to use BX_REG.
8546         (CAN_ELIMINATE): Defined with ix86_can_eliminate.
8547         (machine_function): Remove force_align_arg_pointer.
8548
8549         * config/i386/i386.md (BX_REG): New.
8550         (R13_REG): Likewise.
8551
8552         * config/i386/i386.opt (mforce_drap): New.
8553         (mincoming-stack-boundary): Likewise.
8554         (mstackrealign): Add Init(-1).
8555
8556         * config/i386/i386-protos.h (ix86_can_eliminate): New
8557
8558 2008-07-30  H.J. Lu  <hongjiu.lu@intel.com>
8559
8560         * doc/extend.texi: Update force_align_arg_pointer.
8561
8562         * doc/invoke.texi: Document -mincoming-stack-boundary.  Update
8563         -mstackrealign.
8564
8565         * doc/tm.texi (MAX_STACK_ALIGNMENT): Add macro.
8566         (INCOMING_STACK_BOUNDARY): Likewise.
8567         (TARGET_UPDATE_STACK_BOUNDARY): New target hook.
8568         (TARGET_GET_DRAP_RTX): Likewise.
8569
8570 2008-07-30  Andreas Schwab  <schwab@suse.de>
8571
8572         PR rtl-optimization/36929
8573         * dse.c (replace_inc_dec): Use emit_insn_before instead of
8574         add_insn_before and fix argument order.
8575         (replace_inc_dec_mem): Handle NULL rtx.
8576
8577 2008-07-30  Andrew Jenner  <andrew@codesourcery.com>
8578
8579         * config/arm/arm.c (arm_compute_static_chain_stack_bytes): New
8580         function.
8581         (arm_compute_initial_elimination_offset): Use it.
8582         (arm_compute_save_reg_mask): Include static chain save slot when
8583         calculating alignment.
8584         (arm_get_frame_offsets): Ditto.
8585         (thumb1_compute_save_reg_mask): Ensure we have a low register saved
8586         that we can use to decrement the stack when the stack decrement
8587         could be too big for an immediate value in a single insn.
8588         (thumb1_expand_prologue): Avoid using r12 for stack decrement.
8589
8590 2008-07-30  Richard Guenther  <rguenther@suse.de>
8591
8592         PR tree-optimization/36967
8593         * tree-predcom.c (remove_stmt): Use gimple_assign_ssa_name_copy_p.
8594         Release defs of statements we remove.
8595
8596 2008-07-30  Nathan Froyd  <froydnj@codesourcery.com>
8597
8598         * config/arm/arm.c (arm_expand_prologue): Use 0-length rtvec
8599         instead of NULL_RTVEC.
8600
8601 2008-07-30  Nathan Froyd  <froydnj@codesourcery.com>
8602
8603         PR target/35866
8604
8605         * config/rs6000/rs6000.h (SLOW_UNALIGNED_ACCESS): Add clause for
8606         vector modes.
8607
8608 2008-07-30  Rafael Ãƒvila de Espíndola  <espindola@google.com>
8609
8610         * final.c (call_from_call_insn): New.
8611         (final_scan_insn): Call assemble_external on FUNCTION_DECLs.
8612
8613 2008-07-30  Paolo Bonzini  <bonzini@gnu.org>
8614
8615         * configure.ac: Substitute ADA_CFLAGS.
8616         * configure: Regenerate.
8617         * config.host: Remove mention of pa/x-ada and pa/x-ada-hpux10 files.
8618         * Makefile.in: Remove mention of X_* variables.
8619         * config/pa/x-ada-hpux10: Remove.
8620         * config/pa/x-ada: Remove.
8621
8622         * doc/fragments.texi: Update.
8623
8624 2008-07-30  Olivier Hainque  <hainque@adacore.com>
8625
8626         * config/mips/irix-crti.asm: .hide __gcc_init and __gcc_fini.
8627         * config/mips/iris6.h (IRIX_SUBTARGET_LINK_SPEC, irix ld): Hide
8628         __dso_handle explicitly here.
8629
8630 2008-07-30  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
8631
8632         PR 34389
8633         * c-typeck.c (build_binary_op): Encapsulate code into...
8634         * c-common.c (shorten_binary_op): ...this new function.
8635         (conversion_warning): Use the new function. Handle non-negative
8636         constant in bitwise-and.
8637         * c-common.h (shorten_binary_op): Declare.
8638
8639 2008-07-30  Olivier Hainque  <hainque@adacore.com>
8640
8641         * scan.c (make_sstring_space): Add explicit conversions of
8642         allocator's return value.
8643         * fix-header.c (recognized_function): Likewise.
8644
8645 2008-07-30  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
8646
8647         * doc/cpp.texi: Update to GFDL 1.2.
8648         * doc/gcc.texi: Do not list GPL as Invariant Section.
8649         * doc/gccint.texi: Likewise.  Update copyright years.
8650         * doc/install.texi: Update copyright years.
8651
8652 2008-07-30  Alan Modra  <amodra@bigpond.net.au>
8653
8654         PR target/36955
8655         * config/rs6000/rs6000.c (rs6000_legitimize_tls_address): Add
8656         a use of pic_offset_table_rtx for -msecure-plt __tls_get_addr calls.
8657
8658 2008-07-29  Jan Hubicka  <jh@suse.cz>
8659
8660         * c-decl.c (merge_decls): Do not handle DECL_INLINE.
8661         (grokdeclarator): Likewise.
8662         * langhooks.c (lhd_warn_unused_global_decl): Use
8663         DECL_DECLARED_INLINE_P.
8664         * print-tree.c (print_node): Remove DECL_INLINE check.
8665
8666 2008-07-29  Richard Guenther  <rguenther@suse.de>
8667
8668         PR tree-optimization/36945
8669         * tree-ssa-sccvn.h (copy_reference_ops_from_ref): Declare.
8670         * tree-ssa-sccvn.c (copy_reference_ops_from_ref): Export.
8671         Record invariant addresses un-decomposed.
8672         (copy_reference_ops_from_call): Record reference call
8673         arguments properly.  Simplify.
8674         * tree-ssa-pre.c (create_component_ref_by_pieces_1): New
8675         helper split out from ...
8676         (create_component_ref_by_pieces): ... here.  Simplify.
8677         Prepare for recursive invocation for call arguments.
8678         (create_expression_by_pieces): Adjust call to
8679         create_component_ref_by_pieces.
8680         (compute_avail): Process operand 2 of reference ops.
8681
8682 2008-07-29  Richard Guenther  <rguenther@suse.de>
8683
8684         * gimplify.c (gimplify_expr): Clear TREE_SIDE_EFFECTS for OBJ_TYPE_REF.
8685
8686 2008-07-29  Jakub Jelinek  <jakub@redhat.com>
8687
8688         * c-format.c (check_format_types): Revert unwanted checkin.
8689
8690 2008-07-29  Jan Hubicka  <jh@suse.cz>
8691
8692         * flags.h (flag_really_no_inline): Remove.
8693         * cgraph.c (cgraph_function_possibly_inlined_p): Simplify.
8694         * toplev.c (flag_really_no_inline): Remove.
8695         * c-cppbuiltin.c (c_cpp_builtins): Use flag_no_inline.
8696         * ipa-inline.c (cgraph_decide_inlining): Do not check flag_no_inline.
8697         (cgraph_decide_inlining_incrementally): Likewise.
8698         (compute_inline_parameters): Likewise.
8699         * opts.c (decode_options): Simplify.
8700         * c-opts.c (c_common_post_options): Do not set flag_no_inline.
8701         * common.opt (finline): Initialize to 1.
8702         * tree-inline.c (inlinable_function_p): Check flag_no_inline.
8703
8704 2008-07-29  Jan Hubicka  <jh@suse.cz>
8705
8706         * predict.c (always_optimize_for_size_p): New function.
8707         (optimize_bb_for_size_p, optimize_bb_for_speed_p,
8708         optimize_edge_for_size_p, optimize_edge_for_speed_p,
8709         optimize_insn_for_size_p, optimize_insn_for_speed_p): New global
8710         functions.
8711         (rtl_profile_for_bb, rtl_profile_for_edge, rtl_default_profile): New.
8712         * function.c (prepare_function_start): Set default profile.
8713         * function.h (rtl_data): Add maybe_hot_insn_p.
8714         * cfgexpand.c (expand_gimple_basic_block): Set RTL profile.
8715         (construct_exit_block): Likewise.
8716         (tree_expand_cfg): Likewise.
8717         * basic-block.h
8718         (optimize_bb_for_size_p, optimize_bb_for_speed_p,
8719         optimize_edge_for_size_p, optimize_edge_for_speed_p,
8720         optimize_insn_for_size_p, optimize_insn_for_speed_p): Declare.
8721         (rtl_profile_for_bb, rtl_profile_for_edge, default_rtl_profile):
8722         Declare.
8723
8724 2008-07-29  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
8725
8726         PR 34985
8727         * c-decl.c (merge_decls): Merge USED flags.
8728
8729 2008-07-29  Kaz Kojima  <kkojima@gcc.gnu.org>
8730
8731         * config/sh/sh.c (sh_gimplify_va_arg_expr): Unshare the addr,
8732         valist, next_fp, next_fp_tmp, next_fp_limit, next_o, next_o_limit,
8733         next_stack, lab_false and lab_over trees.
8734
8735 2008-07-28  Richard Guenther  <rguenther@suse.de>
8736
8737         PR tree-optimization/36957
8738         * tree-flow.h (tree_ssa_useless_type_conversion): Remove.
8739         (useless_type_conversion_p): Remove.
8740         (types_compatible_p): Remove.
8741         * gimple.h (tree_ssa_useless_type_conversion): Declare.
8742         (useless_type_conversion_p): Declare.
8743         (types_compatible_p): Declare.
8744         (gimple_expr_type): Return the base type only if it is
8745         trivially convertible to the subtype.
8746
8747 2008-07-28  Andreas Tobler  <a.tobler@schweiz.org>
8748
8749         * configure.ac: Use the m4_do macro to concatenate the warnings into
8750         one string in ACX_PROG_CC_WARNING_OPTS,
8751         ACX_PROG_CC_WARNING_ALMOST_PEDANTIC and
8752         ACX_PROG_CC_WARNINGS_ARE_ERRORS.
8753         * configure: Regenerate.
8754
8755 2008-07-28  Richard Guenther  <rguenther@suse.de>
8756
8757         * tree-ssa-pre.c (insert_into_preds_of_block): Remove dead code.
8758         (insert_fake_stores): Remove.
8759         (realify_fake_stores): Likewise.
8760         (execute_pre): Remove dead code.
8761         * tree-ssa-structalias.c (get_constraint_for_1): Remove tcc_unary case.
8762         (find_func_aliases): Deal with it here instead.
8763         Re-enable gcc_unreachable call.
8764
8765 2008-07-28  Richard Guenther  <rguenther@suse.de>
8766
8767         Merge from gimple-tuples-branch.
8768
8769         * ChangeLog.tuples: ChangeLog from gimple-tuples-branch.
8770         * gimple.def: New file.
8771         * gsstruct.def: Likewise.
8772         * gimple-iterator.c: Likewise.
8773         * gimple-pretty-print.c: Likewise.
8774         * tree-gimple.c: Removed.  Merged into ...
8775         * gimple.c: ... here.  New file.
8776         * tree-gimple.h: Removed.  Merged into ...
8777         * gimple.h: ... here.  New file.
8778
8779         * Makefile.in: Add dependencies on GIMPLE_H and tree-iterator.h.
8780         * configure.ac: Added support for ENABLE_GIMPLE_CHECKING and the
8781         --enable-checking=gimple flag.
8782         * config.in: Likewise.
8783         * configure: Regenerated.
8784
8785         * tree-ssa-operands.h: Tuplified.
8786         * tree-vrp.c: Likewise.
8787         * tree-loop-linear.c: Likewise.
8788         * tree-into-ssa.c: Likewise.
8789         * tree-ssa-loop-im.c: Likewise.
8790         * tree-dump.c: Likewise.
8791         * tree-complex.c: Likewise.
8792         * cgraphbuild.c: Likewise.
8793         * tree-ssa-threadupdate.c: Likewise.
8794         * tree-ssa-loop-niter.c: Likewise.
8795         * tree-pretty-print.c: Likewise.
8796         * tracer.c: Likewise.
8797         * gengtype.c: Likewise.
8798         * tree-loop-distribution.c: Likewise.
8799         * tree-ssa-loop-unswitch.c: Likewise.
8800         * cgraph.c: Likewise.
8801         * cgraph.h: Likewise.
8802         * tree-ssa-loop-manip.c: Likewise.
8803         * value-prof.c: Likewise.
8804         * tree-ssa-loop-ch.c: Likewise.
8805         * tree-tailcall.c: Likewise.
8806         * value-prof.h: Likewise.
8807         * tree.c: Likewise.
8808         * tree.h: Likewise.
8809         * tree-pass.h: Likewise.
8810         * ipa-cp.c: Likewise.
8811         * tree-scalar-evolution.c: Likewise.
8812         * tree-scalar-evolution.h: Likewise.
8813         * target.h: Likewise.
8814         * lambda-mat.c: Likewise.
8815         * tree-phinodes.c: Likewise.
8816         * diagnostic.h: Likewise.
8817         * builtins.c: Likewise.
8818         * tree-ssa-alias-warnings.c: Likewise.
8819         * cfghooks.c: Likewise.
8820         * fold-const.c: Likewise.
8821         * cfghooks.h: Likewise.
8822         * omp-low.c: Likewise.
8823         * tree-ssa-dse.c: Likewise.
8824         * ipa-reference.c: Likewise.
8825         * tree-ssa-uncprop.c: Likewise.
8826         * toplev.c: Likewise.
8827         * tree-gimple.c: Likewise.
8828         * tree-gimple.h: Likewise.
8829         * tree-chrec.c: Likewise.
8830         * tree-chrec.h: Likewise.
8831         * tree-ssa-sccvn.c: Likewise.
8832         * tree-ssa-sccvn.h: Likewise.
8833         * cgraphunit.c: Likewise.
8834         * tree-ssa-copyrename.c: Likewise.
8835         * tree-ssa-ccp.c: Likewise.
8836         * tree-ssa-loop-ivopts.c: Likewise.
8837         * tree-nomudflap.c: Likewise.
8838         * tree-call-cdce.c: Likewise.
8839         * ipa-pure-const.c: Likewise.
8840         * c-format.c: Likewise.
8841         * tree-stdarg.c: Likewise.
8842         * tree-ssa-math-opts.c: Likewise.
8843         * tree-ssa-dom.c: Likewise.
8844         * tree-nrv.c: Likewise.
8845         * tree-ssa-propagate.c: Likewise.
8846         * ipa-utils.c: Likewise.
8847         * tree-ssa-propagate.h: Likewise.
8848         * tree-ssa-alias.c: Likewise.
8849         * gimple-low.c: Likewise.
8850         * tree-ssa-sink.c: Likewise.
8851         * ipa-inline.c: Likewise.
8852         * c-semantics.c: Likewise.
8853         * dwarf2out.c: Likewise.
8854         * expr.c: Likewise.
8855         * tree-ssa-loop-ivcanon.c: Likewise.
8856         * predict.c: Likewise.
8857         * tree-ssa-loop.c: Likewise.
8858         * tree-parloops.c: Likewise.
8859         * tree-ssa-address.c: Likewise.
8860         * tree-ssa-ifcombine.c: Likewise.
8861         * matrix-reorg.c: Likewise.
8862         * c-decl.c: Likewise.
8863         * tree-eh.c: Likewise.
8864         * c-pretty-print.c: Likewise.
8865         * lambda-trans.c: Likewise.
8866         * function.c: Likewise.
8867         * langhooks.c: Likewise.
8868         * ebitmap.h: Likewise.
8869         * tree-vectorizer.c: Likewise.
8870         * function.h: Likewise.
8871         * langhooks.h: Likewise.
8872         * tree-vectorizer.h: Likewise.
8873         * ipa-type-escape.c: Likewise.
8874         * ipa-type-escape.h: Likewise.
8875         * domwalk.c: Likewise.
8876         * tree-if-conv.c: Likewise.
8877         * profile.c: Likewise.
8878         * domwalk.h: Likewise.
8879         * tree-data-ref.c: Likewise.
8880         * tree-data-ref.h: Likewise.
8881         * tree-flow-inline.h: Likewise.
8882         * tree-affine.c: Likewise.
8883         * tree-vect-analyze.c: Likewise.
8884         * c-typeck.c: Likewise.
8885         * gimplify.c: Likewise.
8886         * coretypes.h: Likewise.
8887         * tree-ssa-phiopt.c: Likewise.
8888         * calls.c: Likewise.
8889         * tree-ssa-coalesce.c: Likewise.
8890         * tree.def: Likewise.
8891         * tree-dfa.c: Likewise.
8892         * except.c: Likewise.
8893         * except.h: Likewise.
8894         * cfgexpand.c: Likewise.
8895         * tree-cfgcleanup.c: Likewise.
8896         * tree-ssa-pre.c: Likewise.
8897         * tree-ssa-live.c: Likewise.
8898         * tree-sra.c: Likewise.
8899         * tree-ssa-live.h: Likewise.
8900         * tree-predcom.c: Likewise.
8901         * lambda.h: Likewise.
8902         * tree-mudflap.c: Likewise.
8903         * ipa-prop.c: Likewise.
8904         * print-tree.c: Likewise.
8905         * tree-ssa-copy.c: Likewise.
8906         * ipa-prop.h: Likewise.
8907         * tree-ssa-forwprop.c: Likewise.
8908         * ggc-page.c: Likewise.
8909         * c-omp.c: Likewise.
8910         * tree-ssa-dce.c: Likewise.
8911         * tree-vect-patterns.c: Likewise.
8912         * tree-ssa-ter.c: Likewise.
8913         * tree-nested.c: Likewise.
8914         * tree-ssa.c: Likewise.
8915         * lambda-code.c: Likewise.
8916         * tree-ssa-loop-prefetch.c: Likewise.
8917         * tree-inline.c: Likewise.
8918         * tree-inline.h: Likewise.
8919         * tree-iterator.c: Likewise.
8920         * tree-optimize.c: Likewise.
8921         * tree-ssa-phiprop.c: Likewise.
8922         * tree-vect-transform.c: Likewise.
8923         * tree-object-size.c: Likewise.
8924         * tree-outof-ssa.c: Likewise.
8925         * cfgloop.c: Likewise.
8926         * system.h: Likewise.
8927         * tree-profile.c: Likewise.
8928         * cfgloop.h: Likewise.
8929         * c-gimplify.c: Likewise.
8930         * c-common.c: Likewise.
8931         * tree-vect-generic.c: Likewise.
8932         * tree-flow.h: Likewise.
8933         * c-common.h: Likewise.
8934         * basic-block.h: Likewise.
8935         * tree-ssa-structalias.c: Likewise.
8936         * tree-switch-conversion.c: Likewise.
8937         * tree-ssa-structalias.h: Likewise.
8938         * tree-cfg.c: Likewise.
8939         * passes.c: Likewise.
8940         * ipa-struct-reorg.c: Likewise.
8941         * ipa-struct-reorg.h: Likewise.
8942         * tree-ssa-reassoc.c: Likewise.
8943         * cfgrtl.c: Likewise.
8944         * varpool.c: Likewise.
8945         * stmt.c: Likewise.
8946         * tree-ssanames.c: Likewise.
8947         * tree-ssa-threadedge.c: Likewise.
8948         * langhooks-def.h: Likewise.
8949         * tree-ssa-operands.c: Likewise.
8950         * config/alpha/alpha.c: Likewise.
8951         * config/frv/frv.c: Likewise.
8952         * config/s390/s390.c: Likewise.
8953         * config/m32c/m32c.c: Likewise.
8954         * config/m32c/m32c-protos.h: Likewise.
8955         * config/spu/spu.c: Likewise.
8956         * config/sparc/sparc.c: Likewise.
8957         * config/i386/i386.c: Likewise.
8958         * config/sh/sh.c: Likewise.
8959         * config/xtensa/xtensa.c: Likewise.
8960         * config/stormy16/stormy16.c: Likewise.
8961         * config/ia64/ia64.c: Likewise.
8962         * config/rs6000/rs6000.c: Likewise.
8963         * config/pa/pa.c: Likewise.
8964         * config/mips/mips.c: Likewise.
8965
8966 2008-07-28  Simon Baldwin  <simonb@google.com>
8967
8968         * c-pragma.c (handle_pragma_message): New function.
8969         (init_pragma): Register handle_pragma_message.
8970         * doc/extend.texi (Diagnostic Pragmas): Added #pragma message
8971         documentation.
8972
8973 2008-07-27  Victor Kaplansky  <victork@il.ibm.com>
8974
8975         PR tree-optimization/35252
8976         * tree-vect-analyze.c (vect_build_slp_tree): Make IMAGPART_EXPR and
8977         REALPART_EXPR to be considered as same load operation.
8978
8979 2008-07-27  Eric Botcazou  <ebotcazou@adacore.com>
8980
8981         PR tree-optimization/36830
8982         * tree-ssa-sccvn.c (vn_reference_op_compute_hash): Hash operand #2.
8983         (expressions_equal_p): Return false if only one operand is null.
8984
8985 2008-07-26  Gerald Pfeifer  <gerald@pfeifer.com>
8986
8987         * doc/install.texi (powerpc-*-netbsd*): Remove redundant texinfo
8988         version requirements.
8989
8990 2008-07-26  Olivier Hainque  <hainque@adacore.com>
8991
8992         * collect2.c (symkind): New enum.  Symbol kinds we care about.
8993         (is_ctor_dtor): Return symkind instead of int.  Adjust prototype,
8994         code and head comment accordingly.
8995         (scan_prog_file): Use symkind names instead of bare integers.
8996
8997 2008-07-25  Jan Hubicka  <jh@suse.cz>
8998
8999         * cgraph.c (cgraph_function_possibly_inlined_p): Do not rely on
9000         DECL_INLINE.
9001         * cgraphunit.c (record_cdtor_fn): Do not initialize DECL_INLINE
9002         (cgraph_preserve_function_body_p): Do not rely on DECL_INLINE.
9003         * dojump.c (clear_pending_stack_adjust): Likewise.
9004         * print-tree.c (print_node): Ignore DECL_INLINE.
9005         * tree-inline.c (inlinable_function_p): Likewise.
9006
9007 2008-07-25  Michael Meissner  <gnu@the-meissners.org>
9008
9009         * doc/extend.texi (hot attribute): Document that the hot attribute
9010         turns on -O3 for some ports.
9011         (cold attribute): Document that the cold attribute turns on -Os
9012         for some ports
9013
9014         * doc/tm.texi (OPTIMIZATION_OPTIONS): Update documentation to
9015         reflect function specific option support.
9016
9017         * target.h (struct target_option_hooks): Add fields to say whether
9018         the cold attribute implies -Os and the hot attribute implies -O3.
9019
9020         * target-def.h (TARGET_OPTION_COLD_ATTRIBUTE_SETS_OPTIMIZATION):
9021         By default, do not turn on -Os for cold functions.
9022         (TARGET_OPTION_COLD_ATTRIBUTE_SETS_OPTIMIZATION): By default, do
9023         not turn on -O3 for hot functions.
9024
9025         * c-common.c (handle_hot_attribute): Use target hook to determine
9026         if hot functions should enable -O3.
9027         (handle_cold_attribute): Use target hook to determine if cold
9028         functions should enable -Os.
9029
9030         * config/i386/i386.c (ix86_target_string): Add -m3dnowa support.
9031         (override_options): Move disable scheduling to
9032         optimization_options.
9033         (optimization_options): Disable scheduling here, not
9034         override_options.
9035         (TARGET_OPTION_COLD_ATTRIBUTE_SETS_OPTIMIZATION): Define.
9036         (TARGET_OPTION_HOT_ATTRIBUTE_SETS_OPTIMIZATION): Define.
9037
9038         * config/ia64/ia64.c (ia64_override_options): Move setting
9039         scheduling flags to ia64_optimization_options.
9040         (ia64_optimization_options): Disable scheduling options here, and
9041         not in ia64_override_options.
9042         (TARGET_OPTION_COLD_ATTRIBUTE_SETS_OPTIMIZATION): Define.
9043         (TARGET_OPTION_HOT_ATTRIBUTE_SETS_OPTIMIZATION): Define.
9044
9045 2008-07-25  H.J. Lu  <hongjiu.lu@intel.com>
9046
9047         PR target/36936
9048         * config/i386/i386.c (override_options): Don't clear TARGET_CMOVE.
9049
9050 2008-07-25  Martin Jambor  <mjambor@suse.cz>
9051
9052         PR tree-optimization/36926
9053         * ipa-prop.c (ipa_analyze_call_uses): Call
9054         ipa_is_ssa_with_stmt_def instead of SSA_NAME_IS_DEFAULT_DEF.
9055
9056 2008-07-25  Joseph Myers  <joseph@codesourcery.com>
9057
9058         * config/arm/iwmmxt.md (movv8qi_internal, movv4hi_internal,
9059         movv2si_internal): Add mem = reg alternative.
9060
9061 2008-07-25  Andreas Tobler  <a.tobler@schweiz.org>
9062
9063         PR bootstrap/36918
9064         * config/sparc/sparc.h (DEFAULT_PCC_STRUCT_RETURN): Define
9065         DEFAULT_PCC_STRUCT_RETURN to 127.
9066
9067 2008-07-24  Jan Hubicka  <jh@suse.cz>
9068
9069         * cgraphbuild.c (record_reference): Drop non-unit-at-a-time code.
9070         (build_cgraph_edges): Likewise.
9071         * cgraph.c (cgraph_node): Do not update assembler hash.
9072         (cgraph_remove_node): Drop non-unit-at-a-time code.
9073         * tree-pass.h (pass_O0_always_inline): Remove.
9074         * ipa-reference.c (gate_reference): Remove unit-at-a-time check.
9075         * toplev.c (process_options): Flag unit-at-a-time does not imply
9076         no section anchors.
9077         * cgraphunit.c: Update comments.
9078         (decide_is_function_needed): Drop non-unit-at-a-time mode.
9079         (cgraph_assemble_pending_functions): Remove.
9080         (cgraph_reset_node): Drop non-unit-at-a-time code.
9081         (cgraph_finalize_function): Likewise.
9082         (cgraph_analyze_function): Likewise.
9083         (cgraph_finalize_compilation_unit): Likewise.
9084         (cgraph_expand_function): Likewise.
9085         (cgraph_optimize): Likesise.
9086         (save_inline_function_body): Likewise.
9087         * ipa-pure-const.c (gate_pure_const): Drop flag_unit_at_a_time check.
9088         * tree-ssa-alias.c (maybe_be_aliased): Likewise.
9089         * ipa-inline.c: Update comments.
9090         (enum inlining_mode): remove INLINE_SPEED.
9091         (cgraph_clone_inlined_nodes): Drop unit-at-a-time check.
9092         (cgraph_mark_inline_edge): Likewise.
9093         (try_inline): Likewise.
9094         (cgraph_decide_inlining_incrementally): Likewise.
9095         (cgraph_gate_inlining): Remove.
9096         (cgraph_early_inlining): Remove flag_unit_at_a_time checks.
9097         (cgraph_gate_early_inlining): Likewise.
9098         (gate_inline_passes): Remove.
9099         (pass_inline_parameters, pass_ipa_inline): Remove gates.
9100         (cgraph_gate_O0_always_inline, cgraph_O0_always_inline,
9101         pass_O0_always_inline): Remove.
9102         * c-pch.c (c_pch_matching): Remove -funit-at-a-time.
9103         * dwarf2out.c (reference_to_unused): Remove flag_unit_at_a_time check.
9104         * opts.c (no_unit_at_a_time_default): Remove.
9105         (decode_options): Remove flag_unit_at_a_time reset and warning.
9106         * opts.h (no_unit_at_a_time_default): Remove.
9107         * c-decl.c (diagnose_mismatched_decls): Do not require inline keyword
9108         early in GNU dialect.
9109         (merge_decls): Update comment; drop unit-at-a-time check.
9110         (finish_decl): Likewise.
9111         (grok_declaration): Remove flag_inline_trees code.
9112         (finish_functions): Return on function returning non-void on all
9113         statics.
9114         * ipa-tye-escape.c (gate_type_escape_vars): Remove.
9115         * cfgexpand.c (expand_one_static_var): Remove.
9116         (expand_one_var): Remove expand_one_static_var call.
9117         (expand_used_vars_for_block): Remove flag_unit_a_time check.
9118         * c-opts.c (c_common_post_options): Remove flag_inline_trees code
9119         and flag_unit_at_a-time compatibility checks.
9120         * varasm.c (assemble_alias): Remove flag_unit_at_a_time check.
9121         * tree-inline.c (flag_inline_trees): Remove.
9122         (inlinable_function_p): Don't check it.
9123         (expand_call_inline): Remove non-unit-at-a-time code.
9124         * tree-inline.h (flag_inline_trees): Remove.
9125         * tree-optimize.c (execute_early_local_optimizations): Remove
9126         unit-at-a-time checks.
9127         (tree_rest_of_compilation): Likewise.
9128         * combine.c (setup_incoming_promotions): Likewise.
9129         * tree-profile.c (tree_gen_ic_func_profiler): Likewise.
9130         * tree-ssa-structalias.c (delete_points_to_sets): Likewise.
9131         * passes.c (pass_inline_parameters): Update comments; remove
9132         O0_alwaysinline pass.
9133         (execute_one_ipa_transform_pass): Do not reset in_gimple_form.
9134         (execute_one_pass): Likewise.
9135         * i386.c (ix86_function_regparm): Remove unit-at-a-time check.
9136         (ix86_function_sseregparm): Likewise.
9137         * arm.c (arm_function_in_section_p): Likewise.
9138         * bfin.c (bfin_load_pic_reg, bfin_function_ok_for_sibcall): Likewise.
9139         * varpool.c: Update comments.
9140         (decide_is_variable_needed): Remove unit-at-a-time checks.
9141         (varpool_finalize_decl): Likewise.
9142
9143 2008-07-24  Kaz Kojima  <kkojima@gcc.gnu.org>
9144
9145         * config/sh/sh.h (OPTIMIZATION_OPTIONS): Set flag_omit_frame_pointer
9146         to 2 instead of -1.
9147         (OVERRIDE_OPTIONS): Check if flag_omit_frame_pointer is equal to 2.
9148
9149 2008-07-24  Kai Tietz  <kai.tietz@onevision.com>
9150
9151         * config/i386/i386.c (get_dllimport_decl): Treat user_label_prefix for
9152         imp symbol extension.
9153
9154         2008-07-23  Ian Lance Taylor  <iant@google.com>
9155
9156         * tree-vrp.c (infer_value_range): Ignore asm statements when
9157         looking for memory accesses for -fdelete-null-pointer-checks.
9158
9159 2008-07-24  Ben Elliston  <bje@au.ibm.com>
9160
9161         * config/spu/spu-c.c (__vector_keyword): New variable.
9162         (vector_keyword): Likewise.
9163         (spu_categorize_keyword): New function.
9164         (spu_macro_to_expand): Likewise.
9165         (spu_cpu_cpp_builtins): Enable context-sensitive macros if not
9166         compiling an ISO C dialect.
9167
9168 2008-07-24  Ben Elliston  <bje@au.ibm.com>
9169
9170         * config/rs6000/rs6000-c.c: Move GTY(()) markers to match
9171         conventional usage.
9172
9173 2008-07-23  Aaron W. LaFramboise  <aaronavay62@aaronwl.com>
9174
9175         * configure: Regenerate.
9176         * configure.ac: Require texinfo 4.7.
9177         * doc/install.texi: Document texinfo 4.7 requirement.
9178
9179 2008-07-23  Martin Jambor  <mjambor@suse.cz>
9180
9181         * ipa-cp.c (ipcp_print_edge_profiles): Test for node->analyzed
9182         rather than for DECL_SAVED_TREE.
9183         * ipa-prop.c: Include diagnostic.h.
9184         (ipa_check_stmt_modifications): Check LHS of GIMPLE_MODIFY_EXPRs
9185         thoroughly.
9186         (ipa_detect_param_modifications): Function rewritten from scratch.
9187         (ipa_compute_jump_functions): Changed accesses to modification flags.
9188         (ipa_free_node_params_substructures): Update flags destruction.
9189         (ipa_node_duplication_hook): Update flags duplication.
9190         (ipa_print_all_params_modified): Updated flag access.
9191         * ipa-prop.h (struct ipa_param_flags): New structure.
9192         (struct ipa_node_params): New field modification_analysis_done,
9193         modified_flags changed into param_flags.
9194         (ipa_is_ith_param_modified): Changed to use new flags.
9195         * Makefile.in (ipa-prop.o): Add $(DIAGNOSTIC_H) to dependencies.
9196
9197         * ipa-prop.c (ipa_print_all_jump_functions): Moved here from
9198         ipa-cp.c and split into two functions.
9199         (ipa_print_node_jump_functions): New function.
9200         (compute_scalar_jump_functions): New function.
9201         (type_like_member_ptr_p): New function.
9202         (compute_pass_through_member_ptrs): New function.
9203         (fill_member_ptr_cst_jump_function): New function.
9204         (determine_cst_member_ptr): New function.
9205         (compute_cst_member_ptr_arguments): New function.
9206         (ipa_compute_jump_functions): Complete rewrite.
9207         * ipa-prop.h (enum jump_func_type): Make explicit that we depend
9208         on IPA_UNKNOWN being zero. Added value IPA_CONST_MEMBER_PTR.
9209         (struct ipa_member_ptr_cst): New structure.
9210         (union jump_func_value): New field member_cst.
9211         * ipa-cp.c (ipcp_lat_is_insertable): New function.
9212         (ipcp_lattice_from_jfunc): Produces bottom lattices for unhandled
9213         jump function types.
9214         (ipcp_print_all_lattices): Slight fprintf rearrangement.
9215         (ipcp_print_all_structures): Call ipa_print_all_jump_functions
9216         instead of ipcp_print_all_jump_functions.
9217         (ipcp_insert_stage): Use ipcp_lat_is_insertable, create replace maps
9218         only for replacable scalars.
9219
9220         * doc/invoke.texi (Optimize options): Add description of
9221         -findirect-inlining.
9222         * common.opt (flag_indirect_inlining): New flag.
9223         * opts.c (decode_options): Set flag_indirect_inlining when
9224         optimize >= 3.
9225
9226         * ipa-inline.c: Include ipa-prop.h.
9227         (inline_indirect_intraprocedural_analysis): New function.
9228         (inline_generate_summary): Allocate parameter and argument info
9229         structures, call inline_indirect_intraprocedural_analysis on each
9230         node when doing indirect inlining and deallocate indirect inlining
9231         data structures in the end.
9232         * ipa-prop.c (ipa_create_param_decls_array): Return if already done.
9233         (free_all_ipa_structures_after_iinln): New function.
9234         (free_all_ipa_structures_after_ipa_cp): Checks whether iinln will be
9235         done.
9236         * Makefile.in (ipa-inline.o): Added $(IPA_PROP_H) to dependencies.
9237
9238         * cgraphbuild.c (compute_call_stmt_bb_frequency): New function.
9239         (build_cgraph_edges): Call compute_call_stmt_bb_frequency instead
9240         of computing the frequency separately.
9241         (rebuild_cgraph_edges): Call compute_call_stmt_bb_frequency instead
9242         of computing the frequency separately.
9243         * ipa-cp.c (ipcp_print_all_structures): Replace a call to
9244         ipa_print_all_param_modified with a call to ipa_print_all_param_flags.
9245         * ipa-prop.c (ipa_get_member_ptr_load_param): New function.
9246         (ipa_get_stmt_member_ptr_load_param): New function.
9247         (ipa_is_ssa_with_stmt_def): New function.
9248         (ipa_note_param_call): New function.
9249         (ipa_analyze_call_uses): New function.
9250         (ipa_analyze_stmt_uses): New function.
9251         (ipa_analyze_params_uses): New function.
9252         (ipa_free_node_params_substructures): Also free the param_calls linked
9253         list.
9254         (ipa_node_duplication_hook): Also duplicate the param_calls
9255         linked list.
9256         (ipa_print_node_param_flags): New function.
9257         (ipa_print_all_params_modified): Renamed to ipa_print_all_param_flags.
9258         (ipa_print_all_param_flags): Calls ipa_print_node_param_flags.
9259         * ipa-prop.h (struct ipa_param_flags): New field called.
9260         (struct ipa_param_call_note): New structure.
9261         (struct ipa_node_params): New fields param_calls and
9262         uses_analysis_done.
9263         (ipa_is_ith_param_called): New function.
9264         * ipa-inline.c (inline_indirect_intraprocedural_analysis): Call
9265         ipa_analyze_params_uses and dump parameter flags.
9266
9267         * ipa-inline.c (cgraph_decide_recursive_inlining): Call
9268         ipa_propagate_indirect_call_infos if performing indirect inlining,
9269         pass a new parameter new_edges to it.
9270         (add_new_edges_to_heap): New fucntion.
9271         (cgraph_decide_inlining_of_small_functions): New vector
9272         new_indirect_edges for newly found indirect edges , call
9273         ipa_propagate_indirect_call_infos after inlining.
9274         (cgraph_decide_inlining): Call ipa_propagate_indirect_call_infos after
9275         inlining if performing indirect inlining.  Call
9276         free_all_ipa_structures_after_iinln when doing so too.
9277         (inline_generate_summary): Do not call
9278         free_all_ipa_structures_after_iinln here.
9279         * ipa-prop.c (update_jump_functions_after_inlining): New function.
9280         (print_edge_addition_message): New function.
9281         (update_call_notes_after_inlining): New function.
9282         (propagate_info_to_inlined_callees): New function.
9283         (ipa_propagate_indirect_call_infos): New function.
9284         * ipa-prop.h: Include cgraph.h
9285         (struct ipa_param_call_note): Fields reordered, new field processed.
9286         * cgraph.h (cgraph_edge): Shrink loop_nest field to 31 bits, add a new
9287         flag indirect_call.
9288         * cgraphunit.c (verify_cgraph_node): Allow indirect edges not to have
9289         rediscovered call statements.
9290         * cgraph.c (cgraph_create_edge): Initialize indirect_call to zero.
9291         (dump_cgraph_node): Dump also the indirect_call flag.
9292         (cgraph_clone_edge): Copy also the indirect_call flag.
9293         * tree-inline.c (copy_bb): Do not check for fndecls from call
9294         expressions, check for edge availability when moving clones.
9295         (get_indirect_callee_fndecl): New function.
9296         (expand_call_inline): If callee declaration is not apprent from
9297         the statement, try calling get_indirect_callee_fndecl.  Do not
9298         issue warnings or call sorry when not inlinings an indirect edge.
9299         * Makefile.in (IPA_PROP_H): Added $(CGRAPH_H) to dependencies.
9300
9301         * ipa-prop.c (ipa_print_node_param_flags): Make the dump format a
9302         bit more frandly to matching.
9303         * testsuite/g++.dg/ipa/iinline-1.C: New testcase.
9304         * testsuite/gcc.dg/ipa/iinline-1.c: New testcase.
9305         * testsuite/gcc.dg/ipa/modif-1.c: New testcase.
9306
9307 2008-07-23  Michael Meissner  <gnu@the-meissners.org>
9308
9309         PR 36907
9310         * opth-gen.awk: Suppress function specific features when building
9311         target libraries.
9312         * optc-gen.awk: Ditto.
9313
9314 2008-07-23  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
9315
9316         PR 35058
9317         * diagnostic.c (pedwarn): Add opt parameter.
9318         (pedwarn0): New.
9319         * c-tree.h (pedwarn_init): Add opt parameter.
9320         (pedwarn_c90): Likewise.
9321         (pedwarn_c99): Likewise.
9322         * c-errors.c (pedwarn_c99): Likewise.
9323         (pedwarn_c90): Likewise.
9324         * toplev.h (pedwarn): Update declaration.
9325         (pedwarn0): Declare.
9326         * c-lex.c: All calls to pedwarn changed.
9327         * builtins.c: All calls to pedwarn changed.
9328         * toplev.c: All calls to pedwarn changed.
9329         * c-decl.c: All calls to pedwarn changed.
9330         * c-typeck.c: All calls to pedwarn changed.
9331         * c-common.c: All calls to pedwarn changed.
9332         * c-parser.c: All calls to pedwarn changed.
9333
9334 2008-07-23  Michael Meissner  <gnu@the-meissners.org>
9335             Karthik Kumar  <karthikkumar@gmail.com>
9336
9337         * attribs.c (file scope): Include c-common.h.
9338         (decl_attributes): Add support for #pragma GCC optimize and
9339         #pragma GCC option.
9340
9341         * targhooks.c (default_can_inline_p): New function that is the
9342         default for the TARGET_CAN_INLINE_P target hook.
9343
9344         * targhooks.h (default_can_inline_p): Add declaration.
9345
9346         * tree.c (cl_optimization_node): New static tree for building
9347         OPTIMIZATION_NODE tree.
9348         (cl_target_option_node): New static tree for building
9349         TARGET_OPTION_NODE tree.
9350         (cl_option_hash_table): New hash table for hashing
9351         OPTIMIZATION_NODE and TARGET_OPTION_NODE trees.
9352         (cl_option_hash_hash): New function to provide the hash value for
9353         OPTIMIZATION_NODE and TARGET_OPTION_NODE trees.
9354         (cl_option_hash_eq): New function to provide an equality test for
9355         OPTIMIZATION_NODE and TARGET_OPTION_NODE trees.
9356         (tree_code_size): Add support for OPTIMIZATION_NODE and
9357         TARGET_OPTION_NODE trees.
9358         (tree_code_structure): Add support for OPTIMIZATION_NODE and
9359         TARGET_OPTION_NODE trees.
9360         (build_optimization_node): Build a tree that has all of the
9361         current optimization options.
9362         (build_target_option_node): Build a tree that has the target
9363         options that might be changed on a per function basis.
9364
9365         * tree.h (file scope): Include options.h.
9366         (DECL_FUNCTION_SPECIFIC_TARGET): New accessor macro.
9367         (DECL_FUNCTION_SPECIFIC_OPTIMIZATION): Ditto.
9368         (TREE_OPTIMIZATION): Ditto.
9369         (TREE_TARGET_SPECIFIC): Ditto.
9370         (struct tree_function_decl): Add fields for remembering the
9371         current optimization options and target specific options.
9372         (struct tree_optimization_option): New tree variant that remembers
9373         the optimization options.
9374         (struct tree_target_option): New tree variant that remembers the
9375         target specific flags that might change for compiling a particular
9376         function.
9377         (union tree_node): Include tree_optimization_option and
9378         tree_target_option fields.
9379         (enum tree_index): Add TI_OPTIMIZATION_DEFAULT,
9380         TI_OPTIMIZATION_CURRENT, TI_OPTIMIZATION_COLD,
9381         TI_OPTIMIZATION_HOT, TI_TARGET_OPTION_DEFAULT,
9382         TI_TARGET_OPTION_CURRENT, TI_CURRENT_OPTION_PRAGMA,
9383         TI_CURRENT_OPTIMIZE_PRAGMA entries for saving function specific
9384         optimization and target options.
9385         (optimization_default_node): New macro to refer to global_trees
9386         field.
9387         (optimization_current_node): Ditto.
9388         (optimization_cold_node): Ditto.
9389         (optimization_hot_node): Ditto.
9390         (target_option_default_node): Ditto.
9391         (target_option_current_node): Ditto.
9392         (current_option_pragma): Ditto.
9393         (current_optimize_pragma): Ditto.
9394
9395         * target.h (struct gcc_target): Add valid_option_attribute_p,
9396         target_option_save, target_option_restore, target_option_print,
9397         target_option_pragma_parse, and can_inline_p hooks.
9398
9399         * toplev.h (parse_optimize_options): Add declaration.
9400         (fast_math_flags_struct_set_p): Ditto.
9401
9402         * c-cppbuiltin.c (c_cpp_builtins_optimize_pragma): New function to
9403         adjust the current __OPTIMIZE__, etc. macros when #pragma GCC
9404         optimize is used.
9405
9406         * ipa-inline.c (cgraph_decide_inlining_of_small_function): Call
9407         tree_can_inline_p hook to see if one function can inline another.
9408         (cgraph_decide_inlining): Ditto.
9409         (cgraph_decide_inlining_incrementally): Ditto.
9410
9411         * opts.c (decode_options): Add support for running multiple times
9412         to allow functions with different target or optimization options
9413         than was specified on the command line.
9414         (fast_math_flags_struct_set_p): New function that is similar to
9415         fast_math_flags_set_p, except it uses the values in the
9416         cl_optimization structure instead of global variables.
9417
9418         * optc-gen.awk: Add support for TargetSave to allow a back end to
9419         declare new fields that need to be saved when using function
9420         specific options.  Include flags.h and target.h in the options.c
9421         source.  Add support for Save to indicate which options can be set
9422         for individual functions.  Generate cl_optimize_save,
9423         cl_optimize_restore, cl_optimize_print, cl_target_option_save,
9424         cl_target_option_restore, cl_target_option_print functions to
9425         allow functions to use different optimization or target options.
9426
9427         * opt-functions.awk (var_type_struct): Return the type used for
9428         storing the field in a structure.
9429
9430         * opth-gen.awk: Add support for TargetSave to allow a back end to
9431         declare new fields that need to be saved when using function
9432         specific options.  Add support for Save to indicate which options
9433         can be set for individual functions.  Only generate one extern for
9434         Mask fields.  Generate cl_optimization and cl_target_option
9435         structures to remember optimization and target options.
9436
9437         * treestruct.def (TS_OPTIMIZATION): Add support for garbage
9438         collecting new tree nodes.
9439         (TS_TARGET_OPTION): Ditto.
9440
9441         * c-decl.c (merge_decls): Merge function specific target and
9442         optimization options.
9443
9444         * function.c (invoke_set_current_function_hook): If the function
9445         uses different optimization options, change the global variables
9446         to reflect this.
9447
9448         * coretypes.h (struct cl_optimization): Add forward reference.
9449         (struct cl_target_option): Ditto.
9450
9451         * c-pragma.c (option_stack): New static vector to remember the
9452         current #pragma GCC option stack.
9453         (handle_pragma_option): New function to support #pragma GCC option
9454         to change target options.
9455         (optimize_stack): New static vector to remember the current
9456         #pragma GCC optimize stack.
9457         (handle_pragma_optimize): New function to support #pragma GCC
9458         optimize to change optimization options.
9459         (init_pragma): Add support for #pragma GCC optimize and #pragma
9460         GCC option.
9461
9462         * tree.def (OPTIMIZATION_NODE): New tree code for remembering
9463         optimization options.
9464         (TARGET_OPTION_NODE): New tree code for remembering certain target
9465         options.
9466
9467         * print-tree.c (print_node): Add support for OPTIMIZATION_NODE and
9468         TARGET_OPTION_NODE trees.
9469
9470         * common.opt (-O): Add Optimization flag.
9471         (-Os): Ditto.
9472         (-fmath-errno): Ditto.
9473         (-falign-functions): Add UInteger flag to make sure flag gets full
9474         int in cl_optimization structure.
9475         (-falign-jumps): Ditto.
9476         (-falign-labels): Ditto.
9477         (-falign-loops): Ditto.
9478         (-fsched-stalled-insns): Ditto.
9479         (-fsched-stalled-insns-dep): Ditto.
9480
9481         * target-def.h (TARGET_VALID_OPTION_ATTRIBUTE_P): Add default
9482         definition.
9483         (TARGET_OPTION_SAVE): Ditto.
9484         (TARGET_OPTION_RESTORE): Ditto.
9485         (TARGET_OPTION_PRINT): Ditto.
9486         (TARGET_OPTION_PRAGMA_PARSE): Ditto.
9487         (TARGET_CAN_INLINE_P): Ditto.
9488         (TARGET_INITIALIZER): Add new hooks.
9489
9490         * tree-inline.c (tree_can_inline_p): New function to determine
9491         whether one function can inline another.  Check if the functions
9492         use compatible optimization options, and also call the backend
9493         can_inline_p hook.
9494
9495         * tree-inline.h (tree_can_inline_p): Add declaration.
9496
9497         * c-common.c (c_common_attribute): Add support for option and
9498         optimize attributes.
9499         (handle_option_attribute): Add support for the option attribute to
9500         allow the user to specify different target options for compiling a
9501         specific function.
9502         (handle_optimize_attribute): Add support for the optimize
9503         attribute to allow the user to specify different optimization
9504         options for compiling a specific function.
9505         (handle_hot_attribute): Turn on -O3 optimization for this one
9506         function if it isn't the default optimization level.
9507         (handle_cold_attribute): Turn on -Os optimization for this one
9508         function if it insn't the default optimization.
9509         (const_char_p): New const char * typedef.
9510         (optimize_args): New static vector to remember the optimization
9511         arguments.
9512         (parse_optimize_options): New function to set up the optimization
9513         arguments from either the optimize attribute or #pragma GCC optimize.
9514
9515         * c-common.h (c_cpp_builtins_optimize_pragma): Add declaration.
9516         (builtin_define_std): Ditto.
9517
9518         * config.gcc (i[3467]86-*-*): Add i386-c.o to C/C++ languages.
9519         Add t-i386 Makefile fragment to add i386-c.o and i386.o dependencies.
9520         (x86_64-*-*): Ditto.
9521
9522         * Makefile.in (TREE_H): Add options.h.
9523         (options.o): Add $(TARGET_H) $(FLAGS_H) dependencies.
9524
9525         * doc/extend.texi (option attribute): Document new attribute.
9526         (optimize attribute): Ditto.
9527         (hot attribute): Document hot attribute sets -O3.
9528         (cold attribute): Document cold attribute sets -Os.
9529         (#pragma GCC option): Document new pragma.
9530         (#pragma GCC optimize): Ditto.
9531
9532         * doc/options.texi (TargetSave): Document TargetSave syntax.
9533         (UInteger): Document UInteger must be used for certain flags.
9534         (Save): Document Save option to create target specific options
9535         that can be saved/restored on a function specific context.
9536
9537         * doc/c-tree.texi (DECL_FUNCTION_SPECIFIC_TARGET): Document new macro.
9538         (DECL_FUNCTION_SPECIFIC_OPTIMIZATION): Ditto.
9539
9540         * doc/tm.texi (TARGET_VALID_OPTION_ATTRIBUTE_P): Document new hook.
9541         (TARGET_OPTION_SAVE): Ditto.
9542         (TARGET_OPTION_RESTORE): Ditto.
9543         (TARGET_OPTION_PRINT): Ditto.
9544         (TARGET_OPTION_PRAGMA_PARSE): Ditto.
9545         (TARGET_CAN_INLINE_P): Ditto.
9546
9547         * doc/invoke.texi (-mfpmath=sse+387): Document as an alias for
9548         -mfpmath=sse,387.
9549         (-mfpmath=both): Ditto.
9550
9551 2008-07-23  Michael Meissner  <gnu@the-meissners.org>
9552             Karthik Kumar  <karthikkumar@gmail.com>
9553
9554         * config/i386/i386.h (TARGET_ABM): Move switch into ix86_isa_flags.
9555         (TARGET_POPCNT): Ditto.
9556         (TARGET_SAHF): Ditto.
9557         (TARGET_AES): Ditto.
9558         (TARGET_PCLMUL): Ditto.
9559         (TARGET_CMPXCHG16B): Ditto.
9560         (TARGET_RECIP): Move switch into target_flags.
9561         (TARGET_FUSED_MADD): Ditto.
9562         (ix86_arch_features): Make an unsigned char type.
9563         (ix86_tune_features): Ditto.
9564         (OVERRIDE_OPTIONS): Add bool argument to override_options call.
9565         (TARGET_CPU_CPP_BUILTINS): Move into ix86_target_macros.
9566         (REGISTER_TARGET_PRAGMAS): Define, call ix86_register_pragmas.
9567
9568         * config/i386/i386.opt (arch): New TargetSave field to define
9569         fields that need to be saved for function specific option support.
9570         (tune): Ditto.
9571         (fpmath): Ditto.
9572         (branch_cost): Ditto.
9573         (ix86_isa_flags_explicit): Ditto.
9574         (tune_defaulted): Ditto.
9575         (arch_specified): Ditto.
9576         (-m128-long-double): Add Save flag to save option for target
9577         specific option support.
9578         (-m80387): Ditto.
9579         (-maccumulate-outgoing-args): Ditto.
9580         (-malign-double): Ditto.
9581         (-malign-stringops): Ditto.
9582         (-mfancy-math-387): Ditto.
9583         (-mhard-float): Ditto.
9584         (-mieee-fp): Ditto.
9585         (-minline-all-stringops): Ditto.
9586         (-minline-stringops-dynamically): Ditto.
9587         (-mms-bitfields): Ditto.
9588         (-mno-align-stringops): Ditto.
9589         (-mno-fancy-math-387): Ditto.
9590         (-mno-push-args): Ditto.
9591         (-mno-red-zone): Ditto.
9592         (-mpush-args): Ditto.
9593         (-mred-zone): Ditto.
9594         (-mrtd): Ditto.
9595         (-msseregparm): Ditto.
9596         (-mstack-arg-probe): Ditto.
9597         (-m32): Ditto.
9598         (-m64): Ditto.
9599         (-mmmx): Ditto.
9600         (-m3dnow): Ditto.
9601         (-m3dnowa): Ditto.
9602         (-msse): Ditto.
9603         (-msse2): Ditto.
9604         (-msse3): Ditto.
9605         (-msse4.1): Ditto.
9606         (-msse4.2): Ditto.
9607         (-msse4): Ditto.
9608         (-mno-sse4): Ditto.
9609         (-msse4a): Ditto.
9610         (-msse5): Ditto.
9611         (-mrecip): Move flag into target_flags.
9612         (-mcld): Ditto.
9613         (-mno-fused-madd): Ditto.
9614         (-mfused-madd): Ditto.
9615         (-mabm): Move flag into ix86_isa_flags.
9616         (-mcx16): Ditto.
9617         (-mpopcnt): Ditto.
9618         (-msahf): Ditto.
9619         (-maes): Ditto.
9620         (-mpclmul): Ditto.
9621
9622         * config/i386/i386-c.c: New file for #pragma support.
9623         (ix86_target_macros_internal): New function to #define or #undef
9624         target macros based when the user uses the #pragma GCC option to
9625         change target options.
9626         (ix86_pragma_option_parse): New function to add #pragma GCC option
9627         support.
9628         (ix86_target_macros): Move defining the target macros here from
9629         TARGET_CPU_CPP_BUILTINS in i386.h.
9630         (ix86_register_pragmas): Register the #pragma GCC option hook.  If
9631         defined, initialize any subtarget #pragmas.
9632
9633         * config/i386/darwin.h (REGISTER_SUBTARGET_PRAGMAS): Rename from
9634         REGISTER_TARGET_PRAGMAS.
9635
9636         * config/i386/t-i386: New file for x86 dependencies.
9637         (i386.o): Make dependencies mirror the include files used.
9638         (i386-c.o): New file, add dependencies.
9639
9640         * config/i386/i386-protos.h (override_options): Add bool argument.
9641         (ix86_valid_option_attribute_tree): Add declaration.
9642         (ix86_target_macros): Ditto.
9643         (ix86_register_macros): Ditto.
9644
9645         * config/i386/i386.c (ix86_tune_features): Move initialization of
9646         the target masks to initial_ix86_tune_features to allow functions
9647         to have different target options.  Make type unsigned char,
9648         instead of unsigned int.
9649         (initial_ix86_tune_features): New static vector to hold processor
9650         masks for the tune variables.
9651         (ix86_arch_features): Move initialization of the target masks to
9652         initial_ix86_arch_features to allow functions to have different
9653         target options.  Make type unsigned char, instead of unsigned int.
9654         (initial_ix86_arch_features): New static vector to hold processor
9655         masks for the arch variables.
9656         (enum ix86_function_specific_strings): New enum to describe the
9657         string options used for attribute((option(...))).
9658         (ix86_target_string): New function to return a string that
9659         describes the target options.
9660         (ix86_debug_options): New function to print the current options in
9661         the debugger.
9662         (ix86_function_specific_save): New function hook to save the
9663         function specific global variables in the cl_target_option structure.
9664         (ix86_function_specific_restore): New function hook to restore the
9665         function specific variables from the cl_target_option structure to
9666         the global variables.
9667         (ix86_function_specific_print): New function hook to print the
9668         target specific options in the cl_target_option structure.
9669         (ix86_valid_option_attribute_p): New function hook to validate
9670         attribute((option(...))) arguments.
9671         (ix86_valid_option_attribute_tree): New function that is common
9672         code between attribute((option(...))) and #pragma GCC option
9673         support that parses the options and returns a tree holding the options.
9674         (ix86_valid_option_attribute_inner_p): New helper function for
9675         ix86_valid_option_attribute_tree.
9676         (ix86_can_inline_p): New function hook to decide if one function
9677         can inline another on a target specific basis.
9678         (ix86_set_current_function); New function hook to switch target
9679         options if the user used attribute((option(...))) or #pragma GCC
9680         option.
9681         (ix86_tune_defaulted): Move to static file scope from
9682         override_options.
9683         (ix86_arch_specified): Ditto.
9684         (OPTION_MASK_ISA_AES_SET): New macro for moving switches into
9685         ix86_isa_flags.
9686         (OPTION_MASK_ISA_PCLMUL_SET): Ditto.
9687         (OPTION_MASK_ISA_ABM_SET): Ditto.
9688         (OPTION_MASK_ISA_POPCNT_SET): Ditto.
9689         (OPTION_MASK_ISA_CX16_SET): Ditto.
9690         (OPTION_MASK_ISA_SAHF_SET): Ditto.
9691         (OPTION_MASK_ISA_AES_UNSET): Ditto.
9692         (OPTION_MASK_ISA_PCLMUL_UNSET): Ditto.
9693         (OPTION_MASK_ISA_ABM_UNSET): Ditto.
9694         (OPTION_MASK_ISA_POPCNT_UNSET): Ditto.
9695         (OPTION_MASK_ISA_CX16_UNSET): Ditto.
9696         (OPTION_MASK_ISA_SAHF_UNSET): Ditto.
9697         (struct ptt): Move to static file scope from override_options.
9698         (processor_target_table): Ditto.
9699         (cpu_names): Ditto.
9700         (ix86_handle_option): Add support for options that are now isa options.
9701         (override_options): Add support for declaring functions that
9702         support different target options than were specified on the
9703         command line.  Move struct ptt, processor_target_table, cpu_names,
9704         ix86_tune_defaulted, ix86_arch_specified to static file scope.
9705         Add bool argument.  Fix up error messages so the appropriate error
9706         is given for either command line or attribute.
9707         (ix86_previous_fndecl): New static to remember previous function
9708         declaration to see if we need to change target options.
9709         (ix86_builtins_isa): New array to record the ISA of each builtin
9710         function.
9711         (def_builtin): Always create the builtin function, even if the
9712         current ISA doesn't support it.
9713         (ix86_init_mmx_sse_builtins): Remove TARGET_AES and TARGET_PCLMUL
9714         tests for those builtins.
9715         (ix86_init_builtins): Remove TARGET_MMX test for calling
9716         ix86_init_mmx_sse_builtins.
9717         (ix86_expand_builtin): If the current ISA doesn't support a given
9718         builtin, signal an error.
9719         (TARGET_VALID_OPTION_ATTRIBUTE_P): Set target hook.
9720         (TARGET_SET_CURRENT_FUNCTION): Ditto.
9721         (TARGET_OPTION_SAVE): Ditto.
9722         (TARGET_OPTION_RESTORE): Ditto.
9723         (TARGET_OPTION_PRINT): Ditto.
9724         (TARGET_CAN_INLINE_P): Ditto.
9725
9726 2008-07-22  Rafael Ãƒvila de Espíndola  <espindola@google.com>
9727
9728         * c-typeck.c (build_external_ref): Don't call assemble_external.
9729         * final.c (output_operand): Call assemble_external.
9730
9731 2008-07-21  DJ Delorie  <dj@redhat.com>
9732
9733         * config/h8300/h8300.c (h8300_hard_regno_scratch_ok): New.
9734         (TARGET_HARD_REGNO_SCRATCH_OK): Define.
9735
9736 2008-07-21  Ulrich Weigand  <Ulrich.Weigand@de.ibm.com>
9737
9738         * config/spu/spu.md ("div<mode>3"): Convert into expander, move
9739         original insn and splitter contents into ...
9740         ("*div<mode>3_fast"): ... this new pattern.  Enable only if
9741         flag_unsafe_math_optimizations.  Add dummy scratch register.
9742         ("*div<mode>3_adjusted"): New insn and splitter.  Enable only if
9743         !flag_unsafe_math_optimizations.  Returns number with next
9744         highest magnitude if this is still less or equal to the true
9745         quotient in magnitude.
9746
9747 2008-07-21  Rafael Ãƒvila de Espíndola  <espindola@google.com>
9748
9749         * Makefile.in: Replace toplev.h with TOPLEV_H.
9750         * c-decl.c (merge_decls): Don't set DECL_IN_SYSTEM_HEADER.
9751         * c-lex.c (fe_file_change): Don't set in_system_header.
9752         * c-parser.c (c_token): Remove in_system_header.
9753         (c_lex_one_token): Don't set in_system_header.
9754         (c_parser_set_source_position_from_token): Don't set in_system_header.
9755         * diagnostic.c (diagnostic_report_diagnostic): Use location from
9756         diagnostic_info.
9757         (warning_at): New.
9758         * diagnostic.h (diagnostic_report_warnings_p): Add LOC argument.
9759         * flags.h (in_system_header): Remove.
9760         * function.c (saved_in_system_header): Remove.
9761         (push_cfun): Don't set in_system_header.
9762         (pop_cfun): Don't set in_system_header.
9763         (push_struct_function): Don't set in_system_header.
9764         * input.h (expanded_location): Add sysp.
9765         (in_system_header_at): New.
9766         (in_system_header): New.
9767         * toplev.c (in_system_header): Remove.
9768         * toplev.h: Include input.h
9769         (warning_at): New.
9770         * tree-cfg.c (execute_warn_function_return): Call warning_at.
9771         * tree-ssa.c (warn_uninit): Call warning_at.
9772         (warn_uninitialized_var): Update calls to warn_uninit.
9773         (warn_uninitialized_phi): Update calls to warn_uninit.
9774         * tree.c (make_node_stat): Don't set DECL_IN_SYSTEM_HEADER.
9775         (expand_location): Initialize xloc.sysp.
9776         * tree.h (DECL_IN_SYSTEM_HEADER): Use in_system_header_at.
9777         (tree_decl_with_vis): Remove in_system_header_flag.
9778
9779 2008-07-21  Andreas Krebbel  <krebbel1@de.ibm.com>
9780
9781         PR target/36822
9782         * recog.c (asm_operand_ok): Change the order of the extra
9783         memory constraint checks.
9784
9785 2008-07-20  Andrew Pinski  <andrew_pinski@playstation.sony.com>
9786
9787         PR tree-opt/36879
9788         * tree-switch-conversion.c (build_one_array): Call
9789         varpool_mark_needed_node and varpool_finalize_decl
9790         instead of assemble_variable.
9791
9792 2008-07-19  Jan Hubicka  <jh@suse.cz>
9793
9794         * cgraph.c (cgraph_add_new_function): Do early local passes.
9795         * tree-nrv.c (gate_pass_return_slot): New gate.
9796         (pass_nrv): Add the gate.
9797         * tree-ssa-coalese.c (hash_ssa_name_by_var, eq_ssa_name_by_var): New
9798         functions.
9799         (coalesce_ssa_name): Coalesce SSA names.
9800         * tree-ssa-live.c (remove_unused_locals): Be more conservative when
9801         not optimizing so unused user vars remains visible.
9802         * common.opt (flag_tree_ter): Always enable by default.
9803         * tree-ssa-ter.c: Include flags.h
9804         (is_replaceable_p): Check that locations match; when aliasing
9805         is missing be conservative about loads.
9806         * tree-optimize.c (gate_init_datastructures): Remove.
9807         (pass_init_datastructures): New.
9808         * passes.c: Reorder passes so we always go into SSA.
9809
9810 2008-07-19  Jan Hubicka  <jh@suse.cz>
9811
9812         * doc/extend.texi (flatten attribute): Remove note about
9813         unit-at-a-time.
9814         * doc/invoke.texi (--combine): Likewise.
9815         (-finline-functions-called-once): Update levels when enabled.
9816         (-funit-at-a-time): Document new behaviour.
9817         (-ftoplevel-reorder): Document that it is enabled -O0 and imply
9818         -fno-section-anchors when disabled explicitly.
9819         (inline params): They are not ignored now.
9820         (precompiled headers): Remove unit-at-a-time as being incompatible.
9821         * opts.c (decode_options): Handle unit-at-a-time as alias;
9822         imply -fno-section-anchors when toplevel reorder is disabled
9823         explicitly.
9824         * common.opt (ftoplevel-reorder): Set default value to 2.
9825         (funit-at-a-time): Set default value to 1.
9826         * config/rs6000/rs6000.c (optimization_options): Set section anchors
9827         to 2.
9828
9829 2008-07-19  Jan Hubicka  <jh@suse.cz>
9830
9831         * builtins.c (expand_builtin_int_roundingfn,
9832         expand_builtin_int_roundingfn_2): Do not take subtarget argument;
9833         it is not useful.
9834
9835 2008-07-19  Richard Guenther  <rguenther@suse.de>
9836
9837         PR bootstrap/36864
9838         * tree-ssa-sccvn.h (get_constant_value_id): Declare.
9839         * tree-ssa-sccvn.c (get_constant_value_id): New function.
9840         * tree-ssa-pre.c (get_expr_value_id): For newly created
9841         constant value-ids make sure to add the expression to its
9842         expression-set.
9843
9844 2008-07-19  Jakub Jelinek  <jakub@redhat.com>
9845
9846         PR middle-end/36877
9847         * omp-low.c (expand_omp_atomic_fetch_op): Make sure the
9848         return value of the builtin is ignored.
9849
9850 2008-07-19  Olivier Hainque  <hainque@adacore.com>
9851
9852         * doc/tm.texi (MALLOC_ABI_ALIGNMENT): New macro. Alignment, in
9853         bits, a C conformant malloc implementation has to provide.
9854         * defaults.h (MALLOC_ABI_ALIGNMENT): Default to BITS_PER_WORD.
9855
9856 2008-07-19  Joseph Myers  <joseph@codesourcery.com>
9857
9858         PR target/36780
9859         PR target/36827
9860         * reload.c (find_reloads_subreg_address): Only reload address if
9861         reloaded == 0, not for reloaded != 1.
9862
9863         Revert:
9864         2008-07-16  Joseph Myers  <joseph@codesourcery.com>
9865         * config/m32c/m32c.c (BIG_FB_ADJ): Move definition earlier.
9866         (m32c_legitimate_address_p): Handle "++rii" addresses created by
9867         m32c_legitimize_reload_address.
9868
9869         2008-07-15  Kaz Kojima  <kkojima@gcc.gnu.org>
9870         * config/sh/sh.h (GO_IF_LEGITIMATE_ADDRESS): Allow
9871         (plus (plus (reg) (const_int)) (const_int)) when reload_in_progress.
9872
9873 2008-07-19  Olivier Hainque  <hainque@adacore.com>
9874
9875         * dwarf2out.c (add_subscript_info): New explicit COLLAPSE_P
9876         argument, saying whether nested array are to be collapsed
9877         into a single array type DIE with multiple subscripts.
9878         (gen_array_type_die): Factorize comments about the MIPS_DEBUG_INFO
9879         issues, centralize the nested array types collapsing control and
9880         disable the transformation for Ada.
9881
9882 2008-07-18  Uros Bizjak  <ubizjak@gmail.com>
9883
9884         PR target/36786
9885         * config/i386/i386.md (x86_64_shift_adj_1): Rename from
9886         x86_64_shift_adj.
9887         (x86_64_shift_adj_2): New expander.
9888         (x86_64_shift_adj_3): Ditto.
9889         * config/i386/i386.c (ix86_split_ashr): Use gen_x86_64_shift_adj_3
9890         to split TImode operands.
9891         (ix86_split_ashl): Use gen_x86_64_shift_adj_2 to split TImode operands.
9892         (ix86_split_lshr): Ditto.
9893
9894 2008-07-18  Kris Van Hees  <kris.van.hees@oracle.com>
9895
9896         * c-common.c (c_stddef_cpp_builtins): Define __CHAR16_TYPE__
9897         and __CHAR32_TYPE__.
9898         * c-typeck.c (digest_init): Support char16_t and char32_t.
9899         (set_nonincremental_init_from_string): Idem.
9900
9901 2008-07-18  H.J. Lu  <hongjiu.lu@intel.com>
9902
9903         PR middle-end/36859
9904         * builtins.c (std_gimplify_va_arg_expr): Limit alignment to
9905         PREFERRED_STACK_BOUNDARY.
9906         * config/i386/i386.c (ix86_gimplify_va_arg): Likewise.
9907
9908 2008-07-18  H.J. Lu  <hongjiu.lu@intel.com>
9909
9910         PR middle-end/36858
9911         * function.c (locate_and_pad_parm): Cap boundary earlier.
9912
9913 2008-07-17  Julian Brown  <julian@codesourcery.com>
9914
9915         * config/arm/arm.c (arm_cxx_determine_class_data_visibility): Make
9916         no-op for targets which don't use DLLs.
9917
9918 2008-07-17  Martin Jambor  <mjambor@suse.cz>
9919
9920         * ipa-cp.c (ipcp_print_all_lattices): New variable info, check
9921         that nodes are relevant by examining the node->analyzed flag.
9922         (ipcp_init_stage): Check which nodes are relevant, assert that the
9923         relevant ones are also required.
9924         (ipcp_propagate_stage): Check on the side arrays are properly
9925         allocated.
9926         (ipcp_print_all_jump_functions): Make sure not to touch any node
9927         that is not analyzed or an edge that does not have a corresponding
9928         entry in the on-the-side vectors.
9929         (ipcp_function_scale_print): Likewise.
9930         (ipcp_update_callgraph): Check that the node is relevant.
9931         (ipcp_insert_stage): Check that the node is relevant.  Check there is
9932         an info for every node and edge.
9933         * ipa-prop.c (ipa_init_func_list): Check the nodes are relevant.
9934         (ipa_print_all_tree_maps): Likewise and a new variable info.
9935         (ipa_print_all_params_modified): Likewise.
9936         * ipa-prop.h (ipa_edge_args_info_available_for_edge_p): New function.
9937
9938 2008-07-17  Roman Zippel <zippel@linux-m68k.org>
9939
9940         PR target/25343
9941         * config/host-linux.c (TRY_EMPTY_VM_SPACE): Define for __mc68000__.
9942
9943 2008-07-17  Paolo Bonzini  <bonzini@gnu.org>
9944
9945         PR rtl-optimization/36753
9946         * fwprop.c (use_killed_between): Don't shortcut
9947         single-definition global registers.
9948
9949 2008-07-16  Jan Hubicka  <jh@suse.cz>
9950
9951         * cgraph.h (varpool_empty_needed_queue): Declare.
9952         * cgraphunit.c (output_in_order): Mark all variables as needed;
9953         empty the queue.
9954         * varpool.c (varpool_assemble_node): Update debug queue.
9955         (varpool_assemble_pending_decls): Don't do it here.
9956         (varpool_empty_needed_queue):  New function.
9957
9958 2008-07-16  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
9959
9960         * recog.c (peephole2_optimize): Fix formatting.
9961
9962 2008-07-16  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
9963
9964         * c-pch.c (get_ident): Avoid C++ keywords.
9965         * combine-stack-adj.c (single_set_for_csa): Likewise.
9966         * final.c (asm_insn_count, final_scan_insn, alter_subreg,
9967         output_asm_insn): Likewise.
9968         * reload.c (push_secondary_reload, find_reusable_reload,
9969         push_reload, combine_reloads, find_reloads,
9970         debug_reload_to_stream): Likewise.
9971         * reload.h (struct reload): Likewise.
9972         * reload1.c (reload_reg_class_lower, find_reg, find_reload_regs,
9973         allocate_reload_reg, choose_reload_regs, emit_input_reload_insns,
9974         emit_output_reload_insns): Likewise.
9975         * targhooks.c (default_secondary_reload): Likewise.
9976         * varasm.c (section_entry_eq, object_block_entry_eq): Likewise.
9977
9978 2008-07-16  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
9979
9980         * recog.c (validate_change_1, validate_change,
9981         validate_unshare_change, validate_replace_rtx_1, struct
9982         funny_match, constrain_operands, peephole2_optimize): Avoid C++
9983         keywords.
9984         * reload.c (push_secondary_reload, secondary_reload_class,
9985         scratch_reload_class, find_valid_class, find_reusable_reload,
9986         push_reload, find_dummy_reload, find_reloads_address_1,
9987         find_reloads_address_part, find_equiv_reg): Likewise.
9988         * reload1.c (spill_failure, eliminate_regs_1, allocate_reload_reg,
9989         choose_reload_regs): Likewise.
9990         * rtlanal.c (replace_rtx, nonzero_bits1, num_sign_bit_copies1):
9991         Likewise.
9992         * rtlhooks.c (gen_lowpart_if_possible): Likewise.
9993         * sched-ebb.c (add_deps_for_risky_insns): Likewise.
9994         * sched-rgn.c (concat_INSN_LIST): Likewise.
9995         * stor-layout.c (mode_for_size, mode_for_size_tree,
9996         smallest_mode_for_size): Likewise.
9997
9998 2008-07-16  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
9999
10000         * cfg.c (dump_reg_info): Avoid C++ keywords.
10001         * dwarf2asm.c (dw2_force_const_mem,
10002         dw2_asm_output_encoded_addr_rtx): Likewise.
10003         * except.c (gen_eh_region, add_action_record, output_ttype): Likewise.
10004         * expmed.c (expand_shift): Likewise.
10005         * global.c (find_reg): Likewise.
10006         * graph.c (draw_edge): Likewise.
10007         * local-alloc.c (reg_meets_class_p, find_free_reg): Likewise.
10008         * optabs.c (expand_binop, expand_twoval_unop, expand_twoval_binop,
10009         widen_clz, widen_bswap, expand_parity, expand_unop,
10010         emit_cmp_and_jump_insn_1): Likewise.
10011         * postreload.c (reload_cse_simplify_operands): Likewise.
10012         * ra.h (add_neighbor): Likewise.
10013         * reg-stack.c (remove_regno_note, change_stack): Likewise.
10014         * regclass.c (memory_move_secondary_cost, dump_regclass, regclass,
10015         record_reg_classes, copy_cost, record_address_regs,
10016         invalid_mode_change_p): Likewise.
10017         * regrename.c (regrename_optimize, scan_rtx_reg,
10018         dump_def_use_chain, find_oldest_value_reg,
10019         replace_oldest_value_reg, copyprop_hardreg_forward_1): Likewise.
10020
10021 2008-07-16  David Edelsohn  <edelsohn@gnu.org>
10022
10023         * config/rs6000/rs6000.c (processor_target_table): Remove duplicate
10024         MASK_POWERPC64 for power4 in previous commit.
10025
10026 2008-07-16  Olivier Hainque  <hainque@adacore.com>
10027
10028         * collect2.c (scan_prog_file, COFF version): Use CONST_CAST
10029         instead of bare conversion to cast const-ness away.
10030
10031 2008-07-16  Anatoly Sokolov  <aesok@post.ru>
10032
10033         * config/xtensa/xtensa.h (FUNCTION_OUTGOING_VALUE,
10034         XTENSA_FUNCTION_VALUE, XTENSA_FUNCTION_VALUE): Remove.
10035         * config/xtensa/xtensa.c (xtensa_function_value): New function.
10036         (TARGET_FUNCTION_VALUE): Define.
10037
10038 2008-07-16  David Edelsohn  <edelsohn@gnu.org>
10039
10040         * config/rs6000/rs6000.c (processor_target_table): Add
10041         MASK_PPC_GPOPT for power4, power5, power5+, power6, and power6x.
10042
10043 2008-07-16  Joseph Myers  <joseph@codesourcery.com>
10044
10045         PR target/36827
10046         * config/m32c/m32c.c (BIG_FB_ADJ): Move definition earlier.
10047         (m32c_legitimate_address_p): Handle "++rii" addresses created by
10048         m32c_legitimize_reload_address.
10049
10050 2007-07-16  Rafael Ãƒvila de Espíndola  <espindola@google.com>
10051
10052         * c-decl.c (merge_decls): Keep DECL_SOURCE_LOCATION and
10053         DECL_IN_SYSTEM_HEADER in sync.
10054
10055 2008-07-15  Daniel Berlin  <dberlin@dberlin.org>
10056
10057         * tree-ssa-sccvn.c (expressions_equal_p): Check type equality.
10058         * tree-ssa-pre.c (pre_expr_eq): Ditto
10059         (get_constant_for_value_id): Take a type as an argument.
10060         (fully_constant_expression): Pass in type.
10061         (find_or_generate_expression): Short circuit constant case.
10062         (create_expression_by_pieces): Remove special casing of
10063         pointer_plus.
10064         (do_regular_insertion): Short circuit constant case.
10065         (do_partial_partial_insertion): Ditto.
10066
10067 2008-07-15  Kaz Kojima  <kkojima@gcc.gnu.org>
10068
10069         PR target/36782
10070         * config/sh/sh.md (symGOT_load): Don't add REG_EQUAL note.
10071
10072 2008-07-15  Bob Wilson  <bob.wilson@acm.org>
10073
10074         * config/xtensa/libgcc-xtensa.ver: New file.
10075         * config/xtensa/t-linux (SHLIB_MAPFILES): Append libgcc-xtensa.ver.
10076
10077 2008-07-15  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
10078
10079         * df-problems.c (df_set_note): Avoid C++ keywords.
10080         * df-scan.c (df_ref_change_reg_with_loc_1): Likewise.
10081         * dse.c (record_store, remove_useless_values): Likewise.
10082         * emit-rtl.c (gen_reg_rtx, update_reg_offset, gen_rtx_REG_offset,
10083         gen_reg_rtx_offset, operand_subword, change_address_1,
10084         change_address, adjust_address_1, offset_address,
10085         widen_memory_access, emit_copy_of_insn_after): Likewise.
10086         * explow.c (round_push, allocate_dynamic_stack_space): Likewise.
10087         * fwprop.c (should_replace_address, propagate_rtx_1,
10088         propagate_rtx, try_fwprop_subst, forward_propagate_and_simplify):
10089         Likewise.
10090         * gcse.c (cprop_jump, find_implicit_sets, bypass_block,
10091         gcse_emit_move_after, update_ld_motion_stores): Likewise.
10092         * lcm.c (compute_insert_delete, pre_edge_lcm,
10093         compute_rev_insert_delete, pre_edge_rev_lcm): Likewise.
10094         * lower-subreg.c (resolve_reg_notes): Likewise.
10095         * mode-switching.c (optimize_mode_switching): Likewise.
10096
10097 2008-07-15  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
10098
10099         * bt-load.c (add_btr_def, migrate_btr_def,
10100         branch_target_load_optimize): Avoid C++ keywords.
10101         * caller-save.c (insert_restore, insert_save, insert_one_insn):
10102         Likewise.
10103         * combine.c (subst, simplify_set, make_extraction,
10104         make_compound_operation, known_cond, simplify_shift_const_1): Likewise.
10105         * cse.c (make_regs_eqv, merge_equiv_classes, validate_canon_reg,
10106         fold_rtx, equiv_constant, cse_insn, cse_process_notes_1): Likewise.
10107
10108 2008-07-15  Richard Guenther  <rguenther@suse.de>
10109
10110         PR middle-end/36369
10111         * c-common.c (strict_aliasing_warning): Do not warn for
10112         TYPE_REF_CAN_ALIAS_ALL pointers.
10113         (c_common_get_alias_set): may_alias types are not special.
10114         * tree.c (build_pointer_type_for_mode): Look up the may_alias
10115         attribute and set can_ref_all accordingly.
10116         (build_reference_type_for_mode): Likewise.
10117         * doc/extend.texi (may_alias): Clarify.
10118
10119 2008-07-15  Kaz Kojima  <kkojima@gcc.gnu.org>
10120
10121         PR target/36780
10122         * config/sh/sh.h (GO_IF_LEGITIMATE_ADDRESS): Allow
10123         (plus (plus (reg) (const_int)) (const_int)) when reload_in_progress.
10124
10125 2008-07-15  Andrew Pinski  <andrew_pinski@playstation.sony.com>
10126
10127         PR target/31568
10128         * config/rs6000/rs6000.c (print_operand <case 'y'>): Don't use
10129         gcc_assert, instead call output_operand_lossage.
10130
10131 2008-07-15  Kai Tietz  <kai.tietz@onevision.com>
10132
10133         * builtins.c (std_canonical_va_list): Treat structure based
10134         va_list types.
10135
10136 2008-07-15  Ben Elliston  <bje@au.ibm.com>
10137
10138         * emit-rtl.c (set_mem_attributes_minus_bitpos): Improve comment.
10139
10140 2007-07-14  Rafael Ãƒvila de Espíndola  <espindola@google.com>
10141
10142         * c-decl.c (diagnose_mismatched_decls): Don't warn if TREE_NO_WARNING
10143         is set.
10144
10145 2008-07-14  Jan Hubicka  <jh@suse.cz>
10146
10147         * i386.md (sse5 cmov pattern): Update call of ix86_sse5_valid_op_p
10148         * sse.md (sse5 patterns): Update call of ix86_sse5_valid_op_p;
10149         fix predicates and constraints.
10150         * i386.c (ix86_sse5_valid_op_p): Add commutative parameter.
10151         * i386-protos.h (ix86_sse5_valid_op_p): Update declaration.
10152
10153 2008-07-14  Doug Kwan  <dougkwan@google.com>
10154
10155         * config.gcc (arm*-*-eabi*): Include arm/eabi.h and use
10156         additional option file arm/eabi.opt.
10157         * config/arm/eabi.h (File): New configuration file for EABI targets.
10158         * config/arm/elf.h (SUBTARGET_EXTRA_SPECS): Add
10159         SUBSUBTARGET_EXTRA_SPECS.
10160         (SUBSUBTARGET_EXTRA_SPECS): Provide empty default.
10161         * config/arm/unknown-elf.h (UNKNOWN_ELF_STARTFILE_SPEC): Renamed
10162         from STARTFILE_SPEC so that it can be referenced in an override.
10163         (STARTFILE_SPEC): Use UNKNOWN_ELF_STARTFILE_SPEC.
10164         (UNKNOWN_ELF_ENDFILE_SPEC): Renamed from ENDFILE_SPEC so that it
10165         can be referenced in an override.
10166         (ENDFILE_SPEC): Use UNKNOWN_ELF_ENDFILE_SPEC.
10167         * config/arm/bpabi.h (BPABI_LINK_SPEC): Renamed from LINK_SPEC
10168         so that it can be referenced in an override.
10169         (LINK_SPEC): Use BPABI_LINK_SPEC.
10170         * config/arm/eabi.opt (File): New.
10171
10172 2008-07-14  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
10173
10174         * Makefile.in (TARGET_DEF_H): Add targhooks.h.
10175         (FIXED_VALUE_H): New variable.
10176         (RTL_BASE_H): Use $(INPUT_H) and $(FIXED_VALUE_H) instead of
10177         input.h, fixed-value.h.
10178         (TREE_H): Use $(INPUT_H), add $(SYMTAB_H).
10179         (BASIC_BLOCK_H): Use $(BITMAP_H).
10180         (FUNCTION_H): Add varray.h.
10181         (IPA_REFERENCE_H): Use $(BITMAP_H).
10182         (CGRAPH_H): Add $(BASIC_BLOCK_H).
10183         (DF_H): Use $(BITMAP_H).
10184         (GGC_H): Add statistics.h.
10185         (INSN_ADDR_H): New.
10186         (INSN_ATTR_H): Use it.
10187         (SYSTEM_H): Add safe-ctype.h, filenames.h.
10188         (INPUT_H): New.
10189         (SYMTAB_H): Add $(OBSTACK_H).
10190         (CPP_INTERNAL_H): New.
10191         (TREE_DUMP_H): Add tree-pass.h.
10192         (TREE_FLOW_H): Use $(BITMAP_H)
10193         (PRETTY_PRINT_H): Use $(INPUT_H).
10194         (EBITMAP_H): Rename from typo-ed EBIMAP_H.
10195         (GSTAB_H): New.
10196         (BITMAP_H): New.
10197         (many object files): Fix lots of header dependencies throughout.
10198
10199 2008-07-14  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
10200
10201         * Makefile.in (write_entries_to_file, write_entries_to_file_split):
10202         New macros.
10203         (s-gtyp-input): Use them to write tmp-gi.list.
10204         (echo_to_gi.list): Remove.
10205
10206 2008-07-14  Richard Guenther  <rguenther@suse.de>
10207
10208         * tree-ssa-sccvn.c (pre_info): Remove.
10209         (switch_to_PRE_table): Likewise.
10210         (free_scc_vn): Do not clear SSA_NAME_VALUE.  Do not free pre_info.
10211         (set_hashtable_value_ids): Do not create value-ids for the
10212         optimistic tables.
10213         (run_scc_vn): Remove double test.  Remove bogus special-case
10214         in value-number printing.
10215         * tree-ssa-sccvn.h (switch_to_PRE_table): Remove.
10216         * tree-ssa-ccp.c (get_symbol_constant_value): Do not look at
10217         SSA_NAME_VALUE.
10218         * tree-flow-inline.h (get_value_handle): Remove.
10219         * tree-flow.h (get_value_handle): Remove.
10220
10221 2008-07-14  Martin Jambor  <mjambor@suse.cz>
10222
10223         * tree-switch-conversion.c (gen_inbound_check): Make sure the type
10224         in which we generate arithmetics is not a subrange.
10225
10226 2008-07-14  Martin Jambor  <mjambor@suse.cz>
10227
10228         * Makefile.in (IPA_PROP_H): Added ipa-prop.h to IPA_PROP_H variable.
10229
10230 2008-07-14  Richard Guenther  <rguenther@suse.de>
10231
10232         * tree-ssa-pre.c (insert_into_preds_of_block): Do not call convert.
10233
10234 2008-07-14  Andreas Krebbel  <krebbel1@de.ibm.com>
10235
10236         PR target/36745
10237         * config/s390/s390.c: (s390_secondary_reload): Add a secondary
10238         reload for symbol refs moved to r0 with -fPIC.
10239         (legitimize_pic_address): Use the target register as temporary
10240         reg if possible.
10241         (emit_symbolic_move): Adjust comment.
10242         * config/s390/s390.md (reloadsi_PIC_addr, reloaddi_PIC_addr):
10243         New expanders.
10244
10245 2008-07-14  Ben Elliston  <bje@au.ibm.com>
10246
10247         * c-common.h (C_CPP_HASHNODE): New macro.
10248         * coretypes.h (struct cpp_token): Forward declare.
10249         * doc/extend.texi (PowerPC AltiVec Built-in Functions): Document
10250         the context-sensitive keyword method.
10251         * config/rs6000/rs6000-c.c (__vector_keyword, vector_keyword,
10252         __pixel_keyword, pixel_keyword, __bool_keyword, bool_keyword,
10253         expand_bool_pixel): New.
10254         (altivec_categorize_keyword): New function.
10255         (init_vector_keywords): New function.
10256         (rs6000_macro_to_expand): Likewise.
10257         (rs6000_cpu_cpp_builtins): Enable context-sensitive macros if not
10258         compiling an ISO C dialect.
10259
10260 2008-07-13  Daniel Berlin  <dberlin@dberlin.org>
10261
10262         * tree-ssa-pre.c (fully_constant_expression): Add fold_convert calls.
10263         (create_expression_by_pieces): Fix typo.
10264         (do_regular_insertion): Use debug counter here too.
10265
10266 2008-07-14  Hans-Peter Nilsson  <hp@axis.com>
10267
10268         PR target/35492.
10269         * config/cris/cris.h (CRIS_CONST_OK_FOR_LETTER_P): Renamed from
10270         CONST_OK_FOR_LETTER_P.  All port-local users changed.
10271         (CONST_OK_FOR_CONSTRAINT_P): Define; implement Kc as old K,
10272         implement Kp matching power-of-two.
10273         (CONSTRAINT_LEN): Define to match.
10274         * config/cris/cris.md: Replace all use of constraint K with Kc.
10275         ("*btst*): Use Kp for operand 0 of last alternative.
10276
10277 2008-07-13  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
10278
10279         PR testsuite/36440
10280         * tree-call-cdce.c (check_target_format): Accept MIPS single, double
10281         and quad formats.
10282
10283 2008-07-13  Jan Hubicka  <jh@suse.cz>
10284
10285         * tree.c (decl_assembler_name_equal): Expect assembler name of decl
10286         to be mangled too.
10287
10288 2008-07-13  Richard Guenther  <rguenther@suse.de>
10289
10290         PR middle-end/36811
10291         * langhooks.c (lhd_print_error_function): Deal with recursive
10292         BLOCK trees.
10293
10294 2008-07-12  Jan Hubicka  <jh@suse.cz>
10295
10296         * cgraph.c (assembler_name_hash): New static var.
10297         (hash_node_by_assembler_name, eq_assembler_name): New.
10298         (cgraph_node_for_asm): Use hashtable.
10299         (cgraph_remove_node): Maintain hashtable.
10300         (change_decl_assembler_name): Sanity check that names are not changing
10301         after aliasing was processed.
10302         * cgraph.h (varpoon_node): Add next GGC marker.
10303         * tree.c (decl_assembler_name_equal): Constify.
10304         (decl_assembler_name_hash): New.
10305         * tree.h (decl_assembler_name_equal): Constify.
10306         (decl_assembler_name_hash): Update.
10307
10308 2008-07-12  David Daney  <ddaney@avtrex.com>
10309
10310         * config/mips/driver-native.c (host_detect_local_cpu): Handle
10311         sb1 and r5000 cpus.
10312
10313 2008-07-12  Richard Sandiford  <rdsandiford@googlemail.com>
10314
10315         * doc/md.texi: Document the MIPS "v" constraint.
10316         * config/mips/mips.h (reg_class): Revert last change.
10317         (REG_CLASS_NAMES): Likewise.
10318         (REG_CLASS_CONTENTS): Likewise.
10319         * config/mips/mips.c (mips_regno_to_class): Likewise.
10320         * config/mips/constraints.md (v): Likewise, but add documentation.
10321         Add a comment to say that this constraint should not be used in
10322         gcc code.
10323
10324 2008-07-11  DJ Delorie  <dj@redhat.com>
10325
10326         * config/h8300/h8300.md (length): Fix branch offset limit.
10327
10328 2008-07-11  Anatoly Sokolov  <aesok@post.ru>
10329
10330         * config/avr/avr-protos.h (avr_peep2_scratch_safe): Remove prototype.
10331         * config/avr/avr.c (avr_peep2_scratch_safe): Remove.
10332         (avr_hard_regno_scratch_ok): New function.
10333         (TARGET_HARD_REGNO_SCRATCH_OK): Define.
10334         * config/avr/avr.md (all peepholes that request a scratch register):
10335         Remove avr_peep2_scratch_safe use.
10336
10337 2008-07-11  Tom Tromey  <tromey@redhat.com>
10338             Ian Lance Taylor  <iant@google.com>
10339
10340         * c-common.h (enum rid): Add RID_CXX_COMPAT_WARN.
10341         (struct c_common_resword): Define.
10342         (D_CONLY, D_CXXONLY, D_C99, D_CXX0X, D_EXT, D_EXT89): Define.
10343         (D_ASM, D_OBJC, D_CXX_OBJC, D_CXXWARN): Define.
10344         (c_common_reswords, num_c_common_reswords): Declare.
10345         * c-common.c (c_common_reswords): New global const array.
10346         (num_c_common_reswords): New const int.
10347         * c-parser.c (struct resword, reswords): Don't define.
10348         (D_C89, D_EXT, D_EXT89, D_OBJC): Don't define.
10349         (c_parse_init): Clarify mask code.  Use c_common_reswords rather
10350         than reswords.  If warning about C++ keywords, give them a special
10351         RID code.
10352         (c_lex_one_token): Warn about C++ keywords.  Call
10353         objc_is_reserved_word rather than OBJC_IS_AT_KEYWORD.
10354         (c_parser_external_declaration): Look for RID_xxx rather than
10355         RID_AT_xxx, for ObjC++ keywords which are also C++ keywords.
10356         (c_parser_statement_after_labels): Likewise.
10357         (c_parser_objc_class_instance_variables): Likewise.
10358         (c_parser_objc_class_declaration): Likewise.
10359         (c_parser_objc_try_catch_statement): Likewise.
10360         * c-decl.c (c_print_identifier): Ignore RID_CXX_COMPAT_WARN.
10361         (declspecs_add_type): Likewise.
10362
10363 2008-07-11  Angelo Graziosi  <angelo.graziosi@alice.it>
10364
10365         * ggc-page.c (alloc_page):
10366         Substituting xmalloc, xcalloc with
10367         XNEWVEC and XCNEWVAR macros which add the
10368         needed casts.
10369
10370 2008-07-11  Richard Guenther  <rguenther@suse.de>
10371
10372         PR tree-optimization/36765
10373         * tree-ssa-alias.c (compute_flow_insensitive_aliasing): Add
10374         aliases from HEAP vars to SMTs.
10375
10376 2008-07-10  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
10377
10378         * Makefile.in (LOOSE_WARN, STRICT_WARN): Update comments.
10379         * configure.ac (loose_warn): Move -Wc++-compat from here...
10380         (strict_warn): ...to here.
10381         * configure: Regenerate.
10382
10383 2008-07-10  Joseph Myers  <joseph@codesourcery.com>
10384
10385         * config.gcc (arm-*-coff*, armel-*-coff*, h8300-*-*,
10386         i[34567]86-*-aout*, i[34567]86-*-coff*, m68k-*-aout*,
10387         m68k-*-coff*, sh-*-*, mips-sgi-irix[56]*, pdp11-*-bsd,
10388         rs6000-ibm-aix4.[12]*, powerpc-ibm-aix4.[12]*): Deprecate targets,
10389         excluding more specific h8300-*-* and sh-*-* targets.
10390
10391 2008-07-10  Daniel Berlin  <dberlin@dberlin.org>
10392
10393         * tree-ssa-pre.c (create_expression_by_pieces): Add fold_convert calls.
10394         (eliminate): Ditto.
10395         (execute_pre): Call loop_optimizer_finalize in early exit.
10396
10397 2008-07-10  Jakub Jelinek  <jakub@redhat.com>
10398
10399         PR middle-end/36790
10400         * omp-low.c (lower_omp_2): If task_shared_vars, test all DECL_P
10401         uids in the bitmap, not just VAR_DECL uids.
10402
10403         PR rtl-optimization/36419
10404         * combine-stack-adj.c (adjust_frame_related_expr): New function.
10405         (combine_stack_adjustments_for_block): Call it if needed.  Delete
10406         correct insn.
10407         * dwarf2out.c (dwarf2out_frame_debug_expr): Adjust
10408         DW_CFA_GNU_args_size if CSA pass merged some adjustments into
10409         prologue sp adjustment.
10410
10411 2008-07-10  Peter Maydell  <pmaydell@chiark.greenend.org.uk>
10412
10413         PR other/28322
10414         * opts.c (print_ignored_options): Report postponed diagnostics for
10415         unknown -Wno-* options as warnings, not errors.
10416         (postpone_unknown_option_error): Renamed to...
10417         (postpone_unknown_option_warning): ... this.
10418
10419 2008-07-09  Doug Kwan  <dougkwan@google.com>
10420
10421         Revert:
10422         2008-07-08  Doug Kwan  <dougkwan@google.com>
10423
10424         * config/arm/arm.opt (mandroid): New option.
10425         * config/arm/bpabi.h (ANDROID_LINK_SPEC): New macro.
10426         (LINK_SPEC): Enable Android specific behaviour when -mandroid is used.
10427         (CC1_SPEC): Same.
10428         (CC1PLUS_SPEC): Same.
10429         (LIB_SPEC): Same.
10430         (STARTFILE_SPEC): Same.
10431         (ENDFILE_SPEC): Same.
10432         (TARGET_BPABI_CPP_BUILTINS): Define __ANDROID__ when -mandroid is
10433         used.
10434
10435 2008-07-09  Richard Sandiford  <rdsandiford@googlemail.com>
10436
10437         PR target/35802
10438         * config/mips/mips.h (reg_class): Remove V1_REG.
10439         (REG_CLASS_NAMES, REG_CLASS_CONTENTS): Update accordingly.
10440         * config/mips/mips.c (mips_regno_to_class): Map $3 to M16_NA_REGS
10441         instead of V1_REGS.
10442         (mips_get_tp): New function.
10443         (mips_legitimize_tls_address): Use it.
10444         * config/mips/constraints.md (v): Delete.
10445         * config/mips/mips.md (TLS_GET_TP_REGNUM): New constant.
10446         (tls_get_tp_<mode>): Allow any GPR destination and clobber $3.
10447         After reload, split into a move and ...
10448         (*tls_get_tp_<mode>_split): ...this new instruction.
10449
10450 2008-07-09  David Daney  <ddaney@avtrex.com>
10451
10452         * config/mips/driver-native.c: Include coretypes.h and tm.h.
10453
10454 2008-07-09  Jakub Jelinek  <jakub@redhat.com>
10455
10456         * gimplify.c (struct gimplify_ctx): Move to tree-gimple.h.
10457         (push_gimplify_context): Don't allocate temp_htab nor c itself here.
10458         Add c argument.
10459         (pop_gimplify_context): Check c->temp_htab instead of optimize whether
10460         htab_delete should be called.  Don't free c.
10461         (lookup_tmp_var): Create temp_htab lazily.
10462         (gimplify_scan_omp_clauses, gimplify_omp_parallel, gimplify_omp_task,
10463         gimplify_body, force_gimple_operand): Adjust push_gimplify_context
10464         callers.
10465         * omp-low.c (lower_omp_sections, lower_omp_single, lower_omp_master,
10466         lower_omp_ordered, lower_omp_critical, lower_omp_for,
10467         create_task_copyfn, lower_omp_taskreg, execute_lower_omp):
10468         * tree-ssa-ccp.c (convert_to_gimple_builtin): Likewise.
10469         * tree-sra.c (generate_element_init): Likewise.
10470         * tree-mudflap.c (execute_mudflap_function_ops,
10471         execute_mudflap_function_decls): Likewise.
10472         * tree-inline.c (setup_one_parameter, optimize_inline_calls): Likewise.
10473         * tree-gimple.h (struct gimplify_ctx): New type.
10474         (push_gimplify_context): Adjust prototype.
10475
10476 2008-07-09  Daniel Berlin  <dberlin@dberlin.org>
10477
10478         * tree-ssa-pre.c (phi_translate_1): Update placement of
10479         add_to_value calls.
10480
10481 2008-07-09  Anatoly Sokolov  <aesok@post.ru>
10482
10483         * target.h (struct gcc_target): Add hard_regno_scratch_ok field.
10484         * target-def.h (TARGET_HARD_REGNO_SCRATCH_OK): New.
10485         (TARGET_INITIALIZER): Use TARGET_HARD_REGNO_SCRATCH_OK.
10486         * targhooks.c (default_hard_regno_scratch_ok): New function.
10487         * targhooks.h (default_hard_regno_scratch_ok): Declare function.
10488         * doc/tm.texi: Document TARGET_HARD_REGNO_SCRATCH_OK hook.
10489         * recog.c:  Include "target.h".
10490         (peep2_find_free_register): Add check for global regs. Add target
10491         specific check.
10492         * Makefile.in (recog.o): Depend on target.h.
10493
10494 2008-07-09  Kaz Kojima  <kkojima@gcc.gnu.org>
10495
10496         * config/sh/sh.c (sh_canonical_va_list_type): New.
10497         (TARGET_CANONICAL_VA_LIST_TYPE): Define.
10498
10499 2008-07-09  Raksit Ashok <raksit@google.com>
10500
10501         * doc/invoke.texi (Option Summary): Mention new option
10502         -Wdisallowed-function-list=...
10503         (Warning Options): Document -Wdisallowed-function-list=...
10504         * common.opt (Wdisallowed-function-list=): New flag.
10505         * flags.h (warn_disallowed_functions): External definition of new
10506         boolean warning flag.
10507         (warn_if_disallowed_function_p): Declare new function.
10508         * opts.c (warning_disallowed_functions): New static variable.
10509         (warn_disallowed_functions): New boolean warning flag.
10510         (warn_if_disallowed_function_p): New function.
10511         (add_comma_separated_to_vector): Rename
10512         add_instrument_functions_exclude_list to this.
10513         (common_handle_option): Handle new option. Rename calls to
10514         add_instrument_functions_exclude_list into calls to
10515         add_comma_separated_to_vector.
10516         * c-parser.c (c_parser_postfix_expression_after_primary): New warning
10517         based on flag warn_disallowed_functions.
10518
10519 2008-07-09  Christian Bruel  <christian.bruel@st.com>
10520
10521         * final.c (get_attr_length_1): Call get_attr_length_1 with fallback_fn
10522          instead of get_attr_length.
10523
10524 2008-07-09  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
10525
10526         * genattrtab.c (insert_right_side, evaluate_eq_attr): Avoid C++
10527         keywords.
10528         * genemit.c (gen_insn): Likewise.
10529         * gengtype.c (note_def_vec): Likewise.
10530         * gengtype.h (note_def_vec): Likewise.
10531         * genoutput.c (struct data, output_insn_data, process_template,
10532         gen_expand, gen_split, note_constraint): Likewise.
10533         * genrecog.c (new_decision, add_to_sequence, factor_tests,
10534         make_insn_sequence): Likewise.
10535         * gensupport.c (record_insn_name): Likewise.
10536
10537 2008-07-08  Doug Kwan  <dougkwan@google.com>
10538
10539         * config/arm/arm.opt (mandroid): New option.
10540         * config/arm/bpabi.h (ANDROID_LINK_SPEC): New macro.
10541         (LINK_SPEC): Enable Android specific behaviour when -mandroid is used.
10542         (CC1_SPEC): Same.
10543         (CC1PLUS_SPEC): Same.
10544         (LIB_SPEC): Same.
10545         (STARTFILE_SPEC): Same.
10546         (ENDFILE_SPEC): Same.
10547         (TARGET_BPABI_CPP_BUILTINS): Define __ANDROID__ when -mandroid is
10548         used.
10549
10550 2008-07-08  Raksit Ashok  <raksit@google.com>
10551
10552         * expr.c (emit_block_move_via_movmem): Fix expected_align parameter.
10553         (set_storage_via_setmem): Fix expected_align parameter.
10554         * doc/invoke.texi (i386 and x86-64 Options): Add a couple of options
10555         missing from the list.
10556         * doc/md.texi (movmem): Explicitly state that expected alignment is
10557         to be expressed in bytes.
10558         (setmem): Explicitly state that expected alignment is to be expressed
10559         in bytes.
10560
10561 2008-07-08  Joseph Myers  <joseph@codesourcery.com>
10562
10563         * reload.c (find_reloads_subreg_address): Do not require validity
10564         of address in original mode before reloading address.
10565
10566 2008-07-07  Tianwei Sheng  <tianweis@google.com>
10567
10568         * df-core.c (df_remove_problem): Adjust the access to avoid out of
10569         bounds array access.
10570
10571 2008-07-08  Jakub Jelinek  <jakub@redhat.com>
10572
10573         * tree-sra.c (sra_build_assignment): Handle CONVERT_EXPR_P dst.
10574
10575 2008-07-05  Daniel Berlin  <dberlin@dberlin.org>
10576
10577         Fix PR tree-optimization/23455
10578         Fix PR tree-optimization/35286
10579         Fix PR tree-optimization/35287
10580         * Makefile.in (OBJS-common): Remove tree-vn.o.
10581         (tree-vn.o): Remove.
10582         * dbgcnt.def: Add treepre_insert debug counter.
10583         * gcc/tree-flow.h (add_to_value): Updated for other changes.
10584         (debug_value_expressions): Ditto.
10585         (print_value_expressions): Ditto.
10586         * tree-pretty-print.c (dump_generic_node): Updated for
10587         VALUE_HANDLE removal.
10588         * tree-ssa-dom.c (record_equality): Ditto.
10589         (cprop_operand): Ditto.
10590         (lookup_avail_expr): Ditto.
10591         * tree-ssa-threadedge.c
10592         (record_temporary_equivalences_from_stmts_at_dest): Ditto.
10593         (simplify_control_stmt_condition): Ditto.
10594         * tree.c (tree_code_size): Ditto.
10595         (tree_node_structure): Ditto.
10596         (iterative_hash_expr): Ditto.
10597         * tree.def: Ditto.
10598         * tree.h (VALUE_HANDLE_ID): Ditto.
10599         (VALUE_HANDLE_EXPR_SET): Ditto.
10600         (struct tree_value_handle): Ditto.
10601         (union tree_node): Ditto.
10602         * treestruct.def: Ditto.
10603         * tree-vn.c: Removed.
10604         * tree-ssa-pre.c: Rewritten entirely.
10605         * tree-ssa-sccvn.c (constant_to_value_id): New hashtable.
10606         (constant_value_ids): Ditto.
10607         (vn_nary_op_t): Moved to header.
10608         (vn_phi_t): Ditto.
10609         (vn_reference_op_t): Ditto
10610         (vn_reference_t): Ditto.
10611         (next_value_id): New variable.
10612         (VN_INFO): Add an assert.
10613         (vn_constant_eq): New function.
10614         (vn_constant_hash): Ditto.
10615         (get_or_alloc_constant_value_id): Ditto.
10616         (value_id_constant_p): Ditto.
10617         (vn_reference_compute_hash): De-staticify.
10618         (copy_reference_ops_from_ref): Don't use get_callee_fndecl.
10619         Disable some code with a FIXME.  Remove VALUE_HANDLE use.
10620         (valueize_refs): Update opcode if it changes from ssa name to constant.
10621         (vn_reference_lookup_1): Add new argument.
10622         (vn_reference_lookup):  Ditto.
10623         (vn_reference_lookup_pieces): New function.
10624         (vn_reference_insert): Add return type. Modify to deal with value ids.
10625         (vn_reference_insert_pieces):  New function.
10626         (vn_nary_op_compute_hash): De-staticify.
10627         (vn_nary_op_eq): Ditto.
10628         (vn_nary_op_lookup_pieces): New function.
10629         (vn_nary_op_lookup): Add new argument.
10630         (vn_nary_op_insert_pieces): New function.
10631         (vn_nary_op_insert): Add return type. Modify to deal with value ids.
10632         (vn_phi_insert): Ditto.
10633         (visit_unary_op): Update for callee changes.
10634         (visit_binary_op): Ditto.
10635         (visit_reference_op_load): Ditto.
10636         (visit_reference_op_store): Ditto.
10637         (init_scc_vn): Init next_value_id, constant_to_value_id and
10638         constant_value_ids.
10639         (free_scc_vn): Free them.
10640         (set_hashtable_value_ids): New function.
10641         (run_scc_vn): Use it.
10642         (get_max_value_id): New function.
10643         (get_next_value_id): Ditto.
10644         (expressions_equal_p): Moved from tree-vn.c
10645         (sort_vuses): Ditto.
10646         (sort_vuses_heap): Ditto.
10647         * tree-ssa-sccvn.h: Structures moved from tree-ssa-sccvn.c (noted
10648         above).
10649         * tree.c (iterative_hash_hashval_t): Made non-static
10650         * tree.h (iterative_hash_hashval_t): Declare it.
10651
10652 2008-07-08  Martin Jambor  <mjambor@suse.cz>
10653
10654         * ipa-cp.c (ipcp_init_cloned_node): Call ipa_check_create_node_params
10655         instead of ipa_create_node_params.
10656         (ipcp_driver): Allocate infos with ipa_check_create_node_params and
10657         ipa_check_create_edge_args, free them with
10658         free_all_ipa_structures_after_ipa_cp, call ipa_register_cgraph_hooks.
10659
10660         * ipa-prop.c: Include flags.h and tree-inline.h.
10661         (ipa_node_params_vector): New variable.
10662         (ipa_edge_args_vector): New variable.
10663         (edge_removal_hook_holder): New variable.
10664         (node_removal_hook_holder): New variable.
10665         (edge_duplication_hook_holder): New variable.
10666         (node_duplication_hook_holder): New variable.
10667         (ipa_detect_param_modifications): Check for presence of modified flags.
10668         (ipa_compute_jump_functions): Check for presence of jump functions.
10669         (ipa_free_edge_args_substructures): New function.
10670         (ipa_create_node_params): Removed.
10671         (ipa_free_all_edge_args): Changed to deallocate the on-the-side vector.
10672         (ipa_free_node_params_substructures): New function.
10673         (ipa_free_all_node_params): Changed to deallocate the on-the-side
10674         vector.
10675         (ipa_edge_removal_hook): New function.
10676         (ipa_node_removal_hook): New function.
10677         (duplicate_array): New function.
10678         (ipa_edge_duplication_hook): New function.
10679         (ipa_node_duplication_hook): New function.
10680         (ipa_register_cgraph_hooks): New function.
10681         (ipa_unregister_cgraph_hooks): New function.
10682         (free_all_ipa_structures_after_ipa_cp): New function.
10683
10684         * ipa-prop.h: Include vec.h.
10685         (ipa_node_params_t): New typedef with vector types for it.
10686         (ipa_edge_args_t):  New typedef with vector types for it.
10687         (IPA_NODE_REF): Changed to access an on-the-side vector.
10688         (IPA_EDGE_REF): Changed to access an on-the-side vector.
10689         (ipa_check_create_node_params): New function.
10690         (ipa_check_create_edge_args): New function.
10691
10692         * Makefile.in (IPA_PROP_H): New variable for ipa-prop.h.  Converted
10693         all users.
10694
10695 2008-07-07  Tom Tromey  <tromey@redhat.com>
10696
10697         * configure, config.in: Rebuilt.
10698         * configure.ac: Don't check for scandir or alphasort.
10699
10700 2008-07-07  Joseph Myers  <joseph@codesourcery.com>
10701
10702         * config/arm/arm.c (arm_init_neon_builtins): Register built-in
10703         types immediately after creating them.
10704
10705 2008-07-07  Joseph Myers  <joseph@codesourcery.com>
10706
10707         * config/arm/aout.h (DOLLARS_IN_IDENTIFIERS): Remove.
10708
10709 2008-07-07  Fernando Pereira <fernando@cs.ucla.edu>
10710
10711         * tree-ssa-structalias.c (compute_points_to_sets): Add call to
10712         dump_constraint_graph.
10713         (dump_constraint_edge): New function.
10714         (dump_constraint_graph): New function.
10715         (debug_constraint_graph): New function.
10716         (dump_constraint): Removed useless comparison.
10717         * tree-ssa-structalias.h (dump_constraint_edge): Declare.
10718         (dump_constraint_graph): Declare.
10719         (debug_constraint_graph): Declare.
10720         * tree-dump.c (struct dump_option_value_info): Declare TDF_GRAPH.
10721
10722 2008-07-07  Kai Tietz  <kai.tietz@onevision.com>
10723
10724         * config/i386/i386.c (is_va_list_char_pointer): New.
10725         (ix86_va_start): Replace compare with ms_va_list_type_node
10726         by is_va_list_char_pointer.
10727         (ix86_gimplify_va_arg): Likewise.
10728
10729 2008-07-07  Martin Jambor  <mjambor@suse.cz>
10730
10731         * cgraph.c (cgraph_edge_max_uid): New variable.
10732         (struct cgraph_edge_hook_list): New type.
10733         (struct cgraph_node_hook_list): New type.
10734         (struct cgraph_2edge_hook_list): New type.
10735         (struct cgraph_2node_hook_list): New type.
10736         (first_cgraph_edge_removal_hook): New variable.
10737         (first_cgraph_node_removal_hook): New variable.
10738         (first_cgraph_edge_duplicated_hook): New variable.
10739         (first_cgraph_node_duplicated_hook): New variable.
10740         (cgraph_add_edge_removal_hook): New function.
10741         (cgraph_remove_edge_removal_hook): New function.
10742         (cgraph_call_edge_removal_hooks):  New function.
10743         (cgraph_add_node_removal_hook):  New function.
10744         (cgraph_remove_node_removal_hook):  New function.
10745         (cgraph_call_node_removal_hooks):  New function.
10746         (cgraph_add_edge_duplication_hook):  New function.
10747         (cgraph_remove_edge_duplication_hook):  New function.
10748         (cgraph_call_edge_duplication_hooks):  New function.
10749         (cgraph_add_node_duplication_hook):  New function.
10750         (cgraph_remove_node_duplication_hook):  New function.
10751         (cgraph_call_node_duplication_hooks):  New function.
10752         (cgraph_create_edge): Assign to edge uid.
10753         (cgraph_remove_edge): Call edge removal hooks.
10754         (cgraph_node_remove_callees): Call edge removal hooks.
10755         (cgraph_node_remove_callers): Call edge removal hooks.
10756         (cgraph_remove_node): Call node removal hooks.
10757         (cgraph_clone_edge): Call edge duplication hooks.
10758         (cgraph_clone_node): Call node duplication hooks.
10759
10760         * cgraph.h (cgraph_edge): New field uid.
10761         (cgraph_edge_hook): New type.
10762         (cgraph_node_hook): New type.
10763         (cgraph_2edge_hook): New type.
10764         (cgraph_2node_hook): New type.
10765
10766 2008-07-07  Andreas Tobler  <a.tobler@schweiz.org>
10767
10768         * config.in: Regenerate.
10769
10770 2008-07-07  Vladimir Prus  <vladimir@codesourcery.com>
10771
10772         * gcc.c (print_sysroot): New.
10773         (option_map, display_help, process_command): Handle the
10774         -print-sysroot option.
10775         (main): Print the sysroot if requested.
10776         * doc/invoke.texi (Debugging Options): Document -print-sysroot.
10777
10778 2008-07-07  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
10779
10780         PR target/34780
10781         * unwind-pe.h (size_of_encoded_value): add attribute unused.
10782
10783 2008-07-07  Daniel Jacobowitz  <dan@codesourcery.com>
10784
10785         * function.c (assign_parm_remove_parallels): Check mode of entry_parm.
10786         (assign_parm_setup_block_p): Also check mode of entry_parm.
10787
10788 2008-07-07  Richard Guenther  <rguenther@suse.de>
10789
10790         * tree-ssa-structalias.h (set_used_smts): Remove.
10791         * tree-ssa-structalias.c (used_smts): Likewise.
10792         (set_used_smts): Likewise.
10793         * tree-ssa-alias.c (compute_flow_sensitive_aliasing): Remove
10794         call to set_used_smts.
10795
10796 2008-07-07  Richard Guenther  <rguenther@suse.de>
10797
10798         * tree-ssa-structalias.c (struct variable_info): Add is_full_var flag.
10799         (new_var_info): Set it to false.
10800         (solution_set_add): Correctly handle pointers outside a var and
10801         inside a field.
10802         (type_safe): Treat variables with is_full_var properly.
10803         (do_sd_constraint): Likewise.
10804         (do_ds_constraint): Likewise.
10805         (process_constraint): Remove zeroing offset for !use_field_sensitive.
10806         (get_constraint_for_ptr_offset): New function.
10807         (get_constraint_for_component_ref): For addresses at least include
10808         the last field of the variable.  Handle is_full_vars properly.
10809         (get_constraint_for_1): Factor common code, handle POINTER_PLUS_EXPR.
10810         (handle_ptr_arith): Remove.
10811         (find_func_aliases): Simplify assignment handling.
10812         (create_function_info_for): For parameter and result varinfos set
10813         is_full_var flag.
10814         (create_variable_info_for): Set is_full_var flag whenever we
10815         just created a single varinfo for a decl.
10816         (init_alias_vars): Initialize use_field_sensitive from
10817         max-fields-for-field-sensitive parameter.
10818
10819 2008-07-07  Richard Guenther  <rguenther@suse.de>
10820
10821         PR tree-optimization/36713
10822         * tree-flow-inline.h (is_call_used): New function.
10823         * tree-nrv.c (dest_safe_for_nrv_p): Use it.
10824         * tree-tailcall.c (suitable_for_tail_opt_p): Likewise.
10825         * tree-outof-ssa.c (create_temp): Set call-used flag if required.
10826
10827 2008-07-07  Maxim Kuvyrkov  <maxim@codesourcery.com>
10828
10829         * config/m68k/m68k.c (m68k_return_in_memory): Fix arguments types.
10830
10831 2008-07-07  Mark Shinwell  <shinwell@codesourcery.com>
10832
10833         * config/m68k/lb1sf68.asm: Add PIC macros for Linux targets.
10834
10835 2008-07-07  Maxim Kuvyrkov  <maxim@codesourcery.com>
10836             Nathan Sidwell  <nathan@codesourcery.com>
10837
10838         * config.gcc (m68k-*-linux*): Add with_arch.  Add sysroot-suffix.h
10839         to tm_file.  Add m68k/t-floatlib, m68k/t-linux & m68k/t-mlibs to
10840         tmake_file.
10841         * config/m68k/t-linux: New.
10842         * doc/install.texi: Document m68k-*-linux is now multilibbed by
10843         default.
10844
10845 2008-07-07  Nathan Sidwell  <nathan@codesourcery.com>
10846
10847         * config/m68k/t-cf (MULTILIB_EXTRA_OPTS): Add no-mac.
10848         * config/m68k/m68k-devices.def: Remove multilibs that only differ
10849         by MAC/EMAC.
10850
10851 2008-07-06  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
10852
10853         * gcc.c (execute): Fix -Wc++-compat warning.
10854
10855 2008-07-06  H.J. Lu  <hongjiu.lu@intel.com>
10856
10857         PR target/36720
10858         * config/ia64/ia64.c (ia64_split_tmode): Fix typo in TImode
10859         constant for little endian.
10860
10861 2008-07-06  Richard Sandiford  <rdsandiford@googlemail.com>
10862
10863         * config/mips/mips.h (TARGET_CPU_CPP_BUILTINS): Check
10864         mips_base_mips16 instead of TARGET_MIPS16.
10865         (mips_base_mips16): Declare.
10866         * config/mips/mips.c (mips_base_mips16): Make global.
10867         (was_mips16_p): Remove GTY marker.
10868         (was_mips16_pch_p): New variable.
10869         (mips_set_mips16_mode): Check both was_mips16_p and was_mips16_pch_p.
10870         (mips_override_options): Force to non-MIPS16 mode initially.
10871         Do not complain about MIPS16 PIC incompatibilities here.
10872         Only allow -mgpopt if -mexplicit-relocs is in force for
10873         non-MIPS16 code.
10874
10875 2008-07-06  Andreas Tobler  <a.tobler@schweiz.org>
10876
10877         * configure.ac: Check for caddr_t, define to char * if not defined.
10878         * configure: Regenerate.
10879         * ggc-common.c (mmap_gt_pch_get_address): Fix -Wc++-compat warnings.
10880         (mmap_gt_pch_use_address): Likewise.
10881         * config/host-solaris.c (sol_gt_pch_use_address): Likewise.
10882
10883 2008-07-06  Richard Guenther  <rguenther@suse.de>
10884
10885         * tree-ssa-structalias.c (struct variable_info): Remove has_union.
10886         (new_var_info): Deal with it.
10887         (solution_set_add): Likewise.
10888         (bitpos_of_field): Make signed, fix.
10889         (struct fieldoff): Remove type and decl fields.  Make size field
10890         unsigned HOST_WIDE_INT.  Add has_unknown_size and may_have_pointers
10891         flags.
10892         (fieldoff_compare): Deal with it.
10893         (push_fields_onto_fieldstack): Remove has_union argument, glob
10894         adjacent non-pointer fields together.
10895         (create_function_info_for): Do not set has_union.
10896         (create_variable_info_for): Simplify.
10897
10898 2008-07-06  Kai Tietz  <kai.tietz@onevision.com>
10899
10900         * config.gcc (extra_headers): Add cross-stdarg.h for target
10901         x86_64-*-* and i?86-*-*.
10902         * config/i386/cross-stdarg.h: New.
10903         * builtins.c (std_fn_abi_va_list): New.
10904         (std_canonical_va_list_type): New.
10905         (stabilize_va_list): Replace va_list_type_node use by
10906         mtarget.canonical_va_list_type.
10907         (gimplify_va_arg_expr): Likewise.
10908         (expand_builtin_va_copy): Replace va_list_type_node use by
10909         mtarget.fn_abi_va_list.
10910         * tree-sra.c (is_va_list_type): New helper.
10911         (decl_can_be_decomposed_p): Replace
10912         va_list_type_node use by is_va_list_type.
10913         * tree-ssa-ccp.c (optimize_stdarg_builtin): Likewise.
10914         * tree-stdarg.c (execute_optimize_stdarg): Likewise.
10915         * c-common.c (c_common_nodes_and_builtins): Use TARGET_ENUM_VA_LIST.
10916         * config/i386/i386-protos.h (ix86_get_valist_type): New.
10917         (ix86_enum_va_list): New.
10918         * config/i386/i386.c (sysv_va_list_type_node): New.
10919         (ms_va_list_type_node): New.
10920         (ix86_function_type_abi): Remove sorry.
10921         (ix86_build_builtin_va_list_abi): New.
10922         (ix86_build_builtin_va_list): Call ix86_build_builtin_va_list_abi
10923         for 64-bit targets.
10924         (ix86_va_start): Replace va_list_type_node by sysv_va_list_type_node.
10925         (ix86_init_builtins_va_builtins_abi): New.
10926         (ix86_init_builtins): Use ix86_init_builtins_va_builtins_abi
10927         for 64-bit targets.
10928         (ix86_handle_abi_attribute): New.
10929         (attribute_spec): Add sysv_abi and ms_abi.
10930         (ix86_fn_abi_va_list): New.
10931         (ix86_canonical_va_list_type): New.
10932         (ix86_enum_va_list): New.
10933         (TARGET_FN_ABI_VA_LIST): New.
10934         (TARGET_CANONICAL_VA_LIST_TYPE): New.
10935         * config/i386/i386.h (TARGET_ENUM_VA_LIST): New.
10936         * doc/tm.texi (TARGET_FN_ABI_VA_LIST): New.
10937         (TARGET_CANONICAL_VA_LIST_TYPE): New.
10938         (TARGET_ENUM_VA_LIST): New.
10939         * expr.h (std_fn_abi_va_list): New.
10940         (std_canonical_va_list_type): New.
10941         * target-def.h (TARGET_FN_ABI_VA_LIST): New.
10942         (TARGET_CANONICAL_VA_LIST_TYPE): New.
10943         (TARGET_INITIALIZER): Add TARGET_FN_ABI_VA_LIST and
10944         TARGET_CANONICAL_VA_LIST_TYPE.
10945         * target.h (struct gcc_target): Add fn_abi_va_list hook
10946         and canonical_va_list_type hook.
10947
10948 2008-07-05  Andrew Pinski  <andrew_pinski@playstation.sony.com>
10949
10950         * fold-const.c (fold_convert_const): Treat OFFSET_TYPE the same as
10951         integral and pointer types.
10952
10953 2008-07-04  Roger Sayle  <roger@eyesopen.com>
10954
10955         * config/rs6000/host-darwin.c (darwin_rs6000_extra_signals): Cast
10956         the "void*" result of xmalloc to "char*" to fix bootstrap breakage.
10957
10958 2008-07-04  Kaz Kojima  <kkojima@gcc.gnu.org>
10959
10960         PR target/36684
10961         * config/sh/sh.h (OVERRIDE_OPTIONS): Disable -fschedule-insns for PIC.
10962
10963 2008-07-04  Jakub Jelinek  <jakub@redhat.com>
10964
10965         * tree-switch-conversion.c (build_one_array, gen_def_assigns): Use
10966         build_gimple_modify_stmt.
10967         (build_arrays, gen_inbound_check): Likewise.  Force RHS to be
10968         gimple operand.  Use fold_build* instead of build*.
10969
10970 2008-07-04  Richard Guenther  <rguenther@suse.de>
10971
10972         * tree-ssa-structalias.c (lookup_vi_for_tree): Declare.
10973         (do_sd_constraint): Handle a dereference of ESCAPED and CALLUSED
10974         properly to compute the reachability set if we do field-sensitive PTA.
10975         * invoke.texi (max-fields-for-field-sensitive): Document default.
10976         * opts.c (decode_options): Set max-fields-for-field-sensitive to
10977         100 for optimize >= 2.
10978
10979 2008-07-04  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
10980
10981         * ggc-zone.c (lookup_page_table_if_allocated,
10982         set_page_table_entry, zone_find_object_size, alloc_small_page,
10983         alloc_large_page, ggc_free, gt_ggc_m_S, ggc_marked_p, init_ggc,
10984         new_ggc_zone, init_ggc_pch, ggc_pch_this_base, ggc_pch_read): Fix
10985         -Wc++-compat and/or -Wcast-qual warnings.
10986
10987 2008-07-04  Alan Modra  <amodra@bigpond.net.au>
10988
10989         PR target/36634
10990         * config/rs6000/rs6000.md (call, call_value): Don't arrange for
10991         pic_offset_table_rtx to be marked as used here.
10992         (call_nonlocal_sysv, call_value_nonlocal_sysv): Add split for
10993         TARGET_SECURE_PLT to "use" pic_offset_table_rtx.
10994         (call_nonlocal_sysv_secure, call_value_nonlocal_sysv_secure): New insn.
10995         (sibcall_nonlocal_sysv, sibcall_value_nonlocal_sysv): Assert
10996         !TARGET_SECURE_PLT.
10997
10998 2008-07-03  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
10999
11000         * alloc-pool.c (hash_descriptor, eq_descriptor,
11001         alloc_pool_descriptor): Fix -Wc++-compat warnings.
11002         * bitmap.c (hash_descriptor, eq_descriptor, bitmap_descriptor):
11003         Likewise.
11004         * ggc-common.c (hash_descriptor, eq_descriptor, hash_ptr, eq_ptr,
11005         loc_descriptor, ggc_prune_ptr, ggc_free_overhead,
11006         final_cmp_statistic, cmp_statistic, dump_ggc_loc_statistics): Likewise.
11007         * varray.c (hash_descriptor, eq_descriptor, varray_descriptor):
11008         Likewise.
11009
11010 2008-07-03  Eric Botcazou  <ebotcazou@adacore.com>
11011
11012         * tree-flow.h (loop_only_exit_p): Declare.
11013         * tree-ssa-loop-niter.c (loop_only_exit_p): Make public.
11014         * tree-ssa-loop-ivopts.c (may_eliminate_iv): Reinstate direct check on
11015         the number of iterations if it is constant.  Otherwise, if this is the
11016         only possible exit of the loop, use the conservative estimate on the
11017         number of iterations of the entire loop if available.
11018
11019 2008-07-03  Richard Sandiford  <rdsandiford@googlemail.com>
11020
11021         * Makefile.in (libgcc.mvars): Add LIBGCC_SYNC and LIBGCC_SYNC_CFLAGS.
11022         * libgcc-std.ver (GCC_4.4.0): New version, inherited from GCC_4.3.0.
11023         Add synchronization functions.
11024         * config/sync.c: New file.
11025         * config/mips/t-libgcc-mips16 (LIBGCC_SYNC): Define.
11026         (LIBGCC_SYNC_CFLAGS): Likewise.
11027
11028 2008-07-03  Uros Bizjak  <ubizjak@gmail.com>
11029
11030         PR target/36710
11031         * config/i386/i386.md (mode): Add TF to "mode" attribute.
11032         (*pushtf_sse): New insn pattern.
11033         (pushtf splitters): New splitters.
11034
11035 2008-07-03  Michael Meissner  <gnu@the-meissners.org>
11036
11037         PR middle-end/35736
11038         * predict.c (build_predict_expr): Use void_type_node for the tree
11039         type, instead of NULL_TREE.
11040
11041 2008-07-03  H.J. Lu  <hongjiu.lu@intel.com>
11042
11043         * config/i386/i386.c (contains_aligned_value_p): Return true
11044         for TCmode.
11045         (ix86_data_alignment): Align TCmode to 128bits.
11046         (ix86_local_alignment): Likewise.
11047
11048 2008-07-03  Andrew Haley  <aph@redhat.com>
11049
11050         PR bootstrap/33304
11051         * vec.h (VEC_TA): New.
11052         (DEF_VEC_I, DEF_VEC_P, DEF_VEC_ALLOC_I, DEF_VEC_ALLOC_P,
11053         DEF_VEC_O, DEF_VEC_ALLOC_O: Use VEC_TA.
11054         * c-common.c (C_COMMON_FIXED_TYPES_SAT): New macro.
11055         (C_COMMON_FIXED_MODE_TYPES_SAT): New macro.
11056         (C_COMMON_FIXED_TYPES): Remove first arg.
11057         (C_COMMON_FIXED_MODE_TYPES): Likewise.
11058         * tree.c (MAKE_FIXED_TYPE_NODE): Break into two macros,
11059         MAKE_FIXED_TYPE_NODE and MAKE_FIXED_TYPE_NODE_WIDTH in order
11060         not to use empty macro arguments.
11061
11062 2008-07-02  Joseph Myers  <joseph@codesourcery.com>
11063
11064         * config/alpha/vms_tramp.asm, config/arm/crti.asm,
11065         config/arm/crtn.asm, config/bfin/crti.s, config/bfin/crtlibid.s,
11066         config/bfin/crtn.s, config/fr30/crti.asm, config/fr30/crtn.asm,
11067         config/frv/lib1funcs.asm, config/i386/sol2-c1.asm,
11068         config/i386/sol2-ci.asm, config/i386/sol2-cn.asm,
11069         config/i386/sol2-gc1.asm, config/ia64/crti.asm,
11070         config/ia64/crtn.asm, config/m68hc11/larith.asm,
11071         config/m68hc11/m68hc11-crt0.S, config/m68k/crti.s,
11072         config/m68k/crtn.s, config/mcore/crti.asm, config/mcore/crtn.asm,
11073         config/rs6000/crtresfpr.asm, config/rs6000/crtresgpr.asm,
11074         config/rs6000/crtresxfpr.asm, config/rs6000/crtresxgpr.asm,
11075         config/rs6000/crtsavfpr.asm, config/rs6000/crtsavgpr.asm,
11076         config/rs6000/crtsavres.asm, config/rs6000/e500crtres32gpr.asm,
11077         config/rs6000/e500crtres64gpr.asm,
11078         config/rs6000/e500crtres64gprctr.asm,
11079         config/rs6000/e500crtrest32gpr.asm,
11080         config/rs6000/e500crtrest64gpr.asm,
11081         config/rs6000/e500crtresx32gpr.asm,
11082         config/rs6000/e500crtresx64gpr.asm,
11083         config/rs6000/e500crtsav32gpr.asm,
11084         config/rs6000/e500crtsav64gpr.asm,
11085         config/rs6000/e500crtsav64gprctr.asm,
11086         config/rs6000/e500crtsavg32gpr.asm,
11087         config/rs6000/e500crtsavg64gpr.asm,
11088         config/rs6000/e500crtsavg64gprctr.asm, config/rs6000/eabi-ci.asm,
11089         config/rs6000/eabi-cn.asm, config/rs6000/eabi.asm,
11090         config/rs6000/sol-ci.asm, config/rs6000/sol-cn.asm,
11091         config/rs6000/tramp.asm, config/sparc/sol2-ci.asm,
11092         config/sparc/sol2-cn.asm: Remove .file directives.
11093
11094 2008-07-02  Richard Sandiford  <rdsandiford@googlemail.com>
11095
11096         * resource.c (mark_referenced_resources): Look inside
11097         UNSPEC_VOLATILEs and ASM_INPUTs.
11098
11099 2008-07-02  Ian Lance Taylor  <iant@google.com>
11100
11101         * rtlanal.c (add_reg_note): New function.
11102         * rtl.h (add_reg_note): Declare.
11103         * auto-inc-dec.c (attempt_change): Use add_reg_note.
11104         * bb-reorder.c (add_reg_crossing_jump_notes): Likewise.
11105         * builtins.c (expand_builtin_longjmp): Likewise.
11106         (expand_builtin_nonlocal_goto): Likewise.
11107         * calls.c (emit_call_1, expand_call): Likewise.
11108         * cfgexpand.c (add_reg_br_prob_note): Likewise.
11109         * cfglayout.c (fixup_reorder_chain): Likewise.
11110         * cfgrtl.c (force_nonfallthru_and_redirect): Likewise.
11111         (commit_one_edge_insertion): Likewise.
11112         * combine.c (move_deaths, distribute_notes): Likewise.
11113         * df-problems.c (df_set_note): Likewise.
11114         * emit-rtl.c (link_cc0_insns, try_split): Likewise.
11115         (set_unique_reg_note): Likewise.
11116         (emit_copy_of_insn_after): Likewise.
11117         * expr.c (expand_expr_real): Likewise.
11118         * gcse.c (add_label_notes): Likewise.
11119         * haifa-sched.c (create_check_block_twin): Likewise.
11120         * jump.c (mark_jump_label_1): Likewise.
11121         * loop-doloop.c (add_test, doloop_modify): Likewise.
11122         * loop-unswitch.c (compare_and_jump_seq): Likewise.
11123         * lower-subreg.c (move_eh_region_note): Likewise.
11124         * optabs.c (emit_libcall_block): Likewise.
11125         * predict.c (predict_insn): Likewise.
11126         (combine_predictions_for_insn): Likewise.
11127         * recog.c (peephole2_optimize): Likewise.
11128         * regmove.c (try_auto_increment): Likewise.
11129         * reg-stack.c (emit_pop_insn, move_for_stack_reg): Likewise.
11130         * reload.c (find_reloads): Likewise.
11131         * reload1.c (fixup_eh_region_note): Likewise.
11132         (reload_as_needed, add_auto_inc_notes, copy_eh_notes): Likewise.
11133         * reorg.c (delete_prior_computation): Likewise.
11134         (delete_computation, dbr_schedule): Likewise.
11135         * config/pa/pa.c (legitimize_pic_address): Likewise.
11136         * config/sh/sh.c (sh_reorg): Likewise.
11137
11138 2008-07-02  H.J. Lu  <hongjiu.lu@intel.com>
11139
11140         PR target/36669
11141         * config/libgcc-glibc.ver: Add %exclude.
11142         * config/m32r/libgcc-glibc.ver: Likwise.
11143         * config/s390/libgcc-glibc.ver: Likwise.
11144         * config/sh/libgcc-glibc.ver: Likwise.
11145         * config/sparc/libgcc-sparc-glibc.ver: Likwise.
11146
11147         * config/i386/libgcc-glibc.ver: New.
11148
11149         * config/i386/libgcc-x86_64-glibc.ver: Removed.
11150
11151 2008-07-02  H.J. Lu  <hongjiu.lu@intel.com>
11152
11153         * config.gcc: Remove i386/t-fprules-softfp64 soft-fp/t-softfp
11154         from tmake_file from i[34567]86-*-darwin*, x86_64-*-darwin*,
11155         i[34567]86-*-linux*, x86_64-*-linux*.  Add
11156         i386/t-fprules-softfp and soft-fp/t-softfp to tmake_file for
11157         i[34567]86-*-darwin*, x86_64-*-darwin*, i[34567]86-*-linux*,
11158         x86_64-*-linux*.  Add i386/t-linux to tmake_file for
11159         i[34567]86-*-linux*, x86_64-*-linux*.
11160
11161         * libgcc-std.ver: Add empty GCC_4.4.0.
11162
11163         * mkmap-symver.awk: Support multiple versions per symbol.
11164
11165         * config/i386/i386.c (ix86_init_builtins): Always define
11166         __builtin_fabsq and __builtin_copysignq with fallbacks.
11167         (ix86_expand_builtin): Emit normal call for __builtin_fabsq
11168         and __builtin_copysignq if SSE2 isn't available.
11169
11170         * config/i386/linux.h (LIBGCC2_HAS_TF_MODE): Defined.
11171         (LIBGCC2_TF_CEXT): Likwise.
11172         (TF_SIZE): Likwise.
11173
11174         * config/i386/linux64.h (LIBGCC2_HAS_TF_MODE): Defined as 1.
11175
11176         * config/i386/sfp-machine.h: Moved to libgcc.
11177
11178         * config/i386/sfp-machine.h: New.
11179         * config/i386/t-linux: Likwise.
11180
11181         * config/i386/t-darwin: Remove softfp_wrap_start and
11182         softfp_wrap_end.
11183         * config/i386/t-darwin64: Likewise.
11184
11185         * config/i386/t-fprules-softfp64: Renamed to ...
11186         * config/i386/t-fprules-softfp: This.
11187
11188         * config/i386/t-linux64: Remove SHLIB_MAPFILES, softfp_wrap_start
11189         and softfp_wrap_end.
11190
11191 2008-07-02  Jason Merrill  <jason@redhat.com>
11192
11193         * tree.c (ctor_to_list): Use FOR_EACH_CONSTRUCTOR_ELT.
11194
11195         * tree.c (ctor_to_list): New fn.
11196         * tree.h: Declare it.
11197         (CONSTRUCTOR_ELT): New macro.
11198         (CONSTRUCTOR_NELTS): New macro.
11199
11200 2008-07-02  Richard Guenther  <rguenther@suse.de>
11201
11202         * tree-ssa-structalias.c (struct variable_info): Reorder
11203         to fill padding on 64bit hosts.  Make collapsed_to an int.
11204         (get_varinfo_fc): Deal with that.
11205         (new_var_info): Likewise.
11206         (collapse_rest_of_var): Likewise.
11207
11208 2008-07-02  Joshua Sumali  <jsumali@redhat.com>
11209
11210         * doc/install.texi (--enable-java-home): Document.
11211         (--enable-aot-compile-rpm): Likewise.
11212         (--with-arch-directory): Likewise.
11213         (--with-os-directory): Likewise.
11214         (--with-origin-name): Likewise.
11215         (--with-arch-suffix): Likewise.
11216         (--with-jvm-root-dir): Likewise.
11217         (--with-jvm-jar-dir): Likewise.
11218         (--with-python-dir): Likewise.
11219
11220 2008-07-02  Richard Guenther  <rguenther@suse.de>
11221
11222         * tree-ssa-forwprop.c (can_propagate_from): Exclude loads
11223         from decls explicitly.  Merge operand checking from tuples.
11224
11225 2008-07-02  Martin Jambor  <mjambor@suse.cz>
11226
11227         * tree-switch-conversion.c: Included timevar.h which I forgot before.
11228
11229 2008-07-02  Martin Jambor  <mjambor@suse.cz>
11230
11231         * tree-switch-conversion.c: Included timevar.h
11232         (pass_convert_switch): Added a timevar id (TV_TREE_SWITCH_CONVERSION).
11233
11234         * timevar.def: Added TV_TREE_SWITCH_CONVERSION.
11235
11236 2008-07-02  Martin Jambor  <mjambor@suse.cz>
11237
11238         * tree-switch-conversion.c: Corrected various comments and
11239         whitespace issues
11240         (build_constructors): Fixed minor formatting mistakes.
11241
11242         * invoke.texi (Optimize Options): Corrected the
11243         switch-conversion-max-branch-ratio parameter.
11244
11245 2008-07-02  Mark Shinwell  <shinwell@codesourcery.com>
11246
11247         * final.c (asm_insn_count): Return zero for an empty asm body.
11248
11249 2008-07-02  Richard Guenther  <rguenther@suse.de>
11250
11251         * bitmap.h (bitmap_set_bit): Return bool.
11252         (bitmap_clear_bit): Likewise.
11253         * bitmap.c (bitmap_set_bit): Return if the bit changed.  Only
11254         write to the bitmap if it would.
11255         (bitmap_clear_bit): Likewise.
11256         * tree-ssa-structalias.c (add_implicit_graph_edge): Use
11257         bitmap_set_bit return value.
11258         (add_pred_graph_edge): Likewise.
11259         (add_graph_edge): Likewise.
11260         (do_sd_constraint): Likewise.
11261         (do_ds_constraint): Likewise.
11262
11263 2008-07-02  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
11264
11265         * config/alpha/alpha.c (alpha_need_linkage, alpha_use_linkage):
11266         Fix -Wc++-compat and/or -Wcast-qual warnings.
11267         * config/i386/netware.c (gen_stdcall_or_fastcall_decoration,
11268         gen_regparm_prefix): Likewise.
11269         * vmsdbgout.c (write_modbeg, lookup_filename,
11270         vmsdbgout_source_line, vmsdbgout_init): Likewise.
11271
11272 2008-07-02  Danny Smith  <dannysmith@users.sourceforge.net>
11273
11274         * config/i386/mingw32.h (TARGET_USE_JCR_SECTION): Undef to let
11275         defaults.h definition apply.
11276
11277 2008-07-01  Daniel Jacobowitz  <dan@codesourcery.com>
11278
11279         * function.c (assign_parm_remove_parallels): New.
11280         (assign_parm_setup_block_p): Do not return true for non-BLKmode
11281         PARALLELs.
11282         (assign_parm_setup_block): Do not handle them.
11283         (assign_parm_setup_reg, assign_parm_setup_stack): Call
11284         assign_parm_remove_parallels.
11285
11286 2008-07-01  Daniel Jacobowitz  <dan@codesourcery.com>
11287
11288         * c-typeck.c (convert_for_assignment): Use
11289         vector_targets_convertible_p.
11290         * c-common.c (vector_targets_convertible_p): New.
11291         * c-common.h (vector_targets_convertible_p): New prototype.
11292         * config/rs6000/rs6000.c (rs6000_is_opaque_type): Do not check
11293         opaque_p_V2SI_type_node.
11294
11295 2008-07-01  Steve Ellcey  <sje@cup.hp.com>
11296
11297         * config/ia64/ia64.c (ia64_cannot_force_const_mem): Do not allow
11298         RFmode constants.
11299
11300 2008-07-01  Uros Bizjak  <ubizjak@gmail.com>
11301
11302         * config/i386/i386.c (ix86_build_signbit_mask): Generate TImode and
11303         TFmode constants via two element DImode vector for hosts with
11304         HOST_BITS_PER_WIDE_INT < 64.
11305         (ix86_init_builtins): Define __builtin_fabsq and __builtin_copysignq
11306         also for HOST_BITS_PER_WIDE_INT < 64.
11307
11308 2008-07-01  Richard Guenther  <rguenther@suse.de>
11309
11310         PR tree-optimization/36666
11311         * tree-ssa-structalias.c (get_constraint_for_1): Declare.
11312         (get_constraint_exp_from_ssa_var): Split into ...
11313         (get_constraint_exp_for_temp): ... this ...
11314         (get_constraint_for_ssa_var): ... and that.
11315         Return constraint expressions for all touched sub-fields
11316         if the results address is not taken.
11317         (process_constraint): Remove assertion that aggregate
11318         assignments do not happen at this place.
11319         (get_constraint_for_component_ref): Add address_p argument.
11320         Return constraint expressions for all touched sub-fields
11321         if the results address is not taken.
11322         (do_deref): Use get_constraint_exp_for_temp.
11323         (get_constraint_for_1): Rename from ...
11324         (get_constraint_for): ... this.  Add the old function as wrapper.
11325         (do_structure_copy): Use get_constraint_for_1.
11326
11327 2008-07-01  Martin Jambor  <mjambor@suse.cz>
11328
11329         * Makefile.in (tree-switch-conversion.o): Add.
11330         (OBJS-common): Add tree-swtch-conversion.o.
11331         * passes.c (init_optimization_passes): Add pass_convert_switch.
11332         * tree-pass.h: (pass_convert_switch): Add.
11333         * tree-switch-conversion.c: New file.
11334         * gcc.dg/tree-ssa/cswtch.c: New testcase.
11335         * common.opt (ftree-cswtch): New option.
11336         * params.h (PARAM_SWITCH_CONVERSION_BRANCH_RATIO): New parameter.
11337         * params.def (PARAM_SWITCH_CONVERSION_BRANCH_RATIO): New parameter.
11338         * opts.c (decode_options): Set flag_tree_switch_conversion when
11339         optimization level is >= 2.
11340         * doc/invoke.texi (Optimize Options): Added description of
11341         -ftree-swtch-conversion and switch-conversion-max-branch-ratio.
11342
11343 2008-06-30  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
11344
11345         * config/darwin-driver.c (darwin_default_min_version): Fix
11346         -Wc++-compat warnings.
11347
11348 2008-06-30  Uros Bizjak  <ubizjak@gmail.com>
11349
11350         * config/i386/i386.md (*movti_rex64): Add "!" to "r" constraint
11351         of operand 0.
11352
11353 2008-06-30  Kenneth Zadeck <zadeck@naturalbridge.com>
11354
11355         * ifcvt.c (cond_move_process_if_block): Free vectors on false return.
11356
11357 2008-06-30  Kenneth Zadeck <zadeck@naturalbridge.com>
11358
11359         PR rtl-optimization/34744
11360         * df-scan.c (df_scan_free_ref_vec, df_scan_free_mws_vec): New macros.
11361         (df_scan_free_internal): Free data structures not
11362         allocated in storage pools.
11363         (df_mw_hardreg_chain_delete_eq_uses): Use df_scan_free_mws_vec.
11364         (df_refs_add_to_chains): Use df_scan_free_ref_vec and
11365         df_scan_free_mws_vec.
11366         * dse.c (dse_step6): Free offset_map_p and offset_map_n
11367         unconditionally.
11368
11369 2008-06-30  H.J. Lu  <hongjiu.lu@intel.com>
11370
11371         * config/i386/i386.c (contains_aligned_value_p): Return true
11372         for __float128.
11373         (ix86_function_arg_boundary): Return its natural boundary
11374         for __float128.
11375         (return_in_memory_32): Don't check TDmode.
11376         (ix86_split_to_parts): Support splitting into 4 parts and
11377         support TFmode for 32bit target.
11378         (ix86_split_long_move): Support splitting into 4 parts.
11379         (bdesc_args): Enable IX86_BUILTIN_FABSQ and IX86_BUILTIN_COPYSIGNQ
11380         for SSE2.
11381         (ix86_init_mmx_sse_builtins): Move __float80 and __float128 to ...
11382         (ix86_init_builtins): Here.
11383         (ix86_scalar_mode_supported_p): Always return true for TFmode.
11384         (ix86_c_mode_for_suffix): Always return TFmode and XFmode for
11385         'q' and 'w', respectively.
11386
11387         * config/i386/i386.md (movtf): Check TARGET_SSE2 instead of
11388         TARGET_64BIT.
11389         (movtf_internal): Likewise.
11390         (<code>tf2): Likewise.
11391         (*absnegtf2_sse): Likewise.
11392         (copysign<mode>3): Likewise.
11393         (copysign<mode>3_const): Likewise.
11394         (copysign<mode>3_var): Likewise.
11395         (define_split UNSPEC_COPYSIGN): Likewise.
11396         * config/i386/sse.md (*nandtf3): Likewise.
11397         (<code>tf3): Likewise.
11398         (*<code>tf3): Likewise.
11399
11400 2008-06-30  Joey Ye  <joey.ye@intel.com>
11401             H.J. Lu  <hongjiu.lu@intel.com>
11402
11403         * global.c (compute_regsets): Set frame_pointer_needed here.
11404         * reload1.c (init_elim_table): Don't set frame_pointer_needed here.
11405
11406 2008-06-30  Aaron W. LaFramboise  <aaronavay62@aaronwl.com>
11407
11408         * doc/install.texi (specific): Expand Windows build notes.
11409
11410 2008-06-30  Ira Rosen  <irar@il.ibm.com>
11411
11412         PR tree-optimization/36648
11413         * tree-vect-transform.c (vect_do_peeling_for_loop_bound): Divide
11414         number of prolog iterations by step. Fix the comment.
11415
11416 2008-06-30  Richard Guenther  <rguenther@suse.de>
11417
11418         PR middle-end/36671
11419         * tree-ssa-structalias.c (handle_lhs_call): Add flags argument,
11420         handle calls from ECF_MALLOC functions.
11421         (handle_pure_call): ECF_MALLOC functions do not return
11422         call-used memory.
11423         (find_func_aliases): Handle all calls, adjust calls to handle_lhs_call.
11424
11425 2008-06-29  Andreas Schwab  <schwab@suse.de>
11426
11427         * config/m68k/m68k.c (print_operand): Always print a float
11428         constant in hex.
11429         * config/m68k/m68k.h (ASM_OUTPUT_FLOAT_OPERAND)
11430         (ASM_OUTPUT_DOUBLE_OPERAND, ASM_OUTPUT_LONG_DOUBLE_OPERAND):
11431         Remove macros.
11432
11433         * config/rs6000/x-linux64: Remove never used file.
11434
11435 2008-06-29  Richard Guenther  <rguenther@suse.de>
11436
11437         * tree-ssa-structalias.h (compute_points_to_sets): Adjust
11438         prototype.
11439         (struct alias_info): Move ...
11440         * tree-ssa-alias.c: ... here.
11441         (update_alias_info): Declare.
11442         (compute_may_aliases): Call it.
11443         (update_alias_info): New function.
11444         * tree-ssa-structalias.c (update_alias_info): Move ...
11445         * tree-ssa-alias.c (update_alias_info_1): ... here.
11446         * tree-ssa-structalias.c (process_constraint_1): Remove
11447         unused from_call argument.  Rename to ...
11448         (process_constraint): ... this.  Delete old wrapper.
11449         (make_constraint_to): Adjust callers.
11450         (handle_const_call): Likewise.
11451         (handle_pure_call): Likewise.
11452         (init_base_vars): Likewise.
11453         (handle_lhs_call): Likewise.  Remove unnecessary constraint.
11454         (find_func_aliases): We don't need structure copies for
11455         complex types.
11456         (make_constraint_from_anything): Remove.
11457         (create_variable_info_for): For globals make constraints
11458         from escaped, not from anything.
11459         (compute_points_to_sets): Do not call update_alias_info.
11460         (ipa_pta_execute): Use make_constraint_from.
11461
11462 2008-06-29  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
11463
11464         * Makefile.in (CXX_COMPAT_WARN, cxx_compat_warn): Delete.
11465         (bitmap.o-warn, dominance.o-warn): New.
11466         * configure.ac (cxx_compat_warn): Delete.
11467         (loose_warn): Add -Wcast-qual and -Wc++-compat.
11468         * system.h: Remove #pragma diagnostic for -Wcast-qual and
11469         -Wc++-compat.
11470         * configure: Regenerate.
11471
11472         * optabs.c (libfunc_decl_hash, libfunc_decl_eq): Fix -Wcast-qual
11473         warnings.
11474
11475 2008-06-29  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
11476
11477         * alloc-pool.c (create_alloc_pool): Fix -Wc++-compat warnings.
11478         * df-scan.c (df_notes_rescan): Likewise.
11479         * ggc-page.c (set_page_table_entry): Likewise.
11480         * intl.c (gcc_gettext_width): Likewise.
11481         * varasm.c (get_unnamed_section, get_noswitch_section,
11482         get_section): Likewise.
11483
11484 2008-06-28  Andrew Jenner  <andrew@codesourcery.com>
11485
11486         * regrename.c (build_def_use): Don't copy RTX.
11487
11488 2008-06-28  Sandra Loosemore  <sandra@codesourcery.com>
11489
11490         * doc/extend.texi (Variable Attributes): Use @ref instead of @xref.
11491         (Type Attributes): Fix nesting of @table and @subsection.  Adjust
11492         punctuation.  Use @ref instead of @xref.
11493         (Function Names): Remove stray @display/@end display.
11494         (C++ Attributes): Use @ref instead of @xref.
11495         (Deprecated Features): Fix punctuation around @xref.
11496         (Backwards Compatibility): Likewise.
11497         * doc/rtl.texi (Incdec): Remove stray @table/@end table.
11498
11499 2008-06-28  Joseph Myers  <joseph@codesourcery.com>
11500
11501         * config/rs6000/predicates.md (easy_fp_constant): Reject TFmode
11502         constants for E500 double.
11503
11504 2008-06-28  Ulrich Weigand  <Ulrich.Weigand@de.ibm.com>
11505
11506         * doc/rtl.texi (const_vector): Document const_fixed as legitimate
11507         element type of const_vector.
11508
11509 2008-06-28  Uros Bizjak  <ubizjak@gmail.com>
11510
11511         * config/i386/i386.md (addti3, adddi3, addsi3, addhi3, addqi3):
11512         Remove FLAGS_REG clobber from expander pattern.
11513         (subti3, subdi3, subsi3, subhi3, subqi3): Ditto.
11514         (anddi3, andsi3, andhi3, andqi3): Ditto.
11515         (iordi3, iorsi3, iorhi3, iorqi3): Ditto.
11516         (xordi3, xorsi3, xorhi3, xorqi3): Ditto.
11517         (negti2, negdi2, negsi2, neghi2, negqi2): Ditto.
11518         (ashlsi3, ashlhi3, ashlqi3): Ditto.
11519         (ashrsi3, ashrhi3, ashrqi3): Ditto.
11520         (lshrsi3, lshrhi3, lshrqi3): Ditto.
11521         (rotldi3, rotlsi3, rotlhi3, rotlqi3): Ditto.
11522         (rotrdi3, rotrsi3, rotrhi3, rotrqi3): Ditto.
11523
11524 2008-06-28  Richard Guenther  <rguenther@suse.de>
11525
11526         * tree-ssa-structalias.c (callused_id, var_callused,
11527         callused_tree): Add.
11528         (handle_pure_call): New function.
11529         (find_func_aliases): Call it.
11530         (find_what_p_points_to): Handle the call-used set.
11531         (clobber_what_escaped): Likewise.
11532         (compute_call_used_vars): New function.
11533         (init_base_vars): Init the call-used variable.
11534         (do_sd_constraint): Do not propagate the solution from CALLUSED
11535         but use CALLUSED as a placeholder.
11536         (solve_graph): Likewise.
11537         * tree-flow-inline.h (gimple_call_used_vars): New function.
11538         * tree-flow.h (struct gimple_df): Add call_used_vars bitmap.
11539         (compute_call_used_vars): Declare.
11540         * tree-ssa-alias.c (set_initial_properties): Call
11541         compute_call_used_vars.
11542         (reset_alias_info): Clear call-used variables.
11543         (add_call_clobber_ops): Assert we are not called for const/pure
11544         functions.  Remove handling of them.
11545         (add_call_read_ops): Handle pure functions by adding the
11546         call-used set of variables as VUSEs.
11547         * tree-ssa.c (init_tree_ssa): Allocate call-used bitmap.
11548         (delete_tree_ssa): Free it.
11549         * tree-dfa.c (remove_referenced_var): Clear the var from the
11550         call-used bitmap.
11551
11552 2008-06-28  Kai Tietz  <kai.tietz@onevision.com>
11553
11554         * tree.c (build_varargs_function_type_list): New.
11555         (build_function_type_list_1): New.
11556         (build_function_type_list): Use build_function_type_list_1.
11557         * tree.h (build_varargs_function_type_list): New.
11558
11559 2008-06-28  Ulrich Weigand  <Ulrich.Weigand@de.ibm.com>
11560
11561         PR target/34856
11562         * config/spu/spu.c (spu_builtin_splats): Do not generate
11563         invalid CONST_VECTOR expressions.
11564         (spu_expand_vector_init): Likewise.
11565
11566 2008-06-28  Richard Sandiford  <rdsandiford@googlemail.com>
11567
11568         * optabs.c (libfunc_decls): New variable.
11569         (libfunc_decl_hash, libfunc_decl_eq): New functions.
11570         (init_one_libfunc): Reuse decls and SYMBOL_REFs when asked
11571         for the same function twice.
11572
11573 2008-06-27  Uros Bizjak  <ubizjak@gmail.com>
11574
11575         * config/i386/i386.md (ashlti3, ashrti3, lshrti3): Expand using
11576         ix86_expand_binary_operator directly.
11577         (*ashlti3_1): Rename from ashlti3_1.  Use nonmemory_operand predicate
11578         for operand 2.
11579         (*ashrti3_1): Ditto.
11580         (*lshrti3_1): Ditto.
11581         (*ashlti3_2, *ashrti3_2, *lshrti3_2): Remove insn patterns.
11582         (ashlti, ashrti and lshrti splitters): Handle nonmemory operand 2
11583         using only one splitter.  Conditionaly execute splitter before or
11584         after peephole2 pass.
11585         (ashlti, ashrti and lshrti peephole2): Define peephole2 patterns.
11586         (x86_shld): Rename from x86_shld_1.  Compress operand 2 constraints.
11587         Use only one alternative in asm template.
11588         (x86_64_shld): Compress operand 2 constraints. Use only one alternative
11589         in asm template.
11590         (*ashldi3_cmp_rex64): Use const_1_to_63_operand operand predicate and
11591         "J" operand constraint for operand 2.
11592         (*ashldi3_cconly_rex64): Ditto.
11593         (*ashrdi3_cmp_rex64): Ditto.
11594         (*ashrdi3_cconly_rex64): Ditto.
11595         (*lshrdi3_cmp_rex64): Ditto.
11596         (*lshrdi3_cconly_rex64): Ditto.
11597         * config/i386/predicates.md (const_1_to_63_operand): New predicate.
11598         * config/i386/i386.md (print_operand) ['s']: Print ", " using fputs.
11599         (split_ashr, split_ashl, split_lshr): Use gen_x86_shrd instead of
11600         gen_x86_shrd_1.
11601
11602 2008-06-27  Jakub Jelinek  <jakub@redhat.com>
11603
11604         * gimplify.c (omp_is_private): Don't return true if decl is not
11605         already private on #pragma omp for or #pragma omp parallel for.
11606
11607         PR debug/36617
11608         * tree-cfg.c (struct move_stmt_d): Replace block field with
11609         orig_block and new_block fields.
11610         (move_stmt_r): Only set TREE_BLOCK to p->new_block if
11611         if it used to be NULL, p->orig_block or if p->orig_block is NULL.
11612         (move_block_to_fn): Replace vars_map and new_label_map arguments
11613         with struct move_stmt_d pointer.
11614         (replace_block_vars_by_duplicates): New function.
11615         (move_sese_region_to_fn): Add ORIG_BLOCK argument.  Adjust
11616         move_block_to_fn caller.  If ORIG_BLOCK is non-NULL, move over
11617         all subblocks of ORIG_BLOCK to the new function.  Call
11618         replace_block_vars_by_duplicates.
11619         * tree-flow.h (move_sese_region_to_fn): Adjust prototype.
11620         * omp-low.c (expand_omp_taskreg): Set TREE_USED on DECL_INITIAL
11621         BLOCK of the new function.  Adjust move_sese_region_to_fn caller.
11622         Prune vars with original DECL_CONTEXT from child_cfun->local_decls.
11623         (expand_omp): Temporarily set input_location to the location of
11624         region's controlling stmt.
11625         (lower_omp_sections, lower_omp_for): Add a BLOCK into outermost
11626         BIND_EXPR, push ctx->block_vars and gimplification vars into
11627         the BIND_EXPR and its block's BLOCK_VARS instead of directly
11628         into dest function.
11629         (lower_omp_single): Set TREE_USED on the BIND_EXPR's BLOCK if
11630         there are any BLOCK_VARS.
11631         (lower_omp_taskreg): Set BLOCK on a BIND_EXPR containing the
11632         OMP_PARALLEL or OMP_TASK stmt.
11633         (lower_omp): Save and restore input_location around the lower_omp_1
11634         call.
11635
11636 2008-06-27  Richard Guenther  <rguenther@suse.de>
11637
11638         PR tree-optimization/36400
11639         PR tree-optimization/36373
11640         PR tree-optimization/36344
11641         * tree-ssa-structalias.c (var_escaped, escaped_tree, escaped_id,
11642         var_nonlocal, nonlocal_tree, nonlocal_id): New globals
11643         (update_alias_info): Remove call clobbering code.
11644         (make_constraint_to): New helper function.
11645         (make_escape_constraint): Likewise.
11646         (handle_rhs_call): Use it on all pointer containing arguments.
11647         Also mark the static chain escaped.
11648         (handle_lhs_call): Make constraints from NONLOCAL and ESCAPED
11649         instead of ANYTHING.
11650         (make_constraint_from): New helper split out from ...
11651         (make_constraint_from_anything): ... here.
11652         (find_func_aliases): Add constraints for escape sites.
11653         (intra_create_variable_infos): Make constraints from NONLOCAL
11654         for parameters.
11655         (find_what_p_points_to): Interpret NONLOCAL and ESCAPED the same
11656         as ANYTHING.
11657         (clobber_what_p_points_to): Remove.
11658         (clobber_what_escaped): New function.
11659         (init_base_vars): Init NONLOCAL and ESCAPED.
11660         (do_sd_constraint): Do not propagate the solution from ESCAPED
11661         but use ESCAPED as a placeholder.
11662         (solve_graph): Likewise.
11663         * tree-flow.h (clobber_what_p_points_to): Remove.
11664         (clobber_what_escaped): Declare.
11665         * tree-ssa-alias.c (set_initial_properties): Call it.
11666         Remove code clobbering escaped pointers.
11667
11668 2008-06-27  Richard Sandiford  <rdsandiford@googlemail.com>
11669
11670         * function.c (allocate_struct_function): Only allocate a unique
11671         funcdef_no if the decl is nonzero.
11672
11673 2008-06-27  Richard Sandiford  <rdsandiford@googlemail.com>
11674
11675         * config/mips/mips-protos.h (mips_split_const_insns): Declare.
11676         * config/mips/mips.c (mips_split_const_insns): New function.
11677         * config/mips/mips.md (move_type): New attribute.
11678         (mode): Move attribute definition earlier in file.  Add "TI" and "TF".
11679         (dword_mode): New attribute.
11680         (type): Avoid long line.  Map "move_type"s to "type"s,
11681         choosing "multi" for doubleword moves if appropriate.
11682         Swap MTC/MFC comments to match their declaration order.
11683         (extended_mips16): Default to "yes" if "move_type" is "sll0",
11684         "type" is "branch" or "jal" is "direct".
11685         (length): Handle "extended_mips16" first.  Make the default
11686         "0" for "ghost" instructions.  Set the length from "move_type".
11687         (truncdisi2, truncdihi2, truncdiqi2): Use "move_type" instead
11688         of "type", with "sll0" for the register alternative.  Remove the
11689         "extended_mips16" attribute.
11690         (zero_extendsidi2, *clear_upper32): Use "move_type" instead
11691         of "type", with "shift_shift" for the register alternative.
11692         Remove the "length" attribute.
11693         (*extend<SHORT:mode><GPR:mode>2, *extendqihi2): Likewise.
11694         (*zero_extend<SHORT:mode><GPR:mode>2): Use "move_type" instead
11695         of "type", with "andi" for the register alternative.
11696         (*zero_extendqihi2): Likewise.
11697         (*zero_extend<SHORT:mode><GPR:mode>2_mips16e): Use a "move_type"
11698         of "andi" instead of a "type" of "arith".
11699         (*zero_extend<SHORT:mode><GPR:mode>2_mips16): Use "move_type"
11700         instead of "type".
11701         (*zero_extendqihi2_mips16, mov_<load>l, mov_<load>r, mov_<store>l)
11702         (mov_<store>r, *mov<mode>_ra): Likewise.
11703         (extendsidi2): Use "move_type" instead of "type", with "move"
11704         for the register alternative.
11705         (*extend<SHORT:mode><GPR:mode>2_mips16e): Use "move_type" instead
11706         of "type", with "signext" for the register alternative.
11707         (*extend<SHORT:mode><GPR:mode>2_se<SHORT:size>): Likewise.
11708         (*extendqihi2_mips16e, *extendqihi2_seb): Likewise.
11709         (fix_truncdfsi2_insn, fix_truncsfsi2_insn, fix_truncdfdi2)
11710         (fix_truncsfdi2, floatsidf2, floatdidf2, floatsisf2, floatdisf2)
11711         (floatdisf2, *branch_equality<mode>_mips16): Likewise.
11712         (unnamed branch insn): Likewise.
11713         (*movdi_gp32_fp64): Fold into...
11714         (*movdi_32bit): ...here.
11715         (*movdf_hardfloat_64bit, *movdf_hardfloat_32bit): Combine into...
11716         (*movdf_hardfloat): ...this new pattern.
11717         (*movdf_softfloat): Remove redundant FPR alternatives.
11718         (*movti, *movti_mips16, *movtf, *movtf_mips16): Add "mode" attributes.
11719         (*movv2sf_hardfloat_64bit, *movv2sf_hardfloat_32bit): Combine into...
11720         (*movv2sf): ...this new pattern.  Use "DF" rather than "SF" for
11721         the "move" attribute.
11722         (*movdi_32bit): Use "move_type" instead of "type" and remove the
11723         "length" attribute.  Use "fpload" and "fpstore" instead of "load"
11724         and "store" for COP loads and stores.
11725         (*movdi_32bit_mips16, *movdi_64bit, *movsi_internal, movcc)
11726         (*movhi_internal, *movhi_mips16, *movqi_internal, *movqi_mips16)
11727         (*movsf_hardfloat, *movsf_softfloat, *movsi_mips16, *movdf_hardfloat)
11728         (*movdf_softfloat, *movdf_mips16, *movti, *movti_mips16, *movtf)
11729         (*movtf_mips16, *movv2sf): Likewise.
11730         (mfhi<GPR:mode>_<HILO:mode>, mflo<GPR:mode>_<HILO:mode>)
11731         (load_low<mode>, load_high<mode>, store_word<mode>, mthc1<mode>)
11732         (mfhc1<mode>): Use "move_type" instead of "move".
11733         (*low<mode>_mips16): Use "extended_mips16" instead of "length".
11734         (loadgp_blockage): Remove the "length" attribute.
11735         (blockage, set_got_version, update_got_version): Likewise.
11736         (call_internal): Remove the "extended_mips16" attribute.
11737         (call_value_internal, call_value_multiple_internal): Likewise.
11738         * config/mips/loongson.md (mov<mode>_internal): Use "move_type"
11739         instead of "move".
11740         * config/mips/mips-dsp.md (mips_lbux, mips_lhx, mips_lwx): Remove
11741         the "length" attribute.
11742
11743 2008-06-27  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
11744
11745         * c-format.c (handle_format_attribute): Fix -Wc++-compat and/or
11746         -Wcast-qual warnings.
11747         * c-pragma.c (dpm_eq, handle_pragma_push_macro,
11748         handle_pragma_pop_macro): Likewise.
11749         * collect2.c (resolve_lib_name): Likewise.
11750         * config/arc/arc.c (arc_init): Likewise.
11751         * config/arm/arm.c (neon_builtin_compare,
11752         locate_neon_builtin_icode): Likewise.
11753         * config/arm/pe.c (arm_mark_dllexport, arm_pe_unique_section): Likewise.
11754         * config/bfin/bfin.c (bfin_init_machine_status,
11755         bfin_optimize_loop): Likewise.
11756         * config/bfin/bfin.h (TARGET_CPU_CPP_BUILTINS): Likewise.
11757         * config/cris/cris.c (cris_init_expanders): Likewise.
11758         * config/darwin-c.c (frameworks_in_use, add_framework): Likewise.
11759         * config/darwin.c (machopic_indirection_eq,
11760         machopic_indirection_name, machopic_output_indirection): Likewise.
11761         * config/frv/frv.c (frv_init_machine_status, frv_compare_insns,
11762         frv_io_check_address, frv_io_handle_set, frv_io_handle_use_1,
11763         frv_optimize_membar): Likewise.
11764         * config/i386/cygwin.h (mingw_scan,
11765         GCC_DRIVER_HOST_INITIALIZATION): Likewise.
11766         * config/i386/cygwin1.c (mingw_scan): Likewise.
11767         * config/i386/i386.c (machopic_output_stub): Likewise.
11768         * config/i386/winnt.c (gen_stdcall_or_fastcall_suffix,
11769         i386_pe_unique_section): Likewise.
11770         * config/ia64/ia64.c (ia64_init_machine_status,
11771         ia64_h_i_d_extended, get_free_bundle_state, bundling, ia64_reorg):
11772         Likewise.
11773         * config/iq2000/iq2000.c, iq2000_init_machine_status): Likewise.
11774         * config/m68hc11/m68hc11.c (m68hc11_encode_label): Likewise.
11775         * config/m68k/m68k.c (m68k_handle_option,
11776         m68k_sched_md_init_global): Likewise.
11777         * config/mcore/mcore.c (mcore_mark_dllexport, mcore_mark_dllimport,
11778         mcore_unique_section): Likewise.
11779         * config/mips/mips.c (mips_block_move_straight,
11780         mips16_rewrite_pool_refs, mips_sim_wait_regs_2, mips_sim_record_set):
11781         Likewise.
11782         * config/mmix/mmix.c (mmix_init_machine_status,
11783         mmix_encode_section_info): Likewise.
11784         * config/pa/pa.c (pa_init_machine_status, hppa_encode_label): Likewise.
11785         * config/rs6000/rs6000.c (rs6000_init_machine_status,
11786         print_operand_address, output_toc, redefine_groups,
11787         rs6000_elf_encode_section_info, machopic_output_stub): Likewise.
11788         * config/s390/s390.c (s390_init_machine_status): Likewise.
11789         * config/score/score.c (score_block_move_straight,
11790         score_block_move_loop_body): Likewise.
11791         * config/sparc/sparc.c (sparc_init_machine_status): Likewise.
11792         * config/xtensa/xtensa.c (xtensa_init_machine_status): Likewise.
11793         * emit-rtl.c (find_auto_inc): Likewise.
11794         * gcc.c (translate_options, process_command): Likewise.
11795         * reorg.c (dbr_schedule): Likewise.
11796         * sdbout.c (sdbout_start_source_file, sdbout_init): Likewise.
11797         * xcoffout.c (xcoffout_declare_function): Likewise.
11798
11799 2008-06-27  Daniel Berlin  <dberlin@dberlin.org>
11800
11801         * tree-ssa-structalias.c (find_func_aliases): Trivial fix to get
11802         ipa-pta working again.
11803
11804 2008-06-27  David Edelsohn  <edelsohn@gnu.org>
11805
11806         * config/rs6000/t-aix52: Append large data option to LDFLAGS for
11807         genautomata.
11808
11809 2008-06-27  Edmar Wienskoski  <edmar@freescale.com>
11810
11811         * config.gcc (powerpc*-*-*): Add new core e500mc.
11812         * config/rs6000/e500mc.md: New file.
11813         * config/rs6000/rs6000.c (processor_costs): Add new costs for
11814         e500mc.
11815         (rs6000_override_options): Add e500mc case to
11816         processor_target_table. Altivec and Spe options not allowed
11817         with e500mc. Add isel instruction to e500mc by
11818         default. Initialize rs6000_cost for e500mc.
11819         (rs6000_issue_rate): Set issue rate for e500mc.
11820         * config/rs6000/rs6000.h (processor_type): Add
11821         PROCESSOR_PPCE500MC.
11822         (ASM_CPU_SPEC): Add e500mc.
11823         Set TARGET_ISEL to rs6000_isel.
11824         * config/rs6000/e500.h: Remove redefinition of TARGET_ISEL.
11825         (CHECK_E500_OPTIONS): Remove TARGET_ISEL.
11826         * config/rs6000/rs6000.md (define_attr "cpu"): Add ppce500mc.
11827         Include e500mc.md.
11828         * doc/invoke.texi: Add e500mc to list of cpus.
11829
11830 2008-06-27  Laurynas Biveinis  <laurynas.biveinis@gmail.com>
11831
11832         PR c/34867
11833         * c-lex.c (lex_charconst): Initialize unsignedp.
11834
11835 2008-06-27  Olivier Hainque  <hainque@adacore.com>
11836
11837         * gimplify.c (gimplify_modify_expr_to_memset): Assert our
11838         documented assumptions.
11839
11840 2008-06-26  H.J. Lu  <hongjiu.lu@intel.com>
11841
11842         * dwarf2out.c: Remove trailing white spaces.  Break long line
11843         in comments.
11844
11845 2008-06-26  Richard Sandiford  <rdsandiford@googlemail.com>
11846
11847         * libfuncs.h (LTI_synchronize): New libfunc_index.
11848         (synchronize_libfunc): Declare.
11849         * builtins.c (expand_builtin_synchronize): Consider using
11850         synchronize_libfunc before falling back on an asm blockage.
11851         * config/mips/mips.c: Include libfuncs.h
11852         (mips_init_libfuncs): Initialize synchronize_libfunc for TARGET_MIPS16.
11853
11854 2008-06-26  Nathan Froyd  <froydnj@codesourcery.com>
11855
11856         * config/rs6000/rs6000.c (emit_allocate_stack): Add copy_r11
11857         parameter.  Copy stack_reg to r11 where appropriate.
11858         (no_global_regs_above): Add gpr parameter.
11859         (rs6000_stack_info): Only add padding for SPE save area if we
11860         are saving SPE GPRs and CR.
11861         (saveres_routine_syms): New variable.
11862         (FIRST_SAVRES_REGISTER, LAST_SAVRES_REGISTER, N_SAVRES_REGISTERS):
11863         Define.
11864         (rs6000_savres_routine_sym): New function.
11865         (rs6000_emit_stack_reset, rs6000_restore_saved_cr): New functions,
11866         split out of...
11867         (rs6000_emit_epilogue): ...here.  Use rs6000_use_multiple_p and
11868         rs6000_savres_strategy.  Restore GPRs out-of-line if appropriate.
11869         Tweak FPR out-of-line saving.
11870         (rs6000_make_savres_rtx): New function.
11871         (rs6000_use_multiple_p): New function.
11872         (rs6000_savres_strategy): New function.
11873         (rs6000_emit_prologue): Use rs6000_savres_strategy.  Save GPRs
11874         out-of-line if appropriate.
11875         * config/rs6000/sysv4.h (FP_SAVE_INLINE): Save FPRs out-of-line
11876         if we are optimizing for size.
11877         (GP_SAVE_INLINE): Define.
11878         (SAVE_FP_SUFFIX, RESTORE_FP_SUFFIX): Only use _l on 64-bit targets.
11879         * config/rs6000/darwin.h (GP_SAVE_INLINE): Define.
11880         * config/rs6000/aix.h (GP_SAVE_INLINE): Define.
11881         * config/rs6000/rs6000.md (*save_gpregs_<mode>): New insn.
11882         (*save_fpregs_<mode>): Add use of r11.
11883         (*restore_gpregs_<mode>): New insn.
11884         (*return_and_restore_gpregs_<mode>): New insn.
11885         (*return_and_restore_fpregs_<mode>): Adjust to clobber LR and
11886         use r11.
11887         * config/rs6000/spe.md (*save_gpregs_spe): New insn.
11888         (*restore_gpregs_spe): New insn.
11889         (*return_and_restore_gpregs_spe): New insn.
11890         * config/rs6000/predicates.md (save_world_operation): Fix check.
11891
11892 2008-06-26  Steven Bosscher  <steven@gcc.gnu.org>
11893
11894         * tree-into-ssa (insert_phi_nodes_for): 'var' must be a DECL at
11895         this point, so assert that.
11896
11897 2008-06-26  Steven Bosscher  <steven@gcc.gnu.org>
11898
11899         * cfganal.c: Include vec.h and vecprim.h.
11900         (compute_idf): Import from...
11901         * tree-into-ssa (compute_idf): ...here.
11902         * basic-block.h (compute_idf): Export.
11903
11904 2008-06-26  Joseph Myers  <joseph@codesourcery.com>
11905
11906         * c-decl.c (merge_decls): Use !current_function_decl to check for
11907         extern declaration of C99 inline function being at file scope.
11908
11909 2008-06-25  John David Anglin  <dave.anglin@gcc-cnrc.gc.ca>
11910
11911         * config.gcc (hppa[12]*-*-hpux10*): Don't use fixproto.
11912
11913 2008-06-25  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
11914
11915         * alias.c (record_alias_subset, init_alias_analysis): Fix
11916         -Wc++-compat and/or -Wcast-qual warnings.
11917         * attribs.c (lookup_attribute_spec): Likewise.
11918         * bb-reorder.c (find_traces, rotate_loop, find_traces_1_round,
11919         copy_bb, connect_traces,
11920         find_rarely_executed_basic_blocks_and_cr): Likewise.
11921         * bt-load.c (find_btr_def_group, add_btr_def, new_btr_user,
11922         note_btr_set, migrate_btr_defs): Likewise.
11923         * builtins.c (result_vector, expand_builtin_memcpy,
11924         expand_builtin_mempcpy_args, expand_builtin_strncpy,
11925         builtin_memset_read_str, expand_builtin_printf,
11926         fold_builtin_memchr, rewrite_call_expr, fold_builtin_printf):
11927         Likewise.
11928         * caller-save.c (mark_set_regs): Likewise.
11929         * calls.c (expand_call, emit_library_call_value_1): Likewise.
11930         * cgraph.c (cgraph_edge): Likewise.
11931         * combine.c (likely_spilled_retval_1): Likewise.
11932         * coverage.c (htab_counts_entry_hash, htab_counts_entry_eq,
11933         htab_counts_entry_del, get_coverage_counts): Likewise.
11934         * cselib.c (new_elt_list, new_elt_loc_list, entry_and_rtx_equal_p,
11935         new_cselib_val): Likewise.
11936         * dbgcnt.c (dbg_cnt_process_opt): Likewise.
11937         * dbxout.c (dbxout_init, dbxout_type, output_used_types_helper):
11938         Likewise.
11939         * df-core.c (df_compact_blocks): Likewise.
11940         * df-problems.c (df_grow_bb_info, df_chain_create): Likewise.
11941         * df-scan.c (df_grow_reg_info, df_ref_create,
11942         df_insn_create_insn_record, df_insn_rescan, df_notes_rescan,
11943         df_ref_compare, df_ref_create_structure, df_bb_refs_record,
11944         df_record_entry_block_defs, df_record_exit_block_uses,
11945         df_bb_verify): Likewise.
11946         * df.h (DF_REF_EXTRACT_WIDTH_CONST, DF_REF_EXTRACT_OFFSET_CONST,
11947         DF_REF_EXTRACT_MODE_CONST): New.
11948         * dominance.c (get_immediate_dominator, get_dominated_by,
11949         nearest_common_dominator, root_of_dom_tree,
11950         iterate_fix_dominators, first_dom_son, next_dom_son): Fix
11951         -Wc++-compat and/or -Wcast-qual warnings.
11952         * dse.c (clear_alias_set_lookup, get_group_info, gen_rtx_MEM,
11953         record_store, replace_read, check_mem_read_rtx, scan_insn,
11954         dse_step1, dse_record_singleton_alias_set): Likewise.
11955         * dwarf2asm.c (dw2_force_const_mem): Likewise.
11956
11957 2008-06-25  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
11958
11959         * dwarf2out.c (new_cfi, queue_reg_save, dwarf2out_begin_prologue,
11960         dwarf2out_frame_init, new_loc_descr, new_die, lookup_decl_die,
11961         lookup_decl_loc, add_var_loc_to_decl, compute_section_prefix,
11962         assign_symbol_names, htab_cu_hash, htab_cu_eq, htab_cu_del,
11963         build_abbrev_table, new_loc_list, output_comp_unit, add_arange,
11964         add_ranges_num, add_ranges_by_labels, file_info_cmp,
11965         file_name_acquire, output_file_names, add_const_value_attribute,
11966         premark_used_types_helper, file_table_eq, file_table_hash,
11967         lookup_filename, dwarf2out_var_location, dwarf2out_source_line,
11968         dwarf2out_init, file_table_relative_p): Fix -Wc++-compat and/or
11969         -Wcast-qual warnings.
11970         * ebitmap.c (ebitmap_array_grow, ebitmap_array_init,
11971         ebitmap_alloc, ebitmap_ior, ebitmap_and_compl): Likewise.
11972         * emit-rtl.c (get_mem_attrs, get_reg_attrs, gen_rtvec,
11973         gen_reg_rtx, start_sequence, init_emit): Likewise.
11974         * et-forest.c (et_new_occ, et_new_tree): Likewise.
11975         * except.c (init_eh_for_function, gen_eh_region,
11976         remove_unreachable_regions, add_ehl_entry, duplicate_eh_regions_1,
11977         arh_to_landing_pad, arh_to_label, add_action_record,
11978         add_call_site, switch_to_exception_section): Likewise.
11979         * expmed.c (synth_mult): Likewise.
11980         * expr.c (gen_group_rtx, emit_group_load, emit_group_store,
11981         store_expr): Likewise.
11982         * final.c (shorten_branches, final_scan_insn, debug_queue_symbol):
11983         Likewise.
11984         * function.c (assign_stack_temp_for_type,
11985         allocate_struct_function, match_asm_constraints_1): Likewise.
11986         * gcov-io.c (gcov_allocate): Likewise.
11987         * gcse.c (GNEW, GCNEW, GNEWVEC, GCNEWVEC, GRESIZEVEC, GNEWVAR,
11988         GCNEWVAR, GRESIZEVAR, GOBNEW, GOBNEWVAR): New.
11989         (gcse_main, alloc_gcse_mem, alloc_gcse_mem, alloc_reg_set_mem,
11990         record_one_set, insert_expr_in_table, insert_set_in_table,
11991         dump_hash_table, compute_hash_table_work, alloc_hash_table,
11992         pre_ldst_expr_hash, pre_ldst_expr_eq, find_rtx_in_ldst,
11993         reg_set_info, reg_clear_last_set): Fix -Wc++-compat and/or
11994         -Wcast-qual warnings.
11995
11996 2008-06-25  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
11997
11998         * cse.c (approx_reg_cost_1, cse_insn): Fix -Wc++-compat and/or
11999         -Wcast-qual warnings.
12000         * gcc.c (process_command): Likewise.
12001         * genattrtab.c (oballoc): Use XOBNEW.
12002         (oballocvec): Define.
12003         (attr_hash_add_rtx, attr_hash_add_string, attr_string,
12004         get_attr_value, fill_attr, make_length_attrs, gen_attr, gen_insn,
12005         gen_delay, find_attr, gen_insn_reserv, gen_bypass_1): Fix
12006         -Wc++-compat and/or -Wcast-qual warnings.
12007         * genautomata.c (XCREATENODE, XCREATENODEVEC, XCREATENODEVAR,
12008         XCOPYNODE, XCOPYNODEVEC, XCOPYNODEVAR): New.
12009         (gen_cpu_unit, gen_query_cpu_unit, gen_bypass, gen_excl_set,
12010         gen_presence_absence_set, gen_automaton, gen_regexp_el,
12011         gen_regexp_repeat, gen_regexp_allof, gen_regexp_oneof,
12012         gen_regexp_sequence, gen_reserv, gen_insn_reserv, process_excls,
12013         add_excls, process_presence_absence_names,
12014         process_presence_absence_patterns, add_presence_absence,
12015         process_regexp, add_advance_cycle_insn_decl, get_free_alt_state,
12016         get_free_state, add_arc, get_free_automata_list_el,
12017         form_reserv_sets_list, copy_insn_regexp, transform_1, transform_2,
12018         transform_3, cache_presence, create_ainsns, create_automata,
12019         create_state_ainsn_table, dfa_insn_code_enlarge,
12020         output_trans_func, output_min_issue_delay_func,
12021         output_dead_lock_func, output_reset_func,
12022         output_get_cpu_unit_code_func, output_dfa_start_func,
12023         expand_automata): Likewise.
12024         * genextract.c (gen_insn): Likewise.
12025         * gengtype-lex.l: Likewise.
12026         * gengtype.c (read_input_list, adjust_field_type,
12027         process_gc_options): Likewise.
12028         * genoutput.c (note_constraint): Likewise.
12029         * genpreds.c (mangle, add_constraint): Likewise.
12030         * genrecog.c (process_define_predicate, new_decision,
12031         add_to_sequence): Likewise.
12032         * gensupport.c (record_insn_name): Likewise.
12033
12034 2008-06-25  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
12035
12036         * config/i386/driver-i386.c (detect_caches_amd,
12037         detect_caches_intel, host_detect_local_cpu): Fix -Wc++-compat
12038         and/or -Wcast-qual warnings.
12039         *ggc-common.c (ggc_mark_roots, gt_pch_note_object,
12040         gt_pch_note_reorder, relocate_ptrs, write_pch_globals,
12041         gt_pch_save): Likewise.
12042         * ggc-page.c (push_depth, push_by_depth, alloc_anon, alloc_page,
12043         gt_ggc_m_S, clear_marks, ggc_pch_read): Likewise.
12044         * global.c (compute_regsets): Likewise.
12045         * graph.c (print_rtl_graph_with_bb, clean_graph_dump_file,
12046         finish_graph_dump_file): Likewise.
12047         * haifa-sched.c (schedule_block, extend_h_i_d, extend_ready,
12048         unlink_bb_notes): Likewise.
12049         * integrate.c (get_hard_reg_initial_val): Likewise.
12050         * ipa-prop.c (ipa_push_func_to_list): Likewise.
12051         * ipa-struct-reorg.c (gen_var_name, gen_cluster_name): Likewise.
12052         * local-alloc.c (update_equiv_regs): Likewise.
12053         * loop-invariant.c (check_invariant_table_size,
12054         hash_invariant_expr, eq_invariant_expr, find_or_insert_inv):
12055         Likewise.
12056         * loop-iv.c (check_iv_ref_table_size, analyzed_for_bivness_p,
12057         altered_reg_used, mark_altered): Likewise.
12058         * loop-unroll.c (si_info_eq, ve_info_eq, allocate_basic_variable,
12059         insert_var_expansion_initialization,
12060         combine_var_copies_in_loop_exit, apply_opt_in_copies,
12061         release_var_copies): Likewise.
12062         * matrix-reorg.c (mat_acc_phi_hash, mat_acc_phi_eq, mtt_info_eq,
12063         analyze_matrix_decl, add_allocation_site, analyze_transpose,
12064         analyze_accesses_for_phi_node, check_var_notmodified_p,
12065         check_allocation_function, find_sites_in_func,
12066         record_all_accesses_in_func, transform_access_sites,
12067         transform_allocation_sites): Likewise.
12068         * omp-low.c (new_omp_region, create_omp_child_function_name,
12069         check_omp_nesting_restrictions, check_combined_parallel,
12070         lower_omp_2, diagnose_sb_1, diagnose_sb_2): Likewise.
12071         * optabs.c (no_conflict_move_test, gen_libfunc, gen_fp_libfunc,
12072         gen_intv_fp_libfunc, gen_interclass_conv_libfunc,
12073         gen_intraclass_conv_libfunc, set_optab_libfunc, set_conv_libfunc):
12074         Likewise.
12075         * opts-common.c (prune_options): Likewise.
12076         * opts.c (add_input_filename, print_filtered_help,
12077         get_option_state): Likewise.
12078         * params.c (add_params): Likewise.
12079         * passes.c (set_pass_for_id, next_pass_1,
12080         do_per_function_toporder, pass_fini_dump_file): Likewise.
12081         * postreload.c (reload_cse_simplify_operands): Likewise.
12082         * predict.c (tree_predicted_by_p, tree_predict_edge,
12083         clear_bb_predictions, combine_predictions_for_bb): Likewise.
12084
12085 2008-06-25  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
12086
12087         * ra.h (add_neighbor): Fix -Wc++-compat and/or -Wcast-qual
12088         warnings.
12089         * recog.c (check_asm_operands, validate_change_1): Likewise.
12090         * reg-stack.c (check_asm_stack_operands, subst_asm_stack_regs,
12091         subst_asm_stack_regs): Likewise.
12092         * regclass.c (regclass, som_hash, som_eq, record_subregs_of_mode,
12093         cannot_change_mode_set_regs, invalid_mode_change_p): Likewise.
12094         * regmove.c (reg_is_remote_constant_p): Likewise.
12095         * regrename.c (regrename_optimize, scan_rtx_reg,
12096         kill_clobbered_value, kill_set_value, kill_autoinc_value):
12097         Likewise.
12098         * regstat.c (regstat_init_n_sets_and_refs, regstat_compute_ri,
12099         regstat_compute_calls_crossed): Likewise.
12100         * reload1.c (init_reload, new_insn_chain,
12101         has_nonexceptional_receiver, reload, copy_reloads,
12102         calculate_needs_all_insns, init_elim_table): Likewise.
12103         * rtl-factoring.c (compute_rtx_cost, fill_hash_bucket): Likewise.
12104         * rtl.c (shallow_copy_rtx_stat): Likewise.
12105         * rtlanal.c (parms_set): Likewise.
12106         * sbitmap.c (sbitmap_alloc, sbitmap_alloc_with_popcount,
12107         sbitmap_resize, sbitmap_vector_alloc): Likewise.
12108         * sched-ebb.c (earliest_block_with_similiar_load,
12109         add_deps_for_risky_insns): Likewise.
12110         * sched-rgn.c (find_rgns, gather_region_statistics, extend_rgns,
12111         schedule_region): Likewise.
12112         * see.c (eq_descriptor_pre_extension,
12113         hash_descriptor_pre_extension, hash_del_pre_extension,
12114         eq_descriptor_properties, hash_descriptor_properties,
12115         hash_del_properties, see_seek_pre_extension_expr,
12116         see_initialize_data_structures, see_print_register_properties,
12117         see_print_pre_extension_expr, see_delete_merged_def_extension,
12118         see_delete_unmerged_def_extension, see_emit_use_extension,
12119         see_pre_delete_extension, see_map_extension, see_commit_changes,
12120         see_analyze_merged_def_local_prop,
12121         see_analyze_merged_def_local_prop,
12122         see_analyze_unmerged_def_local_prop, see_analyze_use_local_prop,
12123         see_set_prop_merged_def, see_set_prop_unmerged_def,
12124         see_set_prop_unmerged_use, see_print_one_extension,
12125         see_merge_one_use_extension, see_merge_one_def_extension,
12126         see_store_reference_and_extension, see_update_uses_relevancy,
12127         see_update_defs_relevancy): Likewise.
12128         * statistics.c (hash_statistics_hash, hash_statistics_eq,
12129         hash_statistics_free, curr_statistics_hash): Likewise.
12130         * stmt.c (parse_output_constraint, decl_overlaps_hard_reg_set_p,
12131         expand_asm_operands, expand_return, case_bit_test_cmp,
12132         expand_case): Likewise.
12133         * stor-layout.c (start_record_layout): Likewise.
12134         * stringpool.c (ggc_alloc_string, gt_pch_n_S,
12135         gt_pch_save_stringpool): Likewise.
12136         * tree-data-ref.c (hash_stmt_vertex_info,
12137         have_similar_memory_accesses_1, ref_base_address_1): Likewise.
12138         * tree-ssa-phiopt.c (name_to_bb_hash): Likewise.
12139
12140 2008-06-25  Uros Bizjak  <ubizjak@gmail.com>
12141
12142         PR target/36627
12143         * config/i386/i386.md : Change constraints of HImode and QImode
12144         immediate operands from "i" to "n".  Change SImode "ni" constraint to
12145         "i" and SImode "rmi" constraint to "g".  Remove all constraints
12146         from const0_operand and const1_operand predicated operands.
12147         (i): Change QImode and HImode attribute from "i" to "n".
12148         (*subqi_2): Change HImode operands to QImode.
12149         (*subqi_3): Ditto.
12150
12151 2008-06-25  Olivier Hainque  <hainque@adacore.com>
12152
12153         * Makefile.in (GTFILES_H): Use | instead of ; as separator in
12154         sed substitutions.
12155
12156 2008-06-25  Richard Guenther  <rguenther@suse.de>
12157
12158         * tree-ssa-structalias.c (fieldoff_compare): Make sure to
12159         not overflow the result type.
12160
12161 2008-06-25  Richard Guenther  <rguenther@suse.de>
12162
12163         * tree-vn.c (vn_add): Handle TRUTH_*_EXPR.
12164         (vn_lookup): Likewise.
12165
12166 2008-06-25  Richard Guenther  <rguenther@suse.de>
12167
12168         PR tree-optimization/35518
12169         * fold-const.c (fold_ternary): Strip trivial BIT_FIELD_REFs.
12170         * tree-sra.c (instantiate_element): Use fold_build3 to build
12171         BIT_FIELD_REFs.
12172         (try_instantiate_multiple_fields): Likewise.
12173
12174 2008-06-24  Andrew Pinski  <andrew_pinski@playstation.sony.com>
12175
12176         * config/rs6000/rs6000.md: Change all string instruction's clobber to
12177         be early clobbers.
12178
12179 2008-06-24  Andrew Pinski  <andrew_pinski@playstation.sony.com>
12180
12181         * config/rs6000/rs6000.c (rs6000_emit_epilogue): Set
12182         use_backchain_to_restore_sp to true
12183         if the offset of the link register save area would go over the 32k - 1
12184         offset limit of the load
12185         instructions.
12186
12187 2008-06-25  Hans-Peter Nilsson  <hp@axis.com>
12188
12189         * doc/invoke.texi (Optimize Options) <fstrict-aliasing>: Add
12190         anchor for the type-punning blurb.  Cross-reference "Structures
12191         unions enumerations and bit-fields implementation".  Provide a
12192         cast-through-pointer example.  Make final sentence self-contained.
12193         * doc/implement-c.texi (Structures unions enumerations and
12194         bit-fields implementation): Cross-reference the type-punning blurb
12195         in the -fstrict-aliasing documentation.
12196
12197 2008-06-24  Andrew Pinski  <andrew_pinski@playstation.sony.com>
12198
12199         PR middle-end/36594
12200         * builtins.c (expand_builtin_nonlocal_goto): Stabilize the address of
12201         the memory instead of the memory itself for the save area.
12202
12203 2008-06-24  Olivier Hainque  <hainque@adacore.com>
12204             Nicolas Roche  <roche@adacore.com>
12205
12206         * gengtype.c (srcdir_len): size_t instead of int.
12207         (get_file_realbasename): New function.  For F a filename, the real
12208         basename of F, with all the path components stripped.
12209         (get_file_srcdir_relative_path): New function.  For F a filename, the
12210         relative path to F from $(srcdir).
12211         (get_file_basename): Rewrite using get_file_srcdir_relative_path and
12212         get_file_realbasename.  Adjust the head comment.
12213         (get_prefix_langdir_index): New function. For F a filename, return the
12214         lang_dir_names[] relative index of the language directory that is
12215         a prefix in F.
12216         (get_file_langdir): For F a filename, return the name of the language
12217         directory where F is located.
12218         (get_file_gtfilename): New function. The gt- output file name for an
12219         input filename F.
12220         (get_output_file_with_visibility): Replace in-line computations with
12221         uses of get_file_gtfilename and get_prefix_langdir_index.
12222         * Makefile.in (GTFILES_H): Adjust to match what gengtype generates.
12223
12224 2008-06-24  Jakub Jelinek  <jakub@redhat.com>
12225
12226         PR tree-optimization/36504
12227         * tree-ssa-loop-prefetch.c (gather_memory_references_ref): Skip
12228         references without base address.
12229
12230 2008-06-23  Uros Bizjak  <ubizjak@gmail.com>
12231
12232         PR middle-end/36584
12233         * calls.c (expand_call): Increase alignment for recursive functions.
12234
12235 2008-06-23  Anatoly Sokolov  <aesok@post.ru>
12236
12237         * config/avr/avr.c (avr_function_value): Add new 'outgoing' argument.
12238         (TARGET_FUNCTION_VALUE): New define.
12239         * config/avr/avr-protos.h (avr_function_value): Remove declaration.
12240         * config/avr/avr.h (FUNCTION_VALUE): Remove.
12241
12242 2008-06-23  Uros Bizjak  <ubizjak@gmail.com>
12243
12244         * config/i386/i386.md (fmodxf3): Change sequence of move instructions.
12245         (fmod<mode>3): Ditto.
12246         (remainderxf3): Ditto.
12247         (remainder<mode>3): Ditto.
12248
12249 2008-06-23  Jakub Jelinek  <jakub@redhat.com>
12250
12251         PR target/36533
12252         * emit-rtl.c (set_reg_attrs_from_value): Do nothing if
12253         REG is a hard register.
12254
12255         PR tree-optimization/36508
12256         * tree-ssa-pre.c (compute_antic): Allow num_iterations up to
12257         499, don't check it at all in release compilers.
12258
12259 2008-06-23  Uros Bizjak  <ubizjak@gmail.com>
12260
12261         * config/i386/i386.md (*fop_<mode>_1_i387): Use SSE_FLOAT_MODE_P
12262         together with SSE_TARGET_MATH to disable insn pattern.
12263         (*fop_<MODEF:mode>_2_i387): Ditto.
12264         (*fop_<MODEF:mode>_3_i387): Ditto.
12265
12266 2008-06-22  Andy Hutchinson  <hutchinsonandy@aim.com>
12267
12268         * config/avr/avr.h (SUPPORTS_INIT_PRIORITY): Define.
12269
12270 2008-06-22  Laurynas Biveinis  <laurynas.biveinis@gmail.com>
12271
12272         PR middle-end/34906
12273         * gimplify.c (gimplify_asm_expr): Check the return code of
12274         parse_output_constraint call, set function return and is_inout
12275         value if it failed.
12276
12277 2008-06-22  Ian Lance Taylor  <iant@google.com>
12278
12279         * c-lex.c (narrowest_unsigned_type): Change itk to int.
12280         (narrowest_signed_type): Likewise.
12281         * c-typeck.c (c_common_type): Change local variable mclass to enum
12282         mode_class, twice.
12283         (parser_build_binary_op): Compare the TREE_CODE_CLASS with
12284         tcc_comparison, not the tree code itself.
12285         * c-common.c (def_fn_type): Pass int, not an enum, to va_arg.
12286         (c_expand_expr): Cast modifier to enum expand_modifier.
12287         * c-common.h (C_RID_CODE): Add casts.
12288         (C_SET_RID_CODE): Define.
12289         * c-parser.c (c_parse_init): Use C_SET_RID_CODE.
12290         (c_lex_one_token): Add cast to avoid warning.
12291         (c_parser_objc_type_name): Rename local typename to type_name.
12292         (check_no_duplicate_clause): Change code parameter to enum
12293         omp_clause_code.
12294         (c_parser_omp_var_list_parens): Change kind parameter to enum
12295         omp_clause_code.
12296         (c_parser_omp_flush): Pass OMP_CLAUSE_ERROR, not 0, to
12297         c_parser_omp_list_var_parens.
12298         (c_parser_omp_threadprivate): Likewise.
12299         * cp/lex.c (init_reswords): Use C_SET_RID_CODE.
12300         * cp/parser.c (cp_lexer_get_preprocessor_token): Likewise.
12301         * c-format.c (NO_FMT): Define.
12302         (printf_length_specs): Use NO_FMT.
12303         (asm_fprintf_length_specs): Likewise.
12304         (gcc_diag_length_specs): Likewise.
12305         (scanf_length_specs): Likewise.
12306         (strfmon_length_specs): Likewise.
12307         (gcc_gfc_length_specs): Likewise.
12308         (printf_flag_specs): Change 0 to STD_C89.
12309         (asm_fprintf_flag_specs): Likewise.
12310         (gcc_diag_flag_specs): Likewise.
12311         (gcc_cxxdiag_flag_specs): Likewise.
12312         (scanf_flag_specs): Likewise.
12313         (strftime_flag_specs): Likewise.
12314         (strfmon_flag_specs): Likewise.
12315         (print_char_table): Likewise.
12316         (asm_fprintf_char_table): Likewise.
12317         (gcc_diag_char_table): Likewise.
12318         (gcc_tdiag_char_table): Likewise.
12319         (gcc_cdiag_char_table): Likewise.
12320         (gcc_cxxdiag_char_table): Likewise.
12321         (gcc_gfc_char_table): Likewise.
12322         (scan_char_table): Likewise.
12323         (time_char_table): Likewis.
12324         (monetary_char_table): Likewise.
12325         * c-format.h (BADLEN): Likewise.
12326
12327 2008-06-21  Ian Lance Taylor  <iant@google.com>
12328
12329         * tree.h (enum tree_code): Include all-tree.def, not tree.def.
12330         Define END_OF_BASE_TREE_CODES around inclusion.
12331         * tree.c (tree_code_type): New global array.
12332         (tree_code_length, tree_code_name): Likewise.
12333         * Makefile.in (TREE_H): Add all-tree.def, c-common.def, and
12334         $(lang_tree_files).
12335         (all-tree.def, s-alltree): New targets.
12336         (gencheck.h, s-gencheck): Remove.
12337         (tree.o): Depend upon all-tree.def.
12338         (build/gencheck.o): Remove gencheck.h dependency.
12339         (mostlyclean): Don't remove gencheck.h.
12340         * c-common.h (enum c_tree_code): Remove.
12341         * c-lang.c (tree_code_type): Remove.
12342         (tree_code_length, tree_code_name): Remove.
12343         * gencheck.c (tree_codes): Include all-tree.def, rather than
12344         tree.def, c-common.def, and gencheck.h.  Undefined DEFTREECODE
12345         after it is used.
12346         * tree-browser.c (tb_tree_codes): Include all-tree.def, rather
12347         than tree.def.
12348         * cp/cp-tree.h (enum cplus_tree_code): Remove.
12349         (operator_name_info): Size to MAX_TREE_CODES.
12350         (assignment_operator_name_info): Likewise.
12351         * cp/cp-lang.c (tree_code_type): Remove.
12352         (tree_code_length, tree_code_name): Remove.
12353         * cp/lex.c (operator_name_info): Size to MAX_TREE_CODES.
12354         (assignment_operator_name_info): Likewise.
12355         * cp/decl.c (grok_op_properties): Change LAST_CPLUS_TREE_CODE to
12356         MAX_TREE_CODES.
12357         * cp/mangle.c (write_expression): Likewise.
12358         * cp/Make-lang.in (CXX_TREE_H): Remove cp/cp-tree.def.
12359         * fortran/f95-lang.c (tree_code_type): Remove.
12360         (tree_code_length, tree_code_name): Remove.
12361         * java/java-tree.h (enum java_tree_code): Remove.
12362         * java/lang.c (tree_code_type): Remove.
12363         (tree_code_length, tree_code_name): Remove.
12364         * java/Make-lang.in (JAVA_TREE_H): Remove java/java-tree.def.
12365         * objc/objc-act.h (enum objc_tree_code): Remove.
12366         * objc/objc-lang.c (tree_code_type): Remove.
12367         (tree_code_length, tree_code_name): Remove.
12368         * objcp/objcp-lang.c (tree_code_type): Remove.
12369         (tree_code_length, tree_code_name): Remove.
12370         * ada/ada-tree.h (enum gnat_tree_code): Remove.
12371         * ada/Make-lang.in (ADA_TREE_H): Remove ada/ada-tre.def.
12372         * ada/misc.c (tree_code_type): Remove.
12373         (tree_code_length, tree_code_name): Remove.
12374
12375 2008-06-21  Bernhard Fischer  <aldot@gcc.gnu.org>
12376
12377         * tree-ssa-pre.c (fini_antic): Bitmap_sets have to be freed before
12378         the grand_bitmap_obstack.
12379
12380 2008-06-20  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
12381
12382         * ggc.h (GGC_RESIZEVAR): New, reorder macros.
12383         * tracer.c (tail_duplicate): Fix for -Wc++-compat.
12384         * tree-affine.c (aff_combination_expand, free_name_expansion): Likewise.
12385         * tree-cfg.c (replace_by_duplicate_decl, replace_ssa_name,
12386         move_stmt_r, new_label_mapper): Likewise.
12387         * tree-complex.c (cvc_lookup): Likewise.
12388         * tree-dfa.c (create_function_ann): Likewise.
12389         * tree-dump.c (dump_register): Likewise.
12390         * tree-if-conv.c (tree_if_conversion, add_to_predicate_list,
12391         find_phi_replacement_condition): Likewise.
12392         * tree-inline.c (copy_phis_for_bb, estimate_num_insns_1,
12393         tree_function_versioning): Likewise.
12394         * tree-into-ssa.c (cmp_dfsnum): Likewise.
12395         * tree-iterator.c (tsi_link_before, tsi_link_after): Likewise.
12396         * tree-nested.c (lookup_field_for_decl, lookup_tramp_for_decl,
12397         get_nonlocal_debug_decl, convert_nonlocal_reference,
12398         convert_nonlocal_omp_clauses, get_local_debug_decl,
12399         convert_local_reference, convert_local_omp_clauses,
12400         convert_nl_goto_reference, convert_nl_goto_receiver,
12401         convert_tramp_reference, convert_call_expr): Likewise.
12402         * tree-outof-ssa.c (contains_tree_r): Likewise.
12403         * tree-parloops.c (reduction_phi, initialize_reductions,
12404         eliminate_local_variables_1, add_field_for_reduction,
12405         add_field_for_name, create_phi_for_local_result,
12406         create_call_for_reduction_1, create_loads_for_reductions,
12407         create_stores_for_reduction, create_loads_and_stores_for_name):
12408         Likewise.
12409         * tree-phinodes.c (allocate_phi_node): Likewise.
12410         * tree-predcom.c (order_drefs, execute_pred_commoning_cbck): Likewise.
12411         * tree-sra.c (sra_elt_hash, sra_elt_eq, lookup_element): Likewise.
12412         * tree-ssa-alias.c (get_mem_sym_stats_for): Likewise.
12413         * tree-ssa-coalesce.c (compare_pairs): Likewise.
12414         * tree-ssa-loop-im.c (mem_ref_in_stmt, memref_hash, memref_eq,
12415         memref_free, gather_mem_refs_stmt, vtoe_hash, vtoe_eq, vtoe_free,
12416         record_vop_access, get_vop_accesses, get_vop_stores): Likewise.
12417         * tree-ssa-loop-prefetch.c (determine_loop_nest_reuse): Likewise.
12418         * tree-ssa-sccvn.c (VN_INFO_GET, free_phi, free_reference,
12419         vn_nary_op_insert): Likewise.
12420         * tree-ssa.c (redirect_edge_var_map_add,
12421         redirect_edge_var_map_clear, redirect_edge_var_map_dup): Likewise.
12422         * tree-vectorizer.c (vectorize_loops): Likewise.
12423         * tree.c (make_node_stat, copy_node_stat, build_int_cst_wide,
12424         build_fixed, build_real, make_tree_binfo_stat, make_tree_vec_stat,
12425         tree_cons_stat, build1_stat, build_variant_type_copy,
12426         decl_init_priority_lookup, decl_fini_priority_lookup,
12427         decl_priority_info, decl_restrict_base_lookup,
12428         decl_restrict_base_insert, decl_debug_expr_lookup,
12429         decl_debug_expr_insert, decl_value_expr_lookup,
12430         decl_value_expr_insert, type_hash_eq, type_hash_lookup,
12431         type_hash_add, get_file_function_name, tree_check_failed,
12432         tree_not_check_failed, tree_range_check_failed,
12433         omp_clause_range_check_failed, build_omp_clause,
12434         build_vl_exp_stat): Likewise.
12435         * value-prof.c (gimple_histogram_value,
12436         gimple_duplicate_stmt_histograms): Likewise.
12437         * var-tracking.c (attrs_list_insert, attrs_list_copy,
12438         unshare_variable, variable_union_info_cmp_pos, variable_union,
12439         dataflow_set_different_1, dataflow_set_different_2,
12440         vt_find_locations, variable_was_changed, set_variable_part,
12441         emit_notes_for_differences_1, emit_notes_for_differences_2): Likewise.
12442         * varasm.c (prefix_name, emutls_decl, section_entry_eq,
12443         section_entry_hash, object_block_entry_eq,
12444         object_block_entry_hash, create_block_symbol,
12445         initialize_cold_section_name, default_function_rodata_section,
12446         strip_reg_name, set_user_assembler_name, const_desc_eq,
12447         build_constant_desc, output_constant_def, lookup_constant_def,
12448         const_desc_rtx_hash, const_desc_rtx_eq, const_rtx_hash_1,
12449         create_constant_pool, force_const_mem, compute_reloc_for_rtx_1,
12450         default_internal_label): Likewise.
12451         * varray.c (varray_init, varray_grow): Likewise.
12452         * vec.c (vec_gc_o_reserve_1, vec_heap_o_reserve_1): Likewise.
12453
12454 2008-06-20  Uros Bizjak  <ubizjak@gmail.com>
12455
12456         * config/i386/i386.md (*jcc_fused_1): Handle all valid compare
12457         operators for "test" insn.  Macroize insn using SWI mode macro.
12458         (*jcc_fused_2): Ditto.
12459         (*jcc_fused_3): Macroize insn using SWI mode macro.
12460         (*jcc_fused_4): Ditto.
12461
12462 2008-06-20  Bernhard Fischer  <aldot@gcc.gnu.org>
12463
12464         * tree-ssa-pre.c: Fix typo in comment.
12465         (init_antic, fini_antic): Add explicit funtions for
12466         initializing and deinitializing ANTIC and AVAIL sets.
12467         (create_expression_by_pieces): Fix typo in comment.
12468         Remove redundant set of new_stuff and use NULL_TREE instead of NULL.
12469         (execute_pre): Eventually dump details about ANTIC_IN.
12470
12471 2008-06-19  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
12472
12473         * collect2.c (main, add_to_list): Fix for -Wc++-compat.
12474         * gcc.c (translate_options, init_spec, store_arg, read_specs,
12475         add_to_obstack, file_at_path, find_a_file, execute,
12476         add_preprocessor_option, add_assembler_option, add_linker_option,
12477         process_command, insert_wrapper, do_option_spec, do_self_spec,
12478         spec_path, do_spec_1, is_directory, main, used_arg,
12479         getenv_spec_function): Likewise.
12480         * tlink.c (symbol_hash_lookup, file_hash_lookup,
12481         demangled_hash_lookup, symbol_push, file_push, frob_extension):
12482         Likewise.
12483
12484 2008-06-19  Kenneth Zadeck <zadeck@naturalbridge.com>
12485
12486         * doc/rtl.texi: Updated subreg section.
12487
12488 2008-06-19  Jakub Jelinek  <jakub@redhat.com>
12489
12490         PR c++/36523
12491         * cgraphunit.c (cgraph_process_new_functions): Don't clear
12492         node->needed and node->reachable.
12493         * cgraphbuild.c (record_reference): Handle OMP_PARALLEL and OMP_TASK.
12494         * omp-low.c (delete_omp_context): Call finalize_task_copyfn.
12495         (expand_task_call): Don't call expand_task_copyfn.
12496         (expand_task_copyfn): Renamed to...
12497         (finalize_task_copyfn): ... this.
12498
12499 2008-06-19  Jan Hubicka  <jh@suse.cz>
12500
12501         * builtins.c (expand_builtin_nonlocal_goto): Stabilize r_sp before
12502         clobbering framepointer.
12503
12504 2008-06-19  Jan Hubicka  <jh@suse.cz>
12505
12506         * tree-optimize.c (execute_early_local_optimizations): Set
12507         cgraph_state only at first invocation.
12508
12509 2008-06-19  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
12510
12511         * system.h (-Wc++-compat): Activate as a warning, no an error.
12512
12513 2008-06-19  Uros Bizjak  <ubizjak@gmail.com>
12514
12515         * config/i386/i386.md (*jcc_fused_1): Use ASM_COMMENT_START
12516         instead of "#" in insn asm template.
12517         (*jcc_fused_2): Ditto.
12518
12519 2008-06-19  Uros Bizjak  <ubizjak@gmail.com>
12520
12521         * config/i386/i386.h (ix86_tune_indices)
12522         [X86_TUNE_FUSE_CMP_AND_BRANCH]: New.
12523         (TARGET_FUSE_CMP_AND_BRANCH): New define.
12524         * config/i386/i386.md (*jcc_fused_1): New insn pattern
12525         (*jcc_fused_2): Ditto.
12526         * config/i386/i386.c (ix86_tune_features): Add m_CORE2 to
12527         X86_TUNE_FUSE_CMP_AND_BRANCH targets.
12528         (print operand): Handle 'E' and 'e' code.
12529
12530 2008-06-19  Anatoly Sokolov  <aesok@post.ru>
12531
12532         * config/avr/avr.c (avr_mcu_t): Add attiny13a.
12533         * config/avr/avr.h (LINK_SPEC, CRT_BINUTILS_SPECS): (Ditto.).
12534         * config/avr/t-avr (MULTILIB_MATCHES): (Ditto.).
12535
12536 2008-06-19  Bernhard Fischer  <aldot@gcc.gnu.org>
12537
12538         * cgraphunit.c (cgraph_finalize_function): Remove redundant setting of
12539         node->decl.
12540         (cgraph_expand_function): Use local copy of decl.
12541         (cgraph_expand_all_functions): Remove redundant initialization of
12542         order_pos.
12543         (cgraph_optimize): Reword internal_error message.
12544
12545 2008-06-19  Chung-Lin Tang  <ctang@marvell.com>
12546
12547         * arm-protos.h (arm_return_in_memory): Remove public
12548         arm_return_in_memory() prototype.
12549         * arm.c (arm_return_in_memory): Add static prototype, add target
12550         hook macro, change definition and comments.
12551         * arm.h (TARGET_RETURN_IN_MEMORY): Remove.
12552
12553 2008-06-19  Ben Elliston  <bje@au.ibm.com>
12554
12555         * dfp.h, dfp.c, config/dfp-bit.h, config/dfp-bit.c, real.h,
12556         real.c: Remove references to IEEE 754R.
12557         * doc/install.texi (Configuration): IEEE 754R -> IEEE 754-2008.
12558         * doc/libgcc.texi (Decimal float library routines): Likewise.
12559
12560 2008-06-18  Ulrich Weigand  <Ulrich.Weigand@de.ibm.com>
12561
12562         * targhooks.h (struct gcc_target): New member unwind_word_mode.
12563         (default_unwind_word_mode): Add prototype.
12564         * targhooks.c (default_unwind_word_mode): New function.
12565         (default_eh_return_filter_mode): Return targetm.unwind_word_mode ()
12566         instead of word_mode.
12567         * target-def.h (TARGET_UNWIND_WORD_MODE): New macro.
12568         (TARGET_INITIALIZER): Use it.
12569
12570         * c-common.c (handle_mode_attribute): Support "unwind_word"
12571         mode attribute.
12572         * unwind-generic.h (_Unwind_Word, _Unwind_Sword): Use it.
12573
12574         * except.c (init_eh): Use targetm.unwind_word_mode () instead of
12575         word_mode to access SjLj_Function_Context member "data".
12576         (sjlj_emit_dispatch_table): Likewise.  Also, perform type
12577         conversion from targetm.eh_return_filter_mode () to
12578         targetm.unwind_word_mode () if they differ.
12579
12580         * builtin-types.def (BT_UNWINDWORD): New primitive type.
12581         (BT_FN_UNWINDWORD_PTR): New function type.
12582         (BT_FN_WORD_PTR): Remove.
12583         * builtins.def (BUILT_IN_EXTEND_POINTER): Use BT_FN_UNWINDWORD_PTR.
12584         * except.c (expand_builtin_extend_pointer): Convert pointer to
12585         targetm.unwind_word_mode () instead of word_mode.
12586
12587         * config/spu/spu-protos.h (spu_eh_return_filter_mode): Remove.
12588         * config/spu/spu.c (spu_eh_return_filter_mode): Remove.
12589         (spu_unwind_word_mode): New function.
12590         (TARGET_EH_RETURN_FILTER_MODE): Do not define.
12591         (TARGET_UNWIND_WORD_MODE): Define.
12592         * config/spu/t-spu-elf (TARGET_LIBGCC2_CFLAGS): Remove -D__word__=SI.
12593
12594 2008-06-18  Ulrich Weigand  <Ulrich.Weigand@de.ibm.com>
12595
12596         * config/spu/spu.c (reg_align): Remove.
12597         (regno_aligned_for_load): Also accept ARG_POINTER_REGNUM.
12598         (spu_split_load): Use regno_aligned_for_load instead of reg_align.
12599         (spu_split_store): Likewise.
12600
12601 2008-06-18  Bernhard Fischer  <aldot@gcc.gnu.org>
12602
12603         * gcc/tree-vn.c: Fix typo in comment.
12604
12605 2008-06-18  Jan Hubicka  <jh@suse.cz>
12606
12607         * cgraphunit.c (cgraph_optimize): Output debug info when doing
12608         toplevel reorder too.
12609
12610 2008-06-18  Jan Hubicka  <jh@suse.cz>
12611
12612         * c-opts.c (c_common_post_options): PCH is not compatible with
12613         no-unit-at-a-time.
12614         * opts.c (handle_options): Enable unit-at-a-time at O0 along with
12615         -fno-toplevel-reorder by default now.
12616
12617 2008-06-18  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
12618
12619         PR documentation/30739
12620         * doc/install.texi (Prerequisites): Document dependency on awk.
12621
12622 2008-06-18  Uros Bizjak  <ubizjak@gmail.com>
12623             Ian Lance Taylor  <iant@google.com>
12624
12625         PR rtl-optimization/35604
12626         * jump.c (redirect_exp_1): Skip the condition of an IF_THEN_ELSE. We
12627         only want to change jump destinations, not eventual label comparisons.
12628
12629 2008-06-16  Jan Hubicka  <jh@suse.cz>
12630
12631         * cgraphunit.c (cgraph_expand_pending_functions): Give up at
12632         syntax errors.
12633         (cgraph_analyze_function): Likewise.
12634
12635 2008-06-16  Jan Hubicka  <jh@suse.cz>
12636
12637         * cgraph.h (cgraph_mark_if_needed): New function.
12638         * cgraphunit.c (cgraph_mark_if_needed): New function.
12639         * c-decl.c (duplicate_decl): Use it.
12640
12641 2008-06-16  Jan Hubicka  <jh@suse.cz>
12642
12643         * cgraph.c (cgraph_add_new_function): When in expansion state, do
12644         lowering.
12645
12646 2008-06-16  Jan Hubicka  <jh@suse.cz>
12647
12648         * tree-outof-ssa.c (pass_out_of_ssa): Do not depend on PROP_alias.
12649
12650 2008-06-16  Daniel Jacobowitz  <dan@codesourcery.com>
12651             Kazu Hirata  <kazu@codesourcery.com>
12652             Maxim Kuvyrkov  <maxim@codesourcery.com
12653
12654         * config.gcc (mips64el-st-linux-gnu): Use mips/st.h and mips/t-st.
12655         * config.host: Use driver-native.o and mips/x-native for mips*-linux*.
12656         * config/mips/linux.h (host_detect_local_cpu): Declare, add to
12657         EXTRA_SPEC_FUNCTIONS.
12658         (MARCH_MTUNE_NATIVE_SPECS, BASE_DRIVER_SELF_SPECS): New macros.
12659         (DRIVER_SELF_SPECS): Adjust.
12660         * config/mips/linux64.h (DRIVER_SELF_SPECS): Update.
12661         * config/mips/st.h, config/mips/t-st: New.
12662         * config/mips/driver-native.c, config/mips/x-native: New.
12663         * doc/invoke.texi (MIPS): Document 'native' value for -march and
12664         -mtune options.
12665
12666 2008-06-18  Maxim Kuvyrkov  <maxim@codesourcery.com>
12667
12668         * config/mips/mips.h (ISA_HAS_CONDMOVE): Slice ISA_HAS_FP_CONDMOVE
12669         from it.
12670         (ISA_HAS_FP_CONDMOVE): New macro.
12671         (ISA_HAS_FP_MADD4_MSUB4, ISA_HAS_FP_MADD3_MSUB3): New macros.
12672         (ISA_HAS_NMADD_NMSUB): Rename to ISA_HAS_NMADD4_NMSUB4.
12673         (ISA_HAS_NMADD3_NMSUB3): New macro.
12674         * config/mips/mips.c (mips_rtx_costs): Update.
12675         * config/mips/mips.md (MOVECC): Don't use FP conditional moves when
12676         compiling for ST Loongson 2E/2F.
12677         (madd<mode>): Rename to madd4<mode>.  Update.
12678         (madd3<mode>): New pattern.
12679         (msub<mode>): Rename to msub4<mode>.  Update.
12680         (msub3<mode>): New pattern.
12681         (nmadd<mode>): Rename to nmadd4<mode>.  Update.
12682         (nmadd3<mode>): New pattern.
12683         (nmadd<mode>_fastmath): Rename to nmadd4<mode>_fastmath.  Update.
12684         (nmadd3<mode>_fastmath): New pattern.
12685         (nmsub<mode>): Rename to nmsub4<mode>.  Update.
12686         (nmsub3<mode>): New pattern.
12687         (nmsub<mode>_fastmath): Rename to nmsub4<mode>_fastmath.  Update.
12688         (nmsub3<mode>_fastmath): New pattern.
12689         (mov<SCALARF:mode>_on_<MOVECC:mode>, mov<mode>cc): Update.
12690
12691 2008-06-18  Steven Bosscher  <steven@gcc.gnu.org>
12692
12693         * df.h (struct df_ref): Replace 'insn' field with 'insn_info' field.
12694         (DF_REF_INSN_INFO): New.
12695         (DF_REF_INSN, DF_REF_INSN_UID): Rewrite macros using DF_REF_INSN_INFO.
12696         (DF_REF_IS_ARTIFICIAL): Artificial refs are now identified as refs
12697         with a NULL DF_REF_INSN_INFO.
12698         (DF_INSN_INFO_GET, DF_INSN_INFO_SET): Renamed from DF_INSN_GET and
12699         DF_INSN_SET.
12700         (DF_INSN_INFO_LUID, DF_INSN_INFO_DEFS, DF_INSN_INFO_USES,
12701         DF_INSN_INFO_EQ_USES): New.
12702         (DF_INSN_LUID, DF_INSN_DEFS, DF_INSN_USES, DF_INSN_EQ_USES,
12703         DF_INSN_UID_LUID, DF_INSN_UID_DEFS, DF_INSN_UID_USES,
12704         DF_INSN_UID_EQ_USES): Rewrite using DF_INSN_INFO_* macros.
12705         * df-core.c: Update comment for above changes.
12706         (df_insn_debug_regno): Use DF_INSN_INFO_GET instead of INSN_UID and
12707         DF_INSN_UID_* macros.
12708         (df_ref_debug): Check for NULL DF_REF_INSN_INFO.
12709         * df-scan.c (df_ref_record): Take a df_insn_info instead of an
12710         insn rtx.  Update all callers.
12711         (df_def_record_1, df_defs_record, df_uses_record, df_get_call_refs,
12712         df_ref_create_structure, df_insn_refs_collect): Likewise.
12713         (df_ref_equal_p): Compare DF_REF_INSN_INFO pointers for the refs.
12714         * df-problems.c (df_chain_dump): Test for non-NULL DF_REF_INSN_INFO.
12715         (df_live_bb_local_compute): Retrieve DF_INSN_INFO, use DF_INSN_INFO_*
12716         macros to access the insn refs.
12717         (df_chain_top_dump, df_chain_bottom_dump, df_byte_lr_alloc): Likewise.
12718         * fwprop.c (use_killed_between): Use DF_REF_INSN accessor macro.
12719         (all_uses_available): Retrieve DF_INSN_INFO for def_insn, and use it
12720         for accessing the refs.
12721         (try_fwprop_subst): Likewise.
12722         * ddg.c (add_cross_iteration_register_deps): Use DF_REF_INSN macro.
12723         * web.c (union_defs): Retrieve DF_INSN_INFO for def_insn, and use it
12724         for accessing the refs.
12725         * loop-invariant.c (invariant_for_use): Use DF_REF_BB macro.
12726         (check_dependencies): Use DF_INSN_INFO_GET, use DF_INSN_INFO_* macros
12727         to look at the insn refs.
12728         (record_uses): Likewise.
12729         * dce.c (deletable_insn_p): Don't tolerate artificial DEFs in this
12730         function anymore.
12731         (mark_artificial_uses): Don't mark_insn for artificial refs.
12732         (mark_reg_rependencies): Likewise.
12733
12734         * doc/rtl.texi: Remove documentation of ADDRESSOF.
12735
12736 2008-06-17  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
12737
12738         * configure: Regenerate.
12739
12740 2008-06-17  Eric B. Weddington  <eric.weddington@atmel.com>
12741
12742         * config/avr/avr.c (avr_mcu_t): Remove atmega32hvb.
12743         * config/avr/avr.h (LINK_SPEC, CRT_BINUTILS_SPECS): Likewise.
12744         * config/avr/t-avr (MULTILIB_MATCHES): Likewise.
12745
12746 2008-06-17  Eric B. Weddington  <eric.weddington@atmel.com>
12747
12748         * config/avr/avr.c (avr_mcu_t): Add attiny167.
12749         * config/avr/avr.h (LINK_SPEC, CRT_BINUTILS_SPECS): Likewise.
12750         * gcc/config/avr/t-avr (MULTILIB_MATCHES): Likewise.
12751
12752 2008-06-17  Eric B. Weddington  <eric.weddington@atmel.com>
12753
12754         * config/avr/avr.c (avr_mcu_t): Add atmega32u4.
12755         * config/avr/avr.h (LINK_SPEC, CRT_BINUTILS_SPECS): Likewise.
12756         * config/avr/t-avr (MULTILIB_MATCHES): Likewise.
12757
12758 2008-06-17  Bernhard Fischer  <aldot@gcc.gnu.org>
12759
12760         * tree-ssa-sccvn.c: Fix format of comments.
12761
12762 2008-06-17  Bernhard Fischer  <aldot@gcc.gnu.org>
12763
12764         * cgraph.c: Remove unneeded forward declarations of eq_node()
12765         and hash_node().
12766
12767 2008-06-17  Steven Bosscher  <steven@gcc.gnu.org>
12768
12769         * see.c (see_analyse_one_def): Do not look for REG_LIBCALL and
12770         REG_RETVAL notes.
12771         (see_update_relevancy): Likewise.
12772         * fwprop.c (try_fwprop_subst): Likewise.
12773         * rtlanal.c (noop_move_p): Likewise.
12774         * builtins.c (expand_buitlin_mathfn): Don't try to add REG_EQUAL
12775         notes to non-existing libcall blocks.
12776         * cse.c (cse_insn): Change prototype.  Don't update libcall notes.
12777         Remove orig_set.
12778         (cse_extended_basic_block): Don't track libcall and no-conflict notes.
12779         (dead_libcall_p): Remove.
12780         (delete_trivially_dead_insns): Don't use it.
12781         * web.c (union_defs): Remove comment about keeping nops.
12782         * gcse.c (hash_scan_insn): Don't take libcall pointers.
12783         (compute_hash_table_work): Don't track libcall notes.
12784         (do_local_cprop): Don't take libcall pointers.  Don't update
12785         libcall notes.
12786         (adjust_libcall_notes): Deleted.
12787         (local_cprop_pass): Remove stack for nested libcalls (which shouldn't
12788         ever have existed in the first place).
12789         (replace_store_insn): Don't try to remove libcall notes.
12790         * lower-subreg.c (move_libcall_note, move_retval_note): Deleted.
12791         (resolve_reg_notes): Don't call them.
12792         (resolve_simple_move): Likewise.
12793         (decompose_multiword_subregs): Remove block handling REG_RETVAL notes.
12794         Don't remove REG_RETVAL notes.
12795         * emit-rtl.c (try_split): Don't update libcall notes.
12796         (emit_copy_of_insn_after): Dito.
12797         * cselib.c (cselib_current_insn_in_libcall): Remove.
12798         (cselib_process_insn): Don't set/clear it.
12799         (new_elt_loc_list): Don't record it.
12800         (cselib_init): Don't initialize it.
12801         * cselib.c (struct elt_loc_list): Remove in_libcall field.
12802         * loop-invariant.c (find_invariant_insn): Don't look for libcall
12803         notes.
12804         * sched-deps.c (sched_analyze_insn): Don't group libcall blocks.
12805         (sched_analyze): Don't set up deps->libcall_block_tail_insn.
12806         (init_deps): Don't initialize it.
12807         * sched-int.h (struct deps): Rremove libcall_block_tail_insn field.
12808         * combine.c (delete_noop_moves): Don't update libcall notes.
12809         (can_combine_p): Remove now pointless #if 0 block.
12810         (try_combine): Remove another obsolete #if 0 block.
12811         (distribute_notes): Don't distribute libcall notes.
12812         * reg-notes.def (REG_LIBCALL, REG_RETVAL): Remove.
12813         * dce.c (libcall_dead_p): Remove.
12814         (delete_unmarked_insns): Don't handle libcall blocks.
12815         (preserve_libcall_for_dce): Remove.
12816         (prescan_insns_for_dce): Don't special-case libcall block insns.
12817         * reload1 (reload): Don't handle libcall notes.
12818         * doc/rtl.texi (REG_LIBCALL, REG_RETVAL, REG_LIBCALL_ID): Remove
12819         documentation.
12820
12821 2008-06-16  Eric B. Weddington  <eric.weddington@atmel.com>
12822
12823         * config/avr/avr.c (avr_mcu_t): Add atmega32c1.
12824         * config/avr/avr.h (LINK_SPEC, CRT_BINUTILS_SPECS): Likewise.
12825         * config/avr/t-avr (MULTILIB_MATCHES): Likewise.
12826
12827 2008-06-16  Eric B. Weddington  <eric.weddington@atmel.com>
12828
12829         * config/avr/avr.c (avr_mcu_t): Add atmega32m1.
12830         * config/avr/avr.h (LINK_SPEC, CRT_BINUTILS_SPECS): Likewise.
12831         * config/avr/t-avr (MULTILIB_MATCHES): Likewise.
12832
12833 2008-06-16  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
12834
12835         * Makefile.in (FLAGS_TO_PASS): Add $(datarootdir).
12836
12837 2008-06-16  Ira Rosen  <irar@il.ibm.com>
12838
12839         PR tree-optimization/36493
12840         * tree-vect-transform.c (vect_create_data_ref_ptr): Remove TYPE from
12841         the arguments list. Use VECTYPE to create vector pointer.
12842         (vectorizable_store): Fail if accesses through a pointer to vectype
12843         do not alias the original memory reference operands.
12844         Call vect_create_data_ref_ptr without the removed argument.
12845         (vectorizable_load): Likewise.
12846         (vect_setup_realignment): Call vect_create_data_ref_ptr without the
12847         removed argument.
12848
12849 2008-06-015  Andy Hutchinson  <hutchinsonandy@aim.com>
12850
12851         PR target/36336
12852         * config/avr/avr.h (LEGITIMIZE_RELOAD_ADDRESS): Add check for
12853         reg_equiv_constant.
12854
12855 2008-06-15  Maxim Kuvyrkov  <maxim@codesourcery.com>
12856
12857         * config/mips/loongson2ef.md: New file.
12858         * config/mips/mips.md (UNSPEC_LOONGSON_ALU1_TURN_ENABLED_INSN)
12859         (UNSPEC_LOONGSON_ALU2_TURN_ENABLED_INSN)
12860         (UNSPEC_LOONGSON_FALU1_TURN_ENABLED_INSN)
12861         (UNSPEC_LOONGSON_FALU2_TURN_ENABLED_INSN): New constants.
12862         (define_attr "cpu"): Rename loongson2e and loongson2f to loongson_2e
12863         and loongson_2f.
12864         (loongson2ef.md): New include.
12865         * config/mips/loongson.md (vec_pack_ssat_<mode>, vec_pack_usat_<mode>)
12866         (add<mode>3, paddd, ssadd<mode>3, usadd<mode>3)
12867         (loongson_and_not_<mode>, loongson_average_<mode>, loongson_eq_<mode>)
12868         (loongson_gt_<mode>, loongson_extract_halfword)
12869         (loongson_insert_halfword_0, loongson_insert_halfword_2)
12870         (loongson_insert_halfword_3, loongson_mult_add, smax<mode>3)
12871         (umax<mode>3, smin<mode>3, umin<mode>3, loongson_move_byte_mask)
12872         (umul<mode>3_highpart, smul<mode>3_highpart, loongson_smul_lowpart)
12873         (loongson_umul_word, loongson_pasubub, reduc_uplus_<mode>)
12874         (loongson_psadbh, loongson_pshufh, loongson_psll<mode>)
12875         (loongson_psra<mode>, loongson_psrl<mode>, sub<mode>3, psubd)
12876         (sssub<mode>3, ussub<mode>3, vec_interleave_high<mode>)
12877         (vec_interleave_low<mode>): Define type attribute.
12878         * config/mips/mips.c (mips_ls2): New static variable.
12879         (mips_issue_rate): Update to handle tuning for Loongson 2E/2F.
12880         (mips_ls2_init_dfa_post_cycle_insn, mips_init_dfa_post_cycle_insn)
12881         (sched_ls2_dfa_post_advance_cycle, mips_dfa_post_advance_cycle):
12882         Implement target scheduling hooks.
12883         (mips_multipass_dfa_lookahead): Update to handle tuning for
12884         Loongson 2E/2F.
12885         (mips_sched_init): Initialize data for Loongson scheduling.
12886         (mips_ls2_variable_issue): New static function.
12887         (mips_variable_issue): Update to handle tuning for Loongson 2E/2F.
12888         Add sanity check.
12889         (TARGET_SCHED_INIT_DFA_POST_CYCLE_INSN)
12890         (TARGET_SCHED_DFA_POST_ADVANCE_CYCLE): Override target hooks.
12891         * config/mips/mips.h (TUNE_LOONGSON_2EF): New macros.
12892         (ISA_HAS_XFER_DELAY, ISA_HAS_FCMP_DELAY, ISA_HAS_HILO_INTERLOCKS):
12893         Handle ST Loongson 2E/2F cores.
12894         (CPU_UNITS_QUERY): Define macro to enable querying of DFA units.
12895
12896 2008-06-15  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
12897
12898         * omp-low.c (extract_omp_for_data): Fix comment typo.
12899         * c.opt: Fix typo.
12900
12901 2008-06-15  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
12902
12903         * doc/sourcebuild.texi (Config Fragments): Remove obsolete
12904         FIXME note about gcc/config.guess.
12905         * doc/options.texi (Option file format): Remove non-ASCII bytes.
12906         * doc/cpp.texi: Expand TABs, drop indentation outside examples.
12907         * doc/cppopts.texi: Likewise.
12908         * doc/extend.texi: Likewise.
12909         * doc/gcc.texi: Likewise.
12910         * doc/gccint.texi: Likewise.
12911         * doc/gcov.texi: Likewise.
12912         * doc/gty.texi: Likewise.
12913         * doc/hostconfig.texi: Likewise.
12914         * doc/install.texi: Likewise.
12915         * doc/invoke.texi: Likewise.
12916         * doc/loop.texi: Likewise.
12917         * doc/makefile.texi: Likewise.
12918         * doc/md.texi: Likewise.
12919         * doc/passes.texi: Likewise.
12920         * doc/tm.texi: Likewise.
12921         * doc/tree-ssa.texi: Likewise.
12922         * doc/trouble.texi: Likewise.
12923
12924 2008-06-15  Mark Shinwell  <shinwell@codesourcery.com>
12925             Nathan Sidwell  <nathan@codesourcery.com>
12926             Maxim Kuvyrkov  <maxim@codesourcery.com>
12927             Richard Sandiford  <rdsandiford@googlemail.com>
12928
12929         * config/mips/mips-modes.def: Add V8QI, V4HI and V2SI modes.
12930         * config/mips/mips-protos.h (mips_expand_vector_init): New.
12931         * config/mips/mips-ftypes.def: Add function types for Loongson-2E/2F
12932         builtins.
12933         * config/mips/mips.c (mips_split_doubleword_move): Handle new modes.
12934         (mips_hard_regno_mode_ok_p): Allow 64-bit vector modes for Loongson.
12935         (mips_vector_mode_supported_p): Add V2SImode, V4HImode and
12936         V8QImode cases.
12937         (LOONGSON_BUILTIN, LOONGSON_BUILTIN_ALIAS): New.
12938         (CODE_FOR_loongson_packsswh, CODE_FOR_loongson_packsshb,
12939         (CODE_FOR_loongson_packushb, CODE_FOR_loongson_paddw,
12940         (CODE_FOR_loongson_paddh, CODE_FOR_loongson_paddb,
12941         (CODE_FOR_loongson_paddsh, CODE_FOR_loongson_paddsb)
12942         (CODE_FOR_loongson_paddush, CODE_FOR_loongson_paddusb)
12943         (CODE_FOR_loongson_pmaxsh, CODE_FOR_loongson_pmaxub)
12944         (CODE_FOR_loongson_pminsh, CODE_FOR_loongson_pminub)
12945         (CODE_FOR_loongson_pmulhuh, CODE_FOR_loongson_pmulhh)
12946         (CODE_FOR_loongson_biadd, CODE_FOR_loongson_psubw)
12947         (CODE_FOR_loongson_psubh, CODE_FOR_loongson_psubb)
12948         (CODE_FOR_loongson_psubsh, CODE_FOR_loongson_psubsb)
12949         (CODE_FOR_loongson_psubush, CODE_FOR_loongson_psubusb)
12950         (CODE_FOR_loongson_punpckhbh, CODE_FOR_loongson_punpckhhw)
12951         (CODE_FOR_loongson_punpckhwd, CODE_FOR_loongson_punpcklbh)
12952         (CODE_FOR_loongson_punpcklhw, CODE_FOR_loongson_punpcklwd): New.
12953         (mips_builtins): Add Loongson builtins.
12954         (mips_loongson_2ef_bdesc): New.
12955         (mips_bdesc_arrays): Add mips_loongson_2ef_bdesc.
12956         (mips_builtin_vector_type): Handle unsigned versions of vector modes.
12957         (MIPS_ATYPE_UQI, MIPS_ATYPE_UDI, MIPS_ATYPE_V2SI, MIPS_ATYPE_UV2SI)
12958         (MIPS_ATYPE_V4HI, MIPS_ATYPE_UV4HI, MIPS_ATYPE_V8QI, MIPS_ATYPE_UV8QI):
12959         New.
12960         (mips_expand_vector_init): New.
12961         * config/mips/mips.h (HAVE_LOONGSON_VECTOR_MODES): New.
12962         (TARGET_CPU_CPP_BUILTINS): Define __mips_loongson_vector_rev
12963         if appropriate.
12964         * config/mips/mips.md: Add unspec numbers for Loongson
12965         builtins.  Include loongson.md.
12966         (MOVE64): Include Loongson vector modes.
12967         (SPLITF): Include Loongson vector modes.
12968         (HALFMODE): Handle Loongson vector modes.
12969         * config/mips/loongson.md: New.
12970         * config/mips/loongson.h: New.
12971         * config.gcc: Add loongson.h header for mips*-*-* targets.
12972         * doc/extend.texi (MIPS Loongson Built-in Functions): New.
12973
12974 2008-06-14  Joseph Myers  <joseph@codesourcery.com>
12975
12976         * config.gcc (arc-*-elf*, avr-*-*, fr30-*-elf, frv-*-elf,
12977         h8300-*-elf*, h8300-*-*, i[34567]86-*-elf*, x86_64-*-elf*,
12978         i[34567]86-*-aout*, i[34567]86-*-coff*, ia64*-*-elf*,
12979         iq2000*-*-elf*, m32r-*-elf*, m32rle-*-elf*, m32r-*-linux*,
12980         m32rle-*-linux*, m68hc11-*-*|m6811-*-*, m68hc12-*-*|m6812-*-*,
12981         m68k-*-coff*, mcore-*-elf, mcore-*-pe*, mipsisa64sr71k-*-elf*,
12982         mipsisa64sb1-*-elf* | mipsisa64sb1el-*-elf*, mips-*-elf* |
12983         mipsel-*-elf*, mips64-*-elf* | mips64el-*-elf*, mips64vr-*-elf* |
12984         mips64vrel-*-elf*, mips64orion-*-elf* | mips64orionel-*-elf*,
12985         mipstx39-*-elf* | mipstx39el-*-elf*, mn10300-*-*, pdp11-*-,
12986         powerpc-*-elf*, powerpcle-*-elf*, sh-*-elf* | sh[12346l]*-*-elf* |
12987         sh-*-symbianelf* | sh[12346l]*-*-symbianelf* | sh-*-linux* |
12988         sh[2346lbe]*-*-linux* | sh-*-netbsdelf* | shl*-*-netbsdelf* |
12989         sh5-*-netbsd* | sh5l*-*-netbsd* | sh64-*-netbsd* |
12990         sh64l*-*-netbsd*, sh-*-*, sparc-*-elf*, sparc64-*-elf*,
12991         v850e1-*-*, v850e-*-*, v850-*-*, xstormy16-*-elf, m32c-*-elf*):
12992         Remove use_fixproto=yes.
12993         (ia64*-*-hpux*): Remove comment about using fixproto.
12994         (m68k-*-uclinuxoldabi*, m68k-*-uclinux*): Remove use_fixproto=no.
12995
12996 2008-06-14  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
12997
12998         * configure.ac: Update gthr-default.h lazily, to avoid unneeded
12999         library rebuilds.
13000         * configure: Regenerate.
13001
13002 2008-06-13  Eric Botcazou  <ebotcazou@adacore.com>
13003
13004         PR middle-end/36520
13005         * builtins.c (get_memory_rtx): Test for the presence of DECL_SIZE_UNIT
13006         before evaluating it.
13007
13008 2008-06-13  Jakub Jelinek  <jakub@redhat.com>
13009
13010         PR c/36507
13011         * c-decl.c (merge_decls): Don't clear DECL_EXTERNAL for
13012         nested inline functions.
13013         (start_decl, start_function): Don't invert DECL_EXTERNAL
13014         for nested inline functions.
13015
13016 2008-06-13  Richard Sandiford  <rdsandiford@googlemail.com>
13017
13018         * config/mips/mips.md: Remove TARGET_DEBUG_D_MODE conditions from
13019         splits that must be made for correctness.
13020
13021 2008-06-13  Richard Sandiford  <rdsandiford@googlemail.com>
13022
13023         * config/mips/mips.c (BUILTIN_AVAIL_NON_MIPS16): New macro.
13024         (AVAIL_NON_MIPS16): Likewise.
13025         (mips_builtin_description): Replace target_flags with a predicate.
13026         (paired_single, sb1_paired_single, mips3d, dsp, dspr2, dsp_32)
13027         (dspr2_32): New availability predicates.
13028         (MIPS_BUILTIN): New macro.
13029         (DIRECT_BUILTIN, CMP_SCALAR_BUILTINS, CMP_PS_BUILTINS)
13030         (CMP_4S_BUILTINS, MOVTF_BUILTINS, CMP_BUILTINS)
13031         (DIRECT_NO_TARGET_BUILTIN, BPOSGE_BUILTIN): Use it.
13032         Replace the TARGET_FLAGS parameters with AVAIL parameters.
13033         (mips_ps_bdesc, mips_sb1_bdesc, mips_dsp_bdesc)
13034         (mips_dsp_32only_bdesc): Merge into...
13035         (mips_builtins): ...this new array.
13036         (mips_bdesc_map, mips_bdesc_arrays): Delete.
13037         (mips_init_builtins): Update after above changes.
13038         (mips_expand_builtin_1): Merge into...
13039         (mips_expand_builtin): ...here and update after above changes.
13040
13041 2008-06-12  Paul Brook  <paul@codesourcery.com>
13042
13043         * longlong.h (__arm__): Define count_leading_zeros.
13044         * config/arm/lib1funcs.asm (xxh, xxl, yyh, yyl): Define.
13045         (clzsi2, clzdi2): New functions.
13046         * config/arm/bpabi-v6m.S (xxh, xxl, yyh, yyl): Remove.
13047         * config/arm/bpabi.S (xxh, xxl, yyh, yyl): Remove.
13048         * config/arm/t-strongarm-elf (LIB1ASMFUNCS): Ditto.
13049         * config/arm/t-vxworks (LIB1ASMFUNCS): Ditto.
13050         * config/arm/t-pe (LIB1ASMFUNCS): Ditto.
13051         * config/arm/t-arm-elf (LIB1ASMFUNCS): Ditto.
13052         * config/arm/t-arm-coff (LIB1ASMFUNCS): Ditto.
13053         * config/arm/t-linux (LIB1ASMFUNCS): Ditto.
13054         * config/arm/t-symbian (LIB1ASMFUNCS): Ditto.
13055         * config/arm/t-wince-pe (LIB1ASMFUNCS): Ditto.
13056
13057 2008-06-12  Kazu Hirata  <kazu@codesourcery.com>
13058
13059         * config/m68k/m68k.c (m68k_tune_flags): New.
13060         (override_options): Compute m68k_tune_flags.
13061         (MULL_COST, MULW_COST): Update for various variants of CFV2.
13062         * config/m68k/m68k.h (TUNE_MAC, TUNE_EMAC): New.
13063
13064 2008-06-12  Jakub Jelinek  <jakub@redhat.com>
13065
13066         PR middle-end/36506
13067         * omp-low.c (expand_omp_sections): Initialize l2 to avoid bogus warning.
13068
13069 2008-06-12  Eric Botcazou  <ebotcazou@adacore.com>
13070
13071         * tree-inline.c (copy_body_r): Copy TREE_SIDE_EFFECTS along with
13072         TREE_THIS_VOLATILE on INDIRECT_REF nodes.
13073
13074 2008-06-12  Eric Botcazou  <ebotcazou@adacore.com>
13075
13076         * expr.c (store_field): Do a block copy from BLKmode to BLKmode-like.
13077         (get_inner_reference): Use BLKmode for byte-aligned BLKmode bitfields.
13078
13079 2008-06-12  Jakub Jelinek  <jakub@redhat.com>
13080
13081         PR middle-end/36506
13082         * omp-low.c (expand_omp_sections): Handle #pragma omp sections with
13083         reductions.
13084
13085 2008-06-12  Richard Guenther  <rguenther@suse.de>
13086
13087         PR tree-optimization/36345
13088         * tree-flow.h (struct ptr_info_def): Align escape_mask,
13089         add memory_tag_needed flag.
13090         (may_alias_p): Declare.
13091         * tree-ssa-alias.c (may_alias_p): Export.
13092         (set_initial_properties): Use memory_tag_needed flag.
13093         (update_reference_counts): Likewise.
13094         (reset_alias_info): Reset memory_tag_needed flag.
13095         (create_name_tags): Check memory_tag_needed flag.
13096         (dump_points_to_info_for): Dump it.
13097         * tree-ssa-structalias.c (struct variable_info): Remove
13098         directly_dereferenced flag.
13099         (new_var_info): Do not initialize it.
13100         (process_constraint_1): Do not set it.
13101         (update_alias_info): Set is_dereferenced flag.
13102         (set_uids_in_ptset): Use may_alias_p.
13103         (set_used_smts): Check memory_tag_needed flag.
13104         (find_what_p_points_to): Likewise.  Pass is_dereferenced flag.
13105         * tree-ssa-alias.c (verify_flow_sensitive_alias_info): Check
13106         memory_tag_needed flag.
13107         * tree-ssa-alias-warnings.c (dsa_named_for): Try to recover
13108         from broken design.
13109
13110 2008-06-12  Kai Tietz  <kai.tietz@onevision.com>
13111
13112         * config/i386/i386.c (ix86_compute_frame_layout): Disable
13113         red zone for w64 abi.
13114         (ix86_expand_prologue): Likewise.
13115         (ix86_force_to_memory): Likewise.
13116         (ix86_free_from_memory): Likewise.
13117
13118 2008-06-11  Edmar Wienskoski  <edmar@freescale.com>
13119
13120         PR target/36425
13121         * config/rs6000/rs6000.c (rs6000_override_options): Set
13122         rs6000_isel conditionally to the absence of comand line override.
13123         * config/rs6000/linuxspe.h (SUBSUBTARGET_OVERRIDE_OPTIONS):
13124         Remove duplicate rs6000_isel setting.
13125         * config/rs6000/eabispe.h: Ditto.
13126
13127 2008-06-11  Richard Guenther  <rguenther@suse.de>
13128
13129         * alias.c (get_alias_set): Use the element alias-set for arrays.
13130         (record_component_aliases): For arrays and vectors do nothing.
13131         * c-common.c (strict_aliasing_warning): Handle the cases
13132         of alias set zero explicitly.
13133         * Makefile.in (dfp.o-warn): Add -Wno-error.
13134
13135 2008-06-11  Joseph Myers  <joseph@codesourcery.com>
13136
13137         * config.gcc (all_defaults): Add arch_32 arch_64 cpu_32 cpu_64
13138         tune_32 tune_64.
13139         (i[34567]86-*-* | x86_64-*-*): Add arch_32 arch_64 cpu_32 cpu_64
13140         tune_32 tune_64 to supported_defaults.  Allow values not
13141         supporting 64-bit mode for arch_32, cpu_32 and tune_32 for
13142         x86_64.  Do not override cpu_32 or cpu_64 values from target name.
13143         (i[34567]86-*-linux*, i[34567]86-*-solaris2.1[0-9]*): Only default
13144         with_cpu_64 to generic for 64-bit-supporting configurations, not
13145         with_cpu.  Remove FIXMEs.
13146         * doc/install.texi (--with-cpu-32, --with-cpu-64, --with-arch-32,
13147         --with-arch-64, --with-tune-32, --with-tune-64): Document.
13148         * config/i386/i386.h (OPT_ARCH32, OPT_ARCH64): Define.
13149         (OPTION_DEFAULT_SPECS): Add tune_32, tune_64, cpu_32, cpu_64,
13150         arch_32 and arch_64.
13151
13152 2008-06-11  Eric Botcazou  <ebotcazou@adacore.com>
13153             Olivier Hainque  <hainque@adacore.com>
13154
13155         * builtins.c (get_memory_rtx): Accept byte-addressable bitfields.
13156         Use DECL_SIZE_UNIT to retrieve the size of the field.
13157
13158 2008-06-11  Joseph Myers  <joseph@codesourcery.com>
13159
13160         * config/arm/arm.c (arm_init_neon_builtins): Move initialization
13161         with function calls after declarations.  Lay out
13162         neon_float_type_node before further use.
13163
13164 2008-06-11  Richard Guenther  <rguenther@suse.de>
13165
13166         * tree-flow.h (may_point_to_global_var): Declare.
13167         * tree-ssa-alias.c (may_point_to_global_var): New function.
13168         * tree-ssa-sink.c (is_hidden_global_store): Use it.
13169
13170 2008-06-10  Kazu Hirata  <kazu@codesourcery.com>
13171
13172         * configure.ac: Teach that fido supports .debug_line.
13173         * configure: Regenerate.
13174
13175 2008-06-10  Tom Tromey  <tromey@redhat.com>
13176
13177         * c-lex.c (fe_file_change): Pass SOURCE_LINE to start_source_file
13178         debug hook.
13179
13180 2008-06-10  Joseph Myers  <joseph@codesourcery.com>
13181
13182         * dfp.c (WORDS_BIGENDIAN): Define to 0 if not defined.
13183         (encode_decimal64, decode_decimal64, encode_decimal128,
13184         decode_decimal128): Reverse order of 32-bit parts of value if host
13185         and target endianness differ.
13186
13187 2008-06-10  Vinodha Ramasamy  <vinodha@google.com>
13188
13189         * value_prob.c (tree_divmod_fixed_value_transform): Use gcov_type.
13190         Avoid division by 0.
13191         (tree_mod_pow2_value_transform): Likewise.
13192         (tree_ic_transform): Likewise.
13193         (tree_stringops_transform): Likewise.
13194         (tree_mod_subtract_transform): Likewise.
13195         * tree-inline-c (copy_bb): Corrected int type to gcov_type.
13196         (copy_edges_for_bb): Likewise.
13197         (initialize_cfun): Likewise.
13198
13199 2008-06-10  Uros Bizjak  <ubizjak@gmail.com>
13200
13201         * config/i386/i386.md (*btdi_rex64): Change operand 1 predicate to
13202         nonmemory_operand. Add "N" operand constraint.
13203         (*btsi): Ditto.
13204         (*jcc_btdi_mask_rex64): New instruction and split pattern.
13205         (*jcc_btsi_mask): Ditto.
13206         (*jcc_btsi_mask_1): Ditto.
13207
13208 2008-06-10  Joseph Myers  <joseph@codesourcery.com>
13209
13210         * config/rs6000/rs6000.c (build_opaque_vector_type): Set
13211         TYPE_CANONICAL for copied element type.
13212
13213 2008-06-10  Uros Bizjak  <ubizjak@gmail.com>
13214
13215         PR target/36473
13216         * config/i386/i386.c (ix86_tune_features) [TUNE_USE_BT]:
13217         Add m_CORE2 and m_GENERIC.
13218         * config/i386/predicates.md (bt_comparison_operator): New predicate.
13219         * config/i386/i386.md (*btdi_rex64): New instruction pattern.
13220         (*btsi): Ditto.
13221         (*jcc_btdi_rex64): New instruction and split pattern.
13222         (*jcc_btsi): Ditto.
13223         (*jcc_btsi_1): Ditto.
13224         (*btsq): Fix Intel asm dialect operand order.
13225         (*btrq): Ditto.
13226         (*btcq): Ditto.
13227
13228 2008-06-09  Andy Hutchinson  <hutchinsonandy@aim.com>
13229
13230         PR middle-end/36447
13231         * simplify-rtx.c (simplify_subreg): Add check for shift count
13232         greater than size.
13233
13234 2008-06-09  Richard Sandiford  <rdsandiford@googlemail.com>
13235
13236         * doc/md.texi: Synchronize with later constraints.md change.
13237         * longlong.h (umul_ppmm): Replace the MIPS asm implementation
13238         with a C implementation.
13239         * config/mips/mips.c (mips_legitimize_move): Remove MFHI and
13240         MFLO handling.
13241         (mips_subword): Assume TImode for CONST_INTs if TARGET_64BIT.
13242         (mips_split_doubleword_move): Use special MTHI and MFHI instructions
13243         when moving to and from MD_REGNUM.
13244         (mips_output_move): Don't handle moves from GPRs to HI_REGNUM.
13245         Handle moves from LO_REGNUM to GPRs using MFLO, MACC or DMACC.
13246         Handle byte and halfword moves.
13247         (mips_hard_regno_mode_ok_p): Handle MD_REGS and DSP_ACC_REGS
13248         separately.
13249         * config/mips/constraints.md (h): Turn into NO_REGS.
13250         (l, x): Update documentation.
13251         * config/mips/mips.md (UNSPEC_MFHILO): Delete.
13252         (UNSPEC_MFHI, UNSPEC_MTHI, UNSPEC_SET_HILO): New.
13253         (UNSPEC_TLS_LDM, UNSPEC_TLS_GET_TP): Renumber.
13254         (HILO): New mode iterator.
13255         (MOVE128): Add TI.
13256         (any_div): New code iterator.
13257         (u): Extend code attribute to div and udiv.
13258         (*add<mode>3_mips16, *movdi_64bit_mips16, *movsi_mips16): Use
13259         d_operand in the splitters.  Remove redundant CONST_INT checks.
13260         (mulsi3_mult3, mul<mode>3_internal, mul<mode>3_r4000, *mul_acc_si)
13261         (*macc, *msac, *msac_using_macc, *macc2, *msac2, *mul_sub_si)
13262         (*muls): Remove "=h" clobbers.  Adjust peephole2s and define_splits
13263         accordingly, using normal moves instead of unspecs to move LO into
13264         a GPR.  Use d_operand and lo_operand instead of *_REG_P checks.
13265         (<u>mulsidi3): Handle expansion in C code.
13266         (<u>mulsidi3_32bit_internal): Rename to...
13267         (<u>mulsidi3_32bit): ...this.
13268         (<u>mulsidi3_32bit_r4000): Fix insn separator.
13269         (*<u>mulsidi3_64bit): Rename to...
13270         (<u>mulsidi3_64bit): ...this.  Combine DImode "=h" and "=l" clobbers
13271         into a TImode "=x" clobber.  In the split, use an UNSPEC_SET_HILO
13272         to set LO and HI to the multiplication result.  Use a normal move
13273         for MFLO and an unspec for MFHI.
13274         (*<u>mulsidi3_64bit_parts): Replace with...
13275         (<u>mulsidi3_64bit_hilo): ...this new instruction.
13276         (<su>mulsi3_highpart): Extend to TARGET_FIX_R4000.
13277         (<su>mulsi3_highpart_internal): Turn into a define_insn_and_split
13278         and extend it to TARGET_FIX_R4000.  Store the destination in a GPR
13279         instead of HI.  Split the instruction into a separate multiplication
13280         and MFHI if !TARGET_FIX_R4000.
13281         (<su>muldi3_highpart): Likewise.
13282         (<su>mulsi3_highpart_mulhi_internal): Remove the first alternative
13283         and the "=h" clobber.
13284         (*<su>mulsi3_highpart_neg_mulhi_internal): Likewise.
13285         (<u>mulditi3): New expander.
13286         (<u>mulditi3_internal, <u>mulditi3_r4000): New patterns.
13287         (madsi): Remove "=h" clobber.
13288         (divmod<mode>4, udivmod<mode>4): Turn into define_insn_and_splits.
13289         Force the modulus result to be a GPR and split the instruction into
13290         a division followed by an MFHI after reload.
13291         (<u>divmod<GPR:mode>4_hilo_<HILO:mode>): New instruction.
13292         (*lea_high64): Use d_operand in the define_peephole2.  Likewise
13293         the MIPS16 HIGH define_split.
13294         (*movdi_32bit, *movdi_gp32_fp64, *movdi_32bit_mips16): Change type
13295         of acc<->gpr moves to "multi".
13296         (*movdi_64bit): Replace the single "x" alternative with
13297         alternatives for moving into and out of "a".
13298         (*movhi_internal, *movqi_internal): Likewise.  Use mips_output_move.
13299         (*movsi_internal): Extend the "d<-A" alternative to "d<-a".
13300         (*movdi_64bit_mips16, *movsi_mips16): Add d<-a alternatives.
13301         Use d_operand in the splitters.  Remove redundant CONST_INT checks.
13302         (*movhi_mips16, *movqi_mips16): Likewise.  Use mips_output_move.
13303         (movti): New expander.
13304         (*movti, *movti_mips16): New insns.
13305         (mfhilo_<mode>, *mfhilo_<mode>, *mfhilo_<mode>_macc): Delete.
13306         (mfhi<GPR:mode>_<HILO:mode>): New pattern.
13307         (mthi<GPR:mode>_<HILO:mode>): Likewise.
13308         * config/mips/predicates.md (fpr_operand): Delete.
13309         (d_operand): New predicate.
13310
13311 2008-06-09  Michael Meissner  <michael.meissner@amd.com>
13312
13313         * config.gcc (i[34567]86-*-*): Put test in quotes to prevent
13314         failure on some Bourne shells.
13315         (x86_64-*-*): Ditto.
13316
13317 2008-06-09  Kai Tietz  <kai.tietz@onevision.com>
13318
13319         * config/i386/cygming.h (TARGET_SUBTARGET64_DEFAULT): New.
13320
13321 2008-06-09  Eric Botcazou  <ebotcazou@libertysurf.fr>
13322
13323         * doc/install.texi (*-*-solaris2*): Remove obsolete contents.
13324         (sparc-sun-solaris2*): Likewise.
13325
13326 2008-06-09  Arnaud Charlet  <charlet@adacore.com
13327
13328         * doc/install.texi: Update requirements to build the Ada compiler.
13329
13330 2008-06-08  Steven Bosscher  <stevenb.gcc@gmail.com>
13331
13332         * df-scan.c (struct df_scan_problem_data): Remove the
13333         mw_link_pool alloc pool.
13334         (df_scan_free_internal): Don't free it.
13335         (df_scan_alloc): Don't allocate it.
13336         * df.h (struct df_link): Update comment.
13337
13338 2008-06-08  Nathan Sidwell  <nathan@codesourcery.com>
13339
13340         * except.h: Correct checks for when SJLJ exceptions must be used.
13341
13342 2008-06-08  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
13343
13344         * doc/invoke.texi (Wenum-compare): Mention that it is enabled by
13345         default.
13346
13347 2008-06-08  Joseph Myers  <joseph@codesourcery.com>
13348
13349         PR tree-optimization/36218
13350         * configure.ac: Use LDFLAGS="${LDFLAGS_FOR_BUILD}" when running
13351         configure for the build system.
13352         (BUILD_LDFLAGS): Define.
13353         * configure: Regenerate.
13354         * Makefile.in (BUILD_LDFLAGS): Define to @BUILD_LDFLAGS@.
13355
13356 2008-07-08  Anatoly Sokolov  <aesok@post.ru>
13357
13358         PR target/36424
13359         * config/avr/avr.h (HARD_REGNO_RENAME_OK): Define.
13360         * config/avr/avr.c (avr_hard_regno_rename_ok): New function.
13361         * config/avr/avr-protos.h (avr_hard_regno_rename_ok): New prototype.
13362
13363 2008-06-07  Danny Smith  <dannysmith@users.sourceforge.net>
13364
13365         * config/i386/cygming.h (MAYBE_UWIN_CPP_BUILTINS): Remove.
13366
13367 2008-06-07  Joseph Myers  <joseph@codesourcery.com>
13368
13369         * config.gcc (Obsolete configurations): Remove list of
13370         configurations.
13371         (Unsupported targets list): Add *-*-linux*aout*, *-*-linux*libc1*,
13372         *-*-solaris2.[0-6], *-*-solaris2.[0-6].*, *-*-sysv*.  Remove other
13373         targets matched by those patterns.
13374         (strongarm*-*-*, ep9312*-*-*, xscale-*-*, parisc*-*-*,
13375         m680[012]0-*-*, *-*-linux*libc1*, *-*-linux*aout*,
13376         alpha*-*-unicosmk*, strongarm*-*-freebsd*, ep9312-*-elf,
13377         arm*-*-kaos*, cris-*-aout, parisc*64*-*-linux*, parisc*-*-linux*,
13378         hppa1.1-*-pro*, hppa1.1-*-osf*, hppa1.1-*-bsd*,
13379         i[34567]86-sequent-ptx4*, i[34567]86-sequent-sysv4*,
13380         i[34567]86-*-beoself*, i[34567]86-*-beos*, i[34567]86-*-sco3.2v5*,
13381         i[34567]86-*-sysv5*, i[34567]86-*-sysv4*, i[34567]86-*-uwin*,
13382         i[34567]86-*-kaos*, m68020-*-elf*, m68010-*-netbsdelf*,
13383         mips-wrs-windiss, mt-*-elf, powerpc-*-beos*, powerpc-*-chorusos*,
13384         powerpc-wrs-windiss*, powerpcle-*-sysv*, powerpc-*-kaos*,
13385         powerpcle-*-kaos*, sh*-*-kaos*, sparc-*-sysv4*, strongarm-*-elf*,
13386         strongarm-*-pe, strongarm-*-kaos*, vax-*-bsd*, vax-*-sysv*,
13387         vax-*-ultrix*, xscale-*-elf, xscale-*-coff,
13388         i[34567]86-*-linux*aout*, i[34567]86-*-linux*libc1): Remove.
13389         Make code for Solaris 7 and greater unconditional for Solaris.
13390         (ep9312-*-*, parisc1*, m680[012]0-*-*, parisc*-*-*, mt-*-*):
13391         Remove --with-* handling.
13392         * config/rs6000/sysv4.h (-mwindiss): Remove from all specs.
13393         (LIB_WINDISS_SPEC, CPP_OS_WINDISS_SPEC, STARTFILE_WINDISS_SPEC,
13394         ENDFILE_WINDISS_SPEC, LINK_START_WINDISS_SPEC,
13395         LINK_OS_WINDISS_SPEC): Remove.
13396         * config/rs6000/sysv4.opt (mwindiss): Remove.
13397         * configure.ac (strongarm*-*-*, xscale*-*-*): Remove.
13398         * configure: Regenerate.
13399         * doc/cpp.texi: Don't mention BeOS.
13400         * doc/extend.texi (interrupt): Don't mention MS1.
13401         * doc/install.texi: (i386-@var{any}-sysv, m68k-bull-sysv,
13402         m68k-hp-hpux, m68000-hp-hpux, m68000-att-sysv,
13403         alphaev5-cray-unicosmk*, xscale-*-*, i?86-*-linux*aout,
13404         i?86-*-sco3.2v5*, i?86-*-udk, m68k-hp-hpux, powerpc-*-sysv4,
13405         powerpc-*-sysv4, powerpcle-*-sysv4, *-*-sysv*, vax-dec-ultrix):
13406         Remove.
13407         * doc/invoke.texi (MT Options): Remove.
13408         (-mwindiss): Remove.
13409         (CRIS Options): Remove cris-axis-aout references.
13410         (HPPA Options): Don't mention hppa1.1-*-pro.
13411         * doc/md.texi: (MorphoTech family): Remove.
13412         * libgcc2.c: Don't handle UWIN.
13413         * config/alpha/t-unicosmk: Remove.
13414         * config/alpha/unicosmk.h: Remove.
13415         * config/arm/kaos-arm.h: Remove.
13416         * config/arm/kaos-strongarm.h: Remove.
13417         * config/arm/strongarm-coff.h: Remove.
13418         * config/arm/strongarm-elf.h: Remove.
13419         * config/arm/strongarm-pe.h: Remove.
13420         * config/arm/t-strongarm-pe: Remove.
13421         * config/arm/t-xscale-coff: Remove.
13422         * config/arm/t-xscale-elf: Remove.
13423         * config/arm/xscale-coff.h: Remove.
13424         * config/arm/xscale-elf.h: Remove.
13425         * config/chorus.h: Remove.
13426         * config/cris/aout.h: Remove.
13427         * config/cris/aout.opt: Remove.
13428         * config/cris/t-aout: Remove.
13429         * config/i386/beos-elf.h: Remove.
13430         * config/i386/kaos-i386.h: Remove.
13431         * config/i386/ptx4-i.h: Remove.
13432         * config/i386/sco5.h: Remove.
13433         * config/i386/sco5.opt: Remove.
13434         * config/i386/sysv4-cpp.h: Remove.
13435         * config/i386/sysv5.h: Remove.
13436         * config/i386/t-beos: Remove.
13437         * config/i386/t-sco5: Remove.
13438         * config/i386/t-uwin: Remove.
13439         * config/i386/uwin.asm: Remove.
13440         * config/i386/uwin.h: Remove.
13441         * config/kaos.h: Remove.
13442         * config/mips/windiss.h: Remove.
13443         * config/mt: Remove directory.
13444         * config/pa/pa-osf.h: Remove.
13445         * config/pa/pa-pro-end.h: Remove.
13446         * config/pa/t-pro: Remove.
13447         * config/ptx4.h: Remove.
13448         * config/rs6000/beos.h: Remove.
13449         * config/rs6000/kaos-ppc.h: Remove.
13450         * config/rs6000/t-beos: Remove.
13451         * config/rs6000/windiss.h: Remove.
13452         * config/sh/kaos-sh.h: Remove.
13453         * config/sol2-6.h: Remove.
13454         * config/sparc/sol26-sld.h: Remove.
13455         * config/sparc/sysv4-only.h: Remove.
13456         * config/vax/bsd.h: Remove.
13457         * config/vax/t-memfuncs: Remove.
13458         * config/vax/ultrix.h: Remove.
13459         * config/vax/vaxv.h: Remove.
13460         * config/windiss.h: Remove.
13461
13462 2008-06-06  Uros Bizjak <ubizjak@gmail.com>
13463
13464         PR rtl-optimization/36438
13465         * cse.c (fold_rtx) [ASHIFT, LSHIFTRT, ASHIFTRT]: Break out early
13466         for vector shifts with constant scalar shift operands.
13467
13468 2008-06-06  Sandip Matte  <sandip@rmicorp.com>
13469
13470         * doc/invoke.texi: Document -march=xlr.
13471         * config/mips/xlr.md: New file.
13472         * config/mips/mips.md: Include it.
13473         (cpu): Add "xlr".
13474         * config/mips/mips.h (PROCESSOR_XLR): New processor_type.
13475         * config/mips/mips.c (mips_cpu_info_table): Add an XLR entry.
13476         (mips_rtx_cost_data): Likewise.
13477
13478 2008-06-06  Nathan Froyd  <froydnj@codesourcery.com>
13479
13480         * config/rs6000/rs6000.c (rs6000_mode_dependent_address): Remove
13481         PRE_INC and PRE_DEC cases.
13482
13483 2008-06-06  Jakub Jelinek  <jakub@redhat.com>
13484
13485         PR rtl-optimization/36419
13486         * except.c (expand_resx_expr): Call do_pending_stack_adjust () before
13487         the emitting jump insn.
13488
13489         PR target/36362
13490         * gimplify.c (gimplify_expr) <case TRUTH_NOT_EXPR>: If *expr_p type
13491         is not bool, boolify the whole *expr_p and convert to the desired type.
13492
13493 2008-06-06  Jakub Jelinek  <jakub@redhat.com>
13494
13495         * c-cppbuiltin.c (c_cpp_builtins): Change _OPENMP value to 200805.
13496         * langhooks.h (struct lang_hooks_for_decls): Add omp_finish_clause.
13497         Add omp_private_outer_ref hook, add another argument to
13498         omp_clause_default_ctor hook.
13499         * langhooks-def.h (LANG_HOOKS_OMP_FINISH_CLAUSE): Define.
13500         (LANG_HOOKS_OMP_PRIVATE_OUTER_REF): Define.
13501         (LANG_HOOKS_OMP_CLAUSE_DEFAULT_CTOR): Change to
13502         hook_tree_tree_tree_tree_null.
13503         (LANG_HOOKS_DECLS): Add LANG_HOOKS_OMP_FINISH_CLAUSE and
13504         LANG_HOOKS_OMP_PRIVATE_OUTER_REF.
13505         * hooks.c (hook_tree_tree_tree_tree_null): New function.
13506         * hooks.h (hook_tree_tree_tree_tree_null): New prototype.
13507         * tree.def (OMP_TASK): New tree code.
13508         * tree.h (OMP_TASK_COPYFN, OMP_TASK_ARG_SIZE, OMP_TASK_ARG_ALIGN,
13509         OMP_CLAUSE_PRIVATE_OUTER_REF, OMP_CLAUSE_LASTPRIVATE_STMT,
13510         OMP_CLAUSE_COLLAPSE_ITERVAR, OMP_CLAUSE_COLLAPSE_COUNT,
13511         OMP_TASKREG_CHECK, OMP_TASKREG_BODY, OMP_TASKREG_CLAUSES,
13512         OMP_TASKREG_FN, OMP_TASKREG_DATA_ARG, OMP_TASK_BODY,
13513         OMP_TASK_CLAUSES, OMP_TASK_FN, OMP_TASK_DATA_ARG,
13514         OMP_CLAUSE_COLLAPSE_EXPR): Define.
13515         (enum omp_clause_default_kind): Add OMP_CLAUSE_DEFAULT_FIRSTPRIVATE.
13516         (OMP_DIRECTIVE_P): Add OMP_TASK.
13517         (OMP_CLAUSE_COLLAPSE, OMP_CLAUSE_UNTIED): New clause codes.
13518         (OMP_CLAUSE_SCHEDULE_AUTO): New schedule kind.
13519         * tree.c (omp_clause_code_name): Add OMP_CLAUSE_COLLAPSE
13520         and OMP_CLAUSE_UNTIED entries.
13521         (omp_clause_num_ops): Likewise.  Increase OMP_CLAUSE_LASTPRIVATE
13522         num_ops to 2.
13523         (walk_tree_1): Handle OMP_CLAUSE_COLLAPSE and OMP_CLAUSE_UNTIED.
13524         Walk OMP_CLAUSE_LASTPRIVATE_STMT.
13525         * tree-pretty-print.c (dump_omp_clause): Handle
13526         OMP_CLAUSE_SCHEDULE_AUTO, OMP_CLAUSE_UNTIED, OMP_CLAUSE_COLLAPSE,
13527         OMP_CLAUSE_DEFAULT_FIRSTPRIVATE.
13528         (dump_generic_node): Handle OMP_TASK and collapsed OMP_FOR loops.
13529         * c-omp.c (c_finish_omp_for): Allow pointer iterators.  Remove
13530         warning about unsigned iterators.  Change decl/init/cond/incr
13531         arguments to TREE_VECs, check arguments for all collapsed loops.
13532         (c_finish_omp_taskwait): New function.
13533         (c_split_parallel_clauses): Put OMP_CLAUSE_COLLAPSE clause to
13534         ws_clauses.
13535         * c-parser.c (c_parser_omp_for_loop): Parse collapsed loops.  Call
13536         default_function_array_conversion on init.  Add par_clauses argument.
13537         If decl is present in parallel's lastprivate clause, change it to
13538         shared and add lastprivate clause for decl to OMP_FOR_CLAUSES.
13539         Add clauses argument, on success set OMP_FOR_CLAUSES to it.  Look up
13540         collapse count in clauses.
13541         (c_parser_omp_for, c_parser_omp_parallel): Adjust
13542         c_parser_omp_for_loop callers.
13543         (OMP_FOR_CLAUSE_MASK): Add 1 << PRAGMA_OMP_CLAUSE_COLLAPSE.
13544         (c_parser_pragma): Handle PRAGMA_OMP_TASKWAIT.
13545         (c_parser_omp_clause_name): Handle collapse and untied clauses.
13546         (c_parser_omp_clause_collapse, c_parser_omp_clause_untied): New
13547         functions.
13548         (c_parser_omp_clause_schedule): Handle schedule(auto).
13549         Include correct location in the error message.
13550         (c_parser_omp_all_clauses): Handle PRAGMA_OMP_CLAUSE_COLLAPSE
13551         and PRAGMA_OMP_CLAUSE_UNTIED.
13552         (OMP_TASK_CLAUSE_MASK): Define.
13553         (c_parser_omp_task, c_parser_omp_taskwait): New functions.
13554         (c_parser_omp_construct): Handle PRAGMA_OMP_TASK.
13555         * tree-nested.c (convert_nonlocal_omp_clauses,
13556         convert_local_omp_clauses): Handle OMP_CLAUSE_LASTPRIVATE_STMT,
13557         OMP_CLAUSE_REDUCTION_INIT, OMP_CLAUSE_REDUCTION_MERGE,
13558         OMP_CLAUSE_COLLAPSE and OMP_CLAUSE_UNTIED.
13559         Don't handle TREE_STATIC or DECL_EXTERNAL VAR_DECLs in
13560         OMP_CLAUSE_DECL.
13561         (conver_nonlocal_reference, convert_local_reference,
13562         convert_call_expr): Handle OMP_TASK the same as OMP_PARALLEL.  Use
13563         OMP_TASKREG_* macros rather than OMP_PARALLEL_*.
13564         (walk_omp_for): Adjust for OMP_FOR_{INIT,COND,INCR} changes.
13565         * tree-gimple.c (is_gimple_stmt): Handle OMP_TASK.
13566         * c-tree.h (c_begin_omp_task, c_finish_omp_task): New prototypes.
13567         * c-pragma.h (PRAGMA_OMP_TASK, PRAGMA_OMP_TASKWAIT): New.
13568         (PRAGMA_OMP_CLAUSE_COLLAPSE, PRAGMA_OMP_CLAUSE_UNTIED): New.
13569         * c-typeck.c (c_begin_omp_task, c_finish_omp_task): New functions.
13570         (c_finish_omp_clauses): Handle OMP_CLAUSE_COLLAPSE and
13571         OMP_CLAUSE_UNTIED.
13572         * c-pragma.c (init_pragma): Init omp task and omp taskwait pragmas.
13573         * c-common.h (c_finish_omp_taskwait): New prototype.
13574         * gimple-low.c (lower_stmt): Handle OMP_TASK.
13575         * tree-parloops.c (create_parallel_loop): Create 1 entry
13576         vectors for OMP_FOR_{INIT,COND,INCR}.
13577         * tree-cfg.c (remove_useless_stmts_1): Handle OMP_* containers.
13578         (make_edges): Handle OMP_TASK.
13579         * tree-ssa-operands.c (get_expr_operands): Handle collapsed OMP_FOR
13580         loops, adjust for OMP_FOR_{INIT,COND,INCR} changes.
13581         * tree-inline.c (estimate_num_insns_1): Handle OMP_TASK.
13582         * builtin-types.def (BT_PTR_ULONGLONG, BT_PTR_FN_VOID_PTR_PTR,
13583         BT_FN_BOOL_ULONGLONGPTR_ULONGLONGPTR,
13584         BT_FN_BOOL_BOOL_ULL_ULL_ULL_ULLPTR_ULLPTR,
13585         BT_FN_BOOL_BOOL_ULL_ULL_ULL_ULL_ULLPTR_ULLPTR,
13586         BT_FN_VOID_OMPFN_PTR_OMPCPYFN_LONG_LONG_BOOL_UINT): New.
13587         * omp-builtins.def (BUILT_IN_GOMP_TASK, BUILT_IN_GOMP_TASKWAIT,
13588         BUILT_IN_GOMP_LOOP_ULL_STATIC_START,
13589         BUILT_IN_GOMP_LOOP_ULL_DYNAMIC_START,
13590         BUILT_IN_GOMP_LOOP_ULL_GUIDED_START,
13591         BUILT_IN_GOMP_LOOP_ULL_RUNTIME_START,
13592         BUILT_IN_GOMP_LOOP_ULL_ORDERED_STATIC_START,
13593         BUILT_IN_GOMP_LOOP_ULL_ORDERED_DYNAMIC_START,
13594         BUILT_IN_GOMP_LOOP_ULL_ORDERED_GUIDED_START,
13595         BUILT_IN_GOMP_LOOP_ULL_ORDERED_RUNTIME_START,
13596         BUILT_IN_GOMP_LOOP_ULL_STATIC_NEXT,
13597         BUILT_IN_GOMP_LOOP_ULL_DYNAMIC_NEXT,
13598         BUILT_IN_GOMP_LOOP_ULL_GUIDED_NEXT,
13599         BUILT_IN_GOMP_LOOP_ULL_RUNTIME_NEXT,
13600         BUILT_IN_GOMP_LOOP_ULL_ORDERED_STATIC_NEXT,
13601         BUILT_IN_GOMP_LOOP_ULL_ORDERED_DYNAMIC_NEXT,
13602         BUILT_IN_GOMP_LOOP_ULL_ORDERED_GUIDED_NEXT,
13603         BUILT_IN_GOMP_LOOP_ULL_ORDERED_RUNTIME_NEXT): New builtins.
13604         * gimplify.c (gimplify_omp_for): Allow pointer type for decl,
13605         handle POINTER_PLUS_EXPR.  If loop counter has been replaced and
13606         original iterator is present in lastprivate clause or if
13607         collapse > 1, set OMP_CLAUSE_LASTPRIVATE_STMT.  Handle collapsed
13608         OMP_FOR loops, adjust for OMP_FOR_{INIT,COND,INCR} changes.
13609         (gimplify_expr): Handle OMP_SECTIONS_SWITCH and OMP_TASK.
13610         (enum gimplify_omp_var_data): Add GOVD_PRIVATE_OUTER_REF.
13611         (omp_notice_variable): Set GOVD_PRIVATE_OUTER_REF if needed,
13612         if it is set, lookup var in outer contexts too.  Handle
13613         OMP_CLAUSE_DEFAULT_FIRSTPRIVATE.  Handle vars that are supposed
13614         to be implicitly determined firstprivate for task regions.
13615         (gimplify_scan_omp_clauses): Set GOVD_PRIVATE_OUTER_REF if needed,
13616         if it is set, lookup var in outer contexts too.  Set
13617         OMP_CLAUSE_PRIVATE_OUTER_REF if GOVD_PRIVATE_OUTER_REF is set.
13618         Handle OMP_CLAUSE_LASTPRIVATE_STMT, OMP_CLAUSE_COLLAPSE and
13619         OMP_CLAUSE_UNTIED.  Take region_type as last argument
13620         instead of in_parallel and in_combined_parallel.
13621         (gimplify_omp_parallel, gimplify_omp_for, gimplify_omp_workshare):
13622         Adjust callers.
13623         (gimplify_adjust_omp_clauses_1): Set OMP_CLAUSE_PRIVATE_OUTER_REF if
13624         GOVD_PRIVATE_OUTER_REF is set.  Call omp_finish_clause langhook.
13625         (new_omp_context): Set default_kind to
13626         OMP_CLAUSE_DEFAULT_UNSPECIFIED for OMP_TASK regions.
13627         (omp_region_type): New enum.
13628         (struct gimplify_omp_ctx): Remove is_parallel and is_combined_parallel
13629         fields, add region_type.
13630         (new_omp_context): Take region_type as argument instead of is_parallel
13631         and is_combined_parallel.
13632         (gimple_add_tmp_var, omp_firstprivatize_variable, omp_notice_variable,
13633         omp_is_private, omp_check_private): Adjust ctx->is_parallel and
13634         ctx->is_combined_parallel checks.
13635         (gimplify_omp_task): New function.
13636         (gimplify_adjust_omp_clauses): Handle OMP_CLAUSE_COLLAPSE and
13637         OMP_CLAUSE_UNTIED.
13638         * omp-low.c (extract_omp_for_data): Use schedule(static)
13639         for schedule(auto).  Handle pointer and unsigned iterators.
13640         Compute fd->iter_type.  Handle POINTER_PLUS_EXPR increments.
13641         Add loops argument.  Extract data for collapsed OMP_FOR loops.
13642         (expand_parallel_call): Assert sched_kind isn't auto,
13643         map runtime schedule to index 3.
13644         (struct omp_for_data_loop): New type.
13645         (struct omp_for_data): Remove v, n1, n2, step, cond_code fields.
13646         Add loop, loops, collapse and iter_type fields.
13647         (workshare_safe_to_combine_p): Disallow combined for if
13648         iter_type is unsigned long long.  Don't combine collapse > 1 loops
13649         unless all bounds and steps are constant.  Adjust extract_omp_for_data
13650         caller.
13651         (expand_omp_for_generic): Handle pointer, unsigned and long long
13652         iterators.  Handle collapsed OMP_FOR loops.  Adjust
13653         for struct omp_for_data changes.  If libgomp function doesn't return
13654         boolean_type_node, add comparison of the return value with 0.
13655         (expand_omp_for_static_nochunk, expand_omp_for_static_chunk): Handle
13656         pointer, unsigned and long long iterators.  Adjust for struct
13657         omp_for_data changes.
13658         (expand_omp_for): Assert sched_kind isn't auto, map runtime schedule
13659         to index 3.  Use GOMP_loop_ull*{start,next} if iter_type is
13660         unsigned long long.  Allocate loops array, pass it to
13661         extract_omp_for_data.  For collapse > 1 loops use always
13662         expand_omp_for_generic.
13663         (omp_context): Add sfield_map and srecord_type fields.
13664         (is_task_ctx, lookup_sfield): New functions.
13665         (use_pointer_for_field): Use is_task_ctx helper.  Change first
13666         argument's type from const_tree to tree.  Clarify comment.
13667         In OMP_TASK disallow copy-in/out sharing.
13668         (build_sender_ref): Call lookup_sfield instead of lookup_field.
13669         (install_var_field): Add mask argument.  Populate both record_type
13670         and srecord_type if needed.
13671         (delete_omp_context): Destroy sfield_map, clear DECL_ABSTRACT_ORIGIN
13672         in srecord_type.
13673         (fixup_child_record_type): Also remap FIELD_DECL's DECL_SIZE{,_UNIT}
13674         and DECL_FIELD_OFFSET.
13675         (scan_sharing_clauses): Adjust install_var_field callers.  For
13676         firstprivate clauses on explicit tasks allocate the var by value in
13677         record_type unconditionally, rather than by reference.
13678         Handle OMP_CLAUSE_PRIVATE_OUTER_REF.  Scan OMP_CLAUSE_LASTPRIVATE_STMT.
13679         Use is_taskreg_ctx instead of is_parallel_ctx.
13680         Handle OMP_CLAUSE_COLLAPSE and OMP_CLAUSE_UNTIED.
13681         (create_omp_child_function_name): Add task_copy argument, use
13682         *_omp_cpyfn* names if it is true.
13683         (create_omp_child_function): Add task_copy argument, if true create
13684         *_omp_cpyfn* helper function.
13685         (scan_omp_parallel): Adjust create_omp_child_function callers.
13686         Rename parallel_nesting_level to taskreg_nesting_level.
13687         (scan_omp_task): New function.
13688         (lower_rec_input_clauses): Don't run constructors for firstprivate
13689         explicit task vars which are initialized by *_omp_cpyfn*.
13690         Pass outer var ref to omp_clause_default_ctor hook if
13691         OMP_CLAUSE_PRIVATE_OUTER_REF or OMP_CLAUSE_LASTPRIVATE.
13692         Replace OMP_CLAUSE_REDUCTION_PLACEHOLDER decls in
13693         OMP_CLAUSE_REDUCTION_INIT.
13694         (lower_send_clauses): Clear DECL_ABSTRACT_ORIGIN if in task to
13695         avoid duplicate setting of fields.  Handle
13696         OMP_CLAUSE_PRIVATE_OUTER_REF.
13697         (lower_send_shared_vars): Use srecord_type if non-NULL.  Don't
13698         copy-out if TREE_READONLY, only copy-in.
13699         (expand_task_copyfn): New function.
13700         (expand_task_call): New function.
13701         (struct omp_taskcopy_context): New type.
13702         (task_copyfn_copy_decl, task_copyfn_remap_type, create_task_copyfn):
13703         New functions.
13704         (lower_omp_parallel): Rename to...
13705         (lower_omp_taskreg): ... this.  Use OMP_TASKREG_* macros where needed.
13706         Call create_task_copyfn if srecord_type is needed.  Adjust
13707         sender_decl type.
13708         (task_shared_vars): New variable.
13709         (check_omp_nesting_restrictions): Warn if work-sharing,
13710         barrier, master or ordered region is closely nested inside OMP_TASK.
13711         Add warnings for barrier if closely nested inside of work-sharing,
13712         ordered, or master region.
13713         (scan_omp_1): Call check_omp_nesting_restrictions even for
13714         GOMP_barrier calls.  Rename parallel_nesting_level to
13715         taskreg_nesting_level.  Handle OMP_TASK.
13716         (lower_lastprivate_clauses): Even if some lastprivate is found on a
13717         work-sharing construct, continue looking for them on parent parallel
13718         construct.
13719         (lower_omp_for_lastprivate): Add lastprivate clauses
13720         to the beginning of dlist rather than end.  Adjust for struct
13721         omp_for_data changes.
13722         (lower_omp_for): Add rec input clauses before OMP_FOR_PRE_BODY,
13723         not after it.  Handle collapsed OMP_FOR loops, adjust for
13724         OMP_FOR_{INIT,COND,INCR} changes, adjust extract_omp_for_data caller.
13725         (get_ws_args_for): Adjust extract_omp_for_data caller.
13726         (scan_omp_for): Handle collapsed OMP_FOR
13727         loops, adjust for OMP_FOR_{INIT,COND,INCR} changes.
13728         (lower_omp_single_simple): If libgomp function doesn't return
13729         boolean_type_node, add comparison of the return value with 0.
13730         (diagnose_sb_1, diagnose_sb_2): Handle collapsed OMP_FOR
13731         loops, adjust for OMP_FOR_{INIT,COND,INCR} changes.  Handle OMP_TASK.
13732         (parallel_nesting_level): Rename to...
13733         (taskreg_nesting_level): ... this.
13734         (is_taskreg_ctx): New function.
13735         (build_outer_var_ref, omp_copy_decl): Use is_taskreg_ctx instead
13736         of is_parallel_ctx.
13737         (execute_lower_omp): Rename parallel_nesting_level to
13738         taskreg_nesting_level.
13739         (expand_omp_parallel): Rename to...
13740         (expand_omp_taskreg): ... this.  Use OMP_TASKREG_* macros where needed.
13741         Call omp_task_call for OMP_TASK regions.
13742         (expand_omp): Adjust caller, handle OMP_TASK.
13743         (lower_omp_1): Adjust lower_omp_taskreg caller, handle OMP_TASK.
13744
13745         * bitmap.c (bitmap_default_obstack_depth): New variable.
13746         (bitmap_obstack_initialize, bitmap_obstack_release): Do nothing
13747         if argument is NULL and bitmap_default_obstack is already initialized.
13748         * ipa-struct-reorg.c (do_reorg_1): Call bitmap_obstack_release
13749         at the end.
13750         * matrix-reorg.c (matrix_reorg): Likewise.
13751
13752 2008-06-06  Uros Bizjak  <ubizjak@gmail.com>
13753
13754         * config/i386/i386.md (*indirect_jump): Macroize using P
13755         mode iterator.  Remove !TARGET_64BIT from insn constraints.
13756         (*tablejump_1): Ditto.
13757         (*indirect_jump_rex64): Remove insn pattern.
13758         (*tablejump_1_rex64): Ditto.
13759         (eh_return_<mode>): Macroize using P mode iterator from eh_return_di
13760         and eh_return_si insn patterns.
13761
13762 2008-06-06  Richard Guenther  <rguenther@suse.de>
13763
13764         * tree-ssa-structalias.c (merge_smts_into): Remove.
13765         (find_what_p_points_to): Do not bother to compute the
13766         points-to set for pt_anything pointers.
13767         * tree-ssa-operands.c (get_addr_dereference_operands): No NMT
13768         for pt_anything pointers is ok.
13769
13770 2008-06-06  Jan Hubicka  <jh@suse.cz>
13771
13772         * passes.c (execute_ipa_pass_list): Do not regenerate summaries.
13773
13774 2008-06-06  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
13775
13776         * cgraph.c: Fix typos in comments.
13777         (cgraph_availability_names): Fix string typo.
13778         * fold-const.c: Fix typos in comments.
13779         (fold_binary): Fix typo in warning.
13780         * genautomata.c: Fix typos in comments.
13781         (check_presence_pattern_sets): Fix typo in local variable.
13782         (output_description): Fix typo in output.
13783         * ggc-zone.c (ggc_pch_finish): Fix typo in error message.
13784         * hwint.h: Likewise.
13785         * matrix-reorg.c (check_allocation_function): Likewise.
13786         * omega.c (smooth_weird_equations): Likewise.
13787         * auto-inc-dec.c: Fix typos in comments.
13788         * bb-reorder.c: Likewise.
13789         * builtins.c: Likewise.
13790         * c-common.c: Likewise.
13791         * c-cppbuiltin.c: Likewise.
13792         * c-parser.c: Likewise.
13793         * c-pretty-print.c: Likewise.
13794         * cfgcleanup.c: Likewise.
13795         * cfgexpand.c: Likewise.
13796         * cfghooks.c: Likewise.
13797         * cfglayout.c: Likewise.
13798         * cfgloopmanip.c: Likewise.
13799         * cgraphunit.c: Likewise.
13800         * coverage.c: Likewise.
13801         * dbxout.c: Likewise.
13802         * df-byte-scan.c: Likewise.
13803         * df-core.c: Likewise.
13804         * df-problems.c: Likewise.
13805         * df-scan.c: Likewise.
13806         * dfp.c: Likewise.
13807         * dominance.c: Likewise.
13808         * domwalk.c: Likewise.
13809         * dse.c: Likewise.
13810         * dwarf2out.c: Likewise.
13811         * emit-rtl.c: Likewise.
13812         * et-forest.c: Likewise.
13813         * function.c: Likewise.
13814         * function.h: Likewise.
13815         * gcc.c: Likewise.
13816         * gcov-io.c: Likewise.
13817         * gcov.c: Likewise.
13818         * gcse.c: Likewise.
13819         * genattrtab.c: Likewise.
13820         * ggc-page.c: Likewise.
13821         * gimplify.c: Likewise.
13822         * gthr-lynx.h: Likewise.
13823         * haifa-sched.c: Likewise.
13824         * ipa-cp.c: Likewise.
13825         * ipa-inline.c: Likewise.
13826         * ipa-prop.h: Likewise.
13827         * ipa-pure-const.c: Likewise.
13828         * ipa-struct-reorg.c: Likewise.
13829         * ipa-struct-reorg.h: Likewise.
13830         * ipa-type-escape.c: Likewise.
13831         * ipa.c: Likewise.
13832         * loop-doloop.c: Likewise.
13833         * mips-tfile.c: Likewise.
13834         * mkmap-flat.awk: Likewise.
13835         * mkmap-symver.awk: Likewise.
13836         * modulo-sched.c: Likewise.
13837         * omp-low.c: Likewise.
13838         * optabs.c: Likewise.
13839         * optabs.h: Likewise.
13840         * opts.c: Likewise.
13841         * passes.c: Likewise.
13842         * postreload-gcse.c: Likewise.
13843         * postreload.c: Likewise.
13844         * predict.c: Likewise.
13845         * pretty-print.h: Likewise.
13846         * profile.c: Likewise.
13847         * protoize.c: Likewise.
13848         * ra-conflict.c: Likewise.
13849         * real.c: Likewise.
13850         * recog.c: Likewise.
13851         * regclass.c: Likewise.
13852         * regs.h: Likewise.
13853         * reload.c: Likewise.
13854         * rtl-error.c: Likewise.
13855         * rtlanal.c: Likewise.
13856         * scan.h: Likewise.
13857         * sched-rgn.c: Likewise.
13858         * see.c: Likewise.
13859         * stmt.c: Likewise.
13860         * target.h: Likewise.
13861         * tree-dfa.c: Likewise.
13862         * tree-eh.c: Likewise.
13863         * tree-flow-inline.h: Likewise.
13864         * tree-inline.c: Likewise.
13865         * tree-into-ssa.c: Likewise.
13866         * tree-loop-distribution.c: Likewise.
13867         * tree-nested.c: Likewise.
13868         * tree-parloops.c: Likewise.
13869         * tree-pass.h: Likewise.
13870         * tree-pretty-print.c: Likewise.
13871         * tree-profile.c: Likewise.
13872         * tree-scalar-evolution.c: Likewise.
13873         * tree-sra.c: Likewise.
13874         * tree-ssa-alias-warnings.c: Likewise.
13875         * tree-ssa-ccp.c: Likewise.
13876         * tree-ssa-coalesce.c: Likewise.
13877         * tree-ssa-dom.c: Likewise.
13878         * tree-ssa-dse.c: Likewise.
13879         * tree-ssa-forwprop.c: Likewise.
13880         * tree-ssa-live.c: Likewise.
13881         * tree-ssa-live.h: Likewise.
13882         * tree-ssa-loop-im.c: Likewise.
13883         * tree-ssa-loop-ivopts.c: Likewise.
13884         * tree-ssa-loop-niter.c: Likewise.
13885         * tree-ssa-loop-prefetch.c: Likewise.
13886         * tree-ssa-phiopt.c: Likewise.
13887         * tree-ssa-phiprop.c: Likewise.
13888         * tree-ssa-sccvn.c: Likewise.
13889         * tree-ssa-ter.c: Likewise.
13890         * tree-ssa-threadupdate.c: Likewise.
13891         * tree-ssa.c: Likewise.
13892         * tree-vect-analyze.c: Likewise.
13893         * tree-vect-transform.c: Likewise.
13894         * tree-vectorizer.c: Likewise.
13895         * tree-vn.c: Likewise.
13896         * tree-vrp.c: Likewise.
13897         * tree.c: Likewise.
13898         * tree.def: Likewise.
13899         * tree.h: Likewise.
13900         * unwind-dw2-fde.c: Likewise.
13901         * unwind.inc: Likewise.
13902         * value-prof.c: Likewise.
13903         * vmsdbgout.c: Likewise.
13904
13905 2008-06-05  David Edelsohn  <edelsohn@gnu.org>
13906
13907         * config/rs6000/xcoff.h (ASM_OUTPUT_SPECIAL_POOL_ENTRY_P): Do not
13908         always place FP constants in the TOC for TARGET_POWERPC64.
13909         * config/rs6000/linux64.h (ASM_OUTPUT_SPECIAL_POOL_ENTRY_P): Same.
13910
13911 2008-06-05  Joseph Myers  <joseph@codesourcery.com>
13912
13913         * config.gcc (powerpc-*-linux*spe*): Use t-dfprules.
13914         * config/rs6000/dfp.md (negdd2, absdd2, negtd2, abstd2): Do not
13915         enable for TARGET_E500_DOUBLE.
13916         (*movdd_softfloat32): Also enable for !TARGET_FPRS.
13917         * config/rs6000/rs6000.c (invalid_e500_subreg): Treat decimal
13918         floating-point modes like integer modes for E500 double.
13919         (rs6000_legitimate_offset_address_p): Likewise.
13920         (rs6000_legitimize_address): Likewise.  Do not allow REG+REG
13921         addressing for DDmode for E500 double.
13922         (rs6000_hard_regno_nregs): Do not treat decimal floating-point
13923         modes as using 64-bits of registers for E500 double.
13924         (spe_build_register_parallel): Do not handle DDmode or TDmode.
13925         (rs6000_spe_function_arg): Do not handle DDmode or TDmode
13926         specially for E500 double.
13927         (function_arg): Do not call rs6000_spe_function_arg for DDmode or
13928         TDmode for E500 double.
13929         (rs6000_gimplify_va_arg): Only handle SDmode in registers
13930         specially if TARGET_HARD_FLOAT && TARGET_FPRS.
13931         (rs6000_split_multireg_move): Do not handle TDmode specially for
13932         E500 double.
13933         (spe_func_has_64bit_regs_p): Do not treat DDmode or TDmode as
13934         using 64-bit registers for E500 double.
13935         (emit_frame_save): Do not handle DDmode specially for E500 double.
13936         (gen_frame_mem_offset): Likewise.
13937         (rs6000_function_value): Do not call spe_build_register_parallel
13938         for DDmode or TDmode.
13939         (rs6000_libcall_value): Likewise.
13940         * config/rs6000/rs6000.h (LOCAL_ALIGNMENT, MEMBER_TYPE_FORCES_BLK,
13941         DATA_ALIGNMENT, CLASS_MAX_NREGS): Do not handle DDmode specially
13942         for E500 double.
13943
13944 2008-06-04  H.J. Lu  <hongjiu.lu@intel.com>
13945
13946         * config/i386/i386.c (setup_incoming_varargs_64): Fix a typo
13947         in comments.
13948
13949 2008-06-04  Junjie Gu <jgu@tensilica.com>
13950
13951         * config/xtensa/lib2funcs.S (__xtensa_nonlocal_goto): Use unsigned
13952         comparison for frame pointers.
13953
13954 2008-06-04  Andy Hutchinson  <hutchinsonandy@aim.com>
13955
13956         PR target/27386
13957         * config/avr/avr.h (PUSH_ROUNDING): Remove.
13958
13959 2008-06-04  Andy Hutchinson  <hutchinsonandy@aim.com>
13960
13961         PR target/30243
13962         * builtins.c (expand_builtin_signbit): Don't take lowpart when
13963         register is already smaller or equal to required mode.
13964
13965 2008-06-04  Xinliang David Li  <davidxl@google.com>
13966
13967         * tree-call-cdce.c: New file.
13968         (cond_dead_built_in_calls): New static variable.
13969         (input_domain): New struct.
13970         (check_pow): New function.
13971         (check_builtin_call): Ditto.
13972         (check_target_format): Ditto.
13973         (is_call_dce_candidate): Ditto.
13974         (gen_one_condition): Ditto.
13975         (gen_conditions_for_domain): Ditto.
13976         (get_domain): Ditto.
13977         (gen_conditions_for_pow_cst_base): Ditto.
13978         (gen_conditions_for_pow_int_base): Ditto.
13979         (gen_conditions_for_pow): Ditto.
13980         (get_no_error_domain): Ditto.
13981         (gen_shrink_wrap_conditions): Ditto.
13982         (shrink_wrap_one_built_in_call): Ditto.
13983         (shink_wrap_conditional_dead_built_in_calls): Ditto.
13984         (tree_call_cdce): Ditto.
13985         (gate_call_cdce): Ditto.
13986         (pass_call_cdce): New gimple pass.
13987         * passes.c: (init_optimization_passes): New pass.
13988         * tree-pass.h: New pass declaration.
13989         * opts.c (decode_options): New flag setting.
13990         * common.opt: Add -ftree-builtin-call-dce flag.
13991         * Makefile.in: Add new source file.
13992         * tempvar.def: New tv_id.
13993         * doc/invoke.texi (-ftree-builtin-call-dce): New flag.
13994
13995 2008-06-04  Richard Guenther  <rguenther@suse.de>
13996
13997         * tree-flow-inline.h (is_global_var): Do not check TREE_STATIC on MTAGs.
13998         (is_call_clobbered): Always check var_ann->call_clobbered.
13999         (mark_call_clobbered): Always set var_ann->call_clobbered.
14000         (clear_call_clobbered): Always clear var_ann->call_clobbered.
14001         * tree-ssa-alias.c (mark_non_addressable): Use clear_call_clobbered.
14002         (reset_alias_info): Clear call clobbering info on MTAGs and
14003         globals as well.
14004         (set_pt_anything): Set pt_global_mem.
14005         (create_tag_raw): Adjust comment.
14006         (may_be_aliased): Do not check TREE_PUBLIC on MTAGs.
14007
14008 2008-06-04  Joseph Myers  <joseph@codesourcery.com>
14009             Maxim Kuvyrkov  <maxim@codesourcery.com>
14010
14011         * config/m68k/m68k.opt (mxgot): New option.
14012         * config/m68k/m68k.c (legitimize_pic_address): Handle -mxgot.
14013         (m68k_output_addr_const_extra): New.
14014         * config/m68k/m68k.h (OUTPUT_ADDR_CONST_EXTRA): New.
14015         * config/m68k/m68k-protos.h (m68k_output_addr_const_extra): Declare.
14016         * config/m68k/m68k.md (UNSPEC_GOTOFF): Define.
14017         * doc/invoke.texi (M680x0 Options): Document -mxgot.
14018
14019 2008-06-04  Richard Guenther  <rguenther@suse.de>
14020
14021         * tree-ssa-structalias.c (handle_ptr_arith): Correctly handle
14022         negative or non-representable offsets.
14023
14024 2008-06-03  H.J. Lu  <hongjiu.lu@intel.com>
14025
14026         * config/i386/i386.c (ix86_gen_leave): New.
14027         (ix86_gen_pop1): Likewise.
14028         (ix86_gen_add3): Likewise.
14029         (ix86_gen_sub3): Likewise.
14030         (ix86_gen_sub3_carry): Likewise.
14031         (ix86_gen_one_cmpl2): Likewise.
14032         (ix86_gen_monitor): Likewise.
14033         (override_options): Initialize ix86_gen_leave, ix86_gen_pop1,
14034         ix86_gen_add3, ix86_gen_sub3, ix86_gen_sub3_carry,
14035         ix86_gen_one_cmpl2 and ix86_gen_monitor.
14036         (ix86_file_end): Use mov%z0 instead of mov{q}/mov{l}.
14037         (output_set_got): Use mov%z0, pop%z0 and add%z0 instead of
14038         mov{q}/mov{l}, pop{q}/pop{l} and add{q}/add{l}.
14039         (ix86_expand_epilogue): Updated.
14040         (print_operand): Handle integer register operand for 'z'.
14041         (ix86_expand_strlensi_unroll_1): Likewise.
14042         (ix86_expand_strlen): Likewise.
14043         (ix86_expand_builtin): Likewise.
14044         (x86_output_mi_thunk): Use mov%z1 and add%z1 instead of
14045         mov{q}/mov{l} and add{q}/add{l}.
14046
14047 2008-06-03  Kai Tietz  <kai.tietz@onevision.com>
14048
14049         * config/i386/i386.md (P): New mode iterator.
14050         (SFmode push_operand splitter): Macroize DImode and SImode pushes
14051         using P mode iterator.
14052         (DFmode push_operand splitter): Ditto.
14053         (XFmode push_operand splitter): Ditto.
14054         (DFmode float_extend SFmode push_operand splitter): Ditto.
14055         (XFmode float_extend SFmode push_operand splitter): Do not generate
14056         SImode pushes for 64bit target.  Macroize Dimode and SImode
14057         pushes using P mode iterator.
14058         (XFmode float_extend DFmode push_operand splitter): Ditto.
14059
14060 2008-06-03  Kai Tietz  <kai.tietz@onevision.com>
14061
14062         * config/i386/i386-protos.h (ix86_reg_parm_stack_space): New.
14063         * config/i386/i386.h (ix86_reg_parm_stack_space): Removed prototype.
14064         * config/i386/i386.c (ix86_reg_parm_stack_space): Changed
14065         return type to int.
14066         (ix86_call_abi_override): Remove check for call_used_regs.
14067
14068 2008-06-03  Richard Guenther  <rguenther@suse.de>
14069
14070         * tree-ssa-structalias.c (find_func_aliases): Add constraints
14071         for the lhs of calls if the return type contains pointers.
14072
14073 2008-06-03  Kai Tietz  <kai.tietz@onevision.com>
14074
14075         * doc/tm.texi (OVERRIDE_ABI_FORMAT): New.
14076         * doc/extend.texi (ms_abi,sysv_abi): New attribute description.
14077         * function.c (allocate_struct_function): Use of OVERRIDE_ABI_FORMAT.
14078         * config/i386/cygming.h (TARGET_64BIT_MS_ABI): Make use
14079         of cfun and DEFAULT_ABI to deceide abi mode.
14080         (DEFAULT_ABI): New.
14081         (REG_PARM_STACK_SPACE): Removed.
14082         (OUTGOING_REG_PARM_STACK_SPACE): Removed.
14083         (STACK_BOUNDARY): Use default target to deceide stack boundary.
14084         * config/i386/i386-protos.h (ix86_cfun_abi): New.
14085         (ix86_function_abi): Likewise.
14086         (ix86_function_type_abi): Likewise.
14087         (ix86_call_abi_override): Likewise.
14088         * confid/i386/i386.md (SSE_REGPARM_MAX): Replaced by abi
14089         specific define X86_64_SSE_REGPARM_MAX/X64_SSE_REGPARM_MAX.
14090         * config/i386/i386.c (override_options): Replace TARGET_64BIT_MS_ABI.
14091         (X86_64_VARARGS_SIZE): Replace REGPARM_MAX and SSE_REGPARM_MAX by abi
14092         specific defines.
14093         (X86_64_REGPARM_MAX): New.
14094         (X86_64_SSE_REGPARM_MAX): New.
14095         (X64_REGPARM_MAX): New.
14096         (X64_SSE_REGPARM_MAX): New.
14097         (X86_32_REGPARM_MAX): New.
14098         (X86_32_SSE_REGPARM_MAX): New.
14099         (ix86_handle_cconv_attribute): Replace TARGET_64BIT_MS_ABI.
14100         (ix86_function_regparm): Handle user calling abi.
14101         (ix86_function_arg_regno_p): Replace TARGET_64BIT_MS_ABI
14102         by DEFAULT_ABI versus SYSV_ABI check.
14103         (ix86_reg_parm_stack_space): New.
14104         (ix86_function_type_abi): New.
14105         (ix86_call_abi_override): New.
14106         (ix86_function_abi): New.
14107         (ix86_cfun_abi): New.
14108         (init_cumulative_args): Call abi specific initialization.
14109         (function_arg_advance): Remove TARGET_64BIT_MS_ABI.
14110         (function_arg_64): Extend SSE_REGPARM_MAX check.
14111         (function_arg (): Remove TARGET_64BIT_MS_ABI.
14112         (ix86_pass_by_reference): Likewise.
14113         (ix86_function_value_regno_p): Likewise.
14114         (function_value_64): Replace REGPARM_MAX, and SSE_REGPARM_MAX.
14115         (ix86_function_value_1): Replace TARGET_64BIT_MS_ABI.
14116         (return_in_memory_ms_64): Replace TARGET_64BIT_MS_ABI.
14117         (ix86_build_builtin_va_list): Replace TARGET_64BIT_MS_ABI.
14118         (setup_incoming_varargs_64): Adjust regparm for call abi.
14119         (ix86_setup_incoming_varargs): Replace TARGET_64BIT_MS_ABI.
14120         (ix86_va_start): Likewise.
14121         (ix86_gimplify_va_arg): Likewise.
14122         (ix86_expand_prologue): Likewise.
14123         (output_pic_addr_const): Likewise.
14124         (ix86_init_machine_status): Initialize call_abi by DEFAULT_ABI.
14125         (x86_this_parameter): Replace TARGET_64BIT_MS_ABI.
14126         (x86_output_mi_thunk): Likewise.
14127         (x86_function_profiler): Likewise.
14128         * config/i386/i386.h (TARGET_64BIT_MS_ABI): Use ix64_cfun_abi.
14129         (SYSV_ABI, MS_ABI): New constants.
14130         (DEFAULT_ABI): New.
14131         (init_regs): Add prototype of function in regclass.c file.
14132         (OVERRIDE_ABI_FORMAT): New.
14133         (CONDITIONAL_REGISTER_USAGE): Remove TARGET_64BIT_MS_ABI part.
14134         (REG_PARM_STACK_SPACE): Use ix86_reg_parm_stack_space.
14135         (OUTGOING_REG_PARM_STACK_SPACE): New.
14136         (ix86_reg_parm_stack_space): New prototype.
14137         (CUMULATIVE_ARGS): Add call_abi member.
14138         (machine_function): Add call_abi member.
14139         * config/i386/mingw32.h (EXTRA_OS_CPP_BUILTINS): Replace
14140         TARGET_64BIT_MS_ABI by DEFAULT_ABI compare to MS_ABI.
14141
14142 2008-06-02  Andy Hutchinson  <hutchinsonandy@aim.com>
14143
14144         PR target/34879
14145         * config/avr/avr.c (TARGET_BUILTIN_SETJMP_FRAME_VALUE): Redefine.
14146         (avr_builtin_setjmp_frame_value): New function.
14147         * config/avr/avr.md (nonlocal_goto_receiver): Define.
14148         (nonlocal_goto): Define.
14149
14150 2008-06-02  Richard Sandiford  <rdsandiford@googlemail.com>
14151
14152         * config/mips/mips.c (mips_emit_loadgp): Return early if
14153         there is nothing do to, otherwise emit a blockage if
14154         !TARGET_EXPLICIT_RELOCS || crtl->profile.
14155         * config/mips/mips.md (loadgp_blockage): Use SI rather than DI.
14156
14157 2008-06-02  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
14158
14159         * configure.ac: Drop unneeded backslash ending up in config.in.
14160         * acinclude.m4: Likewise.
14161         * config.in: Regenerate.
14162
14163 2008-05-26  Jan Hubicka  <jh@suse.cz>
14164
14165         * predict.c (maybe_hot_frequency_p): Break out of...
14166         (maybe_hot_bb_p): ... here.
14167         (maybe_hot_edge_p): New.
14168         * tree-ssa-coalesce.c (coalesce_cost_edge): Compute cost based on edge.
14169         * basic-block.h (maybe_hot_edge_p): Declare.
14170
14171 2008-05-31  Uros Bizjak  <ubizjak@gmail.com>
14172
14173         * config/i386/i386.md (*cmpfp_<mode>): Enable for optimize_size.
14174         (*cmpfp_<mode>_cc): Ditto.
14175         (*fp_jcc_8<mode>_387): Ditto.
14176         (*fop_<MODEF:mode>_2_i387): Ditto.
14177         (*fop_<MODEF:mode>_3_i387): Ditto.
14178         (*fop_xf_2_i387): Ditto.
14179         (*fop_xf_3_i387): Ditto.
14180
14181 2008-06-02  Tomas Bily  <tbily@suse.cz>
14182
14183         * tree-ssa-ifcombine.c (get_name_for_bit_test): Use CONVERT_EXPR_P.
14184
14185 2008-06-01  Richard Sandiford  <rdsandiford@googlemail.com>
14186
14187         * config/mips/mips.c (mips_valid_offset_p): New function.
14188         (mips_valid_lo_sum_p): Likewise.
14189         (mips_classify_address): Use them.
14190         (mips_force_address): New function.
14191         (mips_legitimize_address): Use it.
14192         * config/mips/mips.md (MOVE128): New mode iterator.
14193         (movtf): Require TARGET_64BIT.  Remove empty strings.
14194         (*movtf_internal): Rename to...
14195         (*movtf): ...this and require !TARGET_MIPS16.  Use "m" instead
14196         of "R" and use {,fp}{load,store} attributes instead of "multi".
14197         Use a separate define_split.
14198         (*movtf_mips16): New pattern.
14199
14200 2008-06-01  Richard Sandiford  <rdsandiford@googlemail.com>
14201
14202         * config/mips/mips-protos.h (mips_expand_before_return): Declare.
14203         * config/mips/mips.c (mips_expand_before_return): New function.
14204         (mips_expand_epilogue): Call it.
14205         * config/mips/mips.md (return): Turn into a define_expand.
14206         (*return): New insn.
14207
14208 2008-06-01  Richard Sandiford  <rdsandiford@googlemail.com>
14209
14210         * rtl.h (emit_clobber, gen_clobber, emit_use, gen_use): Declare.
14211         * emit-rtl.c (emit_clobber, gen_clobber, emit_use, gen_use): New
14212         functions.  Do not emit uses and clobbers of CONCATs; individually
14213         use and clobber their operands.
14214         * builtins.c (expand_builtin_setjmp_receiver): Use emit_clobber,
14215         gen_clobber, emit_use and gen_use.
14216         (expand_builtin_longjmp, expand_builtin_nonlocal_goto): Likewise.
14217         (expand_builtin_return): Likewise.
14218         * cfgbuild.c (count_basic_blocks): Likewise.
14219         * cfgrtl.c (rtl_flow_call_edges_add): Likewise.
14220         * explow.c (emit_stack_restore): Likewise.
14221         * expmed.c (extract_bit_field_1): Likewise.
14222         * expr.c (convert_move, emit_move_complex_parts): Likewise.
14223         (emit_move_multi_word, store_constructor): Likewise.
14224         * function.c (do_clobber_return_reg, do_use_return_reg): Likewise.
14225         (thread_prologue_and_epilogue_insns): Likewise.
14226         * lower-subreg.c (resolve_simple_move): Likewise.
14227         * optabs.c (widen_operand, expand_binop): Likewise.
14228         (expand_doubleword_bswap, emit_no_conflict_block): Likewise.
14229         * reload.c (find_reloads): Likewise.
14230         * reload1.c (eliminate_regs_in_insn): Likewise.
14231         * stmt.c (expand_nl_goto_receiver): Likewise.
14232         * config/alpha/alpha.md (builtin_longjmp): Likewise.
14233         * config/arc/arc.md (*movdi_insn, *movdf_insn): Likewise.
14234         * config/arm/arm.c (arm_load_pic_register): Likewise.
14235         (thumb1_expand_epilogue, thumb_set_return_address): Likewise.
14236         * config/arm/arm.md (untyped_return): Likewise.
14237         * config/arm/linux-elf.h (PROFILE_HOOK): Likewise.
14238         * config/avr/avr.c (expand_prologue): Likewise.
14239         * config/bfin/bfin.c (do_unlink): Likewise.
14240         * config/bfin/bfin.md (<optab>di3, adddi3, subdi3): Likewise.
14241         * config/cris/cris.c (cris_expand_prologue): Likewise.
14242         * config/darwin.c (machopic_indirect_data_reference): Likewise.
14243         (machopic_legitimize_pic_address): Likewise.
14244         * config/frv/frv.c (frv_frame_access, frv_expand_epilogue): Likewise.
14245         (frv_ifcvt_modify_insn, frv_expand_mdpackh_builtin): Likewise.
14246         * config/i386/i386.c (ix86_expand_vector_move_misalign): Likewise.
14247         (ix86_expand_convert_uns_didf_sse): Likewise.
14248         (ix86_expand_vector_init_general): Likewise.
14249         * config/ia64/ia64.md (eh_epilogue): Likewise.
14250         * config/iq2000/iq2000.c (iq2000_expand_epilogue): Likewise.
14251         * config/m32c/m32c.c (m32c_emit_eh_epilogue): Likewise.
14252         * config/m32r/m32r.c (m32r_reload_lr): Likewise.
14253         (config/iq2000/iq2000.c): Likewise.
14254         * config/mips/mips.md (fixuns_truncdfsi2): Likewise.
14255         (fixuns_truncdfdi2, fixuns_truncsfsi2, fixuns_truncsfdi2): Likewise.
14256         (builtin_longjmp): Likewise.
14257         * config/mn10300/mn10300.md (call, call_value): Likewise.
14258         * config/pa/pa.md (nonlocal_goto, nonlocal_longjmp): Likewise.
14259         * config/pdp11/pdp11.md (abshi2): Likewise.
14260         * config/rs6000/rs6000.c (rs6000_emit_move): Likewise.
14261         * config/s390/s390.c (s390_emit_prologue): Likewise.
14262         * config/s390/s390.md (movmem_long, setmem_long): Likewise.
14263         (cmpmem_long, extendsidi2, zero_extendsidi2, udivmoddi4): Likewise.
14264         (builtin_setjmp_receiver, restore_stack_nonlocal): Likewise.
14265         * config/sh/sh.c (prepare_move_operands): Likewise.
14266         (output_stack_adjust, sh_expand_epilogue): Likewise.
14267         (sh_set_return_address, sh_expand_t_scc): Likewise.
14268         * config/sparc/sparc.c (load_pic_register): Likewise.
14269         * config/sparc/sparc.md (untyped_return, nonlocal_goto): Likewise.
14270         * config/spu/spu.c (spu_expand_epilogue): Likewise.
14271         * config/v850/v850.c (expand_epilogue): Likewise.
14272
14273 2008-05-31  Anatoly Sokolov  <aesok@post.ru>
14274
14275         * config/avr/avr.md (UNSPECV_WRITE_SP_IRQ_ON): New constants.
14276         (UNSPECV_WRITE_SP_IRQ_OFF): (Ditto.).
14277         (movhi_sp_r_irq_off, movhi_sp_r_irq_on): New insn.
14278         * config/avr/avr.c (expand_prologue, expand_epilogue): Use
14279         movhi_sp_r_irq_off and movhi_sp_r_irq_on insns for writing to the
14280         stack pointer register.
14281         (output_movhi): Remove code for interrupt specific writing to the
14282         stack pointer register.
14283
14284 2008-05-31  Richard Guenther  <rguenther@suse.de>
14285
14286         PR tree-optimization/34244
14287         * fold-const.c (tree_expr_nonnegative_warnv_p): Do not ask VRP.
14288         (tree_expr_nonzero_warnv_p): Likewise.
14289         * tree-vrp.c (vrp_expr_computes_nonnegative): Call
14290         ssa_name_nonnegative_p.
14291         (vrp_expr_computes_nonzero): Call ssa_name_nonzero_p.
14292         (extract_range_from_unary_expr): Use vrp_expr_computes_nonzero,
14293         not tree_expr_nonzero_warnv_p.
14294
14295         PR tree-optimization/36262
14296         Revert
14297         2007-11-29  Zdenek Dvorak  <ook@ucw.cz>
14298
14299         PR tree-optimization/34244
14300         * tree-vrp.c (adjust_range_with_scev): Clear scev cache.
14301         (record_numbers_of_iterations): New function.
14302         (execute_vrp): Cache the numbers of iterations of loops.
14303         * tree-scalar-evolution.c (scev_reset_except_niters):
14304         New function.
14305         (scev_reset): Use scev_reset_except_niters.
14306         * tree-scalar-evolution.h (scev_reset_except_niters): Declare.
14307
14308 2008-05-31  Bernd Schmidt  <bernd.schmidt@analog.com>
14309
14310         * config/bfin/bfin.h (TARGET_CPU_CPP_BUILTINS): Define
14311         __WORKAROUND_RETS when appropriate.
14312
14313 2008-05-31  Uros Bizjak  <ubizjak@gmail.com>
14314
14315         * config/i386/i386.md (*fop_<mode>_comm_mixed): Macroize from
14316         *fop_sf_comm_mixed and *fop_df_comm_mixed insn patterns using MODEF
14317         mode iterator.
14318         (*fop_<mode>_comm_sse): Macroize from *fop_sf_comm_sse and
14319         *fop_df_comm_sse insn patterns using MODEF mode iterator.
14320         (*fop_<mode>_comm_i387): Macroize from *fop_sf_comm_i387 and
14321         *fop_df_comm_i387 insn patterns using MODEF mode iterator.
14322         (*fop_<mode>_1_mixed): Macroize from *fop_sf_1_mixed and
14323         *fop_df_1_mixed insn patterns using MODEF mode iterator.
14324         (*fop_<mode>_1_sse): Macroize from *fop_sf_1_sse and
14325         *fop_df_1_sse insn patterns using MODEF mode iterator.
14326         (*fop_<mode>_1_i387): Macroize from *fop_sf_1_i387 and
14327         *fop_df_1_i387 insn patterns using MODEF mode iterator.
14328         (*fop_<MODEF:mode>_2_i387): Macroize from *fop_sf_2<mode>_i387 and
14329         *fop_df_2<mode>_i387 insn patterns using MODEF mode iterator.
14330         (*fop_<MODEF:mode>_3_i387): Macroize from *fop_sf_3<mode>_i387 and
14331         *fop_df_3<mode>_i387 insn patterns using MODEF mode iterator.
14332         (*fop_xf_2_i387): Rename from *fop_xf_2<mode>_i387.
14333         (*fop_xf_3_i387): Rename from *fop_xf_3<mode>_i387.
14334         (*fop_xf_4_i387): Use <MODE> for mode attribute.
14335         (*fop_xf_5_i387): Ditto.
14336         (*fop_xf_6_i387): Ditto.
14337
14338 2008-05-30  Richard Guenther  <rguenther@suse.de>
14339
14340         * builtins.c (build_string_literal): Avoid generating
14341         a non-gimple_val result.
14342
14343 2008-05-30  DJ Delorie  <dj@redhat.com>
14344
14345         * exec-tool.in: Use an environment variable (private) instead of a
14346         file (shared) as a semaphore, so as to not break parallel builds.
14347
14348 2008-05-30  Steven Bosscher  <stevenb.gcc@gmail.com>
14349
14350         * optabs.c (maybe_encapsulate_block): Remove.
14351         (emit_libcall_block): Adjust accordingly.
14352         * optabs.h (maybe_encapsulate_block): Remove prototype.
14353
14354         * config/rs6000/rs6000.c (rs6000_legitimize_tls_address):
14355         Don't use maybe_encapsulate_block.
14356
14357 2008-05-30  Steven Bosscher  <stevenb.gcc@gmail.com>
14358
14359         * config/rs6000/rs6000.c (rs6000_legitimize_address,
14360         rs6000_legitimize_reload_address, rs6000_emit_move): Make sure an
14361         rtx is a SYMBOL_REF before calling get_pool_constant.
14362
14363 2008-05-30  Eric Botcazou  <ebotcazou@adacore.com>
14364
14365         * fold-const.c (fold_unary) <CASE_CONVERT>: Add ??? comment.
14366
14367 2008-05-30  Danny Smith  <dannysmith@users.sourceforge.net>
14368
14369         * incpath.c: Use HOST_LACKS_INODE_NUMBERS conditional
14370         rather than OS names to choose INO_T_EQ definition.
14371         (DIRS_EQ) [!INO_T_EQ]: Don't worry about case in comparison.
14372         (add_path) [!INO_T_EQ]: Use lrealpath to fill canonical_name field.
14373
14374 2008-05-29  Daniel Franke  <franke.daniel@gmail.com>
14375
14376         PR target/36348
14377         * config/darwin-f.c: New.
14378         * config/t-darwin: Added rule to build darwin-f.o.
14379         * config.gcc: Defined new variable, fortran_target_objs.
14380         (*-*-darwin*): Set fortran_target_objs.
14381         * Makefile.in: Defined new variable FORTRAN_TARGET_OBJS.
14382         * configure.ac: Substitute fortran_target_objs, set FORTRAN_TARGET_OBJS.
14383         * configure: Regenerated.
14384
14385 2008-05-29  H.J. Lu  <hongjiu.lu@intel.com>
14386
14387         PR target/35771
14388         * config/i386/i386.c (ix86_function_arg_boundary): Convert to
14389         canonical type if needed.
14390
14391 2008-05-29  Eric Botcazou  <ebotcazou@adacore.com>
14392
14393         * tree-nested.c (check_for_nested_with_variably_modified): Fix typo.
14394
14395 2008-05-29  Richard Guenther  <rguenther@suse.de>
14396
14397         PR tree-optimization/36343
14398         PR tree-optimization/36346
14399         PR tree-optimization/36347
14400         * tree-flow.h (clobber_what_p_points_to): Declare.
14401         * tree-ssa-structalias.c (set_uids_in_ptset): Whether the
14402         pointed-to variable is dereferenced is irrelevant to whether
14403         the pointer can access the pointed-to variable.
14404         (clobber_what_p_points_to): New function.
14405         * tree-ssa-alias.c (set_initial_properties): Use it.
14406         * tree-ssa.c (verify_flow_sensitive_alias_info): Adjust
14407         call clobber check for NMTs.
14408
14409 2008-05-28  Seongbae Park  <seongbae.park@gmail.com>
14410
14411         * value-prof.c (tree_ic_transform): Use HOST_WIDEST_INT_PRINT_DEC
14412         for printing gcov_type.
14413
14414 2008-05-28  Seongbae Park  <seongbae.park@gmail.com>
14415
14416         * tree-ssa-propagate.c (set_rhs): Preserve the histogram
14417         and the eh region information.
14418         * value-prof.c (gimple_move_stmt_histograms): New function.
14419         * value-prof.h (gimple_move_stmt_histograms): New function declaration.
14420
14421 2008-05-28  Andreas Tobler  <a.tobler@schweiz.org>
14422
14423         * config/pa/pa.md: Remove extern frame_pointer_needed declaration.
14424
14425 2008-05-28  Seongbae Park <seongbae.park@gmail.com>
14426
14427         * value-prof.c (tree_ic_transform): Print counts.
14428         * tree-profile.c (tree_gen_ic_func_profiler):
14429         Clear __gcov_indreict_call_callee variable to avoid misattribution
14430         of the profile.
14431
14432 2008-05-28  Rafael Espíndola  <espindola@google.com>
14433
14434         * see.c (see_def_extension_not_merged): Use copy_rtx_if_shared to avoid
14435         invalid sharing.
14436
14437 2008-05-28  Richard Guenther  <rguenther@suse.de>
14438
14439         PR tree-optimization/36339
14440         * tree-ssa-alias.c (set_initial_properties): Move pt_anything
14441         and clobbering code out of the loop.
14442
14443 2008-05-28  Andreas Krebbel  <krebbel1@de.ibm.com>
14444
14445         * config/s390/constraints.md ('b', 'C', 'D', 'e'): New constraint
14446         letters defined.
14447
14448         * config/s390/s390.c (s390_compare_and_branch_condition_mask,
14449         s390_contiguous_bitmask_p, s390_symref_operand_p,
14450         s390_check_symref_alignment, s390_reload_larl_operand,
14451         s390_reload_symref_address): New functions.
14452         (s390_branch_condition_mnemonic): Support compare and branch
14453         instructions.
14454         (s390_mem_constraint): Avoid symrefs to accepted by the 'T'
14455         and 'W' constraints.
14456         (s390_secondary_reload): Add secondary reloads for unaligned
14457         symbol refs or symbol refs to floating point or QI/TI mode
14458         integer values.
14459         (legitimate_address_p): Accept symbol references as addresses.
14460         (s390_expand_insv): Use rotate and insert selected bits
14461         instruction for insv when building for z10.
14462         (print_operand_address): Handle symbol ref addresses.
14463         (print_operand): Output modifier 'c' added for signed byte values.
14464         (s390_encode_section_info): Mark symbol refs with
14465         SYMBOL_FLAG_NOT_NATURALLY_ALIGNED if appropriate.
14466
14467         * config/s390/s390.md (SIL,RRS,RIS): New instruction formats added.
14468         (length attribute): RRF, RRR have 4 byte length.
14469         (FPALL, INTALL): New mode iterators added.
14470         (*tstdi_sign, *cmpdi_ccs_sign, *cmpsi_ccs_sign,
14471         *cmp<mode>_ccs, *cmpdi_ccu_zero, *cmpdi_ccu, *cmpsi_ccu, *cmphi_ccu,
14472         *movdi_64, *movsi_zarch, *movhi, movmem<mode>, *movmem_short,
14473         *extendsidi2, *extendhidi2_extimm, *extendhisi2_extimm,
14474         *zero_extendsidi2, adddi3, *adddi3_31z, *adddi3_31, addsi3,
14475         *add<mode>3, *add<mode>3_carry1_cc, *add<mode>3_carry2_cc,
14476         *add<mode>3_cc, *add<mode>3_imm_cc, *muldi3_sign, muldi3,
14477         *mulsi3_sign, mulsi3, mulsidi3): Patterns enhanced with z10
14478         instructions.
14479         (*cmphi_ccs_z10, *cmpdi_ccs_signhi_rl, *cmpsi_ccu_zerohi_rlsi,
14480         *cmp<GPR:mode>_ccu_zerohi_rldi, *cmp_and_br_signed_<mode>,
14481         *cmp_and_br_unsigned_<mode>, reload<INTALL:mode><P:mode>_tomem_z10,
14482         reload<INTALL:mode><P:mode>_toreg_z10,
14483         reload<FPALL:mode><P:mode>_tomem_z10,
14484         reload<FPALL:mode><P:mode>_toreg_z10,
14485         reload<P:mode>_larl_odd_addend_z10, *execute_rl, *insv<mode>_z10,
14486         *insv<mode>_z10_noshift, *insv<mode>_or_z10_noshift,
14487         *zero_extendhi<mode>2_z10, *cmp_and_trap_signed_int<mode>,
14488         *cmp_and_trap_unsigned_int<mode>, prefetch): New pattern or expander
14489         definition.
14490         (movmem, clrmem, cmpmem): New splitters added.
14491
14492         * config/s390/predicates.md (larl_operand): Use
14493         SYMBOL_REF_FLAGS (op) & SYMBOL_FLAG_ALIGN1 replaced with
14494         SYMBOL_REF_ALIGN1_P.
14495         (s390_signed_integer_comparison,
14496         s390_unsigned_integer_comparison): New predicates.
14497
14498         * config/s390/s390-protos.h (s390_check_symref_alignment,
14499         s390_contiguous_bitmask_p, s390_reload_larl_operand,
14500         s390_reload_symref_address,
14501         s390_compare_and_branch_condition_mask): Prototypes added.
14502
14503         * config/s390/s390.h (TARGET_MEM_CONSTRAINT,
14504         SYMBOL_REF_ALIGN1_P, SYMBOL_FLAG_NOT_NATURALLY_ALIGNED,
14505         SYMBOL_REF_NOT_NATURALLY_ALIGNED_P): Macro definition added.
14506
14507 2008-05-28  Andreas Krebbel  <krebbel1@de.ibm.com>
14508
14509         * config/s390/s390.c (z10_cost): New cost function for z10.
14510         (s390_handle_arch_option, override_options): Support -march=z10 switch.
14511         (s390_issue_rate): Adjust issue rate for z10.
14512         * config/s390/s390.h (processor_type): Add PROCESSOR_2097_Z10.
14513         (processor_flags): Add PF_Z10.
14514         (TARGET_CPU_Z10, TARGET_Z10): New macro definitions.
14515         * config/s390/s390.md (cpu, cpu_facility attributes): Add z10.
14516         * gcc/config.gcc: Add z10.
14517
14518 2008-05-28  Richard Guenther  <rguenther@suse.de>
14519
14520         PR tree-optimization/36291
14521         * tree-flow. h (struct gimple_df): Remove var_anns member.
14522         * tree-flow-inline.h (gimple_var_anns): Remove.
14523         (var_ann): Simplify.
14524         * tree-dfa.c (create_var_ann): Simplify.
14525         (remove_referenced_var): Clear alias info from var_anns of globals.
14526         * tree-ssa.c (init_tree_ssa): Do not allocate var_anns.
14527         (delete_tree_ssa): Clear alias info from var_anns of globals.
14528         Do not free var_anns.
14529         (var_ann_eq): Remove.
14530         (var_ann_hash): Likewise.
14531
14532 2008-05-28  Mark Shinwell  <shinwell@codesourcery.com>
14533
14534         * config/mips/mips.c (mips_cpu_info_table): Add loongson2e
14535         and loongson2f entries.
14536         (mips_rtx_cost_data): Add entries for Loongson-2E/2F.
14537         * config/mips/mips.h (processor_type): Add Loongson-2E
14538         and Loongson-2F entries.
14539         (TARGET_LOONGSON_2E, TARGET_LOONGSON_2F, TARGET_LOONGSON_2EF): New.
14540         (MIPS_ISA_LEVEL_SPEC): Handle Loongson-2E/2F.
14541         * config/mips/mips.md (define_attr cpu): Add loongson2e and loongson2f.
14542         * doc/invoke.texi (MIPS Options): Document loongson2e
14543         and loongson2f processor names.
14544
14545 2008-05-27  H.J. Lu  <hongjiu.lu@intel.com>
14546
14547         PR target/35767
14548         PR target/35771
14549         * config/i386/i386.c (ix86_function_arg_boundary): Use
14550         alignment of canonical type.
14551         (ix86_expand_vector_move): Check unaligned memory access for
14552         all SSE modes.
14553
14554 2008-05-27  H.J. Lu  <hongjiu.lu@intel.com>
14555
14556         * dwarf2out.c (current_fde): Change return type to dw_fde_ref.
14557         Moved to the front of file.
14558
14559 2008-05-27  Xuepeng Guo  <xuepeng.guo@intel.com>
14560             H.J. Lu  <hongjiu.lu@intel.com>
14561
14562         * dwarf2out.c (current_fde): New.
14563         (add_cfi): Use it.
14564         (lookup_cfa:): Likewise.
14565         (dwarf2out_end_epilogue): Likewise.
14566         (dwarf2out_note_section_used): Likewise.
14567
14568 2008-05-27  Michael Matz  <matz@suse.de>
14569
14570         PR c++/27975
14571         * c.opt (Wenum-compare): New warning option.
14572         * doc/invoke.texi  (Warning Options): Document -Wenum-compare.
14573
14574 2008-05-27  Michael Matz  <matz@suse.de>
14575
14576         PR middle-end/36326
14577         * tree-gimple.c (is_gimple_mem_rhs): Remove work-around for
14578         non-BLKmode types.
14579         * tree-tailcall.c (find_tail_calls): Don't mark calls storing
14580         into memory as tail calls.
14581
14582 2008-05-27  Richard Guenther  <rguenther@suse.de>
14583
14584         PR tree-optimization/36339
14585         * tree-ssa-alias.c (set_initial_properties): Escaped pt_anything
14586         pointers cause all addressable variables to be call clobbered.
14587
14588 2008-05-27  Richard Guenther  <rguenther@suse.de>
14589
14590         PR tree-optimization/36245
14591         * tree-ssa-address.c (add_to_parts): Deal with non-pointer bases.
14592
14593 2008-05-27  Andreas Krebbel  <krebbel1@de.ibm.com>
14594
14595         * config/s390/s390.md: Replace all occurences of the 'm'
14596         constraint with 'RT'.
14597
14598 2008-05-27  Andreas Krebbel  <krebbel1@de.ibm.com>
14599
14600         * config/s390/s390.md ("cpu_facility", "enabled"): Attribute
14601         definitions added.
14602         ("*movdi_64dfp", "*movdi_64extimm", "*movdi_64"): Merged into
14603         "*movdi_64".
14604         ("*anddi3_extimm", "*anddi3"): Merged into "*anddi3".
14605         ("*iordi3_extimm", "*iordi3"): Merged into "*iordi3".
14606         ("*xordi3_extimm", "*xordi3"): Merged into "*xordi3".
14607
14608 2008-05-27  Andreas Krebbel  <krebbel1@de.ibm.com>
14609
14610         * reload.c: (find_reloads): Skip alternatives according to the
14611         "enabled" attribute. Constify the constraint variable.
14612         * recog.c (get_attr_enabled): Add default implementation.
14613         (extract_insn): Set the alternative_enabled_p array
14614         in the recog_data struct.
14615         (preprocess_constraints, constrain_operands): Skip
14616         alternatives according to the "enabled" attribute
14617         * recog.h (struct recog_data): New field alternative_enabled_p.
14618         (skip_alternative): New inline function.
14619         * regclass.c: (record_operand_costs): Check the "enabled" attribute.
14620         (record_reg_classes): Skip alternative according to the
14621         "enabled" attribute.
14622
14623         * doc/md.texi: Add documention for the "enabled" attribute.
14624
14625 2008-05-27  Andreas Krebbel  <krebbel1@de.ibm.com>
14626
14627         * defaults.h (TARGET_MEM_CONSTRAINT): New target macro added.
14628         * postreload.c (reload_cse_simplify_operands): Replace 'm'
14629         constraint with TARGET_MEM_CONSTRAINT.
14630         * recog.c (asm_operand_ok, preprocess_constraints,
14631         constrain_operands): Likewise.
14632         * regclass.c (record_reg_classes): Likewise.
14633         * reload.c (find_reloads, alternative_allows_const_pool_ref): Likewise.
14634         * reload1.c (maybe_fix_stack_asms): Likewise.
14635         * stmt.c (parse_output_constraint, parse_input_constraint): Likewise.
14636         * recog.h: Adjust comment.
14637         * genpreds.c (generic_constraint_letters): Remove 'm' constraint.
14638         * genoutput.c (note_constraint): Don't emit error for 'm' constraint.
14639         * doc/md.texi: Add a note to description of 'm' constraint.
14640         * doc/tm.texi: Document the new TARGET_MEM_CONSTRAINT macro.
14641
14642 2008-05-27  Eric Botcazou  <ebotcazou@adacore.com>
14643
14644         * tree-sra.c (sra_type_can_be_decomposed_p) <RECORD_TYPE>: Make sure
14645         that the bitfield is of integral type before testing its precision.
14646
14647 2008-05-27  Trevor Smigiel  <trevor_smigiel@playstation.sony.com>
14648             Sa Liu  <saliu@de.ibm.com>
14649
14650         * config/spu/spu.c (spu_init_libfuncs): Add __multi3, __divti3,
14651         __modti3, __udivti3, __umodti3 and __udivmodti4.
14652         * config/spu/t-spu-elf (LIB2FUNCS_STATIC_EXTRA): Add files
14653         that implement TImode mul and div functions.
14654         * config/spu/multi3.c: New. Implement __multi3.
14655         * config/spu/divmodti4.c: New. Implement _udivmodti4 and others.
14656         * testsuite/gcc.target/spu/muldivti3.c: New. Test TImode mul and div
14657         functions on SPU.
14658
14659 2008-05-26  Steven Bosscher  <stevenb.gcc@gmail.com>
14660
14661         * config/rs6000/rs6000.c (rs6000_legitimize_tls_address): Generate
14662         new tls_gd_* and tls_ld_* insns instead of an insn sequence.
14663         * config/rs6000/rs6000.md (TLSmode, tls_abi_suffix, tls_insn_suffix,
14664         tls_sysv_suffix): New mode and mode attribute iterators.
14665         (tls_gd_32, tls_gd_64, tls_ld_32, tls_ld_64): Remove.
14666         (lts_gd_aix*, tls_gd_sysv*, tls_ld_aix*, tls_ld_sysv*): New patterns.
14667         (tls_dtprel_*, tls_dtprel_ha_*, tls_dtprel_lo_*, tls_got_dtprel_*,
14668         tls_tprel_*, tls_tprel_ha_*, tls_tprel_lo_*, tls_got_tprel_*,
14669         tls_tls_*): Merge 32 bit and 64 bit variants using aforementioned
14670         iterators.
14671
14672 2008-05-26  Eric Botcazou  <ebotcazou@adacore.com>
14673
14674         PR tree-optimization/36329
14675         * tree.h (CALL_CANNOT_INLINE_P): Add access check.
14676         * tree-gimple.h (CALL_STMT_CANNOT_INLINE_P): New macro.
14677         * cgraphbuild.c (initialize_inline_failed): Use the latter
14678         macro in lieu of the former.
14679         * ipa-inline.c (cgraph_mark_inline): Likewise.
14680         (cgraph_decide_inlining_of_small_function): Likewise.
14681         (cgraph_decide_inlining): Likewise.
14682         (cgraph_decide_inlining_incrementally): Likewise.
14683
14684 2008-05-26  Tristan Gingold  <gingold@adacore.com>
14685             Anatoly Sokolov  <aesok@post.ru>
14686
14687         * config/avr/avr.md ("call_prologue_saves"): Use hi8(gs())/lo8(gs())
14688         instead of pm_lo8/pm_hi8 to makes this call working on avr6.
14689         * config/avr/avr.c (expand_prologue): Tune "call_prologue"
14690         optimization for 'avr6' architecture.
14691
14692 2008-05-26  Andy Hutchinson  <hutchinsonandy@aim.com>
14693
14694         PR target/34932
14695         * config/avr/avr.md (*addhi3_zero_extend2): Remove.
14696
14697 2008-05-26  Richard Guenther  <rguenther@suse.de>
14698
14699         * tree-ssa-sccvn.c (expr_has_constants): Declare.
14700         (visit_reference_op_load): Initialize VN_INFO->has_constants properly.
14701
14702 2008-05-26  H.J. Lu  <hongjiu.lu@intel.com>
14703
14704         PR middle-end/36253
14705         * caller-save.c (insert_restore): Verify alignment of spill space.
14706         (insert_save): Likewise.
14707         * cfgexpand.c (LOCAL_ALIGNMENT): Removed.
14708         * defaults.h (LOCAL_ALIGNMENT): New. Provide default.
14709         (STACK_SLOT_ALIGNMENT): Likewise.
14710         * function.c (LOCAL_ALIGNMENT): Removed.
14711         (get_stack_local_alignment): New.
14712         (assign_stack_local): Use it.  Set alignment on stack slot.
14713         (assign_stack_temp_for_type): Use get_stack_local_alignment.
14714         * config/i386/i386.h (LOCAL_ALIGNMENT): Updated.
14715         (STACK_SLOT_ALIGNMENT): New.
14716         * config/i386/i386.c (ix86_local_alignment): Handle caller-save
14717         stack slot in XFmode.
14718
14719         * doc/tm.texi (STACK_SLOT_ALIGNMENT): New.
14720
14721 2008-05-26  Kai Tietz  <kai.tietz@onevision.com>
14722
14723         PR/36321
14724         * config/i386/i386.md (allocate_stack_worker_64): Make sure
14725         argument operand in rax isn't removed.
14726
14727 2008-05-26  Richard Guenther  <rguenther@suse.de>
14728
14729         PR middle-end/36300
14730         * fold-const.c (extract_muldiv_1): Use TYPE_OVERFLOW_WRAPS,
14731         not TYPE_UNSIGNED.  Use TYPE_PRECISION instead of GET_MODE_SIZE.
14732
14733 2008-05-26  Daniel Franke  <franke.daniel@gmail.com>
14734
14735         PR bootstrap/36331
14736         * c-cppbuiltin.c (define__GNUC__): Re-add definition of __GNUG__.
14737
14738 2008-05-26  Dominique Dhumieres  <dominiq@lps.ens.fr>
14739
14740         * config/darwin-c.c: Include "incpath.h" instead of "c-incpath.h".
14741         * config/t-darwin: Use "incpath.h" instead of "c-incpath.h".
14742
14743 2008-05-25  Eric Botcazou  <ebotcazou@adacore.com>
14744
14745         * tree-nested.c (convert_tramp_reference) <ADDR_EXPR>: Do not
14746         build a trampoline if we don't want one.
14747         * varasm.c (initializer_constant_valid_p) <ADDR_EXPR>: Do not
14748         return zero for nested functions if we don't want a trampoline.
14749
14750 2008-05-26  Daniel Franke  <franke.daniel@gmail.com>
14751
14752         * doc/invoke.texi: Added f77, f77-cpp-input to list of file types.
14753
14754 2008-05-26  Daniel Franke  <franke.daniel@gmail.com>
14755
14756         PR fortran/18428
14757         * c.opt: Removed undocumented option '-lang-fortran'.
14758         * c-common.h: Removed global variable 'lang_fortran'.
14759         * c-opts.c (c_common_handle_option): Removed code to handle
14760         option '-lang-fortran'. Updated includes.
14761         * c-cppbuiltin.c (c_cpp_builtins): Removed conditional
14762         definition of '__GFORTRAN__'.
14763         (define__GNUC__): Reimplemented to use BASEVER and
14764         cpp_define_formatted.
14765         (builtin_define_with_value_n): Removed.
14766         * c-incpath.h: Renamed to ...
14767         * incpath.h: ... this.
14768         * c-incpath.c: Renamed to ...
14769         * incpath.c: ... this. Updated includes.
14770         * fix-header.c: Updated includes.
14771         * Makefile.in: Replaced c-incpath.[ch] by incpath.[ch].
14772         (c-cppbuiltin.o): Added dependency on and definition of BASEVER.
14773         (OBJ-archive): Added cppdefault.o, incpath.o and prefix.o.
14774
14775 2008-05-25  Eric Botcazou  <ebotcazou@adacore.com>
14776
14777         * tree.h: Update the table of flags used on tree nodes.
14778         (TREE_NO_TRAMPOLINE): New accessor for static_flag.
14779         (SAVE_EXPR_RESOLVED_P): Use automatically-built access check.
14780         (FORCED_LABEL): Add access check.
14781         (CALL_EXPR_RETURN_SLOT_OPT): Likewise.
14782         (ASM_INPUT_P): Likewise.
14783         (ASM_VOLATILE_P): Likewise.
14784         (EH_FILTER_MUST_NOT_THROW): Access static_flag directly.
14785         (OMP_SECTION_LAST): Access private_flag directly.
14786         (OMP_RETURN_NOWAIT): Likewise.
14787         (OMP_PARALLEL_COMBINED): Likewise.
14788         (OMP_CLAUSE_PRIVATE_DEBUG): Access public_flag directly.
14789         (OMP_CLAUSE_LASTPRIVATE_FIRSTPRIVATE): Likewise.
14790         * tree-ssa-propagate.c (STMT_IN_SSA_EDGE_WORKLIST): Access
14791         deprecated_flag directly.
14792
14793 2008-05-25  H.J. Lu  <hongjiu.lu@intel.com>
14794
14795         * final.c (frame_pointer_needed): Removed.
14796         * flags.h (frame_pointer_needed): Likewise.
14797
14798         * function.h (rtl_data): Add frame_pointer_needed.
14799         (frame_pointer_needed): New.
14800
14801 2008-05-25  Arthur Loiret  <arthur.loiret@u-psud.fr>
14802
14803         * config.gcc (sh2[lbe]*-*-linux*): Allow target.
14804
14805 2008-05-25  Steven Bosscher  <stevenb.gcc@gmail.com>
14806
14807         * gcse.c (hash_scan_set): Do not pick up a REG_EQUAL value if
14808         SRC is a REG.
14809
14810 2008-05-25  Alan Modra  <amodra@bigpond.net.au>
14811
14812         * c-common.c (strip_array_types): Move function to..
14813         * tree.c: ..here.
14814         (get_inner_array_type): Delete.
14815         * c-common.h (strip_array_types): Move declaration to..
14816         * tree.h: ..here.
14817         (get_inner_array_type): Delete.
14818         * config/i386/i386.c (x86_field_alignment): Use strip_array_types.
14819         * config/rs6000/aix.h (ADJUST_FIELD_ALIGN): Likewise.
14820         * config/rs6000/linux64.h (ADJUST_FIELD_ALIGN): Likewise.
14821         * config/pa/pa.c (emit_move_sequence): Likewise.
14822
14823 2008-05-24  H.J. Lu  <hongjiu.lu@intel.com>
14824
14825         * config/i386/i386.md (*sse_prologue_save_insn): Set length
14826         attribute to 34.
14827
14828 2008-05-24  Andy Hutchinson  <hutchinsonandy@aim.com>
14829
14830         * function.c: Include target hook for nonlocal_goto frame value.
14831
14832 2008-05-24  Richard Guenther  <rguenther@suse.de>
14833
14834         * tree-dfa.c (refs_may_alias_p): Re-instantiate case that a scalar
14835         variable can be only accessed through a pointer or a union.
14836
14837 2008-05-24  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
14838
14839         * builtins.c (fold_builtin_fpclassify): Fix spelling of FP_INFINITE.
14840         * doc/extend.texi: Likewise.
14841
14842 2008-05-23  DJ Delorie  <dj@redhat.com>
14843
14844         * config/m32c/jump.md (untyped_call): Add.
14845
14846         * config/m32c/m32c.c (m32c_return_addr_rtx): Change pointer type
14847         for A24 to PSImode.
14848         (m32c_address_cost): Detail costs for indirect offsets.
14849
14850 2008-05-23  Rafael Espíndola  <espindola@google.com>
14851
14852         * see.c (see_get_extension_data): Don't use SUBREG_REG to test
14853         if a node is a SUBREG.
14854         (see_analyze_one_def): Don't use SUBREG_REG to test if a node
14855         is a SUBREG.
14856
14857 2008-05-23  Paul Brook  <paul@codesourcery.com>
14858             Carlos O'Donell  <carlos@codesourcery.com>
14859
14860         * doc/extend.texi: Clarify use of __attribute__((naked)).
14861         * doc/tm.texi: Document TARGET_ALLOCATE_STACK_SLOTS_FOR_ARGS.
14862         * target.h (gcc_target): Add allocate_stack_slots_for_args.
14863         * function.c (use_register_for_decl): Use
14864         targetm.calls.allocate_stack_slots_for_args.
14865         * target-def.h (TARGET_CALLS): Add TARGET_ALLOCATE_STACK_SLOTS_FOR_ARGS.
14866         * config/arm/arm.c (arm_allocate_stack_slots_for_args): New function.
14867         (TARGET_ALLOCATE_STACK_SLOTS_FOR_ARGS): Define.
14868
14869 2008-05-23  Eric Botcazou  <ebotcazou@adacore.com>
14870
14871         * expr.c (highest_pow2_factor) <BIT_AND_EXPR>: New case.
14872
14873 2008-05-23  Steven Munroe  <sjmunroe@us.ibm.com>
14874
14875         * config/rs6000/darwin-ldouble.c (fmsub): Eliminate the full
14876         PACK/UNPACK between FP_SUB_Q and FD_TRUNC so that the result
14877         is only rounded once.
14878
14879 2008-05-23  Richard Guenther  <rguenther@suse.de>
14880
14881         * tree-ssa-operands.c (mark_difference_for_renaming): Use bitmap_xor.
14882
14883 2008-05-23  Uros Bizjak  <ubizjak@gmail.com>
14884             Jakub Jelinek  <jakub@redhat.com>
14885
14886         PR target/36079
14887         * configure.ac: Handle --enable-cld.
14888         * configure: Regenerated.
14889         * config.gcc: Add USE_IX86_CLD to tm_defines for x86 targets.
14890         * config/i386/i386.h (struct machine_function): Add needs_cld field.
14891         (ix86_current_function_needs_cld): New define.
14892         * config/i386/i386.md (UNSPEC_CLD): New unspec volatile constant.
14893         (cld): New isns pattern.
14894         (strmov_singleop, rep_mov, strset_singleop, rep_stos, cmpstrnqi_nz_1,
14895         cmpstrnqi_1, strlenqi_1): Set ix86_current_function_needs_cld flag.
14896         * config/i386/i386.opt (mcld): New option.
14897         * config/i386/i386.c (ix86_expand_prologue): Emit cld insn if
14898         TARGET_CLD and ix86_current_function_needs_cld.
14899         (override_options): Use -mcld by default for 32-bit code if
14900         USE_IX86_CLD.
14901
14902         * doc/install.texi (Options specification): Document --enable-cld.
14903         * doc/invoke.texi (Machine Dependent Options)
14904         [i386 and x86-64 Options]: Add -mcld option.
14905         (Intel 386 and AMD x86-64 Options): Document -mcld option.
14906
14907 2008-05-23  Kai Tietz  <kai.tietz@onevison.com>
14908         * config/i386/i386.c (return_in_memory_32): Add ATTRIBUTE_UNUSED.
14909         (return_in_memory_64): Likewise.
14910         (return_in_memory_ms_64): Likewise.
14911
14912 2008-05-23  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
14913
14914         * builtin-types.def (BT_FN_INT_INT_INT_INT_INT_INT_VAR): New.
14915         * builtins.c (fold_builtin_fpclassify): New.
14916         (fold_builtin_varargs): Handle BUILT_IN_FPCLASSIFY.
14917         * builtins.def (BUILT_IN_FPCLASSIFY): New.
14918         * c-common.c (handle_type_generic_attribute): Adjust to accept
14919         fixed arguments before an elipsis.
14920         (check_builtin_function_arguments): Handle BUILT_IN_FPCLASSIFY.
14921         * doc/extend.texi: Document __builtin_fpclassify.
14922
14923 2008-05-22  Aldy Hernandez  <aldyh@redhat.com>
14924
14925         * omp-low.c (gate_expand_omp_ssa): Remove.
14926         (pass_expand_omp_ssa): Remove.
14927         (gate_expand_omp): Do not check for flag_openmp_ssa.
14928         * common.opt (-fopenmp-ssa): Remove.
14929         * passes.c (init_optimization_passes): Remove pass_expand_omp_ssa.
14930
14931 2008-05-22  Kaz Kojima  <kkojima@gcc.gnu.org>
14932
14933         * config/sh/sh.opt (mfixed-range): New option.
14934         * config/sh/sh-protos.h (sh_fix_range): Declare.
14935         * config/sh/sh.c (sh_fix_range): New function.
14936         * config/sh/sh.h (sh_fixed_range_str): Declare.
14937         (OVERRIDE_OPTIONS): Call sh_fix_range if sh_fixed_range_str
14938         is not empty.
14939         * doc/invoke.texi (SH Options): Document -mfixed-range.
14940
14941 2008-05-22  Kai Tietz  <kai.tietz@onevision.com>
14942
14943         * config/i386/sol2-10.h (SUBTARGET_RETURN_IN_MEMORY): Undefine
14944         it before the redeclaration.
14945
14946 2008-05-22  Anatoly Sokolov <aesok@post.ru>
14947
14948         * config/avr/avr.c (get_sequence_length): Add new function.
14949         (expand_prologue, expand_epilogue): Remove duplicate code.
14950
14951 2008-05-22  Rafael Espíndola  <espindola@google.com>
14952
14953         * see.c (see_pre_insert_extensions): Use copy_rtx to avoid invalid rtx
14954         sharing.
14955
14956 2008-05-22  H.J. Lu  <hongjiu.lu@intel.com>
14957
14958         * defaults.h (UNITS_PER_SIMD_WORD): Add scalar mode as argument.
14959         * doc/tm.texi (UNITS_PER_SIMD_WORD): Likewise.
14960
14961         * tree-vect-analyze.c (vect_compute_data_ref_alignment): Replace
14962         UNITS_PER_SIMD_WORD with GET_MODE_SIZE (TYPE_MODE (vectype)).
14963         (vect_update_misalignment_for_peel): Likewise.
14964         (vector_alignment_reachable_p): Likewise.
14965         * tree-vect-transform.c (vectorizable_load): Likewise.
14966         * tree-vectorizer.c (vect_supportable_dr_alignment): Likewise.
14967         (get_vectype_for_scalar_type): Pass mode of scalar_type
14968         to UNITS_PER_SIMD_WORD.
14969
14970         * config/arm/arm.h (UNITS_PER_SIMD_WORD): Updated.
14971         * config/i386/i386.h (UNITS_PER_SIMD_WORD): Likewise.
14972         * config/mips/mips.h (UNITS_PER_SIMD_WORD): Likewise.
14973         * config/rs6000/rs6000.h (UNITS_PER_SIMD_WORD): Likewise.
14974         * config/sparc/sparc.h (UNITS_PER_SIMD_WORD): Likewise.
14975
14976 2008-05-22  Ira Rosen  <irar@il.ibm.com>
14977
14978         PR tree-optimization/36293
14979         * tree-vect-transform.c (vect_transform_strided_load): Don't check
14980         if the first load must be skipped because of a gap.
14981
14982 2008-05-22  Richard Guenther  <rguenther@suse.de>
14983
14984         * tree-dfa.c (refs_may_alias_p): Exit early if possible.  Handle
14985         more cases of offset disambiguation that is possible if
14986         strict-aliasing rules apply.
14987         * tree-ssa-loop-im.c (mem_refs_may_alias_p): Use refs_may_alias_p
14988         for basic offset and type-based disambiguation.
14989
14990 2008-05-21  H.J. Lu  <hongjiu.lu@intel.com>
14991
14992         * config/i386/i386.c (ix86_expand_vector_init_one_var): Use
14993         ix86_expand_vector_set on V16QImode for SSE4.1.
14994
14995 2008-05-21  Tom Tromey  <tromey@redhat.com>
14996
14997         * c.opt (Wimport): Mark as undocumented.
14998         * doc/invoke.texi (Option Summary): Don't mention -Wimport or
14999         -Wno-import.
15000         (Warning Options): Likewise.
15001         * doc/cppopts.texi: Don't mention -Wimport.
15002
15003 2008-05-21  Sebastian Pop  <sebastian.pop@amd.com>
15004
15005         PR tree-optimization/36287
15006         PR tree-optimization/36286
15007         * lambda-code.c (build_access_matrix): Do not use the loop->num
15008         for computing the number of induction variables: use the loop depth
15009         instead.
15010
15011 2008-05-21  Kai Tietz  <kai.tietz@onevision.com>
15012
15013         PR/36280
15014         * config/i386/cygming.h (ASM_OUTPUT_LABELREF): Honor
15015         option -f(no-)leading-underscore.
15016
15017 2008-05-21  H.J. Lu  <hongjiu.lu@intel.com>
15018
15019         * config/i386/i386.c (ix86_expand_vector_init_general): Use
15020         GET_MODE_NUNITS (mode).
15021
15022 2008-05-21  Peter Bergner  <bergner@vnet.ibm.com>
15023
15024         * doc/invoke.texi: Add cpu_type's 464 and 464fp.
15025         (-mmulhw): Add 464 to description.
15026         (-mdlmzb): Likewise.
15027         * config.gcc: Handle --with-cpu=464 and --with-cpu=464fp.
15028         * config/rs6000/rs6000.c (processor_target_table): Add 464 and
15029         464fp entries.
15030         * config/rs6000/rs6000.h (ASM_CPU_SPEC): Add 464 and 464fp support.
15031         * config/rs6000/t-fprules (MULTILIB_MATCHES_FLOAT): Include -mcpu=464.
15032         * config/rs6000/rs6000.md: Update comments for 464.
15033
15034 2008-05-21  Janis Johnson  <janis187@us.ibm.com>
15035
15036         * doc/sourcebuild.texi (Test Directives): Add dg-xfail-run-if.
15037
15038 2008-05-21  H.J. Lu  <hongjiu.lu@intel.com>
15039
15040         * config/i386/sse.md (vec_extractv4sf): Removed.
15041         (vec_extractv2df): Likewise.
15042         (vec_extractv2di): Likewise.
15043         (vec_extractv4si): Likewise.
15044         (vec_extractv8hi): Likewise.
15045         (vec_extractv16qi): Likewise.
15046         (vec_extract<mode>): New.
15047
15048 2008-05-21  H.J. Lu  <hongjiu.lu@intel.com>
15049
15050         * config/i386/sse.md (vec_setv4sf): Removed.
15051         (vec_setv2df): Likewise.
15052         (vec_setv2di): Likewise.
15053         (vec_setv4si): Likewise.
15054         (vec_setv8hi): Likewise.
15055         (vec_setv16qi): Likewise.
15056         (vec_set<mode>): New.
15057
15058 2008-05-21  H.J. Lu  <hongjiu.lu@intel.com>
15059
15060         * config/i386/i386.c (ix86_expand_vector_init_general): Remove
15061         goto for vec_concat and vec_interleave.
15062
15063 2008-05-21  H.J. Lu  <hongjiu.lu@intel.com>
15064
15065         * config/i386/sse.md (vec_initv4sf): Removed.
15066         (vec_initv2df): Likewise.
15067         (vec_initv2di): Likewise.
15068         (vec_initv4si): Likewise.
15069         (vec_initv8hi): Likewise.
15070         (vec_initv16qi): Likewise.
15071         (vec_init<mode>): New.
15072
15073 2008-05-21  Joseph Myers  <joseph@codesourcery.com>
15074
15075         * collect2.c (find_a_file): Use IS_ABSOLUTE_PATH.
15076
15077 2008-05-21  Tom Tromey  <tromey@redhat.com>
15078
15079         * ggc-zone.c (lookup_page_table_if_allocated): New function.
15080         (zone_find_object_offset): Likewise.
15081         (gt_ggc_m_S): Likewise.
15082         (highest_bit): Likewise.
15083         * ggc-page.c (gt_ggc_m_S): New function.
15084         * stringpool.c (string_stack): Remove.
15085         (init_stringpool): Update.
15086         (ggc_alloc_string): Use ggc_alloc.
15087         (maybe_delete_ident): New function.
15088         (ggc_purge_stringpool): Likewise.
15089         (gt_ggc_m_S): Remove.
15090         * ggc-common.c (ggc_protect_identifiers): New global.
15091         (ggc_mark_roots): Call ggc_purge_stringpool.  Use
15092         ggc_protect_identifiers.
15093         * ggc.h (ggc_protect_identifiers): Declare.
15094         (gt_ggc_m_S): Update.
15095         (ggc_purge_stringpool): Declare.
15096         * toplev.c (compile_file): Set and reset ggc_protect_identifiers.
15097         * gengtype.c (write_types_process_field) <TYPE_STRING>: Remove
15098         special case.
15099         (write_root): Cast gt_ggc_m_S to gt_pointer_walker.
15100
15101 2008-05-21  David S. Miller  <davem@davemloft.net>
15102
15103         * config.gcc (sparc-*-linux*): Always include sparc/t-linux in
15104         tmake_file.
15105
15106 2008-05-21  Eric Botcazou  <ebotcazou@adacore.com>
15107
15108         * cfgexpand.c (tree_expand_cfg): Zap the EH throw statement table
15109         once finished.
15110
15111 2008-05-20  David Daney  <ddaney@avtrex.com>
15112
15113         * config/mips/mips.md (UNSPEC_SYNC_NEW_OP_12,
15114         UNSPEC_SYNC_OLD_OP_12, UNSPEC_SYNC_EXCHANGE_12): New define_constants.
15115         (UNSPEC_SYNC_EXCHANGE, UNSPEC_MEMORY_BARRIER, UNSPEC_SET_GOT_VERSION,
15116         UNSPEC_UPDATE_GOT_VERSION): Renumber.
15117         (optab, insn): Add 'plus' and 'minus' to define_code_attr.
15118         (atomic_hiqi_op): New define_code_iterator.
15119         (sync_compare_and_swap<mode>): Call mips_expand_atomic_qihi instead of
15120         mips_expand_compare_and_swap_12.
15121         (compare_and_swap_12): Use MIPS_COMPARE_AND_SWAP_12 instead of
15122         MIPS_COMPARE_AND_SWAP_12_0.  Pass argument to MIPS_COMPARE_AND_SWAP_12.
15123         (sync_<optab><mode>, sync_old_<optab><mode>,
15124         sync_new_<optab><mode>, sync_nand<mode>, sync_old_nand<mode>,
15125         sync_new_nand<mode>): New define_expands for HI and QI mode operands.
15126         (sync_<optab>_12, sync_old_<optab>_12, sync_new_<optab>_12,
15127         sync_nand_12, sync_old_nand_12, sync_new_nand_12): New insns.
15128         (sync_lock_test_and_set<mode>): New define_expand for HI and QI modes.
15129         (test_and_set_12): New insn.
15130         (sync_old_add<mode>, sync_new_add<mode>, sync_old_<optab><mode>,
15131         sync_new_<optab><mode>, sync_old_nand<mode>,
15132         sync_new_nand<mode>, sync_lock_test_and_set<mode>):  Add early
15133         clobber to operand 0 for SI and DI mode insns.
15134         * config/mips/mips-protos.h (mips_gen_fn_6, mips_gen_fn_5,
15135         mips_gen_fn_4): New typedefs.
15136         (mips_gen_fn_ptrs): Define new union type.
15137         (mips_expand_compare_and_swap_12): Remove declaration.
15138         (mips_expand_atomic_qihi): Declare function.
15139         * config/mips/mips.c (mips_expand_compare_and_swap_12): Rename to...
15140         (mips_expand_atomic_qihi): ... this.  Use new generator function
15141         parameter.
15142         * config/mips/mips.h (MIPS_COMPARE_AND_SWAP_12): Add OPS parameter.
15143         (MIPS_COMPARE_AND_SWAP_12_0): Delete macro.
15144         (MIPS_COMPARE_AND_SWAP_12_ZERO_OP, MIPS_COMPARE_AND_SWAP_12_NONZERO_OP,
15145         MIPS_SYNC_OP_12, MIPS_SYNC_OP_12_NOT_NOP,
15146         MIPS_SYNC_OP_12_NOT_NOT, MIPS_SYNC_OLD_OP_12,
15147         MIPS_SYNC_OLD_OP_12_NOT_NOP, MIPS_SYNC_OLD_OP_12_NOT_NOP_REG,
15148         MIPS_SYNC_OLD_OP_12_NOT_NOT, MIPS_SYNC_OLD_OP_12_NOT_NOT_REG,
15149         MIPS_SYNC_NEW_OP_12, MIPS_SYNC_NEW_OP_12_NOT_NOP,
15150         MIPS_SYNC_NEW_OP_12_NOT_NOT, MIPS_SYNC_EXCHANGE_12,
15151         MIPS_SYNC_EXCHANGE_12_ZERO_OP, MIPS_SYNC_EXCHANGE_12_NONZERO_OP):
15152         New macros.
15153
15154 2008-05-20  H.J. Lu  <hongjiu.lu@intel.com>
15155
15156         * config/i386/i386.c (ix86_expand_vector_init_one_nonzero): Add
15157         the missing break.
15158
15159 2008-05-20  Anatoly Sokolov <aesok@post.ru>
15160
15161         * config/avr/avr.h (machine_function): Add 'is_OS_main' field.
15162         * config/avr/avr.c (avr_OS_main_function_p): Add new function.
15163         (avr_attribute_table): Add 'OS_main' function attribute.
15164         (avr_regs_to_save, expand_prologue, expand_epilogue): Handle
15165         functions with 'OS_main' attribute.
15166
15167 2008-05-20  Richard Guenther  <rguenther@suse.de>
15168
15169         PR tree-optimization/35204
15170         * tree-ssa-sccvn.c (extract_and_process_scc_for_name): New
15171         helper, split out from ...
15172         (DFS): ... here.  Make the DFS walk non-recursive.
15173
15174 2008-05-20  Sebastian Pop  <sebastian.pop@amd.com>
15175             Jan Sjodin  <jan.sjodin@amd.com>
15176
15177         PR tree-optimization/36181
15178         * tree-parloops.c (loop_has_vector_phi_nodes): New.
15179         (parallelize_loops): Don't parallelize when the loop has vector
15180         phi nodes.
15181
15182 2008-05-20  Jan Sjodin  <jan.sjodin@amd.com>
15183             Sebastian Pop  <sebastian.pop@amd.com>
15184
15185         * tree-loop-linear.c (gather_interchange_stats): Look in the access
15186         matrix, and never look at the tree representation of the memory
15187         accesses.
15188         (linear_transform_loops): Computes parameters and access matrices.
15189         * tree-data-ref.c (compute_data_dependences_for_loop): Returns false
15190         when fails.
15191         (access_matrix_get_index_for_parameter): New.
15192         * tree-data-ref.h (struct access_matrix): New.
15193         (AM_LOOP_NEST_NUM, AM_NB_INDUCTION_VARS, AM_PARAMETERS, AM_MATRIX,
15194         AM_NB_PARAMETERS, AM_CONST_COLUMN_INDEX, AM_NB_COLUMNS,
15195         AM_GET_SUBSCRIPT_ACCESS_VECTOR, AM_GET_ACCESS_MATRIX_ELEMENT,
15196         am_vector_index_for_loop): New.
15197         (struct data_reference): Add field access_matrix.
15198         (DR_ACCESS_MATRIX): New.
15199         (compute_data_dependences_for_loop): Update declaration.
15200         (lambda_collect_parameters, lambda_compute_access_matrices): Declared.
15201         * lambda.h (lambda_vector_vec_p): Declared.
15202         * lambda-code.c: Depend on pointer-set.h.
15203         (lambda_collect_parameters_from_af, lambda_collect_parameters,
15204         av_for_af_base, av_for_af, build_access_matrix,
15205         lambda_compute_access_matrices): New.
15206         * Makefile.in (lambda-code.o): Depend on pointer-set.h.
15207
15208 2008-05-20  Joseph Myers  <joseph@codesourcery.com>
15209
15210         * doc/install.texi2html: Generate gcc-vers.texi in $DESTDIR not
15211         $SOURCEDIR/include.
15212
15213 2008-05-20  Jan Sjodin  <jan.sjodin@amd.com>
15214             Sebastian Pop  <sebastian.pop@amd.com>
15215
15216         PR tree-optimization/36206
15217         * tree-scalar-evolution.c: Remove enum INSERT_SUPERLOOP_CHRECS,
15218         FOLD_CONVERSIONS.
15219         (instantiate_scev_1): Rename flags to fold_conversions.
15220         Do not check for INSERT_SUPERLOOP_CHRECS, keep SSA_NAMEs defined
15221         outeside instantiation_loop.
15222         * tree-chrec.h (evolution_function_is_affine_in_loop): New.
15223         (evolution_function_is_affine_or_constant_p): Removed.
15224         * tree-data-ref.c (dr_analyze_indices): Replace resolve_mixers with
15225         instantiate_scev.
15226         (analyze_siv_subscript): Pass in the loop nest number.
15227         Call evolution_function_is_affine_in_loop instead of
15228         evolution_function_is_affine_p.
15229         (analyze_overlapping_iterations): Pass in the loop nest number.
15230
15231 2008-05-20  Jan Sjodin  <jan.sjodin@amd.com>
15232             Sebastian Pop  <sebastian.pop@amd.com>
15233
15234         PR tree-optimization/36206
15235         * tree-chrec.h (chrec_fold_op): New.
15236         * tree-data-ref.c (initialize_matrix_A): Traverse NOP_EXPR, PLUS_EXPR,
15237         and other trees.
15238
15239 2008-05-20  Nathan Sidwell  <nathan@codesourcery.com>
15240
15241         * c-incpath.c (INO_T_EQ): Do not define on non-inode systems.
15242         (DIRS_EQ): New.
15243         (remove_duplicates): Do not set inode on non-inode systems.
15244         Use DIRS_EQ.
15245
15246 2008-05-20  Sandra Loosemore  <sandra@codesourcery.com>
15247
15248         * config.gcc (tm_file): Update comments about relative pathnames.
15249
15250 2008-05-20  Richard Guenther  <rguenther@suse.de>
15251
15252         * tree-ssa-reassoc.c (fini_reassoc): Use the statistics infrastructure.
15253         * tree-ssa-sccvn.c (process_scc): Likewise.
15254         * tree-ssa-sink.c (execute_sink_code): Likewise.
15255         * tree-ssa-threadupdate.c (thread_through_all_blocks): Likewise.
15256         * tree-vrp.c (process_assert_insertions): Likewise.
15257         * tree-ssa-dce.c (eliminate_unnecessary_stmts): Likewise.
15258         (perform_tree_ssa_dce): Likewise.
15259         * tree-ssa-dom.c (tree_ssa_dominator_optimize): Likewise.
15260         (dump_dominator_optimization_stats): Likewise.
15261         * tree-vectorizer.c (vectorize_loops): Likewise.
15262
15263 2008-05-20  Richard Guenther  <rguenther@suse.de>
15264
15265         * tree-vn.c (vn_lookup_with_vuses): Do not use the alias oracle.
15266
15267 2008-05-20  Kai Tietz  <kai.tietz@onevision.com>
15268
15269         * config/i386/i386-protos.h (ix86_return_in_memory): Removed.
15270         (ix86_i386elf_return_in_memory): Likewise.
15271         (ix86_i386interix_return_in_memory): Likewise.
15272         * config/i386/i386-interix.h (TARGET_RETURN_IN_MEMORY): Removed.
15273         (SUBTARGET_RETURN_IN_MEMORY): New.
15274         * config/i386/i386elf.h: Likewise.
15275         * config/i386/ptx4-i.h: Likewise.
15276         * config/i386/sol2-10.h: Likewise.
15277         * config/i386/sysv4.h: Likewise.
15278         * config/i386/vx-common.h: Likewise.
15279         * config/i386/i386.h (TARGET_RETURN_IN_MEMORY): Removed.
15280         * config/i386/i386.c (ix86_return_in_memory): Made static and
15281         make use of optional SUBTARGET_RETURN_IN_MEMORY macro.
15282         (ix86_i386elf_return_in_memory): Removed.
15283         (ix86_i386interix_return_in_memory): Removed.
15284         (TARGET_RETURN_IN_MEMORY): Declared within i386.c only.
15285         * target-def.h (TARGET_RETURN_IN_MEMORY): Remove protection #ifdef.
15286
15287 2008-05-20  Alexandre Oliva  <aoliva@redhat.com>
15288
15289         * cselib.c (cselib_record_sets): Use correct mode for IF_THEN_ELSE.
15290
15291 2008-05-19  Xinliang David Li  <davidxl@google.com>
15292
15293         * tree-ssa-dce.c: Revert patches of 2008-05-17 and 2008-05-18.
15294         * opts.c: Ditto.
15295         * common.opt: Ditto.
15296         * doc/invoke.texi: Ditto.
15297
15298 2008-05-19  Eric Botcazou  <ebotcazou@adacore.com>
15299
15300         * tree.c (substitute_in_expr) <tcc_vl_exp>: Fix thinko.
15301         (substitute_placeholder_in_expr) <tcc_vl_exp>: Minor tweak.
15302
15303 2008-05-19  H.J. Lu  <hongjiu.lu@intel.com>
15304
15305         * config/i386/i386.c (ix86_expand_vector_init_concat): Change
15306         sizes of operand array from 8/4 to 4/2.
15307         (ix86_expand_vector_init_general): Change size of operand array
15308         from 32 to 16.  Remove op0, op1 and half_mode.
15309
15310 2008-05-19  H.J. Lu  <hongjiu.lu@intel.com>
15311
15312         * config/i386/i386.c (ix86_expand_vector_init_concat): New.
15313         (ix86_expand_vector_init_interleave): Likewise.
15314         (ix86_expand_vector_init_general): Use them.  Assert
15315         word_mode == SImode when n_words == 4.
15316
15317 2008-05-19  Uros Bizjak  <ubizjak@gmail.com>
15318
15319         * config/i386/i386.c (ix86_secondary_reload): New static function.
15320         (TARGET_SECONDARY_RELOAD): New define.
15321         * config/i386/i386.h (SECONDARY_OUTPUT_RELOAD_CLASS): Remove.
15322         * config/i386/i386.md (reload_outqi): Remove.
15323
15324 2008-05-18  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
15325
15326         PR middle-end/35509
15327         * builtins.c (mathfn_built_in_1): Renamed from mathfn_built_in.
15328         Add `implicit' parameter.  Handle BUILT_IN_SIGNBIT.
15329         (mathfn_built_in): Rewrite in terms of mathfn_built_in_1.
15330         (fold_builtin_classify): Handle BUILT_IN_ISINF_SIGN.
15331         (fold_builtin_1): Likewise.
15332         * builtins.def (BUILT_IN_ISINF_SIGN): New.
15333         c-common.c (check_builtin_function_arguments): Handle
15334         BUILT_IN_ISINF_SIGN.
15335         * doc/extend.texi: Document __builtin_isinf_sign.
15336         * fold-const.c (operand_equal_p): Handle COND_EXPR.
15337
15338 2008-05-18  Eric Botcazou  <ebotcazou@adacore.com>
15339
15340         * tree-ssa-dom.c (tree_ssa_dominator_optimize): If some blocks need
15341         EH cleanup at the end of the pass, search for those that have been
15342         turned into forwarder blocks and do the cleanup on their successor.
15343
15344 2008-05-18  Richard Guenther  <rguenther@suse.de>
15345
15346         * tree-cfg.c (verify_gimple_expr): Allow conversions from
15347         pointers to sizetype and vice versa.
15348
15349 2008-05-18 Xinliang David Li   <davidxl@google.com>
15350
15351         * gcc/tree-ssa-dce.c: Coding style fix.
15352         (check_pow): Documentation comment.
15353         (check_log): Documenation comment. Coding style fix.
15354         (is_unnecessary_except_errno_call): Ditto.
15355         (gen_conditions_for_pow): Ditto.
15356         (gen_conditions_for_log): Ditto.
15357         (gen_shrink_wrap_conditions): Ditto.
15358         (shrink_wrap_one_built_in_calls): Ditto.
15359         * gcc/doc/invoke.texi: Better documentation string.
15360         * ChangeLog: Fix wrong change log entries from
15361         May 17 checkin on function call DCE.
15362
15363 2008-05-17  Kaz Kojima  <kkojima@gcc.gnu.org>
15364
15365         * config/sh/sh.c (sh_output_mi_thunk): Update the use of init_flow.
15366
15367 2008-05-17  Kenneth Zadeck <zadeck@naturalbridge.com>
15368
15369         * doc/rtl.texi (RTL_CONST_CALL_P, RTL_PURE_CALL_P): Fixed typos.
15370         * df-problems.c (simulation routines): Fixed block comment to
15371         properly say how to add forwards scanning functions.
15372
15373 2008-05-17  Eric Botcazou  <ebotcazou@adacore.com>
15374
15375         * tree-inline.c (setup_one_parameter): Remove dead code.
15376
15377 2008-05-17  Eric Botcazou  <ebotcazou@adacore.com>
15378
15379         * fold-const.c (fold_unary) <CASE_CONVERT>: Fold the cast into
15380         a BIT_AND_EXPR only for an INTEGER_TYPE.
15381
15382 2008-05-17 Xinliang David Li   <davidxl@google.com>
15383
15384         * gcc/tree-ssa-dce.c (cond_dead_built_in_calls): New static variable.
15385         (check_pow, check_log, is_unnecessary_except_errno_call): New
15386         functions to check for eliminating math functions that are pure
15387         except for setting errno.
15388         (gen_conditions_for_pow, gen_conditionas_for_log): New functions to
15389         general condition expressions for shrink-wrapping pow/log calls.
15390         (gen_shrink_wrap_conditions): Ditto.
15391         (shrink_wrap_one_built_in_call): Ditto.
15392         (shrink_wrap_conditional_dead_built_in_calls): Ditto.
15393         (mark_operand_necessary): If debugging, output if OP is necessary.
15394         (eliminate_unnecessary_stmts): Eliminate pow, log calls that are
15395         unnecessary.
15396         * gcc/opts.c (decode_options): set flag_tree_builtin_dce to 1 when
15397         opt level >= 2.
15398         * gcc/common.opt: New user flag -ftree-builtin-dce.
15399         * gcc/doc/invoke.texi (-ftree-builtin-dce): New option.
15400
15401 2008-05-16  David S. Miller  <davem@davemloft.net>
15402
15403         * config/sparc/linux.h (NO_PROFILE_COUNTERS): Undef before overriding.
15404         * config/sparc/linux64.h (NO_PROFILE_COUNTERS): Likewise.
15405
15406 2008-05-16  Uros Bizjak  <ubizjak@gmail.com>
15407
15408         PR target/36246
15409         * config/i386/i386.h (SECONDARY_MEMORY_NEEDED_MODE): New define.
15410
15411 2008-05-16  Kenneth Zadeck <zadeck@naturalbridge.com>
15412
15413         * ifcvt.c (dead_or_predicable): Rename
15414         df_simulate_one_insn_backwards to df_simulate_one_insn.
15415         * recog.c (peephole2_optimize): Ditto.
15416         * rtl-factoring.c (collect_pattern_seqs, clear_regs_live_in_seq):
15417         Ditto.
15418         * df.h: Rename df_simulate_one_insn_backwards to
15419         df_simulate_one_insn.  and delete df_simulate_one_insn_forwards.
15420         * df-problems.c (df_simulate_artificial_refs_at_top) Reversed
15421         scanning of defs and uses.
15422         (df_simulate_one_insn_backwards): Renamed to df_simulate_one_insn.
15423         (df_simulate_one_insn_forwards): Removed.
15424
15425 2008-05-16  Doug Kwan  <dougkwan@google.com>
15426
15427         * real.c (real_to_decimal, real_to_hexadecimal): Distinguish
15428         QNaN & SNaN.
15429         (real_from_string): Handle NaNs and Inf as approriate.
15430
15431 2008-05-16  Nathan Froyd  <froydnj@codesourcery.com>
15432
15433         * doc/gty.texi (Source Files Containing Type Information): Note
15434         that headers should appear first in the gtfiles list.
15435
15436 2008-05-16  Kenneth Zadeck <zadeck@naturalbridge.com>
15437
15438         * tree.def (COND_EXEC): Properly documented this code.
15439
15440 2008-05-16  Diego Novillo  <dnovillo@google.com>
15441
15442         * dwarf2asm.c (dw2_assemble_integer): Clarify comment.
15443         * tree-nested.c (get_trampoline_type): Set DECL_CONTEXT for
15444         the new field.
15445
15446 2008-05-16  Kenneth Zadeck <zadeck@naturalbridge.com>
15447
15448         * tree-ssa-dse (max_stmt_uid): Removed.
15449         (get_stmt_uid, dse_possible_dead_store_p, dse_optimize_stmt,
15450         tree_ssa_dse): Encapsulate all uses of stmt_ann->uid.
15451         * tree-ssa-sccvn.c (compare_ops, init_scc_vn): Ditto.
15452         * function.h (cfun.last_stmt_uid): New field.
15453         * tree-flow-inline.h (set_gimple_stmt_uid, gimple_stmt_uid,
15454         gimple_stmt_max_uid, set_gimple_stmt_max_uid, inc_gimple_stmt_max_uid):
15455         New functions.
15456         * tree-dfa.c (renumber_gimple_stmt_uids): New function.
15457         (create_stmt_ann): Initialize the ann->uid field.
15458         * tree-ssa-pre.c (compute_avail): Encapsulate the stmt_ann->uid
15459         with new calls.
15460         * tree-flow.h (renumber_gimple_stmt_uids): New function.
15461
15462 2008-05-16  Nathan Froyd  <froydnj@codesourcery.com>
15463
15464         * tree-flow.h (init_empty_tree_cfg_for_function): Declare.
15465         * tree-cfg.c (init_empty_tree_cfg_for_function): Define.
15466         (init_empty_tree_cfg): Call it.
15467
15468 2008-05-16  Kenneth Zadeck <zadeck@naturalbridge.com>
15469
15470         * cfg.c (init_flow): Add argument THE_FUN.  Use it instead of cfun.
15471         Update all users.
15472
15473 2008-05-16  Kenneth Zadeck <zadeck@naturalbridge.com>
15474
15475         * doc/invoke.text (-fdump-tree-*-verbose): New option.
15476         * tree-dump.c (dump_options): New verbose option.
15477         * tree-pretty-print.c (dump_phi_nodes, dump_generic_bb_buff):
15478         Add verbose dump.
15479         * tree-pass.h (TDF_VERBOSE): New dump flag.
15480         * print-tree.c (print_node): Added code to be able to print PHI_NODES.
15481         (tree-flow.h): Added include.
15482         * Makefile.in (print-tree.o):  Added TREE_FLOW_H.
15483
15484 2008-05-16  Bernd Schmidt  <bernd.schmidt@analog.com>
15485
15486         * config/bfin/bfin.c (bfin_discover_loops): Delete empty loops.
15487
15488         From Jie Zhang  <jie.zhang@analog.com>
15489         * config/bfin/t-bfin-elf (MULTILIB_OPTIONS, MULTILIB_DIRNAMES,
15490         MULTILIB_MATCHES, MULTILIB_EXCEPTIONS): Remove mcpu=bf532-0.3,
15491         mcpu=bf561-none and mcpu=bf561-0.2.
15492         * config/bfin/t-bfin-uclinux (MULTILIB_OPTIONS, MULTILIB_DIRNAMES,
15493         MULTILIB_MATCHES, MULTILIB_EXCEPTIONS): Likewise.
15494         * config/bfin/t-bfin-linux (MULTILIB_OPTIONS, MULTILIB_DIRNAMES,
15495         MULTILIB_MATCHES, MULTILIB_EXCEPTIONS): Likewise.
15496         * config/bfin/bfin-protos.h (enum bfin_cpu_type): Add BFIN_CPU_UNKNOWN.
15497         * config/bfin/elf.h (STARTFILE_SPEC): Use specific CRT for BF561.
15498         (LIB_SPEC): Use proper linker script for bf561.  Error if no mcpu
15499         option.
15500         * config/bfin/bfin.c (bfin_cpu_type): Set to BFIN_CPU_UNKNOWN.
15501         (cputype_selected): Remove.
15502         (bfin_handle_option): Don't use cputype_selected.
15503         (override_options): When no mcpu option, enable all workarounds.
15504         Don't use bfin_workarounds.
15505         * config/bfin/bfin.h (DRIVER_SELF_SPECS): Don't set default
15506         processor type.
15507         (DEFAULT_CPU_TYPE): Don't define.
15508
15509 2008-05-16  Richard Guenther  <rguenther@suse.de>
15510
15511         * tree-ssa-propagate.c (substitute_and_fold): Fix stmt walking
15512         on deletion of the last stmt.
15513
15514 2008-05-15  H.J. Lu  <hongjiu.lu@intel.com>
15515
15516         * config/i386/i386.c (ix86_expand_vector_init_general): Optimize
15517         V8HImode for SSE2 and V16QImode for SSE4.1.
15518
15519 2008-05-15  Kenneth Zadeck <zadeck@naturalbridge.com>
15520
15521         * cgraph.h (compute_inline_parameters): Made public.
15522         * tree-pass.h (ipa_opt_pass): Removed function_generate_summary,
15523         variable_generate_summary, function_write_summary,
15524         variable_write_summary, variable_read_summary.  Added generate_summary,
15525         write_summary, read_summary.
15526         * cgraphunit.c (cgraph_process_new_functions): Changed call from
15527         pass_ipa_inline.function_generate_summary, to
15528         compute_inline_parameters.
15529         * ipa-inline.c (compute_inline_parameters): Made public and added
15530         node parameter.
15531         (compute_inline_parameters_for_current): New function.
15532         (pass_inline_param): Now calls compute_inline_parameters_for_current.
15533         (inline_generate_summary): Removed parameter and made to loop over
15534         all cgraph nodes.
15535         (pass_ipa_inline): Updated for new IPA_PASS structure.
15536         * passes.c (execute_ipa_summary_passes): Now is called once per
15537         pass rather than once per node*pass.
15538
15539 2008-05-15  Anatoly Sokolov <aesok@post.ru>
15540
15541         * config/avr/avr.c (avr_base_arch_macro, avr_have_movw_lpmx_p,
15542         avr_have_mul_p, avr_asm_only_p): Remove variables.
15543         (avr_override_options): Remove initialization of removed variables.
15544         (avr_file_start):  Convert removed variables to fields of
15545         'struct base_arch_s *avr_current_arch'.
15546         * config/avr/avr.h (TARGET_CPU_CPP_BUILTINS): (Ditto.).
15547         (AVR_HAVE_MUL): (Ditto.).
15548         (AVR_HAVE_MOVW): (Ditto.).
15549         (AVR_HAVE_LPMX): (Ditto.).
15550         (avr_base_arch_macro, avr_have_movw_lpmx_p, avr_have_mul_p,
15551         avr_asm_only_p): Remove declaration.
15552
15553 2008-05-15  Diego Novillo  <dnovillo@google.com>
15554
15555         * config/arm/arm.c (arm_return_in_memory): Fix return type.
15556         * config/arm/arm-protos.h (arm_return_in_memory): Likewise.
15557
15558 2008-05-15  Adam Nemet  <anemet@caviumnetworks.com>
15559
15560         PR middle-end/36194
15561         * combine.c (check_conversion): Rename back to check_promoted_subreg.
15562         Don't call record_truncated_value from here.
15563         (record_truncated_value): Turn it into a for_each_rtx callback.
15564         (record_truncated_values): New function.
15565         (combine_instructions): Call note_uses with record_truncated_values.
15566         Change name of check_conversion to check_promoted_subreg.
15567
15568 2008-05-15  Janis Johnson  <janis187@us.ibm.com>
15569
15570         * doc/sourcebuild.texi: Document support for torture tests.
15571
15572 2008-05-15  Uros Bizjak  <ubizjak@gmail.com>
15573
15574         * config/i386/sse.md (*vec_concatv2sf_sse4_1): Add "m" constraint
15575         to alternative 4 of operand 2.
15576
15577 2008-05-15  Richard Guenther  <rguenther@suse.de>
15578
15579         * tree-pass.h (current_pass): Declare.
15580         (get_pass_for_id): Likewise.
15581         * passes.c (passes_by_id, passes_by_id_size): New globals.
15582         (set_pass_for_id): New function.
15583         (get_pass_for_id): Likewise.
15584         (register_one_dump_file): Use set_pass_for_id to populate passes_by_id.
15585         (execute_function_todo): Flush per function statistics.
15586         * toplev.c (compile_file): Init statistics.
15587         (general_init): Do early statistics initialization.
15588         (finalize): Finish statistics.
15589         * statistics.h (statistics_early_init): Declare.
15590         (statistics_init): Likewise.
15591         (statistics_fini): Likewise.
15592         (statistics_fini_pass): Likewise.
15593         (statistics_counter_event): Likewise.
15594         (statistics_histogram_event): Likewise.
15595         * statistics.c: New file.
15596         * Makefile.in (OBJS-common): Add statistics.o.
15597         (statistics.o): Add dependencies.
15598         * doc/invoke.texi (-fdump-statistics): Document.
15599
15600         * tree-ssa-pre.c (compute_antic): Use statistics_histogram_event.
15601         (insert): Likewise.
15602         (execute_pre): Use statistics_counter_event.
15603         * tree-ssa-propagate.c (struct prop_stats_d): Add num_dce field.
15604         (substitute_and_fold): Increment it.  Use statistics_counter_event.
15605
15606 2008-05-15  Diego Novillo  <dnovillo@google.com>
15607
15608         http://gcc.gnu.org/ml/gcc-patches/2008-05/msg00893.html
15609
15610         * treestruct.def (TS_STRUCT_FIELD_TAG): Remove.
15611         * tree-ssa-alias.c (new_type_alias): Remove references to
15612         sub-variables from comment.
15613         * tree-ssa-operands.c (swap_tree_operands): Likewise.
15614
15615 2008-05-15  H.J. Lu  <hongjiu.lu@intel.com>
15616
15617         * config/i386/sse.md (*vec_concatv2sf_sse4_1): Set prefix_extra
15618         attribute to 1 only for insertps alternative.
15619
15620 2008-05-15  Bernd Schmidt  <bernd.schmidt@analog.com>
15621
15622         * config/bfin/bfin.md (loadbytes): New pattern.
15623         * config/bfin/bfin.c (enum bfin_builtins): Add BFIN_BUILTIN_LOADBYTES.
15624         (bfin_init_builtins): Initialize it.
15625         (bdesc_1arg): Add it.
15626
15627 2008-05-15  Sa Liu  <saliu@de.ibm.com>
15628
15629         * testsuite/gfortran.dg/c_kind_int128_test1.f03: New.
15630         * testsuite/gfortran.dg/c_kind_int128_test2.f03: New.
15631         * testsuite/lib/target-supports.exp: Add
15632         check_effective_target_fortran_integer_16.
15633
15634 2008-05-15  Bernd Schmidt  <bernd.schmidt@analog.com>
15635
15636         * config/bfin/bfin.h (TARGET_RETURN_IN_MEMORY): Don't define here.
15637         * config/bfin/bfin-protos.h (bfin_return_in_memory): Don't declare.
15638         * config/bfin/bfin.c (bfin_return_in_memory): Now static.  Return bool.
15639         (TARGET_RETURN_IN_MEMORY): Define.
15640
15641 2008-05-15  Richard Guenther  <rguenther@suse.de>
15642
15643         PR middle-end/36244
15644         * tree-ssa-alias.c (new_type_alias): Do not set TREE_READONLY.
15645         * tree-flow-inline.h (unmodifiable_var_p): Memory tags never
15646         represent unmodifiable vars.
15647
15648 2008-05-15  Richard Guenther  <rguenther@suse.de>
15649
15650         * tree-dfa.c (refs_may_alias_p): Allow all kinds of
15651         INDIRECT_REF and TARGET_MEM_REF.
15652         * tree-ssa-sccvn.c (copy_reference_ops_from_ref): Handle
15653         TARGET_MEM_REF.
15654
15655 2008-05-15  Uros Bizjak  <ubizjak@gmail.com>
15656             H.J. Lu  <hongjiu.lu@intel.com>
15657
15658         * config/i386/sse.md (*vec_concatv2sf_sse4_1): New insn pattern.
15659         (*vec_concatv2si_sse4_1): Use vector_move_operand predicate
15660         for operand 2.  Remove pinsr{q,d} with 0x0 immediate operand from
15661         insn alternatives.  Add missing alternatives.
15662         (*vec_concatv2di_rex64_sse4_1): Likewise.
15663         (*vec_concatv2si_sse2): Use "x" register constraint instead of "Y2".
15664         (*vec_concatv2di_rex64_sse): Rename from *vec_concatv2di_rex64.
15665         Require TARGET_SSE.
15666
15667 2008-05-15  Richard Guenther  <rguenther@suse.de>
15668
15669         PR tree-optimization/36009
15670         PR tree-optimization/36204
15671         * tree-ssa-loop-im.c (tree-ssa-propagate.h): Include.
15672         (determine_invariantness_stmt): Record the loop a store is
15673         always executed in.
15674         * Makefile.in (tree-ssa-loop-im.o): Add tree-ssa-propagate.h
15675         dependency.
15676
15677 2008-05-15  Richard Guenther  <rguenther@suse.de>
15678
15679         PR tree-optimization/34330
15680         * tree-ssa-alias.c (get_smt_for): Only assert that accesses
15681         through the pointer will alias the SMT.
15682
15683 2008-05-14  Andreas Tobler  <a.tobler@schweiz.org>
15684
15685         * config/sparc/sparc.h (NO_PROFILE_COUNTERS): Define as 0.
15686
15687 2008-05-14  H.J. Lu  <hongjiu.lu@intel.com>
15688
15689         * config/i386/sse.md (*sse4_1_pinsrq): Make it 64bit only.
15690
15691 2008-05-14  Michael Meissner  <michael.meissner@amd.com>
15692             Dwarakanath Rajagopal  <dwarak.rajagopal@amd.com>
15693
15694         * optabs.h (optab_index): Add OTI_vashl, OTI_vlshr, OTI_vashr,
15695         OTI_vrotl, OTI_vrotr to support vector/vector shifts.
15696         (vashl_optab): New optab for vector/vector shifts.
15697         (vashr_optab): Ditto.
15698         (vlshr_optab): Ditto.
15699         (vrotl_optab): Ditto.
15700         (vrotr_optab): Ditto.
15701         (optab_subtype): New enum for optab_for_tree_code call.
15702         (optab_for_tree_code): Add enum optab_subtype argument.
15703
15704         * optabs.c (optab_for_tree_code): Take an additional argument to
15705         distinguish between a vector shift by a scalar and vector shift by
15706         a vector.  Make lshr/ashr/ashl/rotl/rotr optabs just vector
15707         shifted by a scalar.  Use vlshr/vashr/vashl/vrotl/vrotr for the
15708         vector shift by a vector.
15709         (expand_widen_pattern_expr): Pass additional argument to
15710         optab_for_tree_code.
15711
15712         * genopinit.c (optabs): Add vashr_optab, vashl_optab, vlshr_optab,
15713         vrotl_optab, vrotr_optab.
15714
15715         * expr.c (expand_expr_real_1): Update calls to
15716         optab_for_tree_code to distinguish between vector shifted by a
15717         scalar and vector shifted by a vector.
15718         * tree-vectorizer.c (supportable_widening_operation): Ditto.
15719         (supportable_narrowing_operation): Ditto.
15720         * tree-vect-analyze.c (vect_build_slp_tree): Ditto.
15721         * tree-vect-patterns.c (vect_pattern_recog_1): Ditto.
15722         * tree-vect-transform.c (vect_model_reduction_cost): Ditto.
15723         (vect_create_epilog_for_reduction): Ditto.
15724         (vectorizable_reduction): Ditto.
15725         (vectorizable_operation): Ditto.
15726         (vect_strided_store_supported): Ditto.
15727         (vect_strided_load_supported): Ditto.
15728         * tree-vect-generic.c (expand_vector_operations_1): Ditto.
15729         * expmed.c (expand_shift): Ditto.
15730
15731         * doc/md.texi (ashl@var{m}3): Document that operand 2 is always a
15732         scalar type.
15733         (ashr@var{m}3): Ditto.
15734         (vashl@var{m}3): Document new vector/vector shift standard name.
15735         (vashr@var{m}3): Ditto.
15736         (vlshr@var{m}3): Ditto.
15737         (vrotl@var{m}3): Ditto.
15738         (vrotr@var{m}3): Ditto.
15739
15740         * config/i386/i386.md (PPERM_SRC): Move PPERM masks here from i386.c.
15741         (PPERM_INVERT): Ditto.
15742         (PPERM_REVERSE): Ditto.
15743         (PPERM_REV_INV): Ditto.
15744         (PPERM_ZERO): Ditto.
15745         (PPERM_ONES): Ditto.
15746         (PPERM_SIGN): Ditto.
15747         (PPERM_INV_SIGN): Ditto.
15748         (PPERM_SRC1): Ditto.
15749         (PPERM_SRC2): Ditto.
15750
15751         * config/i386/sse.md (mulv2di3): Add SSE5 support.
15752         (sse5_pmacsdql_mem): New SSE5 define_and_split that temporarily
15753         allows a memory operand to be the value being added, and split it
15754         to improve vectorization.
15755         (sse5_pmacsdqh_mem): Ditto.
15756         (sse5_mulv2div2di3_low): SSE5 32-bit multiply and extend function.
15757         (sse5_mulv2div2di3_high): Ditto.
15758         (vec_pack_trunc_v8hi): Add SSE5 pperm support.
15759         (vec_pack_trunc_v4si): Ditto.
15760         (vec_pack_trunc_v2di): Ditto.
15761         (sse5_pcmov_<mode>): Remove code that tried to use use
15762         andps/andnps instead of pcmov.
15763         (vec_widen_smult_hi_v4si): If we have SSE5, use the pmacsdql and
15764         pmacsdqh instructions.
15765         (vec_widen_smult_lo_v4si): Ditto.
15766
15767         * config/i386/i386.c (PPERM_SRC): Move PPERM masks to i386.md.
15768         (PPERM_INVERT): Ditto.
15769         (PPERM_REVERSE): Ditto.
15770         (PPERM_REV_INV): Ditto.
15771         (PPERM_ZERO): Ditto.
15772         (PPERM_ONES): Ditto.
15773         (PPERM_SIGN): Ditto.
15774         (PPERM_INV_SIGN): Ditto.
15775         (PPERM_SRC1): Ditto.
15776         (PPERM_SRC2): Ditto.
15777         (ix86_expand_sse_movcc): Move the SSE5 test after the if
15778         true/false tests.
15779         (ix86_expand_int_vcond): If SSE5 generate all possible integer
15780         comparisons.
15781         (ix86_sse5_valid_op_p): Allow num_memory to be negative, which
15782         says ignore whether the last reference is a memory operand.
15783
15784 2008-05-14  Michael Meissner  <michael.meissner@amd.com>
15785             Paolo Bonzini <bonzini at gnu dot org>
15786
15787         * config/rs6000/rs6000.c (bdesc_2arg): Change the names of vector
15788         shift patterns.
15789
15790         * config/rs6000/altivec.md (vashl<mode>3): Rename from ashl<mode>3.
15791         (vlshr<mode>3): Rename from vlshr<mode>3.
15792         (vashr<mode>3): Rename from vashr<mode>3.
15793         (mulv4sf3): Change the names of vector shift patterns.
15794         (mulv4si3): Ditto.
15795         (negv4sf2): Ditt.
15796
15797         * config/spu/spu.c (spu_initialize_trampoline): Rename vector
15798         shift insns.
15799
15800         * config/spu/spu-builtins.def (SI_SHLH): Rename vector shift insns.
15801         (SI_SHLHI): Ditto.
15802         (SI_SHL): Ditto.
15803         (SI_SHLI): Ditto.
15804         (SI_ROTH): Ditto.
15805         (SI_ROTHI): Ditto.
15806         (SI_ROT): Ditto.
15807         (SI_ROTI): Ditto.
15808         (SPU_RL_0): Ditto.
15809         (SPU_RL_1): Ditto.
15810         (SPU_RL_2): Ditto.
15811         (SPU_RL_3): Ditto.
15812         (SPU_RL_4): Ditto.
15813         (SPU_RL_5): Ditto.
15814         (SPU_RL_6): Ditto.
15815         (SPU_RL_7): Ditto.
15816         (SPU_SL_0): Ditto.
15817         (SPU_SL_1): Ditto.
15818         (SPU_SL_2): Ditto.
15819         (SPU_SL_3): Ditto.
15820         (SPU_SL_4): Ditto.
15821         (SPU_SL_5): Ditto.
15822         (SPU_SL_6): Ditto.
15823         (SPU_SL_7): Ditto.
15824
15825         * config/spu/spu.md (v): New iterator macro to add v for vector types.
15826         (floatunssidf2_internal): Change vector/vector shift names.
15827         (floatunsdidf2_internal): Ditto.
15828         (mulv8hi3): Ditto.
15829         (ashrdi3): Ditto.
15830         (ashrti3): Ditto.
15831         (cgt_df): Ditto.
15832         (cgt_v2df): Ditto.
15833         (dftsv): Ditto.
15834         (vashl<mode>3): Rename from ashl<mode>3.
15835         (vashr<mode>3): Rename from ashr<mode>3.
15836         (vlshr<mode>3): Rename from lshr<mode>3.
15837         (vrotl<mode>3): Rename from rotl<mode>3.
15838
15839 2008-05-14  Michael Meissner  <michael.meissner@amd.com>
15840
15841         PR target/36224
15842         * config/i386/sse.md (vec_widen_smult_hi_v4si): Delete, using unsigned
15843         multiply gives the wrong value when doing widening multiplies.
15844         (vec_widen_smult_lo_v4si): Ditto.
15845
15846 2008-05-14  Kenneth Zadeck <zadeck@naturalbridge.com>
15847
15848         * optabs.c (prepare_cmp_insn): Changed LCT_PURE_MAKE_BLOCK to
15849         LCT_PURE and LCT_CONST_MAKE_BLOCK to LCT_CONST in calls to
15850         emit_library_call_value.
15851         * builtins.c (expand_builtin_powi, expand_builtin_memcmp): Ditto.
15852         * tree.h (ECF_LIBCALL_BLOCK): Removed.
15853         * calls.c (initialize_argument_information, precompute_arguments,
15854         expand_call, emit_library_call_value_1): Remove ECF_LIBCALL_BLOCK.
15855         (precompute_arguments): Removed flags parameter.
15856         * rtl.h (LCT_CONST_MAKE_BLOCK, LCT_PURE_MAKE_BLOCK): Removed.
15857
15858 2008-05-14  Richard Guenther  <rguenther@suse.de>
15859
15860         * tree-ssa-dse.c (dse_possible_dead_store_p): Remove dead code.
15861         Make sure to register the store if the use is a PHI_NODE.
15862
15863 2008-05-14  Olivier Hainque  <hainque@adacore.com>
15864
15865         * expr.c (expand_expr_real_1) <normal_inner_ref>: Force op0 to
15866         memory if the component is to be referenced in BLKmode according
15867         to get_inner_reference.
15868
15869 2008-05-14  Adam Nemet  <anemet@caviumnetworks.com>
15870
15871         * calls.c (emit_library_call_value_1): Restore code clearing
15872         ECF_LIBCALL_BLOCK to ensure that we only call end_sequence once.
15873
15874 2008-05-14  Olivier Hainque  <hainque@adacore.com>
15875             Nicolas Roche  <roche@adacore.com>
15876
15877         * configure.ac: Add support for a "gcc_subdir" variable in
15878         config-lang.in, to denote a subdirectory where the language/GCC
15879         integration files are to be found.
15880         * configure: Regenerate.
15881
15882 2008-05-14  Ira Rosen  <irar@il.ibm.com>
15883
15884         PR tree-optimization/36098
15885         * tree-vect-analyze.c (vect_analyze_group_access): Set the gap
15886         value for the first load in the group in case of a gap.
15887         (vect_build_slp_tree): Check that there are no gaps in loads.
15888
15889 2008-05-14  Kenneth Zadeck <zadeck@naturalbridge.com>
15890
15891         * doc/rtl.texi: Removed reference to REG_NO_CONFLICT notes.
15892         * optabs.c (expand_binop, expand_absneg_bit, expand_unop,
15893         expand_copysign_bit, ): Change call to emit_no_conflict_block to
15894         emit_insn and remove unneeded code to construct extra args.
15895         (emit_no_conflict_block): Removed.
15896         * optabls.h: (emit_no_conflict_block): Removed.
15897         * cse.c (cse_extended_basic_block): Remove search for
15898         REG_NO_CONFLICT note.
15899         * global.c: Removed incorrect comment added in revision 117.
15900         * expr.c (convert_move): Change call to emit_no_conflict_block to
15901         emit_insn.
15902         * recog.c: Change comments so that they do not mention
15903         REG_NO_CONFLICT.
15904         * local_alloc.c (combine_regs): Removed last parameter.
15905         (no_conflict_p): Removed.
15906         (block_alloc): Removed note, no_conflict_combined_regno and set
15907         local vars. Removed all code to process REG_NO_CONFLICT blocks.
15908         (combine_regs): Removed already_dead and code to look for
15909         REG_NO_CONFLICT notes.
15910         * lower_subreg (remove_retval_note): Removed code to look for
15911         REG_NO_CONFLICT block.
15912         (resolve_reg_notes): Removed REG_NO_CONFLICT case.
15913         (resolve_clobber): Remove code to process libcalls that have
15914         REG_NO_CONFLICT notes.
15915         * loop_invariant.c (find_invariant_insn): Removed REG_NO_CONFLICT
15916         case.
15917         * combine.c (can_combine_p, distribute_notes):  Removed
15918         REG_NO_CONFLICT case.
15919         * config/cris/cris.md (movdi pattern): Changed emit_no_conflict_block
15920         to emit_insns.
15921         * config/mn10300/mn10300.md (absdf2, negdf2 patterns): Ditto.
15922         * config/m68k/m68k.md (negdf2, negxf2, absdf2, absxf2 patterns):
15923         Ditto.
15924         * reg-notes.def (NO_CONFLICT): Removed.
15925
15926 2008-05-14  David S. Miller  <davem@davemloft.net>
15927
15928         * config/sparc/sparc.c (sparc_profile_hook): If
15929         NO_PROFILE_COUNTERS, don't generate and pass a label into mcount.
15930         * config/sparc/linux.h (NO_PROFILE_COUNTERS): Define as 1.
15931         * config/sparc/linux64.h (NO_PROFILE_COUNTERS): Likewise.
15932
15933 2008-05-14  Andreas Krebbel  <krebbel1@de.ibm.com>
15934
15935         * cse.c (cse_cc_succs): Invoke delete_insn_and_edges.
15936
15937 2008-05-13  Uros Bizjak  <ubizjak@gmail.com>
15938
15939         PR target/36222
15940         * config/i386/i386.c (ix86_expand_vector_init_general): Rearrange op0
15941         and op1 expansion before vector concat to have less live pseudos.
15942
15943 2008-05-13  H.J. Lu  <hongjiu.lu@intel.com>
15944
15945         * config/i386/i386.c (ix86_expand_vector_init_one_nonzero): Use
15946         ix86_expand_vector_set if supported.
15947
15948 2008-05-13  Diego Novillo  <dnovillo@google.com>
15949             Kenneth Zadeck  <zadeck@naturalbridge.com>
15950
15951         http://gcc.gnu.org/ml/gcc-patches/2008-05/msg00748.html
15952
15953         * tree.h (init_phinodes, fini_phinodes, release_phi_node,
15954         phinodes_print_statistics, init_ssanames, fini_ssanames,
15955         make_ssa_name, duplicate_ssa_name, duplicate_ssa_name_ptr_info,
15956         release_ssa_name, release_defs, replace_ssa_name_symbol,
15957         ssanames_print_statistics): Move ...
15958         * tree-flow.h: ... here.
15959         * tree-ssanames.c (init_ssanames): Add arguments FN and SIZE.
15960         Use FN instead of cfun.
15961         (make_ssa_name_fn): Rename from make_ssa_name.
15962         (pass_release_ssa_names): Add TODO_dump_func to finish flags.
15963         * tree-flow-inline.h (make_ssa_name): Move from
15964         tree-ssanames.c.  Convert to static inline.  Call make_ssa_name_fn.
15965         * omp-low.c (expand_omp_parallel):
15966         * tree-flow-inline.h (redirect_edge_var_map_result):
15967         * tree-ssa.c (init_tree_ssa): Add argument FN.
15968         Use it instead of cfun.  Update all users.
15969
15970 2008-05-13  Tom Tromey  <tromey@redhat.com>
15971
15972         PR preprocessor/22168:
15973         * doc/cpp.texi (Top): Update menu.
15974         (Alternatives to Wrapper #ifndef): New node.
15975         (Other Directives): Document deprecation.
15976         (Obsolete Features): Remove menu.
15977         (Assertions): Merge node into Obsolete Features.
15978         (Obsolete once-only headers): Move earlier; rename to Alternatives
15979         to Wrapper #ifndef.
15980         * doc/cppopts.texi: Update.
15981         * c.opt (Wdeprecated): Enable for C and ObjC.
15982         * doc/invoke.texi (Option Summary): Move -Wno-deprecated.
15983         (C++ Dialect Options): Move -Wno-deprecated from here to...
15984         (Warning Options): ... here.
15985
15986 2008-05-13  Richard Guenther  <rguenther@suse.de>
15987
15988         PR middle-end/36227
15989         * fold-const.c (fold_sign_changed_comparison): Do not allow
15990         changes in pointer-ness.
15991
15992 2008-05-12  Kaz Kojima  <kkojima@gcc.gnu.org>
15993
15994         PR target/24713
15995         * config/sh/sh.c (sh_expand_prologue): Don't clear
15996         RTX_FRAME_RELATED_P for push insns.
15997
15998 2008-05-12  Andy Hutchinson  <hutchinsonandy@aim.com>
15999
16000         * config/avr/avr.h (MAX_OFILE_ALIGNMENT): Define.
16001
16002 2008-05-12  Anatoly Sokolov <aesok@post.ru>
16003
16004         * config/avr/avr.h (machine_function): Add 'is_leaf' field.
16005         * config/avr/avr.c (avr_regs_to_save): Compute 'machine->is_leaf'.
16006         Use 'machine->is_leaf' instead of 'leaf_func_p'.
16007
16008 2008-05-12  H.J. Lu  <hongjiu.lu@intel.com>
16009
16010         * config/i386/sse.md (*sse_concatv4sf): Renamed to ...
16011         (*vec_concatv4sf_sse): This.
16012         (*sse2_concatv2si): Renamed to ...
16013         (*vec_concatv2si_sse2): This.
16014         (*sse1_concatv2si): Renamed to ...
16015         (*vec_concatv2si_sse): This.
16016         (*vec_concatv2di_rex): Renamed to ...
16017         (*vec_concatv2di_rex64): This.
16018         (*vec_concatv2si_sse4_1): New.
16019         (*vec_concatv2di_rex64_sse4_1): Likewise.
16020
16021 2008-05-12  Uros Bizjak  <ubizjak@gmail.com>
16022
16023         PR rtl-optimization/36111
16024         * recog.c (validate_replace_rtx_1): Unshare new RTL expression
16025         that was created for swappable operands.
16026
16027 2008-05-12  Samuel Tardieu  <sam@rfc1149.net>
16028
16029         PR ada/36001
16030         * Makefile.in: Substitute GNATMAKE and GNATBIND.
16031         * configure.ac: Add call to ACX_PROG_GNAT.
16032
16033 2008-05-11  Volker Reichelt  <v.reichelt@netcologne.de>
16034
16035         * optc-gen.awk: Fix comment typo.
16036
16037 2008-05-11  Aaron W. LaFramboise  <aaronavay62@aaronwl.com>
16038
16039         * pretty-print.c (pp_integer_with_precision): Use
16040         HOST_LONG_LONG_FORMAT.
16041
16042 2008-05-10  Kenneth Zadeck  <zadeck@naturalbridge.com>
16043
16044         * gcse.c (store_killed_in_insn): Negated call to RTL_CONST_CALL_P.
16045
16046 2008-05-10  H.J. Lu  <hongjiu.lu@intel.com>
16047
16048         * config/i386/i386.c (bdesc_ptest): Removed.
16049         (ix86_builtin_type): Add INT_FTYPE_V2DI_V2DI_PTEST.
16050         (bdesc_args): Add __builtin_ia32_ptestz128,
16051         __builtin_ia32_ptestc128 and __builtin_ia32_ptestnzc128.
16052         (ix86_init_mmx_sse_builtins): Updated.
16053         (ix86_expand_args_builtin): Handle INT_FTYPE_V2DI_V2DI_PTEST.
16054         (ix86_expand_builtin): Updated.
16055
16056 2008-05-10  Richard Sandiford  <rdsandiford@googlemail.com>
16057
16058         * tree-cfg.c (valid_fixed_convert_types_p): New function.
16059         (verify_gimple_expr): Handle FIXED_CONVERT_EXPR.
16060
16061 2008-05-10  Uros Bizjak  <ubizjak@gmail.com>
16062
16063         * value-prof.c (interesting_stringop_to_profile): Do not
16064         return early for BUILT_IN_MEMPCPY.
16065
16066 2008-05-09  H.J. Lu  <hongjiu.lu@intel.com>
16067
16068         * calls.c (expand_call): Don't use callgraph to increase
16069         preferred_stack_boundary.
16070
16071         * cgraph.h (cgraph_rtl_info): Use unsigned on
16072         preferred_incoming_stack_boundary.
16073
16074         * final.c (rest_of_clean_state): Use unsigned on
16075         preferred_stack_boundary.
16076
16077 2008-05-09  Tom Tromey  <tromey@redhat.com>
16078
16079         PR preprocessor/22231:
16080         * c-opts.c (sanitize_cpp_opts): Disallow -MG if compilation is
16081         proceeding.
16082
16083 2008-05-09  Uros Bizjak  <ubizjak@gmail.com>
16084
16085         PR tree-optimization/36129
16086         * tree-ssa-ccp.c: Include value-prof.h.
16087         (execute_fold_all_builtins): Call gimple_remove_stmt_histograms if
16088         built-in function was folded to a constant.
16089         * Makefile.in (tree-ssa-ccp.c): Depend on value-prof.h
16090
16091 2008-05-09  Jan Sjodin  <jan.sjodin@amd.com>
16092             Sebastian Pop  <sebastian.pop@amd.com>
16093
16094         * tree-scalar-evolution.c: Document instantiate_scev.
16095         (instantiate_parameters_1): Renamed instantiate_scev_1.
16096         Don't use the same loop for instantiation_loop and evolution_loop.
16097         (instantiate_scev): New.
16098         (instantiate_parameters): Moved...
16099         (resolve_mixers): Update call to instantiate_scev_1 to pass the
16100         same loop twice.  Maintains the semantics for this function.
16101         * tree-scalar-evolution.h (instantiate_scev): Declare.
16102         (instantiate_parameters): ...here.  Now static inline.
16103         * tree-data-ref.c (dr_analyze_indices): Call instantiate_scev
16104         instead of resolve_mixers.
16105
16106 2008-05-09  Maxim Kuvyrkov  <maxim@codesourcery.com>
16107
16108         * rtl-factoring.c (collect_pattern_seqs): Fix typo.
16109
16110 2008-05-09  Tomas Bily  <tbily@suse.cz>
16111
16112         * config/pa/pa.c (reloc_needed): Use CASE_CONVERT.
16113         * tree-cfg.c (verify_expr, verify_gimple_expr): Likewise.
16114         * tree-ssa-structalias.c (get_constraint_for): Likewise.
16115         * c-common.c (c_common_truthvalue_conversion): Likewise.
16116         * tree-object-size.c (compute_object_offset): Likewise.
16117         * tree-inline.c (estimate_num_insns_1): Likewise.
16118         * varasm.c (const_hash_1, compare_constant, copy_constant)
16119         (compute_reloc_for_constant, output_addressed_constants)
16120         (initializer_constant_valid_p): Likewise.
16121         * c-omp.c (check_omp_for_incr_expr): Likewise.
16122         * gimplify.c (gimplify_expr): Likewise.
16123         * c-typeck.c (c_finish_return): Likewise.
16124         * tree-vectorizer.c (supportable_widening_operation)
16125         (supportable_narrowing_operation): Likewise.
16126         * c-pretty-print.c (pp_c_cast_expression, pp_c_expression): Likewise.
16127         * matrix-reorg.c (can_calculate_expr_before_stmt): Likewise.
16128         * expr.c (highest_pow2_factor, expand_expr_real_1): Likewise.
16129         * dwarf2out.c (loc_descriptor_from_tree_1, add_bound_info)
16130         (descr_info_loc): Likewise.
16131         * tree-ssa-loop-ivopts.c (may_be_nonaddressable_p): Likewise.
16132         * fold-const.c (operand_equal_p, make_range, extract_muldiv_1)
16133         (fold_unary): Likewise.
16134         * builtins.c (get_pointer_alignment): Likewise.
16135         * tree-scalar-evolution.c (interpret_rhs_modify_stmt)
16136         (instantiate_parameters_1): Likewise.
16137         * tree.c (expr_align, stabilize_reference): Likewise.
16138         * tree-pretty-print.c (dump_generic_node, op_prio): Likewise.
16139         * tree-ssa-loop-niter.c (derive_constant_upper_bound): Likewise.
16140         * convert.c (strip_float_extensions): Use CONVERT_EXPR_P.
16141         * tree-ssa-threadedge.c (simplify_control_stmt_condition): Likewise.
16142         * config/alpha/alpha.c (va_list_skip_additions): Likewise.
16143         * c-common.c (c_alignof_expr, check_function_arguments_recurse):
16144         Likewise.
16145         * tree-ssa.c (tree_ssa_useless_type_conversion): Likewise.
16146         * varasm.c (initializer_constant_valid_p, output_constant): Likewise.
16147         * tree-ssa-forwprop.c (get_prop_source_stmt, can_propagate_from)
16148         (forward_propagate_addr_expr_1, forward_propagate_addr_expr)
16149         (forward_propagate_comparison)
16150         (tree_ssa_forward_propagate_single_use_vars): Likewise.
16151         * cfgexpand.c (discover_nonconstant_array_refs_r): Likewise.
16152         * emit-rtl.c (component_ref_for_mem_expr)
16153         (set_mem_attributes_minus_bitpos): Likewise.
16154         * tree-ssa-phiopt.c (conditional_replacement): Likewise.
16155         * gimplify.c (gimplify_conversion, goa_lhs_expr_p, gimplify_expr):
16156         Likewise.
16157         * c-typeck.c (default_function_array_conversion, build_indirect_ref)
16158         (build_function_call, pointer_diff, build_compound_expr)
16159         (c_finish_return): Likewise.
16160         * tree-vect-analyze.c (vect_determine_vectorization_factor): Likewise.
16161         * matrix-reorg.c (get_inner_of_cast_expr, may_flatten_matrices_1):
16162         Likewise.
16163         * tree-ssa-ifcombine.c (recognize_single_bit_test): Likewise.
16164         * expr.c (is_aligning_offset): Likewise.
16165         * tree-ssa-alias.c (is_escape_site): Likewise.
16166         * tree-stdarg.c (va_list_counter_bump, check_va_list_escapes)
16167         (check_all_va_list_escapes): Likewise.
16168         * tree-ssa-loop-ivopts.c (determine_base_object)
16169         (determine_common_wider_type): Likewise.
16170         * dojump.c (do_jump): Likewise.
16171         * tree-ssa-sccvn.c (simplify_unary_expression): Likewise.
16172         * tree-gimple.c (is_gimple_cast): Likewise.
16173         * fold-const.c (decode_field_reference, )
16174         (fold_sign_changed_comparison, fold_unary, fold_comparison)
16175         (fold_binary): Likewise.
16176         * tree-ssa-alias-warnings.c (find_alias_site_helper)
16177         (already_warned_in_frontend_p): Likewise.
16178         * builtins.c (get_memory_rtx, fold_builtin_next_arg): Likewise.
16179         * tree.c (really_constant_p, get_unwidened): Likewise.
16180         * tree-ssa-loop-niter.c (expand_simple_operations): Likewise.
16181         * tree-ssa-loop-im.c (rewrite_bittest): Likewise.
16182         * tree-vrp.c (register_edge_assert_for_2, register_edge_assert_for_1):
16183         Likewise.
16184         * tree.h (STRIP_NOPS, STRIP_SIGN_NOPS, STRIP_TYPE_NOPS): Use
16185         CONVERT_EXPR_P.
16186         (CONVERT_EXPR_P): Define.
16187         (CASE_CONVERT): Define.
16188
16189 2008-05-08  Kenneth Zadeck  <zadeck@naturalbridge.com>
16190
16191         PR middle-end/36117
16192         * dce.c (deletable_insn_p): Do not delete calls if df_in_progress.
16193         (delete_unmarked_insns): When deleting a call, call
16194         delete_unreachable_blocks.
16195         * rtl.texi (RTL_CONST_CALL_P, RTL_PURE_CALL_P,
16196         RTL_CONST_OR_PURE_CALL_P, RTL_LOOPING_CONST_OR_PURE_CALL_P): Fixed doc.
16197
16198 2008-05-08  Richard Guenther  <rguenther@suse.de>
16199
16200         * doc/invoke.texi (-fdump-tree-salias): Remove documentation.
16201         (-ftree-salias): Likewise.
16202         (salias-max-implicit-fields): Remove param documentation.
16203         (salias-max-array-elements): Likewise.
16204         * tree-pass.h (pass_create_structure_vars): Remove.
16205         * params.h (SALIAS_MAX_IMPLICIT_FIELDS): Remove.
16206         (SALIAS_MAX_ARRAY_ELEMENTS): Likewise.
16207         * tree-ssa-alias.c (create_structure_vars): Remove.
16208         (gate_structure_vars): Likewise.
16209         (pass_create_structure_vars): Likewise.
16210         (gate_build_alias): Likewise.
16211         (pass_build_alias): Adjust to run always and dump the function.
16212         * common.opt (ftree-salias): Hide.
16213         * passes.c (init_optimization_passes): Remove
16214         pass_create_structure_vars, adjust comment.
16215         * params.def (PARAM_SALIAS_MAX_IMPLICIT_FIELDS): Remove.
16216         (PARAM_SALIAS_MAX_ARRAY_ELEMENTS): Likewise.
16217         * opts.c (decode_options): Do not set flag_tree_salias.
16218         (common_handle_option): Add OPT_ftree_salias to the backward
16219         compatibility section.
16220
16221 2008-05-08  Richard Guenther  <rguenther@suse.de>
16222
16223         * tree-flow-inline.h (var_can_have_subvars): Move ...
16224         * tree-ssa-structalias.c (var_can_have_subvars): ... here.
16225         * tree-flow.h (var_can_have_subvars): Remove.
16226         (push_fields_onto_fieldstack): Remove.
16227         (sort_fieldstack): Likewise.
16228         (struct fieldoff): Move ...
16229         * tree-ssa-structalias.c (struct fieldoff): ... here.  Remove
16230         alias_set and base_for_components fields.
16231         (sort_fieldstack): Make static.
16232         (push_fields_onto_fieldstack): Likewise.  Remove code that
16233         handles anything but RECORD_TYPEs.  Remove alias_set and
16234         base_for_components handling.
16235         (create_variable_info_for): Adjust.
16236
16237 2008-05-08  Seongbae Park  <seongbae.park@gmail.com>
16238
16239         * common.opt (Wframe-larger-than=): Shorten the help message
16240         to one line.
16241         * doc/invoke.texi (Wframe-larger-than=): Add more description.
16242
16243 2008-05-08  Rafael Espíndola  <espindola@google.com>
16244
16245         * tree-complex.c (expand_complex_div_wide): Don't create CONDs that
16246         trap.
16247         * tree-gimple.c (is_gimple_condexpr): Check that the expression doesn't
16248         trap and that both operands are gimple values.
16249         (canonicalize_cond_expr_cond): Use is_gimple_condexpr.
16250         * gcc/tree-eh.c (tree_could_trap_p): Correctly detect if a comparison
16251         is a fp operation.
16252
16253 2008-05-08  Richard Sandiford  <rsandifo@nildram.co.uk>
16254
16255         * read-rtl.c (join_c_conditions): Return the first string if the
16256         two strings are equal.
16257
16258 2008-05-08  Richard Sandiford  <rsandifo@nildram.co.uk>
16259
16260         * gensupport.h (pred_data): Add a "num_codes" field.
16261         (add_predicate_code): Declare.
16262         * gensupport.c (add_predicate_code): New function.
16263         (std_pred_table): Add an "allows_const_p" field.
16264         (std_preds): Set this field for predicates that allow RTX_CONST_OBJs.
16265         Remove the (incomplete) list of such codes from the codes field.
16266         (init_predicate_table): Use add_predicate_code.  Add all
16267         RTX_CONST_OBJs if allows_const_p is true.
16268         * genrecog.c (process_define_predicate): Use add_predicate_code.
16269
16270 2008-05-08  David Daney  <ddaney@avtrex.com>
16271             Richard Sandiford  <rsandifo@nildram.co.uk>
16272
16273         * config/mips/mips.md (mips_expand_compare_and_swap_12): Handle
16274         special case of constant zero operands.
16275         * config/mips/mips.c (mips_expand_compare_and_swap_12): Zero extend
16276         old and new values.  Special case constant zero values.
16277         * config/mips/mips.h (MIPS_COMPARE_AND_SWAP): Skip 'sync' if compare
16278         fails.
16279         (MIPS_COMPARE_AND_SWAP_12): Handle constant zero operands.
16280         (MIPS_COMPARE_AND_SWAP_12_0): New macro.
16281
16282 2008-05-08  Paolo Bonzini  <bonzini@gnu.org>
16283
16284         PR target/36090
16285         * simplify-rtx.c (simplify_plus_minus): Create CONST of
16286         similar RTX_CONST_OBJ before CONST_INT.
16287
16288 2008-05-08  Steve Ellcey  <sje@cup.hp.com>
16289
16290         * stmt.c (expand_stack_restore): Change sa mode if needed.
16291
16292 2008-05-08  Richard Guenther  <rguenther@suse.de>
16293
16294         * config/i386/i386-protos.h (ix86_return_in_memory): Adjust
16295         return type to bool.
16296         (ix86_sol10_return_in_memory): Likewise.
16297         (ix86_i386elf_return_in_memory): Likewise.
16298         (ix86_i386interix_return_in_memory): Likewise.
16299         * config/i386/i386.c (ix86_return_in_memory): Likewise.
16300         (ix86_sol10_return_in_memory): Likewise.
16301         (ix86_i386elf_return_in_memory): Likewise.
16302         (ix86_i386interix_return_in_memory): Likewise.
16303
16304 2008-05-08  Kai Tietz  <kai.tietz@onevision.com>
16305
16306         PR bootstrap/36180
16307         * calls.c (compute_argument_block_size ): Add ATTRIBUTE_UNUSED to
16308         fndecl argument.
16309         (emit_library_call_value_1): Add ATTRIBUTE_UNUSED to variable fndecl.
16310         * target-def.h: Check that TARGET_RETURN_IN_MEMORY isn't
16311         declared in front.
16312
16313 2008-05-08  Richard Guenther  <rguenther@suse.de>
16314
16315         * tree-data-ref.c (dr_analyze_alias): Do not set DR_SUBVARS.
16316         * tree-data-ref.h (struct dr_alias): Remove subvars field.
16317         (DR_SUBVARS): Remove.
16318         * tree-dfa.c (dump_subvars_for): Remove.
16319         (debug_subvars_for): Likewise.
16320         (dump_variable): Do not dump subvars.
16321         (remove_referenced_var): Do not remove subvars.
16322         * tree-flow-inline.h (clear_call_clobbered): SFTs no longer exist.
16323         (lookup_subvars_for_var): Remove.
16324         (get_subvars_for_var): Likewise.
16325         (get_subvars_at): Likewise.
16326         (get_first_overlapping_subvar): Likewise.
16327         (overlap_subvar): Likewise.
16328         * tree-flow.h (subvar_t): Remove.
16329         (struct var_ann_d): Remove subvars field.
16330         * tree-ssa-alias.c (mark_aliases_call_clobbered): Remove queued
16331         argument.  Remove special handling of SFTs.
16332         (compute_tag_properties): Likewise.
16333         (set_initial_properties): Likewise.
16334         (compute_call_clobbered): Likewise.
16335         (count_mem_refs): Likewise.
16336         (compute_memory_partitions): Likewise.
16337         (compute_flow_insensitive_aliasing): Likewise.
16338         (setup_pointers_and_addressables): Likewise.
16339         (new_type_alias): Likewise.
16340         (struct used_part): Remove.
16341         (used_portions): Likewise.
16342         (struct used_part_map): Likewise.
16343         (used_part_map_eq): Likewise.
16344         (used_part_map_hash): Likewise.
16345         (free_used_part_map): Likewise.
16346         (up_lookup): Likewise.
16347         (up_insert): Likewise.
16348         (get_or_create_used_part_for): Likewise.
16349         (create_sft): Likewise.
16350         (create_overlap_variables_for): Likewise.
16351         (find_used_portions): Likewise.
16352         (create_structure_vars): Likewise.
16353         * tree.def (STRUCT_FIELD_TAG): Remove.
16354         * tree.h (MTAG_P): Adjust.
16355         (struct tree_memory_tag): Remove base_for_components and
16356         unpartitionable flags.
16357         (struct tree_struct_field_tag): Remove.
16358         (SFT_PARENT_VAR): Likewise.
16359         (SFT_OFFSET): Likewise.
16360         (SFT_SIZE): Likewise.
16361         (SFT_NONADDRESSABLE_P): Likewise.
16362         (SFT_ALIAS_SET): Likewise.
16363         (SFT_UNPARTITIONABLE_P): Likewise.
16364         (SFT_BASE_FOR_COMPONENTS_P): Likewise.
16365         (union tree_node): Remove sft field.
16366         * alias.c (get_alias_set): Remove special handling of SFTs.
16367         * print-tree.c (print_node): Remove handling of SFTs.
16368         * tree-dump.c (dequeue_and_dump): Likewise.
16369         * tree-into-ssa.c (mark_sym_for_renaming): Likewise.
16370         * tree-nrv.c (dest_safe_for_nrv_p): Remove special handling of SFTs.
16371         * tree-predcom.c (set_alias_info): Do not set subvars.
16372         * tree-pretty-print.c (dump_generic_node): Do not handle SFTs.
16373         * tree-ssa-loop-ivopts.c (get_ref_tag): Likewise.
16374         * tree-ssa-operands.c (access_can_touch_variable): Likewise.
16375         (add_vars_for_offset): Remove.
16376         (add_virtual_operand): Remove special handling of SFTs.
16377         (add_call_clobber_ops): Likewise.
16378         (add_call_read_ops): Likewise.
16379         (get_asm_expr_operands): Likewise.
16380         (get_modify_stmt_operands): Likewise.
16381         (get_expr_operands): Likewise.
16382         (add_to_addressable_set): Likewise.
16383         * tree-ssa.c (verify_ssa_name): Do not handle SFTs.
16384         * tree-tailcall.c (suitable_for_tail_opt_p): Likewise.
16385         * tree-vect-transform.c (vect_create_data_ref_ptr): Do not set subvars.
16386         * tree.c (init_ttree): Remove STRUCT_FIELD_TAG initialization.
16387         (tree_code_size): Remove STRUCT_FIELD_TAG handling.
16388         (tree_node_structure): Likewise.
16389         * tree-ssa-structalias.c (set_uids_in_ptset): Remove special
16390         handling of SFTs.
16391         (find_what_p_points_to): Likewise.
16392
16393 2008-05-08  Sa Liu  <saliu@de.ibm.com>
16394
16395         * config/spu/spu.md: Fixed subti3 pattern.
16396
16397 2008-05-08  Richard Guenther  <rguenther@suse.de>
16398
16399         PR middle-end/36154
16400         * tree-ssa-structalias.c (push_fields_onto_fieldstack): Make
16401         sure to create a representative for trailing arrays for PTA.
16402
16403 2008-05-08  Richard Guenther  <rguenther@suse.de>
16404
16405         PR middle-end/36172
16406         * fold-const.c (operand_equal_p): Two objects which types
16407         differ in pointerness are not equal.
16408
16409 2008-05-08  Kai Tietz  <kai.tietz@onevision.com>
16410
16411         * calls.c (compute_argument_block_size): Add argument tree fndecl.
16412         (OUTGOING_REG_PARM_STACK_SPACE): Add function type argument.
16413         (emit_library_call_value_1): Add new variable fndecl initialized by
16414         NULL_TREE. It should be the decl type of orgfun, but this information
16415         seems not to be available here, so it uses the default calling abi.
16416         * config/arm/arm.c (arm_return_in_memory): Add fntype argumen.
16417         * config/arm/arm.h (RETURN_IN_MEMORY): Replace RETURN_IN_MEMORY
16418         by TARGET_RETURN_IN_MEMORY.
16419         * config/i386/i386-interix.h: Likewise.
16420         * config/i386/i386.h: Likewise.
16421         * config/i386/i386elf.h: Likewise.
16422         * config/i386/ptx4-i.h: Likewise.
16423         * config/i386/sol2-10.h: Likewise.
16424         * config/i386/sysv4.h: Likewise.
16425         * config/i386/vx-common.h: Likewise.
16426         * config/cris/cris.h: Removed #if 0 clause.
16427         * config/arm/arm-protos.h (arm_return_in_memory): Add fntype argument.
16428         * config/i386/i386-protos.h (ix86_return_in_memory): Add fntype
16429         argument.
16430         (ix86_sol10_return_in_memory): Likewise.
16431         (ix86_i386elf_return_in_memory): New.
16432         (ix86_i386interix_return_in_memory): New.
16433         * config/mt/mt-protos.h (mt_return_in_memory): New.
16434         * config/mt/mt.c: Likewise.
16435         * config/mt/mt.h (OUTGOING_REG_PARM_STACK_SPACE): Add FNTYPE argument.
16436         (RETURN_IN_MEMORY):  Replace by TARGET_RETURN_IN_MEMORY.
16437         * config/bfin/bfin.h: Likewise.
16438         * config/bfin/bfin-protos.h (bfin_return_in_memory): Add fntype
16439         argument.
16440         * config/bfin/bfin.c: Likewise.
16441         * config/pa/pa.h (OUTGOING_REG_PARM_STACK_SPACE): Add FNTYPE argument.
16442         * config/alpha/unicosmk.h: Likewise.
16443         * config/i386/cygming.h: Likewise.
16444         * config/iq2000/iq2000.h: Likewise.
16445         * config/mips/mips.h: Likewise.
16446         * config/mn10300/mn10300.h: Likewise.
16447         * config/rs6000/rs6000.h: Likewise.
16448         * config/score/score.h: Likewise.
16449         * config/spu/spu.h: Likewise.
16450         * config/v850/v850.h: Likewise.
16451         * defaults.h: Likewise.
16452         * doc/tm.texi (OUTGOING_REG_PARM_STACK_SPACE): Adjust documentation.
16453         * expr.c (emit_block_move): Adjust use of
16454         OUTGOING_REG_PARM_STACK_SPACE.
16455         * function.c (STACK_DYNAMIC_OFFSET): Adjust use of
16456         OUTGOING_REG_PARM_STACK_SPACE.
16457         * targhooks.c (default_return_in_memory): Remove RETURN_IN_MEMORY.
16458
16459 2008-05-08  Jakub Jelinek  <jakub@redhat.com>
16460
16461         * tree-parloops.c (create_parallel_loop): Set OMP_RETURN_NOWAIT
16462         on OMP_RETURN for OMP_FOR.
16463
16464         PR debug/35896
16465         * dwarf2out.c (dw_expand_expr, common_check): Removed.
16466         (fortran_common): New function.
16467         (gen_variable_die): Call fortran_common instead of common_check,
16468         adjust for it returning tree instead of rtx.  Formatting.
16469
16470 2008-05-07  Kenneth Zadeck  <zadeck@naturalbridge.com>
16471
16472         PR rtl/7335
16473         PR rtl/33826
16474         * see.c (see_copy_insn): Copy new pure const attributes for new call.
16475         * c-decl.c (merge_decls): Ditto.
16476         * postreload.c (record_opr_changes): Change CONST_OR_PURE_CALL_P
16477         to RTL_CONST_OR_PURE_CALL_P.
16478         * tree.c (define_local_buitin): Rename DECL_IS_PURE to DECL_PURE_P.
16479         Initialized DECL_LOOPING_CONST_PURE.
16480         (process_call_operands): Set tree_side_effects properly.
16481         * tree.h (TREE_READONLY_DECL_P): Removed.
16482         (DECL_IS_PURE): Renamed to DECL_PURE_P.
16483         (DECL_LOOPING_OR_CONST_P): New macro.
16484         (struct tree_function_decl): Added looping_const_or_pure_p.
16485         (ECF_*) Renumbered.
16486         (ECF_LOOPING_OR_CONST_P): New macro.
16487         * rtlanal.c (pure_const_p): Removed.
16488         * builtins.c (expand_builtin): Rename DECL_IS_PURE to DECL_PURE_P.
16489         * reorg.c (delete_prior_computation) Changed CONST_OR_PURE_CALL_P
16490         to RTL_CONST_CALL_P.
16491         * ipa-pure-const.c (pure_const_state_e): Added looping field.
16492         (check_decl, check_tree, check_call, scan_function): Initialize
16493         looping.
16494         (analyze_function): Rename DECL_IS_PURE to DECL_PURE_P.
16495         (static_execute): Set looping true for recursive functions.
16496         Undo setting state to IPA_NEITHER for recursive functions.
16497         * cse.c (cse_insn):
16498         * ifcvt.c (noce_can_store_speculate_p): Changed
16499         CONST_OR_PURE_CALL_P and pure_call_p to RTL_CONST_CALL_P or
16500         RTL_CONST_OR_PURE_CALL_P.
16501         * dse.c (scan_insn): Ditto.
16502         * local-alloc.c (validate_equiv_mem, memref_used_between_p): Ditto.
16503         * gcse.c (oprs_not_seen_p) Changed CONST_OR_PURE_CALL_P to
16504         RTL_CONST_OR_PURE_CALL_P.
16505         (store_killed_in_insn): Changed CONST_OR_PURE_CALL_P and
16506         pure_call_p to RTL_CONST_CALL_P.
16507         * gimplify.c (gimplify_call_expr): Clear side effects for
16508         non-looping pure and constant calls.
16509         * calls.c (emit_call_1): Set rtl flags from ecf flags.
16510         (flags_from_decl_or_type): Set ecf flags from decl flags.
16511         (initialize_argument_information): Turn off
16512         ECF_LOOPING_CONST_OR_PURE when turning off ECF_CONST.
16513         Change const to pure if callee_copies is true rather than just
16514         turning off const.
16515         (expand_call): Turn off ECF_LOOPING_PURE_CONST_CALL and remove old
16516         way of marking pure calls.
16517         (emit_library_call_value_1): Turn off ECF_LOOPING_PURE_CONST_CALL.
16518         Remove hack that was supposed to fix pr7335 and remove old
16519         way of marking pure calls.
16520         * emit-rtl.c (emit_copy_of_insn_after): Copy RTL_CONST_CALL_P,
16521         RTL_PURE_CALL_P, RTL_LOOPING_CONST_OR_PURE_CALL_P.
16522         * cselib.c (cselib_process_insn): Changed CONST_OR_PURE_CALL_P to
16523         RTL_CONST_OR_PURE_CALL_P.
16524         * tree-ssa-pre.c (can_value_number_call): Fixed spacing.
16525         * loop-invariant.c (find_exits, find_invariant_bb): Changed
16526         CONST_OR_PURE_CALL_P to RTL_CONST_OR_PURE_CALL_P.
16527         * sched-deps.c (schedule_analyze): Ditto.
16528         * rtl.h (struct rtx_def): Use call field, unchanging field, and
16529         return_val field of calls to represent pure and const function info.
16530         (CONST_OR_PURE_CALL_P): Deleted macro.
16531         (RTL_CONST_CALL_P, RTL_PURE_CALL_P,
16532         RTL_LOOPING_CONST_OR_PURE_CALL_P, RTL_CONST_OR_PURE_P): New macros.
16533         * tree-inline.c (copy_body_r): Changed TREE_READONLY_DECL_P to
16534         TREE_READONLY.
16535         * tree-optimize.c (execute_fixup_cfg): Added test for
16536         ECF_LOOPING_CONST_OR_PURE.
16537         * c-common.c (handle_pure_attribute): Changed DECL_IS_PURE to
16538         DECL_PURE_P.
16539         * tree-cfg.c (update_call_expr_flags): Do not clear tree side
16540         effects for looping pure or const calls.
16541         (verify_gimple_expr): Added verification code.
16542         * config/alpha/alpha.c (alpha_legitimize_address,
16543         alpha_emit_xfloating_libcall): Changed CONST_OR_PURE_CALL_P to
16544         RTL_CONST_CALL_P.
16545         * config/s390/s390.c (s390_emit_tls_call_insn): Ditto.
16546         * config/rs6000/rs6000.c (rs6000_legitimize_tls_address): Ditto.
16547         * config/mips/mips.c (mips_call_tls_get_addr): Ditto.
16548         * cfgrtl.c (need_fake_edge_p): Changed CONST_OR_PURE_CALL_P to
16549         RTL_CONST_OR_PURE_CALL_P.
16550         * dce.c (deletable_insn_p): Allow non looping, non sibling, pure
16551         and const calls to be deleted.
16552
16553 2008-05-07  Uros Bizjak  <ubizjak@gmail.com>
16554
16555         PR target/35714
16556         * config/i386/mmx.md (mmx_subv2sf3): New expander.
16557         (*mmx_subv2sf3): Rename from mmx_subv2sf3 insn pattern.
16558         (*mmx_eqv2sf3): Rename from mmx_eqv2sf3 insn pattern.
16559         (mmx_eqv2sf3): New expander.  Use ix86_fixup_binary_operands_no_copy
16560         to handle nonimmediate operands.
16561         (*mmx_paddwd): Rename from mmx_paddwd insn pattern.
16562         (mmx_paddwd): New expander.  Use ix86_fixup_binary_operands_no_copy
16563         to handle nonimmediate operands.
16564         (*mmx_pmulhrwv4hi3): Rename from mmx_pmulhrwv4hi3 insn pattern.
16565         (mmx_pmulhrwv4hi3): New expander.  Use
16566         ix86_fixup_binary_operands_no_copy to handle nonimmediate operands.
16567         (*sse2_umulv1siv1di3): Rename from sse2_umulv1siv1di3 insn pattern.
16568         (sse2_umulv1siv1di3): New expander.  Use
16569         ix86_fixup_binary_operands_no_copy to handle nonimmediate operands.
16570         (*mmx_eq<mode>3): Rename from mmx_eq<mode>3 insn pattern.
16571         (mmx_eq<mode>3): New expander.  Use
16572         ix86_fixup_binary_operands_no_copy to handle nonimmediate operands.
16573         (*mmx_uavgv8qi3): Rename from mmx_uavgv8qi3 insn pattern.
16574         (mmx_uavgv8qi3): New expander.  Use
16575         ix86_fixup_binary_operands_no_copy to handle nonimmediate operands.
16576         (*mmx_uavgv4hi3): Rename from mmx_uavgv4hi3 insn pattern.
16577         (mmx_uavgv4hi3): New expander.  Use
16578         ix86_fixup_binary_operands_no_copy to handle nonimmediate operands.
16579
16580         * config/i386/sse.md
16581         (sse_movhlps_exp): New expander.  Use ix86_fixup_binary_operands
16582         to handle nonimmediate operands.
16583         (sse_movlhps_exp): New expander.  Use ix86_fixup_binary_operands
16584         to handle nonimmediate operands.
16585         (sse_loadhps_exp): New expander.  Use ix86_fixup_binary_operands
16586         to handle nonimmediate operands.
16587         (sse_loadlps_exp): New expander.  Use ix86_fixup_binary_operands
16588         to handle nonimmediate operands.
16589         (sse2_unpckhpd_exp): New expander.  Use
16590         ix86_fixup_binary_operands_no_copy to handle nonimmediate operands.
16591         (sse2_unpcklpd_exp): New expander.  Use
16592         ix86_fixup_binary_operands_no_copy to handle nonimmediate operands.
16593         (sse_loadhpd_exp): New expander.  Use ix86_fixup_binary_operands
16594         to handle nonimmediate operands.
16595         (sse_loadlpd): New expander.  Use ix86_fixup_binary_operands
16596         to handle nonimmediate operands.
16597         (*sse2_<plusminus_insn><mode>3): Rename from
16598         sse2_<plusminus_insn><mode>3 insn pattern.
16599         (sse2_<plusminus_insn><mode>3): New expander.  Use
16600         ix86_fixup_binary_operands_no_copy to handle nonimmediate operands.
16601         (*sse2_umulv2siv2di3): Rename from sse2_umulv2siv2di3 insn pattern.
16602         (sse2_umulv2siv2di3): New expander.  Use
16603         ix86_fixup_binary_operands_no_copy to handle nonimmediate operands.
16604         (*sse4_1_mulv2siv2di3): Rename from sse4_1_mulv2siv2di3 insn pattern.
16605         (sse4_1_mulv2siv2di3): New expander.  Use
16606         ix86_fixup_binary_operands_no_copy to handle nonimmediate operands.
16607         (*sse2_pmaddwd): Rename from sse2_pmaddwd insn pattern.
16608         (sse2_pmaddwd): New expander.  Use
16609         ix86_fixup_binary_operands_no_copy to handle nonimmediate operands.
16610         (*sse2_eq<mode>3): Rename from sse2_eq<mode>3 insn pattern.
16611         (sse2_eq<mode>3): New expander.  Use
16612         ix86_fixup_binary_operands_no_copy to handle nonimmediate operands.
16613         (*sse4_1_eqv2di3): Rename from sse4_1_eqv2di3 insn pattern.
16614         (sse4_1_eqv2di3): New expander.  Use
16615         ix86_fixup_binary_operands_no_copy to handle nonimmediate operands.
16616         (*sse2_uavgv16qi3): Rename from sse2_uavgv16qi3 insn pattern.
16617         (sse2_uavgv16qi3): New expander.  Use
16618         ix86_fixup_binary_operands_no_copy to handle nonimmediate operands.
16619         (*sse2_uavgv16qi3): Rename from sse2_uavgv16qi3 insn pattern.
16620         (sse2_uavgv16qi3): New expander.  Use
16621         ix86_fixup_binary_operands_no_copy to handle nonimmediate operands.
16622         (*sse2_uavgv8hi3): Rename from sse2_uavgv8hi3 insn pattern.
16623         (sse2_uavgv8hi3): New expander.  Use
16624         ix86_fixup_binary_operands_no_copy to handle nonimmediate operands.
16625         (*ssse3_pmulhrswv8hi3): Rename from ssse3_pmulhrswv8hi3 insn pattern.
16626         (ssse3_pmulhrswv8hi3): New expander.  Use
16627         ix86_fixup_binary_operands_no_copy to handle nonimmediate operands.
16628         (*ssse3_pmulhrswv4hi3): Rename from ssse3_pmulhrswv4hi3 insn pattern.
16629         (ssse3_pmulhrswv4hi3): New expander.  Use
16630         ix86_fixup_binary_operands_no_copy to handle nonimmediate operands.
16631
16632         (<sse>_vm<plusminus_insn><mode>3): Do not use ix86_binary_operator_ok.
16633         (<sse>_vmmul<mode>3): Ditto.
16634         (divv4sf3): Do not use ix86_fixup_binary_operands_no_copy.
16635         (divv2df3): Ditto.
16636         (ssse3_pmaddubsw128): Use register_operand for operand 1.
16637         (ssse3_pmaddubsw): Ditto.
16638
16639         * config/i386/i386.c (struct_builtin_description)
16640         [IX86_BUILTIN_LOADHPS]: Use CODE_FOR_sse_loadhps_exp.
16641         [IX86_BUILTIN_STOREHPS]: Use CODE_FOR_sse_loadlps_exp.
16642         [IX86_BUILTIN_LOADHPD]: Use CODE_FOR_sse2_loadhpd_exp.
16643         [IX86_BUILTIN_LOADLPD]: Use CODE_FOR_sse2_loadlpd_exp.
16644         [IX86_BUILTIN_MOVHLPS]: Use CODE_FOR_sse_movhlps_exp.
16645         [IX86_BUILTIN_MOVLHPS]: Use CODE_FOR_sse_movlhps_exp.
16646         [IX86_BUILTIN_UNPCKHPD]: Use FOR_sse2_unpckhpd_exp.
16647         [IX86_BUILTIN_UNPCKLPD]: Use FOR_sse2_unpcklpd_exp.
16648         (ix86_fixup_binary_operands): Assert that src1
16649         and src2 must have the same mode when swapped.
16650         (ix86_expand_binop_builtin): Do not use ix86_fixup_binary_operands
16651         and ix86_binary_operator_ok.  Do not force operands in registers
16652         when optimizing.
16653
16654 2008-05-07  Jan Hubicka  <jh@suse.cz>
16655
16656         * cgraph.c (dump_cgraph_node): Update.
16657         * cgraph.h (cgraph_local_info): Break out inline summary.
16658         * cgraphunit.c (cgraph_process_new_functions): Use inliner analysis
16659         hook.
16660         * ipa-inline (inline_summary): New accestor function.
16661         (cgraph_clone_inlined_nodes, cgraph_check_inline_limits,
16662         cgraph_decide_inlining, compute_inline_parameters): Update.
16663         * ipa.c (cgraph_remove_unreachable_nodes): Remove statistics.
16664
16665 2008-05-07  Maxim Kuvyrkov  <maxim@codesourcery.com>
16666
16667         Cleanup ColdFire scheduling support and add V4 pipeline model.
16668
16669         * config/m68k/m68k.md (UNSPEC_TIE): New constant.
16670         (define_attr cpu): Add cfv4 value.
16671         (define_attr type, define_attr type1): Merge into a single 'type'
16672         attribute.  Update all uses.
16673         (define_attr opx_type, define_attr opy_type, define_attr opx_access):
16674         Rearrange and update.  Rename value 'reg' to 'Rn', add value 'FPn'.
16675         Update all uses.
16676         (define_attr opx_mem, define_attr opy_mem): Remove.
16677         (define_attr op_mem): Clean up, update comment.
16678         (define_attr size): Use specific values instead of general int.
16679         (define_attr guess, define_attr split): Remove.  Update all uses.
16680         (movdf_internal, tstsi_internal, tsthi_internal, tstqi_internal,
16681         tst<mode>_68881, pushexthisi_const, movsi_const0_68000_10,
16682         movsi_const0_68040_60, movsi_const0, movsi_cf, movstrictqi_cf,
16683         zero_extendhisi2_cf, zero_extendqisi2_cfv4, cfv4_extendhisi2,
16684         68k_extendhisi2, extendqihi2, cfv4_extendqisi2, 68k_extendqisi2,
16685         floatsi<mode>2_68881, ftrunc<mode>2_68881, ftrunc<mode>2_cf,
16686         fix<mode>qi2_68881, fix<mode>hi2_68881, fix<mode>si2_68881,
16687         adddi_dishl32, addsi3_5200, add<mode>3_floatsi_68881,
16688         add<mode>3_floathi_68881, add<mode>3_floatqi_68881,
16689         add<mode>3_68881, add<mode>3_cf, subdi_dishl32, subsi3,
16690         sub<mode>3_floatsi_68881, sub<mode>3_floathi_68881,
16691         sub<mode>3_floatqi_68881, sub<mode>3_68881, sub<mode>3_cf,
16692         mulhi3, mulhisi3, mulhisisi3_s, mulsi3_68020, mulsi3_cf,
16693         umulhisi3, mulhisisi3_z, mul<mode>3_floatsi_68881,
16694         mul<mode>3_floathi_68881, mul<mode>3_floatqi_68881, fmul<mode>3_cf,
16695         div<mode>3_cf, sqrt<mode>2_cf, abs<mode>2_cf, clzsi2,
16696         one_cmplsi2_5200, subreghi1ashrdi_const32, ashrsi3, lshrsi3,
16697         bsetmemqi, bsetmemqi_ext, bclrmemqi, bclrmemqi_ext,
16698         beq, bne, bgt, blt, bordered, bunordered, buneq, bunge, bungt, bunle,
16699         bunlt, bltgt, tablejump_internal, call, non_symbolic_call_value,
16700         symbolic_call_value_jsr, symbolic_call_value_bsr, link):
16701         Update or set attributes.
16702         (stack_tie): New fake instruction.
16703
16704         * config/m68k/m68k.h (TUNE_CFV4): New macro.
16705         (m68k_sched_attr_size): Update declaration.
16706         (m68k_sched_attr_type2): Remove.
16707         (m68k_sched_address_bypass_p, m68k_sched_indexed_address_bypass_p):
16708         Declare new bypass predicates.
16709
16710         * config/m68k/m68k.c (m68k_sched_issue_rate,
16711         m68k_sched_first_cycle_multipass_dfa_lookahead): Declare hook
16712         implementations.
16713         (TARGET_SCHED_ISSUE_RATE,
16714         TARGET_SCHED_FIRST_CYCLE_MULTIPASS_DFA_LOOKAHEAD): Override hooks.
16715         (override_options): Handle scheduling for ColdFire V4 core.
16716         (m68k_expand_prologue): Emit stack_tie.
16717         (enum attr_op_type): Split value 'OP_TYPE_REG' to 'OP_TYPE_RN' and
16718         'OP_TYPE_FPN'.  Update all uses.
16719         (sched_guess_p): Remove.
16720         (sched_address_type): Handle symbolic addresses.
16721         (sched_get_operand): New static function.
16722         (sched_operand_type): Merge into sched_attr_op_type.
16723         (sched_attr_op_type): Handle FP registers, handle quick constants,
16724         update.
16725         (m68k_sched_attr_opx_type, m68k_sched_attr_opy_type): Update.
16726         (m68k_sched_attr_size): Update.  Move logic to ...
16727         (sched_get_attr_size_int): New static function.
16728         (sched_get_opxy_mem_type): New static function.
16729         (m68k_sched_attr_op_mem): Update.
16730         (m68k_sched_attr_type2): Remove.
16731         (sched_cfv4_bypass_data): New static variable.
16732         (m68k_sched_adjust_cost): Handle ColdFire V4 bypass.
16733         (m68k_sched_issue_rate): Implement scheduler hook.
16734         (struct _sched_ib: enabled_p): New field.
16735         (m68k_sched_variable_issue): Update.  Handle V4.
16736         (SCHED_DUMP_TODO, SCHED_DUMP_DONE, SCHED_DUMP_NOTHING,
16737         sched_dump_class_func_t, sched_dump_split_class,
16738         sched_dump_dfa_guess_unit_code, sched_dump_dfa_state,
16739         sched_dump_dfa_class, m68k_sched_dump): Remove.
16740         (m68k_sched_first_cycle_multipass_dfa_lookahead): Implement scheduler
16741         hook.
16742         (m68k_sched_init_global): Remove statisctics dumping, introduce
16743         sanity check that all instructions have pipeline reservations.  Handle
16744         ColdFire V4 core.
16745         (m68k_sched_dfa_pre_advance_cycle, m68k_sched_dfa_post_advance_cycle):
16746         Handle ColdFire V4 core.
16747         (sched_mem_operand_p, sched_get_reg_operand, sched_get_mem_operand):
16748         New static functions.
16749         (m68k_sched_address_bypass_p): New bypass predicate.
16750         (sched_get_indexed_address_scale): New static function.
16751         (m68k_sched_indexed_address_bypass_p): New bypass predicate.
16752
16753         * cf.md: Update comments.
16754         (define_attr type2): Remove.  Use 'type' attribute instead.
16755         Update all uses.
16756         (cf_ib): Rename to cfv123_ib.  Update all uses.
16757         (cf_oep): Rename to cfv123_oep.  Update all uses.
16758         (cf_chr): Rename to cfv123_chr.  Update all uses.
16759         (cf_mem): Rename to cfv123_mem.  Update all uses.
16760         (cf_mac): Move to more appropriate place.
16761         (cfv123_guess): New automaton and cpu_unit.
16762         (cfv123_*, cfv12_*, cfv1_*, cfv2_*, cfv3_*): Use type attribute.
16763         Update uses of 'size' attribute.  Handle before reload scheduling.
16764         (cfv123_guess): New dummy reservation for unhandled instructions.
16765         (cfv4_*): Pipeline description of ColdFire V4 core.
16766         (ignore): New reservation to handle 'ignore' type.
16767
16768 2008-05-07  Ian Lance Taylor  <iant@google.com>
16769
16770         PR middle-end/36013
16771         * gimplify.c (find_single_pointer_decl_1): Don't look through
16772         indirections.
16773         (find_single_pointer_decl): Adjust comments.
16774
16775 2008-05-07  Jakub Jelinek  <jakub@redhat.com>
16776
16777         PR middle-end/36137
16778         * fold-const.c (fold_binary): Use STRIP_SIGN_NOPS instead of
16779         STRIP_NOPS on arguments even for MIN_EXPR and MAX_EXPR.
16780
16781         PR middle-end/36106
16782         * omp-low.c (expand_omp_atomic_pipeline): Load value using the
16783         integral type rather than floating point, then VIEW_CONVERT_EXPR
16784         to the floating point type.
16785
16786 2008-05-07  Uros Bizjak  <ubizjak@gmail.com>
16787
16788         * config/i386/i386.c (ix86_expand_copysign): Force non-zero constant
16789         TFmode op0 to register.
16790
16791 2008-05-07  Alan Modra  <amodra@bigpond.net.au>
16792
16793         * c-decl.c (grokdeclarator): Comment typo.
16794
16795 2008-05-06  Aldy Hernandez  <aldyh@redhat.com>
16796
16797         * tree-flow.h: Remove prototype for computed_goto_p.
16798         * tree-cfg.c (computed_goto_p): Make static.
16799
16800 2008-05-06  H.J. Lu  <hongjiu.lu@intel.com>
16801
16802         PR target/35657
16803         * config/i386/i386.c (contains_128bit_aligned_vector_p): Renamed to ...
16804         (contains_aligned_value_p): This.  Handle _Decimal128.
16805         (ix86_function_arg_boundary): Only align _Decimal128 to its
16806         natural boundary and handle it properly.
16807
16808 2008-05-06  Martin Jambor  <mjambor@suse.cz>
16809
16810         * ipa-cp.c (ipcp_method_orig_node): Renamed to ipcp_get_orig_node.
16811         (ipcp_method_is_cloned): Renamed to ipcp_node_is_clone
16812         (ipcp_method_set_orig_node): Removed.
16813         (ipcp_cval_get_cvalue_type): Removed.
16814         (ipcp_method_get_scale): Renamed to ipcp_get_node_scale.
16815         (ipcp_method_set_scale): Renamed to ipcp_set_node_scale.
16816         (ipcp_cval_set_cvalue_type): Removed.
16817         (ipcp_cval_get_cvalue): Removed.
16818         (ipcp_cval_set_cvalue): Removed.
16819         (ipcp_type_is_const): Renamed to ipcp_lat_is_const.
16820         (ipcp_cval_equal_cvalues): Renamed to ipcp_lats_are_equal
16821         (ipcp_lats_are_equal): Changed parameters to two ipcp_lattice's
16822         (ipcp_cval_meet): Renamed to ipa_lattice_meet
16823         (ipcp_cval_changed): Changed to use ipcp_lat_is_const
16824         (ipcp_method_cval): Renamed to ipcp_get_ith_lattice
16825         (ipcp_get_ith_lattice): Changed parameters.
16826         (ipcp_cval_compute): Renamed to ipcp_lattice_from_jfunc
16827         (ipcp_lattice_from_jfunc): Changed parameters.
16828         (ipcp_redirect): Local lattice pointer instead of lattice type variable.
16829         (ipcp_method_cval_print): Added temporary variable info.
16830         (ipcp_redirect): Removed already unused local variable caller.
16831         (ipcp_redirect): New temporary variable orig_callee_info
16832         (ipcp_redirect): Removed newly unused local variable callee.
16833         (ipcp_redirect): Removed (a bit confusing) local variable type.
16834         (ipcp_insert_stage): Added local variable info.
16835         (ipcp_cval_changed): Renamed to ipcp_lattice_changed, parameters
16836         renamed too
16837         (ipcp_formal_create): Removed.
16838         (ipcp_method_cval_set): Removed.
16839         (ipcp_propagate_stage): Renamed lattice variables.
16840         (ipcp_method_cval_set_cvalue_type): Removed.
16841         (ipcp_method_cval_print): Renamed to ipcp_print_all_lattices
16842         (ipcp_print_all_lattices): Changed printed strings to refer to
16843         lattices rather than cvals.
16844         (ipcp_method_cval_init): Renamed to ipcp_initialize_node_lattices
16845         (ipcp_propagate_const): Changed formal parameters.
16846         (build_const_val): Changed formal parameters.
16847         (ipcp_insert_stage): Removed useless variable cvalue
16848         (build_const_val): Changed formal parameters.
16849         (ipcp_method_compute_scale): Renamed to ipcp_compute_node_scale
16850         (ipcp_after_propagate): Renamed to ipcp_change_tops_to_bottom
16851         (ipcp_callsite_param_print): Renamed to ipcp_print_all_jump_functions
16852         (ipcp_profile_mt_count_print): Renamed to ipcp_print_func_profile_counts
16853         (ipcp_print_func_profile_counts): Changed string from "method" to
16854         "function"
16855         (ipcp_profile_cs_count_print): Renamed to ipcp_print_call_profile_counts
16856         (ipcp_profile_edge_print): Renamed to ipcp_print_edge_profiles
16857         (ipcp_profile_bb_print): Renamed to ipcp_print_bb_profiles
16858         (ipcp_structures_print): Renamed to ipcp_print_all_structures
16859         (ipcp_profile_print): Renamed to ipcp_print_profile_data
16860         (ipcp_lat_is_const): Changed parameters and made inline.
16861         (ipcp_replace_map_create): Renamed to ipcp_create_replace_map
16862         (ipcp_redirect): Renamed to ipcp_need_redirect_p
16863         (ipcp_need_redirect_p): Calls ipcp_lat_is_const instead of using
16864         the predicate condition directly
16865         (ipcp_propagate_stage): Added local variable args. Removed local
16866         variable callee.  (Both are mere code simplifications.)
16867         (ipcp_method_dont_insert_const): Renamed to
16868         ipcp_node_not_modifiable_p.
16869         (ipcp_node_not_modifiable_p): Made inline.
16870         (ipcp_cloned_create): Renamed to ipcp_init_cloned_node
16871         (ipcp_propagate_const): Renamed to ipcp_propagate_one_const
16872         (ipcp_print_all_lattices): Removed variable cvalue
16873         (ipcp_method_scale_print): Renamed to ipcp_function_scale_print
16874         Updated comments.
16875
16876 2008-05-06  Olivier Hainque  <hainque@adacore.com>
16877
16878         * tree-sra.c (try_instantiate_multiple_fields): Early return
16879         if field has POINTER_TYPE.
16880
16881 2008-05-06  Kai Tietz  <kai.tietz@onevision.com>
16882
16883         * config/i386/i386.c (output_set_got): Fix for x86_64 output_emit_asm
16884         by using 'q' specifier for instruction.
16885         (ix86_file_end): Replaced case TARGET_64BIT_MS_ABI by TARGET_64BIT.
16886
16887 2008-05-06  Anatoly Sokolov <aesok@post.ru>
16888
16889         * config/avr/avr.md (*sbrx_branch, *sbix_branch, *sbix_branch_tmp):
16890         Change mode of zero_extract from QImode to HImode.
16891         (sign bit tests peepholes): (Ditto.).
16892
16893 2008-05-06  Uros Bizjak  <ubizjak@gmail.com>
16894
16895         * config/i386/mmx.md: Remove double backslashes from asm templates.
16896         (*mmx_addv2sf3): Rename from mmx_addv2sf3 insn pattern.
16897         (mmx_addv2sf3): New expander.  Use ix86_fixup_binary_operands_no_copy
16898         to handle nonimmediate operands.
16899         (*mmx_mulv2sf3): Rename from mmx_mulv2sf3 insn pattern.
16900         (mmx_mulv2sf3): New expander.  Use ix86_fixup_binary_operands_no_copy
16901         to handle nonimmediate operands.
16902         (*mmx_<code>v2sf3_finite): New insn pattern.
16903         (*mmx_<code>v2sf3): Rename from mmx_<code>v2sf3 insn pattern.
16904         (mmx_<code>v2sf3): New expander.  Use
16905         ix86_fixup_binary_operands_no_copy to handle nonimmediate operands.
16906         (mmx_<plusminus_insn><mode>3): New expander.  Use
16907         ix86_fixup_binary_operands_no_copy to handle nonimmediate operands.
16908         (*mmx_<plusminus_insn><mode>3): New insn pattern.
16909         (mmx_add<mode>3): Removed.
16910         (mmx_ssadd<mode>3): Ditto.
16911         (mmx_usadd<mode>3): Ditto.
16912         (mmx_sub<mode>3): Ditto.
16913         (mmx_sssub<mode>3): Ditto.
16914         (mmx_ussub<mode>3): Ditto.
16915         (*mmx_mulv4hi3): Rename from mmx_mulv4hi3 insn pattern.
16916         (mmx_mulv4hi3): New expander.  Use ix86_fixup_binary_operands_no_copy
16917         to handle nonimmediate operands.
16918         (*mmx_smulv4hi3_highpart): Rename from mmx_smulv4hi3_highpart
16919         insn pattern.
16920         (mmx_smulv4hi3_highpart): New expander.  Use
16921         ix86_fixup_binary_operands_no_copy to handle nonimmediate operands.
16922         (*mmx_umulv4hi3_highpart): Rename from mmx_umulv4hi3_highpart
16923         insn pattern.
16924         (mmx_umulv4hi3_highpart): New expander.  Use
16925         ix86_fixup_binary_operands_no_copy to handle nonimmediate operands.
16926         (*mmx_<code>v4hi3): Rename from mmx_<code>v4hi3 insn pattern.
16927         (mmx_<code>v4hi3): New expander.  Use
16928         ix86_fixup_binary_operands_no_copy to handle nonimmediate operands.
16929         (*mmx_<code>v8qi3): Rename from mmx_<code>v8qi3 insn pattern.
16930         (mmx_<code>v8qi3): New expander.  Use
16931         ix86_fixup_binary_operands_no_copy to handle nonimmediate operands.
16932         (*mmx_<code><mode>3): Rename from mmx_<code><mode>3 insn pattern.
16933         (mmx_<code><mode>3): New expander.  Use
16934         ix86_fixup_binary_operands_no_copy to handle nonimmediate operands.
16935
16936 2008-05-05  Jan Hubicka  <jh@suse.cz>
16937
16938         PR tree-optimization/36118
16939         * passes.c (pass_init_dump_file): Fix dump header.
16940
16941 2008-05-05  Andrew Pinski  <andrew_pinski@playstation.sony.com>
16942
16943         PR middle-end/36141
16944         * tree-ssa-forwprop.c (forward_propagate_addr_expr_1): Don't create
16945         VCE for function decls.
16946
16947 2008-05-05  H.J. Lu  <hongjiu.lu@intel.com>
16948
16949         * config/i386/sse.md (sse2_<plusminus_insn><mode>3): Fix a typo.
16950
16951 2008-05-05  H.J. Lu  <hongjiu.lu@intel.com>
16952
16953         * config/i386/i386.md (sat_plusminus): New.
16954         (plusminus_insn): Likewise.
16955         (plusminus_mnemonic): Likewise.
16956         (addsub): Removed.
16957         (comm): Add ss_plus, us_plus, ss_minus and us_minus.
16958         (*<addsub><mode>3_cc_overflow): Renamed to ...
16959         (*<plusminus_insn><mode>3_cc_overflow): This.
16960         (*<addsub>si3_zext_cc_overflow): Renamed to ...
16961         (*<plusminus_insn>si3_zext_cc_overflow): This.
16962
16963         * config/i386/sse.md (<addsub><mode>3): Renamed to ...
16964         (<plusminus_insn><mode>3): This.
16965         (*<addsub><mode>3): Renamed to ...
16966         (*<plusminus_insn><mode>3): This.
16967         (<sse>_vm<addsub><mode>3): Renamed to ...
16968         (<sse>_vm<plusminus_insn><mode>3): This.
16969         (sse3_h<addsub>v4sf3): Renamed to ...
16970         (sse3_h<plusminus_insn>v4sf3): This.
16971         (sse3_h<addsub>v2df3): Renamed to ...
16972         (sse3_h<plusminus_insn>v2df3): This.
16973         (<plusminus_insn><mode>3): New.
16974         (*<plusminus_insn><mode>3): Likewise.
16975         (sse2_<plusminus_insn><mode>3): Likewise.
16976         (add<mode>): Removed.
16977         (*add<mode>3): Likewise.
16978         (sse2_ssadd<mode>3): Likewise.
16979         (sse2_usadd<mode>3): Likewise.
16980         (sub<mode>3): Likewise.
16981         (*sub<mode>3): Likewise.
16982         (sse2_sssub<mode>3): Likewise.
16983         (sse2_ussub<mode>3): Likewise.
16984
16985 2008-05-05  Benjamin Kosnik  <bkoz@redhat.com>
16986
16987         * gthr-single.h: Add in required interface elements as per gthr.h.
16988         Add stub types for __gthread_key_t, __gthread_once_t. Add defines
16989         for __GTHREAD_ONCE_INIT, __GTHREAD_RECURSIVE_MUTEX_INIT.
16990         Generalize UNUSED macro.
16991         (__gthread_once): Add.
16992         (__gthread_key_create): Add.
16993         (__gthread_key_delete): Add.
16994         (__gthread_getspecific): Add.
16995         (__gthread_setspecific): Add.
16996
16997 2008-05-05  Andrew Pinski  <Andrew.Pinski@playstation.sony.com>
16998
16999         * tree-ssa-forwprop.c (forward_propagate_addr_expr_1): If we have
17000         the same size types for the indirect reference on the rhs, then
17001         create a VCE.
17002
17003 2008-05-05  Uros Bizjak  <ubizjak@gmail.com>
17004
17005         * config/i386/i386.md
17006         (*float<SSEMODEI24:mode><MODEF:mode>2_sse_interunit): Use only
17007         one insn template instead of template series.
17008         (*xordi_1_rex64): Ditto.
17009         (*xordi_2_rex64): Ditto.
17010
17011 2008-05-05  Ira Rosen  <irar@il.ibm.com>
17012
17013         PR tree-optimization/36119
17014         * tree-vect-transform.c (vectorizable_assignment): Set NCOPIES to 1
17015         in case of SLP.
17016
17017 2008-06-04  Jan Hubicka  <jh@suse.cz>
17018
17019         tree-optimization/36100
17020         * tree-pass.h (pass_O0_always_inline): Declare.
17021         * ipa-inline.c (inline_transform): Remove dead code.
17022         (cgraph_gate_O0_always_inline, cgraph_O0_always_inline,
17023         pass_O0_always_inline): New.
17024         * passes.c (init_optimization_passes): Add pass_O0_always_inline.
17025
17026 2008-05-04  Kai Tietz  <kai.tietz@onevision.com>
17027
17028         * config/i386/i386.c (x86_output_mi_thunk): Use movq alternative
17029         mnemonic in this_param move for TARGET_64BIT.
17030
17031 2008-05-04  Uros Bizjak  <ubizjak@gmail.com>
17032
17033         * config/i386/i386.md (*strmovsi_1): Simplify asm alternatives.
17034         (*strmovsi_rex_1): Ditto.
17035         (*strsetsi_1): Ditto.
17036         (*strsetsi_rex_1): Ditto.
17037
17038         (add<mode>cc): Macroize expander from addqicc, addhicc, addsicc and
17039         adddicc expanders using SWI mode iterator.
17040
17041 2008-05-04  H.J. Lu  <hongjiu.lu@intel.com>
17042
17043         PR target/36121
17044         * config/i386/i386.c (ix86_expand_special_args_builtin): Remove three
17045         argument handling.
17046
17047 2008-05-04  David S. Miller  <davem@davemloft.net>
17048
17049         * config.gcc (sparc*-*-*): Always set need_64bit_hwint to yes.
17050         (sparc*-*-linux*): Use linux.h in tm_file.
17051         (sparc-*-linux*): If 'enabled_targets' is 'all', build a bi-arch
17052         compiler defaulting to 32-bit.
17053         (sparc*-*-*): Remove explicit target settings of need_64bit_hwint,
17054         no longer needed.
17055         * config/sparc/linux.h: Remove definitions now obtained
17056         properly from linux.h
17057         * config/sparc/linux64.h: Likewise.
17058         (ASM_CPU_DEFAULT_SPEC): Change this to ASM_CPU64_DEFAULT_SPEC, we
17059         don't want this setting for 32-bit builds in a biarch compiler.
17060         * doc/install.texi: Add sparc-linux to list of targets
17061         supporting --enable-targets=all.
17062
17063 2008-05-03  Andrew Pinski  <pinskia@gmail.com>
17064
17065         * Makefile.in (tree-ssa-phiprop.o): Fix dependencies.
17066
17067 2008-05-03  H.J. Lu  <hongjiu.lu@intel.com>
17068
17069         * config/i386/i386.c (ix86_builtin_type): Move V4SI_FTYPE_V4SF
17070         after V4SI_FTYPE_V8HI.
17071         (ix86_init_mmx_sse_builtins): Move case V4HI_FTYPE_V4HI after
17072         case V4SI_FTYPE_V2DF.
17073
17074 2008-05-03  Kenneth Zadeck  <zadeck@naturalbridge.com>
17075
17076         * doc/invoke.texi (max-flow-memory-locations): Removed.
17077         * params.def (PARAM_MAX_FLOW_MEMORY_LOCATIONS): Removed.
17078
17079 2008-05-03  Richard Guenther  <rguenther@suse.de>
17080
17081         PR middle-end/34973
17082         * opts.c (set_Wstrict_aliasing): Handle the turn-off case.
17083
17084 2008-05-02  David S. Miller  <davem@davemloft.net>
17085
17086         * config.gcc (need_64bit_hwint): Document libcpp dependency.
17087
17088 2008-05-02  Simon Baldwin <simonb@google.com>
17089
17090         PR bootstrap/36108
17091         * c-common.h (warn_array_subscript_range): Removed.
17092         * c-common.c (warn_array_subscript_range): Ditto.
17093         * tree-vrp.c (check_array_ref): Revert to ignoring arrays with size 2.
17094         * c-typeck.c (build_array_ref): Remove warn_array_subscript_range.
17095
17096 2008-05-02  H.J. Lu  <hongjiu.lu@intel.com>
17097
17098         * config/i386/i386.c (ix86_special_builtin_type): New.
17099         (bdesc_special_args): Likewise.
17100         (ix86_expand_special_args_builtin): Likewise.
17101         (ix86_init_mmx_sse_builtins): Updated.
17102         (ix86_expand_builtin): Updated.
17103         (ix86_expand_store_builtin): Removed.
17104         (ix86_expand_unop_builtin): Likewise.
17105
17106         * config/i386/mm3dnow.h (__v2sf): Moved to ...
17107         * config/i386/mmintrin.h (__v2sf): Here.
17108
17109         * config/i386/xmmintrin.h (_mm_loadh_pi): Replace __v2si with
17110         const __v2sf.
17111         (_mm_loadl_pi): Likewise.
17112         (_mm_storeh_pi): Replace __v2si with __v2sf.
17113         (_mm_storel_pi): Likewise.
17114
17115         * doc/extend.texi: Correct __builtin_ia32_loadhps,
17116         __builtin_ia32_loadlps, __builtin_ia32_storehps,
17117         __builtin_ia32_storelps, __builtin_ia32_loadhpd and
17118         __builtin_ia32_loadlpd.
17119
17120 2008-05-02  H.J. Lu  <hongjiu.lu@intel.com>
17121
17122         * config/i386/i386.c (ix86_builtin_type): Add FLOAT_FTYPE_FLOAT,
17123         V4SF_FTYPE_V4SF_VEC_MERGE and V2DF_FTYPE_V2DF_VEC_MERGE.
17124         (bdesc_args): Updated.  Add scalar SSE builtins with vec_merge.
17125         (ix86_init_mmx_sse_builtins): Updated.
17126         (ix86_expand_args_builtin): Likewise.
17127         (ix86_expand_builtin): Likewise.
17128         (ix86_expand_unop1_builtin): Renamed to ...
17129         (ix86_expand_unop_vec_merge_builtin): This.
17130
17131 2008-05-01  Jan Hubicka  <jh@suse.cz>
17132
17133         PR bootstrap/36100
17134         * ipa-inline.c (inline_generate_summary): Make static.
17135         (inline_transform): Do not call inlining at -O0; make static.
17136         * passes.c (execute_todo): Add sanity check.
17137         (execute_one_ipa_transform_pass): Execute proper flags.
17138
17139 2008-05-01  Eric Botcazou  <ebotcazou@adacore.com>
17140
17141         * tree.h (TYPE_NONALIASED_COMPONENT): Expand comment.
17142         (DECL_NONADDRESSABLE_P): Likewise.
17143         * alias.c (record_component_aliases): Fix comment.
17144
17145 2008-05-01  Simon Baldwin <simonb@google.com>
17146
17147         * c-common.h (warn_array_subscript_range): New function.
17148         * c-common.c (warn_array_subscript_range): Ditto.
17149         * tree-vrp.c (check_array_ref): Corrected code to agree with
17150         comment, ignoring only arrays of size 0 or size 1.
17151         * c-typeck.c (build_array_ref): Call warn_array_subscript_range.
17152
17153 2008-05-01  H.J. Lu  <hongjiu.lu@intel.com>
17154
17155         * config/i386/i386.c (ix86_builtin_type): Replace
17156         DI_FTYPE_DI_DI_INT with V1DI2DI_FTYPE_V1DI_V1DI_INT.
17157         (bdesc_args): Updated.
17158         (ix86_init_mmx_sse_builtins): Likewise.
17159         (ix86_expand_args_builtin): Likewise.
17160
17161         * config/i386/tmmintrin.h (_mm_alignr_pi8): Replace long long
17162         with __v1di.
17163
17164         * doc/extend.texi: Correct __builtin_ia32_palignr.
17165
17166 2008-05-01  H.J. Lu  <hongjiu.lu@intel.com>
17167
17168         PR target/36095
17169         * config/i386/i386.c (bdesc_crc32): Removed.
17170         (ix86_expand_crc32): Likewise.
17171         (ix86_builtin_type): Replace V2DI2TI_FTYPE_V2DI2TI_INT with
17172         V2DI2TI_FTYPE_V2DI_INT, V2DI2TI_FTYPE_V2DI2TI_V2DI2TI_INT with
17173         V2DI2TI_FTYPE_V2DI_V2DI_INT.  Add UINT64_FTYPE_UINT64_UINT64,
17174         UINT_FTYPE_UINT_UINT, UINT_FTYPE_UINT_USHORT and
17175         UINT_FTYPE_UINT_UCHAR.
17176         (bdesc_args): Updated. Add crc32 builtins.
17177         (ix86_init_mmx_sse_builtins): Updated.
17178         (ix86_expand_args_builtin): Updated to support subreg.
17179
17180         * doc/extend.texi: Correct __builtin_ia32_crc32di.
17181
17182 2008-05-01  Jan Hubicka  <jh@suse.cz>
17183
17184         * tree-pass.h (opt_pass): Add IPA_PASS.
17185         (varpool_node, cgraph_node): Forward declare.
17186         (ipa_opt_pass): Define.
17187         (pass_ipa_inline): Turn into ipa_opt_pass.
17188         (pass_apply_inline): Remove.
17189         * ipa-inline.c (pass_ipa_inline): Turn into ipa_opt_pass.
17190         (apply_inline): Turn into ....
17191         (inline_transform): ... this one.
17192         (inline_generate_summary): New function.
17193         (pass_apply_inline): Remove.
17194         * function.h (ipa_opt_pass): Forward declare structure; typedef;
17195         vector.
17196         (struct function): Add ipa_transforms_to_apply.
17197         * passes.c (register_one_dump_file): Work on IPA_PASS.
17198         (init_optimization_passes): Remove pass_inline_parameters and
17199         pass_apply_inline.
17200         (pass_init_dump_file, pass_fini_dump_file): Break out from ....
17201         (execute_one_pass) ... here; apply transforms when possible.
17202         (add_ipa_transform_pass, execute_ipa_summary_asses,
17203         execute_one_ipa_transform_pass): New.
17204         (execute_ipa_pass_list): Update for IPA_PASS type.
17205
17206 2008-05-01  H.J. Lu  <hongjiu.lu@intel.com>
17207
17208         * config/i386/i386.c (ix86_builtin_type): Add
17209         V2DI_FTYPE_V2DI_V16QI, V2DI_FTYPE_V2DI_UINT_UINT and
17210         V2DI_FTYPE_V2DI_V2DI_UINT_UINT.
17211         (bdesc_args): Add SSE4a builtins.
17212         (ix86_init_mmx_sse_builtins): Updated.
17213         (ix86_expand_args_builtin): Likewise.
17214         (ix86_expand_builtin): Likewise.
17215
17216 2008-05-01  H.J. Lu  <hongjiu.lu@intel.com>
17217
17218         * config/i386/i386.c (ix86_builtin_type): Add
17219         V8HI_FTYPE_V8HI_V8HI_COUNT, V8HI_FTYPE_V8HI_SI_COUNT,
17220         V4SI_FTYPE_V4SI_V4SI_COUNT, V4SI_FTYPE_V4SI_SI_COUNT,
17221         V4HI_FTYPE_V4HI_V4HI_COUNT, V4HI_FTYPE_V4HI_SI_COUNT,
17222         V2DI_FTYPE_V2DI_V2DI_COUNT, V2DI_FTYPE_V2DI_SI_COUNT,
17223         V2SI_FTYPE_V2SI_V2SI_COUNT, V2SI_FTYPE_V2SI_SI_COUNT,
17224         V1DI_FTYPE_V1DI_V1DI_COUNT, V1DI_FTYPE_V1DI_SI_COUNT,
17225         V8HI_FTYPE_V8HI_INT, V4SI_FTYPE_V4SI_INT, V4HI_FTYPE_V4HI_INT,
17226         V2DI2TI_FTYPE_V2DI2TI_INT, V2DI2TI_FTYPE_V2DI2TI_V2DI2TI_INT
17227         and DI_FTYPE_DI_DI_INT.
17228         (bdesc_args): Add MMX/SSE shift, shuffle and palignr builtins.
17229         (ix86_init_mmx_sse_builtins): Updated.
17230         (ix86_expand_args_builtin): Likewise.
17231         (ix86_expand_builtin): Likewise.
17232         (ix86_expand_binop_imm_builtin): Removed.
17233
17234         * doc/extend.texi: Correct __builtin_ia32_palignr128.
17235
17236 2008-04-30  Richard Guenther  <rguenther@suse.de>
17237
17238         PR tree-optimization/32921
17239         * tree-ssa-loop-im.c (mem_refs_may_alias_p): Disambiguate with TBAA.
17240
17241 2008-04-30  Richard Sandiford  <rsandifo@nildram.co.uk>
17242
17243         * config/arm/arm.c (arm_unwind_emit): Use
17244         crtl->all_throwers_are_sibcalls instead of
17245         cfun->all_throwers_are_sibcalls.
17246         (arm_output_fn_unwind): Likewise.
17247         * config/frv/frv.c (frv_stack_info): Use crtl->uses_pic_offset_table
17248         instead of cfun->uses_pic_offset_table.
17249         (frv_expand_prologue): Likewise.
17250         (frv_frame_pointer_required): Likewise.
17251         (frv_expand_fdpic_call): Likewise.
17252         (frv_emit_movsi): Likewise.
17253         * config/iq2000/iq2000.c (iq2000_expand_prologue): Use
17254         cfun->returns_pcc_struct instead of
17255         current_function_returns_pcc_struct.
17256         * config/m32c/m32c.c (need_to_save): Use crtl->calls_eh_return
17257         instead of cfun->calls_eh_return.
17258         (m32c_pushm_popm): Likewise.
17259         * config/xtensa/xtensa.h (cfun->calls_alloca): Remove bogus
17260         "extern" declaration.
17261
17262 2008-04-30  Richard Guenther  <rguenther@suse.de>
17263
17264         PR tree-optimization/21636
17265         * tree-ssa-ccp.c (ccp_fold): Handle &p->x with p being a
17266         constant address.
17267         (evaluate_stmt): Print the likely value.
17268         (ccp_visit_stmt): Avoid excessive vertical spacing.
17269
17270 2008-04-30  Rafael Espíndola  <espindola@google.com>
17271
17272         * builtins.c (fold_call_expr): Return realret.
17273         * tree-ssa-threadedge.c
17274         (record_temporary_equivalences_from_stmts_at_dest): Ignore calls to
17275         __builtin_object_size.
17276
17277 2008-04-30  Seongbae Park  <seongbae.park@gmail.com>
17278
17279         * gcc.c (wrapper_string): New variable.
17280         (insert_wrapper): New function.
17281         (execute): New option -wrapper.
17282         * doc/invoke.texi (Overall Options): New driver option -wrapper.
17283
17284 2008-04-30  Nathan Froyd  <froydnj@codesourcery.com>
17285
17286         * config/rs6000/crtresgpr.asm, config/rs6000/crtresxgpr.asm,
17287         config/rs6000/crtsavgpr.asm, config/rs6000/crtresfpr.asm,
17288         config/rs6000/crtresxfpr.asm, config/rs6000/crtsavfpr.asm: Break out
17289         from...
17290         * config/rs6000/crtsavres.asm: ...here.  Remove unneeded file.
17291         * config/rs6000/e500crtres32gpr.asm, config/rs6000/e500crtres64gpr.asm,
17292         config/rs6000/e500crtres64gprctr.asm,
17293         config/rs6000/e500crtrest32gpr.asm, config/rs6000/e500crtrest64gpr.asm,
17294         config/rs6000/e500crtresx32gpr.asm, config/rs6000/e500crtresx64gpr.asm,
17295         config/rs6000/e500crtsav32gpr.asm, config/rs6000/e500crtsav64gpr.asm,
17296         config/rs6000/e500crtsav64gprctr.asm,
17297         config/rs6000/e500crtsavg32gpr.asm, config/rs6000/e500crtsavg64gpr.asm,
17298         config/rs6000/e500crtsavg64gprctr.asm: New files.
17299         * config/rs6000/t-ppccomm: Add build rules for new files.
17300         (LIB2FUNCS_STATIC_EXTRA): Add new files.
17301         * config/rs6000/t-netbsd: Add build rules for new files.
17302         (LIB2FUNCS_STATIC_EXTRA): New variable.
17303         * config/rs6000/sysv4.h (ENDFILE_SPEC): Don't include crtsavres.o
17304         (CRTSAVRES_DEFAULT_SPEC): Likewise.
17305         * config/rs6000/netbsd.h (ENDFILE_SPEC): Likewise.
17306
17307 2008-04-30  H.J. Lu  <hongjiu.lu@intel.com>
17308
17309         * config/i386/i386.c (ix86_builtin_type): Add
17310         FLOAT128_FTYPE_FLOAT128_FLOAT128, V16QI_FTYPE_V16QI_V16QI,
17311         V16QI_FTYPE_V8HI_V8HI, V8QI_FTYPE_V8QI_V8QI,
17312         V8QI_FTYPE_V4HI_V4HI, V8HI_FTYPE_V8HI_V8HI,
17313         V8HI_FTYPE_V16QI_V16QI, V8HI_FTYPE_V4SI_V4SI,
17314         V4SI_FTYPE_V4SI_V4SI, V4SI_FTYPE_V8HI_V8HI,
17315         V4SI_FTYPE_V4SF_V4SF, V4SI_FTYPE_V2DF_V2DF,
17316         V4HI_FTYPE_V4HI_V4HI, V4HI_FTYPE_V8QI_V8QI,
17317         V4HI_FTYPE_V2SI_V2SI, V4SF_FTYPE_V4SF_V4SF,
17318         V4SF_FTYPE_V4SF_V4SF_SWAP, V4SF_FTYPE_V4SF_V2SI,
17319         V4SF_FTYPE_V4SF_V2DF, V4SF_FTYPE_V4SF_DI,
17320         V4SF_FTYPE_V4SF_SI, V2DI_FTYPE_V2DI_V2DI,
17321         V2DI_FTYPE_V16QI_V16QI, V2DI_FTYPE_V4SI_V4SI,
17322         V2DI_FTYPE_V2DF_V2DF, V2SI_FTYPE_V2SI_V2SI,
17323         V2SI_FTYPE_V4HI_V4HI, V2SI_FTYPE_V2SF_V2SF,
17324         V2DF_FTYPE_V2DF_V2DF, V2DF_FTYPE_V2DF_V2DF_SWAP,
17325         V2DF_FTYPE_V2DF_V4SF, V2DF_FTYPE_V2DF_DI,
17326         V2DF_FTYPE_V2DF_SI, V2SF_FTYPE_V2SF_V2SF,
17327         V1DI_FTYPE_V1DI_V1DI, V1DI_FTYPE_V8QI_V8QI and
17328         V1DI_FTYPE_V2SI_V2SI.
17329         (bdesc_2arg): Moved to ...
17330         (bdesc_args): Here.
17331         (ix86_init_mmx_sse_builtins): Updated.
17332         (ix86_expand_args_builtin): Updated.  Take a pointer
17333         to const struct builtin_description.  Handle comparison
17334         builtin functions.
17335         (ix86_expand_sse_compare): Take a new argument for swapping operands.
17336         (ix86_expand_builtin): Updated.
17337
17338         * config/i386/sse.md (ssse3_pmaddubswv8hi3): Renamed to ...
17339         (ssse3_pmaddubsw128): This.
17340         (ssse3_pmaddubswv4hi3): Renamed to ...
17341         (ssse3_pmaddubsw): This.
17342
17343         * doc/extend.texi (__builtin_ia32_packsswb128): Correct prototype.
17344         (__builtin_ia32_packssdw128): Likewise.
17345         (__builtin_ia32_packuswb128): Likewise.
17346         (__builtin_ia32_pmaddubsw): Likewise.
17347         (__builtin_ia32_pmaddubsw128): Likewise.
17348
17349 2008-04-30  Richard Guenther  <rguenther@suse.de>
17350
17351         PR tree-optimization/14847
17352         * tree-ssa-ifcombine.c (get_name_for_bit_test): New helper function.
17353         (recognize_bits_test): Use it.
17354         (recognize_single_bit_test): Likewise.
17355
17356 2008-04-30  Martin Jambor  <mjambor@suse.cz>
17357
17358         * ipa-cp.c (ipcp_init_stage): Calls ipa_set_called_with_variable_arg
17359         instead of setting number of formal parameters to zero.
17360         (ipcp_init_stage): Do not set the number of actual parameters to zero
17361         either.
17362         (ipcp_propagate_stage): Explicitly skipping all calls to nodes
17363         which are called with variable number of arguments.
17364         (ipcp_insert_stage): Explicitely skipping all nodes which are
17365         called with variable number of arguments.
17366         (ipcp_callsite_param_print): Skipps callsites to nodes with varaible
17367         number of parameters.
17368
17369         * ipa-prop.h (struct ipa_node_params): Added flag
17370         called_with_var_arguments
17371         (ipa_set_param_count): Added.  Changed sole setter to use it.
17372         (ipa_get_param_count): Added.  All readers of param_count
17373         converted to use it instead.
17374         (ipa_set_called_with_variable_arg): Added.
17375         (ipa_is_called_with_var_arguments): Added.
17376         (ipa_get_ith_param): Added.  All readers of param_decls converted
17377         to use it instead.
17378         (ipa_set_cs_argument_count): Added, sole writer to argument_count
17379         changed to use it.
17380         (ipa_get_cs_argument_count): Added, all readers of argument_count
17381         changed to cal it.
17382         (ipa_get_ith_jump_func): Added. Accessors of jump values changed
17383         to use it.
17384
17385         * ipa-prop.h (struct ipcp_formal): Renamed to ipcp_lattice
17386         (struct ipcp_lattice): Renamed cval_type to type
17387         (struct ipa_node_params): ipcp_cval renamed to ipcp_lattices
17388
17389         * ipa-cp.c (ipcp_cval_get_cvalue): Changed return value to tree
17390         (ipcp_cval_set_cvalue): Changed type of parameter value to tree
17391         (ipcp_insert_stage): Changed the type of variable cvalue to tree
17392         (ipcp_replace_map_create): Changed the type of parameter cvalue to tree
17393         (build_const_val): Changed the type of parameter cvalue to tree
17394         (ipcp_propagate_const): Changed the type of parameter cvalue to tree
17395         (ipcp_method_cval_set_cvalue_type): Renamed parameter cval_type1 to type
17396
17397         * ipa-prop.h (struct ipcp_formal): Replaced cvalue with tree called
17398         constant
17399
17400         * ipa-prop.c (ipa_methodlist_init): Renamed to ipa_init_func_list
17401         (ipa_methodlist_not_empty): Removed, the sole user now checks directly
17402         (ipa_add_method): Renamed to ipa_push_func_to_list
17403         (ipa_remove_method): Renamed to ipa_pop_func_from_list
17404         (ipa_callsite_param_count): Removed.
17405         (ipa_callsite_param_count_set): Removed.
17406         (ipa_callsite_param): Removed.
17407         (ipa_callsite_callee): Removed.
17408         (ipa_callsite_compute_param): Renamed to ipa_compute_jump_functions
17409         (ipa_callsite_compute_count): Renamed to ipa_count_arguments
17410         (ipa_method_formal_count): Removed.
17411         (ipa_method_formal_count_set): Removed.
17412         (ipa_method_get_tree): Removed.
17413         (ipa_method_tree_map_create): Removed.
17414         (ipa_method_compute_tree_map): Renamed to ipa_create_param_decls_array
17415         (ipa_create_param_decls_array): Creates the array itself
17416         (ipa_create_param_decls_array): Temporary variable info instead of
17417         a few dereferences.
17418         (ipa_method_formal_compute_count): Renamed to ipa_count_formal_params
17419         (ipa_method_compute_modify): Renamed to ipa_detect_param_modifications
17420         (get_type): Removed.
17421         (ipa_jf_get_info_type): Removed.
17422         (ipa_node_create): Renamed to ipa_create_node_params
17423         (ipa_free): Renamed to ipa_free_all_node_params
17424         (ipa_nodes_create): Renamed to ipa_create_all_node_params
17425         (ipa_edges_create): Renamed to ipa_create_all_edge_args
17426         (ipa_edges_free): Renamed to ipa_free_all_edge_args
17427         (ipa_nodes_free): Integrated into ipa_free_all_node_params and removed
17428         (ipa_free_all_node_params): Deallocation to jump_functions moved to
17429         ipa_free_all_edge_args
17430         (ipa_method_tree_print): Renamed to ipa_print_all_tree_maps
17431         (ipa_method_modify_print): Renamed to ipa_print_all_params_modified
17432         (ipa_create_methodlist_node): Removed.
17433         (ipa_methodlist_method): Removed.
17434         (ipa_methodlist_method_set): Removed.
17435         (ipa_methodlist_next_method): Removed.
17436         (ipa_methodlist_next_method_set): Removed.
17437         (ipa_method_is_modified): Removed.
17438         (ipa_method_modify_create): Removed.
17439         (ipa_method_modify_init): Temporary variable info instead of a few
17440         dereferences.
17441         (ipa_detect_param_modifications): Temporary variable info instead of
17442         a few dereferences.
17443         (ipa_compute_jump_functions): Temporary variable info instead of
17444         a few dereferences.
17445         (ipa_method_modify_set): Removed.
17446         (ipa_method_tree_map): Renamed to ipa_get_param_decl_index
17447         (ipa_get_param_decl_index): Now accepts struct ipa_node_params rather
17448         than craph_node as the first parameter.
17449         (ipa_method_modify_stmt): Renamed to ipa_check_stmt_modifications
17450         (ipa_method_modify_init): Removed.
17451         (ipa_compute_jump_functions): Added a temp variable instead of
17452         repeatadly dereferencing the cgraph_edge.aux pointer
17453         (ipa_callsite_param_set_type): Removed.
17454         (ipa_compute_jump_functions): i renamed to index and moved to
17455         an inner block
17456         (ipa_callsite_param_set_info_type_formal): Removed.
17457         (ipa_callsite_param_set_info_type): Removed.
17458         (ipa_callsite_param_map_create): Removed.
17459         (ipa_callsite_tree): Removed.
17460         (ipa_callsite_caller): Removed.
17461         (ipa_pop_func_from_list): return_method removed to return_func
17462
17463         * ipa-prop.h (enum cvalue_type): Renamed to ipa_lattice_type,
17464         prefixed all values with IPA_. Changed all users.
17465         (enum jump_func_type): Rnamed UNKNOWN_IPATYPE to IPA_UNKNOWN,
17466         CONST_IPATYPE to IPA_CONST, CONST_IPATYPE_REF to IPA_CONST_REF
17467         and FORMAL_IPATYPE IPA_PASS_THROUGH.
17468         (union parameter_info): Renamed to jump_func_value.
17469         (union jump_func_value): Renamed value to constant
17470         (struct ipa_jump_func): Renamed info_type to value
17471         (struct ipa_node): Renamed to ipa_node_params
17472         (struct ipa_node_params): Renamed ipa_arg_num to param_count
17473         (struct ipa_node_params): Renamed ipa_param_tree to param_decls
17474         (struct ipa_node_params): Renamed ipa_mod to modified_flags
17475         (struct ipa_edge): Renamed to ipa_edge_args
17476         (struct ipa_edge_args): Renamed ipa_param_num to argument_count
17477         (struct ipa_edge_args): Renamed ipa_param_map to jump_functions
17478         (struct ipa_methodlist): Renamed to ipa_func_list
17479         (struct ipa_func_list): method_p renamed to node, next_method
17480         renamed to next
17481         (ipa_methodlist_p): Removed, switched all users to struct pointer
17482         (IS_VALID_TREE_MAP_INDEX): Renamed to IS_VALID_JUMP_FUNC_INDEX
17483
17484 2008-04-30  Alan Modra  <amodra@bigpond.net.au>
17485
17486         * config/rs6000/rs6000.c (ALWAYS_RESTORE_ALTIVEC_BEFORE_POP): Define.
17487         (rs6000_emit_epilogue): Use backchain to restore only when we
17488         have a large frame.  Make use of frame pointer to restore if we
17489         have one.  Handle ALWAYS_RESTORE_ALTIVEC_BEFORE_POP.
17490
17491 2008-04-29  Paolo Bonzini  <bonzini@gnu.org>
17492
17493         * config/avr/avr.md (*sbrx_branch, *sbix_branch, *sbix_branch_tmp):
17494         Add mode to zero_extract.
17495         (sign bit tests peepholes): (Ditto.).
17496
17497 2008-04-29  H.J. Lu  <hongjiu.lu@intel.com>
17498
17499         * config/i386/i386.c (ix86_builtins): Replace Prescott New
17500         Instructions in comments with SSE3.
17501         (ix86_builtin_type): This.  Add FLOAT128_FTYPE_FLOAT128,
17502         INT64_FTYPE_V4SF, INT64_FTYPE_V2DF, INT_FTYPE_V16QI,
17503         INT_FTYPE_V8QI, INT_FTYPE_V4SF, INT_FTYPE_V2DF,
17504         V16QI_FTYPE_V16QI, V8HI_FTYPE_V8HI, V8HI_FTYPE_V16QI,
17505         V8QI_FTYPE_V8QI, V4SI_FTYPE_V4SI, V4SI_FTYPE_V16QI,
17506         V4SI_FTYPE_V4SF, V4SI_FTYPE_V8HI, V4SI_FTYPE_V2DF,
17507         V4HI_FTYPE_V4HI, V4SF_FTYPE_V4SF, V4SF_FTYPE_V4SI,
17508         V4SF_FTYPE_V2DF, V2DI_FTYPE_V2DI, V2DI_FTYPE_V16QI,
17509         V2DI_FTYPE_V8HI, V2DI_FTYPE_V4SI, V2DF_FTYPE_V2DF,
17510         V2DF_FTYPE_V4SI, V2DF_FTYPE_V4SF, V2DF_FTYPE_V2SI,
17511         V2SI_FTYPE_V2SI, V2SI_FTYPE_V4SF, V2SI_FTYPE_V2SF,
17512         V2SI_FTYPE_V2DF, V2SF_FTYPE_V2SF and V2SF_FTYPE_V2SI.
17513         (bdesc_sse_args): Renamed to ...
17514         (bdesc_args): This.  Add IX86_BUILTIN_PF2ID, IX86_BUILTIN_PFRCP,
17515         IX86_BUILTIN_PFRSQRT, IX86_BUILTIN_PI2FD, IX86_BUILTIN_PF2IW,
17516         IX86_BUILTIN_PSWAPDSI, IX86_BUILTIN_PSWAPDSF and
17517         IX86_BUILTIN_FABSQ.
17518         (bdesc_1arg): Moved to ...
17519         (bdesc_args): Here.
17520         (ix86_init_mmx_sse_builtins): Updated.  Replace Prescott New
17521         Instructions in comments with SSE3.
17522         (ix86_expand_sse_operands_builtin): Renamed to ...
17523         (ix86_expand_args_builtin): This.  Updated.
17524         (ix86_expand_unop1_builtin): Update comments.
17525         (ix86_expand_builtin): Updated.
17526
17527 2008-04-29  Richard Guenther  <rguenther@suse.de>
17528
17529         PR tree-optimization/36078
17530         * tree-ssa-loop-ivcanon.c (tree_unroll_loops_completely):
17531         Update virtual SSA form after cleaning up the CFG.
17532
17533 2008-04-29  Richard Guenther  <rguenther@suse.de>
17534
17535         PR middle-end/15255
17536         * fold-const.c (fold_binary): Fold (A + A) * C to A * 2*C.
17537
17538 2008-04-29  Richard Guenther  <rguenther@suse.de>
17539
17540         * tree-ssa-alias.c (finalize_ref_all_pointers): Remove.
17541         (compute_may_aliases): Do not call finalize_ref_all_pointers.
17542         (compute_flow_insensitive_aliasing): Do not treat
17543         PTR_IS_REF_ALL pointers special.
17544         (get_smt_for): Likewise.
17545         (may_alias_p): Re-structure.
17546         (is_escape_site): A ref-all pointer conversion is not an escape site.
17547         * tree-ssa-structalias.c (find_what_p_points_to): Do not treat
17548         PTR_IS_REF_ALL pointers special.
17549         * tree-ssa-structalias.h (struct alias_info): Remove
17550         ref_all_symbol_mem_tag field.
17551         (PTR_IS_REF_ALL): Remove.
17552
17553 2008-04-29  Richard Guenther  <rguenther@suse.de>
17554
17555         PR middle-end/36077
17556         * fold-const.c (extract_muldiv_1): In combining division constants
17557         make sure to never overflow.
17558
17559 2008-04-29  Nick Clifton  <nickc@redhat.com>
17560
17561         * doc/tm.texi (RETURN_ADDR_RTX): Fix typo.
17562
17563 2008-04-28  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
17564
17565         PR bootstrap/35169
17566         * optc-gen.awk: Work around HP-UX/IA awk bug.
17567
17568 2008-04-28  Danny Smith  <dannysmith@users.sourceforge.net>
17569
17570         * config/i386/cygming-crtend.c (register_frame_ctor): Revert my
17571         2008-04-25 commit.
17572
17573 2008-04-28  Uros Bizjak  <ubizjak@gmail.com>
17574
17575         PR target/36073
17576         * config/i386/i386.md
17577         (*float<SSEMODEI24:mode><MODEF:mode>2_mixed_interunit):
17578         Change operand 1 predicate to nonimmediate_operand.
17579
17580 2008-04-28  Jakub Jelinek  <jakub@redhat.com>
17581
17582         PR debug/36060
17583         * dwarf2out.c (struct die_struct): Mark as chain_circular through
17584         die_sub field.
17585         * gengtype.c (walk_type, write_func_for_structure): Handle
17586         chain_circular.
17587         * doc/gty.texi: Document chain_circular.
17588
17589 2008-04-28  Richard Guenther  <rguenther@suse.de>
17590
17591         PR tree-optimization/36066
17592         * tree-vrp.c (execute_vrp): Cleanup the CFG only after finalizing
17593         SCEV and loop.
17594
17595 2008-04-28  Uros Bizjak  <ubizjak@gmail.com>
17596
17597         PR target/36064
17598         * config/i386/i386.md
17599         (floatdi<X87MODEF:mode>2_i387_with_xmm splitters):
17600         Use match_scratch instead of match_operand for operands 3 and 4.
17601
17602 2008-04-27  Richard Guenther  <rguenther@suse.de>
17603
17604         PR tree-optimization/18754
17605         PR tree-optimization/34223
17606         * tree-pass.h (pass_complete_unrolli): Declare.
17607         * tree-ssa-loop-ivcanon.c (try_unroll_loop_completely): Print
17608         loop size before and after unconditionally of UL_NO_GROWTH in effect.
17609         Rewrite loop into loop closed SSA form if it is not already.
17610         (tree_unroll_loops_completely): Re-structure to iterate over
17611         innermost loops with intermediate CFG cleanups.
17612         Unroll outermost loops only if requested or the code does not grow
17613         doing so.
17614         * tree-ssa-loop.c (gate_tree_vectorize): Don't shortcut if no
17615         loops are available.
17616         (tree_vectorize): Instead do so here.
17617         (tree_complete_unroll): Also unroll outermost loops.
17618         (tree_complete_unroll_inner): New function.
17619         (gate_tree_complete_unroll_inner): Likewise.
17620         (pass_complete_unrolli): New pass.
17621         * tree-ssa-loop-manip.c (find_uses_to_rename_use): Only record
17622         uses outside of the loop.
17623         (tree_duplicate_loop_to_header_edge): Only verify loop-closed SSA
17624         form if it is available.
17625         * tree-flow.h (tree_unroll_loops_completely): Add extra parameter.
17626         * passes.c (init_optimization_passes): Schedule complete inner
17627         loop unrolling pass before the first CCP pass after final inlining.
17628
17629 2008-04-27  Nathan Sidwell  <nathan@codesourcery.com>
17630
17631         * targhooks.h (default_emutls_var_fields,
17632         default_emutls_var_init): Declare.
17633         * tree.h (DECL_THREAD_LOCAL): Compare against TLS_MODEL_REAL.
17634         * target.h (struct gcc_target): Add struct emutls member.
17635         * target-def.h (TARGET_EMUTLS_GET_ADDRESS,
17636         TARGET_EMUTLS_REGISTER_COMMON, TARGET_EMUTLS_VAR_SECTION,
17637         TARGET_EMUTLS_TMPL_SECTION, TARGET_EMUTLS_VAR_PREFIX,
17638         TARGET_EMUTLS_TMPL_PREFIX, TARGET_EMUTLS_VAR_FIELDS,
17639         TARGET_EMUTLS_VAR_INIT, TARGET_EMUTLS_DEBUG_FORM_TLS_ADDRESS,
17640         TARGET_EMUTLS_VAR_ALIGN_FIXED, TARGET_EMUTLS): New.
17641         (TARGET_INITIALIZER): Add TARGET_EMUTLS.
17642         * builtins.def (BUILT_IN_EMUTLS_GET_ADDRESS,
17643         BUILT_IN_EMUTLS_REGISTER_COMMON): Get name from targetm structure.
17644         * dwarf2out.c (loc_descriptor_from_tree_1): Check if emutls can
17645         emit debug information.
17646         * coretypes.h (tls_model): Add TLS_MODEL_EMULATED, TLS_MODEL_REAL.
17647         * varasm.c: Include targhooks.h.
17648         (emutls_object_section, emutls_tmpl_section): New.
17649         (EMUTLS_VAR_PREFIX, EMUTLS_TMPL_PREFIX): Remove.
17650         (EMUTLS_SEPARATOR): New.
17651         (prefix_name): New.
17652         (get_emutls_object_name): New.
17653         (default_emutls_var_fields): New, broken out of ...
17654         (get_emutls_object_type): ... here.  Adjust to use target hooks.
17655         (get_emutls_init_templ_addr): Adjust to use target hooks.
17656         (emutls_decl): Adjust to use target hooks.
17657         (emutls_finish): Likewise.
17658         (default_emutls_var_init): New, broken out of ...
17659         (assemble_variable): ... here.  Adjust to use target hooks.
17660         * output.h (enum section_category): Add SECCAT_EMUTLS_VAR,
17661         SECCAT_EMUTLS_TMPL.
17662         * c-common.c (handle_section_attribute): Prevent overriding
17663         sections for emulated tls with special sections.
17664         * config/i386/i386.c (x86_64_elf_select_section): Add
17665         SECCAT_EMUTLS_VAR and SECCAT_EMUTLS_TMPL.
17666         (x86_64_elf_unique_section): Likewise.
17667         * config/vxworks.c: Include tree.h.
17668         (vxworks_emutls_var_fields, vxworks_emutls_var_init): New.
17669         (vxworks_override_options): Set TLS scheme.
17670         * doc/tm.texi (Emulated TLS): New node.
17671
17672 2008-04-26  Simon Baldwin <simonb@google.com>
17673
17674         PR c/35652
17675         * builtins.c (c_strlen): Suppressed multiple warnings that can occur
17676         with propagated string constants.
17677
17678 2008-04-26  Uros Bizjak  <ubizjak@gmail.com>
17679
17680         * config/i386/i386.md (fix_trunc<mode>_i387_fisttp_with_temp): Use 'X'
17681         constraint for operand 2 when operand 0 is memory operand.
17682         (fix_truncdi_i387_with_temp): : Use 'X' constraint for operand 4 when
17683         operand 0 is memory operand.
17684         (fix_trunc<mode>_i387_with_temp): Ditto.
17685         (*floatsi<mode>2_vector_mixed_with_temp): Use 'X' constraint for
17686         operand 2 when operand 1 is memory operand.
17687         (*float<SSEMODEI24:mode><MODEF:mode>2_mixed_with_temp): Ditto.
17688         (*floatsi<mode>2_vector_sse_with_temp): Ditto.
17689         (*float<SSEMODEI24:mode><MODEF:mode>2_sse_with_temp): Ditto.
17690         (*float<SSEMODEI24:mode><X87MODEF:mode>2_i387_with_temp): Ditto.
17691         (floatdi<X87MODEF:mode>2_i387_with_xmm): Use 'X' constraint for
17692         operands 2,3 and 4 when operand 1 is memory operand.
17693         (fistdi2_with_temp): Use 'X' constraint for operand 2 when operand 0
17694         is memory operand.
17695         (fistdi2_floor_with_temp): Ditto.
17696         (fist<mode>2_floor_with_temp): Ditto.
17697         (fistdi2_ceil_with_temp): Ditto.
17698         (fist<mode>2_ceil_with_temp): Ditto.
17699         (*truncdfsf_fast_mixed): Merge alternatives 0 and 1.
17700
17701 2008-04-26  David Daney  <ddaney@avtrex.com>
17702
17703         * config/mips/mips.md (UNSPEC_COMPARE_AND_SWAP_12): New
17704         unspec_volitile.
17705         (UNSPEC_SYNC_OLD_OP, UNSPEC_SYNC_NEW_OP, UNSPEC_SYNC_EXCHANGE,
17706         UNSPEC_MEMORY_BARRIER, UNSPEC_SET_GOT_VERSION,
17707         UNSPEC_UPDATE_GOT_VERSION): Renumber.
17708         (sync_compare_and_swap<mode>): New expand for QI and HI modes.
17709         (compare_and_swap_12): New insn.
17710         * config/mips/mips-protos.h (mips_expand_compare_and_swap_12): Declare.
17711         * config/mips/mips.c (mips_force_binary): New function.
17712         (mips_emit_int_order_test, mips_expand_synci_loop): Use it.
17713         (mips_expand_compare_and_swap_12): New function.
17714         * config/mips/mips.h (MIPS_COMPARE_AND_SWAP_12): New macro.
17715
17716 2008-04-25  Jan Hubicka  <jh@suse.cz>
17717
17718         PR testsuite/35843
17719         * cfgexpand.c (pass_expand): Turn into RTL pass.
17720         * passes.c (execute_one_pass): Do pass typechecking after execution.
17721         * tree-pass.h (pass_expand): Turn into RTL pass.
17722
17723         * function.h (struct rtl_data): Move here fields
17724         accesses_prior_frames, calls_eh_return, saves_all_registers,
17725         has_nonlocal_goto, has_asm_statement, is_thunk,
17726         all_throwers_are_sibcalls, limit_stack, profile, uses_const_pool,
17727         uses_pic_offset_table, uses_eh_lsda, tail_call_emit,
17728         arg_pointer_save_area_init from struct function; turn into bool.
17729         (struct function): Move
17730         calls_eh_return, saves_all_registers, has_nonlocal_goto,
17731         has_asm_statement, is_thunk, all_throwers_are_sibcalls, limit_stack,
17732         profile, uses_const_pool, uses_pic_offset_table, uses_eh_lsda,
17733         tail_call_emit, arg_pointer_save_area_init
17734         into struct rtl_data.  Remove recursive_call_emit and gimplified flags.
17735         (current_function_returns_struct, current_function_returns_pcc_struct,
17736         current_function_calls_setjmp, current_function_calls_alloca,
17737         current_function_accesses_prior_frames,
17738         current_function_calls_eh_return, current_function_is_thunk,
17739         current_function_stdarg, current_function_profile,
17740         current_function_limit_stack, current_function_uses_pic_offset_table,
17741         current_function_uses_const_pool, current_function_has_nonlocal_label,
17742         current_function_saves_all_registers,
17743         current_function_has_nonlocal_goto,
17744         current_function_has_asm_statement): Remove accesor macros.
17745         * ra-conflict.c (global_conflicts): Update.
17746         * tree-tailcall.c (suitable_for_tail_opt_p): Update.
17747         (suitable_for_tail_call_opt_p): Update.
17748         * builtins.c (expand_builtin_return_addr): Update.
17749         (expand_builtin_setjmp_setup): Update.
17750         (expand_builtin_nonlocal_goto): Update.
17751         * final.c (final_start_function): Update.
17752         (profile_function): Update.
17753         (leaf_function_p): Update.
17754         (only_leaf_regs_used): Update.
17755         * df-scan.c (df_get_exit_block_use_set): Update.
17756         * dojump.c (clear_pending_stack_adjust): Update.
17757         * tree-stdarg.c (gate_optimize_stdarg): Update.
17758         * gimple-low.c (lower_function_body): Update.
17759         * global.c (compute_regsets): Update.
17760         (global_alloc): Update.
17761         * dwarf2out.c (dwarf2out_begin_prologue): Update.
17762         * expr.c (expand_assignment): Update.
17763         * dse.c (dse_step0): Update.
17764         (dse_step1): Update.
17765         * c-decl.c (store_parm_decls): Update.
17766         * local-alloc.c (combine_regs): Update.
17767         (find_free_reg): Update.
17768         * function.c (assign_parms_augmented_arg_list): Update.
17769         (assign_parm_find_data_types): Update.
17770         (assign_parms): Update.
17771         (allocate_struct_function): Update.
17772         (expand_function_start): Update.
17773         (expand_function_end): Update.
17774         (get_arg_pointer_save_area): Update.
17775         (thread_prologue_and_epilogue_insns): Update.
17776         (rest_of_match_asm_constraints): Update.
17777         * stor-layout.c (variable_size): Update.
17778         * gcse.c (gcse_main): Update.
17779         (bypass_jumps): Update.
17780         * gimplify.c (gimplify_function_tree): Update.
17781         * calls.c (emit_call_1): Update.
17782         (expand_call): Update.
17783         * bt-load.c (compute_defs_uses_and_gen): Update.
17784         * except.c (sjlj_assign_call_site_values): Update.
17785         (sjlj_emit_function_enter): Update.
17786         (can_throw_external): Update.
17787         (set_nothrow_function_flags): Update.
17788         (expand_builtin_unwind_init): Update.
17789         (expand_eh_return): Update.
17790         (convert_to_eh_region_ranges): Update.
17791         (output_function_exception_table): Update.
17792         * emit-rtl.c (gen_tmp_stack_mem): Update.
17793         * cfgexpand.c (expand_used_vars): Update.
17794         (tree_expand_cfg): Update.
17795         * cfgcleanup.c (rest_of_handle_jump): Update.
17796         * explow.c (allocate_dynamic_stack_space): Update.
17797         * varasm.c (assemble_start_function): Update.
17798         (force_const_mem): Update.
17799         (mark_constant_pool): Update.
17800         * tree-optimize.c (tree_rest_of_compilation): Update.
17801         * stack-ptr-mod.c (notice_stack_pointer_modification): Update.
17802         * tree-cfg.c (notice_special_calls): Update.
17803         (is_ctrl_altering_stmt): Update.
17804         (tree_can_make_abnormal_goto): Update.
17805         (tree_purge_dead_abnormal_call_edges): Update.
17806         * config/alpha/predicates.md: Update.
17807         * config/alpha/alpha.c (alpha_sa_mask): Update.
17808         (alpha_sa_size): Update.
17809         (alpha_does_function_need_gp): Update.
17810         (alpha_expand_prologue): Update.
17811         (alpha_start_function): Update.
17812         (alpha_output_function_end_prologue): Update.
17813         (alpha_expand_epilogue): Update.
17814         * config/frv/frv.c (frv_stack_info): Update.
17815         (frv_expand_epilogue): Update.
17816         * config/s390/s390.c (s390_regs_ever_clobbered): Update.
17817         (s390_register_info): Update.
17818         (s390_frame_info): Update.
17819         (s390_init_frame_layout): Update.
17820         (s390_can_eliminate): Update.
17821         (save_gprs): Update.
17822         * config/spu/spu.c (spu_split_immediate): Update.
17823         (need_to_save_reg): Update.
17824         (spu_expand_prologue): Update.
17825         (spu_expand_epilogue): Update.
17826         * config/sparc/sparc.md: Update.
17827         * config/sparc/sparc.c (eligible_for_return_delay): Update.
17828         (sparc_tls_got): Update.
17829         (legitimize_pic_address): Update.
17830         (sparc_emit_call_insn): Update.
17831         (sparc_expand_prologue): Update.
17832         (output_return): Update.
17833         (print_operand): Update.
17834         (sparc_function_ok_for_sibcall): Update.
17835         * config/sparc/sparc.h (EXIT_IGNORE_STACK): Update.
17836         * config/m32r/m32r.md: Update.
17837         * config/m32r/m32r.c (MUST_SAVE_RETURN_ADDR): Update.
17838         (m32r_compute_frame_size): Update.
17839         (m32r_expand_prologue): Update.
17840         (m32r_expand_epilogue): Update.
17841         (m32r_legitimize_pic_address): Update.
17842         * config/m32r/m32r.h (FRAME_POINTER_REQUIRED): Update.
17843         * config/i386/linux.h (SUBTARGET_FRAME_POINTER_REQUIRED): Update.
17844         * config/i386/i386.c (ix86_frame_pointer_required): Update.
17845         (gen_push): Update.
17846         (ix86_save_reg): Update.
17847         (ix86_compute_frame_layout): Update.
17848         (ix86_expand_prologue): Update.
17849         (ix86_expand_epilogue): Update.
17850         * config/sh/sh.c (output_stack_adjust): Update.
17851         (calc_live_regs): Update.
17852         (sh5_schedule_saves): Update.
17853         (sh_expand_prologue): Update.
17854         (sh_expand_epilogue): Update.
17855         (sh_setup_incoming_varargs): Update.
17856         (sh_allocate_initial_value): Update.
17857         (sh_get_pr_initial_val): Update.
17858         * config/sh/sh.h (SHMEDIA_REGS_STACK_ADJUST): Update.
17859         * config/sh/sh.md (label:): Update.
17860         * config/avr/avr.c (out_movhi_mr_r): Update.
17861         * config/crx/crx.h (enum): Update.
17862         * config/xtensa/xtensa.h (along): Update.
17863         * config/stormy16/stormy16.c Update.
17864         (xstormy16_compute_stack_layout): Update.
17865         * config/fr30/fr30.c (MUST_SAVE_RETURN_POINTER): Update.
17866         (fr30_expand_prologue): Update.
17867         * config/cris/cris.c (cris_conditional_register_usage): Update.
17868         (cris_reg_saved_in_regsave_area): Update.
17869         (cris_initial_frame_pointer_offset): Update.
17870         (cris_simple_epilogue): Update.
17871         (cris_expand_prologue): Update.
17872         (cris_expand_epilogue): Update.
17873         (cris_expand_pic_call_address): Update.
17874         (cris_asm_output_symbol_ref): Update.
17875         (cris_asm_output_label_ref): Update.
17876         * config/cris/cris.md Update.
17877         * config/iq2000/iq2000.c (compute_frame_size): Update.
17878         (iq2000_expand_epilogue): Update.
17879         * config/mt/mt.h (save_direction): Update.
17880         * config/mn10300/mn10300.c (mn10300_function_value): Update.
17881         * config/ia64/ia64.c (ia64_compute_frame_size): Update.
17882         (ia64_secondary_reload_class): Update.
17883         * config/m68k/m68k.c (m68k_save_reg): Update.
17884         (m68k_expand_prologue): Update.
17885         (m68k_expand_epilogue): Update.
17886         (legitimize_pic_address): Update.
17887         * config/rs6000/rs6000.c (rs6000_got_register): Update.
17888         (first_reg_to_save): Update.
17889         (first_altivec_reg_to_save): Update.
17890         (compute_vrsave_mask): Update.
17891         (compute_save_world_info): Update.
17892         (rs6000_stack_info): Update.
17893         (spe_func_has_64bit_regs_p): Update.
17894         (rs6000_ra_ever_killed): Update.
17895         (rs6000_emit_eh_reg_restore): Update.
17896         (rs6000_emit_allocate_stack): Update.
17897         (rs6000_emit_prologue): Update.
17898         (rs6000_emit_epilogue): Update.
17899         (rs6000_output_function_epilogue): Update.
17900         (output_profile_hook): Update.
17901         (rs6000_elf_declare_function_name): Update.
17902         * config/rs6000/rs6000.h (rs6000_args): Update.
17903         * config/rs6000/rs6000.md: Update.
17904         * config/mcore/mcore.c (mcore_expand_prolog): Update.
17905         * config/arc/arc.c (arc_output_function_epilogue): Update.
17906         * config/arc/arc.h (FRAME_POINTER_REQUIRED): Update.
17907         * config/darwin.c (machopic_function_base_name): Update.
17908         * config/score/score3.c (score3_compute_frame_size): Update.
17909         (rpush): Update.
17910         (rpop): Update.
17911         (score3_epilogue): Update.
17912         * config/score/score7.c (score7_compute_frame_size): Update.
17913         (score7_prologue): Update.
17914         (score7_epilogue): Update.
17915         * config/score/score.h (FRAME_POINTER_REQUIRED): Update.
17916         * config/arm/linux-elf.h (SUBTARGET_FRAME_POINTER_REQUIRED): Update.
17917         * config/arm/arm.c (use_return_insn): Update.
17918         (require_pic_register): Update.
17919         (arm_load_pic_register): Update.
17920         (arm_compute_save_reg0_reg12_mask): Update.
17921         (arm_compute_save_reg_mask): Update.
17922         (thumb1_compute_save_reg_mask): Update.
17923         (output_return_instruction): Update.
17924         (arm_output_function_prologue): Update.
17925         (arm_output_epilogue): Update.
17926         (arm_get_frame_offsets): Update.
17927         (arm_expand_prologue): Update.
17928         (thumb_pushpop): Update.
17929         (thumb_exit): Update.
17930         (thumb1_expand_prologue): Update.
17931         (thumb1_expand_epilogue): Update.
17932         (arm_unwind_emit): Update.
17933         (arm_output_fn_unwind): Update.
17934         * config/arm/arm.h (FRAME_POINTER_REQUIRED): Update.
17935         * config/arm/arm.md: Update.
17936         * config/pa/pa.md: Update.
17937         * config/pa/pa.c (legitimize_pic_address): Update.
17938         (compute_frame_size): Update.
17939         (hppa_expand_prologue): Update.
17940         (hppa_expand_epilogue): Update.
17941         (borx_reg_operand): Update.
17942         * config/pa/pa.h (FRAME_POINTER_REQUIRED): Update.
17943         (HARD_REGNO_RENAME_OK): Update.
17944         * config/mips/mips.c (mips_global_pointer): Update.
17945         (mips_save_reg_p): Update.
17946         (mips_compute_frame_info): Update.
17947         (mips_frame_pointer_required): Update.
17948         (mips_expand_prologue): Update.
17949         (mips_expand_epilogue): Update.
17950         (mips_can_use_return_insn): Update.
17951         (mips_reorg_process_insns): Update.
17952         * config/v850/v850.c (compute_register_save_size): Update.
17953         * config/mmix/mmix.h (FRAME_POINTER_REQUIRED): Update.
17954         * config/mmix/mmix.c (along): Update.
17955         (mmix_expand_epilogue): Update.
17956         * config/bfin/bfin.c (legitimize_pic_address): Update.
17957         (must_save_p): Update.
17958         (stack_frame_needed_p): Update.
17959         (add_to_reg): Update.
17960         (bfin_expand_prologue): Update.
17961         * stmt.c (expand_asm_operands): Update.
17962         * reload1.c (reload): Update.
17963         (init_elim_table): Update.
17964
17965 2008-04-25  Bob Wilson  <bob.wilson@acm.org>
17966
17967         * optabs.c (expand_float): Fix REG_EQUAL for UNSIGNED_FLOAT libcall.
17968
17969 2008-04-25  H.J. Lu  <hongjiu.lu@intel.com>
17970
17971         * config/i386/sse.md (mov<mode>): Replace SSEMODEI with SSEMODE.
17972         (*mov<mode>_internal): Likewise.  Support V4SF and V2DF.
17973         (mov<mode>): Removed.
17974         (*movv4sf_internal): Likewise.
17975         (*movv2df_internal): Likewise.
17976
17977 2008-04-25  Pompapathi V Gadad <Pompapathi.V.Gadad@nsc.com>
17978
17979         * config.gcc (crx-*-elf): Remove deprecation.
17980
17981 2008-04-25  Danny Smith  <dannysmith@users.sourceforge.net>
17982
17983         * config/i386/cygming-crtend.c (register_frame_ctor): Register
17984         __gcc_deregister_frame with atexit.
17985         (deregister_frame_dtor): Remove.
17986
17987 2008-04-24  Nathan Froyd  <froydnj@codesourcery.com>
17988             Nathan Sidwell  <nathan@codesourcery.com>
17989
17990         * config/rs6000/rs6000.opt (mspe): Remove Var property.
17991         (misel): Likewise.
17992         * config/rs6000/rs6000.h (rs6000_spe): Declare.
17993         (rs6000_isel): Likewise.
17994         * config/rs6000/rs6000.c (rs6000_spe): New variable.
17995         (rs6000_isel): New variable.
17996         (rs6000_handle_option): Handle OPT_mspe and OPT_misel.
17997
17998 2008-04-24  Jakub Jelinek  <jakub@redhat.com>
17999
18000         PR c++/35758
18001         * c-common.c (handle_vector_size_attribute): Call
18002         lang_hooks.types.reconstruct_complex_type instead of
18003         reconstruct_complex_type.
18004         * config/rs6000/rs6000.c (rs6000_handle_altivec_attribute): Likewise.
18005         * config/spu/spu.c (spu_handle_vector_attribute): Likewise.
18006         * langhooks.h (struct lang_hooks_for_types): Add
18007         reconstruct_complex_type hook.
18008         * langhooks-def.h (LANG_HOOKS_RECONSTRUCT_COMPLEX_TYPE): Define.
18009         (LANG_HOOKS_FOR_TYPES_INITIALIZER): Add it.
18010
18011 2008-04-24  Richard Guenther  <rguenther@suse.de>
18012
18013         * c-common.h (check_builtin_function_arguments): Declare.
18014         * c-common.c (validate_nargs): New function.
18015         (check_builtin_function_arguments): Likewise.
18016         * c-typeck.c (build_function_call): Call
18017         check_builtin_function_arguments.
18018         * builtins.c (fold_builtin_classify): Remove error reporting code.
18019         (fold_builtin_unordered_cmp): Likewise.
18020         (fold_builtin_1): Likewise.
18021         (fold_builtin_n): Likewise.
18022
18023 2008-04-24  Jakub Jelinek  <jakub@redhat.com>
18024
18025         PR tree-optimization/36008
18026         * fold-const.c (try_move_mult_to_index): If s == NULL, divide
18027         the original op1, rather than delta by step.
18028
18029 2008-04-22  Antoniu Pop  <antoniu.pop@gmail.com>
18030             Sebastian Pop  <sebastian.pop@amd.com>
18031
18032         * tree-parloops.c (take_address_of, eliminate_local_variables_1,
18033         eliminate_local_variables_stmt, eliminate_local_variables,
18034         separate_decls_in_loop_name, separate_decls_in_loop_stmt,
18035         separate_decls_in_loop, gen_parallel_loop): Make them work on a region
18036         of code delimited by two edges in the CFG.
18037         (separate_decls_in_loop_name): Renamed separate_decls_in_region_name.
18038         (separate_decls_in_loop_stmt): Renamed separate_decls_in_region_stmt.
18039         (separate_decls_in_loop): Renamed separate_decls_in_region.  Isolate
18040         the case of parallelisation of reductions.
18041         (expr_invariant_in_region_p): New.
18042
18043         * tree-flow.h (gather_blocks_in_sese_region): Declared.
18044         * tree-cfg.c (gather_blocks_in_sese_region): Extern.
18045
18046 2008-04-24  Ira Rosen  <irar@il.ibm.com>
18047             Richard Guenther  <rguenther@suse.de>
18048
18049         PR tree-optimization/36034
18050         * tree-vect-analyze.c (vect_analyze_group_access): SLP is
18051         incapable of dealing with loads with gaps.
18052
18053 2008-04-24  Rafael Espíndola  <espindola@google.com>
18054
18055         * tree-flow.h (vrp_evaluate_conditional): Change signature.
18056         * tree-ssa-propagate.c (fold_predicate_in): Update call to
18057         vrp_evaluate_conditional.
18058         * tree-vrp.c (vrp_evaluate_conditional_warnv): Remove.
18059         (vrp_evaluate_conditional): Split the cond argument.
18060         (vrp_visit_cond_stmt): Use vrp_evaluate_conditional_warnv_with_ops.
18061         (simplify_stmt_for_jump_threading): Update call to
18062         vrp_evaluate_conditional.
18063
18064 2008-04-24  Ira Rosen  <irar@il.ibm.com>
18065
18066         PR tree-optimization/35982
18067         * tree-vect-analyze.c (vect_check_interleaving): Check that the
18068         interleaved data-refs are of the same type.
18069
18070 2008-04-24  Danny Smith  <dannysmith@users.net>
18071
18072         * c-format.c (check_format_info_main): Use strncmp rather than a
18073         magic prefix to handle multichar length specs.
18074         * config/i386/msformat-c.c (format_length_info ms_printf_length_specs):
18075         Don't prefix "I64" and "I32" with '\0'.
18076
18077 2008-04-24  Jakub Jelinek  <jakub@redhat.com>
18078
18079         PR target/36015
18080         * config/i386/i386.c (init_cumulative_args): Don't pass anything
18081         in registers for -m32 only if stdarg_p (fntype).
18082
18083 2008-04-24  Uros Bizjak  <ubizjak@gmail.com>
18084
18085         PR rtl-optimization/36006
18086         * expmed.c (store_fixed_bit_field): Copy op0 rtx before moving
18087         temp to op0 in order to avoid invalid rtx sharing.
18088
18089 2008-04-23  Paolo Bonzini  <bonzini@gnu.org>
18090
18091         * tree-cfg.c (verify_expr): Check with is_gimple_address.  Don't
18092         check TREE_INVARIANT.
18093         * tree-gimple.c (is_gimple_address): New.
18094         (is_gimple_invariant_address): Simplify using decl_address_invariant_p.
18095         * tree-gimple.h (is_gimple_address): New.
18096         * tree.h (decl_address_invariant_p): New.
18097         * tree.c (make_node_stat): Don't set TREE_INVARIANT.
18098         (build_string): Likewise.
18099         (decl_address_invariant_p): New, from is_gimple_invariant_address.
18100         (tree_invariant_p_1): Likewise.
18101         (save_expr): Use it.
18102         (tree_invariant_p): New.
18103         (skip_simple_arithmetic): Use it.
18104         (stabilize_reference_1): Use it.
18105         (recompute_tree_invariant_for_addr_expr): Don't update TREE_INVARIANT,
18106         simplify.
18107         (build1_stat): Drop code to compute TREE_INVARIANT.
18108         (build2_stat): Drop code to compute TREE_INVARIANT.
18109         (build3_stat): Drop code to compute TREE_INVARIANT.
18110         (build4_stat): Drop code to compute TREE_INVARIANT.
18111         (build5_stat): Drop code to compute TREE_INVARIANT.
18112         (build7_stat): Drop code to compute TREE_INVARIANT.
18113         (merge_dllimport_decl_attributes): Don't mention TREE_INVARIANT.
18114         * tree.h (struct tree_base): Remove invariant_flag.
18115         (TREE_INVARIANT): Remove.
18116         * builtins.c (build_string_literal): Don't set TREE_INVARIANT.
18117         (fold_builtin_expect): Check TREE_CONSTANT.
18118         * tree-ssa-ccp.c (fold_stmt_r): Adjust comment.
18119         * c-tree.h (c_expr_to_decl): Drop third parameter.
18120         * c-typeck.c (build_external_ref): Don't set TREE_INVARIANT.
18121         (build_c_cast): Don't set TREE_INVARIANT.
18122         (pop_init_level): Don't set TREE_INVARIANT.
18123         (c_objc_common_truthvalue_conversion): Don't set TREE_INVARIANT.
18124         * gimplify.c (gimplify_init_ctor_preeval): Add assertion, test
18125         TREE_CONSTANT.
18126         (gimplify_init_constructor): Don't set TREE_INVARIANT.
18127         (gimplify_addr_expr): Adjust comment.
18128         * tree-mudflap.c (mf_build_string):
18129         * print-tree.c (print_node): Don't print TREE_INVARIANT.
18130         * tree-nested.c (convert_nonlocal_reference): Adjust comment.
18131         * c-common.c (fix_string_type): Don't set TREE_INVARIANT.
18132         * langhooks-def.h (lhd_expr_to_decl): Drop third parameter.
18133         * langhooks.c (lhd_expr_to_decl): Drop third parameter.
18134         * langhooks.h (struct lang_hooks): Drop third parameter from
18135         expr_to_decl.
18136
18137 2008-04-23  Richard Guenther  <rguenther@suse.de>
18138
18139         PR tree-optimization/27799
18140         PR tree-optimization/32921
18141         PR tree-optimization/32624
18142         * tree-ssa-structalias.c (merge_smts_into): Only merge the
18143         SMTs aliases and the tag itself into the solution.
18144         * tree-ssa-alias.c (compute_flow_sensitive_aliasing): Do not
18145         merge the points-to solution back into the SMT aliases.
18146         (may_alias_p): Use alias_set_subset_of instead of
18147         aliases_conflict_p.  A pointer which points to
18148         memory with alias set zero may access any variable.
18149
18150 2008-04-23  Richard Guenther  <rguenther@suse.de>
18151
18152         * alias.c (alias_set_subset_of): Correctly handle asking
18153         if zero is a subset of an alias set with zero child.
18154         * tree-ssa-alias.c (have_common_aliases_p): Simplify logic.
18155         (compute_flow_insensitive_aliasing): Correctly walk all
18156         pointers.  Do not unnecessarily union sets.
18157
18158 2008-04-23  Richard Guenther  <rguenther@suse.de>
18159
18160         PR middle-end/36021
18161         * c-common.c (handle_alloc_size_attribute): Use type_num_arguments.
18162
18163 2008-04-22  Tomas Bily  <tbily@suse.cz>
18164
18165         * tree-cfg.c (verify_expr): Check for NON_LVALUE_EXPR as
18166         unreachable case.
18167         * tree-vrp.c (extract_range_from_unary_expr): Removed unused
18168         NON_LVALUE_EXPR.
18169         * tree-ssa-threadedge.c (simplify_control_stmt_condition): Likewise.
18170         * tree-ssa-structalias.c (get_constraint_for): Likewise.
18171         * tree-inline.c (estimate_num_insns_1): Likewise.
18172         * varasm.c (const_hash_1, compare_constant, copy_constant)
18173         (compute_reloc_for_constant, output_addressed_constants): Likewise.
18174         * emit-rtl.c (component_ref_for_mem_expr)
18175         (set_mem_attributes_minus_bitpos): Likewise.
18176         * expr.c (highest_pow2_factor, expand_expr_real_1, )
18177         (is_aligning_offset): Likewise.
18178         * dwarf2out.c (loc_descriptor_from_tree_1, add_bound_info): Likewise.
18179         * tree-ssa-loop-ivopts.c (may_be_nonaddressable_p): Likewise.
18180         * dojump.c (do_jump): Likewise.
18181         * builtins.c (get_pointer_alignment, get_memory_rtx)
18182         (integer_valued_real_p, fold_builtin_next_arg): Likewise.
18183         * tree-scalar-evolution.c (instantiate_parameters_1): Likewise.
18184
18185 2008-04-23  Jakub Jelinek  <jakub@redhat.com>
18186
18187         PR rtl-optimization/36017
18188         * builtins.c (expand_errno_check): Clear CALL_EXPR_TAILCALL before
18189         expanding the library call.
18190
18191 2008-04-22  Ian Lance Taylor  <iant@google.com>
18192
18193         * fold-const.c (pointer_may_wrap_p): Call int_size_in_bytes rather
18194         than size_in_bytes.
18195
18196 2008-04-22  Pat Haugen  <pthaugen@us.ibm.com>
18197
18198         * config/rs6000/rs6000.c (rs6000_register_move_cost): Increase cost
18199         of LR/CTR moves for Power6.
18200
18201 2008-04-22  Kenneth Zadeck  <zadeck@naturalbridge.com>
18202
18203         PR middle-end/36003
18204         * passes.c (init_optimization_passes): Remove
18205         pass_fast_rtl_byte_dce.
18206
18207 2008-04-22  Uros Bizjak  <ubizjak@gmail.com>
18208
18209         PR target/29096
18210         * config/i386/xmmintrin.h (_mm_cvtpi16_ps): Rearrange calls to
18211         builtin functions to generate faster code.
18212         (_mm_cvtpu16_ps): Ditto.
18213         (_mm_cvtpi32x2_ps): Ditto.
18214
18215 2008-04-22  Nick Clifton  <nickc@redhat.com>
18216
18217         * common.opt (ftree-loop-distribution): Add Optimization
18218         attribute.
18219
18220         * config/frv/frv.c (frv_stack_info): Use crtl instead of cfun.
18221         (frv_expand_builtin_va_start): Likewise.
18222
18223         * config/arm/arm.c (thumb_find_work_register): Fix location of
18224         argument register count.
18225
18226 2008-04-22  Maxim Kuvyrkov  <maxim@codesourcery.com>
18227
18228         Support scheduling for ColdFire V1 and V3 microarchitecture.
18229         Improve scheduling of multiplication instructions.
18230
18231         * config/m68k/m68k.md (cpu): Add cfv1 and cfv3.  Rename cf_v2 to cfv1.
18232         (mac): New instruction attribute.
18233         * config/m68k/m68k.c (override_options): Handle cfv1, cfv3 and mac.
18234         (m68k_sched_mac): New variable.
18235         (m68k_sched_attr_type2, m68k_sched_md_init_global): Update.
18236         Handle cfv1 and cfv3.
18237         (max_insn_size): New static variable.
18238         (struct _sched_ib): New type.
18239         (sched_ib): New static variable.
18240         (sched_ib_size, sched_ib_filled, sched_ib_insn): Convert variables
18241         to fields of 'struct _sched_ib sched_ib'.  Update all uses.
18242         (m68k_sched_variable_issue): Add modeling of cfv3 instruction buffer.
18243         Update.
18244         (m68k_sched_md_init_global, m68k_sched_md_finish_global,
18245         m68k_sched_md_init, m68k_sched_md_finish): Handle cfv1 and cfv3.  Init
18246         new variables.  Update.
18247         (m68k_sched_dfa_pre_advance_cycle, m68k_sched_dfa_post_advance_cycle):
18248         Add modeling of cfv3 instruction buffer.  Update.
18249         * config/m68k/m68k-protos.h (m68k_sched_mac): Declare.
18250         * config/m68k/m68k.h (TUNE_CFV3): New macro.
18251         * config/m68k/cf.md: Change substrings 'cf_v2' to 'cfv12' or 'cfv123'.
18252         (cf_* reservations): Rename to cfv12 or cfv123 to indicate cores
18253         a particular reservation applies to.
18254         (type2): Reorganize attribute values.  Rename alu to alu_reg,
18255         alu_l to alu, move_l to omove.  Join move to alu.  Split mul
18256         to mul_l and mul_w.
18257         (cf_ib_*): Simplify description of instruction buffer.
18258         (cf_ib_w0, cf_ib_w4, cf_ib_w5, cf_ib_w6): Remove.
18259         (cf_mem): Split into cf_mem1 and cf_mem2.
18260         (cf_v2_move_??): Rename to cfv12_alu_??.
18261         (cf_v2_move_l_??): Rename to cfv12_omove_??.
18262         (cf_v2_mul_??): Remove reservations.
18263         (cfv12_mul_l_??, cfv12_mul_w_??, cfv12_mac_w_??, cfv12_mac_l_??,
18264         cfv12_emac_??, cfv12_emac_w_i0): New reservations.
18265         (cfv12_rts, cfv12_call, cfv12_bcc, cfv12_bra, cfv12_jmp): Move to
18266         appropriate place.
18267         (cfv3_alu_10, cfv3_omove_10, cfv3_alu_i0, cfv3_omove_i0, cfv3_alu_01,
18268         cfv3_alu_0i, cfv3_alu_11, cfv3_omove_11, cfv3_alu_i1, cfv3_omove_i1,
18269         cfv3_alu_1i, cfv3_omove_1i, cfv3_pea_11, cfv3_pea_i1, cfv3_mul_w_10,
18270         cfv3_mul_l_10, cfv3_mul_w_i0, cfv3_mac_w_10, cfv3_mac_l_10,
18271         cfv3_mac_w_i0, cfv3_emac_10, cfv3_emac_w_i0, cfv3_rts, cfv3_call,
18272         cfv3_bcc, cfv3_bra, cfv3_jmp): New reservations.
18273         (cfv3_*_1, cfv3_*_2, cfv3_*_3): New instruction reservations that are
18274         expansions of the above reservations for instructions of sizes
18275         1, 2 and 3 words.
18276
18277 2008-04-22  Maxim Kuvyrkov  <maxim@codesourcery.com>
18278
18279         * rtl-factoring.c (collect_patterns_seqs): Handle CC0 targets.
18280
18281 2008-04-21  Adam Nemet  <anemet@caviumnetworks.com>
18282
18283         * coverage.c: Include tree-pass.h.
18284         (coverage_counter_alloc): Print da_file_name to the dump file.
18285
18286 2008-04-21  Kenneth Zadeck  <zadeck@naturalbridge.com>
18287
18288         * sbitmap.c (sbitmap_range_empty_p): New function.
18289         * sbitmap.h (sbitmap_range_empty_p): New function.
18290         * bitmap.h: Now includes obstack.h.
18291
18292 2008-04-21  Richard Sandiford  <rsandifo@nildram.co.uk>
18293             Kenneth Zadeck  <zadeck@naturalbridge.com>
18294
18295         * dbgcnt.def (ra_byte_scan): Added.
18296         * dbgcnt.c (dbg_cnt): Added code to print message to dump_file
18297         when the last hit happens for a counter.
18298         * timevar.def (TV_DF_BYTE_LR): New variable.
18299         * tree-pass.h (pass_fast_rtl_byte_dce): New pass.
18300         * passes.c (pass_fast_rtl_byte_dce): New pass.
18301         * fwprop.c (update_df): Added mode to call df_ref_create.
18302         Renamed DF_REF_WIDTH and DF_REF_OFFSET to DF_REF_EXTRACT_WIDTH and
18303         DF_REF_EXTRACT_OFFSET.
18304         * df.h (DF_BYTE_LR, DF_BYTE_LR_BB_INFO, DF_BYTE_LR_IN,
18305         DF_BYTE_LR_OUT, df_byte_lr): New macro.
18306         (df_mm): New enum.
18307         (df_ref_extract): Added mode field.
18308         (DF_REF_WIDTH, DF_REF_OFFSET) Renamed to DF_REF_EXTRACT_WIDTH and
18309         DF_REF_EXTRACT_OFFSET.
18310         (DF_REF_EXTRACT_MODE): New macro.
18311         (df_byte_lr_bb_info): New structure.
18312         (df_print_byte_regset, df_compute_accessed_bytes,
18313         df_byte_lr_add_problem, df_byte_lr_get_regno_start,
18314         df_byte_lr_get_regno_len, df_byte_lr_simulate_defs,
18315         df_byte_lr_simulate_uses,
18316         df_byte_lr_simulate_artificial_refs_at_top,
18317         df_byte_lr_simulate_artificial_refs_at_end,
18318         df_compute_accessed_bytes): New function.
18319         (df_ref_create): Add parameter.
18320         (df_byte_lr_get_bb_info): New inline function.
18321         * df-scan.c (df_ref_record, df_uses_record,
18322         df_ref_create_structure): Added mode parameter.
18323         (df_ref_create, df_notes_rescan, df_ref_record, df_def_record_1,
18324         df_defs_record, df_uses_record, df_get_conditional_uses,
18325         df_get_call_refs, df_insn_refs_collect, df_bb_refs_collect,
18326         df_entry_block_defs_collect, df_exit_block_uses_collect):
18327         Added mode parameter to calls to df_ref_record, df_uses_record,
18328         df_ref_create_structure.
18329         (df_ref_equal_p, df_ref_compare): Added test for modes.
18330         (df_ref_create_structure): Added code to set mode.  Renamed
18331         DF_REF_WIDTH and DF_REF_OFFSET to DF_REF_EXTRACT_WIDTH and
18332         DF_REF_EXTRACT_OFFSET.
18333         * df-core.c (df_print_byte_regset): New function.
18334         * df-byte-scan.c: New file.
18335         * df-problems.c (df_rd_transfer_function): Removed unnecessary
18336         calls to BITMAP_FREE.
18337         (df_byte_lr_problem_data, df_problem problem_BYTE_LR): New structure.
18338         (df_byte_lr_get_regno_start, df_byte_lr_get_regno_len,
18339         df_byte_lr_set_bb_info, df_byte_lr_free_bb_info,
18340         df_byte_lr_check_regs, df_byte_lr_expand_bitmap,
18341         df_byte_lr_alloc, df_byte_lr_reset, df_byte_lr_bb_local_compute,
18342         df_byte_lr_local_compute, df_byte_lr_init,
18343         df_byte_lr_confluence_0, df_byte_lr_confluence_n,
18344         df_byte_lr_transfer_function, df_byte_lr_free,
18345         df_byte_lr_top_dump, df_byte_lr_bottom_dump,
18346         df_byte_lr_add_problem, df_byte_lr_simulate_defs,
18347         df_byte_lr_simulate_uses,
18348         df_byte_lr_simulate_artificial_refs_at_top,
18349         df_byte_lr_simulate_artificial_refs_at_end): New function.
18350         * dce.c (byte_dce_process_block): New function.
18351         (dce_process_block): au is now passed in rather than computed
18352         locally.  Changed loops that look at artificial defs to not look
18353         for conditional or partial ones, because there never are any.
18354         (fast_dce): Now is able to drive byte_dce_process_block or
18355         dce_process_block depending on the kind of dce being done.
18356         (rest_of_handle_fast_dce): Add parameter to fast_dce.
18357         (rest_of_handle_fast_byte_dce): New function.
18358         (rtl_opt_pass pass_fast_rtl_byte_dce): New pass.
18359         * Makefile.in (df-byte-scan.o, debugcnt.o): Added dependencies.
18360
18361 2008-04-21  Daniel Franke  <franke.daniel@gmail.com>
18362
18363         PR fortran/35019
18364         * gcc.h: Added fortran options that take arguments to
18365         DEFAULT_SWITCH_TAKES_ARG and DEFAULT_WORD_SWITCH_TAKES_ARG
18366         macros.
18367
18368 2008-04-20  Eric Botcazou  <ebotcazou@adacore.com>
18369
18370         * tree-sra.c (sra_walk_expr) <VIEW_CONVERT_EXPR>: Disable
18371         scalarization if on the LHS and not a full access.
18372
18373 2008-04-20  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
18374
18375         * Makefile.in (s-gtyp-input): Remove tmp-gi.list before writing it.
18376
18377 2008-04-18  Rafael Espíndola  <espindola@google.com>
18378
18379         * tree-vrp.c (find_case_label_index): Fix the binary search.
18380         (find_case_label_range): New.
18381         (vrp_visit_switch_stmt): Use find_case_label_range.
18382         (simplify_switch_using_ranges): Use find_case_label_range.
18383
18384 2008-04-18  Eric Botcazou  <ebotcazou@adacore.com>
18385
18386         * gimplify.c (gimplify_modify_expr_rhs) <COND_EXPR>: Gimplify the LHS
18387         using the is_gimple_lvalue predicate instead of is_gimple_min_lval.
18388
18389 2008-04-18  Tom Tromey  <tromey@redhat.com>
18390
18391         PR libcpp/15500:
18392         * doc/cpp.texi (Implementation-defined behavior): Mention
18393         -finput-charset.
18394
18395 2008-04-18  Ian Lance Taylor  <iant@google.com>
18396
18397         * fold-const.c (pointer_may_wrap_p): New static function.
18398         (fold_comparison): Add another test for pointer overflow.  Use
18399         pointer_may_wrap_p to disable some false positives.
18400
18401 2008-04-18  Kris Van Hees <kris.van.hees@oracle.com>
18402
18403         * c-common.c (CHAR16_TYPE, CHAR32_TYPE): New macros.
18404         (fname_as_string): Match updated cpp_interpret_string prototype.
18405         (fix_string_type): Support char16_t* and char32_t*.
18406         (c_common_nodes_and_builtins): Add char16_t and char32_t (and
18407         derivative) nodes.  Register as builtin if C++0x.
18408         (c_parse_error): Support CPP_CHAR{16,32}.
18409         * c-common.h (RID_CHAR16, RID_CHAR32): New elements.
18410         (enum c_tree_index) <CTI_CHAR16_TYPE, CTI_SIGNED_CHAR16_TYPE,
18411         CTI_UNSIGNED_CHAR16_TYPE, CTI_CHAR32_TYPE, CTI_SIGNED_CHAR32_TYPE,
18412         CTI_UNSIGNED_CHAR32_TYPE, CTI_CHAR16_ARRAY_TYPE,
18413         CTI_CHAR32_ARRAY_TYPE>: New elements.
18414         (char16_type_node, signed_char16_type_node, unsigned_char16_type_node,
18415         char32_type_node, signed_char32_type_node, char16_array_type_node,
18416         char32_array_type_node): New defines.
18417         * c-lex.c (cb_ident): Match updated cpp_interpret_string prototype.
18418         (c_lex_with_flags): Support CPP_CHAR{16,32} and CPP_STRING{16,32}.
18419         (lex_string): Support CPP_STRING{16,32}, match updated
18420         cpp_interpret_string and cpp_interpret_string_notranslate prototypes.
18421         (lex_charconst): Support CPP_CHAR{16,32}.
18422         * c-parser.c (c_parser_postfix_expression): Support CPP_CHAR{16,32}
18423         and CPP_STRING{16,32}.
18424
18425 2008-04-18  Paolo Bonzini  <bonzini@gnu.org>
18426
18427         PR bootstrap/35457
18428         * aclocal.m4: Regenerate.
18429         * configure: Regenerate.
18430
18431 2008-04-18  Jan Hubicka  <jh@suse.cz>
18432
18433         * except.c (dw2_size_of_call_site_table,
18434         sjlj_size_of_call_site_table): Use vector API for call_site_record.
18435
18436         * cgraphbuild.c (build_cgraph_edges): Update.
18437         * tree-pass.h: Update comment.
18438         * final.c (leaf_function_p): Update.
18439         (leaf_renumber_regs): Update.
18440         (rest_of_clean_state): Update.
18441         * omp-low.c (expand_omp_parallel): Update.
18442         * ipa-reference.c (analyze_function): Update.
18443         * reorg.c (find_end_label): Update.
18444         (optimize_skip): Update.
18445         (fill_simple_delay_slots): Update.
18446         (fill_simple_delay_slots): Update.
18447         (make_return_insns): Update.
18448         (dbr_schedule): Update.
18449         * gimple-low.c (record_vars_into): Update.
18450         * cfgbuild.c (make_edges): Update.
18451         * function.c (assign_stack_local): Update.
18452         (assign_parm_adjust_stack_rtl): Update.
18453         (locate_and_pad_parm): Update.
18454         (allocate_struct_function): Do not initialize stack_alignment_needed
18455         and preferred_stack_boundary here.
18456         (stack_protect_prologue): Update.
18457         (stack_protect_epilogue): Update.
18458         (expand_function_start): Initialize stack_alignment_needed,
18459         preferred_stack_boundary and max_jumptable_ents.
18460         (expand_function_end): Update.
18461         (free_after_compilation): Do not NULLify epilogue_delay_list.
18462         * function.h (struct rtl_data): Add stack_protect_guard,
18463         stack_alignment_needed,
18464         preferred_stack_boundary, epilogue_delay_list.
18465         (struct function): Remove value_histograms, stack_alignment_needed,
18466         preferred_stack_boundary, epilogue_delay_list, max_jumptable_ents,
18467         last_label_uid,
18468         unexpanded_var_list, stack_protect_guard.
18469         (current_function_epilogue_delay_list): Remove.
18470         * ipa-type-escape.c (analyze_function): Update.
18471         * gimplify.c (pop_gimplify_context): Update comment.
18472         * calls.c (expand_call): Update.
18473         (emit_library_call_value_1): Update.
18474         * except.c (set_nothrow_function_flags): Update.
18475         * cfgexpand.c (get_decl_align_unit): Update.
18476         (create_stack_guard): Update.
18477         (estimated_stack_frame_size): Update.
18478         (expand_used_vars): Update.
18479         (tree_expand_cfg): Free histogram earliers, init expansion variables.
18480         * explow.c (allocate_dynamic_stack_space): Update.
18481         * tree-ssa-live.c (remove_unused_locals): Update.
18482         * varasm.c (mark_constant_pool): Update.
18483         * tree-inline.c (remap_decls): Update.
18484         (initialize_cfun): Update.
18485         (declare_return_variable): Update.
18486         (inline_forbidden_p): Update.
18487         (expand_call_inline): Update.
18488         (declare_inline_vars): Update.
18489         (tree_function_versioning): Update.
18490         * tree-flow.h (value_histograms): New.
18491         (VALUE_HISTOGRAMS): New macro.
18492         * basic-block.h (control_flow_graph): Add max_jumptable_ents,
18493         last_label_uid.
18494         * tree-cfg.c (set_bb_for_stmt): Update.
18495         (replace_by_duplicate_decl): Update.
18496         (move_block_to_fn): Update.
18497         (new_label_mapper): Update.
18498         (dump_function_to_file): Update.
18499         * ipa-struct-reorg.c (build_data_structure): Update.
18500         * cfgrtl.c (print_rtl_with_bb): Update.
18501         * reload1.c (reload): Update.
18502         (reload): Update.
18503         * config/i386/i386.c (setup_incoming_varargs_64,
18504         ix86_compute_frame_layout): Update.
18505         * config/arc/arc.c (arc_output_function_epilogue): Update.
18506
18507 2008-04-18  Marius Strobl <marius@FreeBSD.org>
18508
18509         * gthr-posix.h (__gthread_active_p): Use the Solaris implementation
18510         for FreeBSD as well.
18511         * gthr-posix95.h: Likewise.
18512
18513 2008-04-17  Richard Sandiford  <rsandifo@nildram.co.uk>
18514
18515         PR rtl-optimization/35838
18516         * dse.c (find_shift_sequence): Use subreg_lowpart_offset to work
18517         out the byte offset of the first subreg.
18518
18519 2008-04-17  Uros Bizjak  <ubizjak@gmail.com>
18520
18521         * config/i386/i386.md (addti3 splitter): Pass arrays of 3 operands
18522         to split_ti instead of three separate calls with single member arrays.
18523         (subti3 splitter): Ditto.
18524         (adddi3 splitter): Ditto with split_di.
18525         (subdi3 splitter): Ditto.
18526         (negti2 splitter): Pass arrays of 2 operands to split_ti instead of
18527         two separate calls with single member arrays.  Swap match_dup
18528         operands 1 and 2 to better fit into the array.
18529         (negdi2 splitter): Ditto with split_di.
18530         (movdfcc splitter):  Pass arrays of 2 operands to split_di instead of
18531         two separate calls with single member arrays.  Swap match_dup operands
18532         6 and 7 to better fit into the array.
18533
18534 2008-04-17  H.J. Lu  <hongjiu.lu@intel.com>
18535
18536         * config/i386/i386.c (sse_builtin_type): New.
18537         (bdesc_sse_args): Likewise.
18538         (bdesc_sse_3arg): Removed.
18539         (bdesc_2arg): Remove IX86_BUILTIN_AESKEYGENASSIST128.
18540         (bdesc_1arg): Remove IX86_BUILTIN_ROUNDPD and
18541         IX86_BUILTIN_ROUNDPS.
18542         (ix86_init_mmx_sse_builtins): Handle bdesc_sse_args.  Remove
18543         bdesc_sse_3arg.  Remove IX86_BUILTIN_ROUNDPD and
18544         IX86_BUILTIN_ROUNDPS.
18545         (ix86_expand_sse_4_operands_builtin): Removed.
18546         (ix86_expand_sse_operands_builtin): New.
18547         (ix86_expand_unop_builtin): Remove CODE_FOR_sse4_1_roundpd
18548         and CODE_FOR_sse4_1_roundps.
18549         (ix86_expand_builtin): Remove IX86_BUILTIN_AESKEYGENASSIST128.
18550         Handle bdesc_sse_args.  Remove bdesc_sse_3arg.
18551
18552 2008-04-17  Alan Modra  <amodra@bigpond.net.au>
18553
18554         PR target/35907
18555         * config/rs6000/rs6000.c (rs6000_emit_epilogue): Restore vr and vrsave
18556         regs before frame pop when needed.  If use_backchain_to_restore_sp
18557         then load backchain into a temp reg to restore vr and vrsave.  Add
18558         code to restore vr after frame pop if possible.
18559
18560 2008-04-17  Richard Guenther  <rguenther@suse.de>
18561
18562         * tree-vn.c (expressions_equal_p): Do not check type
18563         equality or compatibility before calling operand_equal_p.
18564         * fold-const.c (operand_equal_p): Check equivalence of
18565         integer constants before bailing out due to signedness or
18566         precision differences.
18567         * tree-ssa-sccvn.c (copy_reference_ops_from_ref): Ignore
18568         spurious differences in type qualification.  Ignore types
18569         for COMPONENT_REFs at all.
18570
18571 2008-04-17  Christian Bruel  <christian.bruel@st.com>
18572
18573         * config/sh/sh.c (expand_cbranchdi4): Use original operands for
18574         msw_skip comparison.
18575
18576 2008-04-16  Jakub Jelinek  <jakub@redhat.com>
18577
18578         PR c/35739
18579         * tree-nrv.c (tree_nrv): Don't optimize if result_type is GIMPLE
18580         reg type.
18581
18582         PR tree-optimization/35899
18583         * tree-inline.c (expand_call_inline): Use GIMPLE_STMT_OPERAND
18584         rather than TREE_OPERAND.
18585
18586 2008-04-16  Uros Bizjak  <ubizjak@gmail.com>
18587
18588         PR target/35944
18589         * config/i386/i386.md (fmodxf3): Copy operand 1 and operand 2 into
18590         temporary registers.  Change operand predicate to general_operand.
18591         (remainderxf3): Ditto.
18592
18593 2008-04-16  Richard Guenther  <rguenther@suse.de>
18594
18595         * Makefile.in (tree-affine.o): Add $(FLAGS_H) dependency.
18596         * tree-affine.c (aff_combination_expand): Look through some
18597         conversions.
18598
18599 2008-04-15  Doug Kwan  <dougkwan@google.com>
18600
18601         * dwarf2asm.c (dw2_assemble_integer): Cast to unsigned HOST_WIDE_INT
18602         for hex printing.
18603         * tree-pretty-print.c (dump_generic_node): Ditto.
18604         * final.c (output_addr_const): Ditto.
18605         * dwarf2out.c (output_cfi): Ditto.
18606         * c-pretty-print.c (pp_c_integer_constant): Ditto.
18607         * print-rtl.c (print_rtx): Ditto.
18608         * print-tree.c (print_node_brief, print_node): Ditto.
18609         * c-common.c (match_case_to_enum_1): Ditto.
18610         * sched-vis.c (print_value): Ditto.
18611         * config/i386/i386.c (print_operand): Cast to long unsigned int
18612         for hex printing.
18613
18614 2008-04-15  Danny Smith  <dannysmith@users.sourceforge.net>
18615         * libgcc2.c [L_trampoline]: Remove  unnecessary prototype for
18616         MS Windows VirtualProtect function.
18617
18618 2008-04-15  Jan Hubicka  <jh@suse.cz>
18619
18620         * gengtype.c (write_root): Param_is argument is OK.
18621         * expr.c (expand_expr_real_1): Update call of get_exception_*.
18622         * function.h: Include varray.h
18623         (rtl_eh): New stucture based on except.c one.
18624         (call_site_record): New forward declaration and vector type.
18625         * calls.c (emit_call_1): Do not call
18626         note_current_region_may_contain_throw.
18627         * except.c (eh_status): Remove cur_region, try_region since they are
18628         unused.
18629         Move filter, exc_ptr, ttype_data, ehspec_data, action_record_data and
18630         exception_handler_label_map, ehr_stackadj, ehr_handler, ehr_label,
18631         sjlj_fc, sjlj_exit_after to rth_eh in function.h.
18632         Remove call_site_data_used, call_site_data_size.
18633         Turn call_site_record into vector in function.h.
18634         (note_current_region_may_contain_throw): Remove.
18635         (get_exception_pointer, get_exception_filter): Do not take struct
18636         function argument; update.
18637         (add_ehl_entry, find_exception_handler_labels, ehspec_filter_hash,
18638         add_ttypes_entry, add_ehspec_entry, assign_filter_values,
18639         build_post_landing_pads, dw2_build_landing_pads,
18640         sjlj_assign_call_site_values, sjlj_mark_call_sites,
18641         sjlj_emit_function_enter, sjlj_emit_function_enter,
18642         sjlj_emit_function_exit, sjlj_emit_dispatch_table,
18643         sjlj_build_landing_pads, finish_eh_generation,
18644         remove_exception_handler_label, remove_eh_handler,
18645         maybe_remove_eh_handler, add_reachable_handler,
18646         reachable_handlers, expand_builtin_eh_return, expand_eh_return,
18647         add_action_record, collect_one_action_chain, add_call_site,
18648         convert_to_eh_region_ranges, sjlj_size_of_call_site_table,
18649         sjlj_output_call_site_table, output_function_exception_table,
18650         * except.h (note_current_region_may_contain_throw): Remove
18651         (get_exception_pointer, get_exception_filter): Do not take struct
18652         function argument.
18653         * Makefile.in (GTFILES): Put varargs before struct function.
18654
18655 2008-04-15  Eric Botcazou  <ebotcazou@adacore.com>
18656
18657         * tree-ssa-structalias.c (get_constraint_for_component_ref): Do not
18658         punt for STRING_CST.
18659         (get_constraint_for): Deal with STRING_CST here instead.
18660
18661 2008-04-15  Richard Guenther  <rguenther@suse.de>
18662
18663         * tree-ssa-propagate.c (substitute_and_fold): Substitute
18664         statements in a basic-block with a backward walk.  Do not
18665         substitute into dead statements but instead remove those.
18666
18667 2008-04-15  Richard Guenther  <rguenther@suse.de>
18668
18669         * params.def (PARAM_MAX_FIELDS_FOR_FIELD_SENSITIVE): Set default
18670         to zero, thus disable creation of SFTs.
18671
18672 2008-04-15  Eric Botcazou  <ebotcazou@adacore.com>
18673
18674         * tree-predcom.c (suitable_reference_p): Return false if the
18675         reference can throw.
18676
18677 2008-04-15  Jakub Jelinek  <jakub@redhat.com>
18678
18679         PR c/35751
18680         * c-decl.c (finish_decl): If extern or static var has variable
18681         size, set TREE_TYPE (decl) to error_mark_node.
18682
18683 2008-04-15  Rafael Espíndola  <espindola@google.com>
18684
18685         * fold-const.c (tree_call_nonnegative_warnv_p): Remove local
18686         variable arg1.
18687
18688 2008-04-15  Richard Guenther  <rguenther@suse.de>
18689
18690         * tree-ssa-sccvn.h (vn_reference_lookup): Adjust prototype.
18691         * tree-ssa-sccvn.c (vn_reference_lookup): New parameter maywalk.
18692         (visit_reference_op_load): Do walk vuse-vdef chains on
18693         vn_reference_lookup.
18694         (visit_reference_op_store): But do not here.
18695         * tree-vn.c (vn_lookup): Do not walk vuse-vdef chains on
18696         vn_reference_lookup.
18697         (vn_lookup_with_vuses): But do so here.
18698
18699 2008-04-14  Ian Lance Taylor  <iant@google.com>
18700
18701         * fold-const.c (fold_overflow_warning): Remove assertion.
18702
18703 2008-04-15  Ben Elliston  <bje@au.ibm.com>
18704
18705         * config/alpha/alpha.c (alpha_initialize_trampoline): Remove temp,
18706         temp1 local variables.
18707
18708 2008-04-15  Zuxy Meng  <zuxy.meng@gmail.com>
18709
18710         PR target/35661
18711         * config/i386/winnt.c (i386_pe_section_type_flags): Mark
18712         ".text.unlikely" section as executable.
18713
18714 2008-04-14  James E. Wilson  <wilson@tuliptree.org>
18715
18716         * config/ia64/ia64.c (rtx_needs_barrier): Handle
18717         UNSPEC_FR_SQRT_RECIP_APPROX_RES.
18718         * config/ia64/ia64.c (UNSPEC_FR_SQRT_RECIP_APPROX_RES): Define.
18719         (divsi3_internal, divdi3_internal_lat, divdi3_internal_thr,
18720         divsf3_internal_lat, sqrt_approx, sqrtsf2_internal_thr,
18721         divdf3_internal_lat, sqrtdf2_internal_thr, divxf3_internal_lat,
18722         divxf3_internal_thr, sqrtxf2_internal_thr, recip_approx): Use it.
18723
18724 2008-04-14  Ian Lance Taylor  <iant@google.com>
18725
18726         * flags.h (POINTER_TYPE_OVERFLOW_UNDEFINED): Define.
18727         * fold-const.c (fold_comparison): If appropriate, test
18728         POINTER_TYPE_OVERFLOW_UNDEFINED, and issue an overflow warning.
18729         (fold_binary): Test POINTER_TYPE_OVERFLOW_UNDEFINED when
18730         reassociating a pointer type.
18731         * doc/invoke.texi (Optimize Options): Document that
18732         -fstrict-overflow applies to pointer wraparound.
18733
18734 2008-04-13  Jan Hubicka  <jh@suse.cz>
18735
18736         * m32.c (m32c_pushm_popm): Use crtl->retrun_rtx.
18737
18738 2008-04-12  Andrew Pinski  <pinskia@gmail.com>
18739
18740         * config/rs6000/rs6000.c (compute_save_world_info): Set lr_save_p if
18741         we are going to "save the world".
18742
18743 2008-04-13  Hans-Peter Nilsson  <hp@axis.com>
18744
18745         * config/cris/cris.md ("*andhi_lowpart_non_v32", "*andhi_lowpart_v32")
18746         ("*andqi_lowpart_non_v32", "*andqi_lowpart_v32"): Use "+" for the
18747         operand 0 constraint, not "=".
18748
18749 2008-04-11  James E. Wilson  <wilson@tuliptree.org>
18750
18751         * system.h: Change ASSERT_CHECKING to ENABLE_ASSERT_CHECKING.
18752
18753 2008-04-11  H.J. Lu  <hongjiu.lu@intel.com>
18754
18755         * dse.c (record_store): Use HOST_BITS_PER_WIDE_INT instead
18756         of size of positions_needed * CHAR_BIT.
18757
18758 2008-04-11  H.J. Lu  <hongjiu.lu@intel.com>
18759
18760         PR middle-end/35897
18761         * dse.c (store_info): Change positions_needed to unsigned
18762         HOST_WIDE_INT.
18763         (lowpart_bitmask): New.
18764         (record_store): Cast to unsigned HOST_WIDE_INT for
18765         positions_needed.  Assert width <= size of positions_needed *
18766         CHAR_BIT.  Call lowpart_bitmask to initialize positions_needed.
18767         (check_mem_read_rtx): Use unsigned HOST_WIDE_INT on mask.  Call
18768         lowpart_bitmask to set mask.
18769
18770 2008-04-11  Bernd Schmidt  <bernd.schmidt@analog.com>
18771
18772         * config/bfin/constraints.md: New file.
18773         * config/bfin/bfin.md: Include it.
18774         (adddi3): Use satisfies_constraint functions instead of the old macros.
18775         * config/bfin/bfin.h (REG_CLASS_FROM_LETTER, CONSTRAINT_LEN,
18776         CONST_18UBIT_IMM_P, CONST_16BIT_IMM_P, CONST_16UBIT_IMM_P,
18777         CONST_7BIT_IMM_P, CONST_7NBIT_IMM_P, CONST_5UBIT_IMM_P,
18778         CONST_4BIT_IMM_P, CONST_4UBIT_IMM_P, CONST_3BIT_IMM_P,
18779         CONST_3UBIT_IMM_P, CONST_OK_FOR_K, CONST_OK_FOR_P, CONST_OK_FOR_M,
18780         CONST_OK_FOR_CONSTRAINT_P, CONST_DOUBLE_OK_FOR_LETTER,
18781         EXTRA_CONSTRAINT): Delete.
18782         * config/bfin/predicates.md (highbits_operand, reg_or_7bit_operand,
18783         reg_or_neg7bit_operand): Use satisfies_constraint functions instead
18784         of the old macros.
18785         * config/bfin/bfin.c: Include "tm-constrs.h".
18786         (bfin_secondary_reload, split_load_immediate, bfin_rtx_costs):
18787         Use satisfies_constraint functions instead of the old macros.
18788         * doc/md.texi (Blackfin Constraints): Update file name reference.
18789
18790 2008-04-11  Richard Guenther  <rguenther@suse.de>
18791
18792         PR tree-optimization/35869
18793         * tree-vrp.c (execute_vrp): Move switch statement update after
18794         jump threading.  Schedule another cfg cleanup run.
18795
18796 2008-04-11  Volker Reichelt  <v.reichelt@netcologne.de>
18797
18798         PR c/35744
18799         * attribs.c (decl_attributes): Return early on errorneous node.
18800
18801 2008-04-10  Oleg Ryjkov  <olegr@google.com>
18802
18803         * tree.h (struct tree_base): Added a new flag default_def_flag.
18804         (SSA_NAME_IS_DEFAULT_DEF): Changed to use the new flag.
18805
18806 2008-04-11  Kaz Kojima  <kkojima@gcc.gnu.org>
18807
18808         * config.gcc (need_64bit_hwint): Need 64bit hwint for sh-*-*.
18809
18810 2008-04-10  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
18811
18812         PR target/35768
18813         * pa.md: Define mode iterator P.  Define mode attribute dwc.
18814         (dcacheflush): Update pattern to use iterator P and attribute dwc.
18815         (icacheflush): Likewise.
18816         * pa.h (INITIALIZE_TRAMPOLINE): Use dcacheflushsi/icacheflushsi if
18817         !TARGET_64BIT, and dcacheflushdi/icacheflushdi if TARGET_64BIT.
18818
18819 2008-04-11  Ben Elliston  <bje@au.ibm.com>
18820
18821         * config/spu/spu.c (spu_init_builtins): Mark builtins as nothrow.
18822
18823 2008-04-10  Rafael Espíndola  <espindola@google.com>
18824
18825         * tree-vrp.c (extract_range_from_binary_expr): Don't handle
18826         TRUTH_ANDIF_EXPR or TRUTH_ORIF_EXPR.
18827         (extract_range_from_expr): The same.
18828
18829 2008-04-10  Adam Nemet  <anemet@caviumnetworks.com>
18830
18831         * config/mips/mips.md (GPR2): New mode iterator.
18832         (seq): Add comment.
18833         (*seq_<mode>, *seq_<mode>_mips16, *sne_<mode>, *sgt<u>_<mode>,
18834         *sgt<u>_<mode>_mips16, *sge<u>_<mode>, *slt<u>_<mode>,
18835         *slt<u>_<mode>_mips16 *sle<u>_<mode>, *sle<u>_<mode>_mips16):
18836         Rewrite these to take two modes, the mode of comparison and the
18837         mode of the destination.
18838         * config/mips/mips.c (mips_expand_scc): Instead of having
18839         paradoxical subreg as destination, expand "narrowing" scc if mode
18840         of comparison is SI and target is requested in DI mode.
18841         (mips_emit_int_order_test): Update comment.  Make mode of
18842         comparison match CMP0 rather than TARGET.  When creating inverse
18843         target use mode of TARGET.
18844
18845 2008-04-10  Adam Nemet  <anemet@caviumnetworks.com>
18846
18847         * gcov-dump.c (tag_summary): Only print summaries for the first
18848         GCOV_COUNTERS_SUMMABLE counters.
18849
18850 2008-04-10  Uros Bizjak  <ubizjak@gmail.com>
18851
18852         * config/i386/i386.md (absneg): New code iterator.
18853         (absnegprefix): New code attribute.
18854         (<code><mode>2): Macroize expander from abs<mode>2 and neg<mode>2
18855         patterns using absneg code iterator.
18856         (<code>tf2): Macroize expander from abstf2 and negtf2 patterns
18857         using absneg code iterator.
18858         (*<code><mode>2_1): Macroize insn pattern from *abs<mode>2_1 and
18859         *neg<mode>2 patterns using absneg code iterator.
18860         (*<code>extendsfdf2): Macroize insn pattern from *absextendsfdf2 and
18861         *negextendsfdf2 patterns using absneg code iterator.
18862         (*<code>extendsfxf2): Macroize insn pattern from *absextendsfxf2 and
18863         *negextendsfxf2 patterns using absneg code iterator.
18864         (*<code>extendsfdf2): Macroize insn pattern from *absextendsfdf2 and
18865         *negextendsfdf2 patterns using absneg code iterator.
18866         * config/i386/sse.md (<code><mode>2): Macroize expander from
18867         abs<mode>2 and neg<mode>2 patterns using absneg code iterator.
18868
18869 2008-04-10  Andreas Krebbel  <krebbel1@de.ibm.com>
18870
18871         * config/s390/s390.h: Remove the remains of the recent search
18872         & replace action of current_function_outgoing_args_size.
18873
18874 2008-04-10  Ira Rosen  <irar@il.ibm.com>
18875
18876         PR tree-optimization/35821
18877         * tree-vect-transform.c (vect_create_data_ref_ptr): Add check that
18878         NEW_STMT_LIST is not NULL.
18879
18880 2008-04-09  David Edelsohn  <edelsohn@gnu.org>
18881
18882         PR libstdc++/35597
18883         * toplev.c (process_options): Remove -ffunction-sections debugging
18884         warning.
18885
18886 2008-04-09  Peter Bergner  <bergner@vnet.ibm.com>
18887
18888         PR middle-end/PR28690
18889         * explow.c (break_out_memory_refs): Use simplify_gen_binary rather
18890         than gen_rtx_fmt_ee to perform more canonicalizations.
18891
18892 2008-04-08  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
18893
18894         PR driver/35665
18895         * collect2.c (write_c_file): Don't wrap in "#ifdef __cplusplus".
18896
18897 2008-04-09  Richard Guenther  <rguenther@suse.de>
18898
18899         * tree-cfg.c (verify_stmt): Print complete bogus stmt.
18900         (dump_function_to_file): Dump function arguments with types.
18901
18902 2008-04-08  Richard Guenther  <rguenther@suse.de>
18903
18904         * fold-const.c (fold_widened_comparison): Do not allow
18905         sign-changes that change the result.
18906
18907 2008-04-08  Janis Johnson  <janis187@us.ibm.com>
18908
18909         PR target/35839
18910         * config/rs6000/rs6000.c (rs6000_check_sdmode): Handle additional
18911         kinds of indirect references.
18912
18913 2008-04-08  David Edelsohn  <edelsohn@gnu.org>
18914
18915         * config/rs6000/rs6000.c (rs6000_output_function_epilogue): Update
18916         GNU Fortran language string.
18917
18918 2008-04-08  Rafael Espíndola  <espindola@google.com>
18919
18920         * fold-canst.c (tree_call_nonnegative_warnv_p): New.
18921         (tree_invalid_nonnegative_warnv_p): Use tree_call_nonnegative_warnv_p.
18922         * tree.h (tree_call_nonnegative_warnv_p): New.
18923
18924 2008-04-08  Jan Hubicka  <jh@suse.cz>
18925
18926         * function.c (free_after_compilation): Clear out regno_reg_rtx
18927         pointer.
18928
18929 2008-04-08  Peter Bergner  <bergner@vnet.ibm.com>
18930
18931         Revert
18932         2008-04-07  Peter Bergner  <bergner@vnet.ibm.com>
18933
18934         PR middle-end/PR28690
18935         * rtlanal.c: (commutative_operand_precedence): Give SYMBOL_REF's the
18936         same precedence as REG_POINTER and MEM_POINTER operands.
18937
18938 2008-04-08  Richard Guenther  <rguenther@suse.de>
18939
18940         PR middle-end/35834
18941         * tree-ssa-address.c (create_mem_ref): Use POINTER_PLUS_EXPR
18942         for adding index to base.
18943
18944 2008-04-08  Kai Tietz  <kai.tietz@onevision.com>
18945
18946         * config/i386/mingw32.h (ENABLE_EXECUTE_STACK): New.
18947         (MINGW_ENABLE_EXECUTE_STACK): New.
18948         (IN_LIBGCC2): For libgcc include windows.h file for
18949         function declarations.
18950
18951 2008-04-08  Hans-Peter Nilsson  <hp@axis.com>
18952
18953         * config/cris/cris.c (cris_address_cost): For a PLUS, swap tem1
18954         and tem2 if tem1 is not a REG or MULT.
18955
18956 2008-04-08  Jan Hubicka  <jh@suse.cz>
18957
18958         * function.h (incomming_args): Break out of struct function.
18959         (function_subsections): Break out of struct function.
18960         (rtl_data): Add args, subsections fields. Break out outgoing_args_size,
18961         return_rtx and hard_reg_initial_vals from struct function.
18962         Kill inl_max_label_num.
18963         (current_function_pops_args, current_function_args_info,
18964         current_function_args_size, current_function_args_size,
18965         current_function_pretend_args_size,
18966         current_function_outgoing_args_size,
18967         current_function_internal_arg_pointer, current_function_return_rtx):
18968         Kill compatibility accestor macros.
18969         * builtins.c (expand_builtin_apply_args_1): Update.
18970         (expand_builtin_next_arg): Update.
18971         * df-scan.c (df_get_call_refs): Update.
18972         * dbxout.c (dbxout_function_end): Update.
18973         * dwarf2out.c (dwarf2out_switch_text_section): Update.
18974         (output_line_info): Update.
18975         (secname_for_decl): Update.
18976         (dwarf2out_var_location): Update.
18977         * function.c (free_after_compilation): Update.
18978         (assign_parm_find_stack_rtl): Update.
18979         (assign_parms): Update.
18980         (expand_dummy_function_end): Update.
18981         (expand_function_end): Update.
18982         * calls.c (mem_overlaps_already_clobbered_arg_p): Update.
18983         (expand_call): Update.
18984         (emit_library_call_value_1): Update.
18985         (store_one_arg): Update.
18986         * varasm.c (initialize_cold_section_name): Update.
18987         (unlikely_text_section): Update.
18988         (unlikely_text_section_p): Update.
18989         (assemble_start_function): Update.
18990         (assemble_end_function): Update.
18991         (default_section_type_flags): Update.
18992         (switch_to_section): Update.
18993         * integrate.c (set_decl_abstract_flags): Update.
18994         (get_hard_reg_initial_val): Update.
18995         (has_hard_reg_initial_val): Update.
18996         (allocate_initial_values): Update.
18997         * resource.c (init_resource_info): Update.
18998         * config/alpha/alpha.c (NUM_ARGS): Update.
18999         (direct_return): Update.
19000         (alpha_va_start): Update.
19001         (alpha_sa_size): Update.
19002         (alpha_initial_elimination_offset): Update.
19003         (alpha_expand_prologue): Update.
19004         (alpha_start_function): Update.
19005         (alpha_expand_epilogue): Update.
19006         (unicosmk_initial_elimination_offset):
19007         * config/alpha/alpha.md (call expander): Update.
19008         * config/s390/s390.c (s390_register_info): Update.
19009         (s390_register_info): Update.
19010         (s390_frame_info): Update.
19011         (s390_initial_elimination_offset): Update.
19012         (s390_build_builtin_va_list): Update.
19013         (s390_va_start): Update.
19014         * config/spu/spu.c (direct_return): Update.
19015         (spu_expand_prologue): Update.
19016         (spu_initial_elimination_offset): Update.
19017         (spu_build_builtin_va_list): Update.
19018         (spu_va_start): Update.
19019         * config/sparc/sparc.c (sparc_init_modes): Update.
19020         (sparc_compute_frame_size): Update.
19021         (function_value): Update.
19022         * config/m32r/m32r.c (m32r_compute_frame_size): Update.
19023         * config/i386/i386.md (return expander): Update.
19024         * config/i386/i386.c (ix86_va_start): Update.
19025         (ix86_can_use_return_insn_p): Update.
19026         (ix86_compute_frame_layout): Update.
19027         (ix86_expand_epilogue): Update.
19028         * config/sh/sh.c (output_stack_adjust): Update.
19029         (calc_live_regs): Update.
19030         (sh_expand_prologue): Update.
19031         (sh_builtin_saveregs): Update.
19032         (sh_va_start): Update.
19033         (initial_elimination_offset): Update.
19034         (sh_allocate_initial_value): Update.
19035         (sh_function_ok_for_sibcall): Update.
19036         (sh_get_pr_initial_val): Update.
19037         * config/sh/sh.md (return expander): Update.
19038         * config/avr/avr.c (frame_pointer_required_p): UPdate.
19039         * config/crx/crx.c (crx_compute_frame): UPdate.
19040         (crx_initial_elimination_offset): UPdate.
19041         * config/xtensa/xtensa.c (compute_frame_size): Update
19042         (xtensa_builtin_saveregs): Update.
19043         (xtensa_va_start): Update.
19044         (order_regs_for_local_alloc): Update.
19045         * config/stormy16/stormy16.c (xstormy16_compute_stack_layout): Update.
19046         (xstormy16_expand_builtin_va_start): Update.
19047         * config/fr30/fr30.c (fr30_compute_frame_size): Update.
19048         * config/m68hc11/m68hc11.md (return expanders): Update.
19049         * config/m68hc11/m68hc11.c (expand_prologue): Update.
19050         (expand_epilogue): Update.
19051         * config/cris/cris.c (cris_initial_frame_pointer_offset): Update.
19052         (cris_simple_epilogue): Update.
19053         (cris_expand_prologue): Update.
19054         (cris_expand_epilogue): Update.
19055         * config/iq2000/iq2000.c (iq2000_va_start): Update.
19056         (compute_frame_size): Update.
19057         * config/mt/mt.c (mt_compute_frame_size): Update.
19058         * config/mn10300/mn10300.c (expand_prologue): Update.
19059         (expand_epilogue): Update.
19060         (initial_offset): Update.
19061         (mn10300_builtin_saveregs):
19062         * config/mn10300/mn10300.md (return expander): Update.
19063         * config/ia64/ia64.c (ia64_compute_frame_size): Update.
19064         (ia64_initial_elimination_offset): Update.
19065         (ia64_initial_elimination_offset): Update.
19066         (ia64_expand_prologue): Update.
19067         * config/m68k/m68k.md (return expander): Update.
19068         * config/rs6000/rs6000.c (rs6000_va_start): Update.
19069         (rs6000_stack_info): Update.
19070         * config/mcore/mcore.c (layout_mcore_frame): Update.
19071         (mcore_expand_prolog): Update.
19072         * config/arc/arc.c (arc_compute_frame_size): Update.
19073         * config/score/score3.c (score3_compute_frame_size): Update.
19074         * config/score/score7.c (score7_compute_frame_size): Update.
19075         * config/arm/arm.c (use_return_insn): Update.
19076         (thumb_find_work_register): Update.
19077         (arm_compute_save_reg_mask): Update.
19078         (arm_output_function_prologue): Update.
19079         (arm_output_epilogue): Update.
19080         (arm_size_return_regs): Update.
19081         (arm_get_frame_offsets): Update.
19082         (arm_expand_prologue): Update.
19083         (thumb_exit): Update.
19084         (thumb_unexpanded_epilogue): Update.
19085         (thumb1_output_function_prologue): Update.
19086         * config/pa/pa.md (return expander): Update.
19087         * config/pa/pa.c (compute_frame_size): Update.
19088         (hppa_builtin_saveregs): Update.
19089         * config/mips/mips.c (mips_va_start): Update.
19090         (mips16_build_function_stub): Update.
19091         (mips_compute_frame_info): Update.
19092         (mips_restore_gp): Update.
19093         (mips_output_function_prologue): Update.
19094         (mips_expand_prologue): Update.
19095         * config/v850/v850.c (compute_frame_size): Update.
19096         (expand_prologue): * config/mmix/mmix.c (along): update.
19097         (mmix_initial_elimination_offset): update.
19098         (mmix_reorg): update.
19099         (mmix_use_simple_return): update.
19100         (mmix_expand_prologue): update.
19101         (mmix_expand_epilogue): Update.
19102         * config/bfin/bfin.c (bfin_initial_elimination_offset): Update.
19103         (emit_link_insn): Update.
19104
19105 2008-04-08  Anatoly Sokolov <aesok@post.ru>
19106
19107         * config/avr/avr.h (TARGET_CPU_CPP_BUILTINS): Define
19108         __AVR_HAVE_EIJMP_EICALL__ macro if device have EIJMP and EICALL
19109         instructions.
19110         * config/avr/avr.c (avr_mcu_types): Set AVR31 architecture for
19111         atmega103 device.
19112
19113 2008-04-07  Jan Hubicka  <jh@suse.cz>
19114
19115         * function.h (rtl): Rename to x_rtl.
19116         (crtl): New define.
19117         (return_label, naked_return_label, stack_slot_list, parm_birth_insn,
19118         frame_offset, stack_check_probe_note, arg_pointer_save_area,
19119         used_temp_slots avail_temp_slots, temp_slot_level,
19120         nonlocal_goto_handler_labels): Update accesstors.
19121         (rtl): New global variable.
19122         (struct function): Move some fileds to rtl_data.
19123         (get_arg_pointer_save_area): Update prototype.
19124         * builtins.c (expand_builtin_setjmp_receiver): Update call of
19125         get_arg_pointer_save_area.
19126         * expr.c (init_expr): Update
19127         * function.c (get_frame_size): Update
19128         (assign_stack_local): Update
19129         (expand_function_end): Update.
19130         (get_art_pointer_save_area): Update
19131         * function.h
19132         * emit-rtl.c (rtl): Declare.
19133         (regno_reg_rtx): Declare.
19134         (first_insn, last_insn, cur_insn_uid, last_location, first_label_num):
19135         Update.
19136         (gen_reg_rtx): Update.
19137         * varasm.c (n_deferred_constatns): Update accestor.
19138         (init_varasm_status): Do not allocate varasm_status.
19139         (force_const_mem, get_pool_size, output_constant_pool): Update.
19140         * stmt.c (force_label_rtx): Do not use x_ prefixes.
19141         (expand_nl_goto_receiver): Update get_arg_pointer_save_area.
19142         * m32c/m32.c (m32c_leaf_function_p, m32c_function_needs_enter): Update.
19143         * sparc/sparc.h (INIT_EXPANDERS): Update.
19144         * ia64/ia64.h (INIT_EXPANDERS): Update.
19145
19146 2008-04-07  James E. Wilson  <wilson@tuliptree.org>
19147
19148         * reload.c (push_secondary_reload): Add missing break to for loop.
19149
19150 2008-04-07  Peter Bergner  <bergner@vnet.ibm.com>
19151
19152         PR middle-end/PR28690
19153         * rtlanal.c: Update copyright years.
19154         (commutative_operand_precedence): Give SYMBOL_REF's the same precedence
19155         as REG_POINTER and MEM_POINTER operands.
19156         * emit-rtl.c (gen_reg_rtx_and_attrs): New function.
19157         (set_reg_attrs_from_value): Call mark_reg_pointer as appropriate.
19158         * rtl.h (gen_reg_rtx_and_attrs): Add prototype for new function.
19159         * gcse.c: Update copyright years.
19160         (pre_delete): Call gen_reg_rtx_and_attrs.
19161         (hoist_code): Likewise.
19162         (build_store_vectors): Likewise.
19163         (delete_store): Likewise.
19164         * loop-invariant.c (move_invariant_reg): Likewise.
19165         Update copyright years.
19166
19167 2008-04-07  Uros Bizjak  <ubizjak@gmail.com>
19168
19169         * config/i386/i386.md ("*sse_prologue_save_insn"): Use braced output
19170         control string instead of quoted.
19171
19172 2008-04-07  Kenneth Zadeck  <zadeck@naturalbridge.com>
19173
19174         * doc/rtl.texi: Rewrite of subreg section.
19175
19176 2008-04-07  Kai Tietz  <kai.tietz@onevision.com>
19177
19178         PR/35842
19179         * config/i386/i386.c (legitimize_pic_address): Add treating
19180         of dllimport SYM_REF's.
19181         (legitimize_dllimport_symbol): Add prototype.
19182
19183 2008-04-07  Eric Botcazou  <ebotcazou@adacore.com>
19184
19185         * fold-const.c (fold) <ARRAY_REF>: New case.  Try to fold constant
19186         reference in constructor with non self-referential type.
19187
19188 2008-04-07  Eric Botcazou  <ebotcazou@adacore.com>
19189
19190         Removal of Return with Depressed Stack Pointer support
19191         * tree.h (TYPE_RETURNS_STACK_DEPRESSED): Delete.
19192         (ECF_SP_DEPRESSED): Likewise.
19193         (ECF_LIBCALL_BLOCK, ECF_NOVOPS): Adjust.
19194         * calls.c (emit_call_1): Do not test ECF_SP_DEPRESSED.
19195         (flags_from_decl_or_type): Do not test TYPE_RETURNS_STACK_DEPRESSED.
19196         (expand_call): Do not test ECF_SP_DEPRESSED.
19197         * dse.c (dse_step0): Do not test TYPE_RETURNS_STACK_DEPRESSED.
19198         * function.c (keep_stack_depressed): Delete.
19199         (handle_epilogue_set): Likewise.
19200         (update_epilogue_consts): Likewise.
19201         (emit_equiv_load): Likewise.
19202         (thread_prologue_and_epilogue_insns): Remove support for Return with
19203         Depressed Stack Pointer.
19204         * print-tree.c (print_node): Do not test TYPE_RETURNS_STACK_DEPRESSED.
19205
19206 2008-04-06  Richard Guenther  <rguenther@suse.de>
19207
19208         PR tree-optimization/35400
19209         * tree-vrp.c (vrp_evaluate_conditional): Only query value-range
19210         information from SSA_NAMEs.
19211
19212 2008-04-06  Anatoly Sokolov <aesok@post.ru>
19213
19214         * config/avr/avr.h (avr_mega_p): Remove declaration.
19215         (AVR_MEGA): Remove macro.
19216         * config/avr/avr.c (avr_mega_p): Remove variable.
19217         (avr_override_options): Remove inicializion of avr_mega_p.
19218         Use AVR_HAVE_JMP_CALL instead of AVR_MEGA.
19219         (print_operand): Use AVR_HAVE_JMP_CALL instead of AVR_MEGA.
19220         (avr_jump_mode): (Ditto.).
19221         (avr_output_progmem_section_asm_op): (Ditto.).
19222         (avr_asm_init_sections): (Ditto.).
19223         (avr_asm_init_sections): (Ditto.).
19224         (avr_rtx_costs): (Ditto.).
19225         * config/avr/avr.md: (Ditto.).
19226         * config/avr/avr.h: Use '__AVR_HAVE_JMP_CALL__' instead of
19227         '__AVR_MEGA__'.
19228
19229 2008-04-06  Richard Guenther  <rguenther@suse.de>
19230
19231         PR tree-optimization/35842
19232         * tree-ssa-address.c (fixed_address_object_p): Adjust to match
19233         is_gimple_invariant_address.
19234
19235 2008-04-06  Francois-Xavier Coudert  <fxcoudert@gcc.gnu.org>
19236
19237         * gcc.c (default_compilers): Sync Fortran extensions list with
19238         that in fortran/lang-specs.h.
19239         * doc/invoke.texi: Likewise.
19240         * dbxout.c (get_lang_number): Use "GNU Fortran" in "GNU F95".
19241         * dwarf2out.c (gen_compile_unit_die): Likewise.
19242
19243 2008-04-06  Tom G. Christensen  <tgc@jupiterrise.com>
19244
19245         * gthr-posix95.h (__gthread_cond_wait_recursive): Add missing &.
19246
19247 2008-04-05  Uros Bizjak  <ubizjak@gmail.com>
19248
19249         PR target/12329
19250         * config/i386/i386.c (ix86_function_regparm): Error if regparm(3)
19251         attribute is used for nested functions.
19252
19253 2008-04-05  Jan Hubicka  <jh@suse.cz>
19254
19255         * emit-rtl.c (init_emit): xcalloc regno_pointer_align.
19256
19257         * tree-dump.c (dump_enable_all): Remove prototype; do not accept
19258         letter argument.
19259         (dump_files): Update.
19260         (enable_rtl_dump_file): Do not accept letter argument.
19261         * tree-pass.h (dump_file_info): Remove letter argument.
19262         * toplev.c (decode_d_option): Update -da handling.
19263         * toplev.h (enable_rtl_dump_file): Update prototype.
19264         * passes.c (register_one_dump_file): Do not accept IPA argument; work
19265         it out based on pass type.
19266         (register_dump_files_1): Likewise.
19267         (init_optimization_passes): Update register_one_dump_file calls.
19268         (execute_one_pass): Sanity check that IPA passes are called at IPA
19269         level and RTL passes at RTL level.
19270         (execute_pass_list): IPA pass can not be after or subpass of
19271         GIMPLE/RTL pass.
19272         (execute_ipa_pass_list): Handle IPA subpasses of IPA subpasses and
19273         disallov RTL subpasses of IPA subpasses.
19274
19275 2008-04-05  Ben Elliston  <bje@au.ibm.com>
19276
19277         * tree-cfg.c (need_fake_edge_p): Return false for calls to
19278         builtins that return exactly once and do not throw. Cache call to
19279         call_expr_flags.
19280
19281 2008-04-04 Andy Hutchinson <hutchinsonandy@aim.com>
19282
19283         PR rtl-optimization/34916
19284         PR middle-end/35519
19285         * combine.c (create_log_links): Do not create duplicate LOG_LINKS
19286         between instruction pairs.
19287
19288 2008-04-04  Naveen.H.S  <naveen.hs@kpitcummins.com>
19289
19290         * doc/invoke.texi: Document -mbitops for SH.
19291         * config/sh/constraints.md (K03, K12, Sbv, Sbw): New constraints.
19292         * config/sh/predicates.md (bitwise_memory_operand): New predicate.
19293         * config/sh/sh.c (print_operand): Add %t operand code.
19294         * config/sh/sh.h (GO_IF_LEGITIMATE_INDEX): Add condition for SH2A.
19295         * config/sh/sh.md (*iorsi3_compact): Fix condition for SH2A.
19296         (extendqisi2_compact): Add the alternative for SH2A 4-byte mov.b.
19297         (extendqihi2): Likewise.
19298         (movqi_i): Likewise.
19299         (insv): Use bset, bclr and bst instructions for SH2A if possible.
19300         (extv): Use bld instruction for SH2A if possible.
19301         (extzv): Likewise.
19302         (bclr_m2a, bclrmem_m2a, bset_m2a, bsetmem_m2a, bst_m2a, bld_m2a,
19303         bldsign_m2a, bld_reg, *bld_regqi, band_m2a, bandreg_m2a,
19304         bor_m2a, borreg_m2a, bxor_m2a, bxorreg_m2a): New insns.
19305         (bset.b, bclr.b): Define peepholes.
19306         * config/sh/sh.opt (mbitops): New option.
19307
19308 2008-04-04  Janis Johnson  <janis187@us.ibm.com>
19309
19310         PR target/35620
19311         * config/rs6000/rs6000.c (rs6000_check_sdmode): Handle indirect ref
19312         and view convert expression.
19313
19314 2008-04-04  Jakub Jelinek  <jakub@redhat.com>
19315
19316         PR target/35364
19317         * tree-cfg.c (remove_useless_stmts_1): Handle OMP_* containers.
19318
19319 2008-04-04  H.J. Lu  <hongjiu.lu@intel.com>
19320
19321         * config.gcc (extra_headers): Add wmmintrin.h for x86 and x86-64.
19322
19323         * config/i386/cpuid.h (bit_AES): New.
19324         (bit_PCLMUL): Likewise.
19325
19326         * config/i386/i386.c (pta_flags): Add PTA_AES and PTA_PCLMUL.
19327         (override_options): Handle PTA_AES and PTA_PCLMUL.  Enable
19328         SSE2 if AES or PCLMUL is enabled.
19329         (ix86_builtins): Add IX86_BUILTIN_AESENC128,
19330         IX86_BUILTIN_AESENCLAST128, IX86_BUILTIN_AESDEC128,
19331         IX86_BUILTIN_AESDECLAST128, IX86_BUILTIN_AESIMC128,
19332         IX86_BUILTIN_AESKEYGENASSIST128 and IX86_BUILTIN_PCLMULQDQ128.
19333         (bdesc_sse_3arg): Add IX86_BUILTIN_PCLMULQDQ128.
19334         (bdesc_2arg): Add IX86_BUILTIN_AESENC128,
19335         IX86_BUILTIN_AESENCLAST128, IX86_BUILTIN_AESDEC128,
19336         IX86_BUILTIN_AESDECLAST128 and IX86_BUILTIN_AESKEYGENASSIST128.
19337         (bdesc_1arg): Add IX86_BUILTIN_AESIMC128.
19338         (ix86_init_mmx_sse_builtins): Define __builtin_ia32_aesenc128,
19339         __builtin_ia32_aesenclast128, __builtin_ia32_aesdec128,
19340         __builtin_ia32_aesdeclast128,__builtin_ia32_aesimc128,
19341         __builtin_ia32_aeskeygenassist128 and
19342         __builtin_ia32_pclmulqdq128.
19343         * config/i386/i386.c (ix86_expand_binop_imm_builtin): New.
19344         (ix86_expand_builtin): Use it for IX86_BUILTIN_PSLLDQI128 and
19345         IX86_BUILTIN_PSRLDQI128.  Handle IX86_BUILTIN_AESKEYGENASSIST128.
19346
19347         * config/i386/i386.h (TARGET_AES): New.
19348         (TARGET_PCLMUL): Likewise.
19349         (TARGET_CPU_CPP_BUILTINS): Handle TARGET_AES and TARGET_PCLMUL.
19350
19351         * config/i386/i386.md (UNSPEC_AESENC): New.
19352         (UNSPEC_AESENCLAST): Likewise.
19353         (UNSPEC_AESDEC): Likewise.
19354         (UNSPEC_AESDECLAST): Likewise.
19355         (UNSPEC_AESIMC): Likewise.
19356         (UNSPEC_AESKEYGENASSIST): Likewise.
19357         (UNSPEC_PCLMUL): Likewise.
19358
19359         * config/i386/i386.opt (maes): New.
19360         (mpclmul): Likewise.
19361
19362         * config/i386/sse.md (aesenc): New pattern.
19363         (aesenclast): Likewise.
19364         (aesdec): Likewise.
19365         (aesdeclast): Likewise.
19366         (aesimc): Likewise.
19367         (aeskeygenassist): Likewise.
19368         (pclmulqdq): Likewise.
19369
19370         * config/i386/wmmintrin.h: New.
19371
19372         * doc/extend.texi: Document AES and PCLMUL built-in function.
19373
19374         * doc/invoke.texi: Document -maes and -mpclmul.
19375
19376 2008-04-04  Paolo Bonzini  <bonzini@gnu.org>
19377
19378         * function.c (free_after_parsing): Replace with
19379         cxx_push_function_context from C++ front-end.
19380         (allocate_struct_function): Don't call langhook.
19381         * langhooks.h (struct lang_hooks_for_functions): Delete.
19382         (struct lang_hooks): Add back missing_noreturn_ok_p here, delete
19383         member "function".
19384         * langhooks-def.h (LANG_HOOKS_MISSING_NORETURN_OK_P): Add.
19385         (LANG_HOOKS_FUNCTION_INIT, LANG_HOOKS_FUNCTION_FINAL,
19386         LANG_HOOKS_FUNCTION_MISSING_NORETURN_OK_P,
19387         LANG_HOOKS_FUNCTION_INITIALIZER): Delete.
19388         (LANG_HOOKS_INITIALIZER): Add LANG_HOOKS_MISSING_NORETURN_OK_P,
19389         remove LANG_HOOKS_FUNCTION_INITIALIZER.
19390         * tree-cfg.c: Adjust call to missing_noreturn_ok_p langhook.
19391
19392         * c-objc-common.h (LANG_HOOKS_FUNCTION_MISSING_NORETURN_OK_P):
19393         Rename to LANG_HOOKS_MISSING_NORETURN_OK_P.
19394
19395 2008-04-04  Jakub Jelinek  <jakub@redhat.com>
19396
19397         PR c/35440
19398         * c-pretty-print.c (pp_c_initializer_list): Handle CONSTRUCTOR
19399         for all types.
19400
19401 2008-04-04  Richard Guenther  <rguenther@suse.de>
19402
19403         PR middle-end/35823
19404         * fold-const.c (optimize_minmax_comparison): Use the correct
19405         type for the constant in the simplified comparison.
19406
19407 2008-04-04  Zuxy Meng <zuxy.meng@gmail.com>
19408
19409         * config/i386/driver-i386.c (describe_cache): Add l2_sizekb argument.
19410         Pass L2 size as "--param l2-cache-size" to the compiler.
19411         (decode_l2_cache): New function to decode L2 cache parameters using
19412         0x8000006 extended cpuid function.
19413         (detect_caches_amd): Determine parameters of L2 cache using
19414         decode_l2_caches function.
19415         (decode_caches_intel): Decode L2 cache parameters.
19416         (detect_caches_intel): Determine L2 cache parameters using
19417         decode_caches_intel and decode_l2_caches functions.
19418
19419 2008-04-03  Bob Wilson  <bob.wilson@acm.org>
19420
19421         * config/xtensa/xtensa.c (xtensa_secondary_reload_class): Use a
19422         secondary input reload for subword loads from the constant pool.
19423
19424 2008-04-03  Janis Johnson  <janis187@us.ibm.com>
19425
19426         PR target/35713
19427         * config/rs6000/rs6000.c (rs6000_gimplify_va_arg): Use integer
19428           constants of the appropriate size for runtime calculations.
19429
19430         PR c/35712
19431         * dfp.c (decimal_from_decnumber): Retain trailing zeroes for
19432           decimal-float literal constant zero.
19433
19434 2008-04-03  Jakub Jelinek  <jakub@redhat.com>
19435
19436         PR c/35738
19437         * c-parser.c (c_parser_omp_atomic): Call
19438         default_function_array_conversion on the RHS.
19439
19440         PR middle-end/35818
19441         * omp-low.c (scan_sharing_clauses) <case OMP_CLAUSE_SHARED>: Don't
19442         call is_variable_sized if decl has incomplete type.
19443
19444 2008-04-03  H.J. Lu  <hongjiu.lu@intel.com>
19445
19446         * config/i386/i386-protos.h (ix86_aligned_p): Removed.
19447
19448 2008-04-03  Adam Nemet  <anemet@caviumnetworks.com>
19449
19450         * config/mips/mips.md (any_gt, any_ge, any_lt, any_le): New code
19451         iterators.
19452         (u): Add attribute values for gt, gtu, ge, geu, lt, ltu, le and leu.
19453         (sgt<u>): Merge sgt and sgtu into new expander.
19454         (sgt, sgtu): Remove expanders.
19455         (*sgt<u>_<mode>): Merge *sgt_<mode> and *sgtu_<mode> into new pattern.
19456         (*sgt_<mode>, *sgtu_<mode>): Remove patterns.
19457         (*sgt<u>_<mode>_mips16): Merge *sgt_<mode>_mips16 and
19458         *sgtu_<mode>_mips16 into new pattern.
19459         (*sgt_<mode>_mips16, *sgtu_<mode>_mips16): Remove patterns.
19460         (sge<u>): Merge sge and sgeu into new expander.
19461         (sge, sgeu): Remove expanders.
19462         (*sge<u>_<mode>): Merge *sge_<mode> and second *sge_<mode> into
19463         new pattern.
19464         (*sge_<mode>, second *sge_<mode>): Remove patterns.
19465         (slt<u>): Merge slt and sltu into new expander.
19466         (slt, sltu): Remove expanders.
19467         (*slt<u>_<mode>): Merge *slt_<mode> and *sltu_<mode> into new pattern.
19468         (*slt_<mode>, *sltu_<mode>): Remove patterns.
19469         (*slt<u>_<mode>_mips16): Merge *slt_<mode>_mips16 and
19470         *sltu_<mode>_mips16 into new pattern.
19471         (*slt_<mode>_mips16, *sltu_<mode>_mips16): Remove patterns.
19472         (sle<u>): Merge sle and sleu into new expander.
19473         (sle, sleu): Remove expanders.
19474         (*sle<u>_<mode>): Merge *sle_<mode> and *sleu_<mode> into new pattern.
19475         (*sle_<mode>, *sleu_<mode>): Remove patterns.
19476         (*sle<u>_<mode>_mips16): Merge *sle_<mode>_mips16 and
19477         *sleu_<mode>_mips16 into new pattern.
19478         (*sle_<mode>_mips16, *sleu_<mode>_mips16): Remove patterns.
19479
19480 2008-04-03  Jan Hubicka  <jh@suse.cz>
19481
19482         PR tree-optimization/35795
19483         * alpha/alpha.c (alpha_output_mi_thunk_osf): Free after compilation.
19484         * sparc/sparc.c (sparc_output_mi_thunk): Likewise.
19485         * ia64/ia64.c (ia64_output_mi_thunk): Likewise.
19486         * m68k/m68k.c (m68k_output_mi_thunk): Likewise.
19487         * score/score3.c (score3_output_mi_thunk): Likewise.
19488         * score/score7.c (score7_output_mi_thunk): Likewise.
19489         * mips/mips.c (mips_output_mi_thunk): Likewise.
19490
19491 2008-04-03  Richard Guenther  <rguenther@suse.de>
19492
19493         * tree-vrp.c (extract_range_from_unary_expr): Handle all
19494         conversions.  Simplify code.
19495
19496 2008-04-03  Kaz Kojima  <kkojima@gcc.gnu.org>
19497
19498         * config/sh/sh.c (sh_output_mi_thunk): Free cfun.
19499
19500 2008-04-03  Tom Tromey  <tromey@redhat.com>
19501             Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
19502
19503         * config/m68k/t-uclinux (generated_files): Add sysroot-suffix.h.
19504         * config/bfin/t-bfin-linux (generated_files): Add
19505         linux-sysroot-suffix.h.
19506         * doc/install.texi (Prerequisites): Require make 3.80.
19507         * doc/sourcebuild.texi (Front End Directory): Document new
19508         variable.
19509         * Makefile.in (generated_files): New variable.
19510         (ALL_HOST_OBJS): New variable.
19511         ($(ALL_HOST_OBJS)): New target.
19512
19513 2008-04-03  Paolo Bonzini  <bonzini@gnu.org>
19514
19515         * tree-inline.c (copy_generic_body, copy_decl_no_change): Export.
19516         (remap_block): Call id->transform_lang_insert_block instead
19517         of langhook.
19518         (optimize_inline_calls, unsave_expr_now, tree_function_versioning):
19519         Set id.transform_lang_insert_block to NULL.
19520         (clone_body): Move to cp/optimize.c
19521         * tree-inline.h (struct copy_body_data): Change
19522         transform_lang_insert_block to function pointer.
19523         (copy_generic_body, copy_decl_no_change): Export.
19524         * langhooks.h (struct lang_hooks_for_decls): Kill insert_block.
19525         * langhooks-def.h (LANG_HOOKS_INSERT_BLOCK): Kill.
19526         (LANG_HOOKS_DECLS): Remove LANG_HOOKS_INSERT_BLOCK.
19527
19528         * c-tree.h (insert_block): Kill.
19529         * c-decl.c (insert_block): Kill.
19530
19531 2008-04-03  Paolo Bonzini  <bonzini@gnu.org>
19532
19533         * c-objc-common.h (LANG_HOOKS_FUNCTION_ENTER_NESTED,
19534         LANG_HOOKS_FUNCTION_LEAVE_NESTED): Delete.
19535         * c-tree.h (c_push_function_context, c_pop_function_context): Remove
19536         argument.
19537         * c-decl.c (c_push_function_context, c_pop_function_context): Remove
19538         argument, call {push,pop}_function_context from here.
19539         * c-parser.c: Use c_{push,pop}_function_context.
19540
19541         * function.c (push_function_context_to): Move meat ...
19542         (push_function_context): ... here.  Simplify.
19543         * function.c (pop_function_context_from): Move meat ...
19544         (pop_function_context): ... here.  Simplify.
19545         * langhooks.h (struct lang_hooks_for_functions): Remove enter_nested,
19546         leave_nested).
19547         * langhooks-def.h (LANG_HOOKS_FUNCTION_ENTER_NESTED,
19548         LANG_HOOKS_FUNCTION_LEAVE_NESTED): Delete.
19549         (LANG_HOOKS_FUNCTION_INITIALIZER): Delete them from here.
19550         * tree.h (push_function_context_to, pop_function_context_from): Remove.
19551
19552 2008-04-03  Ben Elliston  <bje@au.ibm.com>
19553
19554         * expmed.c (extract_force_align_mem_bit_field): Remove.
19555
19556 2008-04-03  Richard Guenther  <rguenther@suse.de>
19557
19558         PR middle-end/35800
19559         * expr.h (try_casesi): Adjust prototype.
19560         * expr.c (try_casesi): Take fallback label as extra parameter.
19561         Use that for gen_casesi if default_label is NULL.
19562         * stmt.c (expand_case): Pass fallback label to try_casesi,
19563         make sure to fill gaps with a fallback label if default_label
19564         is not present.
19565
19566 2008-04-03  Dominique d'Humières <dominiq@lps.ens.fr>
19567
19568         PR target/35801
19569         * config/rs6000/rs6000.c (rs6000_output_mi_thunk): Free cfun.
19570
19571 2008-04-03  Ben Elliston  <bje@au.ibm.com>
19572
19573         * expmed.c (extract_split_bit_field): Remove if (0) code.
19574         * tree-ssa-structalias.c (do_sd_constraint): Likewise.
19575         (do_ds_constraint): Likewise.
19576
19577 2008-04-02  Joseph Myers  <joseph@codesourcery.com>
19578
19579         * doc/cppopts.texi (-dU): Document.
19580         * c-common.h (flag_dump_macros): Update comment.
19581         * c-opts.c (handle_OPT_d): Handle -dU.
19582         * c-ppoutput.c (macro_queue, define_queue, undef_queue,
19583         dump_queued_macros, cb_used_define, cb_used_undef): New.
19584         (init_pp_output): Handle -dU.
19585         (cb_line_change): Call dump_queued_macros.
19586         * toplev.c (decode_d_option): Accept -dU as preprocessor option.
19587
19588 2008-04-02  Anatoly Sokolov <aesok@post.ru>
19589
19590         * config/avr/predicates.md (io_address_operand): New predicate.
19591         * config/avr/avr-protos.h (avr_io_address_p): Remove declaration.
19592         * config/avr/avr.c (avr_io_address_p): Remove function.
19593         (out_movqi_r_mr): Use 'io_address_operand' predicate instead of
19594         'avr_io_address_p' function.
19595         (out_movhi_r_mr): (Ditto.).
19596         (out_movqi_mr_r): (Ditto.).
19597         (out_movhi_mr_r): (Ditto.).
19598         (avr_address_cost): (Ditto.).
19599
19600 2008-04-02  Uros Bizjak  <ubizjak@gmail.com>
19601
19602         * config/i386/i386.md (*float<SSEMODEI24:mode><X87MODEF:mode>2_1):
19603         Emit gen_floatdi<X87MODEF:mode>2_i387_with_xmm for DImode values
19604         in 32bit mode when XMM registers are available to avoid store
19605         forwarding stalls.
19606         (floatdi<X87MODEF:mode>2_i387_with_xmm): New insn pattern and
19607         corresponding post-reload splitters.
19608
19609 2008-04-02  H.J. Lu  <hongjiu.lu@intel.com>
19610
19611         * config/i386/i386.c (bdesc_sse_3arg): Add __builtin_ia32_shufps
19612         and __builtin_ia32_shufpd.  Provide __builtin_ia32_roundsd and
19613         __builtin_ia32_roundss.
19614         (ix86_init_mmx_sse_builtins): Remove __builtin_ia32_shufps,
19615         __builtin_ia32_shufpd, __builtin_ia32_roundsd and
19616         __builtin_ia32_roundss.
19617         (ix86_expand_builtin): Don't handle IX86_BUILTIN_SHUFPS and
19618         IX86_BUILTIN_SHUFPD here.
19619
19620 2008-04-02  H.J. Lu  <hongjiu.lu@intel.com>
19621
19622         * config/i386/i386.md (plogic): New.
19623         (plogicprefix): Likewise.
19624
19625         * config/i386/mmx.md (mmx_<code><mode>3): New.
19626         (mmx_and<mode>3): Removed.
19627         (mmx_ior<mode>3): Likewise.
19628         (mmx_xor<mode>3): Likewise.
19629
19630         * config/i386/sse.md (<code><mode>3): New.
19631         (*<code><mode>3): Likewise.
19632         (*<code><mode>3): Likewise.
19633         (<code><mode>3): Likewise.
19634         (*sse_<code><mode>3): Likewise.
19635         (*sse2_<code><mode>3): Likewise.
19636         (<code>tf3): Likewise.
19637         (*<code>tf3): Likewise.
19638         (and<mode>3): Likewise.
19639         (*and<mode>3): Likewise.
19640         (ior<mode>3): Removed.
19641         (*ior<mode>3): Likewise.
19642         (xor<mode>3): Likewise.
19643         (*xor<mode>3): Likewise.
19644         (*and<mode>3): Likewise.
19645         (*ior<mode>3): Likewise.
19646         (*xor<mode>3): Likewise.
19647         (and<mode>3): Likewise.
19648         (*sse_and<mode>3): Likewise.
19649         (*sse2_and<mode>3): Likewise.
19650         (andtf3): Likewise.
19651         (*andtf3): Likewise.
19652         (ior<mode>3): Likewise.
19653         (*sse_ior<mode>3): Likewise.
19654         (*sse2_ior<mode>3): Likewise.
19655         (iortf3): Likewise.
19656         (*iortf3): Likewise.
19657         (xor<mode>3): Likewise.
19658         (*sse_xor<mode>3): Likewise.
19659         (*sse2_xor<mode>3): Likewise.
19660         (xortf3): Likewise.
19661         (*xortf3): Likewise.
19662
19663 2008-04-02  Richard Guenther  <rguenther@suse.de>
19664
19665         PR tree-optimization/14495
19666         PR tree-optimization/34793
19667         * tree-vrp.c (struct switch_update): New structure.
19668         (to_remove_edges, to_update_switch_stmts): New VECs.
19669         (simplify_switch_using_ranges): New function.  Remove not taken
19670         case labels and edges.
19671         (simplify_stmt_using_ranges): Call it.
19672         (identify_jump_threads): Mark edges we have queued for removal
19673         so we don't thread them.
19674         (execute_vrp): Remove edges queued for removal, update SWITCH_STMT
19675         case label vector.
19676         * tree-cfg.c (group_case_labels): Deal with missing default label.
19677         (tree_verify_flow_info): Allow missing default label.
19678         * stmt.c (emit_case_bit_tests): Deal with NULL default_label.
19679         (emit_case_nodes): Likewise.
19680         (expand_case): Do not rely on the default label to be present.
19681         * expr.c (try_casesi): Deal with NULL default_label.
19682         (do_tablejump): Likewise.
19683
19684 2008-04-02  Richard Guenther  <rguenther@suse.de>
19685
19686         PR tree-optimization/14495
19687         * tree-vrp.c (vrp_visit_cond_stmt): Do not handle
19688         SWITCH_EXPR here ...
19689         (vrp_visit_switch_stmt): ... but here (new function).
19690         (find_case_label_index): New helper function.
19691         (vrp_visit_stmt): Dispatch to vrp_visit_switch_stmt.
19692
19693 2008-04-02  Paolo Bonzini  <bonzini@gnu.org>
19694
19695         * fwprop.c: Fix ISO-C99ism.
19696
19697 2008-04-02  Paolo Bonzini  <bonzini@gnu.org>
19698
19699         PR bootstrap/35752
19700         * Makefile.in (objdir): Set it here.
19701         * configure.ac: Not here.  Find dynamic linker characteristics.
19702         * exec-tool.in: Use them.
19703         * aclocal.m4: Regenerate.
19704         * configure: Regenerate.
19705
19706 2008-04-02  Paolo Bonzini  <bonzini@gnu.org>
19707
19708         * expr.c (expand_var): Delete it.
19709         * expr.h (expand_var): Delete prototype.
19710         * function.c (expand_function_start): Use expand_decl instead.
19711         * cfgexpand.c (expand_one_static_var, expand_one_var): Don't call
19712         langhook.
19713
19714 2008-04-02  Andy Hutchinson <hutchinsonamdy@aim.com>
19715
19716         PR rtl-optimization/35542
19717         * fwprop.c (forward_propagate_and_simplify): Replace
19718         loc_reg_mentioned_in_p with reg_mentioned_p.
19719
19720 2008-04-02  Paolo Bonzini  <bonzini@gnu.org>
19721
19722         PR rtl-optimization/35281
19723         * fwprop.c (PR_CAN_APPEAR, PR_HANDLE_MEM): New.
19724         (propagate_rtx_1): Handle PR_HANDLE_MEM.
19725         (propagate_rtx): Pass PR_HANDLE_MEM if appropriate.
19726         (varying_mem_p): Move above propagate_rtx.
19727         (all_uses_available_at): Do not check MEMs.
19728
19729 2008-04-02  Rafael Espíndola  <espindola@google.com>
19730
19731         * tree-vrp.c (extract_code_and_val_from_cond): Remove.
19732         (register_edge_assert_for_2): Split the cond argument.
19733         (register_edge_assert_for_1): Adjust for the change in
19734         register_edge_assert_for_2.
19735         (register_edge_assert_for): Split the cond argument.
19736         (find_switch_asserts): Adjust for the change in
19737         register_edge_assert_for.
19738
19739 2008-04-02  Kai Tietz  <kai.tietz@onevision.com>
19740
19741         * config.gcc: Add for x86_64-*-mingw* the t-crtfm to tbuild.
19742         * config/i386/cygming.h (ASM_OUTPUT_DWARF_OFFSET): Add 8 byte
19743         offsets for 64-bit mingw.
19744         * config/i386/i386.c (ix86_pass_by_reference): Correct calling
19745         abi for x86_64-pc-mingw.
19746
19747 2008-04-02  Richard Guenther  <rguenther@suse.de>
19748
19749         * tree-vrp.c (extract_range_from_assert): Make sure to not
19750         produce range min/max with TREE_OVERFOW set.
19751         If merging a anti-range and a range keep the anti-range if
19752         the range covers all values of the type.
19753         (register_edge_assert_for_2): Only allow sign-changing
19754         conversions in detecting canonical range checks.  Also
19755         register an assert for the unsigned name if useful.
19756
19757         PR tree-optimization/35787
19758         * tree-vrp.c (vrp_val_max): New function.
19759         (vrp_val_min): Likewise.
19760         (vrp_val_is_max): Move earlier, use vrp_val_{min,max}.
19761         (vrp_val_is_min): Likewise.
19762         (supports_overflow_infinity): Use vrp_val_{min,max}.
19763         (negative_overflow_infinity): Likewise.
19764         (positive_overflow_infinity): Likewise.
19765         (is_negative_overflow_infinity): Use vrp_val_is_{min,max}.
19766         (is_positive_overflow_infinity): Likewise.
19767         (is_overflow_infinity): Likewise.
19768         (avoid_overflow_infinity): Use vrp_val_{min,max} and
19769         vrp_val_is_{min,max}.
19770         (set_and_canonicalize_value_range): Canonicalize anti-ranges
19771         to ranges if possible.  Avoid empty ranges.
19772
19773 2008-04-01  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
19774
19775         PR middle-end/35705
19776         * fold-const.c (get_pointer_modulus_and_residue): Return modulus 1 if
19777         the expression is a function address.
19778
19779 2008-04-01  George Helffrich  <george@gcc.gnu.org>
19780
19781         PR fortran/35154, fortran/23057
19782         * dbxout.c: Emit .stabs debug info for Fortran COMMON block
19783         variables as base symbol name + offset using N_BCOMM/N_ECOMM.
19784         (is_fortran, dbxout_common_name, dbxout_common_check): New functions.
19785         (dbxout_symbol_location): Transform N_LCSYM to N_GSYM for storage
19786         in common.
19787         (dbxout_syms): Check for COMMON-based symbol and wrap in
19788         N_BCOMM/N_ECOMM stab bracket, including as many symbols as possible
19789         in bracket for efficiency.
19790
19791         * dwarf2out.c: Emit DWARF debug info for Fortran COMMON block
19792         using DW_TAG_common_block + member offset.
19793         (add_pubname_string): New function.
19794         (dw_expand_expr): New function to find block name and offset for
19795         COMMON var.
19796         (common_check): New function to check whether symbol in Fortran COMMON.
19797         (gen_variable_die): If COMMON, use DW_TAG_common_block.
19798
19799 2008-04-01  Volker Reichelt  <v.reichelt@netcologne.de>
19800
19801         PR c/35436
19802         * c-format.c (init_dynamic_gfc_info): Ignore invalid locus type.
19803
19804 2008-04-02  Ben Elliston  <bje@au.ibm.com>
19805
19806         * config/v850/v850.md (casesi): Remove if (0) code.
19807         * config/i386/uwin.h (ASM_DECLARE_FUNCTION_NAME): Likewise.
19808         * config/alpha/alpha.c (alpha_initialize_trampoline): Likewise.
19809
19810 2008-04-01  Uros Bizjak  <ubizjak@gmail.com>
19811
19812         * config/i386/i386.md (rex64suffix): New mode attribute.
19813         (floathi<mode>2): Disable expander for SSE math.
19814         (*floathi<mode>2_1): New insn insn_and_split pattern.
19815         (*floathi<mode>2_i387_with_temp): New macroized instruction pattern and
19816         corresponding post-reload splitters.
19817         (*floathi<mode>2_i387): New macroized insn pattern.
19818         (float<SSEMODEI24:mode><X87MODEF:mode>2): New macroized expander.
19819         (*float<SSEMODEI24:mode><X87MODEF:mode>2_1): New macroized
19820         insn_and_split pattern.
19821         (*floatsi<mode>2_vector_mixed_with_temp, *floatsi<mode>2_vector_mixed):
19822         New macroized instruction patterns and corresponding post-reload
19823         splitters.
19824         (*floatsi<mode>2_mixed_with_temp): New macroized instruction pattern
19825         and corresponding post-reload splitters.
19826         (*floatsi<mode>2_mixed_interunit, *floatsi<mode>2_mixed_nointerunit):
19827         New macroized instruction patterns.
19828         (*floatsi<mode>2_vector_sse_with_temp, *floatsi<mode>2_vector_sse): New
19829         macroized instruction patterns and corresponding post-reload splitters.
19830         (*floatsi<mode>2_sse_with_temp): New macroized instruction pattern and
19831         corresponding post-reload splitters.
19832         (*floatsi<mode>2_sse_interunit, *floatsi<mode>2_mixed_nointerunit):
19833         New macroized instruction patterns.
19834         (*floatsi<mode>2_i387_with_temp): New macroized instruction pattern and
19835         corresponding post-reload splitters.
19836         (*floatsi<mode>2_i387): New macroized instruction patterns.
19837
19838 2008-04-01  H.J. Lu  <hongjiu.lu@intel.com>
19839
19840         * config/i386/i386.md (smaxmin): New.
19841         (umaxmin): Likewise.
19842         (maxminiprefix): Likewise.
19843         (maxminfprefix): Likewise.
19844         (<code><mode>3): Likewise.
19845         (smin<mode>3): Removed.
19846         (smax<mode>3): Likewise.
19847
19848         * config/i386/mmx.md (mmx_<code>v2sf3): New.
19849         (mmx_<code>v4hi3): Likewise.
19850         (mmx_<code>v8qi3): Likewise.
19851         (mmx_smaxv2sf3): Removed.
19852         (mmx_sminv2sf3): Likewise.
19853         (mmx_umaxv8qi3): Likewise.
19854         (mmx_smaxv4hi3): Likewise.
19855         (mmx_uminv8qi3): Likewise.
19856         (mmx_sminv4hi3): Likewise.
19857
19858         * config/i386/sse.md (<addsub><mode>3): New.
19859         (*<addsub><mode>3): Likewise.
19860         (<sse>_vm<addsub><mode>3): Likewise.
19861         (<maxmin><mode>3): Likewise.
19862         (*<maxmin><mode>3_finite): Likewise.
19863         (*<maxmin><mode>3): Likewise.
19864         (<sse>_vm<maxmin><mode>3): Likewise.
19865         (sse3_h<addsub>v4sf3): Likewise.
19866         (sse3_h<addsub>v2df3): Likewise.
19867         (<maxmin>v16qi3): Likewise.
19868         (*<maxmin>v16qi3): Likewise.
19869         (<maxmin>v8hi3): Likewise.
19870         (*<maxmin>v8hi3): Likewise.
19871         (*sse4_1_<maxmin><mode>3): Likewise.
19872         (*sse4_1_<maxmin><mode>3): Likewise.
19873         (add<mode>3): Removed.
19874         (*add<mode>3): Likewise.
19875         (<sse>_vmadd<mode>3): Likewise.
19876         (sub<mode>3): Likewise.
19877         (*sub<mode>3): Likewise.
19878         (<sse>_vmsub<mode>3): Likewise.
19879         (smin<mode>3): Likewise.
19880         (*smin<mode>3_finite): Likewise.
19881         (*smin<mode>3): Likewise.
19882         (<sse>_vmsmin<mode>3): Likewise.
19883         (smax<mode>3): Likewise.
19884         (*smax<mode>3_finite): Likewise.
19885         (*smax<mode>3): Likewise.
19886         (<sse>_vmsmax<mode>3): Likewise.
19887         (sse3_haddv4sf3): Likewise.
19888         (sse3_haddv2df3): Likewise.
19889         (sse3_hsubv4sf3): Likewise.
19890         (sse3_hsubv2df3): Likewise.
19891         (umaxv16qi3): Likewise.
19892         (*umaxv16qi3): Likewise.
19893         (smaxv8hi3): Likewise.
19894         (*smaxv8hi3): Likewise.
19895         (*sse4_1_smax<mode>3): Likewise.
19896         (*sse4_1_umax<mode>3): Likewise.
19897         (uminv16qi3): Likewise.
19898         (*uminv16qi3): Likewise.
19899         (sminv8hi3): Likewise.
19900         (*sminv8hi3): Likewise.
19901         (*sse4_1_smin<mode>3): Likewise.
19902         (*sse4_1_umin<mode>3): Likewise.
19903
19904 2008-04-01  Rafael Espíndola  <espindola@google.com>
19905
19906         * tree-cfg.c (verify_expr): remove in_phi.
19907         (verify_stmt): Don't call walk_tree with verify_expr. Use
19908         is_gimple_min_invariant instead of is_gimple_val.
19909
19910 2008-04-01  Joseph Myers  <joseph@codesourcery.com>
19911
19912         * doc/include/gpl_v3.texi: Update for manpage generation.
19913         * doc/gcc.texi, doc/gccint.texi: Include gpl_v3.texi instead of
19914         gpl.texi.
19915         * doc/sourcebuild.texi: Document gpl_v3.texi as well as gpl.texi.
19916         * Makefile.in (TEXI_GCC_FILES, TEXI_GCCINT_FILES): Include
19917         gpl_v3.texi instead of gpl.texi.
19918         (gpl.pod): New.
19919
19920 2008-04-01  Jakub Jelinek  <jakub@redhat.com>
19921
19922         PR pch/13675
19923         * c-pch.c (c_common_read_pch): On error close (fd) resp. fclose (f).
19924
19925 2008-04-01  Rafael Espíndola  <espindola@google.com>
19926
19927         * tree-vrp.c (extract_code_and_val_from_cond_with_ops): New.
19928         (extract_code_and_val_from_cond): Use
19929         extract_code_and_val_from_cond_with_ops.
19930
19931 2008-04-01  Jan Hubicka  <jh@suse.cz>
19932
19933         * function.c (free_after_compilation): Free epilogue_delay_list.
19934         (prepare_function_start): Assert that previous compilation was freed.
19935
19936 2008-04-01  Jan Hubicka  <jh@suse.cz>
19937             Jim Wilson  <wilson@tuliptree.org>
19938             Andreas Tobler <andreast@gcc.gnu.org>
19939
19940         PR middle-end/35781
19941         * m32c/m32.c (m32c_leaf_function_p, m32c_function_needs_enter): Use
19942         rtl.emit instead cfun->emit.
19943         * sparc/sparc.h (INIT_EXPANDERS): Likewise.
19944         * ia64/ia64.h (INIT_EXPANDERS): Likewise.
19945
19946 2008-04-01  Ben Elliston  <bje@au.ibm.com>
19947
19948         * doc/c-tree.texi (Function Basics): Fix grammatical error.
19949
19950 2008-03-31  Seongbae Park <seongbae.park@gmail.com>
19951
19952         * common.opt (fprofile-dir=, fprofile-use=, fprofile-generate=):
19953         New options
19954         (fprofile-use): Add var flag_profile_use
19955         * coverage.c (coverage_begin_output): Do not open a gcno file for
19956         output only if -ftest-coverage is set.
19957         Do not add getpwd() to gcda file path.
19958         (build_gcov_info): Check the new flag
19959         flag_profile_datafile_relative_path.
19960         (coverage_init): Use profile_data_prefix.
19961         Read profile counter only if flag_profile_use is set.
19962         * opts.c (common_handle_option): New option fprofile-use=,
19963         fprofile-dir=, fprofile-generate=.
19964         * toplev.c (profile_data_prefix): New variable definition.
19965         * toplev.h (profile_data_prefix): New declaration.
19966         * doc/invoke.tex (Option Summary, Optimization Options):
19967         Add new options.
19968
19969 2008-03-31  James E. Wilson  <wilson@tuliptree.org>
19970
19971         * varasm.c (output_constant_pool_1): In LABEL_REF check,
19972         use tmp consistently.
19973
19974         PR target/35695
19975         * config/ia64/div.md (recip_approx_rf): Use UNSPEC not DIV.
19976         * config/ia64/ia64.c (rtx_needs_barrier): Handle
19977         UNSPEC_FR_RECIP_APPROX_RES.
19978         * config/ia64/ia64.md (UNSPEC_FR_RECIP_APPROX_RES): Define.
19979
19980 2008-03-31  Volker Reichelt  <v.reichelt@netcologne.de>
19981
19982         PR c/35750
19983         * c-decl.c (store_parm_decls_oldstyle): Skip invalid parameters.
19984
19985 2008-03-31  Andrew Pinski  <andrew_pinski@playstation.sony.com>
19986
19987         PR middle-end/30186
19988         * fold-const.c (fold_indirect_ref_1): Support accessing non first
19989         element of the vector via a pointer.
19990
19991 2008-03-31  Ian Lance Taylor  <iant@google.com>
19992
19993         * tlink.c (scan_linker_output): Look for symbol name in single quotes.
19994
19995 2008-03-31  Jan Hubicka  <jh@suse.cz>
19996
19997         * builtins.c (expand_builtin_setjmp_receiver): Update call of
19998         get_arg_pointer_save_area.
19999         * expr.c (init_expr): Just clear out rtl.expr.
20000         * function.c (free_after_compilation): Clear out whole RTL structure.
20001         (get_func_frame_size): Merge into ...
20002         (get_frame_size): ... this one.
20003         (assign_stack_local_1): Merge into ...
20004         (assign_stack_local): ... this one.
20005         (expand_function_end): Update call of get_arg_pointer_save_area.
20006         (get_art_pointer_save_area): Remove cfun argument.
20007         * function.h (emit_status): regno_pointer_align does not need length
20008         attribute. Move x_regno_reg_rtx to ...
20009         (regno_reg_rtx): ... new global array.
20010         (reg_rtx_no, seq_stack, REGNO_POINTER_ALIGN): Update accestors.
20011         (pending_stack_adjust, inhibit_defer_pop, saveregs_value,
20012         apply_args_value, forced_labels, stack_pointer_delta):
20013         Update accestors.
20014         (struct varasm_status): Move here from varasm.c
20015         (struct rtl_data): New. Move here some fields from struct function.
20016         (return_label, naked_return_label, stack_slot_list, parm_birth_insn,
20017         frame_offset, stack_check_probe_note, arg_pointer_save_area,
20018         used_temp_slots avail_temp_slots, temp_slot_level,
20019         nonlocal_goto_handler_labels): Update accesstors.
20020         (rtl): New global variable.
20021         (struct function): Move some fileds to rtl_data.
20022         (get_arg_pointer_save_area): Update prototype.
20023         * emit-rtl.c (rtl): Declare.
20024         (regno_reg_rtx): Declare.
20025         (first_insn, last_insn, cur_insn_uid, last_location, first_label_num):
20026         Update.
20027         (gen_reg_rtx): Update.
20028         (init_virtual_regs): Do not tate emit_status argument.
20029         (init_emit): Do not allocate emit.
20030         * varasm.c (varasm_statuc): Move to function.h.
20031         (n_deferred_constatns): Update accestor.
20032         (init_varasm_status): Do not allocate varasm_status.
20033         (force_const_mem, get_pool_size, output_constant_pool): Update.
20034         * stmt.c (force_label_rtx): Do not use x_ prefixes.
20035         (expand_nl_goto_receiver): Update get_arg_pointer_save_area.
20036
20037 2008-03-31  Zdenek Dvorak  <ook@ucw.cz>
20038
20039         PR rtl-optimization/35729
20040         * loop-invariant.c (check_maybe_invariant): Disallow volatile memory
20041         references.
20042
20043 2008-03-31  H.J. Lu  <hongjiu.lu@intel.com>
20044
20045         PR target/32000
20046         * config/i386/i386.md (*movti_internal): Emit unaligned SSE
20047         load/store if memory is unaligned.
20048         (*movti_rex64): Likewise.
20049
20050         * config/i386/predicates.md (misaligned_operand): New.
20051
20052 2008-03-31  Andrew Pinski  <pinskia@gmail.com>
20053
20054         PR tree-opt/35431
20055         * tree-ssa-phiopt.c (conditional_replacement): Return early for
20056         complex types.
20057
20058 2008-03-31  Jan Beulich  <jbeulich@novell.com>
20059
20060         * config/ia64/constraints.md: Add 'j' constraint.
20061         * config/ia64/ia64.md (movsi_internal): Add addp4 case.
20062         (movdi_internal): Likewise.
20063
20064 2008-03-30  Volker Reichelt  <v.reichelt@netcologne.de>
20065
20066         PR c/35748
20067         * c-typeck.c (build_c_cast): Skip invalid fields in unions.
20068
20069 2008-03-30  H.J. Lu  <hongjiu.lu@intel.com>
20070
20071         PR target/35757
20072         * config/i386/i386.c (ix86_expand_sse_4_operands_builtin): Issue
20073         proper error message for the third argument on blendpd and
20074         blendps.
20075
20076         * config/i386/sse.md (blendbits): New.
20077         (sse4_1_blendp<ssemodesuffixf2c>): Use it.
20078
20079 2008-03-30  Eric Botcazou  <ebotcazou@adacore.com>
20080
20081         * fold-const.c (fold_binary) <BIT_IOR_EXPR>: Add missing conversions.
20082
20083 2008-03-30  Richard Guenther  <rguenther@suse.de>
20084
20085         PR middle-end/31023
20086         * fold-const.c (fold_sign_changed_comparison): Do leave
20087         conversions to base-types alone.
20088
20089 2008-03-29  Andrew Pinski  <andrew_pinski@playstation.sony.com>
20090
20091         * config/rs6000/rs6000.c (rs6000_stack_info): Don't force saving of
20092         the link register if one altivec register is be saved.
20093
20094 2008-03-30  Ben Elliston  <bje@au.ibm.com>
20095
20096         * final.c (final_scan_insn): Remove if (0) code.
20097
20098 2008-03-28  Volker Reichelt  <v.reichelt@netcologne.de>
20099
20100         * c-parser.c (c_parser_next_token_is_keyword): Simplify.
20101
20102 2008-03-28  H.J. Lu  <hongjiu.lu@intel.com>
20103
20104         * config/i386/sse.md (*and<mode>3): Pass <MODE>mode instead
20105         of V4SFmode to ix86_binary_operator_ok.
20106
20107 2008-03-28  Uros Bizjak  <ubizjak@gmail.com>
20108
20109         * config/i386/i386.c (override_options): Initialize
20110         ix86_veclib_handler to ix86_veclibabi_svml when
20111         -mveclibabi=svml is used.
20112         (ix86_veclibabi_svml): New function for SVML ABI style
20113         vectorization support.
20114         * doc/invoke.texi (-mveclibabi) [svml]: Document new target option.
20115
20116 2008-03-28  Rafael Espíndola  <espindola@google.com>
20117
20118         * fold-const.c (tree_unary_nonnegative_warnv_p): Make it public.
20119         (tree_binary_nonnegative_warnv_p): Make it public.
20120         (tree_single_nonnegative_warnv_p): Make it public.
20121         (tree_invalid_nonnegative_warnv_p): Make it public.
20122         (tree_unary_nonzero_warnv_p): Make it public.
20123         (tree_binary_nonzero_warnv_p): Make it public
20124         (tree_single_nonzero_warnv_p): Make it public.
20125         * tree-vrp.c (vrp_evaluate_conditional_warnv_with_ops): New function.
20126         (extract_range_from_binary_expr): Split the expr argument.
20127         (extract_range_from_unary_expr): Split the expr argument.
20128         (extract_range_from_comparison): Split the expr argument.
20129         (extract_range_from_expr): Use the new aux functions.
20130         (vrp_evaluate_conditional_warnv): Use
20131         vrp_evaluate_conditional_warnv_with_ops.
20132         * tree.h (tree_unary_nonzero_warnv_p): Declare.
20133         (tree_binary_nonzero_warnv_p): Declare.
20134         (tree_single_nonzero_warnv_p): Declare.
20135         (tree_expr_nonzero_warnv_p): Declare.
20136         (tree_unary_nonnegative_warnv_p): Declare.
20137         (tree_binary_nonnegative_warnv_p): Declare.
20138         (tree_single_nonnegative_warnv_p): Declare.
20139         (tree_invalid_nonnegative_warnv_p): Declare.
20140
20141 2008-03-28  Richard Guenther  <rguenther@suse.de>
20142
20143         PR tree-optimization/30317
20144         PR tree-optimization/30911
20145         PR tree-optimization/34793
20146         * tree-vrp.c (set_and_canonicalize_value_range): New function.
20147         (struct assert_locus_d): New member EXPR.
20148         (register_new_assert_for): Add EXPR parameter to support
20149         ASSERT_EXPR <name, expr OP limit>.
20150         (register_edge_assert_for_1): Adjust callers.
20151         (find_assert_locations): Likewise.
20152         (process_assert_insertions_for): Build condition from expression.
20153         (extract_range_from_assert): Handle ASSERT_EXPRs
20154         of the form ASSERT_EXPR <name, expr OP limit>.
20155         (register_edge_assert_for_2): New helper registering
20156         asserts for comparisons.  Recognize range tests of the form
20157         (unsigned)i - CST1 OP CST2.
20158         (register_edge_assert_for_1): Use it.
20159         (register_edge_assert_for): Likewise.
20160         (needs_overflow_infinity): Integer sub-types
20161         do not need overflow infinities.
20162         (vrp_val_is_max): The extreme values of integer sub-types
20163         are those of the base type.
20164         (vrp_val_is_min): Likewise.
20165         * tree.def (ASSERT_EXPR): Document extra allowed conditional
20166         expressions.
20167
20168 2008-03-28  Nick Clifton  <nickc@redhat.com>
20169
20170         PR target/31110
20171         * config/mn10300/mn10300.c (mn10300_secondary_reload_class):
20172         Return GENERAL_REGS for stack adjustment reloads.
20173
20174 2008-03-28  Andrew Pinski  <andrew_pinski@playstation.sony.com>
20175
20176         PR target/31334
20177         * config/rs6000/rs6000.c (rs6000_expand_vector_init): Create a
20178         const_vector when all the vectors are constant.
20179
20180 2008-03-27  Bob Wilson  <bob.wilson@acm.org>
20181
20182         * config/xtensa/xtensa.c (gen_float_relational): Handle unordered
20183         comparisons.
20184         * config/xtensa/xtensa.md (any_cond): Add unordered comparisons.
20185         (any_scc_sf): Add uneq, unlt, unle and unordered operators.
20186         (scc_sf): New.
20187         (s<code>_sf): Use new scc_sf attribute for opcode names.
20188
20189 2008-03-27  Tom Tromey  <tromey@redhat.com>
20190
20191         * doc/sourcebuild.texi, doc/install.texi, configure, aclocal.m4,
20192         configure.ac, Makefile.in, config/t-darwin, config/m32c/t-m32c,
20193         config/spu/t-spu-elf, config/i386/t-interix,
20194         config/i386/t-cygming, config/i386/x-i386, config/i386/t-cygwin,
20195         config/i386/x-darwin, config/i386/x-mingw32,
20196         config/i386/t-netware, config/i386/x-cygwin, config/i386/t-nwld,
20197         config/sh/t-sh, config/sh/t-symbian, config/x-linux,
20198         config/t-sol2, config/x-hpux, config/x-darwin, config/ia64/t-ia64,
20199         config/x-solaris, config/t-vxworks, config/m68k/t-uclinux,
20200         config/rs6000/x-rs6000, config/rs6000/x-darwin64,
20201         config/rs6000/x-darwin, config/rs6000/t-rs6000,
20202         config/score/t-score-elf, config/arm/t-strongarm-pe,
20203         config/arm/t-pe, config/arm/t-arm, config/arm/t-wince-pe,
20204         config/v850/t-v850, config/v850/t-v850e, config/bfin/t-bfin-linux:
20205         Revert automatic dependency patch.
20206
20207 2008-03-27  H.J. Lu  <hongjiu.lu@intel.com>
20208
20209         PR target/35657
20210         * config/i386/i386.c (ix86_function_arg_boundary): Align
20211         decimal floating point to its natural boundary.
20212
20213 2008-03-27  Richard Guenther  <rguenther@suse.de>
20214
20215         PR middle-end/35716
20216         * fold-const.c (fold_comparison): Restrict distinct decl
20217         comparison folding to VAR_DECLs and PARM_DECLs.  Do not
20218         solely rely on operand_equal_p.
20219
20220 2008-03-27  Richard Guenther  <rguenther@suse.de>
20221
20222         PR c/32511
20223         * c-common.c (handle_weak_attribute): Reject combination of
20224         weak and inline.
20225
20226 2008-03-27  Richard Guenther  <rguenther@suse.de>
20227
20228         PR tree-optimization/32810
20229         * tree-ssa-ccp.c (get_symbol_constant_value): Strip useless
20230         conversions from DECL_INITIAL.
20231         (fold_const_aggregate_ref): Likewise from constructor elements.
20232
20233 2008-03-27  Zdenek Dvorak  <ook@ucw.cz>
20234
20235         * tree-affine.h (aff_combination_expand): Declare.
20236         (get_inner_reference_aff): Likewise.
20237         * tree-affine.c (aff_combination_expand): Split out from
20238         tree_to_aff_combination_expand.
20239         (get_inner_reference_aff): New function.
20240         * tree-parloops.c (loop_parallel_p): Free vectorizer info.
20241         * tree-ssa-loop-im.c: Include tree-affine.h and pointer-set.h.
20242         (struct lim_aux_data): sm_done field removed.
20243         (mem_ref_loc_p, mem_ref_locs_p): New types.
20244         (struct mem_ref): Added id, stored, accesses_in_loop,
20245         indep_loop, dep_loop, indep_ref, dep_ref fields.
20246         Removed is_stored, locs and next fields.
20247         (memory_accesses): New variable.
20248         (movement_possibility): Do not allow moving statements
20249         that store to memory.
20250         (outermost_indep_loop, simple_mem_ref_in_stmt, mem_ref_in_stmt):
20251         New functions.
20252         (determine_max_movement): For statements with memory references,
20253         find the outermost loop in that the reference is independent.
20254         (move_computations_stmt): Mark the virtual operands for renaming.
20255         (memref_free, mem_ref_alloc, mem_ref_locs_alloc, mark_ref_stored,
20256         gather_mem_refs_stmt, gather_mem_refs_in_loops, vtoe_hash, vtoe_eq,
20257         vtoe_free, record_vop_access, get_vop_accesses, get_vop_stores,
20258         add_vop_ref_mapping, create_vop_ref_mapping_loop,
20259         create_vop_ref_mapping, analyze_memory_references,
20260         cannot_overlap_p, mem_refs_may_alias_p, rewrite_mem_ref_loc,
20261         get_all_locs_in_loop, ref_always_accessed_p,
20262         refs_independent_p, record_indep_loop, ref_indep_loop_p_1,
20263         ref_indep_loop_p, can_sm_ref_p, find_refs_for_sm,
20264         store_motion_loop, store_motion): New functions.
20265         (struct vop_to_refs_elt): New type.
20266         (record_mem_ref_loc, free_mem_ref_locs, rewrite_mem_refs,
20267         memref_hash, memref_eq, hoist_memory_references): Rewritten.
20268         (schedule_sm): Replaced by...
20269         (execute_sm): ... this.
20270         (determine_lsm_ref, hoist_memory_references,
20271         loop_suitable_for_sm, gather_mem_refs_stmt, gather_mem_refs,
20272         find_more_ref_vops, free_mem_ref, free_mem_refs,
20273         determine_lsm_loop, determine_lsm): Removed.
20274         (tree_ssa_lim_finalize): Free data structures used by store motion.
20275         (tree_ssa_lim): Call analyze_memory_references.  Use
20276         store_motion instead of determine_lsm.
20277
20278 2008-03-27  Paolo Bonzini  <bonzini@gnu.org>
20279
20280         * config.cc (m68hc11, m6811, m68hc12, m6812): Add usegas.h,
20281         rename tmake_file to m68hc11/t-m68hc11.
20282         (mcore): Set inhibit_libc to true.
20283         * config.host (alpha*-dec-*vms*): Set extra_programs.
20284         (interix3*): Don't use host_xmake_file.
20285         * configure.ac: Let config.gcc override inhibit_libc.
20286         * configure: Regenerate.
20287
20288         * config/alpha/x-vms (EXTRA_PROGRAMS): Remove.
20289         * config/t-openbsd-thread: Remove commented out lines.
20290
20291         * config/x-interix: Remove.
20292
20293         * config/m68hc11/t-m68hc11-gas: Rename to...
20294         * config/m68hc11/t-m68hc11: ... this.  Remove T_CPPFLAGS.
20295
20296         * config/mcore/t-mcore: Remove T_CFLAGS.
20297         * config/mcore/t-mcore-pe: Likewise.
20298
20299 2008-03-27  Paolo Bonzini  <bonzini@gnu.org>
20300
20301         * configure.ac: Replace custom __GNU_SOURCE test with
20302         AC_USE_SYSTEM_EXTENSIONS.  Move it earlier.
20303         * aclocal.m4: Regenerate.
20304         * configure: Regenerate.
20305         * config.in: Regenerate.
20306
20307 2008-03-27  Richard Guenther  <rguenther@suse.de>
20308
20309         * fold-const.c (target.h): Include.
20310         (fold_comparison): Fold comparison of addresses of decls
20311         that bind locally or of constants.  Consolidate address folding code.
20312         * tree-vrp.c (operand_less_p): Deal with non-INTEGER_CST
20313         results from fold_binary_to_constant.
20314         (compare_values_warnv): Likewise.
20315
20316 2008-03-27  Andrew Pinski  <pinskia@gmail.com>
20317
20318         PR middle-end/35429
20319         * fold-const.c (fold_truthop): Check for integeral types when folding
20320         a == 0 && b == 0 and a != 0 || b != 0 .
20321
20322 2008-03-26  Eric Botcazou  <ebotcazou@adacore.com>
20323
20324         * tree.c (get_unwidened): Remove code fiddling with COMPONENT_REF.
20325
20326 2008-03-26  Andreas Schwab  <schwab@suse.de>
20327
20328         * doc/invoke.texi: Fix use of @item vs. @itemx.
20329
20330 2008-03-26  Tom Tromey  <tromey@redhat.com>
20331
20332         * Makefile.in (build/gensupport.o, build/print-rtl.o,
20333         build/read-rtl.o, build/rtl.o, build/gencondmd.o, build/genattr.o,
20334         build/genattrtab.o, build/genautomata.o, build/gencheck.o,
20335         build/gencodes.o, build/genconditions.o, build/genconfig.o,
20336         build/genconstants.o, build/genemit.o, build/genextract.o,
20337         build/genflags.o, build/genmddeps.o, build/genopinit.o,
20338         build/genoutput.o, build/genpeep.o, build/genrecog.o): Depend on
20339         options.h.
20340
20341 2008-03-26  Richard Guenther  <rguenther@suse.de>
20342
20343         Revert
20344         2008-03-26  Richard Guenther  <rguenther@suse.de>
20345
20346         * fold-const.c (target.h): Include.
20347         (fold_comparison): Fold comparison of addresses of two decls
20348         that bind locally.  Consolidate address folding code.
20349
20350 2008-03-26  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
20351
20352         * builtins.c (expand_builtin_pow, fold_builtin_cabs,
20353         fold_builtin_sqrt, fold_builtin_cbrt, fold_builtin_logarithm,
20354         fold_builtin_hypot, fold_builtin_pow): Remove uses of dconst3,
20355         dconstsqrt2, dconstthird, dconste and/or dconst10.
20356         * config/i386/i386.c (ix86_emit_swsqrtsf): Likewise.
20357         * emit-rtl.c (dconst3, dconst10, dconstm2, dconstthird,
20358         dconstsqrt2, dconste): Delete.
20359         (init_emit_once): Likewise.  Simplify initializing dconstm1.
20360         Constify variable.
20361         * real.c (get_real_const): New.
20362         * real.h (dconst3, dconst10, dconstm2, dconstthird,
20363         dconstsqrt2, dconste): Delete.
20364         (real_value_const, get_real_const): New.
20365
20366 2008-03-26  H.J. Lu  <hongjiu.lu@intel.com>
20367
20368         * config/i386/cygming.h (BIGGEST_ALIGNMENT): Removed.
20369
20370         * config/i386/i386.c (ix86_function_arg_boundary): Check
20371         BIGGEST_ALIGNMENT instead of 128.
20372         (setup_incoming_varargs_64): Likewise.
20373
20374 2008-03-26  Tom Tromey  <tromey@redhat.com>
20375
20376         * Makefile.in (DEPFILES): Add missing '/'.
20377
20378 2008-03-26  Richard Guenther  <rguenther@suse.de>
20379
20380         * fold-const.c (target.h): Include.
20381         (fold_comparison): Fold comparison of addresses of two decls
20382         that bind locally.  Consolidate address folding code.
20383
20384 2008-03-26  Nick Clifton  <nickc@redhat.com>
20385
20386         PR target/31232
20387         * config/stormy16/stormy16.c (xstormy16_legitimate_address_p): Do
20388         not allow INT+INT as a legitimate addressing mode.
20389
20390 2008-03-26  Richard Guenther  <rguenther@suse.de>
20391
20392         * tree-flow.h (widen_bitfield): Remove declaration.
20393         * tree-ssa-ccp.c (visit_assignment): Remove unneeded code.
20394         (widen_bitfield): Remove function.
20395         * tree-ssa-dom.c (record_equivalences_from_stmt): Remove unneeded
20396         code.
20397
20398 2008-03-25  Andrew Pinski  <andrew_pinski@playstation.sony.com>
20399
20400         PR target/31558
20401         * config/rs6000/rs6000-c.c (rs6000_builtin_type_compatible): Handle
20402         error_mark_node's.
20403
20404 2008-03-25  Richard Sandiford  <rsandifo@nildram.co.uk>
20405
20406         PR rtl-optimization/35232
20407         * reload1.c (reg_reloaded_call_part_clobbered): Clarify comment.
20408         (forget_old_reloads_1, forget_marked_reloads): Don't clear
20409         reg_reloaded_call_part_clobbered here.
20410         (reload_regs_reach_end_p): New function.
20411         (reload_reg_rtx_for_input): New variable.
20412         (reload_reg_rtx_for_output): Likewise.
20413         (emit_input_reload_insns): Use reloadreg rather than rl->reg_rtx
20414         when reassigning a pseudo register.  Load reloadreg from
20415         reload_reg_rtx_for_input, moving the mode and register
20416         calculation to...
20417         (do_input_reload): ...here.  Use the mode-adjusted reg_rtx
20418         instead of the original when deciding whether an input reload
20419         would be a no-op or whether an output reload can be deleted.
20420         (emit_output_reload_insns): Use the mode-adjusted reg_rtx
20421         when setting up new_spill_reg_store.  Load it from
20422         reload_reg_rtx_for_output, moving the mode and register
20423         calculation to...
20424         (do_output_reload): ...here.  Use the mode-adjusted reg_rtx
20425         instead of the original when deciding whether an output reload
20426         would be a no-op.  Do the same when modifying insn notes.
20427         Use rtx_equal_p instead of == to compare the registers.
20428         (inherit_piecemeal_p): Take a mode and two register numbers
20429         as argument.
20430         (emit_reload_insns): Clear new_spill_reg_store for every hard
20431         register in the reload register.  Remove spill registers
20432         from reg_reloaded_valid before considering whether to record
20433         inheritance information for them.  Use reload_reg_rtx_for_output
20434         instead of reg_rtx when recording output reloads.  Use
20435         reload_reg_rtx_for_input instead of reg_rtx when recording
20436         input reloads.  Set or clear reg_reloaded_call_part_clobbered
20437         at the same time as setting reg_reloaded_valid.
20438         (delete_output_reload): Add a new_reload_reg parameter and use it
20439         instead of rld[j].reg_rtx.
20440         (emit_input_reload_insns, do_input_reload, do_output_reload): Adjust
20441         calls accordingly.
20442
20443 2008-03-25  Tom Tromey  <tromey@redhat.com>
20444
20445         * Makefile.in (build/gensupport.o): Depend on insn-modes.h.
20446         (build/genattr.o): Likewise.
20447         (build/genattrtab.o): Likewise.
20448         (build/gencodes.o): Likewise.
20449         (build/genconfig.o): Likewise.
20450         (build/genconstants.o): Likewise.
20451         (build/genemit.o): Likewise.
20452         (build/genextract.o): Likewise.
20453         (build/genflags.o): Likewise.
20454
20455 2008-03-25  Bob Wilson  <bob.wilson@acm.org>
20456
20457         * config/xtensa/xtensa.c (xtensa_va_start): Use build_int_cst
20458         instead of size_int for integer types.
20459         (xtensa_gimplify_va_arg_expr): Likewise.  Convert index to sizetype
20460         to match type of MINUS_EXPR.
20461
20462 2008-03-25  Tom Tromey  <tromey@redhat.com>
20463
20464         * configure: Rebuilt.
20465         * configure.ac (BUILD_DEPMODE): Extract CCDEPMODE from temporary
20466         Makefile.
20467
20468 2008-03-25  Tom Tromey  <tromey@redhat.com>
20469
20470         * config/x-solaris (host-solaris.o): Update.
20471         * config/x-linux (host-linux.o): Update.
20472         * config/x-hpux (host-hpux.o): Update.
20473         * config/x-darwin (host-darwin.o): Update.
20474         * config/v850/t-v850e (v850-c.o): Update.
20475         * config/v850/t-v850 (v850-c.o): Update.
20476         * config/t-vxworks (vxworks.o): Update.
20477         * config/t-sol2 (sol2-c.o, sol2.o): Update.
20478         * config/t-darwin (darwin.o, darwin-c.o, darwin-driver.o): Update.
20479         * config/spu/t-spu-elf (spu-c.o): Update.
20480         (spu.o): Remove.
20481         * config/sh/t-symbian (sh-c.o): Update.
20482         (symbian.o): Update.
20483         * config/sh/t-sh (sh-c.o): Update.
20484         * config/score/t-score-elf (score7.o, score3.o): Update.
20485         * config/rs6000/x-rs6000 (driver-rs6000.o): Update.
20486         * config/rs6000/x-darwin64 (host-ppc64-darwin.o): Update.
20487         * config/rs6000/x-darwin (host-ppc-darwin.o): Update.
20488         * config/rs6000/t-rs6000 (rs6000-c.o): Update.
20489         (rs6000.o): Remove.
20490         * config/m68k/t-uclinux (generated_files): Add sysroot-suffix.h.
20491         * config/m32c/t-m32c (m32c-pragma.o): Update.
20492         * config/ia64/t-ia64 (ia64-c.o): Update.
20493         * config/i386/x-mingw32 (host-mingw32.o): Update.
20494         * config/i386/x-i386 (driver-i386.o): Update.
20495         * config/i386/x-darwin (host-i386-darwin.o): Update.
20496         * config/i386/x-cygwin (host-cygwin.o): Update.
20497         * config/i386/t-nwld (nwld.o): Update.
20498         * config/i386/t-netware (netware.o): Update.
20499         * config/i386/t-interix (winnt.o): Update.
20500         * config/i386/t-cygwin (cygwin1.o, cygwin2.o): Update.
20501         * config/i386/t-cygming (winnt.o, winnt-cxx.o, winnt-stubs.o,
20502         msformat-c.o): Update.
20503         * config/bfin/t-bfin-linux (generated_files): Add
20504         linux-sysroot-suffix.h.
20505         * config/arm/t-wince-pe (pe.o): Update.
20506         * config/arm/t-strongarm-pe (pe.o): Update.
20507         * config/arm/t-pe (pe.o): Update.
20508         * config/arm/t-arm (arm-c.o): Update.
20509         * doc/install.texi (Prerequisites): Require make 3.80.
20510         * Makefile.in: Remove .o targets.
20511         (CCDEPMODE, DEPDIR, depcomp, BUILD_DEPMODE): New variables.
20512         (OBSTACK_H, FIBHEAP_H, PARTITION_H, MD5_H, BCONFIG_H): Remove.
20513         (simple_generated_h, simple_generated_c): Move earlier.
20514         (generated_files): New variable.
20515         (TARGET_H, MACHMODE_H, HOOKS_H, HOSTHOOKS_DEF_H, LANGHOOKS_DEF_H,
20516         TARGET_DEF_H, RTL_BASE_H, RTL_H, PARAMS_H, BUILTINS_DEF, TREE_H,
20517         BASIC_BLOCK_H, GCOV_IO_H, COVERAGE_H, DEMANGLE_H, RECOG_H,
20518         ALIAS_H, EMIT_RTL_H, FLAGS_H, FUNCTION_H, EXPR_H, OPTABS_H,
20519         REGS_H, RA_H, RESOURCE_H, SCHED_INT_H, INTEGRATE_H, CFGLAYOUT_H,
20520         CFGLOOP_H, IPA_UTILS_H, IPA_REFERENCE_H, IPA_TYPE_ESCAPE_H,
20521         CGRAPH_H, DF_H, RESOURCE_H, DDG_H, GCC_H, GGC_H, TIMEVAR_H,
20522         INSN_ATTR_H, C_COMMON_H, C_PRAGMA_H, C_TREE_H, SYSTEM_H,
20523         PREDICT_H, DECNUM_H, MKDEPS_H, SYMTAB_H, TREE_DUMP_H,
20524         TREE_GIMPLE_H, TREE_FLOW_H, TREE_SSA_LIVE_H, PRETTY_PRINT_H,
20525         DIAGNOSTIC_H, C_PRETTY_PRINT_H, SCEV_H, LAMBDA_H, TREE_DATA_REF_H,
20526         VARRAY_H, TREE_INLINE_H, REAL_H, DBGCNT_H, EBIMAP_H): Remove.
20527         (.c.o): Remove.
20528         (COMPILE.base, COMPILE): New variables.
20529         (%.o): New pattern rule.
20530         (ALL_HOST_OBJS): New variable.
20531         (xgcc$(exeext), cpp$(exeext)): Remove extra version.o.
20532         (dummy-checksum.o, cc1-checksum.o): Remove.
20533         (DRIVER_SHLIB): New variable.
20534         (DRIVER_DEFINES): Use it.
20535         (gencondmd.c): Move out of build/.
20536         (s-conditions): Update.
20537         (BUILDCOMPILE.base, BUILDCOMPILE): New variables.
20538         (ALL_BUILD_OBJS): Likewise.
20539         (build/%.o): Use BUILDCOMPILE.
20540         (build/ggc-none.o, build/ggc-none.o, build/min-insn-modes.o,
20541         build/print-rtl.o, build/read-rtl.o, build/rtl.o, build/vec.o,
20542         build/gencondmd.o, build/genattrtab.o, build/genautomata.o,
20543         build/gencheck.o, build/gencodes.o, build/genconditions.o,
20544         build/genconfig.o, build/genconstants.o, build/genemit.o,
20545         build/genextract.o, build/genflags.o, build/genmddeps.o,
20546         build/genopinit.o, build/genoutput.o, build/genpeep.o,
20547         build/genpreds.o, build/genrecog.o, build/gcov-iov.o,
20548         build/gen-protos.o, build/scan.o, build/fix-header.o,
20549         build/scan-decls.o): Simplify.
20550         (collect2.o, c-opts.o, gcc.o, gccspec.o, gcc-options.o,
20551         cppdefault.o, protoize.o, unprotoize.o, intl.o, version.o,
20552         prefix.o, toplev.o): Reduce to variable setting.
20553         (libbackend.o): Use COMPILE.  Remove most dependencies.  Move later.
20554         ($(out_object_file), gcc-options.o): New targets.
20555         ($(ALL_HOST_OBJS)): New target.  Include dependency files.
20556         * configure: Rebuilt.
20557         * configure.ac: Call ZW_CREATE_DEPDIR, ZW_PROG_COMPILER_DEPENDENCIES.
20558         * doc/sourcebuild.texi (Front End Directory): Document new variable.
20559
20560 2008-03-25  Douglas Gregor  <doug.gregor@gmail.com>
20561
20562         * c-common.c (c_sizeof_or_alignof_type): If we're not allowed to
20563         complain when we hit an error, return ERROR_MARK_NODE.
20564
20565 2008-03-25  Naveen.H.S  <naveen.hs@kpitcummins.com>
20566
20567         * config/sh/constraints.md (Pso, Psz): New constraints.
20568         * config/sh/sh.c (print_operand): Add %V and %W operand codes.
20569         * config/sh/sh.md (*andsi3_bclr, *iorsi3_bset): New insns.
20570
20571 2008-03-25  Naveen.H.S  <naveen.hs@kpitcummins.com>
20572
20573         * config/sh/sh.c (sh_expand_t_scc): Emit movrt for SH2A if possible.
20574         * config/sh/sh.md (xorsi3_movrt, movrt): New insns.
20575
20576 2008-03-25  Naveen.H.S  <naveen.hs@kpitcummins.com>
20577
20578         * config/sh/sh.md (prefetch): Add condition for SH2A target.
20579         (prefetch_sh2a): New.
20580
20581 2008-03-25  Jayant Sonar  <Jayant.sonar@kpitcummins.com>
20582             Naveen.H.S  <naveen.hs@kpitcummins.com>
20583
20584         * config/sh/constraints.md (I28): New constraint.
20585         * config/sh/sh.c (broken_move): Add support for movi20s.
20586         * config/sh/sh.md (movsi_ie): Add the alternative for movi20s.
20587
20588 2008-03-25  Anil Paranjape  <anil.paranjape@kpitcummins.com>
20589             Jayant Sonar  <Jayant.sonar@kpitcummins.com>
20590             Naveen.H.S  <naveen.hs@kpitcummins.com>
20591
20592         * config/sh/sh.c (SH_ATTRIBUTES): Define.
20593         (SYMBOL_FLAG_FUNCVEC_FUNCTION): Define.
20594         (print_operand): Handle resbank in %@ operand code.
20595         (sh_encode_section_info): New.
20596         (push_regs): Add conditions for resbank.
20597         (sh_expand_epilogue): Likewise.
20598         (sh_insert_attributes): Likewise.
20599         (sh_attribute_table): Likewise.
20600         (sh_handle_resbank_handler_attribute): New.
20601         (sh2a_handle_function_vector_handler_attribute): New.
20602         (sh2a_is_function_vector_call): New.
20603         (sh2a_get_function_vector_number): New.
20604         (sh2a_function_vector_p): New.
20605         (sh_cfun_resbank_handler_p): New.
20606         * config/sh/sh.md (calli): Emit jsr/n if possible.
20607         (calli_tbr_rel): New.
20608         (calli_pcrel): Emit jsr/n if possible.
20609         (return_i): Emit rts/n if possible.
20610         (call_valuei_tbr_rel): New.
20611         (call_valuei_pcrel): Add condition for SH2A target.
20612         (call_value): Likewise.
20613         * config/sh/sh-protos.h (sh_cfun_resbank_handler_p): Declare.
20614         (sh2a_get_function_vector_number): Likewise.
20615         (sh2a_is_function_vector_call): Likewise.
20616         * doc/extend.texi: Document TBR relative addressing of SH2A.
20617         (resbank): Add description for SH2A.
20618
20619 2008-03-24  Richard Guenther  <rguenther@suse.de>
20620
20621         PR c/22371
20622         * gimplify.c (gimplify_modify_expr): For frontend type-correct
20623         pointer assignments change conversions according to middle-end rules.
20624         (gimplify_modify_expr_rhs): Deal with NULL TARGET_EXPR_INITIAL.
20625         * configure.ac: Include type checking in yes.
20626         * configure: Regenerate.
20627
20628 2008-03-24  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
20629
20630         * diagnostic.c (diagnostic_count_diagnostic): Delete.
20631         (diagnostic_report_diagnostic): Update. Handle ICEs here.
20632
20633 2008-03-24  Nathan Sidwell  <nathan@codesourcery.com>
20634
20635         * gthr-vxworks.h (UNUSED): Define.
20636
20637 2008-03-23  H.J. Lu  <hongjiu.lu@intel.com>
20638
20639         * config/i386/i386.h (STATIC_CHAIN_REGNUM): Use R10_REG and CX_REG.
20640
20641 2008-03-23  Zuxy Meng <zuxy.meng@gmail.com>
20642
20643         * doc/extend.texi (Function Attributes): Add missing comma in the
20644         example of the "alloc_size" attribute.
20645
20646 2008-03-23  Uros Bizjak  <ubizjak@gmail.com>
20647
20648         Revert:
20649         2008-03-05  H.J. Lu  <hongjiu.lu@intel.com>
20650
20651         * config/i386/i386-modes.def: Use 4 byte alignment on DI for
20652         32bit host.
20653
20654         2008-03-19  Uros Bizjak  <ubizjak@gmail.com>
20655
20656         PR target/35496
20657         * stor-layout.c (update_alignment_for_field): Set minimum alignment
20658         of the underlying type of a MS bitfield layout to the natural
20659         alignment of the type.
20660
20661         2008-03-22  Uros Bizjak  <ubizjak@gmail.com>
20662
20663         * config/i386/i386.c (assign_386_stack_local): Align DImode slots
20664         to their natural alignment to avoid store forwarding stalls.
20665
20666 2008-03-22  Richard Guenther  <rguenther@suse.de>
20667
20668         * tree-cfg.c (verify_expr): Recurse again for invariant addresses.
20669         For PHI nodes verify the address is invariant.
20670         * tree-ssa-ccp.c (ccp_decl_initial_min_invariant): Remove.
20671         (get_symbol_constant_value): Use is_gimple_min_invariant.
20672         (maybe_fold_stmt_indirect): Likewise.
20673
20674 2008-03-22  Richard Sandiford  <rsandifo@nildram.co.uk>
20675
20676         PR rtl-optimization/33927
20677         * Makefile.in (dse.o): Depend on $(TM_P_H).
20678         * expr.h (extract_low_bits): Declare.
20679         * expmed.c (extract_low_bits): New function.
20680         * rtlhooks.c (gen_lowpart_general): Generalize SUBREG handling.
20681         * dse.c: Include tm_p.h.
20682         (find_shift_sequence): Remove the read_reg argument and return the
20683         read value.  Emit the instructions instead of returning them.
20684         Iterate on new_mode rather than calculating it each time.
20685         Check MODES_TIEABLE_P.  Use simplify_gen_subreg to convert the
20686         source to NEW_MODE and extract_low_bits to convert the shifted
20687         value to READ_MODE.
20688         (replace_read): Allow the load and store to have different mode
20689         classes.  Use extract_low_bits when SHIFT == 0.  Create the shift
20690         or extraction instructions before trying the replacement.  Update
20691         dump-file code accordingly, avoiding use of REGNO (store_info->rhs).
20692
20693 2008-03-22  Uros Bizjak  <ubizjak@gmail.com>
20694
20695         * config/i386/i386.c (assign_386_stack_local): Align DImode slots
20696         to their natural alignment to avoid store forwarding stalls.
20697
20698 2008-03-21  Andrew Pinski  <andrew_pinski@playstation.sony.com>
20699
20700         PR target/27946
20701         * config/rs6000/rs6000.md (floatdidf2): Discouraging fprs and
20702         encouraging but not allowing gprs for input;
20703         change the input constraint to !f#r.
20704         (fix_truncdfdi2): Discouraging fprs and encouraging but not allowing
20705         gprs for output;
20706         change the output constraint to !f#r.
20707
20708 2008-03-21  Uros Bizjak  <ubizjak@gmail.com>
20709
20710         PR target/13958
20711         * config/i386/i386.md ("*floatunssi<mode2>_1"): New pattern with
20712         corresponding post-reload splitters.
20713         ("floatunssi<mode>2"): Expand to unsigned_float x87 insn pattern
20714         when x87 FP math is selected.
20715         * config/i386/i386-protos.h (ix86_expand_convert_uns_sixf_sse):
20716         New function prototype.
20717         * config/i386/i386.c (ix86_expand_convert_uns_sixf_sse): New
20718         unreachable function to ease macroization of insn patterns.
20719
20720 2008-03-21  Martin Jambor  <mjambor@suse.cz>
20721
20722         * tree-data-ref.c (dump_data_dependence_relation): Avoid data
20723         reference dumps if ddr is NULL or dependence is unknown.
20724
20725 2008-03-20  Kaz Kojima  <kkojima@gcc.gnu.org>
20726
20727         * config/sh/linux-atomic.asm (ATOMIC_TEST_AND_SET): Take
20728         unsigned extension into account.
20729         (ATOMIC_COMPARE_AND_SWAP): Likewise.
20730         (ATOMIC_FETCH_AND_OP, ATOMIC_FETCH_AND_COMBOP): Likewise.
20731         Do computations on a scratch register.
20732
20733 2008-03-21  Richard Guenther  <rguenther@suse.de>
20734
20735         * tree-scalar-evolution.c (chrec_contains_symbols_defined_in_loop):
20736         Use is_gimple_min_invariant instead of TREE_INVARIANT.
20737         * tree-ssa-loop-ivopts.c (force_expr_to_var_cost): Likewise.
20738         * tree-ssa-dom.c (record_equality): Likewise.
20739         * tree-inline.c (copy_body_r): Likewise.
20740         * tree-ssa-pre.c (make_values_for_stmt): Remove test for
20741         TREE_INVARIANT.
20742
20743 2008-03-20  Kaz Kojima  <kkojima@gcc.gnu.org>
20744
20745         * config/sh/sh.c (split_branches): Pass zero to redirect_jump
20746         as 'delete_unused' argument.
20747
20748 2008-03-20  Richard Guenther  <rguenther@suse.de>
20749
20750         * tree-ssa-forwprop.c (forward_propagate_addr_expr_1): Remove
20751         special casing of constant qualifiers.
20752         * tree-ssa.c (useless_type_conversion_p_1): Instead do not
20753         care about them in general.
20754         * tree-ssa-ccp.c (ccp_fold): Addresses are constant or not
20755         regardless of their type.
20756         (fold_stmt_r): Forcefully fold *& if we end up with that.
20757
20758 2008-03-20  Paul Brook  <paul@codesourcery.com>
20759
20760         * config.gcc (arm*-*-uclinux*): Remove duplicate arm/uclinux-elf.h.
20761         * config/arm/uclinux-eabi.h (SUBTARGET_EXTRA_LINK_SPEC): Add extra
20762         linker flags.
20763         * config/arm/bpabi.h (SUBTARGET_EXTRA_LINK_SPEC): Provide default
20764         definition.
20765         (LINK_SPEC): Use SUBTARGET_EXTRA_LINK_SPEC.
20766         * config/arm/unwind-arm.h (_Unwind_decode_target2): Add uClinux.
20767
20768 2008-03-20  Volker Reichelt  <v.reichelt@netcologne.de>
20769
20770         * common.opt (Wmudflap): New option.
20771         * tree-mudflap.c (mf_xform_derefs_1): Guard warning by OPT_Wmudflap.
20772         (mx_register_decls): Likewise.
20773         (mudflap_finish_file): Likewise.
20774         * doc/invoke.texi: Document -Wno-mudflap.
20775
20776 2008-03-20  Kai Tietz  <kai.tietz@onevision.com>
20777
20778         * c-format.c (replace_format_name_to_system_name): New.
20779         (cmp_attribs): New.
20780         (convert_format_name_to_system_name): New.
20781         (decode_format_attr): Add use of convert_format_name_to_system_name.
20782         (format_types_orig): Add gnu_ prefix to names.
20783         (check_format_info_main): Special treating of \0 escaped names for
20784         supporting multi-character format specifiers as I32, I64.
20785         (TARGET_OVERRIDES_FORMAT_ATTRIBUTES): Use of user defined attributes.
20786         (gnu_target_overrides_format_attributes): New.
20787         * c-format.h: Add structure target_ovr_attr to hold
20788         system specific formatter names.
20789         * config.gcc: Add for x86&x86_64 cygwin and mingw32 targets the
20790         msformat-c.o file to c_target_objs and cxx_target_objs.
20791         * config/i386/mingw32.h (TARGET_OVERRIDES_FORMAT_ATTRIBUTES): New.
20792         (TARGET_OVERRIDES_FORMAT_ATTRIBUTES_COUNT): New.
20793         (TARGET_N_FORMAT_TYPES): New.
20794         * config/i386/msformat-c.c: New.
20795         * config/i386/t-cygming: Add build rule for msformat-c.o.
20796         * doc/extend.texi: Add new format names gnu_* and ms_* and
20797         further details.
20798         * doc/tm.texi: (TARGET_OVERRIDES_FORMAT_ATTRIBUTES): New.
20799
20800 2008-03-20  Ira Rosen  <irar@il.ibm.com>
20801
20802         * doc/invoke.texi (-O3): Add -ftree-vectorize to the list of
20803         optimizations turned on under -O3.
20804         (ftree-vectorize): Add that the flag is turned on with -O3.
20805
20806 2008-03-20  Ben Elliston  <bje@au.ibm.com>
20807
20808         * regmove.c (try_auto_increment): Fix spelling error in comment.
20809         * final.c (final_scan_insn): Likewise.
20810
20811 2008-03-20  Uros Bizjak  <ubizjak@gmail.com>
20812
20813         PR target/14552
20814         * config/i386/mmx.md (*mov<mode>_internal_rex64"): Adjust register
20815         allocator preferences for "y" and "r" class registers.
20816         ("*mov<mode>_internal"): Ditto.
20817         ("*movv2sf_internal_rex64"): Ditto.
20818         ("*movv2sf_internal"): Ditto.
20819
20820 2008-03-19  Michael Matz  <matz@suse.de>
20821
20822         PR middle-end/35616
20823         * calls.c (expand_call): Check overlap of arguments with call
20824         address for sibcalls.
20825
20826 2008-03-19  Uros Bizjak  <ubizjak@gmail.com>
20827
20828         PR target/35496
20829         * stor-layout.c (update_alignment_for_field): Set minimum alignment
20830         of the underlying type of a MS bitfield layout to the natural
20831         alignment of the type.
20832
20833 2008-03-19  Jan Hubicka  <jh@suse.cz>
20834
20835         PR other/35094
20836         * toplev.c (decode_d_option): Handle all CPP flags.
20837         * tree-vrp.c: Update tree_pass descriptors.
20838         * regrename.c: Update tree_pass descriptors.
20839         * fwprop.c: Update tree_pass descriptors.
20840         * doc/invoke.texi: Remove documentation of dropped -d? flags.
20841         * tree-into-ssa.c: Update tree_pass descriptors.
20842         * tree-dump.c: Update tree_pass descriptors.
20843         * tree-complex.c: Update tree_pass descriptors.
20844         * tree-dump.h: Update tree_pass descriptors.
20845         * see.c: Update tree_pass descriptors.
20846         * cgraphbuild.c: Update tree_pass descriptors.
20847         * tracer.c: Update tree_pass descriptors.
20848         * tree-loop-distribution.c: Update tree_pass descriptors.
20849         * cgraph.c: Update tree_pass descriptors.
20850         * postreload-gcse.c: Update tree_pass descriptors.
20851         * postreload.c: Update tree_pass descriptors.
20852         * tree-ssa-loop-ch.c: Update tree_pass descriptors.
20853         * tree-tailcall.c: Update tree_pass descriptors.
20854         * tree-pass.h (tree_opt_pass): Rename to ...
20855         (opt_pass) ... this one; add "type" field and remove letter field.
20856         (gimple_opt_pass, rtl_opt_pass, simple_ipa_opt_pass): New.
20857         (execute_pass_list, execute_ipa_pass_list, all_passes, all_ipa_passes,
20858         all_lowering_passes): Update declaration.
20859         * ipa-cp.c: Update tree_pass descriptors.
20860         * final.c: Update tree_pass descriptors.
20861         * omp-low.c: Update tree_pass descriptors.
20862         * tree-ssa-dse.c: Update tree_pass descriptors.
20863         * ipa-reference.c: Update tree_pass descriptors.
20864         * tree-ssa-uncprop.c: Update tree_pass descriptors.
20865         * auto-inc-dec.c: Update tree_pass descriptors.
20866         * reorg.c: Update tree_pass descriptors.
20867         * cgraphunit.c: Update tree_pass descriptors.
20868         * tree-ssa-copyrename.c: Update tree_pass descriptors.
20869         * tree-ssa-ccp.c: Update tree_pass descriptors.
20870         * df-core.c: Update tree_pass descriptors.
20871         * mode-switching.c: Update tree_pass descriptors.
20872         * tree-nomudflap.c: Update tree_pass descriptors.
20873         * modulo-sched.c: Update tree_pass descriptors.
20874         * ipa-pure-const.c: Update tree_pass descriptors.
20875         * cse.c: Update tree_pass descriptors.
20876         * web.c: Update tree_pass descriptors.
20877         * tree-stdarg.c: Update tree_pass descriptors.
20878         * tree-ssa-math-opts.c: Update tree_pass descriptors.
20879         * tree-ssa-dom.c: Update tree_pass descriptors.
20880         * tree-nrv.c: Update tree_pass descriptors.
20881         * tree-ssa-alias.c: Update tree_pass descriptors.
20882         * loop-init.c: Update tree_pass descriptors.
20883         * gimple-low.c: Update tree_pass descriptors.
20884         * ipa-inline.c: Update tree_pass descriptors.
20885         * tree-ssa-sink.c: Update tree_pass descriptors.
20886         * global.c: Update tree_pass descriptors.
20887         * ifcvt.c: Update tree_pass descriptors.
20888         * jump.c: Update tree_pass descriptors.
20889         * predict.c: Update tree_pass descriptors.
20890         * tree-ssa-loop.c: Update tree_pass descriptors.
20891         * recog.c: Update tree_pass descriptors.
20892         * dse.c: Update tree_pass descriptors.
20893         * tree-ssa-ifcombine.c: Update tree_pass descriptors.
20894         * tree-eh.c: Update tree_pass descriptors.
20895         * regmove.c: Update tree_pass descriptors.
20896         * local-alloc.c
20897         * function.c: Update tree_pass descriptors.
20898         * tree-vectorizer.c: Update tree_pass descriptors.
20899         * gcse.c: Update tree_pass descriptors.
20900         * ipa-type-escape.c: Update tree_pass descriptors.
20901         * tree-if-conv.c: Update tree_pass descriptors.
20902         * init-regs.c: Update tree_pass descriptors.
20903         * ipa.c: Update tree_pass descriptors.
20904         * tree-ssa-phiopt.c: Update tree_pass descriptors.
20905         * rtl-factoring.c: Update tree_pass descriptors.
20906         * lower-subreg.c: Update tree_pass descriptors.
20907         * bt-load.c: Update tree_pass descriptors.
20908         * tree-dfa.c: Update tree_pass descriptors.
20909         * except.c: Update tree_pass descriptors.
20910         * emit-rtl.c: Update tree_pass descriptors.
20911         * cfgexpand.c: Update tree_pass descriptors.
20912         * tree-cfgcleanup.c: Update tree_pass descriptors.
20913         * cfgcleanup.c: Update tree_pass descriptors.
20914         * tree-ssa-pre.c: Update tree_pass descriptors.
20915         * tree-sra.c: Update tree_pass descriptors.
20916         * tree-mudflap.c: Update tree_pass descriptors.
20917         * tree-ssa-copy.c: Update tree_pass descriptors.
20918         * cfglayout.c: Update tree_pass descriptors.
20919         * tree-ssa-forwprop.c: Update tree_pass descriptors.
20920         * tree-ssa-dce.c: Update tree_pass descriptors.
20921         * tree-ssa.c: Update tree_pass descriptors.
20922         * regclass.c: Update tree_pass descriptors.
20923         * integrate.c: Update tree_pass descriptors.
20924         * tree-optimize.c: Update tree_pass descriptors.
20925         * tree-ssa-phiprop.c: Update tree_pass descriptors.
20926         * tree-object-size.c: Update tree_pass descriptors.
20927         * combine.c: Update tree_pass descriptors.
20928         * tree-outof-ssa.c: Update tree_pass descriptors.
20929         * bb-reorder.c: Update tree_pass descriptors.
20930         * stack-ptr-mod.c: Update tree_pass descriptors.
20931         * var-tracking.c: Update tree_pass descriptors.
20932         * tree-profile.c: Update tree_pass descriptors.
20933         * tree-vect-generic.c: Update tree_pass descriptors.
20934         * reg-stack.c: Update tree_pass descriptors.
20935         * sched-rgn.c: Update tree_pass descriptors.
20936         * tree-ssa-structalias.c: Update tree_pass descriptors.
20937         * tree-cfg.c: Update tree_pass descriptors.
20938         * passes.c (current_pass): Update declaration.
20939         (finish_optimization_passes): Update.
20940         (all_passes, all_ipa_passes, all_lowering_passes): Update declaration.
20941         (register_one_dump_file, register_dump_files_1, next_pass_1):
20942         Update arguments.
20943         (init_optimization_passes): Update handling of new types.
20944         (execute_one_pass, execute_pass_list, execute_ipa_pass_list): Update.
20945         * ipa-struct-reorg.c: Update tree_pass descriptors.
20946         * tree-ssa-reassoc.c: Update tree_pass descriptors.
20947         * combine-stack-adj.c: Update tree_pass descriptors.
20948         * cfgrtl.c: Update tree_pass descriptors.
20949         * dce.c: Update tree_pass descriptors.
20950         * tree-ssanames.c: Update tree_pass descriptors.
20951
20952 2008-03-19  Richard Guenther  <rguenther@suse.de>
20953
20954         PR middle-end/35609
20955         * tree-ssa.c (walk_data): New structure.
20956         (warn_uninitialized_var): If not always_executed warn with "maybe"
20957         instead of "is".
20958         (execute_early_warn_uninitialized): Compute post-dominators.
20959         Initialize always_executed before processing each basic block.
20960
20961 2008-03-18  Mikulas Patocka  <mikulas@artax.karlin.mff.cuni.cz>
20962
20963         PR target/35504
20964         * config/i386/i386.c (x86_this_parameter): Calculate correct location
20965         of "this" pointer when "regparm = N" or "fastcall" is in effect.
20966
20967 2008-03-18  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
20968
20969         * doc/include/texinfo.tex: Update to version 2008-03-17.10.
20970
20971 2008-03-18  Paolo Bonzini  <bonzini@gnu.org>
20972
20973         * expr.c (store_expr): Assume lang_hooks.reduce_bit_field_operations
20974         is true.
20975         (expand_expr_real_1) <REDUCE_BIT_FIELD>: Don't look at ignore.
20976         (expand_expr_real_1): Assume lang_hooks.reduce_bit_field_operations
20977         is true.  Add "&& !ignore" condition to reduce_bit_field.  Modify
20978         target after ignore has been set, and move there also the commputation
20979         of subtarget and original_target.
20980         * langhooks-def.h (LANG_HOOKS_REDUCE_BIT_FIELD_OPERATIONS): Delete.
20981         (LANG_HOOKS_INITIALIZER): Remove it.
20982         * langhooks.h (struct lang_hooks): Remove reduce_bit_field_operations.
20983
20984 2008-03-18  Richard Guenther  <rguenther@suse.de>
20985
20986         * tree-ssa-sccvn.c (visit_reference_op_load): If the lookup
20987         found an expression with constants, note that in the VN for the lhs.
20988         * tree-ssa-pre.c (eliminate): Visit COND_EXPR statements and
20989         fold them to constants if possible.  Run cleanup_cfg if done so.
20990         (execute_pre): Return todo.
20991         (do_pre): Likewise.
20992         (execute_fre): Likewise.
20993         * tree-ssa-forwprop.c (can_propagate_from): Allow propagation
20994         of constants.
20995         (get_prop_source_stmt): Look through pointer conversions.
20996
20997 2008-03-18  Jan Hubicka  <jh@suse.cz>
20998
20999         * tree-pretty-print.c: Include predict.h.
21000         (dump_generic_node): Dump predictor.
21001         * tree.h (PREDICT_EXPR_OUTCOME, PREDICT_EXPR_PREDICTION): Update.
21002         * tree-gimple.c (is_gimple_stmt): Add PREDICT_EXPR.
21003         * gimple-low.c (lower_stmt): Likewise.
21004         * expr.c (expand_expr_real): Likewise.
21005         * predict.c (tree_bb_level_predictions): Use PREDICT_EXPRs and remove
21006         them.
21007         (build_predict_expr, build_predict_expr): New.
21008         * predict.h (predictor_name, build_predict_expr): Update.
21009         * c-typeck.c (c_finish_bc_stmt): Add prediction.
21010         * gimplify.c (gimplify_expr): Add PREDICT_EXPR.
21011         * predict.def (PRED_CONTINUE): Update hitrate.
21012         * tree.def (PREDICT_EXPR): Define.
21013         * tree-ssa-dce.c (mark_stmt_if_obviously_necessary): Mark PREDICT_EXPR;
21014         do not handle BIND_EXPR.
21015         * tree-inline.c (estimate_num_insns_1): PREDICT_EXPR is free.
21016         * tree-cfg.c (verify_gimple_stmt): PREDICT_EXPR is valid.
21017         * tree-ssa-operands.c (get_expr_operands): PREDICT_EXPR takes no
21018         operands.
21019
21020 2008-03-18  Michael Matz  <matz@suse.de>
21021
21022         * gcov-io.h (__gcov_merge_ior, __gcov_fork): Mark hidden.
21023
21024 2008-03-18  Richard Guenther  <rguenther@suse.de>
21025
21026         * tree-gimple.h (is_gimple_invariant_address): Declare.
21027         (is_gimple_constant): Likewise.
21028         * tree-gimple.c (is_gimple_constant): New function.
21029         (is_gimple_invariant_address): Likewise.
21030         (is_gimple_min_invariant): Implement in terms of is_gimple_constant
21031         and is_gimple_invariant_address.
21032         * tree-ssa-loop-niter.c (expand_simple_operations): Revert
21033         previous change.
21034         * tree-data-ref.c (get_references_in_stmt): A SSA_NAME is not
21035         an addressable base.
21036
21037 2008-03-18  Jakub Jelinek  <jakub@redhat.com>
21038
21039         PR middle-end/35611
21040         * gimplify.c (gimplify_expr): Gimplify second operand of
21041         OMP_ATOMIC_LOAD.
21042
21043 2008-03-17  Richard Guenther  <rguenther@suse.de>
21044
21045         PR tree-optimization/19637
21046         * fold-const.c (fold_unary): Remove restrictions of removing
21047         intermediate pointer-conversions (P2)(P1)P0.
21048         * tree-ssa-ccp.c (maybe_fold_stmt_addition): Recover from
21049         conversion to void pointer.
21050         (get_maxval_strlen): Handle addresses of the form &(*p)[0].
21051
21052 2008-03-16  James E. Wilson  <wilson@tuliptree.org>
21053
21054         PR debug/31510
21055         * dbxout.c (dbxout_expand_expr, case VAR_DECL): Return NULL for
21056         emulated thread local variables.
21057
21058 2008-03-16  Richard Guenther  <rguenther@suse.de>
21059
21060         PR middle-end/35607
21061         * tree-ssa-loop-niter.c (expand_simple_operations): Do not
21062         expand TREE_INVARIANT operations that are not gimple invariant.
21063
21064 2008-03-16  Hans-Peter Nilsson  <hp@axis.com>
21065
21066         * doc/extend.texi (Alignment): Say that the ABI controls
21067         the __alignof__ for non-strict-alignment targets rather
21068         than being a recommendation.
21069
21070 2008-03-15  Paul Brook  <paul@codesourcery.com>
21071
21072         * config/arm/arm.c (arm_unwind_emit): Suppress unused unwinding
21073         annotations.
21074         (arm_output_fn_unwind): Mark functions that can not be unwound.
21075
21076 2008-03-15  Paul Brook  <paul@codesourcery.com>
21077
21078         * config/arm/arm.c (arm_rtx_costs_1): Add costs for ARMv6 value
21079         extension instructions.
21080
21081 2008-03-15  Richard Guenther  <rguenther@suse.de>
21082
21083         * tree-ssa-ccp.c (ccp_fold): Also read from constant values
21084         and fold constant aggregate refs.
21085         (fold_const_aggregate_ref): Handle string constants
21086         and constructors in ARRAY_REFs.  Handle INDIRECT_REF.
21087         (evaluate_stmt): Simplify now that ccp_fold folds constant
21088         aggregate refs.
21089
21090 2008-03-15  Paul Brook  <paul@codesourcery.com>
21091
21092         * config/arm/arm.md (insv): Use gen_insv_t2 and gen_insv_zero.
21093         (extzv): Use gen_extzv_t2.
21094         (insv_t2, insv_zero, extv, extzv_t2): New patterns.
21095
21096 2008-03-15  Richard Guenther  <rguenther@suse.de>
21097
21098         * tree-ssa-ccp.c (get_symbol_constant_value): Export.
21099         (fold_const_aggregate_ref): Likewise.
21100         (get_value): Return NULL if we don't have any values.
21101         (ccp_finalize): Set const_val to NULL after freeing it.
21102         * tree-flow.h (get_symbol_constant_value): Declare.
21103         (fold_const_aggregate_ref): Likewise.
21104         * tree-ssa-sccvn.c (try_to_simplify): Use them.
21105
21106 2008-03-15  Richard Guenther  <rguenther@suse.de>
21107
21108         PR middle-end/35593
21109         * tree-ssa-ccp.c (maybe_fold_offset_to_array_ref): Make sure
21110         to not produce negative array indices if not allowed.  Add
21111         parameter to indicate that.
21112         (maybe_fold_offset_to_component_ref): Allow negative array
21113         indices only for the first member of a structure.
21114         (maybe_fold_offset_to_reference): Allow negative array indices.
21115         (maybe_fold_stmt_addition): Likewise.
21116
21117 2008-03-15  Bjoern Haase  <bjoern.m.haase@web.de>
21118             Anatoly Sokolov <aesok@post.ru>
21119
21120         * config/avr/avr.c (avr_arch_types): Add avr6 entry.
21121         (avr_arch): Add ARCH_AVR6.
21122         (avr_mcu_types): Add 'atmega2560' and 'atmega2561' entry.
21123         (initial_elimination_offset): Initialize and use 'avr_pc_size'
21124         instead of fixed value 2.
21125         (print_operand_address): Use gs() asm specifier instead of pm().
21126         (avr_assemble_integer): (Ditto.).
21127         (avr_output_addr_vec_elt): (Ditto.).
21128         (print_operand): Handle "!" code.
21129         * config/avr/avr.h (TARGET_CPU_CPP_BUILTINS): Add
21130         __AVR_3_BYTE_PC__, __AVR_2_BYTE_PC__ and __AVR_HAVE_JMP_CALL__.
21131         (AVR_HAVE_EIJMP_EICALL): Define.
21132         (AVR_3_BYTE_PC): Redefine.
21133         (AVR_2_BYTE_PC): (Ditto.).
21134         (PRINT_OPERAND_PUNCT_VALID_P): Add '!' code.
21135         (LINK_SPEC): Add atmega2560 and atmega2561.
21136         (CRT_BINUTILS_SPEC): Add atmega2560 (crtm2560.o) and atmega2561
21137         (crtm2561.o).
21138         * config/avr/avr.md (call_insn): Use eicall instead of icall
21139         for 3 byte PC devices.
21140         (call_value_insn): (Ditto.).
21141         (*tablejump_enh): Use eijmp instead of ijmp for 3 byte PC devices.
21142         (indirect_jump): Use only for for 2 byte PC devices.
21143         (*tablejump): (Ditto.).
21144         (*indirect_jump_avr6): Add insn.
21145         (*tablejump_rjmp): Don't use for 3 byte PC devices.
21146         * config/avr/libgcc.S (__prologue_saves__): Use eijmp
21147         instead of ijmp for 3 byte PC devices.
21148         (__tablejump2__): (Ditto.).
21149         * config/avr/t-avr (MULITLIB_OPTIONS): Add avr6 architecture.
21150         (MULITLIB_DIRNAMES): (Ditto.).
21151         (MULTILIB_MATCHES): Add atmega2560 and atmega2561 to list.
21152
21153 2008-03-15  Uros Bizjak  <ubizjak@gmail.com>
21154
21155         * config/i386/mmx.md ("sse2_umulv1siv2di3"): Rename from
21156         "sse2_umulsidi3".  Use V1DI mode for operand 0.
21157         ("mmx_psadbw"): Use V1DI mode for operand 0.
21158         * config/i386/i386-modes.def (V1SI): New vector mode.
21159         * config/i386/i386.c (struct builtin_description)
21160         [IX86_BUILTIN_PMULUDQ]: Use CODE_FOR_sse2_umulv1siv1di3.
21161         (v1di_ftype_v8qi_v8qi): Rename from di_ftype_v8qi_v8qi.
21162         (v1di_ftype_v2si_v2si): Rename from di_ftype_v2si_v2si.
21163         (ix86_init_mmx_sse_builtins) [__builtin_ia32_psadbw]: Use
21164         v1di_ftype_v8qi_v8qi type.
21165         [__builtin_ia32_pmuludq]: Use v1di_ftype_v2si_v2si type.
21166
21167         * doc/extend.texi (X86 Built-in Functions) [__builtin_ia32_psadbw,
21168         __builtin_ia32_pmuludq]: Fix the mode of return value.
21169
21170 2008-03-15  Richard Guenther  <rguenther@suse.de>
21171
21172         PR middle-end/35595
21173         * tree-ssa-pre.c (bitmap_find_leader): Handle expression
21174         being a PHI_NODE.
21175
21176 2008-03-14  Bob Wilson  <bob.wilson@acm.org>
21177
21178         * doc/invoke.texi (Option Summary, Xtensa Options): Document
21179         -mserialize-volatile and -mno-serialize-volatile Xtensa options.
21180         * config/xtensa/xtensa.c (print_operand): Do not emit MEMW instructions
21181         unless TARGET_SERIALIZE_VOLATILE is enabled.
21182         * config/xtensa/xtensa.md (*lsiu, *ssiu): Likewise.
21183         * config/xtensa/xtensa.h (TARGET_DEFAULT): Add MASK_SERIALIZE_VOLATILE.
21184         * config/xtensa/xtensa.opt (mserialize_volatile): New option.
21185
21186 2008-03-14  Richard Guenther  <rguenther@suse.de>
21187
21188         PR tree-optimization/34172
21189         * tree-flow.h (refs_may_alias_p): Declare.
21190         (get_single_def_stmt): Likewise.
21191         (get_single_def_stmt_from_phi): Likewise.
21192         (get_single_def_stmt_with_phi): Likewise.
21193         * tree-dfa.c (refs_may_alias_p): New function.
21194         (get_single_def_stmt): Likewise.
21195         (get_single_def_stmt_from_phi): Likewise.
21196         (get_single_def_stmt_with_phi): Likewise.
21197         * tree-ssa-sccvn.c (get_def_ref_stmt_vuses): New function.
21198         (vn_reference_lookup_1): New helper function.
21199         (vn_reference_lookup): Walk the virtual use-def chain to
21200         continue searching for a match if the def does not alias the
21201         reference we are looking for.
21202
21203 2008-03-14  David Edelsohn  <edelsohn@gnu.org>
21204
21205         * doc/install.texi (Binaries): Remove UCLA archive.  Add HVCC
21206         archive and Perzl.  Update The Written Word listing.
21207
21208 2008-03-14  Richard Guenther  <rguenther@suse.de>
21209
21210         PR tree-optimization/34043
21211         PR tree-optimization/33989
21212         * tree-ssa-pre.c (execute_pre): Allow SCCVN to do insertion
21213         when doing FRE.
21214         (bitmap_find_leader): Use extra argument to verify dominance
21215         relationship inside a basic-block.
21216         (can_PRE_operation): Add VIEW_CONVERT_EXPR.
21217         (find_leader_in_sets): Adjust.
21218         (create_component_ref_by_pieces): Take extra argument for
21219         dominance check, handle lookup failures.
21220         (find_or_generate_expression): Likewise.
21221         (create_expression_by_pieces): Likewise.
21222         (insert_into_preds_of_block): Adjust.
21223         (create_value_expr_from): If asked for, verify all operands
21224         are in the blocks AVAIL_OUT set.
21225         (make_values_for_stmt): Check for SSA_NAMEs that are life
21226         over an abnormal edge.
21227         (compute_avail): Remove such check.
21228         (do_SCCVN_insertion): New function.
21229         (eliminate): If we do not find a leader suitable for replacement
21230         insert a replacement expression from SCCVN if available.
21231         * tree-ssa-sccvn.h (run_scc_vn): Update prototype.
21232         (struct vn_ssa_aux): Add needs_insertion flag.
21233         * tree-ssa-sccvn.c (may_insert): New global flag.
21234         (copy_reference_ops_from_ref): Value-number union member access
21235         based on its size, not type and member if insertion is allowed.
21236         (visit_reference_op_load): For a weak match from union type
21237         punning lookup a view-converted value and insert a SSA_NAME
21238         for that value if that is not found.
21239         (visit_use): Make dumps shorter.  Do not disallow value numbering
21240         SSA_NAMEs that are life over an abnormal edge to constants.
21241         (free_scc_vn): Release inserted SSA_NAMEs.
21242         (run_scc_vn): New flag to specify whether insertion is allowed.
21243         Process SSA_NAMEs in forward order.
21244         * tree-ssa-loop-im.c (for_each_index): Handle invariant
21245         ADDR_EXPRs inside VIEW_CONVERT_EXPR.
21246         * fold-const.c (fold_unary): Fold VIEW_CONVERT_EXPRs from/to
21247         pointer type to/from integral types that do not change the
21248         precision to regular conversions.
21249
21250 2008-03-13  Uros Bizjak  <ubizjak@gmail.com>
21251
21252         * doc/extend.texi (X86 Built-in Functions) [__builtin_ia32_psll?,
21253         __builtin_ia32_psrl?, __builtin_ia32_psra?, __builtin_ia32_psll?i,
21254         __builtin_ia32_psrl?i, __builtin_ia32_psra?i, __builtin_ia32_psll?128,
21255         __builtin_ia32_psrl?128, __builtin_ia32_psra?128]: Fix the mode of
21256         input arguments and the mode of return value.  Built-in functions
21257         that operate on whole 64-bit MMX register now use V1DI mode.
21258
21259 2008-03-13  Alon Dayan  <alond@il.ibm.com>
21260             Olga Golovanevsky  <olga@il.ibm.com>
21261
21262         PR tree-optimization/35041
21263         * ipa-struct-reorg.c (find_pos_in_stmt_1): Add another option
21264         to locate the right position in a statement.
21265
21266 2008-03-13  Uros Bizjak  <ubizjak@gmail.com>
21267
21268         PR target/34000
21269         PR target/35553
21270         * config/i386/xmmintrin.h:  Change all static inline functions to
21271         extern inline and add __gnu_inline__ attribute.
21272         * config/i386/bmintrin.h: Ditto.
21273         * config/i386/smmintrin.h: Ditto.
21274         * config/i386/tmmintrin.h: Ditto.
21275         * config/i386/mmintrin-common.h: Ditto.
21276         * config/i386/ammintrin.h: Ditto.
21277         * config/i386/emmintrin.h: Ditto.
21278         * config/i386/pmmintrin.h: Ditto.
21279         * config/i386/mmintrin.h: Ditto.
21280         * config/i386/mm3dnow.h: Ditto.
21281
21282 2008-03-13  Jakub Jelinek  <jakub@redhat.com>
21283
21284         PR middle-end/35185
21285         * omp-low.c (lower_regimplify, init_tmp_var, save_tmp_var): Removed.
21286         (lower_omp_2): New function.
21287         (lower_omp_1, lower_omp): Rewritten.
21288
21289 2008-03-13  Danny Smith  <dannysmith@users.sourceforge.net>
21290
21291         PR 35054
21292         * doc/extend.texi (Structure-Packing Pragmas): Replace "Win32"
21293         with the phrase "Microsoft Windows compilers".
21294         (Push/Pop Macro Pragmas): New subsection. Document
21295         #pragma push_macro and pragma pop_macro.
21296
21297 2008-03-12  Paul Brook  <paul@codesourcery.com>
21298
21299         * config/arm/arm.c (output_move_double): Prefer LDRD to LDM.
21300
21301 2008-03-12  Paul Brook  <paul@codesourcery.com>
21302
21303         * config/arm/thumb2.md: Extend peephole to cover 3-arg subs.
21304         (thumb2_alusi3_short): Exclude PLUS and MINUS.
21305         (thumb2_addsi_shortim): Rename ...
21306         (thumb2_addsi_short): ... to this.  Allow register operands.
21307         (thumb2_subsi_short): New pattern.
21308         (thumb2_one_cmplsi2_short,
21309         thumb2_negsi2_short): New patterns and peepholes.
21310
21311 2008-03-12  Paul Brook  <paul@codesourcery.com>
21312
21313         * config/arm/arm.c (arm_size_rtx_costs): Use ARM costs for Thumb-2.
21314
21315 2008-03-12  Uros Bizjak  <ubizjak@gmail.com>
21316
21317         * config/i386/i386.md (int_cond): New code iterator.
21318         (fp_cond): Ditto.
21319         ("s<code>"): Macroize expander from seq, sne, sgt, sgtu, slt, sltu,
21320         sge, sgeu, sle and sleu expanders usign int_cond code iterator.
21321         ("s<code>"): Macroize expander from sunordered, sordered, suneq, sunge,
21322         sungt, sunle, sunlt and sltgt expanders usign fp_cond code iterator.
21323         ("b<code>"): Macroize expander from beq, bne, bgt, bgtu, blt, bltu,
21324         bge, bgeu, ble and bleu expanders usign int_cond code iterator.
21325         ("b<code>"): Macroize expander from bunordered, bordered, buneq, bunge,
21326         bungt, bunle, bunlt and bltgt expanders usign fp_cond code iterator.
21327
21328 2008-03-12  Paul Brook  <paul@codesourcery.com>
21329
21330         * config/arm/arm.c (use_return_insn): Use offsets->saved_regs_mask
21331         instead of {arm,thumb}_compute_save_reg_mask.
21332         (output_return_instruction): Ditto.
21333         (thumb_unexpanded_epilogue): Ditto.
21334         (thumb1_expand_prologue): Ditto.
21335         (thumb1_output_function_prologue): Ditto.
21336         (arm_set_return_address): Ditto.
21337         (thumb_set_return_address): Ditto.
21338         (arm_get_frame_offsets): Set offsets->saved_regs_mask.  Push extra
21339         regs to achieve stack alignment.
21340         (thumb1_compute_save_reg_mask): Fix compiler warning.
21341         (arm_output_epilogue): Use offsets->saved_regs_mask.
21342         Adjust stack pointer by poping call clobered registers.
21343         (arm_expand_prologue): Use offsets->saved_regs_mask.
21344         Adjust stack pointer by pushing extra registers.
21345         * config/arm.h (arm_stack_offsets): Add saved_regs_mask.
21346
21347 2008-03-12  Paolo Bonzini  <bonzini@gnu.org>
21348
21349         PR tree-opt/35422
21350         * fold-const.c (fold_unary) <NOP_EXPR>: Distribute a narrowing
21351         conversion to the operands of a multiplication.
21352
21353 2008-03-12  Richard Guenther  <rguenther@suse.de>
21354
21355         * Makefile.in (OBJS-common): Add tree-ssa-phiprop.o
21356         (tree-ssa-phiprop.o): Copy dependencies from tree-ssa-forwprop.o.
21357         * timevar.def (TV_TREE_PHIPROP): Add.
21358         * tree-ssa-phiprop.c: Split from tree-ssa-forwprop.c, added
21359         pass description.  Use TV_TREE_PHIPROP.
21360         * tree-ssa-forwprop.c: Remove phiprop code.
21361
21362 2008-03-12  Jakub Jelinek  <jakub@redhat.com>
21363
21364         PR middle-end/35549
21365         * omp-low.c (maybe_lookup_decl): Constify first argument.
21366         (use_pointer_for_field): Change last argument from bool to
21367         omp_context *.  Disallow shared copy-in/out in nested
21368         parallel if decl is shared in outer parallel too.
21369         (build_outer_var_ref, scan_sharing_clauses,
21370         lower_rec_input_clauses, lower_copyprivate_clauses,
21371         lower_send_clauses, lower_send_shared_vars): Adjust callers.
21372
21373 2008-03-12  Victor Kaplansky  <victork@il.ibm.com>
21374             Ira Rosen  <irar@il.ibm.com>
21375
21376         * tree-vectorizer.c (free_stmt_vec_info): New function.
21377         (destroy_loop_vec_info): Move code to free_stmt_vec_info().
21378         Call free_stmt_vec_info(). Free LOOP_VINFO_STRIDED_STORES..
21379         * tree-vectorizer.h (free_stmt_vec_info): Declare.
21380         * tree-vect-transform.c (vectorizable_conversion): Free
21381         vec_oprnds0 if it was allocated.
21382         (vect_permute_store_chain): Remove unused VECs.
21383         (vectorizable_store): Free VECs that are allocated in the..
21384         function.
21385         (vect_transform_strided_load, vectorizable_load): Likewise.
21386         (vect_remove_stores): Simplify the code.
21387         (vect_transform_loop): Move code to vect_remove_stores().
21388         Call vect_remove_stores() and free_stmt_vec_info().
21389
21390 2008-03-11  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
21391
21392         * pa.h (TARGET_LONG_PIC_SDIFF_CALL): Conditionalize define on
21393         TARGET_HPUX.  Revise comment.
21394         (TARGET_LONG_PIC_PCREL_CALL): Revise comment.
21395         * pa.c (output_call): Update for revised TARGET_LONG_PIC_SDIFF_CALL.
21396         Use sr4 variant of `be' instruction when not generating PIC code.
21397         (attr_length_call): Adjust for above change.
21398
21399 2008-03-11  Andrew Pinski  <andrew_pinski@playstation.sony.com>
21400
21401         * ipa-reference.c (static_execute): Remove module_statics_const and
21402         associated setting code.
21403
21404 2008-03-11  Uros Bizjak  <ubizjak@gmail.com>
21405
21406         PR target/35540
21407         * config/i386/i386.md (paritysi2, paritydi2): Use register_operand
21408         predicate for operand 1.
21409         (paritysi2_cmp): Use register_operand predicate for operand 2.
21410         Use earlyclobber modifier for operand 1.  Remove support for
21411         memory operands.
21412         (paritydi2_cmp): Use register_operand predicate for operand 3.
21413         Use earlyclobber modifier for operand 1.  Remove support for
21414         memory operands.
21415
21416 2008-03-11  Paul Brook  <paul@codesourcery.com>
21417             Vladimir Prus  <vladimir@codesourcery.com>
21418
21419         * config/arm/arm.c (use_return_insn): Check TARGET_APCS_FRAME.
21420         (arm_compute_save_reg0_reg12_mask): Always
21421         check if register 11 must be saved.  Always safe hard frame pointer
21422         when frame_pointer_needeed.
21423         (arm_compute_save_reg_mask): Save IP and PC
21424         only with apcs frames.
21425         (arm_output_epilogue): Adjust Thumb2 codepath to
21426         be also invoked and work for ARM non-apcs frames.
21427         (arm_expand_prologue): Don't bother saving IP
21428         for non-apcs frame, since it's not clobbered by
21429         prologue code.  Implement non-apcs frame
21430         layout.
21431
21432 2008-03-11  Paolo Bonzini  <bonzini@gnu.org>
21433
21434         PR rtl-optimization/35281
21435         * expr.c (convert_move): Use a new pseudo for the intermediate
21436         from_mode->word_mode result.
21437
21438 2008-03-11  Paolo Bonzini  <bonzini@gnu.org>
21439
21440         * langhooks-def.h (LANG_HOOKS_CLEAR_BINDING_STACK): Delete.
21441         * langhooks.h (struct lang_hooks): Delete clear_binding_stack member.
21442         * toplev.c (compile_file): Don't call it.
21443
21444 2008-03-11  Uros Bizjak  <ubizjak@gmail.com>
21445
21446         PR middle-end/35526
21447         * expr.c (store_expr): Call emit_block_move if the mode
21448         of "temp" RTX is BLKmode.
21449
21450 2008-03-11  Andrew Pinski  <andrew_pinski@playstation.sony.com>
21451             Richard Guenther  <rguenther@suse.de>
21452
21453         PR tree-optimization/31358
21454         * tree-ssa-loop-manip.c (create_iv): Call force_gimple_operand for
21455         the step with a NULL_TREE.
21456         * tree-ssa-loop-ivopts.c (find_bivs): Convert the step
21457         to sizetype if type is a pointer type.
21458         (add_candidate_1): Don't convert the base and step to
21459         the generic type if the orginal type is a pointer type.
21460         (add_iv_value_candidates): Use sizetype for the step
21461         if type is a pointer type.
21462         (cand_value_at): Likewise.
21463         * tree-ssa-address.c (add_to_parts): Use POINTER_PLUS_EXPR
21464         for pointer types.
21465         * tree-affine.c (tree_to_aff_combination <POINTER_PLUS_EXPR>):
21466         Don't convert the tem affine to the type.
21467         (add_elt_to_tree): Use sizetype for the step if a pointer.
21468         Use POINTER_PLUS_EXPR for pointers.
21469         (aff_combination_to_tree): Use sizetype for the step if a
21470         pointer.
21471
21472 2008-03-10  Vladimir Makarov  <vmakarov@redhat.com>
21473
21474         * config/i386/sse.md (ssse3_pmaddubswv8hi3, ssse3_pmaddubswv4hi3):
21475         Remove commutativity hint.
21476
21477 2008-03-10  Jakub Jelinek  <jakub@redhat.com>
21478
21479         PR c/35438
21480         PR c/35439
21481         * c-parser.c (c_parser_omp_threadprivate): Don't add vars with
21482         errorneous type.  Check that v is a VAR_DECL.
21483
21484         PR middle-end/35099
21485         * tree-cfg.c (new_label_mapper): Update cfun->last_label_uid.
21486
21487 2008-03-10  H.J. Lu  <hongjiu.lu@intel.com>
21488
21489         PR tree-optimization/35494
21490         * tree-ssa-ccp.c (get_symbol_constant_value): Check if value
21491         may be overriden at link and run time.
21492
21493 2008-03-10  Richard Guenther  <rguenther@suse.de>
21494
21495         PR tree-optimization/34677
21496         * tree-ssa-pre.c (modify_expr_node_pool): Remove.
21497         (poolify_tree): Likewise.
21498         (modify_expr_template): Likewise.
21499         (poolify_modify_stmt): Likewise.
21500         (insert_fake_stores): Handle all component-ref style stores
21501         in addition to INDIRECT_REF.  Also handle complex types.
21502         Do not poolify the inserted load.
21503         (realify_fake_stores): Do not rebuild the tree but only
21504         make it a SSA_NAME copy.
21505         (init_pre): Remove initialzation of modify_expr_template.
21506         Do not allocate modify_expr_node_pool.
21507         (fini_pre): Do not free modify_expr_node_pool.
21508
21509 2008-03-10  Paul Brook  <paul@codesourcery.com>
21510
21511         * config/arm/arm.md (UNSPEC_STACK_ALIGN, UNSPEC_PIC_OFFSET): Renumber
21512         to avoid conflicts.
21513
21514 2008-03-10  Paul Brook  <paul@codesourcery.com>
21515             Mark Shinwell  <shinwell@codesourcery.com>
21516
21517         * config/arm/cortex-r4.md: New.
21518         * config/arm/thumb2.md (divsi3, udivsi3): Annotate with
21519         insn attributes.
21520         * config/arm/arm.md: Include cortex-r4.md.
21521         (insn): Add smmls, sdiv and udiv values.
21522         (generic_sched): Don't use generic scheduling for Cortex-R4.
21523         (arm_issue_rate): New function.
21524         (TARGET_SCHED_ISSUE_RATE): Define.
21525
21526 2008-03-10  Sebastian Pop  <sebastian.pop@amd.com>
21527
21528         * doc/invoke.texi (-ftree-loop-distribution): Add an example.
21529
21530 2008-03-10  Richard Guenther  <rguenther@suse.de>
21531
21532         * tree-ssa-pre.c (get_sccvn_value): Simplify.
21533         (compute_avail): Do not add stmt uses to AVAIL_OUT.
21534
21535 2008-03-10  Paolo Bonzini  <bonzini@gnu.org>
21536
21537         * langhooks-def.h (LANG_HOOKS_REDUCE_BIT_FIELD_OPERATIONS):
21538         Set default to true.
21539
21540 2008-03-09  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
21541
21542         * c.opt (Wsynth): Deprecate.
21543         * doc/invoke.texi (Option Summary, Warning Options): Document
21544         -Wno-format-contains-nul.
21545
21546 2008-03-09  Uros Bizjak  <ubizjak@gmail.com>
21547
21548         PR target/35496
21549         * config/i386/i386.c (ix86_constant_alignment): Compute alignment using
21550         ALIGN_MODE_128 for VECTOR_CST and INTEGER_CST in addition to REAL_CST.
21551
21552 2008-03-09  Ira Rosen  <irar@il.ibm.com>
21553
21554         * config/rs6000/rs6000.c (builtin_description): Rename vector
21555         left shift operations.
21556         * config/rs6000/altivec.md (UNSPEC_VSL): Remove.
21557         (altivec_vsl<VI_char>): Rename to ...
21558         (ashl<mode>3): ... new name.
21559         (mulv4sf3, mulv4si3, negv4sf2): Replace gen_altivec_vslw with
21560         gen_ashlv4si3.
21561         (absv4sf2): Convert to use ashift:V4SI instead of UNSPEC_VSL.
21562
21563 2008-03-08  Richard Guenther  <rguenther@suse.de>
21564
21565         * coverage.h (tree_coverage_counter_addr): Declare.
21566         * coverage.c (tree_coverage_counter_addr): New function.
21567         * tree-profile.c (tree_gen_edge_profiler): Unshare counter
21568         before using again.
21569         (tree_gen_pow2_profiler): Use tree_coverage_counter_addr.
21570         (tree_gen_one_value_profiler): Likewise.
21571         (tree_gen_ic_profiler): Likewise.
21572         (tree_gen_average_profiler): Likewise.
21573         (tree_gen_ior_profiler): Likewise.
21574
21575 2008-03-08  Richard Guenther  <rguenther@suse.de>
21576
21577         * tree-ssa-sccvn.h (vn_binary_op_lookup): Remove.
21578         (vn_binary_op_insert): Likewise.
21579         (vn_unary_op_lookup): Likewise.
21580         (vn_unary_op_insert): Likewise.
21581         (vn_nary_op_lookup): Declare.
21582         (vn_nary_op_insert): Likewise.
21583         * tree-ssa-sccvn.c (struct vn_tables_s): Merge unary
21584         and binary hashes, use a single obstack for unary_op_pool
21585         and binary_op_pool.
21586         (struct vn_binary_op_s, struct vn_unary_op_s): Replace with
21587         a single struct vn_nary_op_s.  Store tree code length and
21588         a variable number of operands.
21589         (struct vn_reference_op_struct): Remove unused op2.
21590         (vn_reference_op_eq): Do not compare op2.
21591         (vn_reference_op_compute_hash): Do not compute hash of op2.
21592         (vn_unary_op_hash, vn_binary_op_hash): Replace with vn_nary_op_hash.
21593         (vn_unary_op_compute_hash, vn_binary_op_compute_hash): Replace
21594         with vn_nary_op_compute_hash.
21595         (vn_unary_op_eq, vn_binary_op_eq): Replace with vn_nary_op_eq.
21596         (vn_unary_op_lookup, vn_binary_op_lookup): Replace with
21597         vn_nary_op_lookup.
21598         (vn_unary_op_insert, vn_binary_op_insert): Replace with
21599         vn_nary_op_insert.
21600         (visit_unary_op): Call nary functions.
21601         (visit_binary_op): Likewise.
21602         (process_scc): Adjust for struct vn_tables_s changes.
21603         (allocate_vn_table): Likewise.
21604         (free_vn_table): Likewise.
21605         * tree-vn.c (vn_add): Call nary functions.
21606         (vn_lookup): Likewise.
21607
21608 2008-03-08  Jakub Jelinek  <jakub@redhat.com>
21609
21610         PR target/35498
21611         * config/rs6000/rs6000.c (rs6000_expand_compare_and_swapqhi): Shift
21612         wdst back after sync_compare_and_swapqhi_internal.
21613
21614 2008-03-08  Uros Bizjak  <ubizjak@gmail.com>
21615
21616         PR target/22152
21617         * config/i386/i386-modes.def (V1DI): New vector mode.
21618         * config/i386/i386.h (VALID_MMX_REG_MODE): Add V1DImode.
21619         * config/i386/mmx.md (MMXMODEI8): New mode iterator.
21620         (MMXMODE248): Ditto.
21621         (MMXMODE): Add V1DI mode.
21622         (mmxvecsize): Change DI mode to V1DI mode.
21623         ("mov<mode>): Use MMXMODEI8 mode iterator.
21624         ("*mov<mode>_internal_rex64"): Ditto.
21625         ("*mov<mode>_internal"): Ditto.
21626         ("mmx_add<mode>3"): Ditto.  Handle V1DImode for TARGET_SSE2.
21627         ("mmx_sub<mode>3"): Ditto.
21628         ("mmx_adddi3"): Remove insn pattern.
21629         ("mmx_subdi3"): Ditto.
21630         ("mmx_ashr<mode>3"): Use SImode and "yN" constraint for operand 2.
21631         ("mmx_lshr<mode>3"): Ditto. Use MMXMODE248 mode iterator.
21632         ("mmx_ashl<mode>3"): Ditto.
21633         ("mmx_lshrdi3"): Remove insn pattern.
21634         ("mmx_ashldi3"): Ditto.
21635         * config/i386/i386.c (classify_argument): Handle V1DImode.
21636         (function_arg_advance_32): Ditto.
21637         (function_arg_32): Ditto.
21638         (struct builtin_description) [IX86_BUILTIN_PADDQ]: Use
21639         mmx_addv1di3 insn pattern.
21640         [IX86_BUILTIN_PSUBQ]: Use mmx_subv1di3 insn pattern.
21641         [IX86_BUILTIN_PSLL?, IX86_BUILTIN_PSRL?, IX86_BUILTIN_PSRA?,
21642         IX86_BUILTIN_PSLL?I, IX86_BUILTIN_PSRL?I, IX86_BUILTIN_PSRA?I,
21643         IX86_BUILTIN_PSLL?I128, IX86_BUILTIN_PSRL?I128, IX86_BUILTIN_PSRA?I128]:
21644         Remove definitions of built-in functions.
21645         (V1DI_type_node): New node.
21646         (v1di_ftype_v1di_int): Ditto.
21647         (v1di_ftype_v1di_v1di): Ditto.
21648         (v2si_ftype_v2si_si): Ditto.
21649         (v4hi_ftype_v4hi_di): Remove node.
21650         (v2si_ftype_v2si_di): Ditto.
21651         (ix86_init_mmx_sse_builtins): Handle V1DImode.
21652         (__builtin_ia32_psll?, __builtin_ia32_psrl?, __builtin_ia32_psra?):
21653         Redefine builtins using def_builtin_const with *_ftype_*_int node.
21654         (__builtin_ia32_psll?i, __builtin_ia32_psrl?i, __builtin_ia32_psra?i):
21655         Add new builtins using def_builtin_const.
21656         (ix86_expand_builtin) [IX86_BUILTIN_PSLL?, IX86_BUILTIN_PSRL?,
21657         IX86_BUILTIN_PSRA?, IX86_BUILTIN_PSLL?I, IX86_BUILTIN_PSRL?I,
21658         IX86_BUILTIN_PSRA?I]: Handle builtin definitions.
21659         * config/i386/mmintrin.h (__v1di): New typedef.
21660         (_mm_add_si64): Cast arguments to __v1di type.
21661         (_mm_sub_si64): Ditto.
21662         (_mm_sll_pi16): Cast __count to __v4hi type.
21663         (_mm_sll_pi32): Cast __count to __v2si type.
21664         (_mm_sll_si64): Cast arguments to __v1di type.
21665         (_mm_srl_pi16): Cast __count to __v4hi type.
21666         (_mm_srl_pi32): Cast __count to __v2si type.
21667         (_mm_srl_si64): Cast arguments to __v1di type.
21668         (_mm_sra_pi16): Cast __count to __v4hi type.
21669         (_mm_sra_pi32): Cast __count to __v2si type.
21670         (_mm_slli_pi16): Use __builtin_ia32_psllwi.
21671         (_mm_slli_pi32): Use __builtin_ia32_pslldi.
21672         (_mm_slli_si64): Use __builtin_ia32_psllqi. Cast __m to __v1di type.
21673         (_mm_srli_pi16): Use __builtin_ia32_psrlwi.
21674         (_mm_srli_pi32): Use __builtin_ia32_psrldi.
21675         (_mm_srli_si64): Use __builtin_ia32_psrlqi. Cast __m to __v1di type.
21676         (_mm_srai_pi16): Use __builtin_ia32_psrawi.
21677         (_mm_srai_pi32): Use __builtin_ia32_psradi.
21678         * config/i386/i386.md (UNSPEC_NOP): Remove unspec definition.
21679         * doc/extend.texi (X86 Built-in Functions) [__builtin_ia32_psll?,
21680         __builtin_ia32_psrl?, __builtin_ia32_psra?, __builtin_ia32_psll?i,
21681         __builtin_ia32_psrl?i, __builtin_ia32_psra?i]: Add new builtins.
21682
21683 2008-03-07  Joseph Myers  <joseph@codesourcery.com>
21684
21685         * doc/include/texinfo.tex: Update to version 2008-03-07.10.
21686
21687 2008-03-07  Peter Bergner  <bergner@vnet.ibm.com>
21688
21689         PR target/35373
21690         * config/rs6000/rs6000.c (rs6000_legitimize_address): Don't generate
21691         reg+const addressing for Altivec modes.  Don't generate reg+reg
21692         addressing for TFmode or TDmode quantities.
21693
21694 2008-03-07  Paolo Bonzini  <bonzini@gnu.org>
21695
21696         * c-common.c (vector_types_convertible_p): Call langhook
21697         instead of comptypes.
21698
21699 2008-03-06  Andrew Pinski  <andrew_pinski@playstation.sony.com>
21700
21701         PR tree-opt/35402
21702         * tree-ssa-ccp.c (get_symbol_constant_value): Handle
21703         integral and scalar float variables which have a
21704         NULL DECL_INITIAL.
21705
21706 2008-03-06  Nathan Froyd  <froydnj@codesourcery.com>
21707
21708         * dwarf2out.c (dwarf2out_frame_debug_expr): Consult the
21709         dwarf_register_span hook when emitting unwind information for
21710         register-to-memory saves.
21711         * config/rs6000/rs6000.c (spe_synthesize_frame): Delete.
21712         (rs6000_frame_related): Remove call to spe_synthesize_frame.
21713
21714 2008-03-06  Jakub Jelinek  <jakub@redhat.com>
21715
21716         * gimplify.c (goa_lhs_expr_p): Allow different ADDR_EXPR nodes
21717         for the same VAR_DECL.
21718
21719 2008-03-06  Tom Tromey  <tromey@redhat.com>
21720
21721         * treelang: Delete.
21722         * doc/standards.texi (Standards): Don't mention treelang.
21723         * doc/invoke.texi (Overall Options): Don't mention treelang.
21724         * doc/install.texi (Prerequisites): Don't mention bison or
21725         treelang.
21726         (Configuration): Don't mention treelang.
21727         (Building): Likewise.
21728         * doc/frontends.texi (G++ and GCC): Don't mention treelang.
21729
21730 2008-03-06  Paolo Bonzini  <bonzini@gnu.org>
21731
21732         * simplify-rtx.c (simplify_subreg): Remove useless shifts from
21733         word-extractions out of a multi-word object.
21734
21735 2008-03-06  Richard Guenther  <rguenther@suse.de>
21736
21737         * tree.def (BIT_FIELD_REF): Constrain result type and its precision.
21738         * tree-cfg.c (verify_expr): Verify BIT_FIELD_REF constraints on
21739         result type and precision.
21740         * expr.c (get_inner_reference): Set unsignedp based on the result
21741         type of BIT_FIELD_REF.
21742         * tree.h (BIT_FIELD_REF_UNSIGNED): Remove.
21743         * tree-sra.c (instantiate_element): Do not set BIT_FIELD_REF_UNSIGNED.
21744         (try_instantiate_multiple_fields): Likewise.  Use the correct type
21745         for BIT_FIELD_REF.
21746         (sra_build_assignment): Likewise.
21747         (sra_build_elt_assignment): Likewise.
21748         (sra_explode_bitfield_assignment): Likewise.
21749         * print-tree.c (print_node): Do not check BIT_FIELD_REF_UNSIGNED.
21750         * tree-vect-transform.c (vect_create_epilog_for_reduction): Do not
21751         set BIT_FIELD_REF_UNSIGNED.
21752         (vectorizable_load): Likewise.
21753
21754 2008-03-06  Andreas Krebbel  <krebbel1@de.ibm.com>
21755
21756         * cse.c (cse_extended_basic_block): Invalidate artificial defs
21757         at bb start.
21758
21759 2008-03-06  Richard Guenther  <rguenther@suse.de>
21760
21761         * alias.c (struct alias_set_entry): Move has_zero_child field
21762         to pack with alias_set.
21763
21764 2008-03-05  H.J. Lu  <hongjiu.lu@intel.com>
21765
21766         * config/i386/i386-modes.def: Use 4 byte alignment on DI for
21767         32bit host.
21768
21769 2008-03-05  Ian Lance Taylor  <iant@google.com>
21770
21771         * alias.h (alias_set_type): Change from HOST_WIDE_INT to int.
21772
21773 2008-03-05  Kenneth Zadeck  <zadeck@naturalbridge.com>
21774
21775         * fwprop.c (update_df): Support width and offset parameters of
21776         df_ref_create.
21777         * ra-conflict.c (mark_reg_store, clear_reg_in_live,
21778         global_conflicts): Change DF_REF_EXTRACT to either
21779         DF_REF_ZERO_EXTRACT or DF_REF_SIGN_EXTRACT.  Change
21780         DF_REF_STRICT_LOWER_PART to DF_REF_STRICT_LOW_PART.
21781         * df-scan.c (df_ref_record, df_defs_record,
21782         df_ref_create_structure, df_def_record_1, df_uses_record,
21783         df_get_conditional_uses, df_get_call_refs, df_insn_refs_collect,
21784         df_bb_refs_collect, df_entry_block_defs_collect,
21785         df_exit_block_uses_collect): Support new width and offset fields.
21786         (ref_extract_pool): New storage pool.
21787         (df_free_ref): New function.
21788         (df_reg_chain_unlink, df_free_collection_rec,
21789         df_sort_and_compress_refs): Call df_free_ref.
21790         (df_ref_equal_p, df_ref_compare): Compare offset and width fields
21791         of df_ref_extract.
21792         (df_ref_create_structure): Allocate df_ref_extract if offset and
21793         width fields are used.
21794         (df_def_record_1): Get offset and width from ZERO_EXTRACT.
21795         (df_uses_record): Get offset and width from ZERO_EXTRACT
21796         and SIGN_EXTRACT.
21797         * global.c (build_insn_chain): Change DF_REF_EXTRACT to either
21798         DF_REF_ZERO_EXTRACT or DF_REF_SIGN_EXTRACT.  Change
21799         DF_REF_STRICT_LOWER_PART to DF_REF_STRICT_LOW_PART.
21800         * df.h (df_ref_flags): Change DF_REF_EXTRACT to either
21801         DF_REF_ZERO_EXTRACT or DF_REF_SIGN_EXTRACT.  Change
21802         DF_REF_STRICT_LOWER_PART to DF_REF_STRICT_LOW_PART.
21803         (df_ref_extract): New structure.
21804         (DF_REF_WIDTH, DF_REF_OFFSET): New macros.
21805         (df_ref_create): Add width and offset parameters.
21806
21807 2008-03-05  Richard Guenther  <rguenther@suse.de>
21808
21809         * tree-ssa-structalias.c (get_constraint_for_component_ref):
21810         Use ranges_overlap_p.
21811         (offset_overlaps_with_access): Rename
21812         to ranges_overlap_p and move ...
21813         * tree-flow-inline.h (ranges_overlap_p): ... here.
21814
21815         * tree.h (get_inner_reference, handled_component_p): Update
21816         comments.
21817
21818         * tree.h (record_component_aliases, get_alias_set,
21819         alias_sets_conflict_p, alias_sets_must_conflict_p,
21820         objects_must_conflict_p): Move declarations ...
21821         * alias.h (record_component_aliases, get_alias_set,
21822         alias_sets_conflict_p, alias_sets_must_conflict_p,
21823         objects_must_conflict_p): ... here.
21824         Include coretypes.h.
21825         * Makefile.in (ALIAS_H): Add coretypes.h dependency.
21826
21827 2008-03-05  Aldy Hernandez  <aldyh@redhat.com>
21828
21829         * cfg.c: Include tree-flow.h.
21830         (remove_edge_raw): Call redirect_edge_var_map_clear.
21831         (redirect_edge_succ_nodup): Call redirect_edge_var_map_dup.
21832         * tree-flow-inline.h (redirect_edge_var_map_def): New.
21833         (redirect_edge_var_map_result): New.
21834         * tree-cfgcleanup.c (remove_forwarder_block_with_phi): Replace
21835         PENDING_STMT use with redirect_edge_var_map_*.
21836         * tree-ssa.c (edge_var_maps): New definition.
21837         (redirect_edge_var_map_add): New.
21838         (redirect_edge_var_map_clear): New.
21839         (redirect_edge_var_map_dup): New.
21840         (redirect_edge_var_map_vector): New.
21841         (redirect_edge_var_map_destroy): New.
21842         (ssa_redirect_edge): Replace PENDING_STMT use with
21843         redirect_edge_var_map_*.
21844         (flush_pending_stmts): Same.
21845         (delete_tree_ssa): Destroy edge var map.
21846         * tree-flow.h (struct _edge_var_map): New.
21847         Define edge_var_map vector type.
21848         Declare redirect_edge_var_map_* prototypes.
21849         * Makefile.in (cfg.o): Depend on TREE_FLOW_H.
21850         * tree-cfg.c (reinstall_phi_args): Replace
21851         PENDING_STMT use with redirect_edge_var_map_*.
21852
21853 2008-03-05  Richard Guenther  <rguenther@suse.de>
21854
21855         PR tree-optimization/35472
21856         * tree-ssa-dse.c (dse_optimize_stmt): Do not delete a store
21857         whose single use_stmt has a overlapping set of loaded and
21858         stored symbols as that use_stmt might be a noop assignment then.
21859
21860 2008-03-05  Joel Sherrill <joel.sherrill@oarcorp.com>
21861
21862         * gthr-rtems.h: Implement __gthread_mutex_destroy.
21863
21864 2008-03-05  Richard Guenther  <rguenther@suse.de>
21865
21866         PR c++/35336
21867         * tree.def (BIT_FIELD_REF): Document that operands 1 and 2
21868         should be constants.
21869         * tree-cfg.c (verify_expr): Verify it.
21870         * fold-const.c (fold_truthop): Remove code generating
21871         BIT_FIELD_REFs of structure bases.
21872         (fold_binary): Likewise.
21873         (fold_ternary): Position and size of BIT_FIELD_REFs are
21874         always host integers.
21875         (make_bit_field_ref): Remove.
21876         (optimize_bit_field_compare): Remove.
21877         (all_ones_mask_p): Remove.
21878
21879 2008-03-05  Gabor Loki  <loki@gcc.gnu.org>
21880
21881         PR gcc/33009
21882         * rtl-factoring.c (clear_regs_live_in_seq): Fix backward steps.
21883         (split_block_and_df_analyze): New. Split basic block and rebuild
21884         dataflow.
21885         (block_label_after): Use SPLIT_BLOCK_AND_DF_ANALYZE instead of
21886         SPLIT_BLOCK.
21887         (split_pattern_seq): Likewise.
21888         (erase_matching_seqs): Likewise.
21889         (split_pattern_seq): Skip return insn in case of REG_NORETURN note.
21890
21891 2008-03-04  Geoff Keating  <geoffk@apple.com>
21892
21893         * fold-const.c (tree_single_nonnegative_warnv_p): Fix mixed
21894         declaration and code.
21895         (tree_invalid_nonnegative_warnv_p): Likewise.
21896
21897 2008-03-05  Serge Belyshev  <belyshev@depni.sinp.msu.ru>
21898
21899         * doc/install.texi (Testing): Correct quoting for the RUNTESTFLAGS
21900         examples.  Truncate option-names then causing overfull hbox.
21901
21902 2008-03-04  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
21903
21904         PR target/35222
21905         * configure.ac (CONFIG_SJLJ_EXCEPTIONS): Force SJLJ exceptions
21906         on hpux10.
21907         * configure: Rebuilt.
21908
21909 2008-03-04  Rafael Espíndola  <espindola@google.com>
21910
21911         * fold-const.c (tree_simple_nonnegative_warnv_p): New.
21912         (tree_unary_nonnegative_warnv_p): New.
21913         (tree_binary_nonnegative_warnv_p): New.
21914         (tree_single_nonnegative_warnv_p): New.
21915         (tree_invalid_nonnegative_warnv_p): New.
21916         (tree_expr_nonnegative_warnv_p): Redefine in term of the new functions.
21917
21918 2008-03-04  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
21919
21920         PR 28322
21921         * opts.c (handle_option): Postpone 'unknown option' errors only for
21922         warning options.
21923
21924 2008-03-04  H.J. Lu  <hongjiu.lu@intel.com>
21925
21926         PR target/35453
21927         * config/i386/smmintrin.h (SIDD_XXX): Renamed to ...
21928         (_SIDD_XXX): This.
21929
21930 2008-03-04  Rafael Espíndola  <espindola@google.com>
21931
21932         * fold-const.c (tree_unary_nonzero_warnv_p): New.
21933         (tree_binary_nonzero_warnv_p): New.
21934         (tree_single_nonzero_warnv_p): New.
21935         (tree_expr_nonzero_warnv_p): Redefine using the new functions.
21936
21937 2008-03-04  Uros Bizjak  <ubizjak@gmail.com>
21938
21939         PR middle-end/35456
21940         * fold-const.c (fold_cond_expr_with_comparison): Prevent
21941         transformations for modes that have signed zeros.
21942         * ifcvt.c (noce_try_abs): Ditto.
21943
21944 2008-03-04  Joseph Myers  <joseph@codesourcery.com>
21945
21946         * config/i386/i386.c (override_options): Force
21947         -maccumulate-outgoing-args on if TARGET_STACK_PROBE.
21948
21949 2008-03-04  Jan Hubicka  <jh@suse.cz>
21950
21951         PR c++/35262
21952         * ipa-inline.c (cgraph_decide_inlining_of_small_function): Fix typo
21953         in last commit.
21954
21955 2008-03-04  Danny Smith  <dannysmith@users.sourceforge.net>
21956
21957         * config/i386/i386.md (allocate_stack_worker_32): Use  __chkstk
21958         label to probe the stack.
21959
21960 2008-03-04  Danny Smith  <dannysmith@users.sourceforge.net>
21961
21962         * gthr-win32.h [__GTHREAD_HIDE_WIN32API]
21963         (__gthr_win32_mutex_destroy): Declare.
21964         [__GTHREAD_HIDE_WIN32API] (__gthread_mutex_destroy): Use
21965         __gthr_win32_mutex_destroy.
21966         * config/i386/gthr-win32.c  (__gthr_win32_mutex_destroy): Define.
21967
21968 2008-03-03  Jan Hubicka  <jh@suse.cz>
21969
21970         PR c++/35262
21971         * ipa-inline.c (cgraph_decide_inlining_of_small_function): Be more
21972         aggressive on inlining cold calls.
21973
21974 2008-03-03  Richard Guenther  <rguenther@suse.de>
21975
21976         * tree-ssa-sccvn.c (visit_reference_op_store): Do not insert
21977         struct copies into the expression table.
21978         (simplify_unary_expression): Handle VIEW_CONVERT_EXPR.
21979         (try_to_simplify): Likewise.
21980         * fold-const.c (fold_unary): Fold VIEW_CONVERT_EXPR of
21981         integral and pointer arguments which do not change the
21982         precision to NOP_EXPRs.
21983         * tree-ssa-loop-ivopts.c (may_be_nonaddressable_p): Adjust
21984         VIEW_CONVERT_EXPR case.
21985
21986 2008-03-02  Sebastian Pop  <sebastian.pop@amd.com>
21987
21988         * tree-scalar-evolution.c (instantiate_parameters_1): An SSA_NAME
21989         defined in a loop at depth 0 is invariant.
21990         * tree-chrec.c (evolution_function_is_invariant_rec_p): Ditto.
21991         * tree-ssa-loop-ivopts.c (expr_invariant_in_loop_p): Should never
21992         be called at loop depth 0.
21993
21994 2008-03-02  Jakub Jelinek  <jakub@redhat.com>
21995
21996         PR driver/35420
21997         * gcc.c (process_command): Update copyright notice dates.
21998         * gcov.c (print_version): Likewise.
21999         * gcov-dump.c (print_version): Likewise.
22000         * mips-tfile.c (main): Likewise.
22001         * mips-tdump.c (main): Likewise.
22002
22003 2008-03-02  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
22004
22005         PR 24924
22006         * c-common.c (flag_permissive): Delete.
22007         (constant_expression_warnings): Check flags first.
22008         (constant_expression_error): New.
22009         * c-common.h (flag_permissive): Delete.
22010         (constant_expression_error): Declare.
22011         * flags.h (flag_permissive): Declare. Update description.
22012         * diagnostic.c (pedwarn): Update.
22013         (permerror): New.
22014         * diagnostic.h: (pedantic_error_kind): Rename as pedantic_warning_kind.
22015         (permissive_error_kind): New.
22016         * toplev.c (flag_permissive): Define. Update description.
22017         * toplev.h (permissive_error_kind): Declare.
22018         * c-errors.c (pedwarn_c99): Use pedantic_warning_kind.
22019         (pedwarn_c90): Use pedantic_warning_kind.
22020         * c-opts.c (c_common_post_options): flag_permissive does not affect
22021         flag_pedantic_errors.
22022
22023 2008-03-02  Joseph Myers  <joseph@codesourcery.com>
22024
22025         * libgcc2.c (__addvSI3, __addvsi3, __addvDI3, __subvSI3,
22026         __subvsi3, __subvDI3, __negvSI2, __negvsi2, __negvDI2, __absvSI2,
22027         __absvsi2, __absvDI2): Use unsigned arithmetic.
22028
22029 2008-03-02  Andi Kleen  <ak@suse.de>
22030             Richard Guenther  <rguenther@suse.de>
22031
22032         * struct-equiv.c: Remove file.
22033         * cfg_cleanup.c (condjump_equiv_p): Remove.
22034         * Makefile.in (OBJS-common): Remove struct-equiv.o.
22035         (struct-equiv.o): Remove rule.
22036         * basic-block.h (struct_equiv_checkpoint, STRUCT_EQUIV_*,
22037         insns_match_p, struct_equiv_block_eq, struct_equiv_init,
22038         rtx_equiv_p, condjump_equiv_p): Remove prototypes.
22039
22040 2008-03-01  Alexandre Oliva  <aoliva@redhat.com>
22041
22042         * ifcvt.c (noce_process_if_block): Try to handle only the then
22043         block if the else block exists but isn't suitable.
22044
22045 2008-03-01  Janne Blomqvist  <jb@gcc.gnu.org>
22046
22047         PR gcc/35063
22048         * gthr-posix.h (__gthread_mutex_destroy): Remove extra declarations.
22049         * gthr-posix95.h (__gthread_mutex_destroy): Likewise. Note this fixes
22050         regression from previous patch.
22051
22052 2008-03-01  Janne Blomqvist  <jb@gcc.gnu.org>
22053
22054         PR gcc/35063
22055         * gthr.h: Add __gthread_mutex_destroy as a function that must be
22056         implemented.
22057         * gthr-vxworks.h (__gthread_mutex_destroy): Null implementation.
22058         * gthr-single.h (__gthread_mutex_destroy): Likewise.
22059         * gthr-rtems.h (__gthread_mutex_destroy): Likewise.
22060         * gthr-mipssde.h (__gthread_mutex_destroy): Likewise.
22061         * gthr-nks.h (__gthread_mutex_destroy): Likewise.
22062         * gthr-solaris.h (__gthread_mutex_destroy): Call mutex_destroy.
22063         * gthr-win32.h (__GTHREAD_MUTEX_DESTROY_FUNCTION): Remove.
22064         (__gthread_mutex_destroy_function): Rename to
22065         __gthread_mutex_destroy.
22066         * gthr-dce.h (__gthread_mutex_destroy): Call
22067         pthread_mutex_destroy.
22068         * gthr-tpf.h (__gthread_mutex_destroy): Likewise.
22069         * gthr-posix.h (__gthread_mutex_destroy): Likewise.
22070         * gthr-posix95.h (__gthread_mutex_destroy): Likewise.
22071
22072 2008-03-01  Alexandre Oliva  <aoliva@redhat.com>
22073
22074         * df-scan.c (df_ref_chain_change_bb): Simplify.
22075         (df_insn_change_bb): Add new_bb argument.  Simplify.  Call
22076         set_block_for_insn if there's any change.
22077         * df.h ((df_insn_change_bb): Fix prototype.
22078         * cfgrtl.c (update_bb_for_insn_chain): Pass bb to
22079         df_insn_change_bb, don't call set_block_for_insn.
22080         * emit-rtl.c (reorder_insns): Likewise.
22081         * haifa-sched.c (move_insn): Likewise.
22082
22083 2008-03-01  Alexandre Oliva  <aoliva@redhat.com>
22084
22085         * rtlanal.c (loc_mentioned_in_p): Test XVECEXPs correctly.
22086
22087 2008-03-01  Alexandre Oliva  <aoliva@redhat.com>
22088
22089         * tree-flow-inline.h (next_readonly_imm_use): Return
22090         NULL_USE_OPERAND_P after the end.
22091
22092 2008-03-01  Richard Guenther  <rguenther@suse.de>
22093
22094         PR tree-optimization/35411
22095         * tree-sra.c (sra_build_assignment): Split conversion to
22096         final type to a separate statement if we are not assigning
22097         to a register.
22098
22099 2008-02-29  Francois-Xavier Coudert  <coudert@clipper.ens.fr>
22100
22101         * fold-const.c (fold_convertible_p): Correct the logic to follow
22102         that in fold_convert().
22103
22104 2008-02-29  Douglas Gregor  <doug.gregor@gmail.com>
22105
22106         PR c++/35315
22107         * tree-inline.c (build_duplicate_type): When we make a
22108         duplicate type, make it unique in the canonical types system.
22109
22110 2008-02-29  Tom Tromey  <tromey@redhat.com>
22111
22112         * toplev.c (input_file_stack, input_file_stack_tick, fs_p,
22113         input_file_stack_history, input_file_stack_restored): Remove.
22114         (push_srcloc, pop_srcloc, restore_input_file_stack): Likewise.
22115         * input.h (struct file_stack): Remove.
22116         (push_srcloc, pop_srcloc, restore_input_file_stack): Likewise.
22117         (input_file_stack, input_file_stack_tick, INPUT_FILE_STACK_BITS):
22118         Likewise.
22119         * diagnostic.h (struct diagnostic_context) <last_module>: Change
22120         type.
22121         (diagnostic_last_module_changed): Add 'map' argument.
22122         (diagnostic_set_last_function): Likewise.
22123         * diagnostic.c (undiagnostic_report_current_module): Iterate using
22124         line map, not input_file_stack.
22125         * c-lex.c (fe_file_change): Don't use push_srcloc or pop_srcloc.
22126
22127 2008-02-29  Paul Brook  <paul@codesourcery.com>
22128
22129         * config/arm/arm.md (arm_addsi3): Add r/k/n alternative.
22130
22131 2008-02-29  Paul Brook  <paul@codesourcery.com>
22132
22133         * config/arm/ieee754-df.S (muldf3): Use RET macros.
22134
22135 2008-02-29  Richard Guenther  <rguenther@suse.de>
22136
22137         * tree-ssa-pre.c (get_sccvn_value): Create missing VNs via
22138         vn_lookup_or_add.
22139         * tree-ssa-sccnv.c (visit_reference_op_store): Use the rhs
22140         value for comparing for a store match.
22141         (simplify_unary_expression): Do nothing for SSA_NAMEs.
22142         (try_to_simplify): Do not do a full-blown reference lookup.
22143
22144 2008-02-29  Kaz Kojima  <kkojima@gcc.gnu.org>
22145
22146         * config/sh/sh.c (sh_scalar_mode_supported_p): New function.
22147         (TARGET_SCALAR_MODE_SUPPORTED_P): Define.
22148
22149         * config/sh/sh.h (OVERRIDE_OPTIONS): Don't warn for profiling.
22150
22151 2008-02-29  Sebastian Pop  <sebastian.pop@amd.com>
22152
22153         * tree-loop-linear.c (try_interchange_loops): Compare memory access
22154         strides against cache sizes.
22155
22156 2008-02-29  Kaz Kojima  <kkojima@gcc.gnu.org>
22157
22158         * config/sh/sh.c (sh_secondary_reload): Handle loading a float
22159         constant to fpul.
22160
22161 2008-02-28  Richard Sandiford  <rsandifo@nildram.co.uk>
22162
22163         * simplify-rtx.c (simplify_unary_operation_1): Extend the handling
22164         of SUBREG_PROMOTED_VAR_P to cope with cases where the extended value
22165         is smaller than the original promoted value.
22166         (simplify_subreg): If OP is a SUBREG, try to preserve its
22167         SUBREG_PROMOTED_VAR_P information.
22168
22169 2008-02-28  Steven Bosscher  <stevenb.gcc@gmail.com>
22170
22171         * tree-ssa-sccvn (vn_ssa_aux_obstack): New obstack.
22172         (VN_INFO_GET): Allocate new objects on the obstack.
22173         (init_scc_vn): Initialize the obstack.  Use XDELETE instead of free
22174         for rpo_numbers_temp, for consistency.
22175         (free_scc_vn): Free the obstack.
22176
22177 2008-02-28  Sebastian Pop  <sebastian.pop@amd.com>
22178
22179         * doc/invoke.texi: Document -ftree-loop-distribution.
22180         * tree-loop-distribution.c: New.
22181         * tree-pass.h (pass_loop_distribution): New.
22182         * graphds.h (struct graph): Add htab_t indices.
22183         * timevar.def (TV_TREE_LOOP_DISTRIBUTION): New.
22184         * tree-vectorizer.c (rename_variables_in_loop): Extern.
22185         (slpeel_tree_duplicate_loop_to_edge_cfg): Init PENDING_STMT to NULL.
22186         * tree-vectorizer.h (tree_duplicate_loop_on_edge): Declared.
22187         * tree-data-ref.c (debug_data_dependence_relations): New.
22188         (dump_data_dependence_relation): Also print data references.
22189         (free_data_ref): Extern.
22190         (same_access_functions): Moved...
22191         (find_vertex_for_stmt): Renamed rdg_vertex_for_stmt.
22192         (dump_rdg_vertex, debug_rdg_vertex, dump_rdg_component,
22193         debug_rdg_component, dump_rdg, debug_rdg, dot_rdg_1, dot_rdg,
22194         struct rdg_vertex_info, rdg_vertex_for_stmt): New.
22195         (create_rdg_edge_for_ddr, create_rdg_vertices): Cleaned up.
22196         (stmts_from_loop): Skip LABEL_EXPR.
22197         (hash_stmt_vertex_info, eq_stmt_vertex_info, hash_stmt_vertex_del):
22198         New.
22199         (build_rdg): Initialize rdg->indices htab.
22200         (free_rdg, stores_from_loop, ref_base_address,
22201         rdg_defs_used_in_other_loops_p, have_similar_memory_accesses,
22202         have_similar_memory_accesses_1, ref_base_address_1,
22203         remove_similar_memory_refs): New.
22204         * tree-data-ref.h: Depend on tree-chrec.h.
22205         (debug_data_dependence_relations, free_data_ref): Declared.
22206         (same_access_functions): ... here.
22207         (ddr_is_anti_dependent, ddrs_have_anti_deps, ddr_dependence_level):
22208         New.
22209         (struct rdg_vertex): Add has_mem_write and has_mem_reads.
22210         (RDGV_HAS_MEM_WRITE, RDGV_HAS_MEM_READS, RDG_STMT,
22211         RDG_MEM_WRITE_STMT, RDG_MEM_READS_STMT): New.
22212         (dump_rdg_vertex, debug_rdg_vertex, dump_rdg_component,
22213         debug_rdg_component, dump_rdg, debug_rdg, dot_rdg,
22214         rdg_vertex_for_stmt): Declared.
22215         (struct rdg_edge): Add level.
22216         (RDGE_LEVEL): New.
22217         (free_rdg, stores_from_loop, remove_similar_memory_refs,
22218         rdg_defs_used_in_other_loops_p, have_similar_memory_accesses):
22219         Declared.
22220         (rdg_has_similar_memory_accesses): New.
22221         * tree-vect-analyze.c: Remove unused static decls.
22222         * lambda.h (dependence_level): New.
22223         * common.opt (ftree-loop-distribution): New.
22224         * tree-flow.h (mark_virtual_ops_in_bb,
22225         slpeel_tree_duplicate_loop_to_edge_cfg,
22226         rename_variables_in_loop): Declared.
22227         * Makefile.in (TREE_DATA_REF_H): Depend on tree-chrec.h.
22228         (OBJS-common): Add tree-loop-distribution.o.
22229         (tree-loop-distribution.o): New rule.
22230         * tree-cfg.c (mark_virtual_ops_in_bb): New.
22231         (mark_virtual_ops_in_region): Use mark_virtual_ops_in_bb.
22232         * passes.c (init_optimization_passes): Schedule pass_loop_distribution.
22233
22234 2008-02-28  Joseph Myers  <joseph@codesourcery.com>
22235
22236         PR target/33963
22237         * tree.c (handle_dll_attribute): Disallow TYPE_DECLs for types
22238         other than structures and unions.
22239
22240 2008-02-28  Richard Guenther  <rguenther@suse.de>
22241
22242         Revert:
22243         2008-02-26  Richard Guenther  <rguenther@suse.de>
22244
22245         * tree-flow.h (uid_decl_map_hash, uid_decl_map_eq): Move ...
22246         * tree.h (uid_decl_map_hash, uid_decl_map_eq): ... here.
22247         (lookup_decl_from_uid): Declare.
22248         (remove_decl_from_map): Likewise.
22249         * tree-ssa.c (uid_decl_map_eq, uid_decl_map_hash): Move ...
22250         * tree.c (uid_decl_map_eq, uid_decl_map_hash): ... here.
22251         (decl_for_uid_map): New global hashtable mapping DECL_UID
22252         to the decl tree.
22253         (init_ttree): Allocate it.
22254         (insert_decl_to_uid_decl_map): New helper function.
22255         (make_node_stat): Insert new decls into the map.
22256         (copy_node_stat): Likewise.
22257         (lookup_decl_from_uid): New function.
22258         (remove_decl_from_map): Likewise.
22259         (print_decl_for_uid_map_statistics): New helper.
22260         (dump_tree_statistics): Call it.
22261
22262         * tree-flow.h (struct gimple_df): Make referenced_vars a bitmap.
22263         (referenced_var_iterator): Adjust.
22264         (FOR_EACH_REFERENCED_VAR): Adjust.
22265         (FOR_EACH_REFERENCED_VAR_IN_BITMAP): New iterator.
22266         (num_referenced_vars): Adjust.
22267         * tree-flow-inline.h (gimple_referenced_vars): Adjust.
22268         (first_referenced_var): Remove.
22269         (end_referenced_vars_p): Likewise.
22270         (next_referenced_var): Likewise.
22271         (referenced_var_iterator_set): New helper function.
22272         * tree-dfa.c (referenced_var_lookup): Adjust.
22273         (referenced_var_check_and_insert): Likewise.
22274         (remove_referenced_var): Likewise.
22275         * tree-ssa.c (verify_flow_insensitive_alias_info): Use
22276         FOR_EACH_REFERENCED_VAR_IN_BITMAP.
22277         (verify_call_clobbering): Likewise.
22278         (verify_memory_partitions): Likewise.
22279         (init_tree_ssa): Allocate bitmap instead of hashtable for
22280         referenced_vars.
22281         (delete_tree_ssa): Adjust.
22282         * tree-ssa-alias.c (mark_aliases_call_clobbered): Use
22283         FOR_EACH_REFERENCED_VAR_IN_BITMAP.
22284         (compute_tag_properties): Likewise.
22285         (set_initial_properties): Likewise.
22286         (find_partition_for): Likewise.
22287         (update_reference_counts): Likewise.
22288         (dump_may_aliases_for): Likewise.
22289         * tree-ssa-operands.c (add_virtual_operand): Likewise.
22290         (add_call_clobber_ops): Likewise.
22291         (add_call_read_ops): Likewise.
22292         (get_asm_expr_operands): Likewise.
22293         * tree-into-ssa.c (dump_decl_set): Likewise.
22294         (update_ssa): Likewise.
22295         * tree-sra.c (scan_function): Likewise.
22296         (decide_instantiations): Likewise.
22297         (scalarize_parms): Likewise.
22298         * tree-ssa-alias-warnings.c (build_reference_table): Likewise.
22299         (dsa_named_for): Likewise.
22300         * tree-ssa-structalias.c (update_alias_info): Likewise.
22301         (merge_smts_into): Likewise.
22302
22303 2008-02-27  David Daney  <ddaney@avtrex.com>
22304
22305         PR target/34409
22306         * config/mips/iris.h (MIPS_DEBUGGING_INFO): Define.
22307         * config/mips/openbsd.h (MIPS_DEBUGGING_INFO): Same.
22308         * config/mips/sde.h (MIPS_DEBUGGING_INFO): Remove undef.
22309         * config/mips/vxworks.h (MIPS_DEBUGGING_INFO): Same.
22310         * config/mips/mips.h (MIPS_DEBUGGING_INFO): Remove define.
22311
22312 2008-02-27  Uros Bizjak  <ubizjak@gmail.com>
22313
22314         PR target/25477
22315         * config/darwin-ppc-ldouble-patch.def (BUILT_IN_NANL): Add.
22316         (BUILT_IN_NEXTTOWARD): Remove.
22317         (BUILT_IN_NEXTTOWARDF): Ditto.
22318         * config/darwin.c (darwin_patch_builtin): Use ACONCAT instead of
22319         alloca/strcpy/strcat.  Remove commented-out code.  Fix whitespace.
22320
22321 2008-02-27  Tom Tromey  <tromey@redhat.com>
22322
22323         * tree-dump.c (dequeue_and_dump) <FUNCTION_DECL>: Check
22324         DECL_SAVED_TREE, not DECL_LANG_SPECIFIC, when dumping body.
22325
22326 2008-02-27  Jan Beulich  <jbeulich@novell.com>
22327
22328         * c-decl.c (merge_decls): Use DECL_USER_ALIGN() on olddecl to
22329         update the respective field on newdecl.
22330
22331 2008-02-27  Revital Eres  <eres@il.ibm.com>
22332
22333         PR rtl-optimization/34999
22334         * bb-reorder.c (add_labels_and_missing_jumps): Do not handle
22335         crossing edges that ends with a call insn.
22336         (fix_up_fall_thru_edges): Handle crossing edges that ends with a
22337         call insn and clear the EDGE_CROSSING flag of the crossing edge
22338         when fixing fallthru edges.
22339
22340 2008-02-27  Richard Guenther  <rguenther@suse.de>
22341
22342         PR middle-end/35390
22343         * fold-const.c (fold_unary): Return the correct argument,
22344         converted to the result type.
22345
22346 2008-02-27  Richard Guenther  <rguenther@suse.de>
22347
22348         PR middle-end/34971
22349         * expr.c (expand_expr_real_1): Assert on rotates that operate
22350         on partial modes.
22351         * fold-const.c (fold_binary): Use the types precision, not the
22352         bitsize of the mode if folding rotate expressions.  Build rotates
22353         only for full modes.
22354
22355 2008-02-27  Jakub Jelinek  <jakub@redhat.com>
22356
22357         * c-ppoutput.c (scan_translation_unit): Handle CPP_PRAGMA
22358         and CPP_PRAGMA_EOL.
22359         * c-pragma.c (pragma_ns_name): New typedef.
22360         (registered_pp_pragmas): New variable.
22361         (c_pp_lookup_pragma): New function.
22362         (c_register_pragma_1): If flag_preprocess_only, do nothing
22363         for non-expanded pragmas, for expanded ones push pragma's
22364         namespace and name into registered_pp_pragmas vector.
22365         (c_invoke_pragma_handler): Register OpenMP pragmas even when
22366         flag_preprocess_only, don't register GCC pch_preprocess
22367         pragma if flag_preprocess_only.
22368         * c-opts.c (c_common_init): Call init_pragma even if
22369         flag_preprocess_only.
22370         * c-pragma.c (c_pp_lookup_pragma): New prototype.
22371         * config/darwin.h (DARWIN_REGISTER_TARGET_PRAGMAS): Don't call
22372         cpp_register_pragma if flag_preprocess_only.
22373
22374 2008-02-26  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
22375
22376         PR c/28800
22377         * c-parser.c (c_parser_translation_unit): Warn for empty
22378         translation unit, not empty source file.
22379
22380 2008-02-26  Paul Brook  <paul@codesourcery.com>
22381
22382         * config/arm/arm.c (thumb_set_frame_pointer): Ensure SP is first
22383         operand for Thumb-2.
22384         * config/arm/arm.h (reg_class): Add CORE_REGS.
22385         (REG_CLASS_NAMES, REG_CLASS_CONTENTS): Ditto.
22386         (BASE_REG_CLASS): Use CORE_REGS.
22387         (PREFERRED_RELOAD_CLASS): Add STACK_REG.
22388         (REGNO_MODE_OK_FOR_REG_BASE_P): Use REGNO_MODE_OK_FOR_BASE_P.
22389         (REGNO_OK_FOR_INDEX_P): Exclude SP.
22390         (ARM_REG_OK_FOR_INDEX_P): Always define.  Use
22391         ARM_REGNO_OK_FOR_INDEX_P.
22392         (ARM_PRINT_OPERAND_ADDRESS): Swap operands for [reg, sp].
22393         * config/arm/arm.md (arm_addsi3, thumb1_addsi3, arm_subsi3_insn,
22394         arm_movsi_insn, thumb1_movsi_insni, stack_tie): Add "k" alternatives.
22395         (ldm/stm peepholes): Ditto.
22396         * config/arm/thumb2.md (thumb2_movdi): Add "k" alternatives.
22397         * config/arm/vfp.md (arm_movsi_vfp, thumb2_movsi_vfp): Ditto.
22398         * config/arm/iwmmxt.md (iwmmxt_movsi_insn): Ditto.
22399         * config/arm/constraints.md: Enable "k" constraint on ARM.
22400
22401 2008-02-27  Ben Elliston  <bje@au.ibm.com>
22402
22403         * config/rs6000/rs6000.c: Annotate cache line size field in all
22404         instances of struct processor_costs.
22405
22406 2008-02-26  David Edelsohn  <edelsohn@gnu.org>
22407
22408         * dbgcnt.def (cfg_cleanup, cprop1, cprop2, dce_fast, dce_ud, dse1,
22409         dse2, gcse, if_conversion, if_after_combine, if_after_reload,
22410         jump_bypass): New counters.
22411         * cfgcleanup.c (cleanup_cfg): Add dbg_cnt.
22412         * dce.c (gate_ud_dce): Same.
22413         (gate_fast_dce): Same.
22414         * dse.c (gate_dse1): New function.
22415         (gate_dse2): New function.
22416         (gate_dse): Merge results of new gate functions.
22417         * gcse.c (gcse_main): Bracket cprop1 and cprop2 with dbg_cnt.
22418         (gate_handle_jump_bypass): Add dbg_cnt.
22419         (gate_handle_gcse): Add dbg_cnt.
22420         * ifcvt.c (gate_handle_if_conversion): Same.
22421         (gate_handle_if_after_combine): Same.
22422         (gate_handle_if_after_reload): Same.
22423         * Makefile.in: Add DBGCNT_H to cfgcleanup.o and ifcvt.o.
22424
22425 2008-02-26  Edmar Wienskoski  <edmar@freescale.com>
22426
22427         * config/rs6000/rs6000.c (processor_costs): Update e300 cache
22428         line sizes.
22429         * doc/invoke.texi: Add e300c2 and e300c3 to list of cpus.
22430
22431 2008-02-26  Jason Merrill  <jason@redhat.com>
22432
22433         PR c++/35315
22434         * attribs.c (decl_attributes): Leave ATTR_FLAG_TYPE_IN_PLACE
22435         alone if it's the naming decl for the type's main variant.
22436
22437 2008-02-26  Tom Tromey  <tromey@redhat.com>
22438
22439         * system.h (USE_MAPPED_LOCATION): Poison.
22440         * Makefile.in (GTFILES): Put CPP_ID_DATA_H first.
22441         * tree-cfg.c (make_cond_expr_edges): Remove old location code.
22442         (make_goto_expr_edges): Likewise.
22443         (remove_bb): Likewise.
22444         (execute_warn_function_return): Likewise.
22445         * basic-block.h (struct edge_def) <goto_locus>: Change type to
22446         location_t.
22447         * c-common.c (fname_decl): Remove old location code.
22448         * tree-vect-transform.c (vect_finish_stmt_generation): Remove old
22449         location code.
22450         * rtl.h (ASM_OPERANDS_SOURCE_LOCATION): Remove old-location
22451         variant.
22452         (ASM_INPUT_SOURCE_LOCATION): Likewise.
22453         (gen_rtx_ASM_INPUT): Likewise.
22454         (gen_rtx_ASM_INPUT_loc): Likewise.
22455         (get_rtx_asm_OPERANDS): Remove.
22456         * cfglayout.c (insn_locators_alloc): Remove old location code.
22457         (set_curr_insn_source_location): Likewise.
22458         (curr_insn_locator): Likewise.
22459         * print-tree.c (print_node): Remove old location code.
22460         * tree-mudflap.c (mf_varname_tree): Remove old location code.
22461         (mf_file_function_line_tree): Remove test of USE_MAPPED_LOCATION.
22462         * cfgexpand.c (expand_gimple_cond_expr): Don't use
22463         location_from_locus.
22464         (construct_exit_block): Remove old location code.
22465         * emit-rtl.c (force_next_line_note): Remove old location code.
22466         * profile.c (branch_prob): Remove old location code.
22467         * tree-vectorizer.h (LOC, UNKNOWN_LOC, EXPR_LOC, LOC_FILE,
22468         LOC_LINE): Remove old-location variants.
22469         * langhooks.c (lhd_print_error_function): Remove old location
22470         code.
22471         * configure, config.in: Rebuilt.
22472         * configure.ac (--enable-mapped-location): Remove.
22473         * c-decl.c (c_init_decl_processing): Remove old location code.
22474         (finish_function): Likewise.
22475         * recog.c (decode_asm_operands): Remove old location code.
22476         * c-pch.c (c_common_read_pch): Remove old location code.
22477         * rtl.def (ASM_INPUT, ASM_OPERANDS): Remove old location
22478         variants.
22479         * gimple-low.c (lower_function_body): Remove old location code.
22480         * toplev.c (unknown_location): Remove.
22481         (push_srcloc): Remove old-location variant.
22482         (process_options): Remove old location code.
22483         (lang_dependent_init): Likewise.
22484         * input.h (UNKNOWN_LOCATION): Move definition.
22485         (location_t): Undeprecate.
22486         (source_locus): Remove.
22487         (location_from_locus): Remove.
22488         (struct location_s): Remove.
22489         Remove all old-location code.
22490         (input_line, input_filename): Remove.
22491         * final.c (final_scan_insn): Remove old location code.
22492         * diagnostic.c (diagnostic_build_prefix): Remove
22493         USE_MAPPED_LOCATION test.
22494         * tree.h (gimple_stmt) <locus>: Now a location_t.
22495         (tree_exp) <locus>: Likewise.
22496         (DECL_IS_BUILTIN): Remove old-location variant.
22497         (annotate_with_file_line, annotate_with_locus): Likewise.
22498         (expr_locus, set_expr_locus): Update.
22499         * tree.c (build1_stat): Remove old location code.
22500         (last_annotated_node): Remove.
22501         (annotate_with_file_line): Remove old-location variant.
22502         (annotate_with_locus): Likewise.
22503         (expr_location): Remove old location code.
22504         (set_expr_location): Likewise.
22505         (expr_has_location): Likewise.
22506         (expr_locus): Likewise.
22507         (set_expr_locus): Likewise.
22508         (expr_filename): Don't use location_from_locus.
22509         (expr_lineno): Likewise.
22510         * rtl-error.c (location_for_asm): Remove old location code.
22511         * c-lex.c (cb_line_change): Remove old location code.
22512         (fe_file_change): Likewise.
22513         (cb_def_pragma): Likewise.
22514         (c_lex_with_flags): Likewise.
22515         * gengtype.c (do_typedef): Don't special-case location types.
22516         (define_location_structures): Remove.
22517         (main): Don't call define_location_structures.
22518         * tree-pretty-print.c (dump_implicit_edges): Remove old location
22519         code.
22520
22521 2008-02-26  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
22522
22523         PR 26264
22524         * builtins.def (BUILT_IN_STDARG_START): Remove.
22525         * builtins.c (expand_builtin): Remove BUILT_IN_STDARG_START.
22526         * tree-stdarg.c (execute_optimize_stdarg): Likewise.
22527         * tree-inline.c (inline_forbidden_p_1): Likewise.
22528
22529 2008-02-26  Richard Guenther  <rguenther@suse.de>
22530
22531         * tree-flow.h (uid_decl_map_hash, uid_decl_map_eq): Move ...
22532         * tree.h (uid_decl_map_hash, uid_decl_map_eq): ... here.
22533         (lookup_decl_from_uid): Declare.
22534         (remove_decl_from_map): Likewise.
22535         * tree-ssa.c (uid_decl_map_eq, uid_decl_map_hash): Move ...
22536         * tree.c (uid_decl_map_eq, uid_decl_map_hash): ... here.
22537         (decl_for_uid_map): New global hashtable mapping DECL_UID
22538         to the decl tree.
22539         (init_ttree): Allocate it.
22540         (insert_decl_to_uid_decl_map): New helper function.
22541         (make_node_stat): Insert new decls into the map.
22542         (copy_node_stat): Likewise.
22543         (lookup_decl_from_uid): New function.
22544         (remove_decl_from_map): Likewise.
22545         (print_decl_for_uid_map_statistics): New helper.
22546         (dump_tree_statistics): Call it.
22547
22548         * tree-flow.h (struct gimple_df): Make referenced_vars a bitmap.
22549         (referenced_var_iterator): Adjust.
22550         (FOR_EACH_REFERENCED_VAR): Adjust.
22551         (FOR_EACH_REFERENCED_VAR_IN_BITMAP): New iterator.
22552         (num_referenced_vars): Adjust.
22553         * tree-flow-inline.h (gimple_referenced_vars): Adjust.
22554         (first_referenced_var): Remove.
22555         (end_referenced_vars_p): Likewise.
22556         (next_referenced_var): Likewise.
22557         (referenced_var_iterator_set): New helper function.
22558         * tree-dfa.c (referenced_var_lookup): Adjust.
22559         (referenced_var_check_and_insert): Likewise.
22560         (remove_referenced_var): Likewise.
22561         * tree-ssa.c (verify_flow_insensitive_alias_info): Use
22562         FOR_EACH_REFERENCED_VAR_IN_BITMAP.
22563         (verify_call_clobbering): Likewise.
22564         (verify_memory_partitions): Likewise.
22565         (init_tree_ssa): Allocate bitmap instead of hashtable for
22566         referenced_vars.
22567         (delete_tree_ssa): Adjust.
22568         * tree-ssa-alias.c (mark_aliases_call_clobbered): Use
22569         FOR_EACH_REFERENCED_VAR_IN_BITMAP.
22570         (compute_tag_properties): Likewise.
22571         (set_initial_properties): Likewise.
22572         (find_partition_for): Likewise.
22573         (update_reference_counts): Likewise.
22574         (dump_may_aliases_for): Likewise.
22575         * tree-ssa-operands.c (add_virtual_operand): Likewise.
22576         (add_call_clobber_ops): Likewise.
22577         (add_call_read_ops): Likewise.
22578         (get_asm_expr_operands): Likewise.
22579         * tree-into-ssa.c (dump_decl_set): Likewise.
22580         (update_ssa): Likewise.
22581         * tree-sra.c (scan_function): Likewise.
22582         (decide_instantiations): Likewise.
22583         (scalarize_parms): Likewise.
22584         * tree-ssa-alias-warnings.c (build_reference_table): Likewise.
22585         (dsa_named_for): Likewise.
22586         * tree-ssa-structalias.c (update_alias_info): Likewise.
22587         (merge_smts_into): Likewise.
22588
22589 2008-02-26  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
22590
22591         PR 34351
22592         * doc/invoke.texi (-Wall): Add -Wvolatile-register-var.
22593         * c-opts.c (c_common_handle_option): Wall enables
22594         Wvolatile-register-var.
22595         * common.opt: Move Wvolatile-register-var to...
22596         * c.opt: ...here.
22597
22598 2008-02-26  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
22599
22600         * common.opt (Wlarger-than=): New.
22601         * doc/invoke.texi (Warning Options): Replace -Wlarger-than- with
22602         -Wlarger-than=.
22603         * opts.c (common_handle_option): Handle -Wlarger-than=.
22604         * optc-gen.awk: Likewise.
22605         * opth-gen.awk: Likewise.
22606         * stor-layout.c (layout_decl): Use -Wlarger-than= for warning.
22607         * tree-optimize.c (tree_rest_of_compilation): Likewise.
22608
22609 2008-02-26  Manuel Lopez-Ibanez <manu@gcc.gnu.org>
22610
22611         * c-common.c (match_case_to_enum_1): Add appropriate
22612         OPT_W* parameter to warning.
22613         (c_do_switch_warnings): Likewise.
22614         * c-typeck.c (warning_init): Add one more parameter following
22615         'warning' function.
22616         (push_init_level): Update call to warning_init.
22617         (pop_init_level): Likewise.
22618         (add_pending_init): Likewise.
22619         (output_init_element: Likewise.
22620
22621 2008-02-26  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
22622
22623         PR 28322
22624         * toplev.c (toplev_main): If there are warnings or error, print
22625         errors for ignored options.
22626         * opts.c (ignored_options): New static variable.
22627         (postpone_unknown_option_error): New.
22628         (print_ignored_options): New.
22629         (handle_option): Postpone errors for unknown -Wno-* options.
22630         * opts.h (print_ignored_options): Declare.
22631
22632 2008-02-25  Richard Sandiford  <rsandifo@nildram.co.uk>
22633
22634         * config/mips/mips.md (loadgp_blockage, blockage): Change type
22635         to "ghost".
22636
22637 2008-02-25  Richard Guenther  <rguenther@suse.de>
22638
22639         Revert:
22640         2008-02-25  Richard Guenther  <rguenther@suse.de>
22641
22642         * tree-flow.h (uid_decl_map_hash, uid_decl_map_eq): Move ...
22643         * tree.h (uid_decl_map_hash, uid_decl_map_eq): ... here.
22644         (lookup_decl_from_uid): Declare.
22645         * tree-ssa.c (uid_decl_map_eq, uid_decl_map_hash): Move ...
22646         * tree.c (uid_decl_map_eq, uid_decl_map_hash): ... here.
22647         (decl_for_uid_map): New global hashtable mapping DECL_UID
22648         to the decl tree.
22649         (init_ttree): Allocate it.
22650         (insert_decl_to_uid_decl_map): New helper function.
22651         (make_node_stat): Insert new decls into the map.
22652         (copy_node_stat): Likewise.
22653         (lookup_decl_from_uid): New function.
22654         (print_decl_for_uid_map_statistics): New helper.
22655         (dump_tree_statistics): Call it.
22656
22657         * tree-flow.h (struct gimple_df): Make referenced_vars a bitmap.
22658         (referenced_var_iterator): Adjust.
22659         (FOR_EACH_REFERENCED_VAR): Adjust.
22660         (FOR_EACH_REFERENCED_VAR_IN_BITMAP): New iterator.
22661         (num_referenced_vars): Adjust.
22662         * tree-flow-inline.h (gimple_referenced_vars): Adjust.
22663         (first_referenced_var): Remove.
22664         (end_referenced_vars_p): Likewise.
22665         (next_referenced_var): Likewise.
22666         (referenced_var_iterator_set): New helper function.
22667         * tree-dfa.c (referenced_var_lookup): Adjust.
22668         (referenced_var_check_and_insert): Likewise.
22669         (remove_referenced_var): Likewise.
22670         * tree-ssa.c (verify_flow_insensitive_alias_info): Use
22671         FOR_EACH_REFERENCED_VAR_IN_BITMAP.
22672         (verify_call_clobbering): Likewise.
22673         (verify_memory_partitions): Likewise.
22674         (init_tree_ssa): Allocate bitmap instead of hashtable for
22675         referenced_vars.
22676         (delete_tree_ssa): Adjust.
22677         * tree-ssa-alias.c (mark_aliases_call_clobbered): Use
22678         FOR_EACH_REFERENCED_VAR_IN_BITMAP.
22679         (compute_tag_properties): Likewise.
22680         (set_initial_properties): Likewise.
22681         (find_partition_for): Likewise.
22682         (update_reference_counts): Likewise.
22683         (dump_may_aliases_for): Likewise.
22684         * tree-ssa-operands.c (add_virtual_operand): Likewise.
22685         (add_call_clobber_ops): Likewise.
22686         (add_call_read_ops): Likewise.
22687         (get_asm_expr_operands): Likewise.
22688         * tree-into-ssa.c (dump_decl_set): Likewise.
22689         (update_ssa): Likewise.
22690         * tree-sra.c (scan_function): Likewise.
22691         (decide_instantiations): Likewise.
22692         (scalarize_parms): Likewise.
22693         * tree-ssa-alias-warnings.c (build_reference_table): Likewise.
22694         (dsa_named_for): Likewise.
22695         * tree-ssa-structalias.c (update_alias_info): Likewise.
22696         (merge_smts_into): Likewise.
22697
22698 2008-02-25  Janne Blomqvist  <jb@gcc.gnu.org>
22699
22700         PR fortran/29549
22701         * doc/invoke.texi (-fcx-limited-range): Document new option.
22702         * toplev.c (process_options): Handle -fcx-fortran-rules.
22703         * common.opt: Add documentation for -fcx-fortran-rules.
22704
22705 2008-02-25  Janne Blomqvist  <jb@gcc.gnu.org>
22706
22707         PR c/35162
22708         * doc/invoke.texi (-fcx-limited-range): Correct to be in line with
22709         actual behaviour and C99.
22710
22711 2008-02-26  Ben Elliston  <bje@au.ibm.com>
22712
22713         * config/rs6000/rs6000.h (ASM_CPU_POWER5_SPEC): Define.
22714         (ASM_CPU_POWER6_SPEC): Likewise.
22715         (ASM_CPU_SPEC): Pass %(asm_cpu_power5) for -mcpu=power5.
22716         Likewise, pass %(asm_cpu_power6) for -mcpu=power6.
22717         (EXTRA_SPECS): Add asm_cpu_power5, asm_cpu_power6 spec strings.
22718
22719 2008-02-25  Richard Guenther  <rguenther@suse.de>
22720
22721         * tree-flow.h (uid_decl_map_hash, uid_decl_map_eq): Move ...
22722         * tree.h (uid_decl_map_hash, uid_decl_map_eq): ... here.
22723         (lookup_decl_from_uid): Declare.
22724         * tree-ssa.c (uid_decl_map_eq, uid_decl_map_hash): Move ...
22725         * tree.c (uid_decl_map_eq, uid_decl_map_hash): ... here.
22726         (decl_for_uid_map): New global hashtable mapping DECL_UID
22727         to the decl tree.
22728         (init_ttree): Allocate it.
22729         (insert_decl_to_uid_decl_map): New helper function.
22730         (make_node_stat): Insert new decls into the map.
22731         (copy_node_stat): Likewise.
22732         (lookup_decl_from_uid): New function.
22733         (print_decl_for_uid_map_statistics): New helper.
22734         (dump_tree_statistics): Call it.
22735
22736         * tree-flow.h (struct gimple_df): Make referenced_vars a bitmap.
22737         (referenced_var_iterator): Adjust.
22738         (FOR_EACH_REFERENCED_VAR): Adjust.
22739         (FOR_EACH_REFERENCED_VAR_IN_BITMAP): New iterator.
22740         (num_referenced_vars): Adjust.
22741         * tree-flow-inline.h (gimple_referenced_vars): Adjust.
22742         (first_referenced_var): Remove.
22743         (end_referenced_vars_p): Likewise.
22744         (next_referenced_var): Likewise.
22745         (referenced_var_iterator_set): New helper function.
22746         * tree-dfa.c (referenced_var_lookup): Adjust.
22747         (referenced_var_check_and_insert): Likewise.
22748         (remove_referenced_var): Likewise.
22749         * tree-ssa.c (verify_flow_insensitive_alias_info): Use
22750         FOR_EACH_REFERENCED_VAR_IN_BITMAP.
22751         (verify_call_clobbering): Likewise.
22752         (verify_memory_partitions): Likewise.
22753         (init_tree_ssa): Allocate bitmap instead of hashtable for
22754         referenced_vars.
22755         (delete_tree_ssa): Adjust.
22756         * tree-ssa-alias.c (mark_aliases_call_clobbered): Use
22757         FOR_EACH_REFERENCED_VAR_IN_BITMAP.
22758         (compute_tag_properties): Likewise.
22759         (set_initial_properties): Likewise.
22760         (find_partition_for): Likewise.
22761         (update_reference_counts): Likewise.
22762         (dump_may_aliases_for): Likewise.
22763         * tree-ssa-operands.c (add_virtual_operand): Likewise.
22764         (add_call_clobber_ops): Likewise.
22765         (add_call_read_ops): Likewise.
22766         (get_asm_expr_operands): Likewise.
22767         * tree-into-ssa.c (dump_decl_set): Likewise.
22768         (update_ssa): Likewise.
22769         * tree-sra.c (scan_function): Likewise.
22770         (decide_instantiations): Likewise.
22771         (scalarize_parms): Likewise.
22772         * tree-ssa-alias-warnings.c (build_reference_table): Likewise.
22773         (dsa_named_for): Likewise.
22774         * tree-ssa-structalias.c (update_alias_info): Likewise.
22775         (merge_smts_into): Likewise.
22776
22777 2008-02-25  Andreas Krebbel  <krebbel1@de.ibm.com>
22778
22779         PR target/35258
22780         * cse.c (cse_insn): Avoid creation of overlapping MEMs.
22781         * alias.c (nonoverlapping_memrefs_p): Export for use in other modules.
22782         * alias.h (nonoverlapping_memrefs_p): Likewise.
22783
22784 2008-02-25  Jan Beulich  <jbeulich@novell.com>
22785
22786         * Makefile.in: Also prefix uses of crt0.o and mcrt0.o with $(T).
22787         * config/i386/netware-libgcc.exp: Add __bswap?i2,
22788         __emultls_get_address, __emultls_register_common,
22789         __floatundi?f, and _Unwind_GetIPInfo.
22790         * config/i386/netware.c (gen_stdcall_or_fastcall_decoration):
22791         Sync with config/i386/winnt.c:gen_stdcall_or_fastcall_suffix().
22792         (gen_regparm_prefix): Likewise.
22793         (i386_nlm_encode_section_info): Sync with
22794         config/i386/winnt.c:i386_pe_encode_section_info().
22795         (i386_nlm_maybe_mangle_decl_assembler_name): New.
22796         i386_nlm_mangle_decl_assembler_name): New.
22797         (netware_override_options): New.
22798         * config/i386/netware.h (netware_override_options): Declare.
22799         (OVERRIDE_OPTIONS): Re-define to netware_override_options.
22800         (i386_nlm_mangle_decl_assembler_name): Declare.
22801         (TARGET_MANGLE_DECL_ASSEMBLER_NAME): Define.
22802
22803 2008-02-25  Ben Elliston  <bje@au.ibm.com>
22804
22805         PR other/32948
22806         * c-decl.c (grokdeclarator): Remove unused local variables
22807         `typedef_type' and `type_as_written'.
22808         * bb-reorder.c
22809         (find_rarely_executed_basic_blocks_and_crossing_edges): Remove
22810         unused local variable `has_hot_blocks'.
22811         (fix_crossing_conditional_branches): Remove unused local variable
22812         `prev_bb'.
22813
22814 2008-02-25  Uros Bizjak  <ubizjak@gmail.com>
22815
22816         PR middle-end/19984
22817         * builtins.def (BUILT_IN_NAN): Define as c99 builtin
22818         using DEF_C99_BUILTIN.
22819         (BUILT_IN_NANF): Ditto.
22820         (BUILT_IN_NANL): Ditto.
22821
22822 2008-02-25  Ayal Zaks  <zaks@il.ibm.com>
22823             Revital Eres  <eres@il.ibm.com>
22824
22825         * modulo-sched.c (calculate_must_precede_follow): Address TODO
22826         regarding the order of two dependent insns in the same row.
22827
22828 2008-02-25  Eric Botcazou  <ebotcazou@adacore.com>
22829
22830         * stor-layout.c (layout_decl): Do not bump the alignment of a
22831         bit-field to more than byte alignment if it is packed.
22832
22833 2008-02-24  David Edelsohn  <edelsohn@gnu.org>
22834
22835         * config/rs6000/rs6000.c (processor_costs): Add cache costs for
22836         e300c2 and e300c3.
22837
22838 2008-02-24  Diego Novillo  <dnovillo@google.com>
22839
22840         http://gcc.gnu.org/ml/gcc-patches/2008-02/msg01094.html
22841
22842         PR 33738
22843         * tree-vrp.c (vrp_evaluate_conditional): With
22844         -Wtype-limits, emit a warning when comparing against a
22845         constant outside the natural range of OP0's type.
22846         * c.opt (Wtype-limits): Move ...
22847         * common.opt (Wtype-limits): ... here.
22848
22849 2008-02-24  Edmar Wienskoski  <edmar@freescale.com>
22850
22851         * config.gcc (powerpc*-*-*): Add new cores e300c2 and e300c3.
22852         * config/rs6000/e300c2c3.md: New file.
22853         * config/rs6000/rs6000.c (processor_costs): Add new costs for
22854         e300c2 and e300c3.
22855         (rs6000_override_options): Add e300c2 and e300c3 cases to
22856         processor_target_table. Do not allow usage of Altivec or Spe
22857         with e300 cores. Initialize rs6000_cost for e300c2 and e300c3.
22858         (rs6000_issue_rate): Set issue rate for e300c2 and e300c3.
22859         * config/rs6000/rs6000.h (processor_type): Add
22860         PROCESSOR_PPCE300C2 and PROCESSOR_PPCE300C3.
22861         (ASM_CPU_SPEC): Add e300c2 and e300c3.
22862         * config/rs6000/rs6000.md (define_attr "cpu"): Add ppce300c2
22863         and ppce300c3. Include e300c2c3.md.
22864
22865 2008-02-23  David Edelsohn  <edelsohn@gnu.org>
22866
22867         * config/rs6000/rs6000.h (CONSTANT_ALIGNMENT): Use STRICT_ALIGNMENT
22868         instead of TARGET_STRICT_ALIGN.
22869
22870 2008-02-23  Joseph Myers  <joseph@codesourcery.com>
22871
22872         * explow.c (memory_address): Assert that the generated address is
22873         valid.
22874
22875 2008-02-23  Francois-Xavier Coudert  <coudert@clipper.ens.fr>
22876
22877         PR target/25477
22878         * config/darwin-protos.h: Add darwin_patch_builtins prototype.
22879         * config/darwin-ppc-ldouble-patch.def: New file.
22880         * config/rs6000/darwin.h (SUBTARGET_INIT_BUILTINS): New macro.
22881         * config/rs6000/rs6000.c (rs6000_init_builtins): Call
22882         SUBTARGET_INIT_BUILTINS if defined.
22883         * config/darwin.c (darwin_patch_builtin, darwin_patch_builtins):
22884         New functions.
22885
22886 2008-02-23  Andrew Pinski  <andrew_pinski@playstation.sony.com>
22887
22888         PR rtl-opt/33512
22889         * simplify-rtx.c (simplify_binary_operation_1): Add simplification
22890         of (and X (ior (not X) Y) and (and (ior (not X) Y) X).
22891
22892 2008-02-23  Andrew Pinski  <andrew_pinski@playstation.sony.com>
22893
22894         PR pch/35027
22895         * c-pch.c (c_common_valid_pch): Make the "too short to be a PCH
22896         file" warning condtional on -Winvalid-PCH.
22897
22898 2008-02-23  Daniel Jacobowitz  <dan@codesourcery.com>
22899
22900         * expmed.c (extract_bit_field): Always use adjust_address for MEM.
22901
22902 2008-02-23  Uros Bizjak  <ubizjak@gmail.com>
22903
22904         PR target/22076
22905         PR target/34256
22906         * config/i386/mmx.md (*mov<mode>_internal_rex64): Use "!y" to
22907         prevent reload from using MMX registers.
22908         (*mov<mode>_internal): Ditto.
22909         (*movv2sf_internal_rex64): Ditto.
22910         (*movv2sf_internal): Ditto.
22911
22912 2008-02-23  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
22913
22914         PR documentation/31569
22915         * doc/install.texi2html: Use makeinfo --no-number-sections.
22916
22917 2008-02-22  Nathan Froyd  <froydnj@codesourcery.com>
22918
22919         * config/rs6000/rs6000.c (rs6000_legitimize_address): Check to
22920         ensure that we can address an entire entity > 8 bytes.  Don't
22921         generate reg+reg addressing for such data.
22922
22923 2008-02-22  Nathan Froyd  <froydnj@codesourcery.com>
22924
22925         * config/rs6000/rs6000.h (CONSTANT_ALIGNMENT): Don't overalign
22926         strings when optimizing for size, unless the target cares about
22927         alignment.
22928
22929 2008-02-22  Tom Tromey  <tromey@redhat.com>
22930
22931         * regclass.c (current_pass): Remove declaration.
22932
22933 2008-02-22  Anatoly Sokolov <aesok@post.ru>
22934
22935         * config/avr/libgcc.S (__RAMPZ__): Define.
22936         (__do_copy_data): Add for devices with 128KB code memory.
22937
22938 2008-02-22  Nathan Froyd  <froydnj@codesourcery.com>
22939
22940         * config/rs6000/linuxspe.h (SUBSUBTARGET_OVERRIDE_OPTIONS):
22941         Use spe_abi.
22942         * config/rs6000/eabispe.h (SUBSUBTARGET_OVERRIDE_OPTIONS): Likewise.
22943
22944 2008-02-22  Hans-Peter Nilsson  <hp@axis.com>
22945
22946         * config/cris/cris.h (REG_CLASS_FROM_LETTER): Recognize 'b' for
22947         GENNONACR_REGS.
22948
22949 2008-02-22  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
22950
22951         PR c/19999
22952         * c-typeck.c (build_binary_op): Warn about floating point
22953         comparisons if FLOAT_TYPE_P, not only for REAL_TYPE.
22954
22955 2008-02-21  Janis Johnson  <janis187@us.ibm.com>
22956
22957         PR target/34526
22958         * config/rs6000/rs6000.c (rs6000_altivec_abi): Clarify comment.
22959         (rs6000_explicit_options): Split abi into spe_abi and altivec_abi,
22960         add vrsave.
22961         (rs6000_override_options): Set altivec_abi as default, not override,
22962         for 64-bit GNU/Linux; for 32-bit GNU/Linux default to altivec_abi for
22963         TARGET_ALTIVEC; default to TARGET_ALTIVEC_VRSAVE when AltiVec ABI
22964         is used; use new member spe_abi.
22965         (rs6000_handle_option): Set rs6000_explicit_options.vrsave; use
22966         spe_abi and altivec_abi.
22967
22968 2008-02-22  Tomas Bily  <tbily@suse.cz>
22969
22970         * tree-vectorizer.c (vect_is_simple_reduction): Fix comment typo.
22971
22972 2008-02-21  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
22973
22974         PR bootstrap/35273
22975         * config.build (build_file_translate): Set to `CMD //c' only if
22976         it works.
22977         * Makefile.in (build_file_translate): Improve comment.
22978
22979 2008-02-21  Jan Hubicka  <jh@suse.cz>
22980
22981         * predict.def (PRED_TREE_OPCODE_POSITIVE, PRED_TREE_OPCODE_NONEQUAL,
22982         PRED_TREE_OPCODE_POSITIVE, PRED_TREE_OPCODE_NONEQUAL, PRED_CALL,
22983         PRED_TREE_EARLY_RETURN, PRED_NULL_RETURN): Update.
22984
22985 2008-02-21  Michael Matz  <matz@suse.de>
22986
22987         PR target/35264
22988         * config/i386/i386.c (ix86_expand_branch): Add missing breaks.
22989
22990 2008-02-21  Uros Bizjak  <ubizjak@gmail.com>
22991
22992         * config/i386/i386.md (mov<mode>cc): Macroize expander from movsfcc,
22993         movdfcc and movxfcc using X87MODEF mode iterator and SSE_FLOAT_MODE_P
22994         as insn constraint.
22995         * config/i386/sse.md (<sse>_movup<ssemodesuffixf2c>): Macroize insn
22996         from sse_movups adn sse2_movupd using SSEMODEF2P mode iterator and
22997         SSE_VEC_FLOAT_MODE_P as insn constraint.
22998         (<sse>_movmskp<ssemodesuffixf2c>): Ditto from similar patterns.
22999         (sse4a_movnt<mode>): Macroize insn from sse4a_movntsf and
23000         sse4a_movntdf using MODEF mode iterator.
23001         (sse4a_vmmovnt<mode>): Macroize insn form sse4a_vmmovntv2df and
23002         sse4a_vmmovntv4sf using SSEMODEF2P mode iterator.
23003         (sse4_1_blendp<ssemodesuffixf2c>): Ditto from similar patterns.
23004         (sse4_1_blendvp<ssemodesuffixf2c>): Ditto.
23005         (sse4_1_dpp<ssemodesuffixf2c>): Ditto.
23006         (sse4_1_roundp<ssemodesuffixf2c>): Ditto.
23007         (sse4_1_rounds<ssemodesuffixf2c>): Ditto.
23008
23009 2008-02-21  Richard Guenther  <rguenther@suse.de>
23010
23011         * tree.def (PAREN_EXPR): New tree code.
23012         * fold-const.c (fold_unary): Remove PAREN_EXPR around constants
23013         and PAREN_EXPR.
23014         * tree-pretty-print.c (dump_generic_node): Handle PAREN_EXPR.
23015         * expr.c (expand_expr_real_1): Likewise.
23016         * tree-inline.c (estimate_num_insns_1): Likewise.
23017         * tree-complex.c (expand_complex_move): Likewise.
23018         * tree-vectorizer.c (vect_is_simple_use): Treat PAREN_EXPR (x)
23019         as plain x.
23020
23021 2008-02-20  Kaz Kojima  <kkojima@gcc.gnu.org>
23022
23023         PR target/35225
23024         * config/sh/sh.c (find_barrier): Don't go past 'from' argument.
23025
23026 2008-02-20  Kaz Kojima  <kkojima@gcc.gnu.org>
23027
23028         PR target/35190
23029         * config/sh/sh.md (jump_compact): Disable for crossing jumps.
23030
23031         * config/sh/sh.c (find_barrier): Don't go past
23032         NOTE_INSN_SWITCH_TEXT_SECTIONS note.
23033
23034 2008-02-20  DJ Delorie  <dj@redhat.com>
23035
23036         * config/h8300/h8300.md (insv): Force source operand to be a register.
23037
23038         * config/h8300/h8300.c (h8300_expand_epilogue): Emit return insn
23039         as a jump, not as a plain insn.
23040
23041 2008-02-20  Seongbae Park <seongbae.park@gmail.com>
23042
23043         * doc/invoke.texi (Warning Options): Add new option
23044         -Wframe-larger-than=.
23045         (-Wframe-larger-than): Document.
23046
23047         * flags.h (warn_frame_larger_than, frame_larger_than_size):
23048         Add declarations for new option variables.
23049
23050         * final.c (final_start_function): Check the frame size
23051         before emission and issue a Wframe-larger-than warning.
23052
23053         * opts.c (warn_frame_larger_than, frame_larger_than_size):
23054         Add definitions for new option variables.
23055         (common_handle_option): Handle new option OPT_Wframe_larger_than_.
23056
23057         * common.opt (Wframe-larger-than=): New option.
23058
23059 2008-02-20  Uros Bizjak  <ubizjak@gmail.com>
23060
23061         * config/i386/sse.md (<sse>_vmmul<mode>3): Fix typo in asm template.
23062         (<sse>_div<mode>3): Ditto.
23063         (<sse>_vmdiv<mode>3): Ditto.
23064         (<sse>_vmsqrt<mode>2): Ditto.
23065         (*smax<mode>3): Ditto.
23066         (sse5_frcz<mode>2): Ditto.
23067         (sse5_vmfrcz<mode>2): Ditto.  Use TARGET_SSE5 instead of TARGET_ROUND
23068         as insn constraint.
23069
23070 2008-02-20  Richard Guenther  <rguenther@suse.de>
23071
23072         PR middle-end/35265
23073         * builtins.c (validate_arg): If we want an INTEGER_TYPE,
23074         be happy with INTEGRAL_TYPE_P.
23075
23076 2008-02-20  Richard Guenther  <rguenther@suse.de>
23077
23078         * fold-const.c (split_tree): Associate floatig-point expressions
23079         if flag_associative_math is set.
23080
23081 2008-02-20  Richard Guenther  <rguenther@suse.de>
23082
23083         * tree.h (fold_real_zero_addition_p): Declare.
23084         * fold-const.c (fold_real_zero_addition_p): Export.
23085         * tree-ssa-reassoc.c (eliminate_using_constants): Also handle
23086         floating-point operations with zero and one.
23087
23088 2008-02-20  Paolo Bonzini  <bonzini@gnu.org>
23089
23090         * doc/install.texi: Correct references to CFLAGS, replacing them
23091         with BOOT_CFLAGS.  Document flags used during bootstrap for
23092         target libraries.
23093
23094 2008-02-20  Uros Bizjak  <ubizjak@gmail.com>
23095
23096         * config/i386/i386.h (SSE_VEC_FLOAT_MODE_P): New define.
23097         * config/i386/i386.md (*sse_setcc<mode>): Macroize from *sse_setccsf
23098         and *sse_setccdf using MODEF mode iterator and SSE_FLOAT_MODE_P as
23099         insn constraint.
23100         (smin<mode>3): Ditto from similar patterns.
23101         (smax<mode>3): Ditto.
23102         (*ieee_smin<mode>3): Ditto.
23103         (*ieee_smax<mode>3): Ditto.
23104         * config/i386/sse.md (sse): New mode attribute.
23105         (mov<mode>): Macroize expander from movv4sf and movv2df using
23106         SSEMODEF2P mode iterator.
23107         (<sse>_movnt<mode>): Ditto from similar patterns. Use
23108         SSE_VEC_FLOAT_MODE_P as insn constraint.
23109         (storent<mode>): Ditto.
23110         (storent<mode>): Macroize expander from storentsf and storentdf using
23111         MODEF mode iterator.
23112         (neg<mode>2): Macroize from negv4sf2 and negv2df2 using SSEMODEF2P
23113         mode iterator and SSE_VEC_FLOAT_MODE_P as insn constraint.
23114         (abs<mode>2): Ditto from similar patterns.
23115         (add<mode>3, *add<mode>3, <sse>_vmadd<mode>3): Ditto.
23116         (sub<mode>3, *sub<mode>3, <sse>_vmsub<mode>3): Ditto.
23117         (<sse>_div<mode>3, <sse>_vmdiv<mode>3): Ditto.
23118         (<sse>_vmsqrt<mode>2): Ditto.
23119         (smin<mode>3, *smin<mode>3_finite, *smin<mode>3)
23120         (<sse>_vmsmin<mode>3, *ieee_smin<mode>3): Ditto.
23121         (smax<mode>3, *smax<mode>3_finite, *smax<mode>3)
23122         (<sse>_vmsmax<mode>3, *ieee_smax<mode>3): Ditto.
23123         (<sse>_maskcmp<mode>3): Macroize from sse_maskcmpv4sf3,
23124         sse_maskcmpsf3, sse2_maskcmpv2df3 and sse2_maskcmpdf3 using SSEMODEF4
23125         mode iterator. Use SSE_FLOAT_MODE_P with SSE_VEC_FLOAT_MODE_P as
23126         insn constraint.
23127         (<sse>_comi): Macroize from sse_comi and sse2_comi using MODEF mode
23128         iterator and SSE_FLOAT_MODE_P as insn constraint.
23129         (<sse>_ucomi): Ditto from similar patterns.
23130         (<sse>_vmmaskcmp<mode>3): Macroize from sse_vmmaskcmpv4sf3 and
23131         sse2_vmmaskcmpv2df3 using SSEMODEF2P mode iterator and
23132         SSE_VEC_FLOAT_MODE_P as insn constraint.
23133         (vcond<mode>): Ditto from similar patterns.
23134         (and<mode>3, *and<mode>3): Ditto.
23135         (<sse>_nand<mode>3): Ditto.
23136         (ior<mode>3, *ior<mode>3): Ditto.
23137         (xor<mode>3, *xor<mode>3): Ditto.
23138         (*and<mode>3): Macroize from *andsf3 and *anddf3 using MODEF mode
23139         iterator and SSE_FLOAT_MODE_P as insn constraint.
23140         (*nand<mode>3): Ditto from similar patterns.
23141         (*ior<mode>3): Ditto.
23142         (*xor<mode>3): Ditto.
23143
23144 2008-02-20  Ira Rosen  <irar@il.ibm.com>
23145
23146         * config/spu/spu.md (vec_unpacku_hi_v8hi, vec_unpacku_lo_v8hi,
23147         vec_unpacks_hi_v8hi, vec_unpacks_lo_v8hi, vec_unpacku_hi_v16qi,
23148         vec_unpacku_lo_v16qi, vec_unpacks_lo_v16qi): Implement.
23149
23150 2008-02-19  Jan Hubicka  <jh@suse.cz>
23151
23152         * predict.c (tree_bb_level_predictions): Remove variable next
23153         mistakely introduced by previous commit.
23154
23155 2008-02-19  Jan Hubicka  <jh@suse.cz>
23156
23157         * predict.c (predict_paths_leading_to): Rewrite.
23158         (predict_paths_for_bb): New.
23159         (tree_bb_level_predictions): Update call of predict_paths_leading_to.
23160
23161 2008-02-19  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
23162
23163         PR bootstrap/35218
23164         * Makefile.in (build_file_translate): New.
23165         (gcc-vers.texi): Use it for translating $(abs_srcdir).
23166         * config.build (build_file_translate): Set to `CMD //c' on MinGW.
23167         * configure.ac (build_file_translate): Substitute it.
23168         * configure: Regenerate.
23169
23170 2008-02-19  Jan Hubicka  <jh@suse.cz>
23171
23172         PR rtl-optimization/34408
23173         * see.c (see_def_extension_not_merged): Copy subreg so we don't have
23174         invalid sharing.
23175
23176 2008-02-19  Jan Hubicka  <jh@suse.cz>
23177
23178         PR middle-end/28779
23179         * tree-inline.c (estimate_num_insns_1): Fix counting of cost of
23180         call_expr.
23181
23182 2008-02-19  H.J. Lu  <hongjiu.lu@intel.com>
23183
23184         PR Ada/35186
23185         * config/i386/i386-modes.def: Revert the last DI alignment
23186         change until Ada people can look into it.
23187
23188 2008-02-19  Nick Clifton  <nickc@redhat.com>
23189
23190         * opts.c (print_specific_help): Fix typo in --help text.
23191
23192 2008-02-19  Jakub Jelinek  <jakub@redhat.com>
23193
23194         PR target/35239
23195         * config/i386/cpuid.h (__cpuid, __get_cpuid_max): Use special
23196         32-bit inline asm without asm alternatives for host GCC < 3.0.
23197
23198 2008-02-19  Richard Guenther  <rguenther@suse.de>
23199
23200         PR tree-optimization/34989
23201         * tree-ssa-forwprop.c (forward_propagate_addr_expr_1): Re-structure.
23202         Allow propagation to INDIRECT_REF if we can simplify only.
23203
23204 2008-02-19  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
23205
23206         * c-common.c (warn_for_collisions_1): Use appropriate option when
23207         warning.
23208
23209 2008-02-19  Nick Clifton  <nickc@redhat.com>
23210
23211         PR other/31349
23212         * opts.c (undocumented_msg): Leave blank unless checking is enabled.
23213         (handle_options): Fix indentation.
23214         (print_filtered_help): If no language-specific options were
23215         displayed tell the user how to list all the options supported by
23216         the language's front-end.
23217         (print_specific_help): Fix indentation and remove duplicate line.
23218         (common_handle_option): Handle the -v option.
23219         For --help enable the display of undocumented options if the -v
23220         switch has been included on the command line.
23221         For --help= check for overlaps in the arguments between the option
23222         classes and the language names and issue a warning when they
23223         cannot be disambiguated.
23224         * c.opt (v): Pass on to the common option handler.
23225
23226 2008-02-19  Revital Eres  <eres@il.ibm.com>
23227
23228         * modulo-sched.c (sms_schedule): Change dump message when
23229         create_ddg function fails.
23230         (try_scheduling_node_in_cycle): Rename row to cycle.
23231         (print_partial_schedule): Rename CYCLE to ROW.
23232
23233 2008-02-19  Christian Bruel  <christian.bruel@st.com>
23234             Zdenek Dvorak  <ook@ucw.cz>
23235
23236         * tree-ssa-loop-ivopts.c (may_be_unaligned_p): Check step alignment.
23237
23238 2008-02-19  Uros Bizjak  <ubizjak@gmail.com>
23239
23240         PR target/33555
23241         * config/i386/i386.md (*x86_movsicc_0_m1_se): New insn pattern.
23242         (*x86_movdicc_0_m1_se): Ditto.
23243
23244 2008-02-19  Uros Bizjak  <ubizjak@gmail.com>
23245
23246         * config/i386/sfp-machine.h (__gcc_CMPtype): New typedef.
23247         (CMPtype): Define as __gcc_CMPtype.
23248         * config/rs6000/sfp-machine.h (__gcc_CMPtype): New typedef.
23249         (CMPtype): Define as __gcc_CMPtype.
23250
23251 2008-02-19  Hans-Peter Nilsson  <hp@axis.com>
23252
23253         Support valgrind 3.3 for --enable-checking=valgrind.
23254         * system.h: Consolidate ENABLE_VALGRIND_CHECKING-dependent defines
23255         here.
23256         [!VALGRIND_MAKE_MEM_NOACCESS]: Define as VALGRIND_MAKE_NOACCESS.
23257         [!VALGRIND_MAKE_MEM_DEFINED]: Define as VALGRIND_MAKE_READABLE.
23258         [!VALGRIND_MAKE_MEM_UNDEFINED]: Define as VALGRIND_MAKE_WRITABLE.
23259         * ggc-common.c: Remove ENABLE_VALGRIND_CHECKING-dependent defines.
23260         Replace use of VALGRIND_MAKE_READABLE, VALGRIND_MAKE_WRITABLE, and
23261         VALGRIND_MAKE_NOACCESS with VALGRIND_MAKE_MEM_DEFINED,
23262         VALGRIND_MAKE_MEM_UNDEFINED, and VALGRIND_MAKE_MEM_NOACCESS
23263         respectively.
23264         * ggc-zone.c: Similar.
23265         * ggc-page.c: Similar.
23266
23267 2008-02-19  Paul Brook  <paul@codesourcery.com>
23268
23269         PR target/35071
23270         * config/arm/ieee754-df.S: Fix do_it typo.
23271         * config/arm/ieee754-sf.S: Fix do_it typo.
23272
23273 2008-02-18  H.J. Lu  <hongjiu.lu@intel.com>
23274
23275         PR target/35189
23276         * config/i386/i386.c (OPTION_MASK_ISA_MMX_SET): New.
23277         (OPTION_MASK_ISA_3DNOW_SET): Likewise.
23278         (OPTION_MASK_ISA_SSE_SET): Likewise.
23279         (OPTION_MASK_ISA_SSE2_SET): Likewise.
23280         (OPTION_MASK_ISA_SSE3_SET): Likewise.
23281         (OPTION_MASK_ISA_SSSE3_SET): Likewise.
23282         (OPTION_MASK_ISA_SSE4_1_SET): Likewise.
23283         (OPTION_MASK_ISA_SSE4_2_SET): Likewise.
23284         (OPTION_MASK_ISA_SSE4_SET): Likewise.
23285         (OPTION_MASK_ISA_SSE4A_SET): Likewise.
23286         (OPTION_MASK_ISA_SSE5_SET): Likewise.
23287         (OPTION_MASK_ISA_3DNOW_A_UNSET): Likewise.
23288         (OPTION_MASK_ISA_MMX_UNSET): Updated.
23289         (OPTION_MASK_ISA_3DNOW_UNSET): Updated.
23290         (OPTION_MASK_ISA_SSE_UNSET): Likewise.
23291         (OPTION_MASK_ISA_SSE3_UNSET): Likewise.
23292         (OPTION_MASK_ISA_SSSE3_UNSET): Likewise.
23293         (OPTION_MASK_ISA_SSE4_1_UNSET): Likewise.
23294         (OPTION_MASK_ISA_SSE4_2_UNSET): Likewise.
23295         (OPTION_MASK_ISA_SSE4A_UNSET): Likewise.
23296         (OPTION_MASK_ISA_SSE5_UNSET): Likewise.
23297         (OPTION_MASK_ISA_SSE4): Removed.
23298         (ix86_handle_option): Turn on bits in ix86_isa_flags and
23299         ix86_isa_flags_explicit with OPTION_MASK_ISA_XXX_SET for -mXXX.
23300         (override_options): Don't turn on implied SSE/MMX bits in
23301         ix86_isa_flags.
23302
23303 2008-02-18  H.J. Lu  <hongjiu.lu@intel.com>
23304
23305         * config/i386/i386-modes.def: Use 4 byte alignment on DI for
23306         32bit host.
23307
23308 2008-02-18  Joey Ye  <joey.ye@intel.com>
23309
23310         PR middle-end/34921
23311         * tree-nested.c (insert_field_into_struct): Set type alignment
23312         to field alignment if the former is less than the latter.
23313
23314 2008-02-18  Jakub Jelinek  <jakub@redhat.com>
23315
23316         * BASE-VER: Set to 4.4.0.
23317
23318 2008-02-17 Ralf Wildenhues <Ralf.Wildenhues@gmx.de>
23319
23320         * doc/c-tree.texi: Use @dots{} and @enddots{} where appropriate.
23321         * doc/cfg.texi: Likewise.
23322         * doc/extend.texi: Likewise.
23323         * doc/gty.texi: Likewise.
23324         * doc/invoke.texi: Likewise.
23325         * doc/loop.texi: Likewise.
23326         * doc/md.texi: Likewise.
23327         * doc/passes.texi: Likewise.
23328         * doc/rtl.texi: Likewise.
23329         * doc/sourcebuild.texi: Likewise.
23330         * doc/tm.texi: Likewise.
23331         * doc/tree-ssa.texi: Likewise.
23332
23333 2008-02-17  Richard Guenther  <rguenther@suse.de>
23334
23335         PR middle-end/35227
23336         * tree-complex.c (init_parameter_lattice_values): Handle parameters
23337         without default definition.
23338
23339 2008-02-17  Richard Guenther  <rguenther@suse.de>
23340
23341         PR tree-optimization/35231
23342         * tree-vrp.c (register_edge_assert_for): Do not assume A == 0
23343         if A | B != 1.
23344
23345 2008-02-17  Uros Bizjak  <ubizjak@gmail.com>
23346
23347         Revert:
23348         2008-02-15  Uros Bizjak  <ubizjak@gmail.com>
23349         * config/i386/sfp-machine.h (CMPtype): Define as typedef using
23350         libgcc_cmp_return mode.
23351
23352 2008-02-16  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
23353
23354         PR c/28368
23355         * doc/invoke.texi (-std): Clarify description of -std= and -ansi.
23356
23357 2008-02-16  Ralf Corsepius  <ralf.corsepius@rtems.org>
23358
23359         * config/m68k/t-rtems (M68K_MLIB_CPU): Add 5208, 5307, 5407, 5475
23360         multilibs.
23361
23362 2008-02-16  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
23363
23364         * doc/c-tree.texi: Use `@.' where appropriate.
23365         * doc/extend.texi: Likewise.
23366         * doc/install.texi: Likewise.
23367         * doc/invoke.texi: Likewise.
23368         * doc/loop.texi: Likewise.
23369         * doc/makefile.texi: Likewise.
23370         * doc/md.texi: Likewise.
23371         * doc/passes.texi: Likewise.
23372         * doc/standards.texi: Likewise.
23373         * doc/tm.texi: Likewise.
23374
23375 2008-02-15  Jakub Jelinek  <jakub@redhat.com>
23376
23377         PR middle-end/35196
23378         * omp-low.c (expand_omp_for_generic): Don't initialize fd->v
23379         in entry_bb.
23380         (expand_omp_for_static_nochunk): Initialize fd->v in seq_start_bb
23381         rather than in entry_bb.
23382
23383 2008-02-15  Uros Bizjak  <ubizjak@gmail.com>
23384
23385         * config/i386/sfp-machine.h (CMPtype): Define as typedef using
23386         libgcc_cmp_return mode.
23387
23388 2008-02-15  Jakub Jelinek  <jakub@redhat.com>
23389
23390         PR middle-end/35130
23391         * tree-nested.c (convert_call_expr): Put FRAME.* vars into
23392         OMP_CLAUSE_SHARED rather than OMP_CLAUSE_FIRSTPRIVATE clause.
23393
23394 2008-02-15  Richard Guenther  <rguenther@suse.de>
23395             Zdenek Dvorak  <ook@ucw.cz>
23396
23397         PR tree-optimization/35164
23398         * tree-flow.h (stmt_references_abnormal_ssa_name): Declare.
23399         * tree-dfa.c (stmt_references_abnormal_ssa_name): New function.
23400         * tree-ssa-forwprop.c (tree_ssa_forward_propagate_single_use_vars):
23401         Only propagate addresses which do not have abnormal SSA_NAMEs
23402         in their operands.
23403
23404 2008-02-15  Joseph Myers  <joseph@codesourcery.com>
23405
23406         PR target/35088
23407         * config/m68k/m68k.h (DWARF_CIE_DATA_ALIGNMENT): Define.
23408
23409 2008-02-15  Jan Hubicka  <jh@suse.cz>
23410
23411         PR middle-end/35149
23412         * ipa.c (cgraph_remove_unreachable_nodes): Clear local.inlinable flag.
23413
23414 2008-02-15  Uros Bizjak  <ubizjak@gmail.com>
23415
23416         PR middle-end/34621
23417         * function.c (pad_to_arg_alignment): Remove test for STACK_BOUNDARY
23418         when calculating alignment_pad.
23419
23420 2008-02-15  Uros Bizjak  <ubizjak@gmail.com>
23421
23422         * config/i386/i386.h (CLEAR_RATIO): Use MIN macro.
23423         (WIDEST_HARDWARE_FP_SIZE): Use LONG_DOUBLE_TYPE_SIZE define.
23424         * config/i386/darwin.h (PREFERRED_STACK_BOUNDARY): Use MAX macro
23425         and STACK_BOUNDARY define.
23426
23427 2008-02-14  Danny Smith  <dannysmith@users.sourceforge.net>
23428
23429         PR preprocessor/35061
23430         * c-pragma.c (handle_pragma_pop_macro): Check that
23431         pushed_macro_table has been allocated.
23432
23433 2008-02-14  Eric Botcazou  <ebotcazou@adacore.com>
23434
23435         PR middle-end/35136
23436         * gimplify.c (force_gimple_operand_bsi): Revert 2008-02-12 change.
23437         (force_gimple_operand): Likewise.
23438         * tree-ssa-loop-ivopts.c (may_be_nonaddressable_p): Add new cases
23439         for TARGET_MEM_REF and CONVERT_EXPR/NON_LVALUE_EXPR/NOP_EXPR.
23440         Also recurse on the operand for regular VIEW_CONVERT_EXPRs.
23441         (find_interesting_uses_address): Check addressability and alignment
23442         of the base expression only after substituting bases of IVs into it.
23443
23444 2008-02-14  Michael Matz  <matz@suse.de>
23445
23446         PR target/34930
23447         * function.c (instantiate_virtual_regs_in_insn): Reload address
23448         before falling back to reloading the whole operand.
23449
23450 2008-02-14  Andreas Krebbel  <krebbel1@de.ibm.com>
23451
23452         * config/s390/s390.c (s390_mainpool_start): Emit the pool
23453         before the first section switch note.
23454
23455 2008-02-14 Ralf Wildenhues <Ralf.Wildenhues@gmx.de>
23456
23457         * doc/bugreport.texi: Update copyright years.
23458         * doc/c-tree.texi: Likewise.
23459         * doc/cfg.texi: Likewise.
23460         * doc/cpp.texi: Likewise.
23461         * doc/cppinternals.texi: Likewise.
23462         * doc/fragments.texi: Likewise.
23463         * doc/frontends.texi: Likewise.
23464         * doc/gcc.texi: Likewise.
23465         * doc/gty.texi: Likewise.
23466         * doc/hostconfig.texi: Likewise.
23467         * doc/implement-c.texi: Likewise.
23468         * doc/libgcc.texi: Likewise.
23469         * doc/loop.texi: Likewise.
23470         * doc/makefile.texi: Likewise.
23471         * doc/options.texi: Likewise.
23472         * doc/passes.texi: Likewise.
23473         * doc/rtl.texi: Likewise.
23474         * doc/sourcebuild.texi: Likewise.
23475         * doc/standards.texi: Likewise.
23476         * doc/tree-ssa.texi: Likewise.
23477         * doc/trouble.texi: Likewise.
23478
23479         * doc/extend.texi: Use @: or add comma where appropriate.
23480         * doc/invoke.texi: Likewise.
23481         * doc/tm.texi: Likewise.
23482
23483 2008-02-14  Alan Modra  <amodra@bigpond.net.au>
23484
23485         PR target/34393
23486         * config/rs6000/rs6000.md (restore_stack_block): Force operands[1]
23487         to a reg.
23488
23489 2008-02-14  Jesper Nilsson  <jesper.nilsson@axis.com>
23490
23491         * doc/md.texi (clz, ctz): Add reference.
23492         * doc/rtl.texi (clz, ctz): Likewise.
23493
23494 2008-02-13  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
23495
23496         PR other/35148
23497         * Makefile.in (gcc-vers.texi): Use abs_srcdir for the value of
23498         srcdir.
23499
23500 2008-02-13  Andreas Krebbel  <krebbel1@de.ibm.com>
23501
23502         * config/s390/s390.c (struct constant_pool): New field
23503         emit_pool_after added.
23504         (s390_mainpool_start): Set the emit_pool_after flag according
23505         to the section switch notes.
23506         (s390_mainpool_finish): Consider emit_pool_after when emitting
23507         the literal pool at the end of the function.
23508         (s390_chunkify_start): Force literal pool splits at section
23509         switch notes.
23510
23511 2008-02-13  Michael Matz  <matz@suse.de>
23512
23513         PR debug/35065
23514         * var-tracking.c (clobber_variable_part): Correctly traverse the
23515         list.
23516
23517 2008-02-13  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
23518
23519         PR 29673
23520         * doc/invoke.texi (Debugging Options): Remove -fdump-tree-inlined.
23521         Add -fdump-ipa-inline.
23522         * tree-dump.c (dump_files): Remove tree-inlined dump.
23523         * tree-pass.h (tree_dump_index): Remove TDI_inlined.
23524
23525 2008-02-12  Richard Guenther  <rguenther@suse.de>
23526
23527         PR tree-optimization/35171
23528         * tree-vect-patterns.c (vect_recog_dot_prod_pattern): Deal with
23529         default defs.
23530
23531 2008-02-12  Richard Guenther  <rguenther@suse.de>
23532
23533         PR middle-end/35163
23534         * fold-const.c (fold_widened_comparison): Use get_unwidened in
23535         value-preserving mode.  Disallow final truncation.
23536
23537 2008-02-12  Eric Botcazou  <ebotcazou@adacore.com>
23538
23539         PR middle-end/35136
23540         * gimplify.c (force_gimple_operand_bsi): Move SSA renaming
23541         code from here to...
23542         (force_gimple_operand): ...here.
23543
23544 2008-02-12  Jakub Jelinek  <jakub@redhat.com>
23545
23546         PR c++/35144
23547         * tree-sra.c (sra_build_assignment): fold_convert SRC if copying
23548         non-compatible pointers.
23549         (generate_element_copy): If SRC and DST are RECORD_TYPEs with
23550         different FIELD_DECLs, try harder by comparing field offsets, sizes
23551         and types.
23552
23553         PR inline-asm/35160
23554         * function.c (match_asm_constraints_1): Don't replace the same input
23555         multiple times.
23556
23557 2008-02-12  Anatoly Sokolov <aesok@post.ru>
23558
23559         * config/avr/avr.h (AVR_HAVE_RAMPZ): Define.
23560         * config/avr/avr.c (expand_prologue): Save RAMPZ register.
23561         (expand_epilogue): Restore RAMPZ register.
23562         * config/avr/avr.md (RAMPZ_ADDR): New constant.
23563
23564 2008-02-11  Kai Tietz  <kai.tietz@onevision.com>
23565
23566         * config/i386/cygwin.asm: (__alloca): Correct calling
23567         convention and alignment.
23568         (__chkstk): Force 8 byte stack alignment.
23569
23570 2008-02-11  Uros Bizjak  <ubizjak@gmail.com>
23571             Richard Guenther  <rguenther@suse.de>
23572
23573         PR tree-optimization/33992
23574         * tree-ssa-loop-im.c (rewrite_bittest): Fixup the type of
23575         the zero we compare against.
23576
23577 2008-02-10  Danny Smith  <dannysmith@users.sourceforge.net>
23578
23579         PR libfortran/35063
23580         * gthr-win32.h (__gthread_mutex_destroy_function): New function
23581         to CloseHandle after unlocking to prevent accumulation of handle
23582         count.
23583
23584 2008-02-09  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
23585
23586         PR middle_end/34150
23587         * pa.c (legitimize_pic_address): Add REG_EQUAL note on sets with a
23588         pic_label_operand source.  Similarly, add a REG_LABEL_OPERAND note
23589         and update LABEL_NUSES during and after reload.
23590
23591 2008-02-08  Steven Bosscher  <stevenb.gcc@gmail.com>
23592
23593         PR middle-end/34627
23594         * combine.c (simplify_if_then_else): Make sure the comparison is
23595         against const0_rtx when simplifying to (abs x) or (neg (abs X)).
23596
23597 2008-02-08  Richard Sandiford  <rsandifo@nildram.co.uk>
23598
23599         PR bootstrap/35051
23600         * double-int.h: Don't include gmp.h for GENERATOR_FILEs.
23601         (mpz_set_double_int, mpz_get_double_int): Hide from GENERATOR_FILEs.
23602         * real.h: Don't include gmp.h or mpfr.h for GENERATOR_FILEs.
23603         (real_from_mpfr, mpfr_from_real): Hide from GENERATOR_FILEs.
23604         * tree.h (get_type_static_bounds): Likewise.
23605
23606 2008-02-08  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
23607
23608         * doc/invoke.texi (Option Summary, C++ Dialect Options)
23609         (Objective-C and Objective-C++ Dialect Options, Warning Options):
23610         Make -Wfoo language annotations match what the compiler outputs.
23611
23612 2008-02-08  Sa Liu  <saliu@de.ibm.com>
23613
23614         * config/spu/spu-builtins.def: Fixed wrong parameter type in spu
23615         intrinsics spu_convts, spu_convtu, spu_convtf.
23616
23617 2008-02-08  Hans-Peter Nilsson  <hp@axis.com>
23618
23619         * doc/extend.texi (Function Attributes) <noinline>: Mention
23620         asm ("") as method to keep calls.
23621
23622 2008-02-07  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
23623
23624         PR other/32754
23625         * doc/options.texi (Options): Replace references to opts.sh with
23626         optc-gen.awk.
23627         * opts-common.c: Likewise.
23628         * optc-gen.awk: Likewise.
23629
23630 2008-02-07  Andreas Krebbel  <krebbel1@de.ibm.com>
23631
23632         * config/s390/s390.h (FUNCTION_ARG_REGNO_P): Fix fprs for 64 bit.
23633
23634 2008-02-07  Richard Henderson  <rth@redhat.com>
23635
23636         PR rtl-opt/33410
23637         * config/alpha/alpha.c (alpha_emit_xfloating_compare): Use an
23638         EXPR_LIST for the REG_EQUAL instead of a comparison with a
23639         funny mode.
23640
23641 2008-02-07  Uros Bizjak  <ubizjak@gmail.com>
23642
23643         PR tree-optimization/35085
23644         * tree-ssa-reassoc.c (rewrite_expr_tree): Enable destructive update
23645         for operand entry oe2 in addition to operand entry oe3 in order to
23646         expose more opportunities for vectorizer sum reduction.
23647
23648 2008-02-06  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
23649
23650         PR other/35107
23651         * Makefile.in (LIBS): Remove $(GMPLIBS).
23652         (cc1-dummy, cc1): Add $(GMPLIBS).
23653
23654 2008-02-06  Jan Hubicka  <jh@suse.cz>
23655
23656         PR target/23322
23657         * i386.md (moddf_integer): Do not produce partial memory stalls for
23658         targets where it hurts.
23659
23660 2008-02-06  Uros Bizjak  <ubizjak@gmail.com>
23661
23662         PR target/35083
23663         * optabs.c (expand_float): Do not check for decimal modes when
23664         expanding unsigned integer through signed conversion.
23665
23666 2008-02-06  Nick Clifton  <nickc@redhat.com>
23667
23668         * config/stormy16/stormy16.md (eqbranchsi): Replace a match_dup
23669         inside the clobber with a match_operand and duplicated operand
23670         number in the constraint.
23671         (ineqbranchsi): Delete redundant comment.
23672
23673 2008-02-06  Ralf Corsepius  <ralf.corsepius@rtems.org>
23674
23675         * config/arm/rtems-elf.h (TARGET_OS_CPP_BUILTINS): Add
23676         builtin_define ("__USE_INIT_FINI__").
23677         * config/h8300/t-rtems (MULTILIB_OPTION,MULTILIB_DIRNAMES): Add
23678         -msx multilibs.
23679         * gthr-rtems.h: Remove __GTHREAD_MUTEX_INIT.
23680
23681 2008-02-06  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
23682
23683         PR documentation/30330
23684         * doc/invoke.texi (C++ Dialect Options)
23685         (Objective-C and Objective-C++ Dialect Options, Warning Options):
23686         For each warning option -Wfoo that allows -Wno-foo, ensure both
23687         -Wfoo and -Wno-foo are listed in the option index.  Fix index
23688         entry of -Wswitch-default, index -Wnormalized= including the
23689         `=', and -Wlarger-than-@var{len} including @var{len}.
23690
23691 2008-02-05  Uros Bizjak  <ubizjak@gmail.com>
23692
23693         * config/i386/i386.md (floatunssisf2): Use
23694         ix86_expand_convert_uns_sisf_sse also for TARGET_SSE.
23695         (floatunssi<mode>2): Rename from floatunssisf2 and floatunssidf2.
23696         Macroize expander using MODEF mode iterator.
23697
23698 2008-02-05  Diego Novillo  <dnovillo@google.com>
23699
23700         http://gcc.gnu.org/ml/gcc-patches/2008-02/msg00140.html
23701
23702         PR 33738
23703         * tree-vrp.c (vrp_evaluate_conditional): Revert fix for PR 33738.
23704
23705 2008-02-05  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
23706
23707         PR other/35070
23708         * toplev.c (print_version): Honor `indent' for GMP/MPFR warnings.
23709
23710 2008-02-05  H.J. Lu  <hongjiu.lu@intel.com>
23711
23712         PR target/35084
23713         * config/i386/i386.c (ix86_function_sseregparm): Add an arg
23714         to indicate if a message should be generated.
23715         (init_cumulative_args): Updated.
23716         (function_value_32): Likewise.
23717
23718 2008-02-05  Joseph Myers  <joseph@codesourcery.com>
23719
23720         * doc/include/texinfo.tex: Update to version 2008-02-04.16.
23721
23722 2008-02-05  Uros Bizjak  <ubizjak@gmail.com>
23723
23724         PR target/35083
23725         * config/i386/i386.md (floatunsisf2): Enable for TARGET_SSE_MATH only.
23726         Call ix86_expand_convert_uns_sisf_sse for TARGET_SSE2.
23727
23728 2008-02-04  Diego Novillo  <dnovillo@google.com>
23729
23730         http://gcc.gnu.org/ml/gcc-patches/2008-02/msg00110.html
23731
23732         PR 33738
23733         * tree-vrp.c (vrp_evaluate_conditional): With
23734         -Wtype-limits, emit a warning when comparing against a
23735         constant outside the natural range of OP0's type.
23736
23737 2008-02-04  Richard Guenther  <rguenther@suse.de>
23738
23739         PR middle-end/33631
23740         * expr.c (count_type_elements): Give for unions instead of
23741         guessing.
23742
23743 2008-02-04  Richard Guenther  <rguenther@suse.de>
23744
23745         PR middle-end/35043
23746         * gimplify.c (gimplify_init_ctor_eval): Convert array indices
23747         to TYPE_DOMAINs base type instead of using bitsizetype here.
23748
23749 2008-02-03  Jason Merrill  <jason@redhat.com>
23750
23751         * print-tree.c (print_node) [CONSTRUCTOR]: Print elements.
23752
23753 2008-02-04  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
23754
23755         PR other/29972
23756         * doc/invoke.texi (C++ Dialect Options, Optimize Options)
23757         (HPPA Options, i386 and x86-64 Options, IA-64 Options)
23758         (RS/6000 and PowerPC Options): Fix typos and markup.
23759         * doc/passes.texi (Tree-SSA passes): Likewise.
23760
23761 2008-02-02  Michael Matz  <matz@suse.de>
23762
23763         PR target/35045
23764         * postreload-gcse.c (record_last_reg_set_info_regno): Renamed
23765         from record_last_reg_set_info.
23766         (record_last_reg_set_info): Take an RTX argument, iterate over all
23767         constituent hardregs.
23768         (record_last_set_info, record_opr_changes): Change calls to
23769         new signature or to record_last_reg_set_info_regno.
23770
23771 2008-02-02  Gerald Pfeifer  <gerald@pfeifer.com>
23772
23773         * doc/extend.texi (X86 Built-in Functions): Fix grammar.
23774
23775 2008-02-01  Hans-Peter Nilsson  <hp@axis.com>
23776
23777         PR rtl-optimization/34773
23778         * reg-notes.def (EQUAL): Mention significance of combination of
23779         REG_EQUAL and REG_RETVAL.
23780         * fwprop.c (try_fwprop_subst): Don't add REG_EQUAL to an
23781         insn that has a REG_RETVAL.
23782
23783 2008-02-01  Roger Sayle  <roger@eyesopen.com>
23784
23785         PR bootstrap/33781
23786         * configure.ac (--enable-fixed-point): Disable unless explicitly
23787         requested on IRIX.
23788         * configure: Regenerate.
23789
23790 2008-02-01  Richard Guenther  <rguenther@suse.de>
23791
23792         PR other/35042
23793         * invoke.texi (-finline-limit): Remove no longer true parts
23794         of the documentation.  Note that there is no default value.
23795
23796 2008-02-01  Andrew Pinski  <pinskia@gmail.com>
23797             Mark Mitchell  <mark@codesourcery.com>
23798             Ben Elliston  <bje@au.ibm.com>
23799
23800         PR c/29326
23801         * doc/extend.texi (Other Builtins): Document.
23802
23803 2008-01-31  Tom Browder <tom.browder@gmail.com>
23804
23805         * doc/c-tree.texi (Types): Fix grammar.
23806         (Expression trees): Ditto.
23807         * doc/passes.texi (Tree-SSA passes): Ditto.
23808
23809         * doc/configterms.texi (Configure Terms): Fix typo.
23810         * doc/cpp.texi (Common Predefined Macros): Ditto.
23811         * doc/md.texi (Machine Constraints): Ditto.
23812
23813         * doc/makefile.texi (Makefile): Add comma.
23814
23815 2008-01-31  Tom Browder  <tom.browder@gmail.com>
23816             Gerald Pfeifer  <gerald@pfeifer.com>
23817
23818         * doc/sourcebuild.texi (Front End): Remove references to CVS
23819         and CVSROOT/modules.
23820         (Texinfo Manuals): Replace reference to CVS by one to SVN.
23821         (Back End): Remove reference to CVS.
23822
23823 2008-01-31  Richard Sandiford  <rsandifo@nildram.co.uk>
23824
23825         PR target/34900
23826         * config/mips/mips.c (gen_load_const_gp): New function, taking a
23827         comment from...
23828         (mips16_gp_pseudo_reg): ...here.
23829         * config/mips/mips.md (load_const_gp): Replace with...
23830         (load_const_gp_<mode>): ...this :P-based insn.
23831
23832 2008-01-31  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
23833
23834         * doc/invoke.texi (-ansi): Mention explicitly corresponding -std=
23835         options. Minor fixes.
23836         (-std): Move reference to standards closer to where language
23837         standards are first mentioned.
23838
23839 2008-01-31  Richard Sandiford  <rsandifo@nildram.co.uk>
23840
23841         PR rtl-optimization/34995
23842         * reload.c (alternative_allows_const_pool_ref): Take an rtx
23843         parameter and return a bool.  If the rtx parameter is nonnull,
23844         check that it satisfies an EXTRA_MEMORY_CONSTRAINT.
23845         (find_reloads): Update call accordingly.  Pass the new operand
23846         if it needed no address reloads, otherwise pass null.
23847
23848 2008-01-30  Richard Henderson  <rth@redhat.com>
23849
23850         PR c/34993
23851         * tree.c (build_type_attribute_qual_variant): Skip TYPE_DOMAIN
23852         for unbounded arrays.
23853
23854 2008-01-30  Silvius Rus  <rus@google.com>
23855
23856         * config/i386/xmmintrin.h (_mm_prefetch): Add const to first arg.
23857
23858 2008-01-30  Jan Hubicka  <jh@suse.cz>
23859
23860         PR target/34982
23861         * i386.c (init_cumulative_args): Use real function declaration when
23862         calling locally.
23863
23864 2008-01-30  Richard Sandiford  <rsandifo@nildram.co.uk>
23865
23866         PR rtl-optimization/34998
23867         * global.c (build_insn_chain): Treat non-subreg_lowpart
23868         SUBREGs of pseudos as clobbering all the words covered by the
23869         SUBREG, not just all the bytes.
23870         * ra-conflict.c (clear_reg_in_live): Likewise.  Take the
23871         original df_ref rather than an extract parameter.
23872         (global_conflicts): Update call accordingly.
23873
23874 2008-01-30  Andreas Krebbel  <krebbel1@de.ibm.com>
23875
23876         * config/s390/fixdfdi.h (__fixunstfdi, __fixtfdi): Rearrange
23877         the overflow check to make it easier to read.
23878         (__fixtfdi): Change the type of the ll member in union
23879         long_double to UDItype_x.
23880
23881 2008-01-30  Jakub Jelinek  <jakub@redhat.com>
23882
23883         PR middle-end/34969
23884         * cgraph.h (cgraph_update_edges_for_call_stmt): New prototype.
23885         * cgraph.c (cgraph_update_edges_for_call_stmt): New function.
23886         * tree-inline.c (fold_marked_statements): Call
23887         cgraph_update_edges_for_call_stmt if folding a call statement.
23888         * cgraphunit.c (verify_cgraph_node): Set cfun to this_cfun for
23889         debug_generic_stmt calls, reset it back afterwards.
23890
23891         PR c/35017
23892         * c-decl.c (start_decl): Don't pedwarn about TREE_READONLY
23893         static decls.
23894         * c-typeck.c (build_external_ref): Don't pedwarn about
23895         static vars in current function's scope.
23896
23897 2008-01-29  Joseph Myers  <joseph@codesourcery.com>
23898
23899         * config.gcc (i[34567]86-*-nto-qnx*): Remove deprecation.
23900
23901 2008-01-29  Bernhard Fischer  <aldot@gcc.gnu.org>
23902
23903         PR c/35002
23904         * ipa-struct-reorg.c: Fix spelling.
23905         * params.def: Ditto.
23906
23907 2008-01-29  Richard Guenther  <rguenther@suse.de>
23908
23909         PR middle-end/35006
23910         * tree-inline.h (struct copy_body_data): Add remapping_type_depth
23911         field.
23912         * tree-inline.c (remap_type): Increment remapping_type_depth
23913         around remapping types.
23914         (copy_body_r): Only add referenced variables if they are referenced
23915         from code, not types.
23916
23917 2008-01-29  Douglas Gregor  <doug.gregor@gmail.com>
23918
23919         PR c++/34055
23920         PR c++/34103
23921         PR c++/34219
23922         PR c++/34606
23923         PR c++/34753
23924         PR c++/34754
23925         PR c++/34755
23926         PR c++/34919
23927         PR c++/34961
23928         * c-pretty-print.c (pp_c_type_qualifier_list): Don't try to print
23929         qualifiers for an ERROR_MARK_NODE or a NULL_TREE.
23930
23931 2008-01-28  Andy Hutchinson   <hutchinsonandy@netscape.net>
23932
23933         PR target/34412
23934         * config/avr/avr.c (expand_prologue): Use correct QI mode frame
23935         pointer for tiny stack.
23936
23937 2008-01-28  Bernhard Fischer  <aldot@gcc.gnu.org>
23938
23939         * doc/tree-ssa.texi: Add cindex PHI nodes and improve wording.
23940
23941 2008-01-28  Bernhard Fischer  <aldot@gcc.gnu.org>
23942
23943         * config/vx-common.h: Fix typo in comment.
23944
23945 2008-01-28  Ian Lance Taylor  <iant@google.com>
23946
23947         PR c++/34862
23948         PR c++/33407
23949         * tree-ssa-copyrename.c (copy_rename_partition_coalesce): Don't
23950         coalesce pointers if they have different DECL_NO_TBAA_P values.
23951         * tree-ssa-copy.c (may_propagate_copy): Don't propagate copies
23952         between variables with different DECL_NO_TBAA_P values.
23953
23954 2008-01-28  Nathan Froyd  <froydnj@codesourcery.com>
23955
23956         PR 31535
23957         * config/rs6000/rs6000.c (small_data_operand): Vectors and floats
23958         are not legitimate small data references on SPE targets.
23959
23960 2008-01-28  David Daney  <ddaney@avtrex.com>
23961
23962         * doc/install.texi (mips-*-*): Recommend binutils 2.18.
23963
23964 2008-01-28  David Daney  <ddaney@avtrex.com>
23965
23966         * doc/install.texi (--disable-libgcj-bc):  Reword documentation.
23967
23968 2008-01-27  Joseph Myers  <joseph@codesourcery.com>
23969
23970         * config.gcc (strongarm*-*, ep9312*-*, xscale*-*, parisc*-*,
23971         m680[012]0-*, *-*-beos*, *-*-kaos*, *-*-linux*aout*,
23972         *-*-linux*libc1*, *-*-solaris2.[0-6], *-*-solaris2.[0-6].*,
23973         *-*-sysv*, *-*-windiss*, alpha*-*-unicosmk*, cris-*-aout,
23974         hppa1.1-*-pro*, hppa1.1-*-osf*, hppa1.1-*-bsd*,
23975         i[34567]86-sequent-ptx4*, i[34567]86-*-nto-qnx*,
23976         i[34567]86-*-sco3.2v5*, i[34567]86-*-uwin*, powerpc-*-chorusos*,
23977         vax-*-bsd*, vax-*-ultrix*): Mark obsolete.
23978
23979 2008-01-27  Bernhard Fischer  <aldot@gcc.gnu.org>
23980
23981         * basic-block.h (condjump_equiv_p): Fix comment.
23982
23983 2008-01-27  Bernhard Fischer  <aldot@gcc.gnu.org>
23984
23985         * tree-pretty-print.c (print_generic_decl, print_generic_stmt,
23986         print_generic_stmt_indented): Fix comment.
23987
23988 2008-01-27  Bernhard Fischer  <aldot@gcc.gnu.org>
23989
23990         * configure.ac (__stack_chk_fail): Add detecion for availability
23991         of SSP in uClibc by checking if __UCLIBC_HAS_SSP__ is defined.
23992         * configure: Regenerate.
23993
23994 2008-01-26  Maxim Kuvyrkov  <maxim@codesourcery.com>
23995
23996         PR middle-end/34688
23997         * final.c (output_addr_const): Handle TRUNCATE.
23998
23999 2008-01-26  Zdenek Dvorak  <ook@ucw.cz>
24000
24001         PR target/34711
24002         * tree-ssa-loop-ivopts.c (comp_cost): New type.
24003         (zero_cost, infinite_cost): New constants.
24004         (struct cost_pair): Change type of cost to comp_cost.
24005         (struct iv_ca): Change type of cand_use_cost and cost to comp_cost.
24006         (new_cost, add_costs, sub_costs, compare_costs, infinite_cost_p):
24007         New functions.
24008         (set_use_iv_cost, force_expr_to_var_cost, force_var_cost,
24009         split_address_cost, ptr_difference_cost, difference_cost,
24010         get_computation_cost_at, get_computation_cost,
24011         determine_use_iv_cost_generic, determine_use_iv_cost_address,
24012         determine_use_iv_cost_condition, determine_use_iv_costs,
24013         cheaper_cost_pair, iv_ca_recount_cost, iv_ca_set_no_cp,
24014         iv_ca_set_cp, iv_ca_cost, iv_ca_new, iv_ca_dump, iv_ca_extend,
24015         iv_ca_narrow, iv_ca_prune, try_improve_iv_set, find_optimal_iv_set):
24016         Change type of cost to comp_cost.
24017         (determine_iv_cost): Increase cost of non-original ivs, instead
24018         of decreasing the cost of original ones.
24019         (get_address_cost): Indicate the complexity of the addressing mode
24020         in comp_cost.
24021         (try_add_cand_for): Prefer using ivs not specific to some object.
24022         * tree-flow.h (force_expr_to_var_cost): Declaration removed.
24023
24024 2008-01-26  Peter Bergner  <bergner@vnet.ibm.com>
24025             Janis Johnson  <janis187@us.ibm.com>
24026
24027         PR target/34814
24028         * doc/tm.texi (TARGET_EXPAND_TO_RTL_HOOK): Document.
24029         (TARGET_INSTANTIATE_DECLS): Likewise.
24030         * target.h (expand_to_rtl_hook): New target hook.
24031         (instantiate_decls): Likewise.
24032         * function.c (instantiate_decl): Make non-static.  Rename to...
24033         (instantiate_decl_rtl): ... this.
24034         (instantiate_expr): Use instantiate_decl_rtl.
24035         (instantiate_decls_1): Likewise.
24036         (instantiate_decls): Likewise.
24037         (instantiate_virtual_regs: Call new instantiate_decls taget hook.
24038         * function.h (instantiate_decl_rtl): Add prototype.
24039         * cfgexpand.c (target.h): New include.
24040         (tree_expand_cfg): Call new expand_to_rtl_hook target hook.
24041         * target-def.h (TARGET_EXPAND_TO_RTL_HOOK): New define.
24042         (TARGET_INSTANTIATE_DECLS): Likewise.
24043         (TARGET_INITIALIZER): New target hooks added.
24044         * config/rs6000/rs6000-protos.h (rs6000_secondary_memory_needed_rtx):
24045         New prototype.
24046         * config/rs6000/rs6000.c (tree-flow.h): New include.
24047         (machine_function): Add sdmode_stack_slot field.
24048         (rs6000_alloc_sdmode_stack_slot): New function.
24049         (rs6000_instantiate_decls): Likewise.
24050         (rs6000_secondary_memory_needed_rtx): Likewise.
24051         (rs6000_check_sdmode): Likewise.
24052         (TARGET_EXPAND_TO_RTL_HOOK): Target macro defined.
24053         (TARGET_INSTANTIATE_DECLS): Likewise.
24054         (rs6000_hard_regno_mode_ok): Allow SDmode.
24055         (num_insns_constant): Likewise.  Handle _Decimal32 constants.
24056         (rs6000_emit_move): Handle SDmode.
24057         (function_arg_advance): Likewise.
24058         (function_arg): Likewise.
24059         (rs6000_gimplify_va_arg): Likewise.  Add special handling of
24060         SDmode var args for 32-bit compiles.
24061         (rs6000_secondary_reload_class): Handle SDmode.
24062         (rs6000_output_function_epilogue): Likewise.
24063         (rs6000_function_value): Simplify if statement.
24064         (rs6000_libcall_value): Likewise.
24065         * config/rs6000/rs6000.h (SLOW_UNALIGNED_ACCESS): Handle SDmode.
24066         (SECONDARY_MEMORY_NEEDED_RTX): Add define.
24067         * config/rs6000/dfp.md (movsd): New define_expand and splitter.
24068         (movsd_hardfloat): New define_insn.
24069         (movsd_softfloat): Likewise.
24070         (movsd_store): Likewise.
24071         (movsd_load): Likewise.
24072         (extendsddd2): Likewise.
24073         (extendsdtd2): Likewise.
24074         (truncddsd2): Likewise.
24075         (movdd_hardfloat64): Fixup comment.
24076         (UNSPEC_MOVSD_LOAD): New constant.
24077         (UNSPEC_MOVSD_STORE): Likewise.
24078
24079 2008-01-26  Jakub Jelinek  <jakub@redhat.com>
24080
24081         PR c++/34965
24082         * c-pretty-print.c (pp_c_exclusive_or_expression): Handle
24083         TRUTH_XOR_EXPR.
24084         (pp_c_logical_and_expression): Handle TRUTH_AND_EXPR.
24085         (pp_c_logical_or_expression): Handle TRUTH_OR_EXPR.
24086         (pp_c_expression): Handle TRUTH_AND_EXPR, TRUTH_OR_EXPR
24087         and TRUTH_XOR_EXPR.
24088
24089 2008-01-26  David Edelsohn  <edelsohn@gnu.org>
24090
24091         PR target/34794
24092         * config.gcc: Separate AIX 5.3 from AIX 6.1.
24093         * config/rs6000/rs6000-c.c (rs6000_cpu_cpp_builtins): Define
24094         __LONGDOUBLE128 too.
24095         * config/rs6000/aix61.h: New file.
24096
24097 2008-01-26  Richard Sandiford  <rsandifo@nildram.co.uk>
24098
24099         PR rtl-optimization/34959
24100         * optabs.c (expand_unop): In libcall notes, give ffs, clz, ctz,
24101         popcount and parity rtxes the same mode as their operand.
24102         Truncate or extend the result to the return value's mode
24103         if necessary.
24104
24105 2008-01-26  Richard Sandiford  <rsandifo@nildram.co.uk>
24106
24107         PR target/34981
24108         * config/mips/mips-protos.h (mips_expand_call): Return an rtx.
24109         * config/mips/mips.h (FIRST_PSEUDO_REGISTER): Rename FAKE_CALL_REGNO
24110         to GOT_VERSION_REGNUM.
24111         (CALL_REALLY_USED_REGISTERS): Set the GOT_VERSION_REGNUM entry to 0.
24112         (EPILOGUE_USES): Include GOT_VERSION_REGNUM if TARGET_USE_GOT.
24113         * config/mips/mips.c (mips_emit_call_insn): New function.
24114         (mips_call_tls_get_addr): Call mips_expand_call directly.
24115         (mips16_copy_fpr_return_value): Use mips_emit_call_insn rather than
24116         emit_call_insn.
24117         (mips16_build_call_stub): Likewise.  Return the call insn or null.
24118         (mips_expand_call): Update the call to mips16_build_call_stub
24119         accordingly and a remove redundant condition.  Assert that MIPS16
24120         stubs do not use lazy binding.  Use mips_emit_call_insn and return
24121         the call insn.
24122         (mips_extra_live_on_entry): Include GOT_VERSION_REGNUM if
24123         TARGET_USE_GOT.
24124         (mips_hard_regno_mode_ok_p): Allow SImode for GOT_VERSION_REGNUM.
24125         (mips_avoid_hazard): Remove hazard_set handling.
24126         * config/mips/mips.md (UNSPEC_EH_RECEIVER): Rename to...
24127         (UNSPEC_RESTORE_GP): ...this.
24128         (UNSPEC_SET_GOT_VERSION, UNSPEC_UPDATE_GOT_VERSION): New constants.
24129         (FAKE_CALL_REGNO): Rename to...
24130         (GOT_VERSION_REGNUM): ...this.
24131         (type): Add "ghost" value.  Add an associated insn reservation.
24132         (hazard_set): Remove.
24133         (exception_receiver): Rename to...
24134         (restore_gp): ...this and update the unspec identifier accordingly.
24135         (exception_receiver, nonlocal_got_receiver): New expanders.
24136         (load_call<mode>): Use GOT_VERSION_REGNUM.  Don't set
24137         FAKE_CALL_REGNO.  Remove hazard_set attribute.
24138         (set_got_version, update_got_version): New patterns.
24139
24140 2008-01-26  Danny Smith  <dannysmith@users.sourceforge.net>
24141
24142         PR target/34970
24143         * config/i386/cygming.h (ASM_OUTPUT_LABELREF): Define.
24144
24145 2008-01-25  Joseph Myers  <joseph@codesourcery.com>
24146
24147         PR other/31955
24148         * doc/install.texi2html: Generate gcc-vers.texi.
24149
24150 2008-01-25  DJ Delorie  <dj@redhat.com>
24151
24152         * config/m32c/m32c.h (ASM_PREFERRED_EH_DATA_FORMAT): Define.
24153
24154 2008-01-25  Joseph Myers  <joseph@codesourcery.com>
24155
24156         * config/c4x: Remove directory.
24157         * config.gcc (crx-*, mt-*): Mark obsolete.
24158         (c4x-*, tic4x-*, c4x-*-rtems*, tic4x-*-rtems*, c4x-*, tic4x-*,
24159         h8300-*-rtemscoff*, ns32k-*-netbsdelf*, ns32k-*-netbsd*,
24160         sh-*-rtemscoff*): Remove cases.
24161         * defaults.h (C4X_FLOAT_FORMAT): Remove.
24162         * real.c (encode_c4x_single, decode_c4x_single,
24163         encode_c4x_extended, decode_c4x_extended, c4x_single_format,
24164         c4x_extended_format): Remove.
24165         * real.h (c4x_single_format, c4x_extended_format): Remove.
24166         * doc/extend.texi (interrupt, naked): Remove mention of attributes
24167         on C4x.
24168         (Pragmas): Remove comment about c4x pragmas.
24169         * doc/install.texi (c4x): Remove target-specific instructions.
24170         * doc/invoke.texi (TMS320C3x/C4x Options): Remove.
24171         * doc/md.texi (Machine Constraints): Remove C4x documentation.
24172         * doc/tm.texi (MEMBER_TYPE_FORCES_BLK, c_register_pragma): Do not
24173         refer to C4x source files as examples.
24174         (C4X_FLOAT_FORMAT): Remove documentation.
24175
24176 2008-01-25  Bernd Schmidt  <bernd.schmidt@analog.com>
24177
24178         * config/bfin/bfin.c (override_options): Reorder tests so that
24179         flag_pic gets enabled for -msep-data.
24180
24181 2008-01-25  Richard Guenther  <rguenther@suse.de>
24182
24183         PR middle-end/32244
24184         * expr.c (expand_expr_real_1): Reduce result of LSHIFT_EXPR
24185         to its bitfield precision if required.
24186
24187 2008-01-25  Jakub Jelinek  <jakub@redhat.com>
24188
24189         PR middle-end/33880
24190         * tree-nested.c (walk_omp_for): New function.
24191         (convert_nonlocal_reference, convert_local_reference): Call
24192         walk_omp_for on OMP_FOR.
24193         (convert_call_expr): Call walk_body on OMP_FOR's
24194         OMP_FOR_PRE_INIT_BODY.
24195
24196 2008-01-25  Richard Guenther  <rguenther@suse.de>
24197
24198         PR tree-optimization/34966
24199         * tree-ssa-math-opts.c (execute_cse_sincos_1): For all but
24200         default defs and PHI_NODEs we have to insert after the
24201         defining statement.
24202
24203 2008-01-24  Nick Clifton  <nickc@redhat.com>
24204
24205         * config/stormy16/stormy16-lib2.c (MIN_UNITS_PER_WORD):
24206         Provide a default definition.
24207         (LIBGCC2_UNITS_PER_WORD): Likewise.
24208
24209         * config/stormy16/stormy16.c: Include df.h for the prototype
24210         for df_regs_ever_live_p.
24211         (xstormy16_expand_builtin_va_start): Convert the stack offset
24212         into a component_ref and then use POINTER_PLUS_EXPR to add it
24213         to the incoming_virtual_args_rtx.
24214         (xstormy16_gimplify_va_arg_expr): Rename to
24215         xstormy16_gimplify_va_arg_expr.
24216         Use POINTER_PLUS_EXPR when performing pointer arithmetic.
24217         (TARGET_GIMPLIFY_VA_ARG_EXPR): Use renamed
24218         xstormy16_gimplify_va_arg_expr.
24219         Fix up some formatting issues.
24220
24221         * config/stormy16/stormy16.c: (xstormy16_carry_plus_operand):
24222         Move to predicates.md.
24223         (xs_hi_general_operand): Likewise.
24224         (xs_hi_nonmemory_operand): Likewise.
24225         * config/stormy16/predicates.md:
24226         (xstormy16_carry_plus_operand): New predicate.
24227         (xs_hi_general_operand): New predicate.
24228         (xs_hi_nonmemory_operand): New predicate.
24229         * config/stormy16/stormy16-protos.h:
24230         (xstormy16_carry_plus_operand): Delete prototype.
24231         (xs_hi_general_operand): Likewise.
24232         (xs_hi_nonmemory_operand): Likewise.
24233
24234         * config/storm16/stormy16.md (addhi3): Remove earlyclobber
24235         modifiers as they are no longer needed and they can trigger
24236         reload spill failures.
24237
24238         * config/storm16/stormy16.md (ineqbranchsi): Replace match_dup
24239         with a match_operand in order to help reload.
24240
24241         * config/storm16/stormy16.md (movhi_internal): Replace 'r'
24242         constraint with 'e' for the 8th alternative as this version of
24243         the mov.w instruction only accepts the lower 8 registers.
24244
24245 2008-01-25  Uros Bizjak  <ubizjak@gmail.com>
24246
24247         PR target/34856
24248         * simplifx-rtx.c (simplify_const_binary_operation) [VEC_CONCAT]:
24249         Consider only CONST_INT, CONST_DOUBLE and CONST_FIXED as constant
24250         vector elements.
24251
24252 2008-01-25  Jakub Jelinek  <jakub@redhat.com>
24253
24254         PR middle-end/33333
24255         * gimplify.c (gimplify_omp_for): Gimplify OMP_FOR_PRE_BODY.
24256
24257 2008-01-25  Golovanevsky Olga  <olga@il.ibm.com>
24258
24259         * ipa-struct-reorg.c (remove_str_allocs_in_func, remove_str_allocs):
24260         New functions.
24261         (remove_structure): Update allocations list before removing structure.
24262
24263 2008-01-25  Golovanevsky Olga  <olga@il.ibm.com>
24264
24265         * ipa-struct-reorg.c (is_safe_cond_expr,
24266         create_new_stmts_for_cond_expr): Use integer_zerop function,
24267         that recognize not only zero-pointer, but zero-integer too.
24268
24269 2008-01-25  Ben Elliston  <bje@au.ibm.com>
24270
24271         PR other/22232
24272         * fixproto: Escape "." in sed expression that strips leading "./".
24273
24274 2008-01-24  H.J. Lu  <hongjiu.lu@intel.com>
24275
24276         PR driver/34904
24277         * gcc.c (SWITCH_OK): Removed.
24278         (SWITCH_LIVE): Changed to bit.
24279         (SWITCH_FALSE): Likewise.
24280         (SWITCH_IGNORE): Likewise.
24281         (switchstr): Change live_cond to unsigned int.
24282         (process_command): Replace SWITCH_OK with 0.
24283         (do_self_spec): Likewise.
24284         (set_collect_gcc_options): Check the SWITCH_IGNORE bit.
24285         (give_switch): Likewise.
24286         (used_arg): Likewise.
24287         (do_spec_1): Set the SWITCH_IGNORE bit.
24288         (check_live_switch): Check both SWITCH_LIVE and SWITCH_FALSE
24289         bits.  Set the SWITCH_LIVE bit.
24290
24291 2008-01-24  Andreas Krebbel  <krebbel1@de.ibm.com>
24292
24293         * config/s390/s390.h (MOVE_RATIO): Define new target macro.
24294
24295 2008-01-24  Richard Sandiford  <rsandifo@nildram.co.uk>
24296
24297         PR tree-optimization/34472
24298         * ipa-struct-reorg.c (safe_cond_expr_check): Change the DATA
24299         parameter to a "bool *" and set *DATA to false if there is
24300         an unsafe access.  Do not delete the structure here.
24301         (check_cond_exprs): Delete it here instead.
24302         (check_cond_exprs, exclude_cold_structs): Do not increase
24303         I when removing a structure.
24304
24305 2008-01-24  Uros Bizjak  <ubizjak@gmail.com>
24306
24307         PR target/34856
24308         * config/i386/i386.c (ix86_expand_vector_init): Consider only
24309         CONST_INT, CONST_DOUBLE and CONST_FIXED as constant vector elements.
24310
24311 2008-01-24  Jakub Jakub Jelinek  <jakub@redhat.com>
24312
24313         PR middle-end/34934
24314         * tree-stdarg.c (reachable_at_most_once): Use VEC vector instead of
24315         a fixed vector for stack.
24316
24317 2008-01-24  Ben Elliston  <bje@au.ibm.com>
24318
24319         PR c++/25701
24320         * doc/gcc.texi (Software development): Add a direntry for g++.
24321
24322 2008-01-23  Hans-Peter Nilsson  <hp@axis.com>
24323
24324         * config/cris/cris.h (CC1PLUS_SPEC, OPTIMIZATION_OPTIONS): Drop
24325         stale and straggling -fforce-addr comments above.
24326
24327         * config/cris/cris.h (CRIS_SUBTARGET_VERSION, TARGET_VERSION): Don't
24328         define.
24329         * config/cris/linux.h (CRIS_SUBTARGET_VERSION): Don't define.
24330         * config/cris/aout.h (CRIS_SUBTARGET_VERSION): Don't define.
24331
24332 2008-01-23  Michael Matz  <matz@suse.de>
24333
24334         PR debug/34895
24335         * dwarf2out.c (force_type_die): Use modified_type_die instead of
24336         gen_type_die.
24337
24338 2008-01-23  Andreas Krebbel  <krebbel1@de.ibm.com>
24339
24340         * ipa-struct-reorg.c (create_new_malloc): Use pointer type as
24341         malloc result type.
24342
24343 2008-01-23 Anatoly Sokolov <aesok@post.ru>
24344
24345         * config/avr/avr.c (avr_current_arch): New variable.
24346         (avr_arch_types): Add 'avr31' and 'avr51' entries.
24347         (avr_arch): Add 'ARCH_AVR31' and 'ARCH_AVR51'.
24348         (avr_mcu_types): Add 'avr31' and 'avr51' architectures.
24349         (avr_override_options): Init 'avr_current_arch'.
24350         (base_arch_s): Move from here...
24351         * config/avr/avr.h (base_arch_s): ... here. Add new members
24352         'have_elpm', 'have_elpmx', 'have_eijmp_eicall', 'reserved'. Rename
24353         'mega' to 'have_jmp_call'.
24354         (TARGET_CPU_CPP_BUILTINS): Define "__AVR_HAVE_JMP_CALL__",
24355         "__AVR_HAVE_RAMPZ__", "__AVR_HAVE_ELPM__" and "__AVR_HAVE_ELPMX__"
24356         macros.
24357         (LINK_SPEC, CRT_BINUTILS_SPECS, ASM_SPEC): Add 'avr31' and 'avr51'
24358         architectures.
24359         * config/avr/t-avr (MULTILIB_OPTIONS, MULTILIB_DIRNAMES,
24360         MULTILIB_MATCHES): Ditto.
24361
24362 2008-01-23  Richard Guenther  <rguenther@suse.de>
24363
24364         PR middle-end/31529
24365         * cgraphunit.c (cgraph_reset_node): Always mark the node
24366         not reachable if it is not queued already.
24367
24368 2008-01-23  Bernd Schmidt  <bernd.schmidt@analog.com>
24369
24370         * config/bfin/bfin-protos.h (WA_RETS, ENABLE_WA_RETS): New macros.
24371         * config/bfin/bfin.c (bfin_cpus): Add WA_RETS everywhere.
24372         (cputype_selected): New static variable.
24373         (bfin_handle_option): Set it if -mcpu is used.
24374         (override_option): Select default set of workarounds if no cpu type
24375         selected on the command line.
24376         (workaround_rts_anomaly): Only run if ENABLE_WA_RETS.
24377
24378         From  Michael Frysinger  <michael.frysinger@analog.com>
24379         * config/bfin/bfin-protos.h (enum bfin_cpu_type): Add
24380         BFIN_CPU_BF547, BFIN_CPU_BF523, BFIN_CPU_BF524, and BFIN_CPU_BF526.
24381
24382         * config/bfin/elf.h (LIB_SPEC): Use proper linker script
24383         for bf547, bf523, bf524, and bf526.
24384         * config/bfin/bfin.c (bfin_cpus[]): Add bf547,  bf523, bf524, and
24385         bf526.
24386         * config/bfin/bfin.h (TARGET_CPU_CPP_BUILTINS): Define
24387         __ADSPBF523__ for bf523, __ADSPBF524__ for bf524,
24388         __ADSPBF526__ for bf526, __ADSPBF52x__ for all three, as well as
24389         __ADSPBF547__ and __ADSPBF54x__ for bf547.
24390         * doc/invoke.texi (Blackfin Options): Document that
24391         -mcpu now accept bf547, bf523, bf524, and bf526.
24392
24393 2008-01-22  Eric Botcazou  <ebotcazou@adacore.com>
24394
24395         PR rtl-optimization/34628
24396         * combine.c (try_combine): Stop and undo after the first combination
24397         if an autoincrement side-effect on the first insn has effectively
24398         been lost.
24399
24400 2008-01-22  David Edelsohn  <edelsohn@gnu.org>
24401
24402         PR target/34529
24403         * config/rs6000/rs6000.c (rs6000_legitimate_offset_address_p):
24404         Offset addresses are not valid for Altivec or paired float modes.
24405
24406 2008-01-22  Jakub Jelinek  <jakub@redhat.com>
24407
24408         PR c++/34607
24409         * c-parser.c (c_parser_omp_for_loop): Don't call c_finish_omp_for
24410         if DECL_INITIAL (decl) is error_mark_node.
24411
24412         PR c++/34914
24413         * c-common.c (handle_vector_size_attribute): Only allow
24414         integral, scalar float and fixed point types.  Handle OFFSET_TYPE
24415         the same way as pointer, array etc. types.
24416         * tree.c (reconstruct_complex_type): Handle OFFSET_TYPE.
24417
24418         PR c++/34917
24419         * tree.c (build_type_attribute_qual_variant): Call
24420         build_qualified_type if attributes are equal, but quals are not.
24421
24422 2008-01-22  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
24423
24424         PR 32102
24425         * doc/invoke.texi (-Wall): -Wall enables -Wstrict-overflow=1.
24426         * flags.h (warn_strict_aliasing): Remove.
24427         (warn_strict_overflow): Remove.
24428         * opts.c (warn_strict_aliasing): Remove.
24429         (warn_strict_overflow): Remove.
24430         * c-opts.c (c_common_handle_option): -Wall only sets
24431         -Wstrict-aliasing or -Wstrict-overflow if they are uninitialized.
24432         (c_common_post_options): Give default values to -Wstrict-aliasing
24433         and -Wstrict-overflow if they are uninitialized.
24434         * common.opt (Wstrict-aliasing): Specify Var and Init.
24435         (Wstrict-overflow): Likewise.
24436
24437 2008-01-22  Kenneth Zadeck  <zadeck@naturalbridge.com>
24438
24439         PR rtl-optimization/26854
24440         PR rtl-optimization/34400
24441         PR rtl-optimization/34884
24442         * ddg.c (create_ddg_dep_from_intra_loop_link): Use
24443         DF_RD->gen.
24444         * df.h (df_changeable_flags.DF_RD_NO_TRIM): Deleted
24445         (df_rd_bb_info.expanded_lr_out): Deleted
24446         * loop_invariant.c (find_defs): Deleted DF_RD_NO_TRIM flag.
24447         * loop_iv.c (iv_analysis_loop_init): Ditto.  * df-problems.c
24448         (df_rd_free_bb_info, df_rd_alloc, df_rd_confluence_n,
24449         df_rd_bb_local_compute, df_rd_transfer_function, df_rd_free):
24450         Removed code to allocate, initialize or free expanded_lr_out.
24451         (df_rd_bb_local_compute_process_def): Restructured to make more
24452         understandable.
24453         (df_rd_confluence_n): Removed code to no apply invalidate_by_call
24454         sets if the sets are being trimmed.
24455
24456 2008-01-22  H.J. Lu  <hongjiu.lu@intel.com>
24457
24458         PR bootstrap/32287
24459         * configure.ac (ld_vers): Support GNU linker version xx.xx.*
24460         (as_vers): Likewise.
24461         * configure: Regenerated.
24462
24463 2008-01-22  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
24464
24465         PR middle-end/33092
24466         * tree-pass.h (pass_build_alias): New pass.
24467         * tree-ssa-alias.c (gate_build_alias): New.
24468         (pass_build_alias): New.
24469         * passes.c (init_optimization_passes): Add pass_build_alias after
24470         pass_create_structure_vars.
24471
24472 2008-01-22  Wolfgang Gellerich  <gellerich@de.ibm.com>
24473
24474         * config/s390/s390.h (S390_TDC_POSITIVE_NORMALIZED_NUMBER):
24475         Renamed to S390_TDC_POSITIVE_NORMALIZED_BFP_NUMBER.
24476         (S390_TDC_NEGATIVE_NORMALIZED_NUMBER): Renamed to
24477         S390_TDC_NEGATIVE_NORMALIZED_BFP_NUMBER.
24478         (S390_TDC_POSITIVE_DENORMALIZED_NUMBER): Renamed to
24479         S390_TDC_POSITIVE_DENORMALIZED_BFP_NUMBER.
24480         (S390_TDC_NEGATIVE_DENORMALIZED_NUMBER): Renamed to
24481         S390_TDC_NEGATIVE_DENORMALIZED_BFP_NUMBER.
24482         (S390_TDC_POSITIVE_NORMALIZED_BFP_NUMBER): New constant.
24483         (S390_TDC_NEGATIVE_NORMALIZED_BFP_NUMBER): New constant.
24484         (S390_TDC_POSITIVE_DENORMALIZED_BFP_NUMBER): New constant.
24485         (S390_TDC_NEGATIVE_DENORMALIZED_BFP_NUMBER): New constant.
24486         * config/s390/s390.md (FP_ALL): New mode iterator.
24487         (_d): New mode attribute.
24488         ("*signbit<mode>2>"): Changed mode of first operand.
24489         ("isinf<mode>2"): Changed mode of first operand.
24490         ("*TDC_insn"): Adaptation for DFP modes.
24491
24492 2008-01-22  Ben Elliston  <bje@au.ibm.com>
24493
24494         * tree.c (check_qualified_type): Improve function description.
24495
24496 2008-01-21  Jason Merrill  <jason@redhat.com>
24497
24498         PR c++/34196
24499         * tree.h (TRY_CATCH_IS_CLEANUP): New macro.
24500         * tree-eh.c (honor_protect_cleanup_actions): Strip TRY_CATCH_EXPR
24501         if it is set.
24502
24503 2008-01-21  DJ Delorie  <dj@redhat.com>
24504
24505         * doc/tm.texi (HARD_REGNO_NREGS): Note that this macro must not
24506         return zero.
24507
24508 2008-01-21  Richard Guenther  <rguenther@suse.de>
24509
24510         PR middle-end/34856
24511         * tree-cfg.c (verify_expr): Allow all invariant expressions
24512         instead of just constant class ones as reference argument.
24513         * tree-ssa-loop-im.c (for_each_index): Handle CONSTRUCTOR
24514         like any other constant.
24515         * tree-ssa-sccvn.c (copy_reference_ops_from_ref): Likewise.
24516
24517 2008-01-21  H.J. Lu  <hongjiu.lu@intel.com>
24518
24519         * regmove.c (fixup_match_1): Update call crossed frequencies.
24520
24521 2008-01-21  Richard Guenther  <rguenther@suse.de>
24522
24523         PR c/34885
24524         * tree-inline.c (setup_one_parameter): Deal with mismatched
24525         types using a VIEW_CONVERT_EXPR.
24526
24527 2008-01-21  Alon Dayan  <alond@il.ibm.com>
24528             Olga Golovanevsky  <olga@il.ibm.com>
24529
24530         PR tree-optimization/34701
24531         * ipa-struct-reorg.c (gen_size): Fix the malloc parameter calculation
24532         when the structure size is not a power of 2.
24533
24534 2008-01-20  Kenneth Zadeck  <zadeck@naturalbridge.com>
24535
24536         * doc/install.texi: Add doc for --enable-checking=df.
24537
24538 2008-01-20  Kaz Kojima  <kkojima@gcc.gnu.org>
24539
24540         PR rtl-optimization/34808
24541         * emit-rtl.c (try_split): Handle REG_RETVAL notes.
24542
24543 2008-01-20  Richard Sandiford  <rsandifo@nildram.co.uk>
24544
24545         * global.c (find_reg): Only compute EH_RETURN_DATA_REGNO once per
24546         input.
24547
24548 2008-01-19  Kenneth Zadeck  <zadeck@naturalbridge.com>
24549
24550         PR rtl-optimization/26854
24551         PR rtl-optimization/34400
24552         * ddg.c (create_ddg_dep_from_intra_loop_link): Do not use
24553         DF_RD->gen.
24554         * df.h (df_changeable_flags.DF_RD_NO_TRIM): New.
24555         (df_rd_bb_info.expanded_lr_out): New.
24556         * loop_invariant.c (find_defs): Added DF_RD_NO_TRIM flag.
24557         * loop_iv.c (iv_analysis_loop_init): Ditto.
24558         * df-problems.c (df_rd_free_bb_info, df_rd_alloc, df_rd_confluence_n,
24559         df_rd_bb_local_compute, df_rd_transfer_function, df_rd_free):
24560         Added code to allocate, initialize or free expanded_lr_out.
24561         (df_rd_bb_local_compute_process_def): Restructured to make
24562         more understandable.
24563         (df_rd_confluence_n): Add code to do nothing with fake edges and
24564         code to no apply invalidate_by_call sets if the sets are being trimmed.
24565         (df_lr_local_finalize): Renamed to df_lr_finalize.
24566         (df_live_local_finalize): Renamed to df_live_finalize.
24567
24568 2008-01-20  Richard Sandiford  <rsandifo@nildram.co.uk>
24569
24570         PR target/34831
24571         * config/mips/mips.md (div<mode>3): Use <recip_condition> when
24572         deciding whether to use reciprocal instructions.
24573
24574 2008-01-19  Uros Bizjak  <ubizjak@gmail.com>
24575
24576         * dwarf2out.c (dwarf2out_switch_text_section): Do not call
24577         dwarf2out_note_section_used if cold_text_section is NULL.
24578
24579 2008-01-19  Jakub Jelinek  <jakub@redhat.com>
24580
24581         PR gcov-profile/34610
24582         * tree-cfg.c (make_edges): Mark both outgoing edges from
24583         OMP_CONTINUE and from OMP_FOR as EDGE_ABNORMAL.
24584         * omp-low.c (expand_omp_for): Clear EDGE_ABNORMAL bits
24585         from OMP_FOR and OMP_CONTINUE outgoing edges.
24586
24587         * tree-profile.c (tree_profiling): Return early if
24588         cfun->after_tree_profile != 0.  Set cfun->after_tree_profile
24589         at the end.
24590         * omp-low.c (expand_omp_parallel): Copy after_tree_profile
24591         from cfun to child_cfun.
24592         * function.h (struct function): Add after_tree_profile bit.
24593
24594 2008-01-19 Anatoly Sokolov <aesok@post.ru>
24595
24596         * config/avr/avr.S (_exit): Disable interrupt.
24597
24598 2008-01-18  Kenneth Zadeck  <zadeck@naturalbridge.com>
24599             Steven Bosscher  <stevenb.gcc@gmail.com>
24600
24601         PR rtl-optimization/26854
24602         PR rtl-optimization/34400
24603         * df-problems.c (df_live_scratch): New scratch bitmap.
24604         (df_live_alloc): Allocate df_live_scratch when doing df_live.
24605         (df_live_reset): Clear the proper bitmaps.
24606         (df_live_bb_local_compute): Only process the artificial defs once
24607         since the order is not important.
24608         (df_live_init): Init the df_live sets only with the variables
24609         found live by df_lr.
24610         (df_live_transfer_function): Use the df_lr sets to prune the
24611         df_live sets as they are being computed.
24612         (df_live_free): Free df_live_scratch.
24613
24614 2008-01-18  Ian Lance Taylor  <iant@google.com>
24615
24616         * common.opt: Add fmerge-debug-strings.
24617         * dwarf2out.c (DEBUG_STR_SECTION_FLAGS): Test
24618         flag_merge_debug_strings rather than flag_merge_constants.
24619         * doc/invoke.texi (Option Summary): Mention
24620         -fmerge-debug-strings.
24621         (Debugging Options): Document -fmerge-debug-strings.
24622
24623 2008-01-18  Ian Lance Taylor  <iant@google.com>
24624
24625         PR c++/33407
24626         * tree.h (DECL_IS_OPERATOR_NEW): Define.
24627         (struct tree_function_decl): Add new field operator_new_flag.
24628         * tree-inline.c (expand_call_inline): When inlining a call to
24629         operator new, force the return value to go into a variable, and
24630         set DECL_NO_TBAA_P on that variable.
24631         * c-decl.c (merge_decls): Merge DECL_IS_OPERATOR_NEW flag.
24632
24633 2008-01-18  Uros Bizjak  <ubizjak@gmail.com>
24634
24635         PR debug/34484
24636         * dwarf2out.c (dwarf2out_switch_text_section): Do not guard with
24637         DWARF2_DEBUGGING_INFO.
24638         (dwarf2out_note_section_used): Ditto.  Add prototype.
24639         (have_multiple_function_sections, text_section_used,
24640         cold_text_section_used, *cold_text_sections): Move declarations
24641         before their uses.
24642
24643 2008-01-17  Bob Wilson  <bob.wilson@acm.org>
24644
24645         * config/xtensa/unwind-dw2-xtensa.h (_Unwind_FrameState): Remove pc
24646         field and add signal_ra.
24647         * config/xtensa/unwind-dw2-xtensa.c (uw_frame_state_for): Remove
24648         assignments to frame state pc.  Move end of stack check after
24649         MD_FALLBACK_FRAME_STATE_FOR.
24650         (uw_update_context_1): Use frame state signal_regs if set, instead
24651         of checking signal_frame flag.
24652         (uw_update_context): Use frame state signal_ra if set.
24653         * config/xtensa/linux.h (MD_UNWIND_SUPPORT): Define.
24654         * config/xtensa/linux-unwind.h: New file.
24655
24656 2008-01-18  Bernhard Fischer  <aldot@gcc.gnu.org>
24657
24658         * modulo-sched.c (get_sched_window): Fix comment typo.
24659
24660 2008-01-17  Andrew MacLeod  <amacleod@redhat.com>
24661
24662         PR tree-optimization/34648
24663         * tree-ssa-sccvn.c (visit_use): Expressions which can throw are varying.
24664
24665 2008-01-17  Anatoly Sokolov <aesok@post.ru>
24666
24667         * config/avr/avr.h (LINK_SPEC): Support -mrelax and -mpmem-wrap-around.
24668         * config/avr/avr.opt (mrelax, mpmem-wrap-around): Add.
24669
24670 2008-01-17  Seongbae Park  <seongbae.park@gmail.com>
24671
24672         PR rtl-optimization/34400
24673         * df-core.c (df_worklist_dataflow_overeager,
24674         df_worklist_dataflow_doublequeue): New functions.
24675         (df_worklist_dataflow): Two different worklist solvers.
24676         * params.def (PARAM_DF_DOUBLE_QUEUE_THRESHOLD_FACTOR):
24677         New param.
24678
24679 2008-01-16  Sebastian Pop  <sebastian.pop@amd.com>
24680
24681         PR testsuite/34821
24682         * doc/invoke.texi: Document the dependence on pthread for fopenmp
24683         and ftree-parallelize-loops.
24684
24685 2008-01-17  Mircea Namolaru  <namolaru@il.ibm.com>
24686
24687         PR rtl-optimization/34826
24688         * loop-doloop (doloop_modify): Update the REG_BR_PROB note.
24689
24690 2008-01-17  Andreas Krebbel  <krebbel1@de.ibm.com>
24691
24692         * global.c (find_reg): Mark the eh regs as used if necessary.
24693         * ra-conflict.c (global_conflicts): Set no_eh_reg flag.
24694         * ra.h (struct allocno): no_eh_reg field added.  Changed
24695         no_stack_reg type to bitfield.
24696
24697 2008-01-17  Eric Botcazou  <ebotcazou@adacore.com>
24698
24699         * tree.c (substitute_in_expr): Add missing 'break'.
24700
24701 2008-01-17  Richard Guenther  <rguenther@suse.de>
24702
24703         PR tree-optimization/34825
24704         * tree-ssa-math-opts.c (is_division_by): Do not recognize
24705         x / x as division to handle.
24706
24707 2008-01-16  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
24708
24709         * pa64-hpux.h (LIB_SPEC): Add "-lpthread" in shared links if "-mt" or
24710         "-pthread" is specified.
24711         * pa-hpux11.h (LIB_SPEC): Likewise.
24712
24713 2008-01-16  Janis Johnson  <janis187@us.ibm.com>
24714             Peter Bergner  <bergner@vnet.ibm.com>
24715
24716         PR rtl-optimization/33796
24717         * sparseset.c (sparseset_alloc): Use xcalloc rather than xmalloc.
24718
24719 2008-01-16  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
24720
24721         PR libgfortran/34699
24722         * pa-hpux.h (LINK_SPEC): Only search /lib/pa1.1 and /usr/lib/pa1.1 on
24723         static links.
24724         * pa-hpux10.h (LINK_SPEC): Likewise.
24725         * pa-hpux11.h (LINK_SPEC): Don't search /lib/pa1.1 and /usr/lib/pa1.1.
24726
24727 2008-01-16  Richard Guenther  <rguenther@suse.de>
24728
24729         PR middle-end/32628
24730         * fold-const.c (fold_convert_const_int_from_int): Do not
24731         set overflow if that occured only because of a sign extension
24732         change when converting from/to a sizetype with the same
24733         precision and signedness.
24734
24735 2008-01-16  Uros Bizjak  <ubizjak@gmail.com>
24736
24737         PR debug/34249
24738         * dwarf2out.c (output_call_frame_info): Move output of FDE initial
24739         location address to the correct place.  Update copyright year.
24740
24741 2008-01-16  Sebastian Pop  <sebastian.pop@amd.com>
24742
24743         * lambda-code.c (lambda_transform_legal_p): Handle the case of
24744         no dependences in the dependence_relations vector.
24745
24746 2008-01-16  Jan Hubicka  <jh@suse.cz>
24747
24748         PR rtl-optimization/31396
24749         * regstat.c (regstat_bb_compute_ri): Compute FREQ_CALLS_CROSSED.
24750         * cfg.c (dump_reg_info): Print it.
24751         * regs.h (struct reg_info_t): add freq_calls_crossed.
24752         (REG_FREQ_CALLS_CROSSED): New macro.
24753         * global.c (global_alloc): Compute freq_calls_crossed for allocno.
24754         (find_reg): Update call of CALLER_SAVE_PROFITABLE.
24755         * regmove.c (optimize_reg_copy_1, optimize_reg_copy_2, fixup_match_2,
24756         regmove_optimize): Update call crossed frequencies.
24757         * local-alloc.c (struct qty): Add freq_calls_crossed.
24758         (alloc_qty): Copute freq_calls_crossed.
24759         (update_equiv_regs, combine_regs): Update REG_FREQ_CALLS_CROSSED.
24760         (find_free_reg): Update call of CALLER_SAVE_PROFITABLE.
24761         * ra.h (struct allocno): Add freq_calls_crossed.
24762
24763 2008-01-16  Sebastian Pop  <sebastian.pop@amd.com>
24764
24765         * gcc.c (LINK_COMMAND_SPEC): Add includes and link options for
24766         libgomp when compiling with ftree-parallelize-loops.
24767         (GOMP_SELF_SPECS): Add -pthread for ftree-parallelize-loops.
24768
24769 2008-01-16  Richard Guenther  <rguenther@suse.de>
24770
24771         PR tree-optimization/34769
24772         * tree-data-ref.c (initialize_matrix_A): Revert fix for PR34458.
24773         * tree.c (int_cst_value): Instead make this function more
24774         permissive in what it accepts as valid input.  Document this
24775         function always sign-extends the value.
24776
24777 2008-01-16  Jakub Jelinek  <jakub@redhat.com>
24778             Richard Guenther  <rguenther@suse.de>
24779
24780         PR c/34668
24781         * gimplify.c (fold_indirect_ref_rhs): Rename to ...
24782         (gimple_fold_indirect_ref_rhs): ... this.
24783         (gimple_fold_indirect_ref): New function with foldings
24784         that preserve lvalueness.
24785         (gimplify_modify_expr_rhs): Call gimple_fold_indirect_ref_rhs.
24786         * tree-flow.h (gimple_fold_indirect_ref): Declare.
24787         * tree-inline.c (copy_body_r): Use gimple_fold_indirect_ref
24788         to fold an INDIRECT_REF, fall back to the old use of
24789         fold_indirect_ref_1.
24790
24791 2008-01-16  Sebastian Pop  <sebastian.pop@amd.com>
24792
24793         * tree-data-ref.c (subscript_dependence_tester_1): Call
24794         free_conflict_function.
24795         (compute_self_dependence): Same.
24796
24797 2008-01-16  Uros Bizjak  <ubizjak@gmail.com>
24798
24799         PR debug/34249
24800         * debug.h (dwarf2out_switch_text_section): Move declaration from ...
24801         * dwarf2out.c (dwarf2out_switch_text_section): ... here.  Make
24802         function global.
24803         * final.c (final_scan_insn) [NOTE_INSN_SWITCH_TEXT_SECTIONS]:
24804         Depending on dwarf2out_do_frame, call dwarf2out_switch_text_section
24805         for DWARF2_UNWIND_INFO targets.
24806
24807 2008-01-16  Richard Guenther  <rguenther@suse.de>
24808
24809         PR c/34768
24810         * c-typeck.c (common_pointer_type): Do not merge inconsistent
24811         type qualifiers for function types.
24812
24813 2008-01-15  Jerry DeLisle  <jvdelisle@gcc.gnu.org>
24814
24815         * tree-parloops.c (gen_parallel_loop): Fix ommision of declaration for
24816         loop_iterator li from previous commit.
24817
24818 2008-01-15  Sebastian Pop  <sebastian.pop@amd.com>
24819
24820         * tree-parloops.c (gen_parallel_loop): Free loop bound estimations.
24821
24822 2008-01-12  Sebastian Pop  <sebastian.pop@amd.com>
24823
24824         * tree-parloops.c (loop_has_blocks_with_irreducible_flag): New.
24825         (parallelize_loops): Don't parallelize irreducible components.
24826
24827 2008-01-14  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
24828
24829         PR c++/24924
24830         * c-opts (c_common_post_options): Do not enable CPP
24831         flag_pedantic_errors by default.
24832
24833 2008-01-14  Eric Botcazou  <ebotcazou@adacore.com>
24834
24835         PR rtl-optimization/31944
24836         * cse.c (remove_pseudo_from_table): New function.
24837         (merge_equiv_classes): Use above function to remove pseudo-registers.
24838         (invalidate): Likewise.
24839
24840 2008-01-13  Richard Guenther  <rguenther@suse.de>
24841
24842         PR middle-end/34601
24843         * emit-rtl.c (set_reg_attrs_for_decl_rtl): Use DECL_MODE
24844         instead of TYPE_MODE to deal with calls from expand_one_error_var.
24845
24846 2008-01-13  Uros Bizjak  <ubizjak@gmail.com>
24847
24848         * gcse.c (cprop_jump): Call validate_unshare_change instead of
24849         validate_change to unshare the source of the PC set.
24850
24851 2008-01-12  Jan Hubicka  <jh@suse.cz>
24852
24853         PR middle-end/32135
24854         * tree-ssa-ccp.c (maybe_fold_offset_to_array_ref): Do not construct
24855         references above array bounds.  This might trigger bounds checks for
24856         pointers to arrays.
24857
24858 2008-01-12  Sebastian Pop  <sebastian.pop@amd.com>
24859
24860         * tree-ssa-ter.c (free_temp_expr_table): Free num_in_part and
24861         new_replaceable_dependencies.
24862
24863 2008-01-12  Doug Kwan  <dougkwan@google.com>
24864
24865         * c-decl.c: (grokdeclarator): Use OPT_Wignored_qualifiers
24866         instead of OPT_Wreturn_type in warning due to ignored return type
24867         qualifiers.
24868         * c-opt.c (c_common_post_option): Add -Wignored-qualifiers to
24869         options included in -Wextra.
24870         * c.opt: New option -Wignored_qualifiers.
24871         * doc/invoke.texi (Warning Options, -Wextra): Add new option
24872         -Wignore_qualifiers.
24873         (-Wignored-qualifiers): Document.
24874         (-Wreturn-type): Remove description of functionality now handled
24875         by -Wignored-qualifiers.
24876
24877 2008-01-12  Eric Botcazou  <ebotcazou@adacore.com>
24878
24879         PR ada/33788
24880         * fold-const.c (fold_unary) <VIEW_CONVERT_EXPR>: Fold an existing
24881         NOP_EXPR if it is between integral types with the same precision.
24882
24883 2008-01-12  Jan Hubicka  <jh@suse.cz>
24884
24885         PR other/28023
24886         * invoke.texi (max-inline-recursive-depth): Fix default value.
24887
24888 2008-01-12  Zdenek Dvorak  <ook@ucw.cz>
24889
24890         * tree-parloops.c (transform_to_exit_first_loop): Cast nit to the
24891         correct type.
24892
24893 2008-01-11  Bob Wilson  <bob.wilson@acm.org>
24894
24895         * config/xtensa/xtensa.c (override_options): Set flag_shlib.
24896
24897 2008-01-11  James E. Wilson  <wilson@specifix.com>
24898
24899         PR target/26015
24900         * config/vax/elf.h (FRAME_POINTER_CFA_OFFSET): Define.
24901
24902 2008-01-11  Anatoly Sokolov <aesok@post.ru>
24903
24904         * config/avr/avr.c (expand_prologue, expand_epilogue): Don't
24905         save/restore frame pointer register and don't use 'call-prologues'
24906         optimization in function with "OS_task" attribute.
24907
24908 2008-01-11  Eric Botcazou  <ebotcazou@adacore.com>
24909
24910         PR middle-end/31309
24911         * expr.c (copy_blkmode_from_reg): Use a mode suited to the size
24912         when copying to memory.
24913
24914 2008-01-11  Steven Bosscher  <stevenb.gcc@gmail.com>
24915
24916         PR rtl-optimization/30905
24917         * cfgcleanup.c: Include dce.h
24918         (crossjumps_occured): New global variable.
24919         (try_crossjump_bb): Exit loop after finding a fallthru edge.
24920         If something changed, set crossjumps_occured to true.
24921         (try_optimize_cfg): Clear crossjumps_occured at the beginning.
24922         Don't add/remove fake edges to exit here...
24923         (cleanup_cfg): ...but do it here, when crossjumping.
24924         Run a fast DCE when successful crossjumps occured in the latest
24925         iteration of try_optimize_cfg.
24926
24927 2008-01-11  Richard Guenther  <rguenther@suse.de>
24928
24929         * tree-ssa-sccvn.c (struct vn_binary_op_s): Move hashcode near opcode.
24930         (struct vn_unary_op_s): Likewise.
24931         (vn_reference_insert): Free old reference on hash collision.
24932
24933 2008-01-10  Raksit Ashok  <raksit@google.com>
24934
24935         PR rtl-optimization/27971
24936         * combine.c (find_split_point): Split PLUS expressions which are
24937         inside a MEM rtx, and whose first operand is complex.
24938
24939 2008-01-10  DJ Delorie  <dj@redhat.com>
24940
24941         * config/m32c/m32c.c (m32c_hard_regno_nregs_1): Renamed from...
24942         (m32c_hard_regno_nregs): ...this, which is now a wrapper.
24943         (m32c_hard_regno_ok): Call the underlying function.
24944
24945 2008-01-10  Richard Guenther  <rguenther@suse.de>
24946
24947         PR middle-end/34683
24948         * tree-cfg.c (tree_merge_blocks): Do not go through the
24949         full-blown folding and stmt updating path if we just deal
24950         with virtual operands.
24951         * tree-ssa-copy.c (may_propagate_copy): Do not short-cut
24952         test for abnormal SSA_NAMEs.
24953
24954 2008-01-10  Andreas Krebbel  <krebbel1@de.ibm.com>
24955
24956         PR middle-end/34641
24957         * reload.c (push_reload): Add assertions.  All constants from
24958         reg_equiv_constant should have been used for replacing the respective
24959         pseudo earlier.
24960         (find_reloads_address): Invoke find_reloads_address_part for
24961         constant taken from the reg_equiv_constant array.
24962
24963 2008-01-10  Steven Bosscher  <stevenb.gcc@gmail.com>
24964
24965         * tree-ssa-sccvn.h (struct vn_ssa_aux): Make the most accessed
24966         field (valnum) the first in the struct.  Replace bools with
24967         unit bit fields.
24968
24969 2008-01-10  Richard Guenther  <rguenther@suse.de>
24970
24971         PR tree-optimization/34651
24972         * tree-sra.c (sra_build_assignment): Sanitize.  Use the correct
24973         types and ordering for masking and converting.
24974
24975 2008-01-09  Sebastian Pop  <sebastian.pop@amd.com>
24976
24977         PR tree-optimization/34017
24978         * lambda-code.c (lambda_loopnest_to_gcc_loopnest): Generate code
24979         also for PHI_NODE expressions.
24980
24981 2008-01-09  Jan Hubicka  <jh@suse.cz>
24982
24983         PR tree-optimization/34708
24984         * tree-inline.c (estimate_num_insns_1): Compute cost of SWITCH_EXPR
24985         based on number of case labels.
24986         (init_inline_once): Remove switch_cost.
24987         * tree-inline.h (eni_weights_d): Remove switch_cost.
24988
24989 2008-01-09  Richard Guenther  <rguenther@suse.de>
24990         Andrew Pinski  <andrew_pinski@playstation.sony.com>
24991
24992         PR middle-end/30132
24993         * gimplify.c (gimplify_cond_expr): Do not create an addressable
24994         temporary if an rvalue is ok or an lvalue is not required.
24995
24996 2008-01-09  Richard Guenther  <rguenther@suse.de>
24997
24998         PR middle-end/34458
24999         * tree-data-ref.c (initialize_matrix_A): Use tree_low_cst,
25000         adjust return type.
25001
25002 2008-01-09  Richard Guenther  <rguenther@suse.de>
25003
25004         PR middle-end/34679
25005         * tree.c (host_integerp): Check for sizetype only if the
25006         type is an integer type.
25007
25008 2008-01-09  Steven Bosscher  <stevenb.gcc@gmail.com>
25009
25010         PR debug/26364
25011         * opts.c (decode_options): Disable inlining of functions called
25012         once if not in unit-at-a-time mode.
25013
25014 2008-01-09  Alexandre Oliva  <aoliva@redhat.com>
25015
25016         * Makefile.in (dse.o): Remove duplicate $(RECOG_H) dependency.
25017
25018 2008-01-08  Richard Guenther  <rguenther@suse.de>
25019
25020         PR middle-end/31863
25021         * tree-ssa-structalias.c (push_fields_onto_fieldstack): Bail
25022         out early if the result will be unused.
25023
25024 2008-01-08  Uros Bizjak  <ubizjak@gmail.com>
25025
25026         PR target/34709
25027         Revert:
25028
25029         2008-01-05  Uros Bizjak  <ubizjak@gmail.com>
25030         * config/i386/i386.c (ix86_builtin_reciprocal): Remove check
25031         for TARGET_RECIP.
25032
25033 2008-01-08  Jan Sjodin  <jan.sjodin@amd.com>
25034
25035         * config/i386/i386.c (k8_cost, amdfam10_cost): Branch costs
25036         for vectorization tuned.
25037
25038 2008-01-08  Richard Guenther  <rguenther@suse.de>
25039
25040         PR tree-optimization/34683
25041         * tree-ssa-operands.c (operand_build_cmp): Export.
25042         * tree-ssa-operands.h (operand_build_cmp): Declare.
25043         * tree-vn.c (vuses_compare): Remove.
25044         (sort_vuses): Use operand_build_cmp.
25045         (sort_vuses_heap): Likewise.
25046         * tree-ssa-sccvn.c (vuses_to_vec): Use VEC_reserve, not VEC_alloc
25047         to re-use old VEC if available.  Do not sort already sorted VUSEs.
25048         (vdefs_to_vec): Do not sort already sorted VDEFs.
25049
25050 2008-01-08  Jakub Jelinek  <jakub@redhat.com>
25051
25052         PR middle-end/34694
25053         * omp-low.c (copy_var_decl): Copy also DECL_SOURCE_LOCATION.
25054
25055 2008-01-08  Uros Bizjak  <ubizjak@gmail.com>
25056
25057         PR target/34702
25058         * doc/invoke.texi (i386 and x86-64 Options) [mrecip]: Document
25059         limitations of reciprocal sequences on x86 targets.
25060
25061 2008-01-08  Richard Guenther  <rguenther@suse.de>
25062
25063         PR tree-optimization/34683
25064         * tree-flow-inline.h (var_ann): Remove overzealous asserts.
25065
25066 2008-01-07  Jakub Jelinek  <jakub@redhat.com>
25067
25068         PR target/34622
25069         * config/darwin.c (darwin_mergeable_string_section): Don't use
25070         .cstring if int_size_in_bytes != TREE_STRING_LENGTH.
25071
25072 2008-01-07  Uros Bizjak  <ubizjak@gmail.com>
25073
25074         PR target/34682
25075         * config/i386/i386.md (neg<mode>2): Rename from negsf2, negdf2 and
25076         negxf2.  Macroize expander using X87MODEF mode iterator.  Change
25077         predicates of op0 and op1 to register_operand.
25078         (abs<mode>2): Rename from abssf2, absdf2 and negxf2.  Macroize
25079         expander using X87MODEF mode iterator.  Change predicates of
25080         op0 and op1 to register_operand.
25081         ("*absneg<mode>2_mixed", "*absneg<mode>2_sse"): Rename from
25082         corresponding patterns and macroize using MODEF macro.  Change
25083         predicates of op0 and op1 to register_operand and remove
25084         "m" constraint. Disparage "r" alternative with "!".
25085         ("*absneg<mode>2_i387"): Rename from corresponding patterns and
25086         macroize using X87MODEF macro.  Change predicates of op0 and op1
25087         to register_operand and remove "m" constraint.  Disparage "r"
25088         alternative with "!".
25089         (absneg splitter with memory operands): Remove.
25090         ("*neg<mode>2_1", "*abs<mode>2_1"): Rename from corresponding
25091         patterns and macroize using X87MODEF mode iterator.
25092         * config/i386/sse.md (negv4sf2, absv4sf2, neg2vdf2, absv2df2):
25093         Change predicate of op1 to register_operand.
25094         * config/i386/i386.c (ix86_expand_fp_absneg_operator): Remove support
25095         for memory operands.
25096
25097 2008-01-07  Nathan Froyd  <froydnj@codesourcery.com>
25098
25099         * config/rs6000/rs6000.h (ASM_CPU_SPEC): Add clause for mcpu=8548.
25100
25101 2008-01-07  Richard Guenther  <rguenther@suse.de>
25102
25103         * basic-block.h (struct edge_def): Pair dest_idx with goto_locus
25104         fields.
25105
25106 2008-01-07  Richard Guenther  <rguenther@suse.de>
25107
25108         PR tree-optimization/34683
25109         * tree-ssa-sccvn.c (vuses_to_vec): Pre-allocate the vector of
25110         VOPs of the needed size to save memory.  Use VEC_quick_push
25111         to save compile-time.
25112         (vdefs_to_vec): Likewise.
25113
25114 2008-01-07  Sa Liu  <saliu@de.ibm.com>
25115
25116         * config/spu/spu.md (divdf3): Genetate inline code for double
25117         division.  The implementation doesn't handle INF or NAN, therefore it
25118         only applies when -ffinite-math-only is given.
25119
25120 2008-01-06  Paolo Carlini  <pcarlini@suse.de>
25121
25122         PR libstdc++/34680
25123         * c-cppbuiltin.c (c_cpp_builtins): Define __GXX_RTTI, if appropriate.
25124         * doc/cpp.texi ([Common Predefined Macros]): Document.
25125
25126 2008-01-06  Uros Bizjak  <ubizjak@gmail.com>
25127
25128         * config/i386/i386.c (ix86_emit_swsqrtsf): Use negative constants in
25129         order to use commutative addition instead of subtraction.
25130
25131 2008-01-06  Andrew Pinski  <andrew_pinski@playstation.sony.com>
25132             Mircea Namolaru  <namolaru@il.ibm.com>
25133             Vladimir Yanovsky  <yanov@il.ibm.com>
25134             Revital Eres  <eres@il.ibm.com>
25135
25136         PR tree-optimization/34263
25137         * tree-outof-ssa.c (process_single_block_loop_latch,
25138         contains_tree_r): New functions.
25139         (analyze_edges_for_bb): Call process_single_block_loop_latch
25140         function to empty single-basic-block latch block if possible.
25141
25142 2008-01-05  Uros Bizjak  <ubizjak@gmail.com>
25143
25144         * config/i386/i386.c (ix86_builtin_reciprocal): Remove check
25145         for TARGET_RECIP.
25146         (ix86_emit_swsqrtsf): Do not filter out infinity for rsqrt expansion.
25147
25148 2008-01-05  Richard Sandiford  <rsandifo@nildram.co.uk>
25149
25150         * c-omp.c (check_omp_for_incr_expr): Handle CONVERT_EXPR.
25151
25152 2008-01-05  Richard Sandiford  <rsandifo@nildram.co.uk>
25153
25154         * config/mips/mips.c (mips_in_small_data_p): Reinstate size > 0 check.
25155
25156 2008-01-05  Jakub Jelinek  <jakub@redhat.com>
25157
25158         PR tree-optimization/34618
25159         * tree-outof-ssa.c (create_temp): Copy over DECL_GIMPLE_REG_P
25160         flag from T.
25161
25162 2008-01-05  Uros Bizjak  <ubizjak@gmail.com>
25163
25164         PR target/34673
25165         * config/i386/i386.c (ix86_emit_swsqrtsf): Swap input operands
25166         in the call to gen_rtx_NE.  Remove unneeded VECTOR_MODE_P check.
25167         Update copyright year.
25168
25169         * config/i386/i386.md (rsqrtsf2): Enable for TARGET_SSE_MATH.
25170         Update copyright year.
25171         * config/i386/sse.md (rsqrtv4sf2): Ditto. Unconditionally expand
25172         using NR fixup.
25173
25174 2008-01-05  Zhouyi Zhou  <zhouzhouyi@FreeBSD.org>
25175
25176         * tree-vrp.c (find_conditional_asserts): Remove redundant check that
25177         edge does not point to current bb before changing need_assert.
25178
25179 2008-01-04  Richard Guenther  <rguenther@suse.de>
25180
25181         PR middle-end/34029
25182         * tree-cfg.c (verify_expr): Do not look inside ADDR_EXPRs
25183         for verifying purposes if they are is_gimple_min_invariant.
25184
25185 2008-01-04  Aldy Hernandez  <aldyh@redhat.com>
25186
25187         PR tree-optimization/34448
25188         PR tree-optimization/34465
25189         * gimplify.c (gimplify_init_constructor): Add new parameter
25190         notify_temp_creation.  Use it.
25191         (gimplify_modify_expr_rhs): Take volatiles into account when
25192         optimizing constructors.
25193         Do not optimize constructors if gimplify_init_constructor will dump to
25194         memory.
25195         * gcc.dg/tree-ssa/pr32901.c: Tests const volatiles.
25196         * gcc.c-torture/compile/pr34448.c: New.
25197
25198 2008-01-04  Jakub Jelinek  <jakub@redhat.com>
25199
25200         PR gcov-profile/34609
25201         * tree-inline.c (declare_return_variable): Set TREE_ADDRESSABLE on
25202         return_slot if result is TREE_ADDRESSABLE.
25203
25204 2008-01-04  Richard Sandiford  <rsandifo@nildram.co.uk>
25205
25206         * config/mips/mips.md (sqrt_condition): Tweak comment.
25207         (recip_condition): Likewise.  Require TARGET_FLOAT64 for DFmode.
25208
25209 2008-01-03  Tom Tromey  <tromey@redhat.com>
25210
25211         PR c/34457
25212         * c-common.c (c_type_hash): Handle VLAs.
25213
25214 2008-01-03  Jan Hubicka  <jh@suse.cz>
25215
25216         PR tree-optimization/31081
25217         * tree-inline.c (remap_ssa_name): Initialize uninitialized SSA vars to
25218         0 when inlining and not inlining to first basic block.
25219         (remap_decl): When var is initialized to 0, don't set default_def.
25220         (expand_call_inline): Set entry_bb.
25221         * tree-inline.h (copy_body_data): Add entry_bb.
25222
25223 2008-01-03  Jakub Jelinek  <jakub@redhat.com>
25224
25225         PR c++/34619
25226         * cgraphunit.c (cgraph_build_static_cdtor): set_cfun back to NULL
25227         before returning.
25228
25229         PR tree-optimization/29484
25230         * tree-inline.c (inline_forbidden_p_2): New function.
25231         (inline_forbidden_p): Disallow inlining if some static var
25232         has an address of a local LABEL_DECL in its initializer.
25233         * doc/extend.texi (Labels as Values): Document &&foo behaviour
25234         vs. inlining.
25235
25236 2008-01-03  Sebastian Pop  <sebastian.pop@amd.com>
25237
25238         PR tree-optimization/34635
25239         * tree-data-ref.c (add_other_self_distances): Make sure that the
25240         evolution step is constant.
25241
25242 2008-01-03  Jakub Jelinek  <jakub@redhat.com>
25243
25244         PR middle-end/34608
25245         * omp-low.c (expand_omp_parallel): Purge dead EH edges in the child fn.
25246
25247 2008-01-02  Richard Sandiford  <rsandifo@nildram.co.uk>
25248
25249         * tree-sra.c (scalarize_init): Insert the generate_element_init
25250         statements after the generate_element_zero statements.
25251
25252 2008-01-02  Richard Guenther  <rguenther@suse.de>
25253
25254         PR middle-end/34093
25255         PR middle-end/31976
25256         * tree-ssa-operands.c (ssa_operand_alloc): Also allocate a buffer
25257         for very large number of operands instead of ICEing.
25258
25259 2008-01-02  Arthur Norman <acn1@cam.ac.uk>
25260
25261         PR target/34013
25262         * config/i386/i386.c (ix86_expand_prologue): Save red-zone
25263         while stack probing.
25264
25265 2008-01-01  Douglas Gregor  <doug.gregor@gmail.com>
25266
25267         * c-opts.c (sanitize_cpp_opts): Don't warn about "long long" when
25268         in C++0x mode.
25269
25270 2008-01-01  Volker Reichelt  <v.reichelt@netcologne.de>
25271
25272         PR libmudflap/26442
25273         * tree-mudflap.c (mx_register_decls): Guard warning by
25274         !DECL_ARTIFICIAL check.
25275
25276 2008-01-01  Jakub Jelinek  <jakub@redhat.com>
25277
25278         * config/i386/sse.md (sse5_pperm, sse5_pperm_pack_v2di_v4si,
25279         sse5_pperm_pack_v4si_v8hi, sse5_pperm_pack_v8hi_v16qi,
25280         sse5_perm<mode>): Fix constraints.