OSDN Git Service

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