OSDN Git Service

2008-05-16 Nathan Froyd <froydnj@codesourcery.com>
[pf3gnuchains/gcc-fork.git] / gcc / ChangeLog
1 2008-05-16  Nathan Froyd  <froydnj@codesourcery.com>
2
3         * doc/gty.texi (Source Files Containing Type Information): Note
4         that headers should appear first in the gtfiles list.
5
6 2008-05-16  Kenneth Zadeck <zadeck@naturalbridge.com>
7
8         * tree.def (COND_EXEC): Properly documented this code.
9
10 2008-05-16  Diego Novillo  <dnovillo@google.com>
11
12         * dwarf2asm.c (dw2_assemble_integer): Clarify comment.
13         * tree-nested.c (get_trampoline_type): Set DECL_CONTEXT for
14         the new field.
15
16 2008-05-16  Kenneth Zadeck <zadeck@naturalbridge.com>
17
18         * tree-ssa-dse (max_stmt_uid): Removed.
19         (get_stmt_uid, dse_possible_dead_store_p, dse_optimize_stmt, 
20         tree_ssa_dse): Encapsulate all uses of stmt_ann->uid.
21         * tree-ssa-sccvn.c (compare_ops, init_scc_vn): Ditto.
22         * function.h (cfun.last_stmt_uid): New field.
23         * tree-flow-inline.h (set_gimple_stmt_uid, gimple_stmt_uid,
24         gimple_stmt_max_uid, set_gimple_stmt_max_uid, 
25         inc_gimple_stmt_max_uid): New functions.
26         * tree-dfa.c (renumber_gimple_stmt_uids): New function.
27         (create_stmt_ann): Initialize the ann->uid field.
28         * tree-ssa-pre.c (compute_avail): Encapsulate the stmt_ann->uid
29         with new calls.
30         * tree-flow.h (renumber_gimple_stmt_uids): New function.
31
32 2008-05-16  Nathan Froyd  <froydnj@codesourcery.com>
33
34         * tree-flow.h (init_empty_tree_cfg_for_function): Declare.
35         * tree-cfg.c (init_empty_tree_cfg_for_function): Define.
36         (init_empty_tree_cfg): Call it.
37
38 2008-05-16  Kenneth Zadeck <zadeck@naturalbridge.com>
39
40         * cfg.c (init_flow): Add argument THE_FUN.  Use it
41         instead of cfun.  Update all users.
42
43 2008-05-16  Kenneth Zadeck <zadeck@naturalbridge.com>
44
45         * doc/invoke.text (-fdump-tree-*-verbose): New option.
46         * tree-dump.c (dump_options): New verbose option.
47         * tree-pretty-print.c (dump_phi_nodes, dump_generic_bb_buff):
48         Add verbose dump.
49         * tree-pass.h (TDF_VERBOSE): New dump flag.
50         * print-tree.c (print_node): Added code to be able to print
51         PHI_NODES.
52         (tree-flow.h): Added include.
53         Makefile.in (print-tree.o):  Added TREE_FLOW_H.
54
55 2008-05-16  Bernd Schmidt  <bernd.schmidt@analog.com>
56
57         * config/bfin/bfin.c (bfin_discover_loops): Delete empty loops.
58
59         From Jie Zhang  <jie.zhang@analog.com>
60         * config/bfin/t-bfin-elf (MULTILIB_OPTIONS, MULTILIB_DIRNAMES,
61         MULTILIB_MATCHES, MULTILIB_EXCEPTIONS): Remove mcpu=bf532-0.3,
62         mcpu=bf561-none and mcpu=bf561-0.2.
63         * config/bfin/t-bfin-uclinux (MULTILIB_OPTIONS, MULTILIB_DIRNAMES,
64         MULTILIB_MATCHES, MULTILIB_EXCEPTIONS): Likewise.
65         * config/bfin/t-bfin-linux (MULTILIB_OPTIONS, MULTILIB_DIRNAMES,
66         MULTILIB_MATCHES, MULTILIB_EXCEPTIONS): Likewise.
67         * config/bfin/bfin-protos.h (enum bfin_cpu_type): Add
68         BFIN_CPU_UNKNOWN.
69         * config/bfin/elf.h (STARTFILE_SPEC): Use specific CRT for
70         BF561.
71         (LIB_SPEC): Use proper linker script for bf561.  Error if no mcpu
72         option.
73         * config/bfin/bfin.c (bfin_cpu_type): Set to BFIN_CPU_UNKNOWN.
74         (cputype_selected): Remove.
75         (bfin_handle_option): Don't use cputype_selected.
76         (override_options): When no mcpu option, enable all workarounds.
77         Don't use bfin_workarounds.
78         * config/bfin/bfin.h (DRIVER_SELF_SPECS): Don't set default
79         processor type.
80         (DEFAULT_CPU_TYPE): Don't define.
81
82 2008-05-16  Richard Guenther  <rguenther@suse.de>
83
84         * tree-ssa-propagate.c (substitute_and_fold): Fix stmt walking
85         on deletion of the last stmt.
86
87 2008-05-15  H.J. Lu  <hongjiu.lu@intel.com>
88
89         * config/i386/i386.c (ix86_expand_vector_init_general): Optimize
90         V8HImode for SSE2 and V16QImode for SSE4.1.
91
92 2008-05-15  Kenneth Zadeck <zadeck@naturalbridge.com>
93
94         * cgraph.h (compute_inline_parameters): Made public.
95         * tree-pass.h (ipa_opt_pass): Removed function_generate_summary,
96         variable_generate_summary, function_write_summary,
97         variable_write_summary, variable_read_summary.  Added 
98         generate_summary, write_summary, read_summary.
99         * cgraphunit.c (cgraph_process_new_functions): Changed call from
100         pass_ipa_inline.function_generate_summary, to
101         compute_inline_parameters. 
102         * ipa-inline.c (compute_inline_parameters): Made public and added
103         node parameter.
104         (compute_inline_parameters_for_current): New function.
105         (pass_inline_param): Now calls
106         compute_inline_parameters_for_current.
107         (inline_generate_summary): Removed parameter and made to loop over
108         all cgraph nodes.
109         (pass_ipa_inline): Updated for new IPA_PASS structure.
110         * passes.c (execute_ipa_summary_passes): Now is called once per
111         pass rather than once per node*pass.
112         
113 2008-05-15  Anatoly Sokolov <aesok@post.ru>
114
115         * config/avr/avr.c (avr_base_arch_macro, avr_have_movw_lpmx_p, 
116         avr_have_mul_p, avr_asm_only_p): Remove variables.
117         (avr_override_options): Remove initialization of removed variables.
118         (avr_file_start):  Convert removed variables to fields of 
119         'struct base_arch_s *avr_current_arch'. 
120         * config/avr/avr.h (TARGET_CPU_CPP_BUILTINS): (Ditto.).
121         (AVR_HAVE_MUL): (Ditto.).
122         (AVR_HAVE_MOVW): (Ditto.).
123         (AVR_HAVE_LPMX): (Ditto.). 
124         (avr_base_arch_macro, avr_have_movw_lpmx_p, avr_have_mul_p, 
125         avr_asm_only_p): Remove declaration.
126
127 2008-05-15  Diego Novillo  <dnovillo@google.com>
128
129         * config/arm/arm.c (arm_return_in_memory): Fix return
130         type.
131         * config/arm/arm-protos.h (arm_return_in_memory): Likewise.
132
133 2008-05-15  Adam Nemet  <anemet@caviumnetworks.com>
134
135         PR middle-end/36194
136         * combine.c (check_conversion): Rename back to check_promoted_subreg. 
137         Don't call record_truncated_value from here. 
138         (record_truncated_value): Turn it into a for_each_rtx callback. 
139         (record_truncated_values): New function. 
140         (combine_instructions): Call note_uses with 
141         record_truncated_values.  Change name of check_conversion to 
142         check_promoted_subreg. 
143
144 2008-05-15  Janis Johnson  <janis187@us.ibm.com>
145
146         * doc/sourcebuild.texi: Document support for torture tests.
147
148 2008-05-15  Uros Bizjak  <ubizjak@gmail.com>
149
150         * config/i386/sse.md (*vec_concatv2sf_sse4_1): Add "m" constraint
151         to alternative 4 of operand 2.
152
153 2008-05-15  Richard Guenther  <rguenther@suse.de>
154
155         * tree-pass.h (current_pass): Declare.
156         (get_pass_for_id): Likewise.
157         * passes.c (passes_by_id, passes_by_id_size): New globals.
158         (set_pass_for_id): New function.
159         (get_pass_for_id): Likewise.
160         (register_one_dump_file): Use set_pass_for_id to populate passes_by_id.
161         (execute_function_todo): Flush per function statistics.
162         * toplev.c (compile_file): Init statistics.
163         (general_init): Do early statistics initialization.
164         (finalize): Finish statistics.
165         * statistics.h (statistics_early_init): Declare.
166         (statistics_init): Likewise.
167         (statistics_fini): Likewise.
168         (statistics_fini_pass): Likewise.
169         (statistics_counter_event): Likewise.
170         (statistics_histogram_event): Likewise.
171         * statistics.c: New file.
172         * Makefile.in (OBJS-common): Add statistics.o.
173         (statistics.o): Add dependencies.
174         * doc/invoke.texi (-fdump-statistics): Document.
175
176         * tree-ssa-pre.c (compute_antic): Use statistics_histogram_event.
177         (insert): Likewise.
178         (execute_pre): Use statistics_counter_event.
179         * tree-ssa-propagate.c (struct prop_stats_d): Add num_dce field.
180         (substitute_and_fold): Increment it.  Use statistics_counter_event.
181
182 2008-05-15  Diego Novillo  <dnovillo@google.com>
183
184         http://gcc.gnu.org/ml/gcc-patches/2008-05/msg00893.html
185
186         * treestruct.def (TS_STRUCT_FIELD_TAG): Remove.
187         * tree-ssa-alias.c (new_type_alias): Remove references to
188         sub-variables from comment.
189         * tree-ssa-operands.c (swap_tree_operands): Likewise.
190
191 2008-05-15  H.J. Lu  <hongjiu.lu@intel.com>
192
193         * config/i386/sse.md (*vec_concatv2sf_sse4_1): Set prefix_extra
194         attribute to 1 only for insertps alternative.
195
196 2008-05-15  Bernd Schmidt  <bernd.schmidt@analog.com>
197
198         * config/bfin/bfin.md (loadbytes): New pattern.
199         * config/bfin/bfin.c (enum bfin_builtins): Add BFIN_BUILTIN_LOADBYTES.
200         (bfin_init_builtins): Initialize it.
201         (bdesc_1arg): Add it.
202
203 2008-05-15  Sa Liu  <saliu@de.ibm.com>
204
205         * testsuite/gfortran.dg/c_kind_int128_test1.f03: New.
206         * testsuite/gfortran.dg/c_kind_int128_test2.f03: New.
207         * testsuite/lib/target-supports.exp: Add
208         check_effective_target_fortran_integer_16.
209
210 2008-05-15  Bernd Schmidt  <bernd.schmidt@analog.com>
211
212         * config/bfin/bfin.h (TARGET_RETURN_IN_MEMORY): Don't define here.
213         * config/bfin/bfin-protos.h (bfin_return_in_memory): Don't declare.
214         * config/bfin/bfin.c (bfin_return_in_memory): Now static.  Return bool.
215         (TARGET_RETURN_IN_MEMORY): Define.
216
217 2008-05-15  Richard Guenther  <rguenther@suse.de>
218
219         PR middle-end/36244
220         * tree-ssa-alias.c (new_type_alias): Do not set TREE_READONLY.
221         * tree-flow-inline.h (unmodifiable_var_p): Memory tags never
222         represent unmodifiable vars.
223
224 2008-05-15  Richard Guenther  <rguenther@suse.de>
225
226         * tree-dfa.c (refs_may_alias_p): Allow all kinds of
227         INDIRECT_REF and TARGET_MEM_REF.
228         * tree-ssa-sccvn.c (copy_reference_ops_from_ref): Handle
229         TARGET_MEM_REF.
230
231 2008-05-15  Uros Bizjak  <ubizjak@gmail.com>
232             H.J. Lu  <hongjiu.lu@intel.com>
233
234         * config/i386/sse.md (*vec_concatv2sf_sse4_1): New insn pattern.
235         (*vec_concatv2si_sse4_1): Use vector_move_operand predicate
236         for operand 2.  Remove pinsr{q,d} with 0x0 immediate operand from
237         insn alternatives.  Add missing alternatives.
238         (*vec_concatv2di_rex64_sse4_1): Likewise.
239         (*vec_concatv2si_sse2): Use "x" register constraint instead of "Y2".
240         (*vec_concatv2di_rex64_sse): Rename from *vec_concatv2di_rex64.
241         Require TARGET_SSE.
242
243 2008-05-15  Richard Guenther  <rguenther@suse.de>
244
245         PR tree-optimization/36009
246         PR tree-optimization/36204
247         * tree-ssa-loop-im.c (tree-ssa-propagate.h): Include.
248         (determine_invariantness_stmt): Record the loop a store is
249         always executed in.
250         * Makefile.in (tree-ssa-loop-im.o): Add tree-ssa-propagate.h
251         dependency.
252
253 2008-05-15  Richard Guenther  <rguenther@suse.de>
254
255         PR tree-optimization/34330
256         * tree-ssa-alias.c (get_smt_for): Only assert that accesses
257         through the pointer will alias the SMT.
258
259 2008-05-14  Andreas Tobler  <a.tobler@schweiz.org>
260
261         * config/sparc/sparc.h (NO_PROFILE_COUNTERS): Define as 0.
262
263 2008-05-14  H.J. Lu  <hongjiu.lu@intel.com>
264
265         * config/i386/sse.md (*sse4_1_pinsrq): Make it 64bit only.
266
267 2008-05-14  Michael Meissner  <michael.meissner@amd.com>
268             Dwarakanath Rajagopal  <dwarak.rajagopal@amd.com>
269
270         * optabs.h (optab_index): Add OTI_vashl, OTI_vlshr, OTI_vashr,
271         OTI_vrotl, OTI_vrotr to support vector/vector shifts.
272         (vashl_optab): New optab for vector/vector shifts.
273         (vashr_optab): Ditto.
274         (vlshr_optab): Ditto.
275         (vrotl_optab): Ditto.
276         (vrotr_optab): Ditto.
277         (optab_subtype): New enum for optab_for_tree_code call.
278         (optab_for_tree_code): Add enum optab_subtype argument.
279
280         * optabs.c (optab_for_tree_code): Take an additional argument to
281         distinguish between a vector shift by a scalar and vector shift by
282         a vector.  Make lshr/ashr/ashl/rotl/rotr optabs just vector
283         shifted by a scalar.  Use vlshr/vashr/vashl/vrotl/vrotr for the
284         vector shift by a vector.
285         (expand_widen_pattern_expr): Pass additional argument to
286         optab_for_tree_code.
287
288         * genopinit.c (optabs): Add vashr_optab, vashl_optab, vlshr_optab,
289         vrotl_optab, vrotr_optab.
290
291         * expr.c (expand_expr_real_1): Update calls to
292         optab_for_tree_code to distinguish between vector shifted by a
293         scalar and vector shifted by a vector.
294         * tree-vectorizer.c (supportable_widening_operation): Ditto.
295         (supportable_narrowing_operation): Ditto.
296         * tree-vect-analyze.c (vect_build_slp_tree): Ditto.
297         * tree-vect-patterns.c (vect_pattern_recog_1): Ditto.
298         * tree-vect-transform.c (vect_model_reduction_cost): Ditto.
299         (vect_create_epilog_for_reduction): Ditto.
300         (vectorizable_reduction): Ditto.
301         (vectorizable_operation): Ditto.
302         (vect_strided_store_supported): Ditto.
303         (vect_strided_load_supported): Ditto.
304         * tree-vect-generic.c (expand_vector_operations_1): Ditto.
305         * expmed.c (expand_shift): Ditto.
306
307         * doc/md.texi (ashl@var{m}3): Document that operand 2 is always a
308         scalar type.
309         (ashr@var{m}3): Ditto.
310         (vashl@var{m}3): Document new vector/vector shift standard name.
311         (vashr@var{m}3): Ditto.
312         (vlshr@var{m}3): Ditto.
313         (vrotl@var{m}3): Ditto.
314         (vrotr@var{m}3): Ditto.
315
316         * config/i386/i386.md (PPERM_SRC): Move PPERM masks here from i386.c.
317         (PPERM_INVERT): Ditto.
318         (PPERM_REVERSE): Ditto.
319         (PPERM_REV_INV): Ditto.
320         (PPERM_ZERO): Ditto.
321         (PPERM_ONES): Ditto.
322         (PPERM_SIGN): Ditto.
323         (PPERM_INV_SIGN): Ditto.
324         (PPERM_SRC1): Ditto.
325         (PPERM_SRC2): Ditto.
326
327         * config/i386/sse.md (mulv2di3): Add SSE5 support.
328         (sse5_pmacsdql_mem): New SSE5 define_and_split that temporarily
329         allows a memory operand to be the value being added, and split it
330         to improve vectorization.
331         (sse5_pmacsdqh_mem): Ditto.
332         (sse5_mulv2div2di3_low): SSE5 32-bit multiply and extend function.
333         (sse5_mulv2div2di3_high): Ditto.
334         (vec_pack_trunc_v8hi): Add SSE5 pperm support.
335         (vec_pack_trunc_v4si): Ditto.
336         (vec_pack_trunc_v2di): Ditto.
337         (sse5_pcmov_<mode>): Remove code that tried to use use
338         andps/andnps instead of pcmov.
339         (vec_widen_smult_hi_v4si): If we have SSE5, use the pmacsdql and
340         pmacsdqh instructions.
341         (vec_widen_smult_lo_v4si): Ditto.
342
343         * config/i386/i386.c (PPERM_SRC): Move PPERM masks to i386.md.
344         (PPERM_INVERT): Ditto.
345         (PPERM_REVERSE): Ditto.
346         (PPERM_REV_INV): Ditto.
347         (PPERM_ZERO): Ditto.
348         (PPERM_ONES): Ditto.
349         (PPERM_SIGN): Ditto.
350         (PPERM_INV_SIGN): Ditto.
351         (PPERM_SRC1): Ditto.
352         (PPERM_SRC2): Ditto.
353         (ix86_expand_sse_movcc): Move the SSE5 test after the if
354         true/false tests.
355         (ix86_expand_int_vcond): If SSE5 generate all possible integer
356         comparisons.
357         (ix86_sse5_valid_op_p): Allow num_memory to be negative, which
358         says ignore whether the last reference is a memory operand.
359
360 2008-05-14  Michael Meissner  <michael.meissner@amd.com>
361             Paolo Bonzini <bonzini at gnu dot org>
362
363         * config/rs6000/rs6000.c (bdesc_2arg): Change the names of vector
364         shift patterns.
365
366         * config/rs6000/altivec.md (vashl<mode>3): Rename from ashl<mode>3.
367         (vlshr<mode>3): Rename from vlshr<mode>3.
368         (vashr<mode>3): Rename from vashr<mode>3.
369         (mulv4sf3): Change the names of vector shift patterns.
370         (mulv4si3): Ditto.
371         (negv4sf2): Ditt.
372
373         * config/spu/spu.c (spu_initialize_trampoline): Rename vector
374         shift insns.
375
376         * config/spu/spu-builtins.def (SI_SHLH): Rename vector shift insns.
377         (SI_SHLHI): Ditto.
378         (SI_SHL): Ditto.
379         (SI_SHLI): Ditto.
380         (SI_ROTH): Ditto.
381         (SI_ROTHI): Ditto.
382         (SI_ROT): Ditto.
383         (SI_ROTI): Ditto.
384         (SPU_RL_0): Ditto.
385         (SPU_RL_1): Ditto.
386         (SPU_RL_2): Ditto.
387         (SPU_RL_3): Ditto.
388         (SPU_RL_4): Ditto.
389         (SPU_RL_5): Ditto.
390         (SPU_RL_6): Ditto.
391         (SPU_RL_7): Ditto.
392         (SPU_SL_0): Ditto.
393         (SPU_SL_1): Ditto.
394         (SPU_SL_2): Ditto.
395         (SPU_SL_3): Ditto.
396         (SPU_SL_4): Ditto.
397         (SPU_SL_5): Ditto.
398         (SPU_SL_6): Ditto.
399         (SPU_SL_7): Ditto.
400
401         * config/spu/spu.md (v): New iterator macro to add v for vector types.
402         (floatunssidf2_internal): Change vector/vector shift names.
403         (floatunsdidf2_internal): Ditto.
404         (mulv8hi3): Ditto.
405         (ashrdi3): Ditto.
406         (ashrti3): Ditto.
407         (cgt_df): Ditto.
408         (cgt_v2df): Ditto.
409         (dftsv): Ditto.
410         (vashl<mode>3): Rename from ashl<mode>3.
411         (vashr<mode>3): Rename from ashr<mode>3.
412         (vlshr<mode>3): Rename from lshr<mode>3.
413         (vrotl<mode>3): Rename from rotl<mode>3.
414
415 2008-05-14  Michael Meissner  <michael.meissner@amd.com>
416
417         PR target/36224
418         * config/i386/sse.md (vec_widen_smult_hi_v4si): Delete, using unsigned
419         multiply gives the wrong value when doing widening multiplies.
420         (vec_widen_smult_lo_v4si): Ditto.
421
422 2008-05-14  Kenneth Zadeck <zadeck@naturalbridge.com>
423
424         * optabs.c (prepare_cmp_insn): Changed LCT_PURE_MAKE_BLOCK to
425         LCT_PURE and LCT_CONST_MAKE_BLOCK to LCT_CONST in calls to
426         emit_library_call_value. 
427         * builtins.c (expand_builtin_powi, expand_builtin_memcmp): Ditto.
428         * tree.h (ECF_LIBCALL_BLOCK): Removed.
429         * calls.c (initialize_argument_information, precompute_arguments, 
430         expand_call, emit_library_call_value_1): Remove ECF_LIBCALL_BLOCK.
431         (precompute_arguments): Removed flags parameter.
432         * rtl.h (LCT_CONST_MAKE_BLOCK, LCT_PURE_MAKE_BLOCK): Removed.
433         
434 2008-05-14  Richard Guenther  <rguenther@suse.de>
435
436         * tree-ssa-dse.c (dse_possible_dead_store_p): Remove dead code.
437         Make sure to register the store if the use is a PHI_NODE.
438
439 2008-05-14  Olivier Hainque  <hainque@adacore.com>
440
441         * expr.c (expand_expr_real_1) <normal_inner_ref>: Force op0 to
442         memory if the component is to be referenced in BLKmode according
443         to get_inner_reference.
444
445 2008-05-14  Adam Nemet  <anemet@caviumnetworks.com>
446
447         * calls.c (emit_library_call_value_1): Restore code clearing
448         ECF_LIBCALL_BLOCK to ensure that we only call end_sequence once.
449
450 2008-05-14  Olivier Hainque  <hainque@adacore.com>
451             Nicolas Roche  <roche@adacore.com>
452
453         * configure.ac: Add support for a "gcc_subdir" variable in
454         config-lang.in, to denote a subdirectory where the language/GCC
455         integration files are to be found.
456         * configure: Regenerate.
457
458 2008-05-14  Ira Rosen  <irar@il.ibm.com>
459
460         PR tree-optimization/36098
461         * tree-vect-analyze.c (vect_analyze_group_access): Set the gap
462         value for the first load in the group in case of a gap.
463         (vect_build_slp_tree): Check that there are no gaps in loads.
464
465 2008-05-14  Kenneth Zadeck <zadeck@naturalbridge.com>
466
467         * doc/rtl.texi: Removed reference to REG_NO_CONFLICT notes.
468         * optabs.c (expand_binop, expand_absneg_bit, expand_unop,
469         expand_copysign_bit, ): Change call to emit_no_conflict_block to
470         emit_insn and remove unneeded code to construct extra args.
471         (emit_no_conflict_block): Removed.
472         * optabls.h: (emit_no_conflict_block): Removed.
473         * cse.c (cse_extended_basic_block): Remove search for
474         REG_NO_CONFLICT note.
475         * global.c: Removed incorrect comment added in revision 117.
476         * expr.c (convert_move): Change call to emit_no_conflict_block to
477         emit_insn.
478         * recog.c: Change comments so that they do not mention
479         REG_NO_CONFLICT.
480         * local_alloc.c (combine_regs): Removed last parameter.
481         (no_conflict_p): Removed.
482         (block_alloc): Removed note, no_conflict_combined_regno and set
483         local vars. Removed all code to process REG_NO_CONFLICT blocks.
484         (combine_regs): Removed already_dead and code to look for
485         REG_NO_CONFLICT notes.
486         * lower_subreg (remove_retval_note): Removed code to look for
487         REG_NO_CONFLICT block.
488         (resolve_reg_notes): Removed REG_NO_CONFLICT case.
489         (resolve_clobber): Remove code to process libcalls that have
490         REG_NO_CONFLICT notes.
491         * loop_invariant.c (find_invariant_insn): Removed REG_NO_CONFLICT
492         case.
493         * combine.c (can_combine_p, distribute_notes):  Removed
494         REG_NO_CONFLICT case.
495         * config/cris/cris.md (movdi pattern): Changed emit_no_conflict_block
496         to emit_insns.
497         * config/mn10300/mn10300.md (absdf2, negdf2 patterns): Ditto.
498         * config/m68k/m68k.md (negdf2, negxf2, absdf2, absxf2 patterns):
499         Ditto.
500         * reg-notes.def (NO_CONFLICT): Removed.
501
502 2008-05-14  David S. Miller  <davem@davemloft.net>
503
504         * config/sparc/sparc.c (sparc_profile_hook): If
505         NO_PROFILE_COUNTERS, don't generate and pass a label into mcount.
506         * config/sparc/linux.h (NO_PROFILE_COUNTERS): Define as 1.
507         * config/sparc/linux64.h (NO_PROFILE_COUNTERS): Likewise.
508
509 2008-05-14  Andreas Krebbel  <krebbel1@de.ibm.com>
510
511         * cse.c (cse_cc_succs): Invoke delete_insn_and_edges.
512
513 2008-05-13  Uros Bizjak  <ubizjak@gmail.com>
514
515         PR target/36222
516         * config/i386/i386.c (ix86_expand_vector_init_general): Rearrange op0
517         and op1 expansion before vector concat to have less live pseudos.
518
519 2008-05-13  H.J. Lu  <hongjiu.lu@intel.com>
520
521         * config/i386/i386.c (ix86_expand_vector_init_one_nonzero): Use
522         ix86_expand_vector_set if supported.
523
524 2008-05-13  Diego Novillo  <dnovillo@google.com>
525             Kenneth Zadeck  <zadeck@naturalbridge.com>
526
527         http://gcc.gnu.org/ml/gcc-patches/2008-05/msg00748.html
528
529         * tree.h (init_phinodes, fini_phinodes, release_phi_node,
530         phinodes_print_statistics, init_ssanames, fini_ssanames,
531         make_ssa_name, duplicate_ssa_name, duplicate_ssa_name_ptr_info,
532         release_ssa_name, release_defs, replace_ssa_name_symbol,
533         ssanames_print_statistics): Move ...
534         * tree-flow.h: ... here.
535         * tree-ssanames.c (init_ssanames): Add arguments FN and SIZE.
536         Use FN instead of cfun.
537         (make_ssa_name_fn): Rename from make_ssa_name.
538         (pass_release_ssa_names): Add TODO_dump_func to finish flags.
539         * tree-flow-inline.h (make_ssa_name): Move from
540         tree-ssanames.c.  Convert to static inline.  Call make_ssa_name_fn.
541         * omp-low.c (expand_omp_parallel):
542         * tree-flow-inline.h (redirect_edge_var_map_result):
543         * tree-ssa.c (init_tree_ssa): Add argument FN.
544         Use it instead of cfun.  Update all users.
545
546 2008-05-13  Tom Tromey  <tromey@redhat.com>
547
548         PR preprocessor/22168:
549         * doc/cpp.texi (Top): Update menu.
550         (Alternatives to Wrapper #ifndef): New node.
551         (Other Directives): Document deprecation.
552         (Obsolete Features): Remove menu.
553         (Assertions): Merge node into Obsolete Features.
554         (Obsolete once-only headers): Move earlier; rename to Alternatives
555         to Wrapper #ifndef.
556         * doc/cppopts.texi: Update.
557         * c.opt (Wdeprecated): Enable for C and ObjC.
558         * doc/invoke.texi (Option Summary): Move -Wno-deprecated.
559         (C++ Dialect Options): Move -Wno-deprecated from here to...
560         (Warning Options): ... here.
561
562 2008-05-13  Richard Guenther  <rguenther@suse.de>
563
564         PR middle-end/36227
565         * fold-const.c (fold_sign_changed_comparison): Do not allow
566         changes in pointer-ness.
567
568 2008-05-12  Kaz Kojima  <kkojima@gcc.gnu.org>
569
570         PR target/24713
571         * config/sh/sh.c (sh_expand_prologue): Don't clear
572         RTX_FRAME_RELATED_P for push insns.
573
574 2008-05-12  Andy Hutchinson  <hutchinsonandy@aim.com>
575
576         * config/avr/avr.h (MAX_OFILE_ALIGNMENT): Define.
577
578 2008-05-12  Anatoly Sokolov <aesok@post.ru>
579
580         * config/avr/avr.h (machine_function): Add 'is_leaf' field.
581         * config/avr/avr.c (avr_regs_to_save): Compute 'machine->is_leaf'.
582         Use 'machine->is_leaf' instead of 'leaf_func_p'.
583
584 2008-05-12  H.J. Lu  <hongjiu.lu@intel.com>
585
586         * config/i386/sse.md (*sse_concatv4sf): Renamed to ...
587         (*vec_concatv4sf_sse): This.
588         (*sse2_concatv2si): Renamed to ...
589         (*vec_concatv2si_sse2): This.
590         (*sse1_concatv2si): Renamed to ...
591         (*vec_concatv2si_sse): This.
592         (*vec_concatv2di_rex): Renamed to ...
593         (*vec_concatv2di_rex64): This.
594         (*vec_concatv2si_sse4_1): New.
595         (*vec_concatv2di_rex64_sse4_1): Likewise.
596
597 2008-05-12  Uros Bizjak  <ubizjak@gmail.com>
598
599         PR rtl-optimization/36111
600         * recog.c (validate_replace_rtx_1): Unshare new RTL expression
601         that was created for swappable operands.
602
603 2008-05-12  Samuel Tardieu  <sam@rfc1149.net>
604
605         PR ada/36001
606         * Makefile.in: Substitute GNATMAKE and GNATBIND.
607         * configure.ac: Add call to ACX_PROG_GNAT.
608
609 2008-05-11  Volker Reichelt  <v.reichelt@netcologne.de>
610
611         * optc-gen.awk: Fix comment typo.
612
613 2008-05-11  Aaron W. LaFramboise  <aaronavay62@aaronwl.com>
614
615         * pretty-print.c (pp_integer_with_precision): Use
616         HOST_LONG_LONG_FORMAT.
617
618 2008-05-10  Kenneth Zadeck  <zadeck@naturalbridge.com>
619
620         * gcse.c (store_killed_in_insn): Negated call to RTL_CONST_CALL_P.
621                 
622 2008-05-10  H.J. Lu  <hongjiu.lu@intel.com>
623
624         * config/i386/i386.c (bdesc_ptest): Removed.
625         (ix86_builtin_type): Add INT_FTYPE_V2DI_V2DI_PTEST.
626         (bdesc_args): Add __builtin_ia32_ptestz128,
627         __builtin_ia32_ptestc128 and __builtin_ia32_ptestnzc128.
628         (ix86_init_mmx_sse_builtins): Updated.
629         (ix86_expand_args_builtin): Handle INT_FTYPE_V2DI_V2DI_PTEST.
630         (ix86_expand_builtin): Updated.
631
632 2008-05-10  Richard Sandiford  <rdsandiford@googlemail.com>
633
634         * tree-cfg.c (valid_fixed_convert_types_p): New function.
635         (verify_gimple_expr): Handle FIXED_CONVERT_EXPR.
636
637 2008-05-10  Uros Bizjak  <ubizjak@gmail.com>
638
639         * value-prof.c (interesting_stringop_to_profile): Do not
640         return early for BUILT_IN_MEMPCPY.
641
642 2008-05-09  H.J. Lu  <hongjiu.lu@intel.com>
643
644         * calls.c (expand_call): Don't use callgraph to increase
645         preferred_stack_boundary.
646
647         * cgraph.h (cgraph_rtl_info): Use unsigned on
648         preferred_incoming_stack_boundary.
649
650         * final.c (rest_of_clean_state): Use unsigned on
651         preferred_stack_boundary.
652
653 2008-05-09  Tom Tromey  <tromey@redhat.com>
654
655         PR preprocessor/22231:
656         * c-opts.c (sanitize_cpp_opts): Disallow -MG if compilation is
657         proceeding.
658
659 2008-05-09  Uros Bizjak  <ubizjak@gmail.com>
660
661         PR tree-optimization/36129
662         * tree-ssa-ccp.c: Include value-prof.h.
663         (execute_fold_all_builtins): Call gimple_remove_stmt_histograms if
664         built-in function was folded to a constant.
665         * Makefile.in (tree-ssa-ccp.c): Depend on value-prof.h
666
667 2008-05-09  Jan Sjodin  <jan.sjodin@amd.com>
668             Sebastian Pop  <sebastian.pop@amd.com>
669
670         * tree-scalar-evolution.c: Document instantiate_scev.
671         (instantiate_parameters_1): Renamed instantiate_scev_1.
672         Don't use the same loop for instantiation_loop and evolution_loop.
673         (instantiate_scev): New.
674         (instantiate_parameters): Moved...
675         (resolve_mixers): Update call to instantiate_scev_1 to pass the
676         same loop twice.  Maintains the semantics for this function.
677         * tree-scalar-evolution.h (instantiate_scev): Declare.
678         (instantiate_parameters): ...here.  Now static inline.
679         * tree-data-ref.c (dr_analyze_indices): Call instantiate_scev
680         instead of resolve_mixers.
681
682 2008-05-09  Maxim Kuvyrkov  <maxim@codesourcery.com>
683
684         * rtl-factoring.c (collect_pattern_seqs): Fix typo.
685
686 2008-05-09  Tomas Bily  <tbily@suse.cz>
687
688         * config/pa/pa.c (reloc_needed): Use CASE_CONVERT.
689         * tree-cfg.c (verify_expr, verify_gimple_expr): Likewise.
690         * tree-ssa-structalias.c (get_constraint_for): Likewise.
691         * c-common.c (c_common_truthvalue_conversion): Likewise.
692         * tree-object-size.c (compute_object_offset): Likewise.
693         * tree-inline.c (estimate_num_insns_1): Likewise.
694         * varasm.c (const_hash_1, compare_constant, copy_constant)
695         (compute_reloc_for_constant, output_addressed_constants)
696         (initializer_constant_valid_p): Likewise.
697         * c-omp.c (check_omp_for_incr_expr): Likewise.
698         * gimplify.c (gimplify_expr): Likewise.
699         * c-typeck.c (c_finish_return): Likewise.
700         * tree-vectorizer.c (supportable_widening_operation)
701         (supportable_narrowing_operation): Likewise.
702         * c-pretty-print.c (pp_c_cast_expression, pp_c_expression): Likewise.
703         * matrix-reorg.c (can_calculate_expr_before_stmt): Likewise.
704         * expr.c (highest_pow2_factor, expand_expr_real_1): Likewise.
705         * dwarf2out.c (loc_descriptor_from_tree_1, add_bound_info)
706         (descr_info_loc): Likewise.
707         * tree-ssa-loop-ivopts.c (may_be_nonaddressable_p): Likewise.
708         * fold-const.c (operand_equal_p, make_range, extract_muldiv_1)
709         (fold_unary): Likewise.
710         * builtins.c (get_pointer_alignment): Likewise.
711         * tree-scalar-evolution.c (interpret_rhs_modify_stmt)
712         (instantiate_parameters_1): Likewise.
713         * tree.c (expr_align, stabilize_reference): Likewise.
714         * tree-pretty-print.c (dump_generic_node, op_prio): Likewise.
715         * tree-ssa-loop-niter.c (derive_constant_upper_bound): Likewise.
716         * convert.c (strip_float_extensions): Use CONVERT_EXPR_P.
717         * tree-ssa-threadedge.c (simplify_control_stmt_condition): Likewise.
718         * config/alpha/alpha.c (va_list_skip_additions): Likewise.
719         * c-common.c (c_alignof_expr, check_function_arguments_recurse):
720         Likewise.
721         * tree-ssa.c (tree_ssa_useless_type_conversion): Likewise.
722         * varasm.c (initializer_constant_valid_p, output_constant): Likewise.
723         * tree-ssa-forwprop.c (get_prop_source_stmt, can_propagate_from)
724         (forward_propagate_addr_expr_1, forward_propagate_addr_expr)
725         (forward_propagate_comparison)
726         (tree_ssa_forward_propagate_single_use_vars): Likewise.
727         * cfgexpand.c (discover_nonconstant_array_refs_r): Likewise.
728         * emit-rtl.c (component_ref_for_mem_expr)
729         (set_mem_attributes_minus_bitpos): Likewise.
730         * tree-ssa-phiopt.c (conditional_replacement): Likewise.
731         * gimplify.c (gimplify_conversion, goa_lhs_expr_p, gimplify_expr):
732         Likewise.
733         * c-typeck.c (default_function_array_conversion, build_indirect_ref)
734         (build_function_call, pointer_diff, build_compound_expr)
735         (c_finish_return): Likewise.
736         * tree-vect-analyze.c (vect_determine_vectorization_factor): Likewise.
737         * matrix-reorg.c (get_inner_of_cast_expr, may_flatten_matrices_1):
738         Likewise.
739         * tree-ssa-ifcombine.c (recognize_single_bit_test): Likewise.
740         * expr.c (is_aligning_offset): Likewise.
741         * tree-ssa-alias.c (is_escape_site): Likewise.
742         * tree-stdarg.c (va_list_counter_bump, check_va_list_escapes)
743         (check_all_va_list_escapes): Likewise.
744         * tree-ssa-loop-ivopts.c (determine_base_object)
745         (determine_common_wider_type): Likewise.
746         * dojump.c (do_jump): Likewise.
747         * tree-ssa-sccvn.c (simplify_unary_expression): Likewise.
748         * tree-gimple.c (is_gimple_cast): Likewise.
749         * fold-const.c (decode_field_reference, )
750         (fold_sign_changed_comparison, fold_unary, fold_comparison)
751         (fold_binary): Likewise.
752         * tree-ssa-alias-warnings.c (find_alias_site_helper)
753         (already_warned_in_frontend_p): Likewise.
754         * builtins.c (get_memory_rtx, fold_builtin_next_arg): Likewise.
755         * tree.c (really_constant_p, get_unwidened): Likewise.
756         * tree-ssa-loop-niter.c (expand_simple_operations): Likewise.
757         * tree-ssa-loop-im.c (rewrite_bittest): Likewise.
758         * tree-vrp.c (register_edge_assert_for_2, register_edge_assert_for_1):
759         Likewise.
760         * tree.h (STRIP_NOPS, STRIP_SIGN_NOPS, STRIP_TYPE_NOPS): Use
761         CONVERT_EXPR_P.
762         (CONVERT_EXPR_P): Define.
763         (CASE_CONVERT): Define.
764         
765 2008-05-08  Kenneth Zadeck  <zadeck@naturalbridge.com>
766
767         PR middle-end/36117
768         * dce.c (deletable_insn_p): Do not delete calls if df_in_progress.
769         (delete_unmarked_insns): When deleting a call, call
770         delete_unreachable_blocks.
771         * rtl.texi (RTL_CONST_CALL_P, RTL_PURE_CALL_P,
772         RTL_CONST_OR_PURE_CALL_P, RTL_LOOPING_CONST_OR_PURE_CALL_P): Fixed doc.
773
774 2008-05-08  Richard Guenther  <rguenther@suse.de>
775
776         * doc/invoke.texi (-fdump-tree-salias): Remove documentation.
777         (-ftree-salias): Likewise.
778         (salias-max-implicit-fields): Remove param documentation.
779         (salias-max-array-elements): Likewise.
780         * tree-pass.h (pass_create_structure_vars): Remove.
781         * params.h (SALIAS_MAX_IMPLICIT_FIELDS): Remove.
782         (SALIAS_MAX_ARRAY_ELEMENTS): Likewise.
783         * tree-ssa-alias.c (create_structure_vars): Remove.
784         (gate_structure_vars): Likewise.
785         (pass_create_structure_vars): Likewise.
786         (gate_build_alias): Likewise.
787         (pass_build_alias): Adjust to run always and dump the function.
788         * common.opt (ftree-salias): Hide.
789         * passes.c (init_optimization_passes): Remove
790         pass_create_structure_vars, adjust comment.
791         * params.def (PARAM_SALIAS_MAX_IMPLICIT_FIELDS): Remove.
792         (PARAM_SALIAS_MAX_ARRAY_ELEMENTS): Likewise.
793         * opts.c (decode_options): Do not set flag_tree_salias.
794         (common_handle_option): Add OPT_ftree_salias to the backward
795         compatibility section.
796
797 2008-05-08  Richard Guenther  <rguenther@suse.de>
798
799         * tree-flow-inline.h (var_can_have_subvars): Move ...
800         * tree-ssa-structalias.c (var_can_have_subvars): ... here.
801         * tree-flow.h (var_can_have_subvars): Remove.
802         (push_fields_onto_fieldstack): Remove.
803         (sort_fieldstack): Likewise.
804         (struct fieldoff): Move ...
805         * tree-ssa-structalias.c (struct fieldoff): ... here.  Remove
806         alias_set and base_for_components fields.
807         (sort_fieldstack): Make static.
808         (push_fields_onto_fieldstack): Likewise.  Remove code that
809         handles anything but RECORD_TYPEs.  Remove alias_set and
810         base_for_components handling.
811         (create_variable_info_for): Adjust.
812
813 2008-05-08  Seongbae Park  <seongbae.park@gmail.com>
814
815         * common.opt (Wframe-larger-than=): Shorten the help message
816         to one line.
817         * doc/invoke.texi (Wframe-larger-than=): Add more description.
818
819 2008-05-08  Rafael Espindola  <espindola@google.com>
820
821         * tree-complex.c (expand_complex_div_wide): Don't create CONDs that
822         trap.
823         * tree-gimple.c (is_gimple_condexpr): Check that the expression doesn't
824         trap and that both operands are gimple values.
825         (canonicalize_cond_expr_cond): Use is_gimple_condexpr.
826         * gcc/tree-eh.c (tree_could_trap_p): Correctly detect if a comparison
827         is a fp operation.
828
829 2008-05-08  Richard Sandiford  <rsandifo@nildram.co.uk>
830
831         * read-rtl.c (join_c_conditions): Return the first string if the
832         two strings are equal.
833
834 2008-05-08  Richard Sandiford  <rsandifo@nildram.co.uk>
835
836         * gensupport.h (pred_data): Add a "num_codes" field.
837         (add_predicate_code): Declare.
838         * gensupport.c (add_predicate_code): New function.
839         (std_pred_table): Add an "allows_const_p" field.
840         (std_preds): Set this field for predicates that allow RTX_CONST_OBJs.
841         Remove the (incomplete) list of such codes from the codes field.
842         (init_predicate_table): Use add_predicate_code.  Add all
843         RTX_CONST_OBJs if allows_const_p is true.
844         * genrecog.c (process_define_predicate): Use add_predicate_code.
845
846 2008-05-08  David Daney  <ddaney@avtrex.com>
847             Richard Sandiford  <rsandifo@nildram.co.uk>
848         
849         * config/mips/mips.md (mips_expand_compare_and_swap_12): Handle
850         special case of constant zero operands.
851         * config/mips/mips.c (mips_expand_compare_and_swap_12): Zero extend
852         old and new values.  Special case constant zero values.
853         * config/mips/mips.h (MIPS_COMPARE_AND_SWAP): Skip 'sync' if compare
854         fails.
855         (MIPS_COMPARE_AND_SWAP_12): Handle constant zero operands.
856         (MIPS_COMPARE_AND_SWAP_12_0): New macro.
857
858 2008-05-08  Paolo Bonzini  <bonzini@gnu.org>
859
860         PR target/36090
861         * simplify-rtx.c (simplify_plus_minus): Create CONST of
862         similar RTX_CONST_OBJ before CONST_INT.
863
864 2008-05-08  Steve Ellcey  <sje@cup.hp.com>
865
866         * stmt.c (expand_stack_restore): Change sa mode if needed.
867
868 2008-05-08  Richard Guenther  <rguenther@suse.de>
869
870         * config/i386/i386-protos.h (ix86_return_in_memory): Adjust
871         return type to bool.
872         (ix86_sol10_return_in_memory): Likewise.
873         (ix86_i386elf_return_in_memory): Likewise.
874         (ix86_i386interix_return_in_memory): Likewise.
875         * config/i386/i386.c (ix86_return_in_memory): Likewise.
876         (ix86_sol10_return_in_memory): Likewise.
877         (ix86_i386elf_return_in_memory): Likewise.
878         (ix86_i386interix_return_in_memory): Likewise.
879
880 2008-05-08  Kai Tietz  <kai.tietz@onevision.com>
881
882         PR bootstrap/36180
883         * calls.c (compute_argument_block_size ): Add ATTRIBUTE_UNUSED to
884         fndecl argument.
885         (emit_library_call_value_1): Add ATTRIBUTE_UNUSED to variable fndecl.
886         * target-def.h: Check that TARGET_RETURN_IN_MEMORY isn't
887         declared in front.
888
889 2008-05-08  Richard Guenther  <rguenther@suse.de>
890
891         * tree-data-ref.c (dr_analyze_alias): Do not set DR_SUBVARS.
892         * tree-data-ref.h (struct dr_alias): Remove subvars field.
893         (DR_SUBVARS): Remove.
894         * tree-dfa.c (dump_subvars_for): Remove.
895         (debug_subvars_for): Likewise.
896         (dump_variable): Do not dump subvars.
897         (remove_referenced_var): Do not remove subvars.
898         * tree-flow-inline.h (clear_call_clobbered): SFTs no longer exist.
899         (lookup_subvars_for_var): Remove.
900         (get_subvars_for_var): Likewise.
901         (get_subvars_at): Likewise.
902         (get_first_overlapping_subvar): Likewise.
903         (overlap_subvar): Likewise.
904         * tree-flow.h (subvar_t): Remove.
905         (struct var_ann_d): Remove subvars field.
906         * tree-ssa-alias.c (mark_aliases_call_clobbered): Remove queued
907         argument.  Remove special handling of SFTs.
908         (compute_tag_properties): Likewise.
909         (set_initial_properties): Likewise.
910         (compute_call_clobbered): Likewise.
911         (count_mem_refs): Likewise.
912         (compute_memory_partitions): Likewise.
913         (compute_flow_insensitive_aliasing): Likewise.
914         (setup_pointers_and_addressables): Likewise.
915         (new_type_alias): Likewise.
916         (struct used_part): Remove.
917         (used_portions): Likewise.
918         (struct used_part_map): Likewise.
919         (used_part_map_eq): Likewise.
920         (used_part_map_hash): Likewise.
921         (free_used_part_map): Likewise.
922         (up_lookup): Likewise.
923         (up_insert): Likewise.
924         (get_or_create_used_part_for): Likewise.
925         (create_sft): Likewise.
926         (create_overlap_variables_for): Likewise.
927         (find_used_portions): Likewise.
928         (create_structure_vars): Likewise.
929         * tree.def (STRUCT_FIELD_TAG): Remove.
930         * tree.h (MTAG_P): Adjust.
931         (struct tree_memory_tag): Remove base_for_components and
932         unpartitionable flags.
933         (struct tree_struct_field_tag): Remove.
934         (SFT_PARENT_VAR): Likewise.
935         (SFT_OFFSET): Likewise.
936         (SFT_SIZE): Likewise.
937         (SFT_NONADDRESSABLE_P): Likewise.
938         (SFT_ALIAS_SET): Likewise.
939         (SFT_UNPARTITIONABLE_P): Likewise.
940         (SFT_BASE_FOR_COMPONENTS_P): Likewise.
941         (union tree_node): Remove sft field.
942         * alias.c (get_alias_set): Remove special handling of SFTs.
943         * print-tree.c (print_node): Remove handling of SFTs.
944         * tree-dump.c (dequeue_and_dump): Likewise.
945         * tree-into-ssa.c (mark_sym_for_renaming): Likewise.
946         * tree-nrv.c (dest_safe_for_nrv_p): Remove special handling of SFTs.
947         * tree-predcom.c (set_alias_info): Do not set subvars.
948         * tree-pretty-print.c (dump_generic_node): Do not handle SFTs.
949         * tree-ssa-loop-ivopts.c (get_ref_tag): Likewise.
950         * tree-ssa-operands.c (access_can_touch_variable): Likewise.
951         (add_vars_for_offset): Remove.
952         (add_virtual_operand): Remove special handling of SFTs.
953         (add_call_clobber_ops): Likewise.
954         (add_call_read_ops): Likewise.
955         (get_asm_expr_operands): Likewise.
956         (get_modify_stmt_operands): Likewise.
957         (get_expr_operands): Likewise.
958         (add_to_addressable_set): Likewise.
959         * tree-ssa.c (verify_ssa_name): Do not handle SFTs.
960         * tree-tailcall.c (suitable_for_tail_opt_p): Likewise.
961         * tree-vect-transform.c (vect_create_data_ref_ptr): Do not set subvars.
962         * tree.c (init_ttree): Remove STRUCT_FIELD_TAG initialization.
963         (tree_code_size): Remove STRUCT_FIELD_TAG handling.
964         (tree_node_structure): Likewise.
965         * tree-ssa-structalias.c (set_uids_in_ptset): Remove special
966         handling of SFTs.
967         (find_what_p_points_to): Likewise.
968
969 2008-05-08  Sa Liu  <saliu@de.ibm.com>
970
971         * config/spu/spu.md: Fixed subti3 pattern.
972
973 2008-05-08  Richard Guenther  <rguenther@suse.de>
974
975         PR middle-end/36154
976         * tree-ssa-structalias.c (push_fields_onto_fieldstack): Make
977         sure to create a representative for trailing arrays for PTA.
978
979 2008-05-08  Richard Guenther  <rguenther@suse.de>
980
981         PR middle-end/36172
982         * fold-const.c (operand_equal_p): Two objects which types
983         differ in pointerness are not equal.
984
985 2008-05-08  Kai Tietz  <kai.tietz@onevision.com>
986
987         * calls.c (compute_argument_block_size): Add argument tree fndecl.
988         (OUTGOING_REG_PARM_STACK_SPACE): Add function type argument.
989         (emit_library_call_value_1): Add new variable fndecl initialized by
990         NULL_TREE. It should be the decl type of orgfun, but this information
991         seems not to be available here, so it uses the default calling abi.
992         * config/arm/arm.c (arm_return_in_memory): Add fntype argumen.
993         * config/arm/arm.h (RETURN_IN_MEMORY): Replace RETURN_IN_MEMORY
994         by TARGET_RETURN_IN_MEMORY.
995         * config/i386/i386-interix.h: Likewise.
996         * config/i386/i386.h: Likewise.
997         * config/i386/i386elf.h: Likewise.
998         * config/i386/ptx4-i.h: Likewise.
999         * config/i386/sol2-10.h: Likewise.
1000         * config/i386/sysv4.h: Likewise.
1001         * config/i386/vx-common.h: Likewise.
1002         * config/cris/cris.h: Removed #if 0 clause.
1003         * config/arm/arm-protos.h (arm_return_in_memory): Add fntype argument.
1004         * config/i386/i386-protos.h (ix86_return_in_memory): Add fntype
1005         argument.
1006         (ix86_sol10_return_in_memory): Likewise.
1007         (ix86_i386elf_return_in_memory): New.
1008         (ix86_i386interix_return_in_memory): New.
1009         * config/mt/mt-protos.h (mt_return_in_memory): New.
1010         * config/mt/mt.c: Likewise.
1011         * config/mt/mt.h (OUTGOING_REG_PARM_STACK_SPACE): Add FNTYPE argument.
1012         (RETURN_IN_MEMORY):  Replace by TARGET_RETURN_IN_MEMORY.
1013         * config/bfin/bfin.h: Likewise.
1014         * config/bfin/bfin-protos.h (bfin_return_in_memory): Add fntype
1015         argument.
1016         * config/bfin/bfin.c: Likewise.
1017         * config/pa/pa.h (OUTGOING_REG_PARM_STACK_SPACE): Add FNTYPE argument.
1018         * config/alpha/unicosmk.h: Likewise.
1019         * config/i386/cygming.h: Likewise.
1020         * config/iq2000/iq2000.h: Likewise.
1021         * config/mips/mips.h: Likewise.
1022         * config/mn10300/mn10300.h: Likewise.
1023         * config/rs6000/rs6000.h: Likewise.
1024         * config/score/score.h: Likewise.
1025         * config/spu/spu.h: Likewise.
1026         * config/v850/v850.h: Likewise.
1027         * defaults.h: Likewise.
1028         * doc/tm.texi (OUTGOING_REG_PARM_STACK_SPACE): Adjust documentation.
1029         * expr.c (emit_block_move): Adjust use of
1030         OUTGOING_REG_PARM_STACK_SPACE.
1031         * function.c (STACK_DYNAMIC_OFFSET): Adjust use of
1032         OUTGOING_REG_PARM_STACK_SPACE.
1033         * targhooks.c (default_return_in_memory): Remove RETURN_IN_MEMORY.
1034
1035 2008-05-08  Jakub Jelinek  <jakub@redhat.com>
1036
1037         * tree-parloops.c (create_parallel_loop): Set OMP_RETURN_NOWAIT
1038         on OMP_RETURN for OMP_FOR.
1039
1040         PR debug/35896
1041         * dwarf2out.c (dw_expand_expr, common_check): Removed.
1042         (fortran_common): New function.
1043         (gen_variable_die): Call fortran_common instead of common_check,
1044         adjust for it returning tree instead of rtx.  Formatting.
1045
1046 2008-05-07  Kenneth Zadeck  <zadeck@naturalbridge.com>
1047
1048         PR rtl/7335
1049         PR rtl/33826
1050         * see.c (see_copy_insn): Copy new pure const attributes for new call.
1051         * c-decl.c (merge_decls): Ditto.
1052         * postreload.c (record_opr_changes): Change CONST_OR_PURE_CALL_P
1053         to RTL_CONST_OR_PURE_CALL_P.
1054         * tree.c (define_local_buitin): Rename DECL_IS_PURE to DECL_PURE_P.
1055         Initialized DECL_LOOPING_CONST_PURE.
1056         (process_call_operands): Set tree_side_effects properly.
1057         * tree.h (TREE_READONLY_DECL_P): Removed.
1058         (DECL_IS_PURE): Renamed to DECL_PURE_P.
1059         (DECL_LOOPING_OR_CONST_P): New macro.
1060         (struct tree_function_decl): Added looping_const_or_pure_p.
1061         (ECF_*) Renumbered.
1062         (ECF_LOOPING_OR_CONST_P): New macro.
1063         * rtlanal.c (pure_const_p): Removed.
1064         * builtins.c (expand_builtin): Rename DECL_IS_PURE to DECL_PURE_P.
1065         * reorg.c (delete_prior_computation) Changed CONST_OR_PURE_CALL_P
1066         to RTL_CONST_CALL_P.
1067         * ipa-pure-const.c (pure_const_state_e): Added looping field.
1068         (check_decl, check_tree, check_call, scan_function): Initialize
1069         looping.
1070         (analyze_function): Rename DECL_IS_PURE to DECL_PURE_P.
1071         (static_execute): Set looping true for recursive functions.
1072         Undo setting state to IPA_NEITHER for recursive functions.
1073         * cse.c (cse_insn): 
1074         * ifcvt.c (noce_can_store_speculate_p): Changed
1075         CONST_OR_PURE_CALL_P and pure_call_p to RTL_CONST_CALL_P or 
1076         RTL_CONST_OR_PURE_CALL_P.
1077         * dse.c (scan_insn): Ditto.
1078         * local-alloc.c (validate_equiv_mem, memref_used_between_p): Ditto.
1079         * gcse.c (oprs_not_seen_p) Changed CONST_OR_PURE_CALL_P to
1080         RTL_CONST_OR_PURE_CALL_P.
1081         (store_killed_in_insn): Changed CONST_OR_PURE_CALL_P and
1082         pure_call_p to RTL_CONST_CALL_P.
1083         * gimplify.c (gimplify_call_expr): Clear side effects for
1084         non-looping pure and constant calls.
1085         * calls.c (emit_call_1): Set rtl flags from ecf flags.
1086         (flags_from_decl_or_type): Set ecf flags from decl flags.
1087         (initialize_argument_information): Turn off
1088         ECF_LOOPING_CONST_OR_PURE when turning off ECF_CONST.
1089         Change const to pure if callee_copies is true rather than just
1090         turning off const.
1091         (expand_call): Turn off ECF_LOOPING_PURE_CONST_CALL and remove old
1092         way of marking pure calls.
1093         (emit_library_call_value_1): Turn off ECF_LOOPING_PURE_CONST_CALL.
1094         Remove hack that was supposed to fix pr7335 and remove old
1095         way of marking pure calls.
1096         * emit-rtl.c (emit_copy_of_insn_after): Copy RTL_CONST_CALL_P,
1097         RTL_PURE_CALL_P, RTL_LOOPING_CONST_OR_PURE_CALL_P.
1098         * cselib.c (cselib_process_insn): Changed CONST_OR_PURE_CALL_P to
1099         RTL_CONST_OR_PURE_CALL_P.
1100         * tree-ssa-pre.c (can_value_number_call): Fixed spacing.
1101         * loop-invariant.c (find_exits, find_invariant_bb): Changed
1102         CONST_OR_PURE_CALL_P to RTL_CONST_OR_PURE_CALL_P.
1103         * sched-deps.c (schedule_analyze): Ditto.
1104         * rtl.h (struct rtx_def): Use call field, unchanging field, and
1105         return_val field of calls to represent pure and const function info.
1106         (CONST_OR_PURE_CALL_P): Deleted macro.
1107         (RTL_CONST_CALL_P, RTL_PURE_CALL_P,
1108         RTL_LOOPING_CONST_OR_PURE_CALL_P, RTL_CONST_OR_PURE_P): New macros.
1109         * tree-inline.c (copy_body_r): Changed TREE_READONLY_DECL_P to
1110         TREE_READONLY.
1111         * tree-optimize.c (execute_fixup_cfg): Added test for
1112         ECF_LOOPING_CONST_OR_PURE.
1113         * c-common.c (handle_pure_attribute): Changed DECL_IS_PURE to
1114         DECL_PURE_P.
1115         * tree-cfg.c (update_call_expr_flags): Do not clear tree side
1116         effects for looping pure or const calls.
1117         (verify_gimple_expr): Added verification code. 
1118         * config/alpha/alpha.c (alpha_legitimize_address,
1119         alpha_emit_xfloating_libcall): Changed CONST_OR_PURE_CALL_P to
1120         RTL_CONST_CALL_P.
1121         * config/s390/s390.c (s390_emit_tls_call_insn): Ditto.
1122         * config/rs6000/rs6000.c (rs6000_legitimize_tls_address): Ditto.
1123         * config/mips/mips.c (mips_call_tls_get_addr): Ditto.
1124         * cfgrtl.c (need_fake_edge_p): Changed CONST_OR_PURE_CALL_P to
1125         RTL_CONST_OR_PURE_CALL_P.
1126         * dce.c (deletable_insn_p): Allow non looping, non sibling, pure
1127         and const calls to be deleted.
1128
1129 2008-05-07  Uros Bizjak  <ubizjak@gmail.com>
1130
1131         PR target/35714
1132         * config/i386/mmx.md (mmx_subv2sf3): New expander.
1133         (*mmx_subv2sf3): Rename from mmx_subv2sf3 insn pattern.
1134         (*mmx_eqv2sf3): Rename from mmx_eqv2sf3 insn pattern.
1135         (mmx_eqv2sf3): New expander.  Use ix86_fixup_binary_operands_no_copy
1136         to handle nonimmediate operands.
1137         (*mmx_paddwd): Rename from mmx_paddwd insn pattern.
1138         (mmx_paddwd): New expander.  Use ix86_fixup_binary_operands_no_copy
1139         to handle nonimmediate operands.
1140         (*mmx_pmulhrwv4hi3): Rename from mmx_pmulhrwv4hi3 insn pattern.
1141         (mmx_pmulhrwv4hi3): New expander.  Use
1142         ix86_fixup_binary_operands_no_copy to handle nonimmediate operands.
1143         (*sse2_umulv1siv1di3): Rename from sse2_umulv1siv1di3 insn pattern.
1144         (sse2_umulv1siv1di3): New expander.  Use
1145         ix86_fixup_binary_operands_no_copy to handle nonimmediate operands.
1146         (*mmx_eq<mode>3): Rename from mmx_eq<mode>3 insn pattern.
1147         (mmx_eq<mode>3): New expander.  Use
1148         ix86_fixup_binary_operands_no_copy to handle nonimmediate operands.
1149         (*mmx_uavgv8qi3): Rename from mmx_uavgv8qi3 insn pattern.
1150         (mmx_uavgv8qi3): New expander.  Use
1151         ix86_fixup_binary_operands_no_copy to handle nonimmediate operands.
1152         (*mmx_uavgv4hi3): Rename from mmx_uavgv4hi3 insn pattern.
1153         (mmx_uavgv4hi3): New expander.  Use
1154         ix86_fixup_binary_operands_no_copy to handle nonimmediate operands.
1155
1156         * config/i386/sse.md
1157         (sse_movhlps_exp): New expander.  Use ix86_fixup_binary_operands
1158         to handle nonimmediate operands.
1159         (sse_movlhps_exp): New expander.  Use ix86_fixup_binary_operands
1160         to handle nonimmediate operands.
1161         (sse_loadhps_exp): New expander.  Use ix86_fixup_binary_operands
1162         to handle nonimmediate operands.
1163         (sse_loadlps_exp): New expander.  Use ix86_fixup_binary_operands
1164         to handle nonimmediate operands.
1165         (sse2_unpckhpd_exp): New expander.  Use
1166         ix86_fixup_binary_operands_no_copy to handle nonimmediate operands.
1167         (sse2_unpcklpd_exp): New expander.  Use
1168         ix86_fixup_binary_operands_no_copy to handle nonimmediate operands.
1169         (sse_loadhpd_exp): New expander.  Use ix86_fixup_binary_operands
1170         to handle nonimmediate operands.
1171         (sse_loadlpd): New expander.  Use ix86_fixup_binary_operands
1172         to handle nonimmediate operands.
1173         (*sse2_<plusminus_insn><mode>3): Rename from
1174         sse2_<plusminus_insn><mode>3 insn pattern.
1175         (sse2_<plusminus_insn><mode>3): New expander.  Use
1176         ix86_fixup_binary_operands_no_copy to handle nonimmediate operands.
1177         (*sse2_umulv2siv2di3): Rename from sse2_umulv2siv2di3 insn pattern.
1178         (sse2_umulv2siv2di3): New expander.  Use
1179         ix86_fixup_binary_operands_no_copy to handle nonimmediate operands.
1180         (*sse4_1_mulv2siv2di3): Rename from sse4_1_mulv2siv2di3 insn pattern.
1181         (sse4_1_mulv2siv2di3): New expander.  Use
1182         ix86_fixup_binary_operands_no_copy to handle nonimmediate operands.
1183         (*sse2_pmaddwd): Rename from sse2_pmaddwd insn pattern.
1184         (sse2_pmaddwd): New expander.  Use
1185         ix86_fixup_binary_operands_no_copy to handle nonimmediate operands.
1186         (*sse2_eq<mode>3): Rename from sse2_eq<mode>3 insn pattern.
1187         (sse2_eq<mode>3): New expander.  Use
1188         ix86_fixup_binary_operands_no_copy to handle nonimmediate operands.
1189         (*sse4_1_eqv2di3): Rename from sse4_1_eqv2di3 insn pattern.
1190         (sse4_1_eqv2di3): New expander.  Use
1191         ix86_fixup_binary_operands_no_copy to handle nonimmediate operands.
1192         (*sse2_uavgv16qi3): Rename from sse2_uavgv16qi3 insn pattern.
1193         (sse2_uavgv16qi3): New expander.  Use
1194         ix86_fixup_binary_operands_no_copy to handle nonimmediate operands.
1195         (*sse2_uavgv16qi3): Rename from sse2_uavgv16qi3 insn pattern.
1196         (sse2_uavgv16qi3): New expander.  Use
1197         ix86_fixup_binary_operands_no_copy to handle nonimmediate operands.
1198         (*sse2_uavgv8hi3): Rename from sse2_uavgv8hi3 insn pattern.
1199         (sse2_uavgv8hi3): New expander.  Use
1200         ix86_fixup_binary_operands_no_copy to handle nonimmediate operands.
1201         (*ssse3_pmulhrswv8hi3): Rename from ssse3_pmulhrswv8hi3 insn pattern.
1202         (ssse3_pmulhrswv8hi3): New expander.  Use
1203         ix86_fixup_binary_operands_no_copy to handle nonimmediate operands.
1204         (*ssse3_pmulhrswv4hi3): Rename from ssse3_pmulhrswv4hi3 insn pattern.
1205         (ssse3_pmulhrswv4hi3): New expander.  Use
1206         ix86_fixup_binary_operands_no_copy to handle nonimmediate operands.
1207
1208         (<sse>_vm<plusminus_insn><mode>3): Do not use ix86_binary_operator_ok.
1209         (<sse>_vmmul<mode>3): Ditto.
1210         (divv4sf3): Do not use ix86_fixup_binary_operands_no_copy.
1211         (divv2df3): Ditto.
1212         (ssse3_pmaddubsw128): Use register_operand for operand 1.
1213         (ssse3_pmaddubsw): Ditto.
1214
1215         * config/i386/i386.c (struct_builtin_description)
1216         [IX86_BUILTIN_LOADHPS]: Use CODE_FOR_sse_loadhps_exp.
1217         [IX86_BUILTIN_STOREHPS]: Use CODE_FOR_sse_loadlps_exp.
1218         [IX86_BUILTIN_LOADHPD]: Use CODE_FOR_sse2_loadhpd_exp.
1219         [IX86_BUILTIN_LOADLPD]: Use CODE_FOR_sse2_loadlpd_exp.
1220         [IX86_BUILTIN_MOVHLPS]: Use CODE_FOR_sse_movhlps_exp.
1221         [IX86_BUILTIN_MOVLHPS]: Use CODE_FOR_sse_movlhps_exp.
1222         [IX86_BUILTIN_UNPCKHPD]: Use FOR_sse2_unpckhpd_exp.
1223         [IX86_BUILTIN_UNPCKLPD]: Use FOR_sse2_unpcklpd_exp.
1224         (ix86_fixup_binary_operands): Assert that src1
1225         and src2 must have the same mode when swapped.
1226         (ix86_expand_binop_builtin): Do not use ix86_fixup_binary_operands
1227         and ix86_binary_operator_ok.  Do not force operands in registers
1228         when optimizing.
1229
1230 2008-05-07  Jan Hubicka  <jh@suse.cz>
1231
1232         * cgraph.c (dump_cgraph_node): Update.
1233         * cgraph.h (cgraph_local_info): Break out inline summary.
1234         * cgraphunit.c (cgraph_process_new_functions): Use inliner analysis
1235         hook.
1236         * ipa-inline (inline_summary): New accestor function.
1237         (cgraph_clone_inlined_nodes, cgraph_check_inline_limits,
1238         cgraph_decide_inlining, compute_inline_parameters): Update.
1239         * ipa.c (cgraph_remove_unreachable_nodes): Remove statistics.
1240
1241 2008-05-07  Maxim Kuvyrkov  <maxim@codesourcery.com>
1242
1243         Cleanup ColdFire scheduling support and add V4 pipeline model.
1244
1245         * config/m68k/m68k.md (UNSPEC_TIE): New constant.
1246         (define_attr cpu): Add cfv4 value.
1247         (define_attr type, define_attr type1): Merge into a single 'type'
1248         attribute.  Update all uses.
1249         (define_attr opx_type, define_attr opy_type, define_attr opx_access):
1250         Rearrange and update.  Rename value 'reg' to 'Rn', add value 'FPn'.
1251         Update all uses.
1252         (define_attr opx_mem, define_attr opy_mem): Remove.
1253         (define_attr op_mem): Clean up, update comment.
1254         (define_attr size): Use specific values instead of general int.
1255         (define_attr guess, define_attr split): Remove.  Update all uses.
1256         (movdf_internal, tstsi_internal, tsthi_internal, tstqi_internal,
1257         tst<mode>_68881, pushexthisi_const, movsi_const0_68000_10,
1258         movsi_const0_68040_60, movsi_const0, movsi_cf, movstrictqi_cf,
1259         zero_extendhisi2_cf, zero_extendqisi2_cfv4, cfv4_extendhisi2,
1260         68k_extendhisi2, extendqihi2, cfv4_extendqisi2, 68k_extendqisi2,
1261         floatsi<mode>2_68881, ftrunc<mode>2_68881, ftrunc<mode>2_cf,
1262         fix<mode>qi2_68881, fix<mode>hi2_68881, fix<mode>si2_68881,
1263         adddi_dishl32, addsi3_5200, add<mode>3_floatsi_68881,
1264         add<mode>3_floathi_68881, add<mode>3_floatqi_68881,
1265         add<mode>3_68881, add<mode>3_cf, subdi_dishl32, subsi3,
1266         sub<mode>3_floatsi_68881, sub<mode>3_floathi_68881,
1267         sub<mode>3_floatqi_68881, sub<mode>3_68881, sub<mode>3_cf,
1268         mulhi3, mulhisi3, mulhisisi3_s, mulsi3_68020, mulsi3_cf,
1269         umulhisi3, mulhisisi3_z, mul<mode>3_floatsi_68881,
1270         mul<mode>3_floathi_68881, mul<mode>3_floatqi_68881, fmul<mode>3_cf,
1271         div<mode>3_cf, sqrt<mode>2_cf, abs<mode>2_cf, clzsi2,
1272         one_cmplsi2_5200, subreghi1ashrdi_const32, ashrsi3, lshrsi3,
1273         bsetmemqi, bsetmemqi_ext, bclrmemqi, bclrmemqi_ext,
1274         beq, bne, bgt, blt, bordered, bunordered, buneq, bunge, bungt, bunle,
1275         bunlt, bltgt, tablejump_internal, call, non_symbolic_call_value,
1276         symbolic_call_value_jsr, symbolic_call_value_bsr, link):
1277         Update or set attributes.
1278         (stack_tie): New fake instruction.
1279
1280         * config/m68k/m68k.h (TUNE_CFV4): New macro.
1281         (m68k_sched_attr_size): Update declaration.
1282         (m68k_sched_attr_type2): Remove.
1283         (m68k_sched_address_bypass_p, m68k_sched_indexed_address_bypass_p):
1284         Declare new bypass predicates.
1285
1286         * config/m68k/m68k.c (m68k_sched_issue_rate,
1287         m68k_sched_first_cycle_multipass_dfa_lookahead): Declare hook
1288         implementations.
1289         (TARGET_SCHED_ISSUE_RATE,
1290         TARGET_SCHED_FIRST_CYCLE_MULTIPASS_DFA_LOOKAHEAD): Override hooks.
1291         (override_options): Handle scheduling for ColdFire V4 core.
1292         (m68k_expand_prologue): Emit stack_tie.
1293         (enum attr_op_type): Split value 'OP_TYPE_REG' to 'OP_TYPE_RN' and
1294         'OP_TYPE_FPN'.  Update all uses.
1295         (sched_guess_p): Remove.
1296         (sched_address_type): Handle symbolic addresses.
1297         (sched_get_operand): New static function.
1298         (sched_operand_type): Merge into sched_attr_op_type.
1299         (sched_attr_op_type): Handle FP registers, handle quick constants,
1300         update.
1301         (m68k_sched_attr_opx_type, m68k_sched_attr_opy_type): Update.
1302         (m68k_sched_attr_size): Update.  Move logic to ...
1303         (sched_get_attr_size_int): New static function.
1304         (sched_get_opxy_mem_type): New static function.
1305         (m68k_sched_attr_op_mem): Update.
1306         (m68k_sched_attr_type2): Remove.
1307         (sched_cfv4_bypass_data): New static variable.
1308         (m68k_sched_adjust_cost): Handle ColdFire V4 bypass.
1309         (m68k_sched_issue_rate): Implement scheduler hook.
1310         (struct _sched_ib: enabled_p): New field.
1311         (m68k_sched_variable_issue): Update.  Handle V4.
1312         (SCHED_DUMP_TODO, SCHED_DUMP_DONE, SCHED_DUMP_NOTHING,
1313         sched_dump_class_func_t, sched_dump_split_class,
1314         sched_dump_dfa_guess_unit_code, sched_dump_dfa_state,
1315         sched_dump_dfa_class, m68k_sched_dump): Remove.
1316         (m68k_sched_first_cycle_multipass_dfa_lookahead): Implement scheduler
1317         hook.
1318         (m68k_sched_init_global): Remove statisctics dumping, introduce
1319         sanity check that all instructions have pipeline reservations.  Handle
1320         ColdFire V4 core.
1321         (m68k_sched_dfa_pre_advance_cycle, m68k_sched_dfa_post_advance_cycle):
1322         Handle ColdFire V4 core.
1323         (sched_mem_operand_p, sched_get_reg_operand, sched_get_mem_operand):
1324         New static functions.
1325         (m68k_sched_address_bypass_p): New bypass predicate.
1326         (sched_get_indexed_address_scale): New static function.
1327         (m68k_sched_indexed_address_bypass_p): New bypass predicate.
1328
1329         * cf.md: Update comments.
1330         (define_attr type2): Remove.  Use 'type' attribute instead.
1331         Update all uses.
1332         (cf_ib): Rename to cfv123_ib.  Update all uses.
1333         (cf_oep): Rename to cfv123_oep.  Update all uses.
1334         (cf_chr): Rename to cfv123_chr.  Update all uses.
1335         (cf_mem): Rename to cfv123_mem.  Update all uses.
1336         (cf_mac): Move to more appropriate place.
1337         (cfv123_guess): New automaton and cpu_unit.
1338         (cfv123_*, cfv12_*, cfv1_*, cfv2_*, cfv3_*): Use type attribute.
1339         Update uses of 'size' attribute.  Handle before reload scheduling.
1340         (cfv123_guess): New dummy reservation for unhandled instructions.
1341         (cfv4_*): Pipeline description of ColdFire V4 core.
1342         (ignore): New reservation to handle 'ignore' type.
1343
1344 2008-05-07  Ian Lance Taylor  <iant@google.com>
1345
1346         PR middle-end/36013
1347         * gimplify.c (find_single_pointer_decl_1): Don't look through
1348         indirections.
1349         (find_single_pointer_decl): Adjust comments.
1350
1351 2008-05-07  Jakub Jelinek  <jakub@redhat.com>
1352
1353         PR middle-end/36137
1354         * fold-const.c (fold_binary): Use STRIP_SIGN_NOPS instead of
1355         STRIP_NOPS on arguments even for MIN_EXPR and MAX_EXPR.
1356
1357         PR middle-end/36106
1358         * omp-low.c (expand_omp_atomic_pipeline): Load value using the
1359         integral type rather than floating point, then VIEW_CONVERT_EXPR
1360         to the floating point type.
1361
1362 2008-05-07  Uros Bizjak  <ubizjak@gmail.com>
1363
1364         * config/i386/i386.c (ix86_expand_copysign): Force non-zero constant
1365         TFmode op0 to register.
1366
1367 2008-05-07  Alan Modra  <amodra@bigpond.net.au>
1368
1369         * c-decl.c (grokdeclarator): Comment typo.
1370
1371 2008-05-06  Aldy Hernandez  <aldyh@redhat.com>
1372
1373         * tree-flow.h: Remove prototype for computed_goto_p.
1374         * tree-cfg.c (computed_goto_p): Make static.
1375
1376 2008-05-06  H.J. Lu  <hongjiu.lu@intel.com>
1377
1378         PR target/35657
1379         * config/i386/i386.c (contains_128bit_aligned_vector_p): Renamed to ...
1380         (contains_aligned_value_p): This.  Handle _Decimal128.
1381         (ix86_function_arg_boundary): Only align _Decimal128 to its
1382         natural boundary and handle it properly.
1383
1384 2008-05-06  Martin Jambor  <mjambor@suse.cz>
1385
1386         * ipa-cp.c (ipcp_method_orig_node): Renamed to ipcp_get_orig_node.
1387         (ipcp_method_is_cloned): Renamed to ipcp_node_is_clone
1388         (ipcp_method_set_orig_node): Removed.
1389         (ipcp_cval_get_cvalue_type): Removed.
1390         (ipcp_method_get_scale): Renamed to ipcp_get_node_scale.
1391         (ipcp_method_set_scale): Renamed to ipcp_set_node_scale.
1392         (ipcp_cval_set_cvalue_type): Removed.
1393         (ipcp_cval_get_cvalue): Removed.
1394         (ipcp_cval_set_cvalue): Removed.
1395         (ipcp_type_is_const): Renamed to ipcp_lat_is_const.
1396         (ipcp_cval_equal_cvalues): Renamed to ipcp_lats_are_equal
1397         (ipcp_lats_are_equal): Changed parameters to two ipcp_lattice's
1398         (ipcp_cval_meet): Renamed to ipa_lattice_meet
1399         (ipcp_cval_changed): Changed to use ipcp_lat_is_const
1400         (ipcp_method_cval): Renamed to ipcp_get_ith_lattice
1401         (ipcp_get_ith_lattice): Changed parameters.
1402         (ipcp_cval_compute): Renamed to ipcp_lattice_from_jfunc
1403         (ipcp_lattice_from_jfunc): Changed parameters.
1404         (ipcp_redirect): Local lattice pointer instead of lattice type variable.
1405         (ipcp_method_cval_print): Added temporary variable info.
1406         (ipcp_redirect): Removed already unused local variable caller.
1407         (ipcp_redirect): New temporary variable orig_callee_info
1408         (ipcp_redirect): Removed newly unused local variable callee.
1409         (ipcp_redirect): Removed (a bit confusing) local variable type.
1410         (ipcp_insert_stage): Added local variable info.
1411         (ipcp_cval_changed): Renamed to ipcp_lattice_changed, parameters 
1412         renamed too
1413         (ipcp_formal_create): Removed.
1414         (ipcp_method_cval_set): Removed.
1415         (ipcp_propagate_stage): Renamed lattice variables.
1416         (ipcp_method_cval_set_cvalue_type): Removed.
1417         (ipcp_method_cval_print): Renamed to ipcp_print_all_lattices
1418         (ipcp_print_all_lattices): Changed printed strings to refer to 
1419         lattices rather than cvals.
1420         (ipcp_method_cval_init): Renamed to ipcp_initialize_node_lattices
1421         (ipcp_propagate_const): Changed formal parameters.
1422         (build_const_val): Changed formal parameters.
1423         (ipcp_insert_stage): Removed useless variable cvalue
1424         (build_const_val): Changed formal parameters.
1425         (ipcp_method_compute_scale): Renamed to ipcp_compute_node_scale
1426         (ipcp_after_propagate): Renamed to ipcp_change_tops_to_bottom
1427         (ipcp_callsite_param_print): Renamed to ipcp_print_all_jump_functions
1428         (ipcp_profile_mt_count_print): Renamed to ipcp_print_func_profile_counts
1429         (ipcp_print_func_profile_counts): Changed string from "method" to 
1430         "function"
1431         (ipcp_profile_cs_count_print): Renamed to ipcp_print_call_profile_counts
1432         (ipcp_profile_edge_print): Renamed to ipcp_print_edge_profiles
1433         (ipcp_profile_bb_print): Renamed to ipcp_print_bb_profiles
1434         (ipcp_structures_print): Renamed to ipcp_print_all_structures
1435         (ipcp_profile_print): Renamed to ipcp_print_profile_data
1436         (ipcp_lat_is_const): Changed parameters and made inline.
1437         (ipcp_replace_map_create): Renamed to ipcp_create_replace_map
1438         (ipcp_redirect): Renamed to ipcp_need_redirect_p
1439         (ipcp_need_redirect_p): Calls ipcp_lat_is_const instead of using 
1440         the predicate condition directly
1441         (ipcp_propagate_stage): Added local variable args. Removed local
1442         variable callee.  (Both are mere code simplifications.)
1443         (ipcp_method_dont_insert_const): Renamed to
1444         ipcp_node_not_modifiable_p.
1445         (ipcp_node_not_modifiable_p): Made inline.
1446         (ipcp_cloned_create): Renamed to ipcp_init_cloned_node
1447         (ipcp_propagate_const): Renamed to ipcp_propagate_one_const
1448         (ipcp_print_all_lattices): Removed variable cvalue
1449         (ipcp_method_scale_print): Renamed to ipcp_function_scale_print
1450         Updated comments.
1451
1452 2008-05-06  Olivier Hainque  <hainque@adacore.com>
1453
1454         * tree-sra.c (try_instantiate_multiple_fields): Early return
1455         if field has POINTER_TYPE.
1456
1457 2008-05-06  Kai Tietz  <kai.tietz@onevision.com>
1458
1459         * config/i386/i386.c (output_set_got): Fix for x86_64 output_emit_asm
1460         by using 'q' specifier for instruction.
1461         (ix86_file_end): Replaced case TARGET_64BIT_MS_ABI by TARGET_64BIT.
1462
1463 2008-05-06  Anatoly Sokolov <aesok@post.ru>
1464
1465         * config/avr/avr.md (*sbrx_branch, *sbix_branch, *sbix_branch_tmp):
1466         Change mode of zero_extract from QImode to HImode.
1467         (sign bit tests peepholes): (Ditto.).
1468
1469 2008-05-06  Uros Bizjak  <ubizjak@gmail.com>
1470
1471         * config/i386/mmx.md: Remove double backslashes from asm templates.
1472         (*mmx_addv2sf3): Rename from mmx_addv2sf3 insn pattern.
1473         (mmx_addv2sf3): New expander.  Use ix86_fixup_binary_operands_no_copy
1474         to handle nonimmediate operands.
1475         (*mmx_mulv2sf3): Rename from mmx_mulv2sf3 insn pattern.
1476         (mmx_mulv2sf3): New expander.  Use ix86_fixup_binary_operands_no_copy
1477         to handle nonimmediate operands.
1478         (*mmx_<code>v2sf3_finite): New insn pattern.
1479         (*mmx_<code>v2sf3): Rename from mmx_<code>v2sf3 insn pattern.
1480         (mmx_<code>v2sf3): New expander.  Use
1481         ix86_fixup_binary_operands_no_copy to handle nonimmediate operands.
1482         (mmx_<plusminus_insn><mode>3): New expander.  Use
1483         ix86_fixup_binary_operands_no_copy to handle nonimmediate operands.
1484         (*mmx_<plusminus_insn><mode>3): New insn pattern.
1485         (mmx_add<mode>3): Removed.
1486         (mmx_ssadd<mode>3): Ditto.
1487         (mmx_usadd<mode>3): Ditto.
1488         (mmx_sub<mode>3): Ditto.
1489         (mmx_sssub<mode>3): Ditto.
1490         (mmx_ussub<mode>3): Ditto.
1491         (*mmx_mulv4hi3): Rename from mmx_mulv4hi3 insn pattern.
1492         (mmx_mulv4hi3): New expander.  Use ix86_fixup_binary_operands_no_copy
1493         to handle nonimmediate operands.
1494         (*mmx_smulv4hi3_highpart): Rename from mmx_smulv4hi3_highpart
1495         insn pattern.
1496         (mmx_smulv4hi3_highpart): New expander.  Use
1497         ix86_fixup_binary_operands_no_copy to handle nonimmediate operands.
1498         (*mmx_umulv4hi3_highpart): Rename from mmx_umulv4hi3_highpart
1499         insn pattern.
1500         (mmx_umulv4hi3_highpart): New expander.  Use
1501         ix86_fixup_binary_operands_no_copy to handle nonimmediate operands.
1502         (*mmx_<code>v4hi3): Rename from mmx_<code>v4hi3 insn pattern.
1503         (mmx_<code>v4hi3): New expander.  Use
1504         ix86_fixup_binary_operands_no_copy to handle nonimmediate operands.
1505         (*mmx_<code>v8qi3): Rename from mmx_<code>v8qi3 insn pattern.
1506         (mmx_<code>v8qi3): New expander.  Use
1507         ix86_fixup_binary_operands_no_copy to handle nonimmediate operands.
1508         (*mmx_<code><mode>3): Rename from mmx_<code><mode>3 insn pattern.
1509         (mmx_<code><mode>3): New expander.  Use
1510         ix86_fixup_binary_operands_no_copy to handle nonimmediate operands.
1511
1512 2008-05-05  Jan Hubicka  <jh@suse.cz>
1513
1514         PR tree-optimization/36118
1515         * passes.c (pass_init_dump_file): Fix dump header.
1516
1517 2008-05-05  Andrew Pinski  <andrew_pinski@playstation.sony.com>
1518
1519         PR middle-end/36141
1520         * tree-ssa-forwprop.c (forward_propagate_addr_expr_1): Don't create
1521         VCE for function decls.
1522
1523 2008-05-05  H.J. Lu  <hongjiu.lu@intel.com>
1524
1525         * config/i386/sse.md (sse2_<plusminus_insn><mode>3): Fix a typo.
1526
1527 2008-05-05  H.J. Lu  <hongjiu.lu@intel.com>
1528
1529         * config/i386/i386.md (sat_plusminus): New.
1530         (plusminus_insn): Likewise.
1531         (plusminus_mnemonic): Likewise.
1532         (addsub): Removed.
1533         (comm): Add ss_plus, us_plus, ss_minus and us_minus.
1534         (*<addsub><mode>3_cc_overflow): Renamed to ...
1535         (*<plusminus_insn><mode>3_cc_overflow): This.
1536         (*<addsub>si3_zext_cc_overflow): Renamed to ...
1537         (*<plusminus_insn>si3_zext_cc_overflow): This.
1538
1539         * config/i386/sse.md (<addsub><mode>3): Renamed to ...
1540         (<plusminus_insn><mode>3): This.
1541         (*<addsub><mode>3): Renamed to ...
1542         (*<plusminus_insn><mode>3): This.
1543         (<sse>_vm<addsub><mode>3): Renamed to ...
1544         (<sse>_vm<plusminus_insn><mode>3): This.
1545         (sse3_h<addsub>v4sf3): Renamed to ...
1546         (sse3_h<plusminus_insn>v4sf3): This.
1547         (sse3_h<addsub>v2df3): Renamed to ...
1548         (sse3_h<plusminus_insn>v2df3): This.
1549         (<plusminus_insn><mode>3): New.
1550         (*<plusminus_insn><mode>3): Likewise.
1551         (sse2_<plusminus_insn><mode>3): Likewise.
1552         (add<mode>): Removed.
1553         (*add<mode>3): Likewise.
1554         (sse2_ssadd<mode>3): Likewise.
1555         (sse2_usadd<mode>3): Likewise.
1556         (sub<mode>3): Likewise.
1557         (*sub<mode>3): Likewise.
1558         (sse2_sssub<mode>3): Likewise.
1559         (sse2_ussub<mode>3): Likewise.
1560
1561 2008-05-05  Benjamin Kosnik  <bkoz@redhat.com>
1562
1563         * gthr-single.h: Add in required interface elements as per gthr.h.
1564         Add stub types for __gthread_key_t, __gthread_once_t. Add defines
1565         for __GTHREAD_ONCE_INIT, __GTHREAD_RECURSIVE_MUTEX_INIT.
1566         Generalize UNUSED macro. 
1567         (__gthread_once): Add.
1568         (__gthread_key_create): Add.
1569         (__gthread_key_delete): Add.
1570         (__gthread_getspecific): Add.
1571         (__gthread_setspecific): Add.
1572         
1573 2008-05-05  Andrew Pinski  <Andrew.Pinski@playstation.sony.com>
1574
1575         * tree-ssa-forwprop.c (forward_propagate_addr_expr_1): If we have
1576         the same size types for the indirect reference on the rhs, then
1577         create a VCE.
1578
1579 2008-05-05  Uros Bizjak  <ubizjak@gmail.com>
1580
1581         * config/i386/i386.md
1582         (*float<SSEMODEI24:mode><MODEF:mode>2_sse_interunit): Use only
1583         one insn template instead of template series.
1584         (*xordi_1_rex64): Ditto.
1585         (*xordi_2_rex64): Ditto.
1586
1587 2008-05-05  Ira Rosen  <irar@il.ibm.com>
1588
1589         PR tree-optimization/36119
1590         * tree-vect-transform.c (vectorizable_assignment): Set NCOPIES to 1
1591         in case of SLP.
1592
1593 2008-06-04  Jan Hubicka  <jh@suse.cz>
1594
1595         tree-optimization/36100
1596         * tree-pass.h (pass_O0_always_inline): Declare.
1597         * ipa-inline.c (inline_transform): Remove dead code.
1598         (cgraph_gate_O0_always_inline, cgraph_O0_always_inline,
1599         pass_O0_always_inline): New.
1600         * passes.c (init_optimization_passes): Add pass_O0_always_inline.
1601
1602 2008-05-04  Kai Tietz  <kai.tietz@onevision.com>
1603
1604         * config/i386/i386.c (x86_output_mi_thunk): Use movq alternative
1605         mnemonic in this_param move for TARGET_64BIT.
1606
1607 2008-05-04  Uros Bizjak  <ubizjak@gmail.com>
1608
1609         * config/i386/i386.md (*strmovsi_1): Simplify asm alternatives.
1610         (*strmovsi_rex_1): Ditto.
1611         (*strsetsi_1): Ditto.
1612         (*strsetsi_rex_1): Ditto.
1613
1614         (add<mode>cc): Macroize expander from addqicc, addhicc, addsicc and
1615         adddicc expanders using SWI mode iterator.
1616
1617 2008-05-04  H.J. Lu  <hongjiu.lu@intel.com>
1618
1619         PR target/36121
1620         * config/i386/i386.c (ix86_expand_special_args_builtin): Remove three
1621         argument handling.
1622
1623 2008-05-04  David S. Miller  <davem@davemloft.net>
1624
1625         * config.gcc (sparc*-*-*): Always set need_64bit_hwint to yes.
1626         (sparc*-*-linux*): Use linux.h in tm_file.
1627         (sparc-*-linux*): If 'enabled_targets' is 'all', build a bi-arch
1628         compiler defaulting to 32-bit.
1629         (sparc*-*-*): Remove explicit target settings of need_64bit_hwint,
1630         no longer needed.
1631         * config/sparc/linux.h: Remove definitions now obtained
1632         properly from linux.h
1633         * config/sparc/linux64.h: Likewise.
1634         (ASM_CPU_DEFAULT_SPEC): Change this to ASM_CPU64_DEFAULT_SPEC, we
1635         don't want this setting for 32-bit builds in a biarch compiler.
1636         * doc/install.texi: Add sparc-linux to list of targets
1637         supporting --enable-targets=all.
1638
1639 2008-05-03  Andrew Pinski  <pinskia@gmail.com>
1640
1641         * Makefile.in (tree-ssa-phiprop.o): Fix dependencies.
1642
1643 2008-05-03  H.J. Lu  <hongjiu.lu@intel.com>
1644
1645         * config/i386/i386.c (ix86_builtin_type): Move V4SI_FTYPE_V4SF
1646         after V4SI_FTYPE_V8HI.
1647         (ix86_init_mmx_sse_builtins): Move case V4HI_FTYPE_V4HI after
1648         case V4SI_FTYPE_V2DF.
1649
1650 2008-05-03  Kenneth Zadeck  <zadeck@naturalbridge.com>
1651
1652         * doc/invoke.texi (max-flow-memory-locations): Removed.
1653         * params.def (PARAM_MAX_FLOW_MEMORY_LOCATIONS): Removed.
1654         
1655 2008-05-03  Richard Guenther  <rguenther@suse.de>
1656
1657         PR middle-end/34973
1658         * opts.c (set_Wstrict_aliasing): Handle the turn-off case.
1659
1660 2008-05-02  David S. Miller  <davem@davemloft.net>
1661
1662         * config.gcc (need_64bit_hwint): Document libcpp dependency.
1663
1664 2008-05-02  Simon Baldwin <simonb@google.com>
1665
1666         PR bootstrap/36108
1667         * c-common.h (warn_array_subscript_range): Removed.
1668         * c-common.c (warn_array_subscript_range): Ditto.
1669         * tree-vrp.c (check_array_ref): Revert to ignoring arrays with size 2.
1670         * c-typeck.c (build_array_ref): Remove warn_array_subscript_range.
1671
1672 2008-05-02  H.J. Lu  <hongjiu.lu@intel.com>
1673
1674         * config/i386/i386.c (ix86_special_builtin_type): New.
1675         (bdesc_special_args): Likewise.
1676         (ix86_expand_special_args_builtin): Likewise.
1677         (ix86_init_mmx_sse_builtins): Updated.
1678         (ix86_expand_builtin): Updated.
1679         (ix86_expand_store_builtin): Removed.
1680         (ix86_expand_unop_builtin): Likewise.
1681
1682         * config/i386/mm3dnow.h (__v2sf): Moved to ...
1683         * config/i386/mmintrin.h (__v2sf): Here.
1684
1685         * config/i386/xmmintrin.h (_mm_loadh_pi): Replace __v2si with
1686         const __v2sf.
1687         (_mm_loadl_pi): Likewise.
1688         (_mm_storeh_pi): Replace __v2si with __v2sf.
1689         (_mm_storel_pi): Likewise.
1690
1691         * doc/extend.texi: Correct __builtin_ia32_loadhps,
1692         __builtin_ia32_loadlps, __builtin_ia32_storehps,
1693         __builtin_ia32_storelps, __builtin_ia32_loadhpd and
1694         __builtin_ia32_loadlpd.
1695
1696 2008-05-02  H.J. Lu  <hongjiu.lu@intel.com>
1697
1698         * config/i386/i386.c (ix86_builtin_type): Add FLOAT_FTYPE_FLOAT,
1699         V4SF_FTYPE_V4SF_VEC_MERGE and V2DF_FTYPE_V2DF_VEC_MERGE.
1700         (bdesc_args): Updated.  Add scalar SSE builtins with vec_merge.
1701         (ix86_init_mmx_sse_builtins): Updated.
1702         (ix86_expand_args_builtin): Likewise.
1703         (ix86_expand_builtin): Likewise.
1704         (ix86_expand_unop1_builtin): Renamed to ...
1705         (ix86_expand_unop_vec_merge_builtin): This.
1706
1707 2008-05-01  Jan Hubicka  <jh@suse.cz>
1708
1709         PR bootstrap/36100
1710         * ipa-inline.c (inline_generate_summary): Make static.
1711         (inline_transform): Do not call inlining at -O0; make static.
1712         * passes.c (execute_todo): Add sanity check.
1713         (execute_one_ipa_transform_pass): Execute proper flags.
1714
1715 2008-05-01  Eric Botcazou  <ebotcazou@adacore.com>
1716
1717         * tree.h (TYPE_NONALIASED_COMPONENT): Expand comment.
1718         (DECL_NONADDRESSABLE_P): Likewise.
1719         * alias.c (record_component_aliases): Fix comment.
1720
1721 2008-05-01  Simon Baldwin <simonb@google.com>
1722
1723         * c-common.h (warn_array_subscript_range): New function.
1724         * c-common.c (warn_array_subscript_range): Ditto.
1725         * tree-vrp.c (check_array_ref): Corrected code to agree with
1726         comment, ignoring only arrays of size 0 or size 1.
1727         * c-typeck.c (build_array_ref): Call warn_array_subscript_range.
1728
1729 2008-05-01  H.J. Lu  <hongjiu.lu@intel.com>
1730
1731         * config/i386/i386.c (ix86_builtin_type): Replace
1732         DI_FTYPE_DI_DI_INT with V1DI2DI_FTYPE_V1DI_V1DI_INT.
1733         (bdesc_args): Updated.
1734         (ix86_init_mmx_sse_builtins): Likewise.
1735         (ix86_expand_args_builtin): Likewise.
1736
1737         * config/i386/tmmintrin.h (_mm_alignr_pi8): Replace long long
1738         with __v1di.
1739
1740         * doc/extend.texi: Correct __builtin_ia32_palignr.
1741
1742 2008-05-01  H.J. Lu  <hongjiu.lu@intel.com>
1743
1744         PR target/36095
1745         * config/i386/i386.c (bdesc_crc32): Removed.
1746         (ix86_expand_crc32): Likewise.
1747         (ix86_builtin_type): Replace V2DI2TI_FTYPE_V2DI2TI_INT with
1748         V2DI2TI_FTYPE_V2DI_INT, V2DI2TI_FTYPE_V2DI2TI_V2DI2TI_INT with
1749         V2DI2TI_FTYPE_V2DI_V2DI_INT.  Add UINT64_FTYPE_UINT64_UINT64,
1750         UINT_FTYPE_UINT_UINT, UINT_FTYPE_UINT_USHORT and
1751         UINT_FTYPE_UINT_UCHAR.
1752         (bdesc_args): Updated. Add crc32 builtins.
1753         (ix86_init_mmx_sse_builtins): Updated.
1754         (ix86_expand_args_builtin): Updated to support subreg.
1755
1756         * doc/extend.texi: Correct __builtin_ia32_crc32di.
1757
1758 2008-05-01  Jan Hubicka  <jh@suse.cz>
1759
1760         * tree-pass.h (opt_pass): Add IPA_PASS.
1761         (varpool_node, cgraph_node): Forward declare.
1762         (ipa_opt_pass): Define.
1763         (pass_ipa_inline): Turn into ipa_opt_pass.
1764         (pass_apply_inline): Remove.
1765         * ipa-inline.c (pass_ipa_inline): Turn into ipa_opt_pass.
1766         (apply_inline): Turn into ....
1767         (inline_transform): ... this one.
1768         (inline_generate_summary): New function.
1769         (pass_apply_inline): Remove.
1770         * function.h (ipa_opt_pass): Forward declare structure; typedef;
1771         vector.
1772         (struct function): Add ipa_transforms_to_apply.
1773         * passes.c (register_one_dump_file): Work on IPA_PASS.
1774         (init_optimization_passes): Remove pass_inline_parameters and
1775         pass_apply_inline.
1776         (pass_init_dump_file, pass_fini_dump_file): Break out from ....
1777         (execute_one_pass) ... here; apply transforms when possible.
1778         (add_ipa_transform_pass, execute_ipa_summary_asses,
1779         execute_one_ipa_transform_pass): New.
1780         (execute_ipa_pass_list): Update for IPA_PASS type.
1781
1782 2008-05-01  H.J. Lu  <hongjiu.lu@intel.com>
1783
1784         * config/i386/i386.c (ix86_builtin_type): Add
1785         V2DI_FTYPE_V2DI_V16QI, V2DI_FTYPE_V2DI_UINT_UINT and
1786         V2DI_FTYPE_V2DI_V2DI_UINT_UINT.
1787         (bdesc_args): Add SSE4a builtins.
1788         (ix86_init_mmx_sse_builtins): Updated.
1789         (ix86_expand_args_builtin): Likewise.
1790         (ix86_expand_builtin): Likewise.
1791
1792 2008-05-01  H.J. Lu  <hongjiu.lu@intel.com>
1793
1794         * config/i386/i386.c (ix86_builtin_type): Add
1795         V8HI_FTYPE_V8HI_V8HI_COUNT, V8HI_FTYPE_V8HI_SI_COUNT,
1796         V4SI_FTYPE_V4SI_V4SI_COUNT, V4SI_FTYPE_V4SI_SI_COUNT,
1797         V4HI_FTYPE_V4HI_V4HI_COUNT, V4HI_FTYPE_V4HI_SI_COUNT,
1798         V2DI_FTYPE_V2DI_V2DI_COUNT, V2DI_FTYPE_V2DI_SI_COUNT,
1799         V2SI_FTYPE_V2SI_V2SI_COUNT, V2SI_FTYPE_V2SI_SI_COUNT,
1800         V1DI_FTYPE_V1DI_V1DI_COUNT, V1DI_FTYPE_V1DI_SI_COUNT,
1801         V8HI_FTYPE_V8HI_INT, V4SI_FTYPE_V4SI_INT, V4HI_FTYPE_V4HI_INT,
1802         V2DI2TI_FTYPE_V2DI2TI_INT, V2DI2TI_FTYPE_V2DI2TI_V2DI2TI_INT
1803         and DI_FTYPE_DI_DI_INT.
1804         (bdesc_args): Add MMX/SSE shift, shuffle and palignr builtins.
1805         (ix86_init_mmx_sse_builtins): Updated.
1806         (ix86_expand_args_builtin): Likewise.
1807         (ix86_expand_builtin): Likewise.
1808         (ix86_expand_binop_imm_builtin): Removed.
1809
1810         * doc/extend.texi: Correct __builtin_ia32_palignr128.
1811
1812 2008-04-30  Richard Guenther  <rguenther@suse.de>
1813
1814         PR tree-optimization/32921
1815         * tree-ssa-loop-im.c (mem_refs_may_alias_p): Disambiguate with TBAA.
1816
1817 2008-04-30  Richard Sandiford  <rsandifo@nildram.co.uk>
1818
1819         * config/arm/arm.c (arm_unwind_emit): Use
1820         crtl->all_throwers_are_sibcalls instead of
1821         cfun->all_throwers_are_sibcalls.
1822         (arm_output_fn_unwind): Likewise.
1823         * config/frv/frv.c (frv_stack_info): Use crtl->uses_pic_offset_table
1824         instead of cfun->uses_pic_offset_table.
1825         (frv_expand_prologue): Likewise.
1826         (frv_frame_pointer_required): Likewise.
1827         (frv_expand_fdpic_call): Likewise.
1828         (frv_emit_movsi): Likewise.
1829         * config/iq2000/iq2000.c (iq2000_expand_prologue): Use
1830         cfun->returns_pcc_struct instead of
1831         current_function_returns_pcc_struct.
1832         * config/m32c/m32c.c (need_to_save): Use crtl->calls_eh_return
1833         instead of cfun->calls_eh_return.
1834         (m32c_pushm_popm): Likewise.
1835         * config/xtensa/xtensa.h (cfun->calls_alloca): Remove bogus
1836         "extern" declaration.
1837
1838 2008-04-30  Richard Guenther  <rguenther@suse.de>
1839
1840         PR tree-optimization/21636
1841         * tree-ssa-ccp.c (ccp_fold): Handle &p->x with p being a
1842         constant address.
1843         (evaluate_stmt): Print the likely value.
1844         (ccp_visit_stmt): Avoid excessive vertical spacing.
1845
1846 2008-04-30  Rafael Espindola  <espindola@google.com>
1847
1848         * builtins.c (fold_call_expr): Return realret.
1849         * tree-ssa-threadedge.c
1850         (record_temporary_equivalences_from_stmts_at_dest): Ignore calls to
1851         __builtin_object_size.
1852
1853 2008-04-30  Seongbae Park  <seongbae.park@gmail.com>
1854
1855         * gcc.c (wrapper_string): New variable.
1856         (insert_wrapper): New function.
1857         (execute): New option -wrapper.
1858         * doc/invoke.texi (Overall Options): New driver option -wrapper.
1859
1860 2008-04-30  Nathan Froyd  <froydnj@codesourcery.com>
1861
1862         * config/rs6000/crtresgpr.asm, config/rs6000/crtresxgpr.asm,
1863         config/rs6000/crtsavgpr.asm, config/rs6000/crtresfpr.asm,
1864         config/rs6000/crtresxfpr.asm, config/rs6000/crtsavfpr.asm: Break out
1865         from...
1866         * config/rs6000/crtsavres.asm: ...here.  Remove unneeded file.
1867         * config/rs6000/e500crtres32gpr.asm, config/rs6000/e500crtres64gpr.asm,
1868         config/rs6000/e500crtres64gprctr.asm,
1869         config/rs6000/e500crtrest32gpr.asm, config/rs6000/e500crtrest64gpr.asm,
1870         config/rs6000/e500crtresx32gpr.asm, config/rs6000/e500crtresx64gpr.asm,
1871         config/rs6000/e500crtsav32gpr.asm, config/rs6000/e500crtsav64gpr.asm,
1872         config/rs6000/e500crtsav64gprctr.asm,
1873         config/rs6000/e500crtsavg32gpr.asm, config/rs6000/e500crtsavg64gpr.asm,
1874         config/rs6000/e500crtsavg64gprctr.asm: New files.
1875         * config/rs6000/t-ppccomm: Add build rules for new files.
1876         (LIB2FUNCS_STATIC_EXTRA): Add new files.
1877         * config/rs6000/t-netbsd: Add build rules for new files.
1878         (LIB2FUNCS_STATIC_EXTRA): New variable.
1879         * config/rs6000/sysv4.h (ENDFILE_SPEC): Don't include crtsavres.o
1880         (CRTSAVRES_DEFAULT_SPEC): Likewise.
1881         * config/rs6000/netbsd.h (ENDFILE_SPEC): Likewise.
1882
1883 2008-04-30  H.J. Lu  <hongjiu.lu@intel.com>
1884
1885         * config/i386/i386.c (ix86_builtin_type): Add
1886         FLOAT128_FTYPE_FLOAT128_FLOAT128, V16QI_FTYPE_V16QI_V16QI,
1887         V16QI_FTYPE_V8HI_V8HI, V8QI_FTYPE_V8QI_V8QI,
1888         V8QI_FTYPE_V4HI_V4HI, V8HI_FTYPE_V8HI_V8HI,
1889         V8HI_FTYPE_V16QI_V16QI, V8HI_FTYPE_V4SI_V4SI,
1890         V4SI_FTYPE_V4SI_V4SI, V4SI_FTYPE_V8HI_V8HI,
1891         V4SI_FTYPE_V4SF_V4SF, V4SI_FTYPE_V2DF_V2DF,
1892         V4HI_FTYPE_V4HI_V4HI, V4HI_FTYPE_V8QI_V8QI,
1893         V4HI_FTYPE_V2SI_V2SI, V4SF_FTYPE_V4SF_V4SF,
1894         V4SF_FTYPE_V4SF_V4SF_SWAP, V4SF_FTYPE_V4SF_V2SI,
1895         V4SF_FTYPE_V4SF_V2DF, V4SF_FTYPE_V4SF_DI,
1896         V4SF_FTYPE_V4SF_SI, V2DI_FTYPE_V2DI_V2DI,
1897         V2DI_FTYPE_V16QI_V16QI, V2DI_FTYPE_V4SI_V4SI,
1898         V2DI_FTYPE_V2DF_V2DF, V2SI_FTYPE_V2SI_V2SI,
1899         V2SI_FTYPE_V4HI_V4HI, V2SI_FTYPE_V2SF_V2SF,
1900         V2DF_FTYPE_V2DF_V2DF, V2DF_FTYPE_V2DF_V2DF_SWAP,
1901         V2DF_FTYPE_V2DF_V4SF, V2DF_FTYPE_V2DF_DI,
1902         V2DF_FTYPE_V2DF_SI, V2SF_FTYPE_V2SF_V2SF,
1903         V1DI_FTYPE_V1DI_V1DI, V1DI_FTYPE_V8QI_V8QI and
1904         V1DI_FTYPE_V2SI_V2SI.
1905         (bdesc_2arg): Moved to ...
1906         (bdesc_args): Here.
1907         (ix86_init_mmx_sse_builtins): Updated.
1908         (ix86_expand_args_builtin): Updated.  Take a pointer
1909         to const struct builtin_description.  Handle comparison
1910         builtin functions.
1911         (ix86_expand_sse_compare): Take a new argument for swapping operands.
1912         (ix86_expand_builtin): Updated.
1913
1914         * config/i386/sse.md (ssse3_pmaddubswv8hi3): Renamed to ...
1915         (ssse3_pmaddubsw128): This.
1916         (ssse3_pmaddubswv4hi3): Renamed to ...
1917         (ssse3_pmaddubsw): This.
1918
1919         * doc/extend.texi (__builtin_ia32_packsswb128): Correct prototype.
1920         (__builtin_ia32_packssdw128): Likewise.
1921         (__builtin_ia32_packuswb128): Likewise.
1922         (__builtin_ia32_pmaddubsw): Likewise.
1923         (__builtin_ia32_pmaddubsw128): Likewise.
1924
1925 2008-04-30  Richard Guenther  <rguenther@suse.de>
1926
1927         PR tree-optimization/14847
1928         * tree-ssa-ifcombine.c (get_name_for_bit_test): New helper function.
1929         (recognize_bits_test): Use it.
1930         (recognize_single_bit_test): Likewise.
1931
1932 2008-04-30  Martin Jambor  <mjambor@suse.cz>
1933
1934         * ipa-cp.c (ipcp_init_stage): Calls ipa_set_called_with_variable_arg
1935         instead of setting number of formal parameters to zero.
1936         (ipcp_init_stage): Do not set the number of actual parameters to zero 
1937         either.
1938         (ipcp_propagate_stage): Explicitly skipping all calls to nodes
1939         which are called with variable number of arguments.
1940         (ipcp_insert_stage): Explicitely skipping all nodes which are
1941         called with variable number of arguments.
1942         (ipcp_callsite_param_print): Skipps callsites to nodes with varaible 
1943         number of parameters.
1944
1945         * ipa-prop.h (struct ipa_node_params): Added flag
1946         called_with_var_arguments
1947         (ipa_set_param_count): Added.  Changed sole setter to use it.
1948         (ipa_get_param_count): Added.  All readers of param_count
1949         converted to use it instead.
1950         (ipa_set_called_with_variable_arg): Added.
1951         (ipa_is_called_with_var_arguments): Added.
1952         (ipa_get_ith_param): Added.  All readers of param_decls converted
1953         to use it instead.
1954         (ipa_set_cs_argument_count): Added, sole writer to argument_count 
1955         changed to use it. 
1956         (ipa_get_cs_argument_count): Added, all readers of argument_count
1957         changed to cal it.
1958         (ipa_get_ith_jump_func): Added. Accessors of jump values changed 
1959         to use it.
1960         
1961         * ipa-prop.h (struct ipcp_formal): Renamed to ipcp_lattice
1962         (struct ipcp_lattice): Renamed cval_type to type
1963         (struct ipa_node_params): ipcp_cval renamed to ipcp_lattices
1964
1965         * ipa-cp.c (ipcp_cval_get_cvalue): Changed return value to tree
1966         (ipcp_cval_set_cvalue): Changed type of parameter value to tree
1967         (ipcp_insert_stage): Changed the type of variable cvalue to tree
1968         (ipcp_replace_map_create): Changed the type of parameter cvalue to tree
1969         (build_const_val): Changed the type of parameter cvalue to tree
1970         (ipcp_propagate_const): Changed the type of parameter cvalue to tree
1971         (ipcp_method_cval_set_cvalue_type): Renamed parameter cval_type1 to type
1972         
1973         * ipa-prop.h (struct ipcp_formal): Replaced cvalue with tree called 
1974         constant 
1975
1976         * ipa-prop.c (ipa_methodlist_init): Renamed to ipa_init_func_list
1977         (ipa_methodlist_not_empty): Removed, the sole user now checks directly
1978         (ipa_add_method): Renamed to ipa_push_func_to_list
1979         (ipa_remove_method): Renamed to ipa_pop_func_from_list
1980         (ipa_callsite_param_count): Removed.
1981         (ipa_callsite_param_count_set): Removed.
1982         (ipa_callsite_param): Removed.
1983         (ipa_callsite_callee): Removed.
1984         (ipa_callsite_compute_param): Renamed to ipa_compute_jump_functions
1985         (ipa_callsite_compute_count): Renamed to ipa_count_arguments
1986         (ipa_method_formal_count): Removed.
1987         (ipa_method_formal_count_set): Removed.
1988         (ipa_method_get_tree): Removed.
1989         (ipa_method_tree_map_create): Removed.
1990         (ipa_method_compute_tree_map): Renamed to ipa_create_param_decls_array
1991         (ipa_create_param_decls_array): Creates the array itself
1992         (ipa_create_param_decls_array): Temporary variable info instead of 
1993         a few dereferences.
1994         (ipa_method_formal_compute_count): Renamed to ipa_count_formal_params
1995         (ipa_method_compute_modify): Renamed to ipa_detect_param_modifications
1996         (get_type): Removed.
1997         (ipa_jf_get_info_type): Removed.
1998         (ipa_node_create): Renamed to ipa_create_node_params
1999         (ipa_free): Renamed to ipa_free_all_node_params
2000         (ipa_nodes_create): Renamed to ipa_create_all_node_params
2001         (ipa_edges_create): Renamed to ipa_create_all_edge_args
2002         (ipa_edges_free): Renamed to ipa_free_all_edge_args
2003         (ipa_nodes_free): Integrated into ipa_free_all_node_params and removed
2004         (ipa_free_all_node_params): Deallocation to jump_functions moved to 
2005         ipa_free_all_edge_args
2006         (ipa_method_tree_print): Renamed to ipa_print_all_tree_maps
2007         (ipa_method_modify_print): Renamed to ipa_print_all_params_modified
2008         (ipa_create_methodlist_node): Removed.
2009         (ipa_methodlist_method): Removed.
2010         (ipa_methodlist_method_set): Removed.
2011         (ipa_methodlist_next_method): Removed.
2012         (ipa_methodlist_next_method_set): Removed.
2013         (ipa_method_is_modified): Removed.
2014         (ipa_method_modify_create): Removed.
2015         (ipa_method_modify_init): Temporary variable info instead of a few 
2016         dereferences.
2017         (ipa_detect_param_modifications): Temporary variable info instead of 
2018         a few dereferences.
2019         (ipa_compute_jump_functions): Temporary variable info instead of 
2020         a few dereferences.
2021         (ipa_method_modify_set): Removed.
2022         (ipa_method_tree_map): Renamed to ipa_get_param_decl_index
2023         (ipa_get_param_decl_index): Now accepts struct ipa_node_params rather 
2024         than craph_node as the first parameter.
2025         (ipa_method_modify_stmt): Renamed to ipa_check_stmt_modifications
2026         (ipa_method_modify_init): Removed.
2027         (ipa_compute_jump_functions): Added a temp variable instead of 
2028         repeatadly dereferencing the cgraph_edge.aux pointer
2029         (ipa_callsite_param_set_type): Removed.
2030         (ipa_compute_jump_functions): i renamed to index and moved to 
2031         an inner block
2032         (ipa_callsite_param_set_info_type_formal): Removed.
2033         (ipa_callsite_param_set_info_type): Removed.
2034         (ipa_callsite_param_map_create): Removed.
2035         (ipa_callsite_tree): Removed.
2036         (ipa_callsite_caller): Removed.
2037         (ipa_pop_func_from_list): return_method removed to return_func
2038
2039         * ipa-prop.h (enum cvalue_type): Renamed to ipa_lattice_type,
2040         prefixed all values with IPA_. Changed all users.
2041         (enum jump_func_type): Rnamed UNKNOWN_IPATYPE to IPA_UNKNOWN, 
2042         CONST_IPATYPE to IPA_CONST, CONST_IPATYPE_REF to IPA_CONST_REF 
2043         and FORMAL_IPATYPE IPA_PASS_THROUGH. 
2044         (union parameter_info): Renamed to jump_func_value.
2045         (union jump_func_value): Renamed value to constant
2046         (struct ipa_jump_func): Renamed info_type to value
2047         (struct ipa_node): Renamed to ipa_node_params
2048         (struct ipa_node_params): Renamed ipa_arg_num to param_count
2049         (struct ipa_node_params): Renamed ipa_param_tree to param_decls
2050         (struct ipa_node_params): Renamed ipa_mod to modified_flags
2051         (struct ipa_edge): Renamed to ipa_edge_args
2052         (struct ipa_edge_args): Renamed ipa_param_num to argument_count
2053         (struct ipa_edge_args): Renamed ipa_param_map to jump_functions
2054         (struct ipa_methodlist): Renamed to ipa_func_list
2055         (struct ipa_func_list): method_p renamed to node, next_method
2056         renamed to next
2057         (ipa_methodlist_p): Removed, switched all users to struct pointer
2058         (IS_VALID_TREE_MAP_INDEX): Renamed to IS_VALID_JUMP_FUNC_INDEX
2059
2060 2008-04-30  Alan Modra  <amodra@bigpond.net.au>
2061
2062         * config/rs6000/rs6000.c (ALWAYS_RESTORE_ALTIVEC_BEFORE_POP): Define.
2063         (rs6000_emit_epilogue): Use backchain to restore only when we
2064         have a large frame.  Make use of frame pointer to restore if we
2065         have one.  Handle ALWAYS_RESTORE_ALTIVEC_BEFORE_POP.
2066
2067 2008-04-29  Paolo Bonzini  <bonzini@gnu.org>
2068
2069         * config/avr/avr.md (*sbrx_branch, *sbix_branch, *sbix_branch_tmp):
2070         Add mode to zero_extract.
2071         (sign bit tests peepholes): (Ditto.).
2072
2073 2008-04-29  H.J. Lu  <hongjiu.lu@intel.com>
2074
2075         * config/i386/i386.c (ix86_builtins): Replace Prescott New
2076         Instructions in comments with SSE3.
2077         (ix86_builtin_type): This.  Add FLOAT128_FTYPE_FLOAT128,
2078         INT64_FTYPE_V4SF, INT64_FTYPE_V2DF, INT_FTYPE_V16QI,
2079         INT_FTYPE_V8QI, INT_FTYPE_V4SF, INT_FTYPE_V2DF,
2080         V16QI_FTYPE_V16QI, V8HI_FTYPE_V8HI, V8HI_FTYPE_V16QI,
2081         V8QI_FTYPE_V8QI, V4SI_FTYPE_V4SI, V4SI_FTYPE_V16QI,
2082         V4SI_FTYPE_V4SF, V4SI_FTYPE_V8HI, V4SI_FTYPE_V2DF,
2083         V4HI_FTYPE_V4HI, V4SF_FTYPE_V4SF, V4SF_FTYPE_V4SI,
2084         V4SF_FTYPE_V2DF, V2DI_FTYPE_V2DI, V2DI_FTYPE_V16QI,
2085         V2DI_FTYPE_V8HI, V2DI_FTYPE_V4SI, V2DF_FTYPE_V2DF,
2086         V2DF_FTYPE_V4SI, V2DF_FTYPE_V4SF, V2DF_FTYPE_V2SI,
2087         V2SI_FTYPE_V2SI, V2SI_FTYPE_V4SF, V2SI_FTYPE_V2SF,
2088         V2SI_FTYPE_V2DF, V2SF_FTYPE_V2SF and V2SF_FTYPE_V2SI.
2089         (bdesc_sse_args): Renamed to ...
2090         (bdesc_args): This.  Add IX86_BUILTIN_PF2ID, IX86_BUILTIN_PFRCP,
2091         IX86_BUILTIN_PFRSQRT, IX86_BUILTIN_PI2FD, IX86_BUILTIN_PF2IW,
2092         IX86_BUILTIN_PSWAPDSI, IX86_BUILTIN_PSWAPDSF and
2093         IX86_BUILTIN_FABSQ.
2094         (bdesc_1arg): Moved to ...
2095         (bdesc_args): Here.
2096         (ix86_init_mmx_sse_builtins): Updated.  Replace Prescott New
2097         Instructions in comments with SSE3.
2098         (ix86_expand_sse_operands_builtin): Renamed to ...
2099         (ix86_expand_args_builtin): This.  Updated.
2100         (ix86_expand_unop1_builtin): Update comments.
2101         (ix86_expand_builtin): Updated.
2102
2103 2008-04-29  Richard Guenther  <rguenther@suse.de>
2104
2105         PR tree-optimization/36078
2106         * tree-ssa-loop-ivcanon.c (tree_unroll_loops_completely):
2107         Update virtual SSA form after cleaning up the CFG.
2108
2109 2008-04-29  Richard Guenther  <rguenther@suse.de>
2110
2111         PR middle-end/15255
2112         * fold-const.c (fold_binary): Fold (A + A) * C to A * 2*C.
2113
2114 2008-04-29  Richard Guenther  <rguenther@suse.de>
2115
2116         * tree-ssa-alias.c (finalize_ref_all_pointers): Remove.
2117         (compute_may_aliases): Do not call finalize_ref_all_pointers.
2118         (compute_flow_insensitive_aliasing): Do not treat
2119         PTR_IS_REF_ALL pointers special.
2120         (get_smt_for): Likewise.
2121         (may_alias_p): Re-structure.
2122         (is_escape_site): A ref-all pointer conversion is not an escape site.
2123         * tree-ssa-structalias.c (find_what_p_points_to): Do not treat
2124         PTR_IS_REF_ALL pointers special.
2125         * tree-ssa-structalias.h (struct alias_info): Remove
2126         ref_all_symbol_mem_tag field.
2127         (PTR_IS_REF_ALL): Remove.
2128
2129 2008-04-29  Richard Guenther  <rguenther@suse.de>
2130
2131         PR middle-end/36077
2132         * fold-const.c (extract_muldiv_1): In combining division constants
2133         make sure to never overflow.
2134
2135 2008-04-29  Nick Clifton  <nickc@redhat.com>
2136
2137         * doc/tm.texi (RETURN_ADDR_RTX): Fix typo.
2138
2139 2008-04-28  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
2140
2141         PR bootstrap/35169
2142         * optc-gen.awk: Work around HP-UX/IA awk bug.
2143
2144 2008-04-28  Danny Smith  <dannysmith@users.sourceforge.net>
2145
2146         * config/i386/cygming-crtend.c (register_frame_ctor): Revert my
2147         2008-04-25 commit.
2148
2149 2008-04-28  Uros Bizjak  <ubizjak@gmail.com>
2150
2151         PR target/36073
2152         * config/i386/i386.md
2153         (*float<SSEMODEI24:mode><MODEF:mode>2_mixed_interunit):
2154         Change operand 1 predicate to nonimmediate_operand.
2155
2156 2008-04-28  Jakub Jelinek  <jakub@redhat.com>
2157
2158         PR debug/36060
2159         * dwarf2out.c (struct die_struct): Mark as chain_circular through
2160         die_sub field.
2161         * gengtype.c (walk_type, write_func_for_structure): Handle
2162         chain_circular.
2163         * doc/gty.texi: Document chain_circular.
2164
2165 2008-04-28  Richard Guenther  <rguenther@suse.de>
2166
2167         PR tree-optimization/36066
2168         * tree-vrp.c (execute_vrp): Cleanup the CFG only after finalizing
2169         SCEV and loop.
2170
2171 2008-04-28  Uros Bizjak  <ubizjak@gmail.com>
2172
2173         PR target/36064
2174         * config/i386/i386.md
2175         (floatdi<X87MODEF:mode>2_i387_with_xmm splitters):
2176         Use match_scratch instead of match_operand for operands 3 and 4.
2177
2178 2008-04-27  Richard Guenther  <rguenther@suse.de>
2179
2180         PR tree-optimization/18754
2181         PR tree-optimization/34223
2182         * tree-pass.h (pass_complete_unrolli): Declare.
2183         * tree-ssa-loop-ivcanon.c (try_unroll_loop_completely): Print
2184         loop size before and after unconditionally of UL_NO_GROWTH in effect.
2185         Rewrite loop into loop closed SSA form if it is not already.
2186         (tree_unroll_loops_completely): Re-structure to iterate over
2187         innermost loops with intermediate CFG cleanups.
2188         Unroll outermost loops only if requested or the code does not grow
2189         doing so.
2190         * tree-ssa-loop.c (gate_tree_vectorize): Don't shortcut if no
2191         loops are available.
2192         (tree_vectorize): Instead do so here.
2193         (tree_complete_unroll): Also unroll outermost loops.
2194         (tree_complete_unroll_inner): New function.
2195         (gate_tree_complete_unroll_inner): Likewise.
2196         (pass_complete_unrolli): New pass.
2197         * tree-ssa-loop-manip.c (find_uses_to_rename_use): Only record
2198         uses outside of the loop.
2199         (tree_duplicate_loop_to_header_edge): Only verify loop-closed SSA
2200         form if it is available.  
2201         * tree-flow.h (tree_unroll_loops_completely): Add extra parameter.
2202         * passes.c (init_optimization_passes): Schedule complete inner
2203         loop unrolling pass before the first CCP pass after final inlining.
2204
2205 2008-04-27  Nathan Sidwell  <nathan@codesourcery.com>
2206
2207         * targhooks.h (default_emutls_var_fields,
2208         default_emutls_var_init): Declare.
2209         * tree.h (DECL_THREAD_LOCAL): Compare against TLS_MODEL_REAL.
2210         * target.h (struct gcc_target): Add struct emutls member.
2211         * target-def.h (TARGET_EMUTLS_GET_ADDRESS,
2212         TARGET_EMUTLS_REGISTER_COMMON, TARGET_EMUTLS_VAR_SECTION,
2213         TARGET_EMUTLS_TMPL_SECTION, TARGET_EMUTLS_VAR_PREFIX,
2214         TARGET_EMUTLS_TMPL_PREFIX, TARGET_EMUTLS_VAR_FIELDS,
2215         TARGET_EMUTLS_VAR_INIT, TARGET_EMUTLS_DEBUG_FORM_TLS_ADDRESS,
2216         TARGET_EMUTLS_VAR_ALIGN_FIXED, TARGET_EMUTLS): New.
2217         (TARGET_INITIALIZER): Add TARGET_EMUTLS.
2218         * builtins.def (BUILT_IN_EMUTLS_GET_ADDRESS,
2219         BUILT_IN_EMUTLS_REGISTER_COMMON): Get name from targetm structure.
2220         * dwarf2out.c (loc_descriptor_from_tree_1): Check if emutls can
2221         emit debug information.
2222         * coretypes.h (tls_model): Add TLS_MODEL_EMULATED, TLS_MODEL_REAL.
2223         * varasm.c: Include targhooks.h.
2224         (emutls_object_section, emutls_tmpl_section): New.
2225         (EMUTLS_VAR_PREFIX, EMUTLS_TMPL_PREFIX): Remove.
2226         (EMUTLS_SEPARATOR): New.
2227         (prefix_name): New.
2228         (get_emutls_object_name): New.
2229         (default_emutls_var_fields): New, broken out of ...
2230         (get_emutls_object_type): ... here.  Adjust to use target hooks.
2231         (get_emutls_init_templ_addr): Adjust to use target hooks.
2232         (emutls_decl): Adjust to use target hooks.
2233         (emutls_finish): Likewise.
2234         (default_emutls_var_init): New, broken out of ...
2235         (assemble_variable): ... here.  Adjust to use target hooks.
2236         * output.h (enum section_category): Add SECCAT_EMUTLS_VAR,
2237         SECCAT_EMUTLS_TMPL.
2238         * c-common.c (handle_section_attribute): Prevent overriding
2239         sections for emulated tls with special sections.
2240         * config/i386/i386.c (x86_64_elf_select_section): Add
2241         SECCAT_EMUTLS_VAR and SECCAT_EMUTLS_TMPL.
2242         (x86_64_elf_unique_section): Likewise.
2243         * config/vxworks.c: Include tree.h.
2244         (vxworks_emutls_var_fields, vxworks_emutls_var_init): New.
2245         (vxworks_override_options): Set TLS scheme.
2246         * doc/tm.texi (Emulated TLS): New node.
2247
2248 2008-04-26  Simon Baldwin <simonb@google.com>
2249
2250         PR c/35652
2251         * builtins.c (c_strlen): Suppressed multiple warnings that can occur
2252         with propagated string constants.
2253
2254 2008-04-26  Uros Bizjak  <ubizjak@gmail.com>
2255
2256         * config/i386/i386.md (fix_trunc<mode>_i387_fisttp_with_temp): Use 'X'
2257         constraint for operand 2 when operand 0 is memory operand.
2258         (fix_truncdi_i387_with_temp): : Use 'X' constraint for operand 4 when
2259         operand 0 is memory operand.
2260         (fix_trunc<mode>_i387_with_temp): Ditto.
2261         (*floatsi<mode>2_vector_mixed_with_temp): Use 'X' constraint for
2262         operand 2 when operand 1 is memory operand.
2263         (*float<SSEMODEI24:mode><MODEF:mode>2_mixed_with_temp): Ditto.
2264         (*floatsi<mode>2_vector_sse_with_temp): Ditto.
2265         (*float<SSEMODEI24:mode><MODEF:mode>2_sse_with_temp): Ditto.
2266         (*float<SSEMODEI24:mode><X87MODEF:mode>2_i387_with_temp): Ditto.
2267         (floatdi<X87MODEF:mode>2_i387_with_xmm): Use 'X' constraint for
2268         operands 2,3 and 4 when operand 1 is memory operand.
2269         (fistdi2_with_temp): Use 'X' constraint for operand 2 when operand 0
2270         is memory operand.
2271         (fistdi2_floor_with_temp): Ditto.
2272         (fist<mode>2_floor_with_temp): Ditto.
2273         (fistdi2_ceil_with_temp): Ditto.
2274         (fist<mode>2_ceil_with_temp): Ditto.
2275         (*truncdfsf_fast_mixed): Merge alternatives 0 and 1.
2276
2277 2008-04-26  David Daney  <ddaney@avtrex.com>
2278
2279         * config/mips/mips.md (UNSPEC_COMPARE_AND_SWAP_12): New
2280         unspec_volitile.
2281         (UNSPEC_SYNC_OLD_OP, UNSPEC_SYNC_NEW_OP, UNSPEC_SYNC_EXCHANGE,
2282         UNSPEC_MEMORY_BARRIER, UNSPEC_SET_GOT_VERSION,
2283         UNSPEC_UPDATE_GOT_VERSION): Renumber.
2284         (sync_compare_and_swap<mode>): New expand for QI and HI modes.
2285         (compare_and_swap_12): New insn.
2286         * config/mips/mips-protos.h (mips_expand_compare_and_swap_12): Declare.
2287         * config/mips/mips.c (mips_force_binary): New function.
2288         (mips_emit_int_order_test, mips_expand_synci_loop): Use it.
2289         (mips_expand_compare_and_swap_12): New function.
2290         * config/mips/mips.h (MIPS_COMPARE_AND_SWAP_12): New macro.
2291
2292 2008-04-25  Jan Hubicka  <jh@suse.cz>
2293
2294         PR testsuite/35843
2295         * cfgexpand.c (pass_expand): Turn into RTL pass.
2296         * passes.c (execute_one_pass): Do pass typechecking after execution.
2297         * tree-pass.h (pass_expand): Turn into RTL pass.
2298
2299         * function.h (struct rtl_data): Move here fields
2300         accesses_prior_frames, calls_eh_return, saves_all_registers,
2301         has_nonlocal_goto, has_asm_statement, is_thunk,
2302         all_throwers_are_sibcalls, limit_stack, profile, uses_const_pool,
2303         uses_pic_offset_table, uses_eh_lsda, tail_call_emit,
2304         arg_pointer_save_area_init from struct function; turn into bool.
2305         (struct function): Move
2306         calls_eh_return, saves_all_registers, has_nonlocal_goto,
2307         has_asm_statement, is_thunk, all_throwers_are_sibcalls, limit_stack,
2308         profile, uses_const_pool, uses_pic_offset_table, uses_eh_lsda,
2309         tail_call_emit, arg_pointer_save_area_init
2310         into struct rtl_data.  Remove recursive_call_emit and gimplified flags.
2311         (current_function_returns_struct, current_function_returns_pcc_struct,
2312         current_function_calls_setjmp, current_function_calls_alloca,
2313         current_function_accesses_prior_frames,
2314         current_function_calls_eh_return, current_function_is_thunk,
2315         current_function_stdarg, current_function_profile,
2316         current_function_limit_stack, current_function_uses_pic_offset_table,
2317         current_function_uses_const_pool, current_function_has_nonlocal_label,
2318         current_function_saves_all_registers,
2319         current_function_has_nonlocal_goto,
2320         current_function_has_asm_statement): Remove accesor macros.
2321         * ra-conflict.c (global_conflicts): Update.
2322         * tree-tailcall.c (suitable_for_tail_opt_p): Update.
2323         (suitable_for_tail_call_opt_p): Update.
2324         * builtins.c (expand_builtin_return_addr): Update.
2325         (expand_builtin_setjmp_setup): Update.
2326         (expand_builtin_nonlocal_goto): Update.
2327         * final.c (final_start_function): Update.
2328         (profile_function): Update.
2329         (leaf_function_p): Update.
2330         (only_leaf_regs_used): Update.
2331         * df-scan.c (df_get_exit_block_use_set): Update.
2332         * dojump.c (clear_pending_stack_adjust): Update.
2333         * tree-stdarg.c (gate_optimize_stdarg): Update.
2334         * gimple-low.c (lower_function_body): Update.
2335         * global.c (compute_regsets): Update.
2336         (global_alloc): Update.
2337         * dwarf2out.c (dwarf2out_begin_prologue): Update.
2338         * expr.c (expand_assignment): Update.
2339         * dse.c (dse_step0): Update.
2340         (dse_step1): Update.
2341         * c-decl.c (store_parm_decls): Update.
2342         * local-alloc.c (combine_regs): Update.
2343         (find_free_reg): Update.
2344         * function.c (assign_parms_augmented_arg_list): Update.
2345         (assign_parm_find_data_types): Update.
2346         (assign_parms): Update.
2347         (allocate_struct_function): Update.
2348         (expand_function_start): Update.
2349         (expand_function_end): Update.
2350         (get_arg_pointer_save_area): Update.
2351         (thread_prologue_and_epilogue_insns): Update.
2352         (rest_of_match_asm_constraints): Update.
2353         * stor-layout.c (variable_size): Update.
2354         * gcse.c (gcse_main): Update.
2355         (bypass_jumps): Update.
2356         * gimplify.c (gimplify_function_tree): Update.
2357         * calls.c (emit_call_1): Update.
2358         (expand_call): Update.
2359         * bt-load.c (compute_defs_uses_and_gen): Update.
2360         * except.c (sjlj_assign_call_site_values): Update.
2361         (sjlj_emit_function_enter): Update.
2362         (can_throw_external): Update.
2363         (set_nothrow_function_flags): Update.
2364         (expand_builtin_unwind_init): Update.
2365         (expand_eh_return): Update.
2366         (convert_to_eh_region_ranges): Update.
2367         (output_function_exception_table): Update.
2368         * emit-rtl.c (gen_tmp_stack_mem): Update.
2369         * cfgexpand.c (expand_used_vars): Update.
2370         (tree_expand_cfg): Update.
2371         * cfgcleanup.c (rest_of_handle_jump): Update.
2372         * explow.c (allocate_dynamic_stack_space): Update.
2373         * varasm.c (assemble_start_function): Update.
2374         (force_const_mem): Update.
2375         (mark_constant_pool): Update.
2376         * tree-optimize.c (tree_rest_of_compilation): Update.
2377         * stack-ptr-mod.c (notice_stack_pointer_modification): Update.
2378         * tree-cfg.c (notice_special_calls): Update.
2379         (is_ctrl_altering_stmt): Update.
2380         (tree_can_make_abnormal_goto): Update.
2381         (tree_purge_dead_abnormal_call_edges): Update.
2382         * config/alpha/predicates.md: Update.
2383         * config/alpha/alpha.c (alpha_sa_mask): Update.
2384         (alpha_sa_size): Update.
2385         (alpha_does_function_need_gp): Update.
2386         (alpha_expand_prologue): Update.
2387         (alpha_start_function): Update.
2388         (alpha_output_function_end_prologue): Update.
2389         (alpha_expand_epilogue): Update.
2390         * config/frv/frv.c (frv_stack_info): Update.
2391         (frv_expand_epilogue): Update.
2392         * config/s390/s390.c (s390_regs_ever_clobbered): Update.
2393         (s390_register_info): Update.
2394         (s390_frame_info): Update.
2395         (s390_init_frame_layout): Update.
2396         (s390_can_eliminate): Update.
2397         (save_gprs): Update.
2398         * config/spu/spu.c (spu_split_immediate): Update.
2399         (need_to_save_reg): Update.
2400         (spu_expand_prologue): Update.
2401         (spu_expand_epilogue): Update.
2402         * config/sparc/sparc.md: Update.
2403         * config/sparc/sparc.c (eligible_for_return_delay): Update.
2404         (sparc_tls_got): Update.
2405         (legitimize_pic_address): Update.
2406         (sparc_emit_call_insn): Update.
2407         (sparc_expand_prologue): Update.
2408         (output_return): Update.
2409         (print_operand): Update.
2410         (sparc_function_ok_for_sibcall): Update.
2411         * config/sparc/sparc.h (EXIT_IGNORE_STACK): Update.
2412         * config/m32r/m32r.md: Update.
2413         * config/m32r/m32r.c (MUST_SAVE_RETURN_ADDR): Update.
2414         (m32r_compute_frame_size): Update.
2415         (m32r_expand_prologue): Update.
2416         (m32r_expand_epilogue): Update.
2417         (m32r_legitimize_pic_address): Update.
2418         * config/m32r/m32r.h (FRAME_POINTER_REQUIRED): Update.
2419         * config/i386/linux.h (SUBTARGET_FRAME_POINTER_REQUIRED): Update.
2420         * config/i386/i386.c (ix86_frame_pointer_required): Update.
2421         (gen_push): Update.
2422         (ix86_save_reg): Update.
2423         (ix86_compute_frame_layout): Update.
2424         (ix86_expand_prologue): Update.
2425         (ix86_expand_epilogue): Update.
2426         * config/sh/sh.c (output_stack_adjust): Update.
2427         (calc_live_regs): Update.
2428         (sh5_schedule_saves): Update.
2429         (sh_expand_prologue): Update.
2430         (sh_expand_epilogue): Update.
2431         (sh_setup_incoming_varargs): Update.
2432         (sh_allocate_initial_value): Update.
2433         (sh_get_pr_initial_val): Update.
2434         * config/sh/sh.h (SHMEDIA_REGS_STACK_ADJUST): Update.
2435         * config/sh/sh.md (label:): Update.
2436         * config/avr/avr.c (out_movhi_mr_r): Update.
2437         * config/crx/crx.h (enum): Update.
2438         * config/xtensa/xtensa.h (along): Update.
2439         * config/stormy16/stormy16.c Update.
2440         (xstormy16_compute_stack_layout): Update.
2441         * config/fr30/fr30.c (MUST_SAVE_RETURN_POINTER): Update.
2442         (fr30_expand_prologue): Update.
2443         * config/cris/cris.c (cris_conditional_register_usage): Update.
2444         (cris_reg_saved_in_regsave_area): Update.
2445         (cris_initial_frame_pointer_offset): Update.
2446         (cris_simple_epilogue): Update.
2447         (cris_expand_prologue): Update.
2448         (cris_expand_epilogue): Update.
2449         (cris_expand_pic_call_address): Update.
2450         (cris_asm_output_symbol_ref): Update.
2451         (cris_asm_output_label_ref): Update.
2452         * config/cris/cris.md Update.
2453         * config/iq2000/iq2000.c (compute_frame_size): Update.
2454         (iq2000_expand_epilogue): Update.
2455         * config/mt/mt.h (save_direction): Update.
2456         * config/mn10300/mn10300.c (mn10300_function_value): Update.
2457         * config/ia64/ia64.c (ia64_compute_frame_size): Update.
2458         (ia64_secondary_reload_class): Update.
2459         * config/m68k/m68k.c (m68k_save_reg): Update.
2460         (m68k_expand_prologue): Update.
2461         (m68k_expand_epilogue): Update.
2462         (legitimize_pic_address): Update.
2463         * config/rs6000/rs6000.c (rs6000_got_register): Update.
2464         (first_reg_to_save): Update.
2465         (first_altivec_reg_to_save): Update.
2466         (compute_vrsave_mask): Update.
2467         (compute_save_world_info): Update.
2468         (rs6000_stack_info): Update.
2469         (spe_func_has_64bit_regs_p): Update.
2470         (rs6000_ra_ever_killed): Update.
2471         (rs6000_emit_eh_reg_restore): Update.
2472         (rs6000_emit_allocate_stack): Update.
2473         (rs6000_emit_prologue): Update.
2474         (rs6000_emit_epilogue): Update.
2475         (rs6000_output_function_epilogue): Update.
2476         (output_profile_hook): Update.
2477         (rs6000_elf_declare_function_name): Update.
2478         * config/rs6000/rs6000.h (rs6000_args): Update.
2479         * config/rs6000/rs6000.md: Update.
2480         * config/mcore/mcore.c (mcore_expand_prolog): Update.
2481         * config/arc/arc.c (arc_output_function_epilogue): Update.
2482         * config/arc/arc.h (FRAME_POINTER_REQUIRED): Update.
2483         * config/darwin.c (machopic_function_base_name): Update.
2484         * config/score/score3.c (score3_compute_frame_size): Update.
2485         (rpush): Update.
2486         (rpop): Update.
2487         (score3_epilogue): Update.
2488         * config/score/score7.c (score7_compute_frame_size): Update.
2489         (score7_prologue): Update.
2490         (score7_epilogue): Update.
2491         * config/score/score.h (FRAME_POINTER_REQUIRED): Update.
2492         * config/arm/linux-elf.h (SUBTARGET_FRAME_POINTER_REQUIRED): Update.
2493         * config/arm/arm.c (use_return_insn): Update.
2494         (require_pic_register): Update.
2495         (arm_load_pic_register): Update.
2496         (arm_compute_save_reg0_reg12_mask): Update.
2497         (arm_compute_save_reg_mask): Update.
2498         (thumb1_compute_save_reg_mask): Update.
2499         (output_return_instruction): Update.
2500         (arm_output_function_prologue): Update.
2501         (arm_output_epilogue): Update.
2502         (arm_get_frame_offsets): Update.
2503         (arm_expand_prologue): Update.
2504         (thumb_pushpop): Update.
2505         (thumb_exit): Update.
2506         (thumb1_expand_prologue): Update.
2507         (thumb1_expand_epilogue): Update.
2508         (arm_unwind_emit): Update.
2509         (arm_output_fn_unwind): Update.
2510         * config/arm/arm.h (FRAME_POINTER_REQUIRED): Update.
2511         * config/arm/arm.md: Update.
2512         * config/pa/pa.md: Update.
2513         * config/pa/pa.c (legitimize_pic_address): Update.
2514         (compute_frame_size): Update.
2515         (hppa_expand_prologue): Update.
2516         (hppa_expand_epilogue): Update.
2517         (borx_reg_operand): Update.
2518         * config/pa/pa.h (FRAME_POINTER_REQUIRED): Update.
2519         (HARD_REGNO_RENAME_OK): Update.
2520         * config/mips/mips.c (mips_global_pointer): Update.
2521         (mips_save_reg_p): Update.
2522         (mips_compute_frame_info): Update.
2523         (mips_frame_pointer_required): Update.
2524         (mips_expand_prologue): Update.
2525         (mips_expand_epilogue): Update.
2526         (mips_can_use_return_insn): Update.
2527         (mips_reorg_process_insns): Update.
2528         * config/v850/v850.c (compute_register_save_size): Update.
2529         * config/mmix/mmix.h (FRAME_POINTER_REQUIRED): Update.
2530         * config/mmix/mmix.c (along): Update.
2531         (mmix_expand_epilogue): Update.
2532         * config/bfin/bfin.c (legitimize_pic_address): Update.
2533         (must_save_p): Update.
2534         (stack_frame_needed_p): Update.
2535         (add_to_reg): Update.
2536         (bfin_expand_prologue): Update.
2537         * stmt.c (expand_asm_operands): Update.
2538         * reload1.c (reload): Update.
2539         (init_elim_table): Update.
2540
2541 2008-04-25  Bob Wilson  <bob.wilson@acm.org>
2542         
2543         * optabs.c (expand_float): Fix REG_EQUAL for UNSIGNED_FLOAT libcall.
2544         
2545 2008-04-25  H.J. Lu  <hongjiu.lu@intel.com>
2546
2547         * config/i386/sse.md (mov<mode>): Replace SSEMODEI with SSEMODE.
2548         (*mov<mode>_internal): Likewise.  Support V4SF and V2DF.
2549         (mov<mode>): Removed.
2550         (*movv4sf_internal): Likewise.
2551         (*movv2df_internal): Likewise.
2552
2553 2008-04-25  Pompapathi V Gadad <Pompapathi.V.Gadad@nsc.com>
2554
2555         * config.gcc (crx-*-elf): Remove deprecation.
2556
2557 2008-04-25  Danny Smith  <dannysmith@users.sourceforge.net>
2558
2559         * config/i386/cygming-crtend.c (register_frame_ctor): Register
2560         __gcc_deregister_frame with atexit.
2561         (deregister_frame_dtor): Remove.
2562
2563 2008-04-24  Nathan Froyd  <froydnj@codesourcery.com>
2564             Nathan Sidwell  <nathan@codesourcery.com>
2565
2566         * config/rs6000/rs6000.opt (mspe): Remove Var property.
2567         (misel): Likewise.
2568         * config/rs6000/rs6000.h (rs6000_spe): Declare.
2569         (rs6000_isel): Likewise.
2570         * config/rs6000/rs6000.c (rs6000_spe): New variable.
2571         (rs6000_isel): New variable.
2572         (rs6000_handle_option): Handle OPT_mspe and OPT_misel.
2573
2574 2008-04-24  Jakub Jelinek  <jakub@redhat.com>
2575
2576         PR c++/35758
2577         * c-common.c (handle_vector_size_attribute): Call
2578         lang_hooks.types.reconstruct_complex_type instead of
2579         reconstruct_complex_type.
2580         * config/rs6000/rs6000.c (rs6000_handle_altivec_attribute): Likewise.
2581         * config/spu/spu.c (spu_handle_vector_attribute): Likewise.
2582         * langhooks.h (struct lang_hooks_for_types): Add
2583         reconstruct_complex_type hook.
2584         * langhooks-def.h (LANG_HOOKS_RECONSTRUCT_COMPLEX_TYPE): Define.
2585         (LANG_HOOKS_FOR_TYPES_INITIALIZER): Add it.
2586
2587 2008-04-24  Richard Guenther  <rguenther@suse.de>
2588
2589         * c-common.h (check_builtin_function_arguments): Declare.
2590         * c-common.c (validate_nargs): New function.
2591         (check_builtin_function_arguments): Likewise.
2592         * c-typeck.c (build_function_call): Call
2593         check_builtin_function_arguments.
2594         * builtins.c (fold_builtin_classify): Remove error reporting code.
2595         (fold_builtin_unordered_cmp): Likewise.
2596         (fold_builtin_1): Likewise.
2597         (fold_builtin_n): Likewise.
2598
2599 2008-04-24  Jakub Jelinek  <jakub@redhat.com>
2600
2601         PR tree-optimization/36008
2602         * fold-const.c (try_move_mult_to_index): If s == NULL, divide
2603         the original op1, rather than delta by step.
2604
2605 2008-04-22  Antoniu Pop  <antoniu.pop@gmail.com>
2606             Sebastian Pop  <sebastian.pop@amd.com>
2607
2608         * tree-parloops.c (take_address_of, eliminate_local_variables_1,
2609         eliminate_local_variables_stmt, eliminate_local_variables,
2610         separate_decls_in_loop_name, separate_decls_in_loop_stmt,
2611         separate_decls_in_loop, gen_parallel_loop): Make them work on a region
2612         of code delimited by two edges in the CFG.
2613         (separate_decls_in_loop_name): Renamed separate_decls_in_region_name.
2614         (separate_decls_in_loop_stmt): Renamed separate_decls_in_region_stmt.
2615         (separate_decls_in_loop): Renamed separate_decls_in_region.  Isolate 
2616         the case of parallelisation of reductions.
2617         (expr_invariant_in_region_p): New.
2618
2619         * tree-flow.h (gather_blocks_in_sese_region): Declared.
2620         * tree-cfg.c (gather_blocks_in_sese_region): Extern.
2621
2622 2008-04-24  Ira Rosen  <irar@il.ibm.com>
2623             Richard Guenther  <rguenther@suse.de>
2624
2625         PR tree-optimization/36034
2626         * tree-vect-analyze.c (vect_analyze_group_access): SLP is
2627         incapable of dealing with loads with gaps.
2628
2629 2008-04-24  Rafael Espindola  <espindola@google.com>
2630
2631         * tree-flow.h (vrp_evaluate_conditional): Change signature.
2632         * tree-ssa-propagate.c (fold_predicate_in): Update call to
2633         vrp_evaluate_conditional.
2634         * tree-vrp.c (vrp_evaluate_conditional_warnv): Remove.
2635         (vrp_evaluate_conditional): Split the cond argument.
2636         (vrp_visit_cond_stmt): Use vrp_evaluate_conditional_warnv_with_ops.
2637         (simplify_stmt_for_jump_threading): Update call to
2638         vrp_evaluate_conditional.
2639
2640 2008-04-24  Ira Rosen  <irar@il.ibm.com>
2641
2642         PR tree-optimization/35982
2643         * tree-vect-analyze.c (vect_check_interleaving): Check that the
2644         interleaved data-refs are of the same type.
2645
2646 2008-04-24  Danny Smith  <dannysmith@users.net>
2647
2648         * c-format.c (check_format_info_main): Use strncmp rather than a
2649         magic prefix to handle multichar length specs.
2650         * config/i386/msformat-c.c (format_length_info ms_printf_length_specs):
2651         Don't prefix "I64" and "I32" with '\0'.
2652
2653 2008-04-24  Jakub Jelinek  <jakub@redhat.com>
2654
2655         PR target/36015
2656         * config/i386/i386.c (init_cumulative_args): Don't pass anything
2657         in registers for -m32 only if stdarg_p (fntype).
2658
2659 2008-04-24  Uros Bizjak  <ubizjak@gmail.com>
2660
2661         PR rtl-optimization/36006
2662         * expmed.c (store_fixed_bit_field): Copy op0 rtx before moving
2663         temp to op0 in order to avoid invalid rtx sharing.
2664
2665 2008-04-23  Paolo Bonzini  <bonzini@gnu.org>
2666
2667         * tree-cfg.c (verify_expr): Check with is_gimple_address.  Don't
2668         check TREE_INVARIANT.
2669         * tree-gimple.c (is_gimple_address): New.
2670         (is_gimple_invariant_address): Simplify using decl_address_invariant_p.
2671         * tree-gimple.h (is_gimple_address): New.
2672         * tree.h (decl_address_invariant_p): New.
2673         * tree.c (make_node_stat): Don't set TREE_INVARIANT.
2674         (build_string): Likewise.
2675         (decl_address_invariant_p): New, from is_gimple_invariant_address.
2676         (tree_invariant_p_1): Likewise.
2677         (save_expr): Use it.
2678         (tree_invariant_p): New.
2679         (skip_simple_arithmetic): Use it.
2680         (stabilize_reference_1): Use it.
2681         (recompute_tree_invariant_for_addr_expr): Don't update TREE_INVARIANT,
2682         simplify.
2683         (build1_stat): Drop code to compute TREE_INVARIANT.
2684         (build2_stat): Drop code to compute TREE_INVARIANT.
2685         (build3_stat): Drop code to compute TREE_INVARIANT.
2686         (build4_stat): Drop code to compute TREE_INVARIANT.
2687         (build5_stat): Drop code to compute TREE_INVARIANT.
2688         (build7_stat): Drop code to compute TREE_INVARIANT.
2689         (merge_dllimport_decl_attributes): Don't mention TREE_INVARIANT.
2690         * tree.h (struct tree_base): Remove invariant_flag.
2691         (TREE_INVARIANT): Remove.
2692         * builtins.c (build_string_literal): Don't set TREE_INVARIANT.
2693         (fold_builtin_expect): Check TREE_CONSTANT.
2694         * tree-ssa-ccp.c (fold_stmt_r): Adjust comment.
2695         * c-tree.h (c_expr_to_decl): Drop third parameter.
2696         * c-typeck.c (build_external_ref): Don't set TREE_INVARIANT.
2697         (build_c_cast): Don't set TREE_INVARIANT.
2698         (pop_init_level): Don't set TREE_INVARIANT.
2699         (c_objc_common_truthvalue_conversion): Don't set TREE_INVARIANT.
2700         * gimplify.c (gimplify_init_ctor_preeval): Add assertion, test
2701         TREE_CONSTANT.
2702         (gimplify_init_constructor): Don't set TREE_INVARIANT.
2703         (gimplify_addr_expr): Adjust comment.
2704         * tree-mudflap.c (mf_build_string):
2705         * print-tree.c (print_node): Don't print TREE_INVARIANT.
2706         * tree-nested.c (convert_nonlocal_reference): Adjust comment.
2707         * c-common.c (fix_string_type): Don't set TREE_INVARIANT.
2708         * langhooks-def.h (lhd_expr_to_decl): Drop third parameter.
2709         * langhooks.c (lhd_expr_to_decl): Drop third parameter.
2710         * langhooks.h (struct lang_hooks): Drop third parameter from
2711         expr_to_decl.
2712
2713 2008-04-23  Richard Guenther  <rguenther@suse.de>
2714
2715         PR tree-optimization/27799
2716         PR tree-optimization/32921
2717         PR tree-optimization/32624
2718         * tree-ssa-structalias.c (merge_smts_into): Only merge the
2719         SMTs aliases and the tag itself into the solution.
2720         * tree-ssa-alias.c (compute_flow_sensitive_aliasing): Do not
2721         merge the points-to solution back into the SMT aliases.
2722         (may_alias_p): Use alias_set_subset_of instead of
2723         aliases_conflict_p.  A pointer which points to
2724         memory with alias set zero may access any variable.
2725
2726 2008-04-23  Richard Guenther  <rguenther@suse.de>
2727
2728         * alias.c (alias_set_subset_of): Correctly handle asking
2729         if zero is a subset of an alias set with zero child.
2730         * tree-ssa-alias.c (have_common_aliases_p): Simplify logic.
2731         (compute_flow_insensitive_aliasing): Correctly walk all
2732         pointers.  Do not unnecessarily union sets.
2733
2734 2008-04-23  Richard Guenther  <rguenther@suse.de>
2735
2736         PR middle-end/36021
2737         * c-common.c (handle_alloc_size_attribute): Use type_num_arguments.
2738
2739 2008-04-22  Tomas Bily  <tbily@suse.cz>
2740
2741         * tree-cfg.c (verify_expr): Check for NON_LVALUE_EXPR as
2742         unreachable case.
2743         * tree-vrp.c (extract_range_from_unary_expr): Removed unused
2744         NON_LVALUE_EXPR.
2745         * tree-ssa-threadedge.c (simplify_control_stmt_condition): Likewise.
2746         * tree-ssa-structalias.c (get_constraint_for): Likewise.
2747         * tree-inline.c (estimate_num_insns_1): Likewise.
2748         * varasm.c (const_hash_1, compare_constant, copy_constant)
2749         (compute_reloc_for_constant, output_addressed_constants): Likewise.
2750         * emit-rtl.c (component_ref_for_mem_expr)
2751         (set_mem_attributes_minus_bitpos): Likewise.
2752         * expr.c (highest_pow2_factor, expand_expr_real_1, )
2753         (is_aligning_offset): Likewise.
2754         * dwarf2out.c (loc_descriptor_from_tree_1, add_bound_info): Likewise.
2755         * tree-ssa-loop-ivopts.c (may_be_nonaddressable_p): Likewise.
2756         * dojump.c (do_jump): Likewise.
2757         * builtins.c (get_pointer_alignment, get_memory_rtx)
2758         (integer_valued_real_p, fold_builtin_next_arg): Likewise.
2759         * tree-scalar-evolution.c (instantiate_parameters_1): Likewise.
2760
2761 2008-04-23  Jakub Jelinek  <jakub@redhat.com>
2762
2763         PR rtl-optimization/36017
2764         * builtins.c (expand_errno_check): Clear CALL_EXPR_TAILCALL before
2765         expanding the library call.
2766
2767 2008-04-22  Ian Lance Taylor  <iant@google.com>
2768
2769         * fold-const.c (pointer_may_wrap_p): Call int_size_in_bytes rather
2770         than size_in_bytes.
2771
2772 2008-04-22  Pat Haugen  <pthaugen@us.ibm.com>
2773
2774         * config/rs6000/rs6000.c (rs6000_register_move_cost): Increase cost
2775         of LR/CTR moves for Power6.
2776
2777 2008-04-22  Kenneth Zadeck  <zadeck@naturalbridge.com>
2778
2779         PR middle-end/36003
2780         * passes.c (init_optimization_passes): Remove
2781         pass_fast_rtl_byte_dce.
2782         
2783 2008-04-22  Uros Bizjak  <ubizjak@gmail.com>
2784
2785         PR target/29096
2786         * config/i386/xmmintrin.h (_mm_cvtpi16_ps): Rearrange calls to
2787         builtin functions to generate faster code.
2788         (_mm_cvtpu16_ps): Ditto.
2789         (_mm_cvtpi32x2_ps): Ditto.
2790
2791 2008-04-22  Nick Clifton  <nickc@redhat.com>
2792
2793         * common.opt (ftree-loop-distribution): Add Optimization
2794         attribute.
2795
2796         * config/frv/frv.c (frv_stack_info): Use crtl instead of cfun.
2797         (frv_expand_builtin_va_start): Likewise.
2798
2799         * config/arm/arm.c (thumb_find_work_register): Fix location of
2800         argument register count.
2801
2802 2008-04-22  Maxim Kuvyrkov  <maxim@codesourcery.com>
2803
2804         Support scheduling for ColdFire V1 and V3 microarchitecture.
2805         Improve scheduling of multiplication instructions.
2806
2807         * config/m68k/m68k.md (cpu): Add cfv1 and cfv3.  Rename cf_v2 to cfv1.
2808         (mac): New instruction attribute.
2809         * config/m68k/m68k.c (override_options): Handle cfv1, cfv3 and mac.
2810         (m68k_sched_mac): New variable.
2811         (m68k_sched_attr_type2, m68k_sched_md_init_global): Update.
2812         Handle cfv1 and cfv3.
2813         (max_insn_size): New static variable.
2814         (struct _sched_ib): New type.
2815         (sched_ib): New static variable.
2816         (sched_ib_size, sched_ib_filled, sched_ib_insn): Convert variables
2817         to fields of 'struct _sched_ib sched_ib'.  Update all uses.
2818         (m68k_sched_variable_issue): Add modeling of cfv3 instruction buffer.
2819         Update.
2820         (m68k_sched_md_init_global, m68k_sched_md_finish_global,
2821         m68k_sched_md_init, m68k_sched_md_finish): Handle cfv1 and cfv3.  Init
2822         new variables.  Update.
2823         (m68k_sched_dfa_pre_advance_cycle, m68k_sched_dfa_post_advance_cycle):
2824         Add modeling of cfv3 instruction buffer.  Update.
2825         * config/m68k/m68k-protos.h (m68k_sched_mac): Declare.
2826         * config/m68k/m68k.h (TUNE_CFV3): New macro.
2827         * config/m68k/cf.md: Change substrings 'cf_v2' to 'cfv12' or 'cfv123'.
2828         (cf_* reservations): Rename to cfv12 or cfv123 to indicate cores
2829         a particular reservation applies to.
2830         (type2): Reorganize attribute values.  Rename alu to alu_reg,
2831         alu_l to alu, move_l to omove.  Join move to alu.  Split mul
2832         to mul_l and mul_w.
2833         (cf_ib_*): Simplify description of instruction buffer.
2834         (cf_ib_w0, cf_ib_w4, cf_ib_w5, cf_ib_w6): Remove.
2835         (cf_mem): Split into cf_mem1 and cf_mem2.
2836         (cf_v2_move_??): Rename to cfv12_alu_??.
2837         (cf_v2_move_l_??): Rename to cfv12_omove_??.
2838         (cf_v2_mul_??): Remove reservations.
2839         (cfv12_mul_l_??, cfv12_mul_w_??, cfv12_mac_w_??, cfv12_mac_l_??,
2840         cfv12_emac_??, cfv12_emac_w_i0): New reservations.
2841         (cfv12_rts, cfv12_call, cfv12_bcc, cfv12_bra, cfv12_jmp): Move to
2842         appropriate place.
2843         (cfv3_alu_10, cfv3_omove_10, cfv3_alu_i0, cfv3_omove_i0, cfv3_alu_01,
2844         cfv3_alu_0i, cfv3_alu_11, cfv3_omove_11, cfv3_alu_i1, cfv3_omove_i1,
2845         cfv3_alu_1i, cfv3_omove_1i, cfv3_pea_11, cfv3_pea_i1, cfv3_mul_w_10,
2846         cfv3_mul_l_10, cfv3_mul_w_i0, cfv3_mac_w_10, cfv3_mac_l_10,
2847         cfv3_mac_w_i0, cfv3_emac_10, cfv3_emac_w_i0, cfv3_rts, cfv3_call,
2848         cfv3_bcc, cfv3_bra, cfv3_jmp): New reservations.
2849         (cfv3_*_1, cfv3_*_2, cfv3_*_3): New instruction reservations that are
2850         expansions of the above reservations for instructions of sizes
2851         1, 2 and 3 words.
2852
2853 2008-04-22  Maxim Kuvyrkov  <maxim@codesourcery.com>
2854
2855         * rtl-factoring.c (collect_patterns_seqs): Handle CC0 targets.
2856
2857 2008-04-21  Adam Nemet  <anemet@caviumnetworks.com>
2858
2859         * coverage.c: Include tree-pass.h.
2860         (coverage_counter_alloc): Print da_file_name to the dump file.
2861
2862 2008-04-21  Kenneth Zadeck  <zadeck@naturalbridge.com>
2863
2864         * sbitmap.c (sbitmap_range_empty_p): New function.
2865         * sbitmap.h (sbitmap_range_empty_p): New function.
2866         * bitmap.h: Now includes obstack.h.
2867
2868 2008-04-21  Richard Sandiford  <rsandifo@nildram.co.uk>
2869             Kenneth Zadeck  <zadeck@naturalbridge.com>
2870
2871         * dbgcnt.def (ra_byte_scan): Added.
2872         * dbgcnt.c (dbg_cnt): Added code to print message to dump_file
2873         when the last hit happens for a counter.  
2874         * timevar.def (TV_DF_BYTE_LR): New variable.
2875         * tree-pass.h (pass_fast_rtl_byte_dce): New pass.
2876         * passes.c (pass_fast_rtl_byte_dce): New pass.
2877         * fwprop.c (update_df): Added mode to call df_ref_create.
2878         Renamed DF_REF_WIDTH and DF_REF_OFFSET to DF_REF_EXTRACT_WIDTH and
2879         DF_REF_EXTRACT_OFFSET.
2880         * df.h (DF_BYTE_LR, DF_BYTE_LR_BB_INFO, DF_BYTE_LR_IN, 
2881         DF_BYTE_LR_OUT, df_byte_lr): New macro.
2882         (df_mm): New enum.
2883         (df_ref_extract): Added mode field.
2884         (DF_REF_WIDTH, DF_REF_OFFSET) Renamed to DF_REF_EXTRACT_WIDTH and
2885         DF_REF_EXTRACT_OFFSET.
2886         (DF_REF_EXTRACT_MODE): New macro.
2887         (df_byte_lr_bb_info): New structure.
2888         (df_print_byte_regset, df_compute_accessed_bytes, 
2889         df_byte_lr_add_problem, df_byte_lr_get_regno_start,
2890         df_byte_lr_get_regno_len, df_byte_lr_simulate_defs,
2891         df_byte_lr_simulate_uses,
2892         df_byte_lr_simulate_artificial_refs_at_top,
2893         df_byte_lr_simulate_artificial_refs_at_end,
2894         df_compute_accessed_bytes): New function.
2895         (df_ref_create): Add parameter.
2896         (df_byte_lr_get_bb_info): New inline function.
2897         * df-scan.c (df_ref_record, df_uses_record,
2898         df_ref_create_structure): Added mode parameter.
2899         (df_ref_create, df_notes_rescan, df_ref_record, df_def_record_1, 
2900         df_defs_record, df_uses_record, df_get_conditional_uses,
2901         df_get_call_refs, df_insn_refs_collect, df_bb_refs_collect, 
2902         df_entry_block_defs_collect, df_exit_block_uses_collect):
2903         Added mode parameter to calls to df_ref_record, df_uses_record,
2904         df_ref_create_structure.
2905         (df_ref_equal_p, df_ref_compare): Added test for modes.
2906         (df_ref_create_structure): Added code to set mode.  Renamed
2907         DF_REF_WIDTH and DF_REF_OFFSET to DF_REF_EXTRACT_WIDTH and
2908         DF_REF_EXTRACT_OFFSET.
2909         * df-core.c (df_print_byte_regset): New function.
2910         * df-byte-scan.c: New file.
2911         * df-problems.c (df_rd_transfer_function): Removed unnecessary
2912         calls to BITMAP_FREE.  
2913         (df_byte_lr_problem_data, df_problem problem_BYTE_LR): New structure.
2914         (df_byte_lr_get_regno_start, df_byte_lr_get_regno_len,
2915         df_byte_lr_set_bb_info, df_byte_lr_free_bb_info, 
2916         df_byte_lr_check_regs, df_byte_lr_expand_bitmap, 
2917         df_byte_lr_alloc, df_byte_lr_reset, df_byte_lr_bb_local_compute,
2918         df_byte_lr_local_compute, df_byte_lr_init,
2919         df_byte_lr_confluence_0, df_byte_lr_confluence_n, 
2920         df_byte_lr_transfer_function, df_byte_lr_free, 
2921         df_byte_lr_top_dump, df_byte_lr_bottom_dump,
2922         df_byte_lr_add_problem, df_byte_lr_simulate_defs, 
2923         df_byte_lr_simulate_uses,
2924         df_byte_lr_simulate_artificial_refs_at_top,
2925         df_byte_lr_simulate_artificial_refs_at_end): New function.
2926         * dce.c (byte_dce_process_block): New function.
2927         (dce_process_block): au is now passed in rather than computed
2928         locally.  Changed loops that look at artificial defs to not look
2929         for conditional or partial ones, because there never are any.  
2930         (fast_dce): Now is able to drive byte_dce_process_block or 
2931         dce_process_block depending on the kind of dce being done.
2932         (rest_of_handle_fast_dce): Add parameter to fast_dce.
2933         (rest_of_handle_fast_byte_dce): New function.
2934         (rtl_opt_pass pass_fast_rtl_byte_dce): New pass.
2935         * Makefile.in (df-byte-scan.o, debugcnt.o): Added dependencies.
2936
2937 2008-04-21  Daniel Franke  <franke.daniel@gmail.com>
2938
2939         PR fortran/35019
2940         * gcc.h: Added fortran options that take arguments to
2941         DEFAULT_SWITCH_TAKES_ARG and DEFAULT_WORD_SWITCH_TAKES_ARG
2942         macros.
2943
2944 2008-04-20  Eric Botcazou  <ebotcazou@adacore.com>
2945
2946         * tree-sra.c (sra_walk_expr) <VIEW_CONVERT_EXPR>: Disable
2947         scalarization if on the LHS and not a full access.
2948
2949 2008-04-20  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
2950
2951         * Makefile.in (s-gtyp-input): Remove tmp-gi.list before writing it.
2952
2953 2008-04-18  Rafael Espindola  <espindola@google.com>
2954
2955         * tree-vrp.c (find_case_label_index): Fix the binary search.
2956         (find_case_label_range): New.
2957         (vrp_visit_switch_stmt): Use find_case_label_range.
2958         (simplify_switch_using_ranges): Use find_case_label_range.
2959
2960 2008-04-18  Eric Botcazou  <ebotcazou@adacore.com>
2961
2962         * gimplify.c (gimplify_modify_expr_rhs) <COND_EXPR>: Gimplify the LHS
2963         using the is_gimple_lvalue predicate instead of is_gimple_min_lval.
2964
2965 2008-04-18  Tom Tromey  <tromey@redhat.com>
2966
2967         PR libcpp/15500:
2968         * doc/cpp.texi (Implementation-defined behavior): Mention
2969         -finput-charset.
2970
2971 2008-04-18  Ian Lance Taylor  <iant@google.com>
2972
2973         * fold-const.c (pointer_may_wrap_p): New static function.
2974         (fold_comparison): Add another test for pointer overflow.  Use
2975         pointer_may_wrap_p to disable some false positives.
2976
2977 2008-04-18  Kris Van Hees <kris.van.hees@oracle.com>
2978           
2979         * c-common.c (CHAR16_TYPE, CHAR32_TYPE): New macros.
2980         (fname_as_string): Match updated cpp_interpret_string prototype.
2981         (fix_string_type): Support char16_t* and char32_t*.
2982         (c_common_nodes_and_builtins): Add char16_t and char32_t (and
2983         derivative) nodes.  Register as builtin if C++0x.
2984         (c_parse_error): Support CPP_CHAR{16,32}.
2985         * c-common.h (RID_CHAR16, RID_CHAR32): New elements. 
2986         (enum c_tree_index) <CTI_CHAR16_TYPE, CTI_SIGNED_CHAR16_TYPE,
2987         CTI_UNSIGNED_CHAR16_TYPE, CTI_CHAR32_TYPE, CTI_SIGNED_CHAR32_TYPE,
2988         CTI_UNSIGNED_CHAR32_TYPE, CTI_CHAR16_ARRAY_TYPE,
2989         CTI_CHAR32_ARRAY_TYPE>: New elements.
2990         (char16_type_node, signed_char16_type_node, unsigned_char16_type_node,
2991         char32_type_node, signed_char32_type_node, char16_array_type_node,
2992         char32_array_type_node): New defines.
2993         * c-lex.c (cb_ident): Match updated cpp_interpret_string prototype.
2994         (c_lex_with_flags): Support CPP_CHAR{16,32} and CPP_STRING{16,32}.
2995         (lex_string): Support CPP_STRING{16,32}, match updated
2996         cpp_interpret_string and cpp_interpret_string_notranslate prototypes.
2997         (lex_charconst): Support CPP_CHAR{16,32}.
2998         * c-parser.c (c_parser_postfix_expression): Support CPP_CHAR{16,32}
2999         and CPP_STRING{16,32}.
3000
3001 2008-04-18  Paolo Bonzini  <bonzini@gnu.org>
3002
3003         PR bootstrap/35457
3004         * aclocal.m4: Regenerate.
3005         * configure: Regenerate.
3006
3007 2008-04-18  Jan Hubicka  <jh@suse.cz>
3008
3009         * except.c (dw2_size_of_call_site_table,
3010         sjlj_size_of_call_site_table): Use vector API for call_site_record.
3011
3012         * cgraphbuild.c (build_cgraph_edges): Update.
3013         * tree-pass.h: Update comment.
3014         * final.c (leaf_function_p): Update.
3015         (leaf_renumber_regs): Update.
3016         (rest_of_clean_state): Update.
3017         * omp-low.c (expand_omp_parallel): Update.
3018         * ipa-reference.c (analyze_function): Update.
3019         * reorg.c (find_end_label): Update.
3020         (optimize_skip): Update.
3021         (fill_simple_delay_slots): Update.
3022         (fill_simple_delay_slots): Update.
3023         (make_return_insns): Update.
3024         (dbr_schedule): Update.
3025         * gimple-low.c (record_vars_into): Update.
3026         * cfgbuild.c (make_edges): Update.
3027         * function.c (assign_stack_local): Update.
3028         (assign_parm_adjust_stack_rtl): Update.
3029         (locate_and_pad_parm): Update.
3030         (allocate_struct_function): Do not initialize stack_alignment_needed
3031         and preferred_stack_boundary here.
3032         (stack_protect_prologue): Update.
3033         (stack_protect_epilogue): Update.
3034         (expand_function_start): Initialize stack_alignment_needed,
3035         preferred_stack_boundary and max_jumptable_ents.
3036         (expand_function_end): Update.
3037         (free_after_compilation): Do not NULLify epilogue_delay_list.
3038         * function.h (struct rtl_data): Add stack_protect_guard,
3039         stack_alignment_needed,
3040         preferred_stack_boundary, epilogue_delay_list.
3041         (struct function): Remove value_histograms, stack_alignment_needed,
3042         preferred_stack_boundary, epilogue_delay_list, max_jumptable_ents,
3043         last_label_uid,
3044         unexpanded_var_list, stack_protect_guard.
3045         (current_function_epilogue_delay_list): Remove.
3046         * ipa-type-escape.c (analyze_function): Update.
3047         * gimplify.c (pop_gimplify_context): Update comment.
3048         * calls.c (expand_call): Update.
3049         (emit_library_call_value_1): Update.
3050         * except.c (set_nothrow_function_flags): Update.
3051         * cfgexpand.c (get_decl_align_unit): Update.
3052         (create_stack_guard): Update.
3053         (estimated_stack_frame_size): Update.
3054         (expand_used_vars): Update.
3055         (tree_expand_cfg): Free histogram earliers, init expansion variables.
3056         * explow.c (allocate_dynamic_stack_space): Update.
3057         * tree-ssa-live.c (remove_unused_locals): Update.
3058         * varasm.c (mark_constant_pool): Update.
3059         * tree-inline.c (remap_decls): Update.
3060         (initialize_cfun): Update.
3061         (declare_return_variable): Update.
3062         (inline_forbidden_p): Update.
3063         (expand_call_inline): Update.
3064         (declare_inline_vars): Update.
3065         (tree_function_versioning): Update.
3066         * tree-flow.h (value_histograms): New.
3067         (VALUE_HISTOGRAMS): New macro.
3068         * basic-block.h (control_flow_graph): Add max_jumptable_ents,
3069         last_label_uid.
3070         * tree-cfg.c (set_bb_for_stmt): Update.
3071         (replace_by_duplicate_decl): Update.
3072         (move_block_to_fn): Update.
3073         (new_label_mapper): Update.
3074         (dump_function_to_file): Update.
3075         * ipa-struct-reorg.c (build_data_structure): Update.
3076         * cfgrtl.c (print_rtl_with_bb): Update.
3077         * reload1.c (reload): Update.
3078         (reload): Update.
3079         * config/i386/i386.c (setup_incoming_varargs_64,
3080         ix86_compute_frame_layout): Update.
3081         * config/arc/arc.c (arc_output_function_epilogue): Update.
3082
3083 2008-04-18  Marius Strobl <marius@FreeBSD.org>
3084
3085         * gthr-posix.h (__gthread_active_p): Use the Solaris implementation
3086         for FreeBSD as well.
3087         * gthr-posix95.h: Likewise.
3088
3089 2008-04-17  Richard Sandiford  <rsandifo@nildram.co.uk>
3090
3091         PR rtl-optimization/35838
3092         * dse.c (find_shift_sequence): Use subreg_lowpart_offset to work
3093         out the byte offset of the first subreg.
3094
3095 2008-04-17  Uros Bizjak  <ubizjak@gmail.com>
3096
3097         * config/i386/i386.md (addti3 splitter): Pass arrays of 3 operands
3098         to split_ti instead of three separate calls with single member arrays.
3099         (subti3 splitter): Ditto.
3100         (adddi3 splitter): Ditto with split_di.
3101         (subdi3 splitter): Ditto.
3102         (negti2 splitter): Pass arrays of 2 operands to split_ti instead of
3103         two separate calls with single member arrays.  Swap match_dup
3104         operands 1 and 2 to better fit into the array.
3105         (negdi2 splitter): Ditto with split_di.
3106         (movdfcc splitter):  Pass arrays of 2 operands to split_di instead of
3107         two separate calls with single member arrays.  Swap match_dup operands
3108         6 and 7 to better fit into the array.
3109
3110 2008-04-17  H.J. Lu  <hongjiu.lu@intel.com>
3111
3112         * config/i386/i386.c (sse_builtin_type): New.
3113         (bdesc_sse_args): Likewise.
3114         (bdesc_sse_3arg): Removed.
3115         (bdesc_2arg): Remove IX86_BUILTIN_AESKEYGENASSIST128.
3116         (bdesc_1arg): Remove IX86_BUILTIN_ROUNDPD and
3117         IX86_BUILTIN_ROUNDPS.
3118         (ix86_init_mmx_sse_builtins): Handle bdesc_sse_args.  Remove
3119         bdesc_sse_3arg.  Remove IX86_BUILTIN_ROUNDPD and
3120         IX86_BUILTIN_ROUNDPS.
3121         (ix86_expand_sse_4_operands_builtin): Removed.
3122         (ix86_expand_sse_operands_builtin): New.
3123         (ix86_expand_unop_builtin): Remove CODE_FOR_sse4_1_roundpd
3124         and CODE_FOR_sse4_1_roundps.
3125         (ix86_expand_builtin): Remove IX86_BUILTIN_AESKEYGENASSIST128.
3126         Handle bdesc_sse_args.  Remove bdesc_sse_3arg.
3127
3128 2008-04-17  Alan Modra  <amodra@bigpond.net.au>
3129
3130         PR target/35907
3131         * config/rs6000/rs6000.c (rs6000_emit_epilogue): Restore vr and vrsave
3132         regs before frame pop when needed.  If use_backchain_to_restore_sp
3133         then load backchain into a temp reg to restore vr and vrsave.  Add
3134         code to restore vr after frame pop if possible.
3135
3136 2008-04-17  Richard Guenther  <rguenther@suse.de>
3137
3138         * tree-vn.c (expressions_equal_p): Do not check type
3139         equality or compatibility before calling operand_equal_p.
3140         * fold-const.c (operand_equal_p): Check equivalence of
3141         integer constants before bailing out due to signedness or
3142         precision differences.
3143         * tree-ssa-sccvn.c (copy_reference_ops_from_ref): Ignore
3144         spurious differences in type qualification.  Ignore types
3145         for COMPONENT_REFs at all.
3146
3147 2008-04-17  Christian Bruel  <christian.bruel@st.com>
3148
3149         * config/sh/sh.c (expand_cbranchdi4): Use original operands for
3150         msw_skip comparison.
3151         
3152 2008-04-16  Jakub Jelinek  <jakub@redhat.com>
3153
3154         PR c/35739
3155         * tree-nrv.c (tree_nrv): Don't optimize if result_type is GIMPLE
3156         reg type.
3157
3158         PR tree-optimization/35899
3159         * tree-inline.c (expand_call_inline): Use GIMPLE_STMT_OPERAND
3160         rather than TREE_OPERAND.
3161
3162 2008-04-16  Uros Bizjak  <ubizjak@gmail.com>
3163
3164         PR target/35944
3165         * config/i386/i386.md (fmodxf3): Copy operand 1 and operand 2 into
3166         temporary registers.  Change operand predicate to general_operand.
3167         (remainderxf3): Ditto.
3168
3169 2008-04-16  Richard Guenther  <rguenther@suse.de>
3170
3171         * Makefile.in (tree-affine.o): Add $(FLAGS_H) dependency.
3172         * tree-affine.c (aff_combination_expand): Look through some
3173         conversions.
3174
3175 2008-04-15  Doug Kwan  <dougkwan@google.com>
3176
3177         * dwarf2asm.c (dw2_assemble_integer): Cast to unsigned HOST_WIDE_INT
3178         for hex printing.
3179         * tree-pretty-print.c (dump_generic_node): Ditto.
3180         * final.c (output_addr_const): Ditto.
3181         * dwarf2out.c (output_cfi): Ditto.
3182         * c-pretty-print.c (pp_c_integer_constant): Ditto.
3183         * print-rtl.c (print_rtx): Ditto.
3184         * print-tree.c (print_node_brief, print_node): Ditto.
3185         * c-common.c (match_case_to_enum_1): Ditto.
3186         * sched-vis.c (print_value): Ditto.
3187         * config/i386/i386.c (print_operand): Cast to long unsigned int
3188         for hex printing.
3189
3190 2008-04-15  Danny Smith  <dannysmith@users.sourceforge.net>
3191         * libgcc2.c [L_trampoline]: Remove  unnecessary prototype for
3192         MS Windows VirtualProtect function.
3193
3194 2008-04-15  Jan Hubicka  <jh@suse.cz>
3195
3196         * gengtype.c (write_root): Param_is argument is OK.
3197         * expr.c (expand_expr_real_1): Update call of get_exception_*.
3198         * function.h: Include varray.h
3199         (rtl_eh): New stucture based on except.c one.
3200         (call_site_record): New forward declaration and vector type.
3201         * calls.c (emit_call_1): Do not call
3202         note_current_region_may_contain_throw.
3203         * except.c (eh_status): Remove cur_region, try_region since they are
3204         unused.
3205         Move filter, exc_ptr, ttype_data, ehspec_data, action_record_data and
3206         exception_handler_label_map, ehr_stackadj, ehr_handler, ehr_label,
3207         sjlj_fc, sjlj_exit_after to rth_eh in function.h. 
3208         Remove call_site_data_used, call_site_data_size.
3209         Turn call_site_record into vector in function.h.
3210         (note_current_region_may_contain_throw): Remove.
3211         (get_exception_pointer, get_exception_filter): Do not take struct
3212         function argument; update.
3213         (add_ehl_entry, find_exception_handler_labels, ehspec_filter_hash,
3214         add_ttypes_entry, add_ehspec_entry, assign_filter_values,
3215         build_post_landing_pads, dw2_build_landing_pads,
3216         sjlj_assign_call_site_values, sjlj_mark_call_sites,
3217         sjlj_emit_function_enter, sjlj_emit_function_enter, 
3218         sjlj_emit_function_exit, sjlj_emit_dispatch_table,
3219         sjlj_build_landing_pads, finish_eh_generation,
3220         remove_exception_handler_label, remove_eh_handler,
3221         maybe_remove_eh_handler, add_reachable_handler,
3222         reachable_handlers, expand_builtin_eh_return, expand_eh_return,
3223         add_action_record, collect_one_action_chain, add_call_site,
3224         convert_to_eh_region_ranges, sjlj_size_of_call_site_table,
3225         sjlj_output_call_site_table, output_function_exception_table,
3226         * except.h (note_current_region_may_contain_throw): Remove
3227         (get_exception_pointer, get_exception_filter): Do not take struct
3228         function argument.
3229         * Makefile.in (GTFILES): Put varargs before struct function.
3230
3231 2008-04-15  Eric Botcazou  <ebotcazou@adacore.com>
3232
3233         * tree-ssa-structalias.c (get_constraint_for_component_ref): Do not
3234         punt for STRING_CST.
3235         (get_constraint_for): Deal with STRING_CST here instead.
3236
3237 2008-04-15  Richard Guenther  <rguenther@suse.de>
3238
3239         * tree-ssa-propagate.c (substitute_and_fold): Substitute
3240         statements in a basic-block with a backward walk.  Do not
3241         substitute into dead statements but instead remove those.
3242
3243 2008-04-15  Richard Guenther  <rguenther@suse.de>
3244
3245         * params.def (PARAM_MAX_FIELDS_FOR_FIELD_SENSITIVE): Set default
3246         to zero, thus disable creation of SFTs.
3247
3248 2008-04-15  Eric Botcazou  <ebotcazou@adacore.com>
3249
3250         * tree-predcom.c (suitable_reference_p): Return false if the
3251         reference can throw.
3252
3253 2008-04-15  Jakub Jelinek  <jakub@redhat.com>
3254
3255         PR c/35751
3256         * c-decl.c (finish_decl): If extern or static var has variable
3257         size, set TREE_TYPE (decl) to error_mark_node.
3258
3259 2008-04-15  Rafael Espindola  <espindola@google.com>
3260
3261         * fold-const.c (tree_call_nonnegative_warnv_p): Remove local
3262         variable arg1.
3263
3264 2008-04-15  Richard Guenther  <rguenther@suse.de>
3265
3266         * tree-ssa-sccvn.h (vn_reference_lookup): Adjust prototype.
3267         * tree-ssa-sccvn.c (vn_reference_lookup): New parameter maywalk.
3268         (visit_reference_op_load): Do walk vuse-vdef chains on
3269         vn_reference_lookup.
3270         (visit_reference_op_store): But do not here.
3271         * tree-vn.c (vn_lookup): Do not walk vuse-vdef chains on
3272         vn_reference_lookup.
3273         (vn_lookup_with_vuses): But do so here.
3274
3275 2008-04-14  Ian Lance Taylor  <iant@google.com>
3276
3277         * fold-const.c (fold_overflow_warning): Remove assertion.
3278
3279 2008-04-15  Ben Elliston  <bje@au.ibm.com>
3280
3281         * config/alpha/alpha.c (alpha_initialize_trampoline): Remove temp,
3282         temp1 local variables.
3283
3284 2008-04-15  Zuxy Meng  <zuxy.meng@gmail.com>
3285
3286         PR target/35661
3287         * config/i386/winnt.c (i386_pe_section_type_flags): Mark
3288         ".text.unlikely" section as executable.
3289
3290 2008-04-14  James E. Wilson  <wilson@tuliptree.org>
3291
3292         * config/ia64/ia64.c (rtx_needs_barrier): Handle
3293         UNSPEC_FR_SQRT_RECIP_APPROX_RES.
3294         * config/ia64/ia64.c (UNSPEC_FR_SQRT_RECIP_APPROX_RES): Define.
3295         (divsi3_internal, divdi3_internal_lat, divdi3_internal_thr,
3296         divsf3_internal_lat, sqrt_approx, sqrtsf2_internal_thr,
3297         divdf3_internal_lat, sqrtdf2_internal_thr, divxf3_internal_lat,
3298         divxf3_internal_thr, sqrtxf2_internal_thr, recip_approx): Use it.
3299
3300 2008-04-14  Ian Lance Taylor  <iant@google.com>
3301
3302         * flags.h (POINTER_TYPE_OVERFLOW_UNDEFINED): Define.
3303         * fold-const.c (fold_comparison): If appropriate, test
3304         POINTER_TYPE_OVERFLOW_UNDEFINED, and issue an overflow warning.
3305         (fold_binary): Test POINTER_TYPE_OVERFLOW_UNDEFINED when
3306         reassociating a pointer type.
3307         * doc/invoke.texi (Optimize Options): Document that
3308         -fstrict-overflow applies to pointer wraparound.
3309
3310 2008-04-13  Jan Hubicka  <jh@suse.cz>
3311
3312         * m32.c (m32c_pushm_popm): Use crtl->retrun_rtx.
3313
3314 2008-04-12  Andrew Pinski  <pinskia@gmail.com>
3315
3316         * config/rs6000/rs6000.c (compute_save_world_info): Set lr_save_p if
3317         we are going to "save the world".
3318
3319 2008-04-13  Hans-Peter Nilsson  <hp@axis.com>
3320
3321         * config/cris/cris.md ("*andhi_lowpart_non_v32", "*andhi_lowpart_v32")
3322         ("*andqi_lowpart_non_v32", "*andqi_lowpart_v32"): Use "+" for the
3323         operand 0 constraint, not "=".
3324
3325 2008-04-11  James E. Wilson  <wilson@tuliptree.org>
3326
3327         * system.h: Change ASSERT_CHECKING to ENABLE_ASSERT_CHECKING.
3328
3329 2008-04-11  H.J. Lu  <hongjiu.lu@intel.com>
3330
3331         * dse.c (record_store): Use HOST_BITS_PER_WIDE_INT instead
3332         of size of positions_needed * CHAR_BIT.
3333
3334 2008-04-11  H.J. Lu  <hongjiu.lu@intel.com>
3335
3336         PR middle-end/35897
3337         * dse.c (store_info): Change positions_needed to unsigned
3338         HOST_WIDE_INT.
3339         (lowpart_bitmask): New.
3340         (record_store): Cast to unsigned HOST_WIDE_INT for
3341         positions_needed.  Assert width <= size of positions_needed *
3342         CHAR_BIT.  Call lowpart_bitmask to initialize positions_needed.
3343         (check_mem_read_rtx): Use unsigned HOST_WIDE_INT on mask.  Call
3344         lowpart_bitmask to set mask.
3345
3346 2008-04-11  Bernd Schmidt  <bernd.schmidt@analog.com>
3347
3348         * config/bfin/constraints.md: New file.
3349         * config/bfin/bfin.md: Include it.
3350         (adddi3): Use satisfies_constraint functions instead of the old macros.
3351         * config/bfin/bfin.h (REG_CLASS_FROM_LETTER, CONSTRAINT_LEN,
3352         CONST_18UBIT_IMM_P, CONST_16BIT_IMM_P, CONST_16UBIT_IMM_P,
3353         CONST_7BIT_IMM_P, CONST_7NBIT_IMM_P, CONST_5UBIT_IMM_P,
3354         CONST_4BIT_IMM_P, CONST_4UBIT_IMM_P, CONST_3BIT_IMM_P,
3355         CONST_3UBIT_IMM_P, CONST_OK_FOR_K, CONST_OK_FOR_P, CONST_OK_FOR_M,
3356         CONST_OK_FOR_CONSTRAINT_P, CONST_DOUBLE_OK_FOR_LETTER,
3357         EXTRA_CONSTRAINT): Delete.
3358         * config/bfin/predicates.md (highbits_operand, reg_or_7bit_operand,
3359         reg_or_neg7bit_operand): Use satisfies_constraint functions instead
3360         of the old macros.
3361         * config/bfin/bfin.c: Include "tm-constrs.h".
3362         (bfin_secondary_reload, split_load_immediate, bfin_rtx_costs):
3363         Use satisfies_constraint functions instead of the old macros.
3364         * doc/md.texi (Blackfin Constraints): Update file name reference.
3365
3366 2008-04-11  Richard Guenther  <rguenther@suse.de>
3367
3368         PR tree-optimization/35869
3369         * tree-vrp.c (execute_vrp): Move switch statement update after
3370         jump threading.  Schedule another cfg cleanup run.
3371
3372 2008-04-11  Volker Reichelt  <v.reichelt@netcologne.de>
3373
3374         PR c/35744
3375