OSDN Git Service

* config/i386/i386.md (*strmovsi_1): Simplify asm alternatives.
[pf3gnuchains/gcc-fork.git] / gcc / ChangeLog
1 2008-05-04  Uros Bizjak  <ubizjak@gmail.com>
2
3         * config/i386/i386.md (*strmovsi_1): Simplify asm alternatives.
4         (*strmovsi_rex_1): Ditto.
5         (*strsetsi_1): Ditto.
6         (*strsetsi_rex_1): Ditto.
7
8         (add<mode>cc): Macroize expander from addqicc, addhicc, addsicc and
9         adddicc expanders using SWI mode iterator.
10
11 2008-05-04  H.J. Lu  <hongjiu.lu@intel.com>
12
13         PR target/36121
14         * config/i386/i386.c (ix86_expand_special_args_builtin): Remove three
15         argument handling.
16
17 2008-05-04  David S. Miller  <davem@davemloft.net>
18
19         * config.gcc (sparc*-*-*): Always set need_64bit_hwint to yes.
20         (sparc*-*-linux*): Use linux.h in tm_file.
21         (sparc-*-linux*): If 'enabled_targets' is 'all', build a bi-arch
22         compiler defaulting to 32-bit.
23         (sparc*-*-*): Remove explicit target settings of need_64bit_hwint,
24         no longer needed.
25         * config/sparc/linux.h: Remove definitions now obtained
26         properly from linux.h
27         * config/sparc/linux64.h: Likewise.
28         (ASM_CPU_DEFAULT_SPEC): Change this to ASM_CPU64_DEFAULT_SPEC, we
29         don't want this setting for 32-bit builds in a biarch compiler.
30         * doc/install.texi: Add sparc-linux to list of targets
31         supporting --enable-targets=all.
32
33 2008-05-03  Andrew Pinski  <pinskia@gmail.com>
34
35         * Makefile.in (tree-ssa-phiprop.o): Fix dependencies.
36
37 2008-05-03  H.J. Lu  <hongjiu.lu@intel.com>
38
39         * config/i386/i386.c (ix86_builtin_type): Move V4SI_FTYPE_V4SF
40         after V4SI_FTYPE_V8HI.
41         (ix86_init_mmx_sse_builtins): Move case V4HI_FTYPE_V4HI after
42         case V4SI_FTYPE_V2DF.
43
44 2008-05-03  Kenneth Zadeck <zadeck@naturalbridge.com>
45
46         * doc/invoke.texi (max-flow-memory-locations): Removed.
47         * params.def (PARAM_MAX_FLOW_MEMORY_LOCATIONS): Removed.
48         
49 2008-05-03  Richard Guenther  <rguenther@suse.de>
50
51         PR middle-end/34973
52         * opts.c (set_Wstrict_aliasing): Handle the turn-off case.
53
54 2008-05-02  David S. Miller  <davem@davemloft.net>
55
56         * config.gcc (need_64bit_hwint): Document libcpp dependency.
57
58 2008-05-02  Simon Baldwin <simonb@google.com>
59
60         PR bootstrap/36108
61         * c-common.h (warn_array_subscript_range): Removed.
62         * c-common.c (warn_array_subscript_range): Ditto.
63         * tree-vrp.c (check_array_ref): Revert to ignoring arrays with size 2.
64         * c-typeck.c (build_array_ref): Remove warn_array_subscript_range.
65
66 2008-05-02  H.J. Lu  <hongjiu.lu@intel.com>
67
68         * config/i386/i386.c (ix86_special_builtin_type): New.
69         (bdesc_special_args): Likewise.
70         (ix86_expand_special_args_builtin): Likewise.
71         (ix86_init_mmx_sse_builtins): Updated.
72         (ix86_expand_builtin): Updated.
73         (ix86_expand_store_builtin): Removed.
74         (ix86_expand_unop_builtin): Likewise.
75
76         * config/i386/mm3dnow.h (__v2sf): Moved to ...
77         * config/i386/mmintrin.h (__v2sf): Here.
78
79         * config/i386/xmmintrin.h (_mm_loadh_pi): Replace __v2si with
80         const __v2sf.
81         (_mm_loadl_pi): Likewise.
82         (_mm_storeh_pi): Replace __v2si with __v2sf.
83         (_mm_storel_pi): Likewise.
84
85         * doc/extend.texi: Correct __builtin_ia32_loadhps,
86         __builtin_ia32_loadlps, __builtin_ia32_storehps,
87         __builtin_ia32_storelps, __builtin_ia32_loadhpd and
88         __builtin_ia32_loadlpd.
89
90 2008-05-02  H.J. Lu  <hongjiu.lu@intel.com>
91
92         * config/i386/i386.c (ix86_builtin_type): Add FLOAT_FTYPE_FLOAT,
93         V4SF_FTYPE_V4SF_VEC_MERGE and V2DF_FTYPE_V2DF_VEC_MERGE.
94         (bdesc_args): Updated.  Add scalar SSE builtins with vec_merge.
95         (ix86_init_mmx_sse_builtins): Updated.
96         (ix86_expand_args_builtin): Likewise.
97         (ix86_expand_builtin): Likewise.
98         (ix86_expand_unop1_builtin): Renamed to ...
99         (ix86_expand_unop_vec_merge_builtin): This.
100
101 2008-05-01  Jan Hubicka  <jh@suse.cz>
102
103         PR bootstrap/36100
104         * ipa-inline.c (inline_generate_summary): Make static.
105         (inline_transform): Do not call inlining at -O0; make static.
106         * passes.c (execute_todo): Add sanity check.
107         (execute_one_ipa_transform_pass): Execute proper flags.
108
109 2008-05-01  Eric Botcazou  <ebotcazou@adacore.com>
110
111         * tree.h (TYPE_NONALIASED_COMPONENT): Expand comment.
112         (DECL_NONADDRESSABLE_P): Likewise.
113         * alias.c (record_component_aliases): Fix comment.
114
115 2008-05-01  Simon Baldwin <simonb@google.com>
116
117         * c-common.h (warn_array_subscript_range): New function.
118         * c-common.c (warn_array_subscript_range): Ditto.
119         * tree-vrp.c (check_array_ref): Corrected code to agree with
120         comment, ignoring only arrays of size 0 or size 1.
121         * c-typeck.c (build_array_ref): Call warn_array_subscript_range.
122
123 2008-05-01  H.J. Lu  <hongjiu.lu@intel.com>
124
125         * config/i386/i386.c (ix86_builtin_type): Replace
126         DI_FTYPE_DI_DI_INT with V1DI2DI_FTYPE_V1DI_V1DI_INT.
127         (bdesc_args): Updated.
128         (ix86_init_mmx_sse_builtins): Likewise.
129         (ix86_expand_args_builtin): Likewise.
130
131         * config/i386/tmmintrin.h (_mm_alignr_pi8): Replace long long
132         with __v1di.
133
134         * doc/extend.texi: Correct __builtin_ia32_palignr.
135
136 2008-05-01  H.J. Lu  <hongjiu.lu@intel.com>
137
138         PR target/36095
139         * config/i386/i386.c (bdesc_crc32): Removed.
140         (ix86_expand_crc32): Likewise.
141         (ix86_builtin_type): Replace V2DI2TI_FTYPE_V2DI2TI_INT with
142         V2DI2TI_FTYPE_V2DI_INT, V2DI2TI_FTYPE_V2DI2TI_V2DI2TI_INT with
143         V2DI2TI_FTYPE_V2DI_V2DI_INT.  Add UINT64_FTYPE_UINT64_UINT64,
144         UINT_FTYPE_UINT_UINT, UINT_FTYPE_UINT_USHORT and
145         UINT_FTYPE_UINT_UCHAR.
146         (bdesc_args): Updated. Add crc32 builtins.
147         (ix86_init_mmx_sse_builtins): Updated.
148         (ix86_expand_args_builtin): Updated to support subreg.
149
150         * doc/extend.texi: Correct __builtin_ia32_crc32di.
151
152 2008-05-01  Jan Hubicka  <jh@suse.cz>
153
154         * tree-pass.h (opt_pass): Add IPA_PASS.
155         (varpool_node, cgraph_node): Forward declare.
156         (ipa_opt_pass): Define.
157         (pass_ipa_inline): Turn into ipa_opt_pass.
158         (pass_apply_inline): Remove.
159         * ipa-inline.c (pass_ipa_inline): Turn into ipa_opt_pass.
160         (apply_inline): Turn into ....
161         (inline_transform): ... this one.
162         (inline_generate_summary): New function.
163         (pass_apply_inline): Remove.
164         * function.h (ipa_opt_pass): Forward declare structure; typedef;
165         vector.
166         (struct function): Add ipa_transforms_to_apply.
167         * passes.c (register_one_dump_file): Work on IPA_PASS.
168         (init_optimization_passes): Remove pass_inline_parameters and
169         pass_apply_inline.
170         (pass_init_dump_file, pass_fini_dump_file): Break out from ....
171         (execute_one_pass) ... here; apply transforms when possible.
172         (add_ipa_transform_pass, execute_ipa_summary_asses,
173         execute_one_ipa_transform_pass): New.
174         (execute_ipa_pass_list): Update for IPA_PASS type.
175
176 2008-05-01  H.J. Lu  <hongjiu.lu@intel.com>
177
178         * config/i386/i386.c (ix86_builtin_type): Add
179         V2DI_FTYPE_V2DI_V16QI, V2DI_FTYPE_V2DI_UINT_UINT and
180         V2DI_FTYPE_V2DI_V2DI_UINT_UINT.
181         (bdesc_args): Add SSE4a builtins.
182         (ix86_init_mmx_sse_builtins): Updated.
183         (ix86_expand_args_builtin): Likewise.
184         (ix86_expand_builtin): Likewise.
185
186 2008-05-01  H.J. Lu  <hongjiu.lu@intel.com>
187
188         * config/i386/i386.c (ix86_builtin_type): Add
189         V8HI_FTYPE_V8HI_V8HI_COUNT, V8HI_FTYPE_V8HI_SI_COUNT,
190         V4SI_FTYPE_V4SI_V4SI_COUNT, V4SI_FTYPE_V4SI_SI_COUNT,
191         V4HI_FTYPE_V4HI_V4HI_COUNT, V4HI_FTYPE_V4HI_SI_COUNT,
192         V2DI_FTYPE_V2DI_V2DI_COUNT, V2DI_FTYPE_V2DI_SI_COUNT,
193         V2SI_FTYPE_V2SI_V2SI_COUNT, V2SI_FTYPE_V2SI_SI_COUNT,
194         V1DI_FTYPE_V1DI_V1DI_COUNT, V1DI_FTYPE_V1DI_SI_COUNT,
195         V8HI_FTYPE_V8HI_INT, V4SI_FTYPE_V4SI_INT, V4HI_FTYPE_V4HI_INT,
196         V2DI2TI_FTYPE_V2DI2TI_INT, V2DI2TI_FTYPE_V2DI2TI_V2DI2TI_INT
197         and DI_FTYPE_DI_DI_INT.
198         (bdesc_args): Add MMX/SSE shift, shuffle and palignr builtins.
199         (ix86_init_mmx_sse_builtins): Updated.
200         (ix86_expand_args_builtin): Likewise.
201         (ix86_expand_builtin): Likewise.
202         (ix86_expand_binop_imm_builtin): Removed.
203
204         * doc/extend.texi: Correct __builtin_ia32_palignr128.
205
206 2008-04-30  Richard Guenther  <rguenther@suse.de>
207
208         PR tree-optimization/32921
209         * tree-ssa-loop-im.c (mem_refs_may_alias_p): Disambiguate with TBAA.
210
211 2008-04-30  Richard Sandiford  <rsandifo@nildram.co.uk>
212
213         * config/arm/arm.c (arm_unwind_emit): Use
214         crtl->all_throwers_are_sibcalls instead of
215         cfun->all_throwers_are_sibcalls.
216         (arm_output_fn_unwind): Likewise.
217         * config/frv/frv.c (frv_stack_info): Use crtl->uses_pic_offset_table
218         instead of cfun->uses_pic_offset_table.
219         (frv_expand_prologue): Likewise.
220         (frv_frame_pointer_required): Likewise.
221         (frv_expand_fdpic_call): Likewise.
222         (frv_emit_movsi): Likewise.
223         * config/iq2000/iq2000.c (iq2000_expand_prologue): Use
224         cfun->returns_pcc_struct instead of
225         current_function_returns_pcc_struct.
226         * config/m32c/m32c.c (need_to_save): Use crtl->calls_eh_return
227         instead of cfun->calls_eh_return.
228         (m32c_pushm_popm): Likewise.
229         * config/xtensa/xtensa.h (cfun->calls_alloca): Remove bogus
230         "extern" declaration.
231
232 2008-04-30  Richard Guenther  <rguenther@suse.de>
233
234         PR tree-optimization/21636
235         * tree-ssa-ccp.c (ccp_fold): Handle &p->x with p being a
236         constant address.
237         (evaluate_stmt): Print the likely value.
238         (ccp_visit_stmt): Avoid excessive vertical spacing.
239
240 2008-04-30  Rafael Espindola  <espindola@google.com>
241
242         * builtins.c (fold_call_expr): Return realret.
243         * tree-ssa-threadedge.c
244         (record_temporary_equivalences_from_stmts_at_dest): Ignore calls to
245         __builtin_object_size.
246
247 2008-04-30  Seongbae Park  <seongbae.park@gmail.com>
248
249         * gcc.c (wrapper_string): New variable.
250         (insert_wrapper): New function.
251         (execute): New option -wrapper.
252         * doc/invoke.texi (Overall Options): New driver option -wrapper.
253
254 2008-04-30  Nathan Froyd  <froydnj@codesourcery.com>
255
256         * config/rs6000/crtresgpr.asm, config/rs6000/crtresxgpr.asm,
257         config/rs6000/crtsavgpr.asm, config/rs6000/crtresfpr.asm,
258         config/rs6000/crtresxfpr.asm, config/rs6000/crtsavfpr.asm: Break out
259         from...
260         * config/rs6000/crtsavres.asm: ...here.  Remove unneeded file.
261         * config/rs6000/e500crtres32gpr.asm, config/rs6000/e500crtres64gpr.asm,
262         config/rs6000/e500crtres64gprctr.asm,
263         config/rs6000/e500crtrest32gpr.asm, config/rs6000/e500crtrest64gpr.asm,
264         config/rs6000/e500crtresx32gpr.asm, config/rs6000/e500crtresx64gpr.asm,
265         config/rs6000/e500crtsav32gpr.asm, config/rs6000/e500crtsav64gpr.asm,
266         config/rs6000/e500crtsav64gprctr.asm,
267         config/rs6000/e500crtsavg32gpr.asm, config/rs6000/e500crtsavg64gpr.asm,
268         config/rs6000/e500crtsavg64gprctr.asm: New files.
269         * config/rs6000/t-ppccomm: Add build rules for new files.
270         (LIB2FUNCS_STATIC_EXTRA): Add new files.
271         * config/rs6000/t-netbsd: Add build rules for new files.
272         (LIB2FUNCS_STATIC_EXTRA): New variable.
273         * config/rs6000/sysv4.h (ENDFILE_SPEC): Don't include crtsavres.o
274         (CRTSAVRES_DEFAULT_SPEC): Likewise.
275         * config/rs6000/netbsd.h (ENDFILE_SPEC): Likewise.
276
277 2008-04-30  H.J. Lu  <hongjiu.lu@intel.com>
278
279         * config/i386/i386.c (ix86_builtin_type): Add
280         FLOAT128_FTYPE_FLOAT128_FLOAT128, V16QI_FTYPE_V16QI_V16QI,
281         V16QI_FTYPE_V8HI_V8HI, V8QI_FTYPE_V8QI_V8QI,
282         V8QI_FTYPE_V4HI_V4HI, V8HI_FTYPE_V8HI_V8HI,
283         V8HI_FTYPE_V16QI_V16QI, V8HI_FTYPE_V4SI_V4SI,
284         V4SI_FTYPE_V4SI_V4SI, V4SI_FTYPE_V8HI_V8HI,
285         V4SI_FTYPE_V4SF_V4SF, V4SI_FTYPE_V2DF_V2DF,
286         V4HI_FTYPE_V4HI_V4HI, V4HI_FTYPE_V8QI_V8QI,
287         V4HI_FTYPE_V2SI_V2SI, V4SF_FTYPE_V4SF_V4SF,
288         V4SF_FTYPE_V4SF_V4SF_SWAP, V4SF_FTYPE_V4SF_V2SI,
289         V4SF_FTYPE_V4SF_V2DF, V4SF_FTYPE_V4SF_DI,
290         V4SF_FTYPE_V4SF_SI, V2DI_FTYPE_V2DI_V2DI,
291         V2DI_FTYPE_V16QI_V16QI, V2DI_FTYPE_V4SI_V4SI,
292         V2DI_FTYPE_V2DF_V2DF, V2SI_FTYPE_V2SI_V2SI,
293         V2SI_FTYPE_V4HI_V4HI, V2SI_FTYPE_V2SF_V2SF,
294         V2DF_FTYPE_V2DF_V2DF, V2DF_FTYPE_V2DF_V2DF_SWAP,
295         V2DF_FTYPE_V2DF_V4SF, V2DF_FTYPE_V2DF_DI,
296         V2DF_FTYPE_V2DF_SI, V2SF_FTYPE_V2SF_V2SF,
297         V1DI_FTYPE_V1DI_V1DI, V1DI_FTYPE_V8QI_V8QI and
298         V1DI_FTYPE_V2SI_V2SI.
299         (bdesc_2arg): Moved to ...
300         (bdesc_args): Here.
301         (ix86_init_mmx_sse_builtins): Updated.
302         (ix86_expand_args_builtin): Updated.  Take a pointer
303         to const struct builtin_description.  Handle comparison
304         builtin functions.
305         (ix86_expand_sse_compare): Take a new argument for swapping operands.
306         (ix86_expand_builtin): Updated.
307
308         * config/i386/sse.md (ssse3_pmaddubswv8hi3): Renamed to ...
309         (ssse3_pmaddubsw128): This.
310         (ssse3_pmaddubswv4hi3): Renamed to ...
311         (ssse3_pmaddubsw): This.
312
313         * doc/extend.texi (__builtin_ia32_packsswb128): Correct prototype.
314         (__builtin_ia32_packssdw128): Likewise.
315         (__builtin_ia32_packuswb128): Likewise.
316         (__builtin_ia32_pmaddubsw): Likewise.
317         (__builtin_ia32_pmaddubsw128): Likewise.
318
319 2008-04-30  Richard Guenther  <rguenther@suse.de>
320
321         PR tree-optimization/14847
322         * tree-ssa-ifcombine.c (get_name_for_bit_test): New helper function.
323         (recognize_bits_test): Use it.
324         (recognize_single_bit_test): Likewise.
325
326 2008-04-30  Martin Jambor  <mjambor@suse.cz>
327
328         * ipa-cp.c (ipcp_init_stage): Calls ipa_set_called_with_variable_arg
329         instead of setting number of formal parameters to zero.
330         (ipcp_init_stage): Do not set the number of actual parameters to zero 
331         either.
332         (ipcp_propagate_stage): Explicitly skipping all calls to nodes
333         which are called with variable number of arguments.
334         (ipcp_insert_stage): Explicitely skipping all nodes which are
335         called with variable number of arguments.
336         (ipcp_callsite_param_print): Skipps callsites to nodes with varaible 
337         number of parameters.
338
339         * ipa-prop.h (struct ipa_node_params): Added flag
340         called_with_var_arguments
341         (ipa_set_param_count): Added.  Changed sole setter to use it.
342         (ipa_get_param_count): Added.  All readers of param_count
343         converted to use it instead.
344         (ipa_set_called_with_variable_arg): Added.
345         (ipa_is_called_with_var_arguments): Added.
346         (ipa_get_ith_param): Added.  All readers of param_decls converted
347         to use it instead.
348         (ipa_set_cs_argument_count): Added, sole writer to argument_count 
349         changed to use it. 
350         (ipa_get_cs_argument_count): Added, all readers of argument_count
351         changed to cal it.
352         (ipa_get_ith_jump_func): Added. Accessors of jump values changed 
353         to use it.
354         
355         * ipa-prop.h (struct ipcp_formal): Renamed to ipcp_lattice
356         (struct ipcp_lattice): Renamed cval_type to type
357         (struct ipa_node_params): ipcp_cval renamed to ipcp_lattices
358
359         * ipa-cp.c (ipcp_cval_get_cvalue): Changed return value to tree
360         (ipcp_cval_set_cvalue): Changed type of parameter value to tree
361         (ipcp_insert_stage): Changed the type of variable cvalue to tree
362         (ipcp_replace_map_create): Changed the type of parameter cvalue to tree
363         (build_const_val): Changed the type of parameter cvalue to tree
364         (ipcp_propagate_const): Changed the type of parameter cvalue to tree
365         (ipcp_method_cval_set_cvalue_type): Renamed parameter cval_type1 to type
366         
367         * ipa-prop.h (struct ipcp_formal): Replaced cvalue with tree called 
368         constant 
369
370         * ipa-prop.c (ipa_methodlist_init): Renamed to ipa_init_func_list
371         (ipa_methodlist_not_empty): Removed, the sole user now checks directly
372         (ipa_add_method): Renamed to ipa_push_func_to_list
373         (ipa_remove_method): Renamed to ipa_pop_func_from_list
374         (ipa_callsite_param_count): Removed.
375         (ipa_callsite_param_count_set): Removed.
376         (ipa_callsite_param): Removed.
377         (ipa_callsite_callee): Removed.
378         (ipa_callsite_compute_param): Renamed to ipa_compute_jump_functions
379         (ipa_callsite_compute_count): Renamed to ipa_count_arguments
380         (ipa_method_formal_count): Removed.
381         (ipa_method_formal_count_set): Removed.
382         (ipa_method_get_tree): Removed.
383         (ipa_method_tree_map_create): Removed.
384         (ipa_method_compute_tree_map): Renamed to ipa_create_param_decls_array
385         (ipa_create_param_decls_array): Creates the array itself
386         (ipa_create_param_decls_array): Temporary variable info instead of 
387         a few dereferences.
388         (ipa_method_formal_compute_count): Renamed to ipa_count_formal_params
389         (ipa_method_compute_modify): Renamed to ipa_detect_param_modifications
390         (get_type): Removed.
391         (ipa_jf_get_info_type): Removed.
392         (ipa_node_create): Renamed to ipa_create_node_params
393         (ipa_free): Renamed to ipa_free_all_node_params
394         (ipa_nodes_create): Renamed to ipa_create_all_node_params
395         (ipa_edges_create): Renamed to ipa_create_all_edge_args
396         (ipa_edges_free): Renamed to ipa_free_all_edge_args
397         (ipa_nodes_free): Integrated into ipa_free_all_node_params and removed
398         (ipa_free_all_node_params): Deallocation to jump_functions moved to 
399         ipa_free_all_edge_args
400         (ipa_method_tree_print): Renamed to ipa_print_all_tree_maps
401         (ipa_method_modify_print): Renamed to ipa_print_all_params_modified
402         (ipa_create_methodlist_node): Removed.
403         (ipa_methodlist_method): Removed.
404         (ipa_methodlist_method_set): Removed.
405         (ipa_methodlist_next_method): Removed.
406         (ipa_methodlist_next_method_set): Removed.
407         (ipa_method_is_modified): Removed.
408         (ipa_method_modify_create): Removed.
409         (ipa_method_modify_init): Temporary variable info instead of a few 
410         dereferences.
411         (ipa_detect_param_modifications): Temporary variable info instead of 
412         a few dereferences.
413         (ipa_compute_jump_functions): Temporary variable info instead of 
414         a few dereferences.
415         (ipa_method_modify_set): Removed.
416         (ipa_method_tree_map): Renamed to ipa_get_param_decl_index
417         (ipa_get_param_decl_index): Now accepts struct ipa_node_params rather 
418         than craph_node as the first parameter.
419         (ipa_method_modify_stmt): Renamed to ipa_check_stmt_modifications
420         (ipa_method_modify_init): Removed.
421         (ipa_compute_jump_functions): Added a temp variable instead of 
422         repeatadly dereferencing the cgraph_edge.aux pointer
423         (ipa_callsite_param_set_type): Removed.
424         (ipa_compute_jump_functions): i renamed to index and moved to 
425         an inner block
426         (ipa_callsite_param_set_info_type_formal): Removed.
427         (ipa_callsite_param_set_info_type): Removed.
428         (ipa_callsite_param_map_create): Removed.
429         (ipa_callsite_tree): Removed.
430         (ipa_callsite_caller): Removed.
431         (ipa_pop_func_from_list): return_method removed to return_func
432
433         * ipa-prop.h (enum cvalue_type): Renamed to ipa_lattice_type,
434         prefixed all values with IPA_. Changed all users.
435         (enum jump_func_type): Rnamed UNKNOWN_IPATYPE to IPA_UNKNOWN, 
436         CONST_IPATYPE to IPA_CONST, CONST_IPATYPE_REF to IPA_CONST_REF 
437         and FORMAL_IPATYPE IPA_PASS_THROUGH. 
438         (union parameter_info): Renamed to jump_func_value.
439         (union jump_func_value): Renamed value to constant
440         (struct ipa_jump_func): Renamed info_type to value
441         (struct ipa_node): Renamed to ipa_node_params
442         (struct ipa_node_params): Renamed ipa_arg_num to param_count
443         (struct ipa_node_params): Renamed ipa_param_tree to param_decls
444         (struct ipa_node_params): Renamed ipa_mod to modified_flags
445         (struct ipa_edge): Renamed to ipa_edge_args
446         (struct ipa_edge_args): Renamed ipa_param_num to argument_count
447         (struct ipa_edge_args): Renamed ipa_param_map to jump_functions
448         (struct ipa_methodlist): Renamed to ipa_func_list
449         (struct ipa_func_list): method_p renamed to node, next_method
450         renamed to next
451         (ipa_methodlist_p): Removed, switched all users to struct pointer
452         (IS_VALID_TREE_MAP_INDEX): Renamed to IS_VALID_JUMP_FUNC_INDEX
453
454 2008-04-30  Alan Modra  <amodra@bigpond.net.au>
455
456         * config/rs6000/rs6000.c (ALWAYS_RESTORE_ALTIVEC_BEFORE_POP): Define.
457         (rs6000_emit_epilogue): Use backchain to restore only when we
458         have a large frame.  Make use of frame pointer to restore if we
459         have one.  Handle ALWAYS_RESTORE_ALTIVEC_BEFORE_POP.
460
461 2008-04-29  Paolo Bonzini  <bonzini@gnu.org>
462
463         * config/avr/avr.md (*sbrx_branch, *sbix_branch, *sbix_branch_tmp):
464         Add mode to zero_extract.
465         (sign bit tests peepholes): (Ditto.).
466
467 2008-04-29  H.J. Lu  <hongjiu.lu@intel.com>
468
469         * config/i386/i386.c (ix86_builtins): Replace Prescott New
470         Instructions in comments with SSE3.
471         (ix86_builtin_type): This.  Add FLOAT128_FTYPE_FLOAT128,
472         INT64_FTYPE_V4SF, INT64_FTYPE_V2DF, INT_FTYPE_V16QI,
473         INT_FTYPE_V8QI, INT_FTYPE_V4SF, INT_FTYPE_V2DF,
474         V16QI_FTYPE_V16QI, V8HI_FTYPE_V8HI, V8HI_FTYPE_V16QI,
475         V8QI_FTYPE_V8QI, V4SI_FTYPE_V4SI, V4SI_FTYPE_V16QI,
476         V4SI_FTYPE_V4SF, V4SI_FTYPE_V8HI, V4SI_FTYPE_V2DF,
477         V4HI_FTYPE_V4HI, V4SF_FTYPE_V4SF, V4SF_FTYPE_V4SI,
478         V4SF_FTYPE_V2DF, V2DI_FTYPE_V2DI, V2DI_FTYPE_V16QI,
479         V2DI_FTYPE_V8HI, V2DI_FTYPE_V4SI, V2DF_FTYPE_V2DF,
480         V2DF_FTYPE_V4SI, V2DF_FTYPE_V4SF, V2DF_FTYPE_V2SI,
481         V2SI_FTYPE_V2SI, V2SI_FTYPE_V4SF, V2SI_FTYPE_V2SF,
482         V2SI_FTYPE_V2DF, V2SF_FTYPE_V2SF and V2SF_FTYPE_V2SI.
483         (bdesc_sse_args): Renamed to ...
484         (bdesc_args): This.  Add IX86_BUILTIN_PF2ID, IX86_BUILTIN_PFRCP,
485         IX86_BUILTIN_PFRSQRT, IX86_BUILTIN_PI2FD, IX86_BUILTIN_PF2IW,
486         IX86_BUILTIN_PSWAPDSI, IX86_BUILTIN_PSWAPDSF and
487         IX86_BUILTIN_FABSQ.
488         (bdesc_1arg): Moved to ...
489         (bdesc_args): Here.
490         (ix86_init_mmx_sse_builtins): Updated.  Replace Prescott New
491         Instructions in comments with SSE3.
492         (ix86_expand_sse_operands_builtin): Renamed to ...
493         (ix86_expand_args_builtin): This.  Updated.
494         (ix86_expand_unop1_builtin): Update comments.
495         (ix86_expand_builtin): Updated.
496
497 2008-04-29  Richard Guenther  <rguenther@suse.de>
498
499         PR tree-optimization/36078
500         * tree-ssa-loop-ivcanon.c (tree_unroll_loops_completely):
501         Update virtual SSA form after cleaning up the CFG.
502
503 2008-04-29  Richard Guenther  <rguenther@suse.de>
504
505         PR middle-end/15255
506         * fold-const.c (fold_binary): Fold (A + A) * C to A * 2*C.
507
508 2008-04-29  Richard Guenther  <rguenther@suse.de>
509
510         * tree-ssa-alias.c (finalize_ref_all_pointers): Remove.
511         (compute_may_aliases): Do not call finalize_ref_all_pointers.
512         (compute_flow_insensitive_aliasing): Do not treat
513         PTR_IS_REF_ALL pointers special.
514         (get_smt_for): Likewise.
515         (may_alias_p): Re-structure.
516         (is_escape_site): A ref-all pointer conversion is not an escape site.
517         * tree-ssa-structalias.c (find_what_p_points_to): Do not treat
518         PTR_IS_REF_ALL pointers special.
519         * tree-ssa-structalias.h (struct alias_info): Remove
520         ref_all_symbol_mem_tag field.
521         (PTR_IS_REF_ALL): Remove.
522
523 2008-04-29  Richard Guenther  <rguenther@suse.de>
524
525         PR middle-end/36077
526         * fold-const.c (extract_muldiv_1): In combining division constants
527         make sure to never overflow.
528
529 2008-04-29  Nick Clifton  <nickc@redhat.com>
530
531         * doc/tm.texi (RETURN_ADDR_RTX): Fix typo.
532
533 2008-04-28  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
534
535         PR bootstrap/35169
536         * optc-gen.awk: Work around HP-UX/IA awk bug.
537
538 2008-04-28  Danny Smith  <dannysmith@users.sourceforge.net>
539
540         * config/i386/cygming-crtend.c (register_frame_ctor): Revert my
541         2008-04-25 commit.
542
543 2008-04-28  Uros Bizjak  <ubizjak@gmail.com>
544
545         PR target/36073
546         * config/i386/i386.md
547         (*float<SSEMODEI24:mode><MODEF:mode>2_mixed_interunit):
548         Change operand 1 predicate to nonimmediate_operand.
549
550 2008-04-28  Jakub Jelinek  <jakub@redhat.com>
551
552         PR debug/36060
553         * dwarf2out.c (struct die_struct): Mark as chain_circular through
554         die_sub field.
555         * gengtype.c (walk_type, write_func_for_structure): Handle
556         chain_circular.
557         * doc/gty.texi: Document chain_circular.
558
559 2008-04-28  Richard Guenther  <rguenther@suse.de>
560
561         PR tree-optimization/36066
562         * tree-vrp.c (execute_vrp): Cleanup the CFG only after finalizing
563         SCEV and loop.
564
565 2008-04-28  Uros Bizjak  <ubizjak@gmail.com>
566
567         PR target/36064
568         * config/i386/i386.md
569         (floatdi<X87MODEF:mode>2_i387_with_xmm splitters):
570         Use match_scratch instead of match_operand for operands 3 and 4.
571
572 2008-04-27  Richard Guenther  <rguenther@suse.de>
573
574         PR tree-optimization/18754
575         PR tree-optimization/34223
576         * tree-pass.h (pass_complete_unrolli): Declare.
577         * tree-ssa-loop-ivcanon.c (try_unroll_loop_completely): Print
578         loop size before and after unconditionally of UL_NO_GROWTH in effect.
579         Rewrite loop into loop closed SSA form if it is not already.
580         (tree_unroll_loops_completely): Re-structure to iterate over
581         innermost loops with intermediate CFG cleanups.
582         Unroll outermost loops only if requested or the code does not grow
583         doing so.
584         * tree-ssa-loop.c (gate_tree_vectorize): Don't shortcut if no
585         loops are available.
586         (tree_vectorize): Instead do so here.
587         (tree_complete_unroll): Also unroll outermost loops.
588         (tree_complete_unroll_inner): New function.
589         (gate_tree_complete_unroll_inner): Likewise.
590         (pass_complete_unrolli): New pass.
591         * tree-ssa-loop-manip.c (find_uses_to_rename_use): Only record
592         uses outside of the loop.
593         (tree_duplicate_loop_to_header_edge): Only verify loop-closed SSA
594         form if it is available.  
595         * tree-flow.h (tree_unroll_loops_completely): Add extra parameter.
596         * passes.c (init_optimization_passes): Schedule complete inner
597         loop unrolling pass before the first CCP pass after final inlining.
598
599 2008-04-27  Nathan Sidwell  <nathan@codesourcery.com>
600
601         * targhooks.h (default_emutls_var_fields,
602         default_emutls_var_init): Declare.
603         * tree.h (DECL_THREAD_LOCAL): Compare against TLS_MODEL_REAL.
604         * target.h (struct gcc_target): Add struct emutls member.
605         * target-def.h (TARGET_EMUTLS_GET_ADDRESS,
606         TARGET_EMUTLS_REGISTER_COMMON, TARGET_EMUTLS_VAR_SECTION,
607         TARGET_EMUTLS_TMPL_SECTION, TARGET_EMUTLS_VAR_PREFIX,
608         TARGET_EMUTLS_TMPL_PREFIX, TARGET_EMUTLS_VAR_FIELDS,
609         TARGET_EMUTLS_VAR_INIT, TARGET_EMUTLS_DEBUG_FORM_TLS_ADDRESS,
610         TARGET_EMUTLS_VAR_ALIGN_FIXED, TARGET_EMUTLS): New.
611         (TARGET_INITIALIZER): Add TARGET_EMUTLS.
612         * builtins.def (BUILT_IN_EMUTLS_GET_ADDRESS,
613         BUILT_IN_EMUTLS_REGISTER_COMMON): Get name from targetm structure.
614         * dwarf2out.c (loc_descriptor_from_tree_1): Check if emutls can
615         emit debug information.
616         * coretypes.h (tls_model): Add TLS_MODEL_EMULATED, TLS_MODEL_REAL.
617         * varasm.c: Include targhooks.h.
618         (emutls_object_section, emutls_tmpl_section): New.
619         (EMUTLS_VAR_PREFIX, EMUTLS_TMPL_PREFIX): Remove.
620         (EMUTLS_SEPARATOR): New.
621         (prefix_name): New.
622         (get_emutls_object_name): New.
623         (default_emutls_var_fields): New, broken out of ...
624         (get_emutls_object_type): ... here.  Adjust to use target hooks.
625         (get_emutls_init_templ_addr): Adjust to use target hooks.
626         (emutls_decl): Adjust to use target hooks.
627         (emutls_finish): Likewise.
628         (default_emutls_var_init): New, broken out of ...
629         (assemble_variable): ... here.  Adjust to use target hooks.
630         * output.h (enum section_category): Add SECCAT_EMUTLS_VAR,
631         SECCAT_EMUTLS_TMPL.
632         * c-common.c (handle_section_attribute): Prevent overriding
633         sections for emulated tls with special sections.
634         * config/i386/i386.c (x86_64_elf_select_section): Add
635         SECCAT_EMUTLS_VAR and SECCAT_EMUTLS_TMPL.
636         (x86_64_elf_unique_section): Likewise.
637         * config/vxworks.c: Include tree.h.
638         (vxworks_emutls_var_fields, vxworks_emutls_var_init): New.
639         (vxworks_override_options): Set TLS scheme.
640         * doc/tm.texi (Emulated TLS): New node.
641
642 2008-04-26  Simon Baldwin <simonb@google.com>
643
644         PR c/35652
645         * builtins.c (c_strlen): Suppressed multiple warnings that can occur
646         with propagated string constants.
647
648 2008-04-26  Uros Bizjak  <ubizjak@gmail.com>
649
650         * config/i386/i386.md (fix_trunc<mode>_i387_fisttp_with_temp): Use 'X'
651         constraint for operand 2 when operand 0 is memory operand.
652         (fix_truncdi_i387_with_temp): : Use 'X' constraint for operand 4 when
653         operand 0 is memory operand.
654         (fix_trunc<mode>_i387_with_temp): Ditto.
655         (*floatsi<mode>2_vector_mixed_with_temp): Use 'X' constraint for
656         operand 2 when operand 1 is memory operand.
657         (*float<SSEMODEI24:mode><MODEF:mode>2_mixed_with_temp): Ditto.
658         (*floatsi<mode>2_vector_sse_with_temp): Ditto.
659         (*float<SSEMODEI24:mode><MODEF:mode>2_sse_with_temp): Ditto.
660         (*float<SSEMODEI24:mode><X87MODEF:mode>2_i387_with_temp): Ditto.
661         (floatdi<X87MODEF:mode>2_i387_with_xmm): Use 'X' constraint for
662         operands 2,3 and 4 when operand 1 is memory operand.
663         (fistdi2_with_temp): Use 'X' constraint for operand 2 when operand 0
664         is memory operand.
665         (fistdi2_floor_with_temp): Ditto.
666         (fist<mode>2_floor_with_temp): Ditto.
667         (fistdi2_ceil_with_temp): Ditto.
668         (fist<mode>2_ceil_with_temp): Ditto.
669         (*truncdfsf_fast_mixed): Merge alternatives 0 and 1.
670
671 2008-04-26  David Daney  <ddaney@avtrex.com>
672
673         * config/mips/mips.md (UNSPEC_COMPARE_AND_SWAP_12): New
674         unspec_volitile.
675         (UNSPEC_SYNC_OLD_OP, UNSPEC_SYNC_NEW_OP, UNSPEC_SYNC_EXCHANGE,
676         UNSPEC_MEMORY_BARRIER, UNSPEC_SET_GOT_VERSION,
677         UNSPEC_UPDATE_GOT_VERSION): Renumber.
678         (sync_compare_and_swap<mode>): New expand for QI and HI modes.
679         (compare_and_swap_12): New insn.
680         * config/mips/mips-protos.h (mips_expand_compare_and_swap_12): Declare.
681         * config/mips/mips.c (mips_force_binary): New function.
682         (mips_emit_int_order_test, mips_expand_synci_loop): Use it.
683         (mips_expand_compare_and_swap_12): New function.
684         * config/mips/mips.h (MIPS_COMPARE_AND_SWAP_12): New macro.
685
686 2008-04-25  Jan Hubicka  <jh@suse.cz>
687
688         PR testsuite/35843
689         * cfgexpand.c (pass_expand): Turn into RTL pass.
690         * passes.c (execute_one_pass): Do pass typechecking after execution.
691         * tree-pass.h (pass_expand): Turn into RTL pass.
692
693         * function.h (struct rtl_data): Move here fields
694         accesses_prior_frames, calls_eh_return, saves_all_registers,
695         has_nonlocal_goto, has_asm_statement, is_thunk,
696         all_throwers_are_sibcalls, limit_stack, profile, uses_const_pool,
697         uses_pic_offset_table, uses_eh_lsda, tail_call_emit,
698         arg_pointer_save_area_init from struct function; turn into bool.
699         (struct function): Move
700         calls_eh_return, saves_all_registers, has_nonlocal_goto,
701         has_asm_statement, is_thunk, all_throwers_are_sibcalls, limit_stack,
702         profile, uses_const_pool, uses_pic_offset_table, uses_eh_lsda,
703         tail_call_emit, arg_pointer_save_area_init
704         into struct rtl_data.  Remove recursive_call_emit and gimplified flags.
705         (current_function_returns_struct, current_function_returns_pcc_struct,
706         current_function_calls_setjmp, current_function_calls_alloca,
707         current_function_accesses_prior_frames,
708         current_function_calls_eh_return, current_function_is_thunk,
709         current_function_stdarg, current_function_profile,
710         current_function_limit_stack, current_function_uses_pic_offset_table,
711         current_function_uses_const_pool, current_function_has_nonlocal_label,
712         current_function_saves_all_registers,
713         current_function_has_nonlocal_goto,
714         current_function_has_asm_statement): Remove accesor macros.
715         * ra-conflict.c (global_conflicts): Update.
716         * tree-tailcall.c (suitable_for_tail_opt_p): Update.
717         (suitable_for_tail_call_opt_p): Update.
718         * builtins.c (expand_builtin_return_addr): Update.
719         (expand_builtin_setjmp_setup): Update.
720         (expand_builtin_nonlocal_goto): Update.
721         * final.c (final_start_function): Update.
722         (profile_function): Update.
723         (leaf_function_p): Update.
724         (only_leaf_regs_used): Update.
725         * df-scan.c (df_get_exit_block_use_set): Update.
726         * dojump.c (clear_pending_stack_adjust): Update.
727         * tree-stdarg.c (gate_optimize_stdarg): Update.
728         * gimple-low.c (lower_function_body): Update.
729         * global.c (compute_regsets): Update.
730         (global_alloc): Update.
731         * dwarf2out.c (dwarf2out_begin_prologue): Update.
732         * expr.c (expand_assignment): Update.
733         * dse.c (dse_step0): Update.
734         (dse_step1): Update.
735         * c-decl.c (store_parm_decls): Update.
736         * local-alloc.c (combine_regs): Update.
737         (find_free_reg): Update.
738         * function.c (assign_parms_augmented_arg_list): Update.
739         (assign_parm_find_data_types): Update.
740         (assign_parms): Update.
741         (allocate_struct_function): Update.
742         (expand_function_start): Update.
743         (expand_function_end): Update.
744         (get_arg_pointer_save_area): Update.
745         (thread_prologue_and_epilogue_insns): Update.
746         (rest_of_match_asm_constraints): Update.
747         * stor-layout.c (variable_size): Update.
748         * gcse.c (gcse_main): Update.
749         (bypass_jumps): Update.
750         * gimplify.c (gimplify_function_tree): Update.
751         * calls.c (emit_call_1): Update.
752         (expand_call): Update.
753         * bt-load.c (compute_defs_uses_and_gen): Update.
754         * except.c (sjlj_assign_call_site_values): Update.
755         (sjlj_emit_function_enter): Update.
756         (can_throw_external): Update.
757         (set_nothrow_function_flags): Update.
758         (expand_builtin_unwind_init): Update.
759         (expand_eh_return): Update.
760         (convert_to_eh_region_ranges): Update.
761         (output_function_exception_table): Update.
762         * emit-rtl.c (gen_tmp_stack_mem): Update.
763         * cfgexpand.c (expand_used_vars): Update.
764         (tree_expand_cfg): Update.
765         * cfgcleanup.c (rest_of_handle_jump): Update.
766         * explow.c (allocate_dynamic_stack_space): Update.
767         * varasm.c (assemble_start_function): Update.
768         (force_const_mem): Update.
769         (mark_constant_pool): Update.
770         * tree-optimize.c (tree_rest_of_compilation): Update.
771         * stack-ptr-mod.c (notice_stack_pointer_modification): Update.
772         * tree-cfg.c (notice_special_calls): Update.
773         (is_ctrl_altering_stmt): Update.
774         (tree_can_make_abnormal_goto): Update.
775         (tree_purge_dead_abnormal_call_edges): Update.
776         * config/alpha/predicates.md: Update.
777         * config/alpha/alpha.c (alpha_sa_mask): Update.
778         (alpha_sa_size): Update.
779         (alpha_does_function_need_gp): Update.
780         (alpha_expand_prologue): Update.
781         (alpha_start_function): Update.
782         (alpha_output_function_end_prologue): Update.
783         (alpha_expand_epilogue): Update.
784         * config/frv/frv.c (frv_stack_info): Update.
785         (frv_expand_epilogue): Update.
786         * config/s390/s390.c (s390_regs_ever_clobbered): Update.
787         (s390_register_info): Update.
788         (s390_frame_info): Update.
789         (s390_init_frame_layout): Update.
790         (s390_can_eliminate): Update.
791         (save_gprs): Update.
792         * config/spu/spu.c (spu_split_immediate): Update.
793         (need_to_save_reg): Update.
794         (spu_expand_prologue): Update.
795         (spu_expand_epilogue): Update.
796         * config/sparc/sparc.md: Update.
797         * config/sparc/sparc.c (eligible_for_return_delay): Update.
798         (sparc_tls_got): Update.
799         (legitimize_pic_address): Update.
800         (sparc_emit_call_insn): Update.
801         (sparc_expand_prologue): Update.
802         (output_return): Update.
803         (print_operand): Update.
804         (sparc_function_ok_for_sibcall): Update.
805         * config/sparc/sparc.h (EXIT_IGNORE_STACK): Update.
806         * config/m32r/m32r.md: Update.
807         * config/m32r/m32r.c (MUST_SAVE_RETURN_ADDR): Update.
808         (m32r_compute_frame_size): Update.
809         (m32r_expand_prologue): Update.
810         (m32r_expand_epilogue): Update.
811         (m32r_legitimize_pic_address): Update.
812         * config/m32r/m32r.h (FRAME_POINTER_REQUIRED): Update.
813         * config/i386/linux.h (SUBTARGET_FRAME_POINTER_REQUIRED): Update.
814         * config/i386/i386.c (ix86_frame_pointer_required): Update.
815         (gen_push): Update.
816         (ix86_save_reg): Update.
817         (ix86_compute_frame_layout): Update.
818         (ix86_expand_prologue): Update.
819         (ix86_expand_epilogue): Update.
820         * config/sh/sh.c (output_stack_adjust): Update.
821         (calc_live_regs): Update.
822         (sh5_schedule_saves): Update.
823         (sh_expand_prologue): Update.
824         (sh_expand_epilogue): Update.
825         (sh_setup_incoming_varargs): Update.
826         (sh_allocate_initial_value): Update.
827         (sh_get_pr_initial_val): Update.
828         * config/sh/sh.h (SHMEDIA_REGS_STACK_ADJUST): Update.
829         * config/sh/sh.md (label:): Update.
830         * config/avr/avr.c (out_movhi_mr_r): Update.
831         * config/crx/crx.h (enum): Update.
832         * config/xtensa/xtensa.h (along): Update.
833         * config/stormy16/stormy16.c Update.
834         (xstormy16_compute_stack_layout): Update.
835         * config/fr30/fr30.c (MUST_SAVE_RETURN_POINTER): Update.
836         (fr30_expand_prologue): Update.
837         * config/cris/cris.c (cris_conditional_register_usage): Update.
838         (cris_reg_saved_in_regsave_area): Update.
839         (cris_initial_frame_pointer_offset): Update.
840         (cris_simple_epilogue): Update.
841         (cris_expand_prologue): Update.
842         (cris_expand_epilogue): Update.
843         (cris_expand_pic_call_address): Update.
844         (cris_asm_output_symbol_ref): Update.
845         (cris_asm_output_label_ref): Update.
846         * config/cris/cris.md Update.
847         * config/iq2000/iq2000.c (compute_frame_size): Update.
848         (iq2000_expand_epilogue): Update.
849         * config/mt/mt.h (save_direction): Update.
850         * config/mn10300/mn10300.c (mn10300_function_value): Update.
851         * config/ia64/ia64.c (ia64_compute_frame_size): Update.
852         (ia64_secondary_reload_class): Update.
853         * config/m68k/m68k.c (m68k_save_reg): Update.
854         (m68k_expand_prologue): Update.
855         (m68k_expand_epilogue): Update.
856         (legitimize_pic_address): Update.
857         * config/rs6000/rs6000.c (rs6000_got_register): Update.
858         (first_reg_to_save): Update.
859         (first_altivec_reg_to_save): Update.
860         (compute_vrsave_mask): Update.
861         (compute_save_world_info): Update.
862         (rs6000_stack_info): Update.
863         (spe_func_has_64bit_regs_p): Update.
864         (rs6000_ra_ever_killed): Update.
865         (rs6000_emit_eh_reg_restore): Update.
866         (rs6000_emit_allocate_stack): Update.
867         (rs6000_emit_prologue): Update.
868         (rs6000_emit_epilogue): Update.
869         (rs6000_output_function_epilogue): Update.
870         (output_profile_hook): Update.
871         (rs6000_elf_declare_function_name): Update.
872         * config/rs6000/rs6000.h (rs6000_args): Update.
873         * config/rs6000/rs6000.md: Update.
874         * config/mcore/mcore.c (mcore_expand_prolog): Update.
875         * config/arc/arc.c (arc_output_function_epilogue): Update.
876         * config/arc/arc.h (FRAME_POINTER_REQUIRED): Update.
877         * config/darwin.c (machopic_function_base_name): Update.
878         * config/score/score3.c (score3_compute_frame_size): Update.
879         (rpush): Update.
880         (rpop): Update.
881         (score3_epilogue): Update.
882         * config/score/score7.c (score7_compute_frame_size): Update.
883         (score7_prologue): Update.
884         (score7_epilogue): Update.
885         * config/score/score.h (FRAME_POINTER_REQUIRED): Update.
886         * config/arm/linux-elf.h (SUBTARGET_FRAME_POINTER_REQUIRED): Update.
887         * config/arm/arm.c (use_return_insn): Update.
888         (require_pic_register): Update.
889         (arm_load_pic_register): Update.
890         (arm_compute_save_reg0_reg12_mask): Update.
891         (arm_compute_save_reg_mask): Update.
892         (thumb1_compute_save_reg_mask): Update.
893         (output_return_instruction): Update.
894         (arm_output_function_prologue): Update.
895         (arm_output_epilogue): Update.
896         (arm_get_frame_offsets): Update.
897         (arm_expand_prologue): Update.
898         (thumb_pushpop): Update.
899         (thumb_exit): Update.
900         (thumb1_expand_prologue): Update.
901         (thumb1_expand_epilogue): Update.
902         (arm_unwind_emit): Update.
903         (arm_output_fn_unwind): Update.
904         * config/arm/arm.h (FRAME_POINTER_REQUIRED): Update.
905         * config/arm/arm.md: Update.
906         * config/pa/pa.md: Update.
907         * config/pa/pa.c (legitimize_pic_address): Update.
908         (compute_frame_size): Update.
909         (hppa_expand_prologue): Update.
910         (hppa_expand_epilogue): Update.
911         (borx_reg_operand): Update.
912         * config/pa/pa.h (FRAME_POINTER_REQUIRED): Update.
913         (HARD_REGNO_RENAME_OK): Update.
914         * config/mips/mips.c (mips_global_pointer): Update.
915         (mips_save_reg_p): Update.
916         (mips_compute_frame_info): Update.
917         (mips_frame_pointer_required): Update.
918         (mips_expand_prologue): Update.
919         (mips_expand_epilogue): Update.
920         (mips_can_use_return_insn): Update.
921         (mips_reorg_process_insns): Update.
922         * config/v850/v850.c (compute_register_save_size): Update.
923         * config/mmix/mmix.h (FRAME_POINTER_REQUIRED): Update.
924         * config/mmix/mmix.c (along): Update.
925         (mmix_expand_epilogue): Update.
926         * config/bfin/bfin.c (legitimize_pic_address): Update.
927         (must_save_p): Update.
928         (stack_frame_needed_p): Update.
929         (add_to_reg): Update.
930         (bfin_expand_prologue): Update.
931         * stmt.c (expand_asm_operands): Update.
932         * reload1.c (reload): Update.
933         (init_elim_table): Update.
934
935 2008-04-25  Bob Wilson  <bob.wilson@acm.org>
936         
937         * optabs.c (expand_float): Fix REG_EQUAL for UNSIGNED_FLOAT libcall.
938         
939 2008-04-25  H.J. Lu  <hongjiu.lu@intel.com>
940
941         * config/i386/sse.md (mov<mode>): Replace SSEMODEI with SSEMODE.
942         (*mov<mode>_internal): Likewise.  Support V4SF and V2DF.
943         (mov<mode>): Removed.
944         (*movv4sf_internal): Likewise.
945         (*movv2df_internal): Likewise.
946
947 2008-04-25  Pompapathi V Gadad <Pompapathi.V.Gadad@nsc.com>
948
949         * config.gcc (crx-*-elf): Remove deprecation.
950
951 2008-04-25  Danny Smith  <dannysmith@users.sourceforge.net>
952
953         * config/i386/cygming-crtend.c (register_frame_ctor): Register
954         __gcc_deregister_frame with atexit.
955         (deregister_frame_dtor): Remove.
956
957 2008-04-24  Nathan Froyd  <froydnj@codesourcery.com>
958             Nathan Sidwell  <nathan@codesourcery.com>
959
960         * config/rs6000/rs6000.opt (mspe): Remove Var property.
961         (misel): Likewise.
962         * config/rs6000/rs6000.h (rs6000_spe): Declare.
963         (rs6000_isel): Likewise.
964         * config/rs6000/rs6000.c (rs6000_spe): New variable.
965         (rs6000_isel): New variable.
966         (rs6000_handle_option): Handle OPT_mspe and OPT_misel.
967
968 2008-04-24  Jakub Jelinek  <jakub@redhat.com>
969
970         PR c++/35758
971         * c-common.c (handle_vector_size_attribute): Call
972         lang_hooks.types.reconstruct_complex_type instead of
973         reconstruct_complex_type.
974         * config/rs6000/rs6000.c (rs6000_handle_altivec_attribute): Likewise.
975         * config/spu/spu.c (spu_handle_vector_attribute): Likewise.
976         * langhooks.h (struct lang_hooks_for_types): Add
977         reconstruct_complex_type hook.
978         * langhooks-def.h (LANG_HOOKS_RECONSTRUCT_COMPLEX_TYPE): Define.
979         (LANG_HOOKS_FOR_TYPES_INITIALIZER): Add it.
980
981 2008-04-24  Richard Guenther  <rguenther@suse.de>
982
983         * c-common.h (check_builtin_function_arguments): Declare.
984         * c-common.c (validate_nargs): New function.
985         (check_builtin_function_arguments): Likewise.
986         * c-typeck.c (build_function_call): Call
987         check_builtin_function_arguments.
988         * builtins.c (fold_builtin_classify): Remove error reporting code.
989         (fold_builtin_unordered_cmp): Likewise.
990         (fold_builtin_1): Likewise.
991         (fold_builtin_n): Likewise.
992
993 2008-04-24  Jakub Jelinek  <jakub@redhat.com>
994
995         PR tree-optimization/36008
996         * fold-const.c (try_move_mult_to_index): If s == NULL, divide
997         the original op1, rather than delta by step.
998
999 2008-04-22  Antoniu Pop  <antoniu.pop@gmail.com>
1000             Sebastian Pop  <sebastian.pop@amd.com>
1001
1002         * tree-parloops.c (take_address_of, eliminate_local_variables_1,
1003         eliminate_local_variables_stmt, eliminate_local_variables,
1004         separate_decls_in_loop_name, separate_decls_in_loop_stmt,
1005         separate_decls_in_loop, gen_parallel_loop): Make them work on a region
1006         of code delimited by two edges in the CFG.
1007         (separate_decls_in_loop_name): Renamed separate_decls_in_region_name.
1008         (separate_decls_in_loop_stmt): Renamed separate_decls_in_region_stmt.
1009         (separate_decls_in_loop): Renamed separate_decls_in_region.  Isolate 
1010         the case of parallelisation of reductions.
1011         (expr_invariant_in_region_p): New.
1012
1013         * tree-flow.h (gather_blocks_in_sese_region): Declared.
1014         * tree-cfg.c (gather_blocks_in_sese_region): Extern.
1015
1016 2008-04-24  Ira Rosen  <irar@il.ibm.com>
1017             Richard Guenther  <rguenther@suse.de>
1018
1019         PR tree-optimization/36034
1020         * tree-vect-analyze.c (vect_analyze_group_access): SLP is
1021         incapable of dealing with loads with gaps.
1022
1023 2008-04-24  Rafael Espindola  <espindola@google.com>
1024
1025         * tree-flow.h (vrp_evaluate_conditional): Change signature.
1026         * tree-ssa-propagate.c (fold_predicate_in): Update call to
1027         vrp_evaluate_conditional.
1028         * tree-vrp.c (vrp_evaluate_conditional_warnv): Remove.
1029         (vrp_evaluate_conditional): Split the cond argument.
1030         (vrp_visit_cond_stmt): Use vrp_evaluate_conditional_warnv_with_ops.
1031         (simplify_stmt_for_jump_threading): Update call to
1032         vrp_evaluate_conditional.
1033
1034 2008-04-24  Ira Rosen  <irar@il.ibm.com>
1035
1036         PR tree-optimization/35982
1037         * tree-vect-analyze.c (vect_check_interleaving): Check that the
1038         interleaved data-refs are of the same type.
1039
1040 2008-04-24  Danny Smith  <dannysmith@users.net>
1041
1042         * c-format.c (check_format_info_main): Use strncmp rather than a
1043         magic prefix to handle multichar length specs.
1044         * config/i386/msformat-c.c (format_length_info ms_printf_length_specs):
1045         Don't prefix "I64" and "I32" with '\0'.
1046
1047 2008-04-24  Jakub Jelinek  <jakub@redhat.com>
1048
1049         PR target/36015
1050         * config/i386/i386.c (init_cumulative_args): Don't pass anything
1051         in registers for -m32 only if stdarg_p (fntype).
1052
1053 2008-04-24  Uros Bizjak  <ubizjak@gmail.com>
1054
1055         PR rtl-optimization/36006
1056         * expmed.c (store_fixed_bit_field): Copy op0 rtx before moving
1057         temp to op0 in order to avoid invalid rtx sharing.
1058
1059 2008-04-23  Paolo Bonzini  <bonzini@gnu.org>
1060
1061         * tree-cfg.c (verify_expr): Check with is_gimple_address.  Don't
1062         check TREE_INVARIANT.
1063         * tree-gimple.c (is_gimple_address): New.
1064         (is_gimple_invariant_address): Simplify using decl_address_invariant_p.
1065         * tree-gimple.h (is_gimple_address): New.
1066         * tree.h (decl_address_invariant_p): New.
1067         * tree.c (make_node_stat): Don't set TREE_INVARIANT.
1068         (build_string): Likewise.
1069         (decl_address_invariant_p): New, from is_gimple_invariant_address.
1070         (tree_invariant_p_1): Likewise.
1071         (save_expr): Use it.
1072         (tree_invariant_p): New.
1073         (skip_simple_arithmetic): Use it.
1074         (stabilize_reference_1): Use it.
1075         (recompute_tree_invariant_for_addr_expr): Don't update TREE_INVARIANT,
1076         simplify.
1077         (build1_stat): Drop code to compute TREE_INVARIANT.
1078         (build2_stat): Drop code to compute TREE_INVARIANT.
1079         (build3_stat): Drop code to compute TREE_INVARIANT.
1080         (build4_stat): Drop code to compute TREE_INVARIANT.
1081         (build5_stat): Drop code to compute TREE_INVARIANT.
1082         (build7_stat): Drop code to compute TREE_INVARIANT.
1083         (merge_dllimport_decl_attributes): Don't mention TREE_INVARIANT.
1084         * tree.h (struct tree_base): Remove invariant_flag.
1085         (TREE_INVARIANT): Remove.
1086         * builtins.c (build_string_literal): Don't set TREE_INVARIANT.
1087         (fold_builtin_expect): Check TREE_CONSTANT.
1088         * tree-ssa-ccp.c (fold_stmt_r): Adjust comment.
1089         * c-tree.h (c_expr_to_decl): Drop third parameter.
1090         * c-typeck.c (build_external_ref): Don't set TREE_INVARIANT.
1091         (build_c_cast): Don't set TREE_INVARIANT.
1092         (pop_init_level): Don't set TREE_INVARIANT.
1093         (c_objc_common_truthvalue_conversion): Don't set TREE_INVARIANT.
1094         * gimplify.c (gimplify_init_ctor_preeval): Add assertion, test
1095         TREE_CONSTANT.
1096         (gimplify_init_constructor): Don't set TREE_INVARIANT.
1097         (gimplify_addr_expr): Adjust comment.
1098         * tree-mudflap.c (mf_build_string):
1099         * print-tree.c (print_node): Don't print TREE_INVARIANT.
1100         * tree-nested.c (convert_nonlocal_reference): Adjust comment.
1101         * c-common.c (fix_string_type): Don't set TREE_INVARIANT.
1102         * langhooks-def.h (lhd_expr_to_decl): Drop third parameter.
1103         * langhooks.c (lhd_expr_to_decl): Drop third parameter.
1104         * langhooks.h (struct lang_hooks): Drop third parameter from
1105         expr_to_decl.
1106
1107 2008-04-23  Richard Guenther  <rguenther@suse.de>
1108
1109         PR tree-optimization/27799
1110         PR tree-optimization/32921
1111         PR tree-optimization/32624
1112         * tree-ssa-structalias.c (merge_smts_into): Only merge the
1113         SMTs aliases and the tag itself into the solution.
1114         * tree-ssa-alias.c (compute_flow_sensitive_aliasing): Do not
1115         merge the points-to solution back into the SMT aliases.
1116         (may_alias_p): Use alias_set_subset_of instead of
1117         aliases_conflict_p.  A pointer which points to
1118         memory with alias set zero may access any variable.
1119
1120 2008-04-23  Richard Guenther  <rguenther@suse.de>
1121
1122         * alias.c (alias_set_subset_of): Correctly handle asking
1123         if zero is a subset of an alias set with zero child.
1124         * tree-ssa-alias.c (have_common_aliases_p): Simplify logic.
1125         (compute_flow_insensitive_aliasing): Correctly walk all
1126         pointers.  Do not unnecessarily union sets.
1127
1128 2008-04-23  Richard Guenther  <rguenther@suse.de>
1129
1130         PR middle-end/36021
1131         * c-common.c (handle_alloc_size_attribute): Use type_num_arguments.
1132
1133 2008-04-22  Tomas Bily  <tbily@suse.cz>
1134
1135         * tree-cfg.c (verify_expr): Check for NON_LVALUE_EXPR as
1136         unreachable case.
1137         * tree-vrp.c (extract_range_from_unary_expr): Removed unused
1138         NON_LVALUE_EXPR.
1139         * tree-ssa-threadedge.c (simplify_control_stmt_condition): Likewise.
1140         * tree-ssa-structalias.c (get_constraint_for): Likewise.
1141         * tree-inline.c (estimate_num_insns_1): Likewise.
1142         * varasm.c (const_hash_1, compare_constant, copy_constant)
1143         (compute_reloc_for_constant, output_addressed_constants): Likewise.
1144         * emit-rtl.c (component_ref_for_mem_expr)
1145         (set_mem_attributes_minus_bitpos): Likewise.
1146         * expr.c (highest_pow2_factor, expand_expr_real_1, )
1147         (is_aligning_offset): Likewise.
1148         * dwarf2out.c (loc_descriptor_from_tree_1, add_bound_info): Likewise.
1149         * tree-ssa-loop-ivopts.c (may_be_nonaddressable_p): Likewise.
1150         * dojump.c (do_jump): Likewise.
1151         * builtins.c (get_pointer_alignment, get_memory_rtx)
1152         (integer_valued_real_p, fold_builtin_next_arg): Likewise.
1153         * tree-scalar-evolution.c (instantiate_parameters_1): Likewise.
1154
1155 2008-04-23  Jakub Jelinek  <jakub@redhat.com>
1156
1157         PR rtl-optimization/36017
1158         * builtins.c (expand_errno_check): Clear CALL_EXPR_TAILCALL before
1159         expanding the library call.
1160
1161 2008-04-22  Ian Lance Taylor  <iant@google.com>
1162
1163         * fold-const.c (pointer_may_wrap_p): Call int_size_in_bytes rather
1164         than size_in_bytes.
1165
1166 2008-04-22  Pat Haugen  <pthaugen@us.ibm.com>
1167
1168         * config/rs6000/rs6000.c (rs6000_register_move_cost): Increase cost
1169         of LR/CTR moves for Power6.
1170
1171 2008-04-22  Kenneth Zadeck <zadeck@naturalbridge.com>
1172
1173         PR middle-end/36003
1174         * passes.c (init_optimization_passes): Remove
1175         pass_fast_rtl_byte_dce.
1176         
1177 2008-04-22  Uros Bizjak  <ubizjak@gmail.com>
1178
1179         PR target/29096
1180         * config/i386/xmmintrin.h (_mm_cvtpi16_ps): Rearrange calls to
1181         builtin functions to generate faster code.
1182         (_mm_cvtpu16_ps): Ditto.
1183         (_mm_cvtpi32x2_ps): Ditto.
1184
1185 2008-04-22  Nick Clifton  <nickc@redhat.com>
1186
1187         * common.opt (ftree-loop-distribution): Add Optimization
1188         attribute.
1189
1190         * config/frv/frv.c (frv_stack_info): Use crtl instead of cfun.
1191         (frv_expand_builtin_va_start): Likewise.
1192
1193         * config/arm/arm.c (thumb_find_work_register): Fix location of
1194         argument register count.
1195
1196 2008-04-22  Maxim Kuvyrkov  <maxim@codesourcery.com>
1197
1198         Support scheduling for ColdFire V1 and V3 microarchitecture.
1199         Improve scheduling of multiplication instructions.
1200
1201         * config/m68k/m68k.md (cpu): Add cfv1 and cfv3.  Rename cf_v2 to cfv1.
1202         (mac): New instruction attribute.
1203         * config/m68k/m68k.c (override_options): Handle cfv1, cfv3 and mac.
1204         (m68k_sched_mac): New variable.
1205         (m68k_sched_attr_type2, m68k_sched_md_init_global): Update.
1206         Handle cfv1 and cfv3.
1207         (max_insn_size): New static variable.
1208         (struct _sched_ib): New type.
1209         (sched_ib): New static variable.
1210         (sched_ib_size, sched_ib_filled, sched_ib_insn): Convert variables
1211         to fields of 'struct _sched_ib sched_ib'.  Update all uses.
1212         (m68k_sched_variable_issue): Add modeling of cfv3 instruction buffer.
1213         Update.
1214         (m68k_sched_md_init_global, m68k_sched_md_finish_global,
1215         m68k_sched_md_init, m68k_sched_md_finish): Handle cfv1 and cfv3.  Init
1216         new variables.  Update.
1217         (m68k_sched_dfa_pre_advance_cycle, m68k_sched_dfa_post_advance_cycle):
1218         Add modeling of cfv3 instruction buffer.  Update.
1219         * config/m68k/m68k-protos.h (m68k_sched_mac): Declare.
1220         * config/m68k/m68k.h (TUNE_CFV3): New macro.
1221         * config/m68k/cf.md: Change substrings 'cf_v2' to 'cfv12' or 'cfv123'.
1222         (cf_* reservations): Rename to cfv12 or cfv123 to indicate cores
1223         a particular reservation applies to.
1224         (type2): Reorganize attribute values.  Rename alu to alu_reg,
1225         alu_l to alu, move_l to omove.  Join move to alu.  Split mul
1226         to mul_l and mul_w.
1227         (cf_ib_*): Simplify description of instruction buffer.
1228         (cf_ib_w0, cf_ib_w4, cf_ib_w5, cf_ib_w6): Remove.
1229         (cf_mem): Split into cf_mem1 and cf_mem2.
1230         (cf_v2_move_??): Rename to cfv12_alu_??.
1231         (cf_v2_move_l_??): Rename to cfv12_omove_??.
1232         (cf_v2_mul_??): Remove reservations.
1233         (cfv12_mul_l_??, cfv12_mul_w_??, cfv12_mac_w_??, cfv12_mac_l_??,
1234         cfv12_emac_??, cfv12_emac_w_i0): New reservations.
1235         (cfv12_rts, cfv12_call, cfv12_bcc, cfv12_bra, cfv12_jmp): Move to
1236         appropriate place.
1237         (cfv3_alu_10, cfv3_omove_10, cfv3_alu_i0, cfv3_omove_i0, cfv3_alu_01,
1238         cfv3_alu_0i, cfv3_alu_11, cfv3_omove_11, cfv3_alu_i1, cfv3_omove_i1,
1239         cfv3_alu_1i, cfv3_omove_1i, cfv3_pea_11, cfv3_pea_i1, cfv3_mul_w_10,
1240         cfv3_mul_l_10, cfv3_mul_w_i0, cfv3_mac_w_10, cfv3_mac_l_10,
1241         cfv3_mac_w_i0, cfv3_emac_10, cfv3_emac_w_i0, cfv3_rts, cfv3_call,
1242         cfv3_bcc, cfv3_bra, cfv3_jmp): New reservations.
1243         (cfv3_*_1, cfv3_*_2, cfv3_*_3): New instruction reservations that are
1244         expansions of the above reservations for instructions of sizes
1245         1, 2 and 3 words.
1246
1247 2008-04-22  Maxim Kuvyrkov  <maxim@codesourcery.com>
1248
1249         * rtl-factoring.c (collect_patterns_seqs): Handle CC0 targets.
1250
1251 2008-04-21  Adam Nemet  <anemet@caviumnetworks.com>
1252
1253         * coverage.c: Include tree-pass.h.
1254         (coverage_counter_alloc): Print da_file_name to the dump file.
1255
1256 2008-04-21  Kenneth Zadeck <zadeck@naturalbridge.com>
1257
1258         * sbitmap.c (sbitmap_range_empty_p): New function.
1259         * sbitmap.h (sbitmap_range_empty_p): New function.
1260         * bitmap.h: Now includes obstack.h.
1261
1262 2008-04-21  Richard Sandiford  <rsandifo@nildram.co.uk>
1263             Kenneth Zadeck <zadeck@naturalbridge.com>
1264
1265         * dbgcnt.def (ra_byte_scan): Added.
1266         * dbgcnt.c (dbg_cnt): Added code to print message to dump_file
1267         when the last hit happens for a counter.  
1268         * timevar.def (TV_DF_BYTE_LR): New variable.
1269         * tree-pass.h (pass_fast_rtl_byte_dce): New pass.
1270         * passes.c (pass_fast_rtl_byte_dce): New pass.
1271         * fwprop.c (update_df): Added mode to call df_ref_create.
1272         Renamed DF_REF_WIDTH and DF_REF_OFFSET to DF_REF_EXTRACT_WIDTH and
1273         DF_REF_EXTRACT_OFFSET.
1274         * df.h (DF_BYTE_LR, DF_BYTE_LR_BB_INFO, DF_BYTE_LR_IN, 
1275         DF_BYTE_LR_OUT, df_byte_lr): New macro.
1276         (df_mm): New enum.
1277         (df_ref_extract): Added mode field.
1278         (DF_REF_WIDTH, DF_REF_OFFSET) Renamed to DF_REF_EXTRACT_WIDTH and
1279         DF_REF_EXTRACT_OFFSET.
1280         (DF_REF_EXTRACT_MODE): New macro.
1281         (df_byte_lr_bb_info): New structure.
1282         (df_print_byte_regset, df_compute_accessed_bytes, 
1283         df_byte_lr_add_problem, df_byte_lr_get_regno_start,
1284         df_byte_lr_get_regno_len, df_byte_lr_simulate_defs,
1285         df_byte_lr_simulate_uses,
1286         df_byte_lr_simulate_artificial_refs_at_top,
1287         df_byte_lr_simulate_artificial_refs_at_end,
1288         df_compute_accessed_bytes): New function.
1289         (df_ref_create): Add parameter.
1290         (df_byte_lr_get_bb_info): New inline function.
1291         * df-scan.c (df_ref_record, df_uses_record,
1292         df_ref_create_structure): Added mode parameter.
1293         (df_ref_create, df_notes_rescan, df_ref_record, df_def_record_1, 
1294         df_defs_record, df_uses_record, df_get_conditional_uses,
1295         df_get_call_refs, df_insn_refs_collect, df_bb_refs_collect, 
1296         df_entry_block_defs_collect, df_exit_block_uses_collect):
1297         Added mode parameter to calls to df_ref_record, df_uses_record,
1298         df_ref_create_structure.
1299         (df_ref_equal_p, df_ref_compare): Added test for modes.
1300         (df_ref_create_structure): Added code to set mode.  Renamed
1301         DF_REF_WIDTH and DF_REF_OFFSET to DF_REF_EXTRACT_WIDTH and
1302         DF_REF_EXTRACT_OFFSET.
1303         * df-core.c (df_print_byte_regset): New function.
1304         * df-byte-scan.c: New file.
1305         * df-problems.c (df_rd_transfer_function): Removed unnecessary
1306         calls to BITMAP_FREE.  
1307         (df_byte_lr_problem_data, df_problem problem_BYTE_LR): New structure.
1308         (df_byte_lr_get_regno_start, df_byte_lr_get_regno_len,
1309         df_byte_lr_set_bb_info, df_byte_lr_free_bb_info, 
1310         df_byte_lr_check_regs, df_byte_lr_expand_bitmap, 
1311         df_byte_lr_alloc, df_byte_lr_reset, df_byte_lr_bb_local_compute,
1312         df_byte_lr_local_compute, df_byte_lr_init,
1313         df_byte_lr_confluence_0, df_byte_lr_confluence_n, 
1314         df_byte_lr_transfer_function, df_byte_lr_free, 
1315         df_byte_lr_top_dump, df_byte_lr_bottom_dump,
1316         df_byte_lr_add_problem, df_byte_lr_simulate_defs, 
1317         df_byte_lr_simulate_uses,
1318         df_byte_lr_simulate_artificial_refs_at_top,
1319         df_byte_lr_simulate_artificial_refs_at_end): New function.
1320         * dce.c (byte_dce_process_block): New function.
1321         (dce_process_block): au is now passed in rather than computed
1322         locally.  Changed loops that look at artificial defs to not look
1323         for conditional or partial ones, because there never are any.  
1324         (fast_dce): Now is able to drive byte_dce_process_block or 
1325         dce_process_block depending on the kind of dce being done.
1326         (rest_of_handle_fast_dce): Add parameter to fast_dce.
1327         (rest_of_handle_fast_byte_dce): New function.
1328         (rtl_opt_pass pass_fast_rtl_byte_dce): New pass.
1329         * Makefile.in (df-byte-scan.o, debugcnt.o): Added dependencies.
1330
1331 2008-04-21  Daniel Franke  <franke.daniel@gmail.com>
1332
1333         PR fortran/35019
1334         * gcc.h: Added fortran options that take arguments to
1335         DEFAULT_SWITCH_TAKES_ARG and DEFAULT_WORD_SWITCH_TAKES_ARG
1336         macros.
1337
1338 2008-04-20  Eric Botcazou  <ebotcazou@adacore.com>
1339
1340         * tree-sra.c (sra_walk_expr) <VIEW_CONVERT_EXPR>: Disable
1341         scalarization if on the LHS and not a full access.
1342
1343 2008-04-20  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
1344
1345         * Makefile.in (s-gtyp-input): Remove tmp-gi.list before writing it.
1346
1347 2008-04-18  Rafael Espindola  <espindola@google.com>
1348
1349         * tree-vrp.c (find_case_label_index): Fix the binary search.
1350         (find_case_label_range): New.
1351         (vrp_visit_switch_stmt): Use find_case_label_range.
1352         (simplify_switch_using_ranges): Use find_case_label_range.
1353
1354 2008-04-18  Eric Botcazou  <ebotcazou@adacore.com>
1355
1356         * gimplify.c (gimplify_modify_expr_rhs) <COND_EXPR>: Gimplify the LHS
1357         using the is_gimple_lvalue predicate instead of is_gimple_min_lval.
1358
1359 2008-04-18  Tom Tromey  <tromey@redhat.com>
1360
1361         PR libcpp/15500:
1362         * doc/cpp.texi (Implementation-defined behavior): Mention
1363         -finput-charset.
1364
1365 2008-04-18  Ian Lance Taylor  <iant@google.com>
1366
1367         * fold-const.c (pointer_may_wrap_p): New static function.
1368         (fold_comparison): Add another test for pointer overflow.  Use
1369         pointer_may_wrap_p to disable some false positives.
1370
1371 2008-04-18  Kris Van Hees <kris.van.hees@oracle.com>
1372           
1373         * c-common.c (CHAR16_TYPE, CHAR32_TYPE): New macros.
1374         (fname_as_string): Match updated cpp_interpret_string prototype.
1375         (fix_string_type): Support char16_t* and char32_t*.
1376         (c_common_nodes_and_builtins): Add char16_t and char32_t (and
1377         derivative) nodes.  Register as builtin if C++0x.
1378         (c_parse_error): Support CPP_CHAR{16,32}.
1379         * c-common.h (RID_CHAR16, RID_CHAR32): New elements. 
1380         (enum c_tree_index) <CTI_CHAR16_TYPE, CTI_SIGNED_CHAR16_TYPE,
1381         CTI_UNSIGNED_CHAR16_TYPE, CTI_CHAR32_TYPE, CTI_SIGNED_CHAR32_TYPE,
1382         CTI_UNSIGNED_CHAR32_TYPE, CTI_CHAR16_ARRAY_TYPE,
1383         CTI_CHAR32_ARRAY_TYPE>: New elements.
1384         (char16_type_node, signed_char16_type_node, unsigned_char16_type_node,
1385         char32_type_node, signed_char32_type_node, char16_array_type_node,
1386         char32_array_type_node): New defines.
1387         * c-lex.c (cb_ident): Match updated cpp_interpret_string prototype.
1388         (c_lex_with_flags): Support CPP_CHAR{16,32} and CPP_STRING{16,32}.
1389         (lex_string): Support CPP_STRING{16,32}, match updated
1390         cpp_interpret_string and cpp_interpret_string_notranslate prototypes.
1391         (lex_charconst): Support CPP_CHAR{16,32}.
1392         * c-parser.c (c_parser_postfix_expression): Support CPP_CHAR{16,32}
1393         and CPP_STRING{16,32}.
1394
1395 2008-04-18  Paolo Bonzini  <bonzini@gnu.org>
1396
1397         PR bootstrap/35457
1398         * aclocal.m4: Regenerate.
1399         * configure: Regenerate.
1400
1401 2008-04-18  Jan Hubicka  <jh@suse.cz>
1402
1403         * except.c (dw2_size_of_call_site_table,
1404         sjlj_size_of_call_site_table): Use vector API for call_site_record.
1405
1406         * cgraphbuild.c (build_cgraph_edges): Update.
1407         * tree-pass.h: Update comment.
1408         * final.c (leaf_function_p): Update.
1409         (leaf_renumber_regs): Update.
1410         (rest_of_clean_state): Update.
1411         * omp-low.c (expand_omp_parallel): Update.
1412         * ipa-reference.c (analyze_function): Update.
1413         * reorg.c (find_end_label): Update.
1414         (optimize_skip): Update.
1415         (fill_simple_delay_slots): Update.
1416         (fill_simple_delay_slots): Update.
1417         (make_return_insns): Update.
1418         (dbr_schedule): Update.
1419         * gimple-low.c (record_vars_into): Update.
1420         * cfgbuild.c (make_edges): Update.
1421         * function.c (assign_stack_local): Update.
1422         (assign_parm_adjust_stack_rtl): Update.
1423         (locate_and_pad_parm): Update.
1424         (allocate_struct_function): Do not initialize stack_alignment_needed
1425         and preferred_stack_boundary here.
1426         (stack_protect_prologue): Update.
1427         (stack_protect_epilogue): Update.
1428         (expand_function_start): Initialize stack_alignment_needed,
1429         preferred_stack_boundary and max_jumptable_ents.
1430         (expand_function_end): Update.
1431         (free_after_compilation): Do not NULLify epilogue_delay_list.
1432         * function.h (struct rtl_data): Add stack_protect_guard,
1433         stack_alignment_needed,
1434         preferred_stack_boundary, epilogue_delay_list.
1435         (struct function): Remove value_histograms, stack_alignment_needed,
1436         preferred_stack_boundary, epilogue_delay_list, max_jumptable_ents,
1437         last_label_uid,
1438         unexpanded_var_list, stack_protect_guard.
1439         (current_function_epilogue_delay_list): Remove.
1440         * ipa-type-escape.c (analyze_function): Update.
1441         * gimplify.c (pop_gimplify_context): Update comment.
1442         * calls.c (expand_call): Update.
1443         (emit_library_call_value_1): Update.
1444         * except.c (set_nothrow_function_flags): Update.
1445         * cfgexpand.c (get_decl_align_unit): Update.
1446         (create_stack_guard): Update.
1447         (estimated_stack_frame_size): Update.
1448         (expand_used_vars): Update.
1449         (tree_expand_cfg): Free histogram earliers, init expansion variables.
1450         * explow.c (allocate_dynamic_stack_space): Update.
1451         * tree-ssa-live.c (remove_unused_locals): Update.
1452         * varasm.c (mark_constant_pool): Update.
1453         * tree-inline.c (remap_decls): Update.
1454         (initialize_cfun): Update.
1455         (declare_return_variable): Update.
1456         (inline_forbidden_p): Update.
1457         (expand_call_inline): Update.
1458         (declare_inline_vars): Update.
1459         (tree_function_versioning): Update.
1460         * tree-flow.h (value_histograms): New.
1461         (VALUE_HISTOGRAMS): New macro.
1462         * basic-block.h (control_flow_graph): Add max_jumptable_ents,
1463         last_label_uid.
1464         * tree-cfg.c (set_bb_for_stmt): Update.
1465         (replace_by_duplicate_decl): Update.
1466         (move_block_to_fn): Update.
1467         (new_label_mapper): Update.
1468         (dump_function_to_file): Update.
1469         * ipa-struct-reorg.c (build_data_structure): Update.
1470         * cfgrtl.c (print_rtl_with_bb): Update.
1471         * reload1.c (reload): Update.
1472         (reload): Update.
1473         * config/i386/i386.c (setup_incoming_varargs_64,
1474         ix86_compute_frame_layout): Update.
1475         * config/arc/arc.c (arc_output_function_epilogue): Update.
1476
1477 2008-04-18  Marius Strobl <marius@FreeBSD.org>
1478
1479         * gthr-posix.h (__gthread_active_p): Use the Solaris implementation
1480         for FreeBSD as well.
1481         * gthr-posix95.h: Likewise.
1482
1483 2008-04-17  Richard Sandiford  <rsandifo@nildram.co.uk>
1484
1485         PR rtl-optimization/35838
1486         * dse.c (find_shift_sequence): Use subreg_lowpart_offset to work
1487         out the byte offset of the first subreg.
1488
1489 2008-04-17  Uros Bizjak  <ubizjak@gmail.com>
1490
1491         * config/i386/i386.md (addti3 splitter): Pass arrays of 3 operands
1492         to split_ti instead of three separate calls with single member arrays.
1493         (subti3 splitter): Ditto.
1494         (adddi3 splitter): Ditto with split_di.
1495         (subdi3 splitter): Ditto.
1496         (negti2 splitter): Pass arrays of 2 operands to split_ti instead of
1497         two separate calls with single member arrays.  Swap match_dup
1498         operands 1 and 2 to better fit into the array.
1499         (negdi2 splitter): Ditto with split_di.
1500         (movdfcc splitter):  Pass arrays of 2 operands to split_di instead of
1501         two separate calls with single member arrays.  Swap match_dup operands
1502         6 and 7 to better fit into the array.
1503
1504 2008-04-17  H.J. Lu  <hongjiu.lu@intel.com>
1505
1506         * config/i386/i386.c (sse_builtin_type): New.
1507         (bdesc_sse_args): Likewise.
1508         (bdesc_sse_3arg): Removed.
1509         (bdesc_2arg): Remove IX86_BUILTIN_AESKEYGENASSIST128.
1510         (bdesc_1arg): Remove IX86_BUILTIN_ROUNDPD and
1511         IX86_BUILTIN_ROUNDPS.
1512         (ix86_init_mmx_sse_builtins): Handle bdesc_sse_args.  Remove
1513         bdesc_sse_3arg.  Remove IX86_BUILTIN_ROUNDPD and
1514         IX86_BUILTIN_ROUNDPS.
1515         (ix86_expand_sse_4_operands_builtin): Removed.
1516         (ix86_expand_sse_operands_builtin): New.
1517         (ix86_expand_unop_builtin): Remove CODE_FOR_sse4_1_roundpd
1518         and CODE_FOR_sse4_1_roundps.
1519         (ix86_expand_builtin): Remove IX86_BUILTIN_AESKEYGENASSIST128.
1520         Handle bdesc_sse_args.  Remove bdesc_sse_3arg.
1521
1522 2008-04-17  Alan Modra  <amodra@bigpond.net.au>
1523
1524         PR target/35907
1525         * config/rs6000/rs6000.c (rs6000_emit_epilogue): Restore vr and vrsave
1526         regs before frame pop when needed.  If use_backchain_to_restore_sp
1527         then load backchain into a temp reg to restore vr and vrsave.  Add
1528         code to restore vr after frame pop if possible.
1529
1530 2008-04-17  Richard Guenther  <rguenther@suse.de>
1531
1532         * tree-vn.c (expressions_equal_p): Do not check type
1533         equality or compatibility before calling operand_equal_p.
1534         * fold-const.c (operand_equal_p): Check equivalence of
1535         integer constants before bailing out due to signedness or
1536         precision differences.
1537         * tree-ssa-sccvn.c (copy_reference_ops_from_ref): Ignore
1538         spurious differences in type qualification.  Ignore types
1539         for COMPONENT_REFs at all.
1540
1541 2008-04-17  Christian Bruel  <christian.bruel@st.com>
1542
1543         * config/sh/sh.c (expand_cbranchdi4): Use original operands for
1544         msw_skip comparison.
1545         
1546 2008-04-16  Jakub Jelinek  <jakub@redhat.com>
1547
1548         PR c/35739
1549         * tree-nrv.c (tree_nrv): Don't optimize if result_type is GIMPLE
1550         reg type.
1551
1552         PR tree-optimization/35899
1553         * tree-inline.c (expand_call_inline): Use GIMPLE_STMT_OPERAND
1554         rather than TREE_OPERAND.
1555
1556 2008-04-16  Uros Bizjak  <ubizjak@gmail.com>
1557
1558         PR target/35944
1559         * config/i386/i386.md (fmodxf3): Copy operand 1 and operand 2 into
1560         temporary registers.  Change operand predicate to general_operand.
1561         (remainderxf3): Ditto.
1562
1563 2008-04-16  Richard Guenther  <rguenther@suse.de>
1564
1565         * Makefile.in (tree-affine.o): Add $(FLAGS_H) dependency.
1566         * tree-affine.c (aff_combination_expand): Look through some
1567         conversions.
1568
1569 2008-04-15  Doug Kwan  <dougkwan@google.com>
1570
1571         * dwarf2asm.c (dw2_assemble_integer): Cast to unsigned HOST_WIDE_INT
1572         for hex printing.
1573         * tree-pretty-print.c (dump_generic_node): Ditto.
1574         * final.c (output_addr_const): Ditto.
1575         * dwarf2out.c (output_cfi): Ditto.
1576         * c-pretty-print.c (pp_c_integer_constant): Ditto.
1577         * print-rtl.c (print_rtx): Ditto.
1578         * print-tree.c (print_node_brief, print_node): Ditto.
1579         * c-common.c (match_case_to_enum_1): Ditto.
1580         * sched-vis.c (print_value): Ditto.
1581         * config/i386/i386.c (print_operand): Cast to long unsigned int
1582         for hex printing.
1583
1584 2008-04-15  Danny Smith  <dannysmith@users.sourceforge.net>
1585         * libgcc2.c [L_trampoline]: Remove  unnecessary prototype for
1586         MS Windows VirtualProtect function.
1587
1588 2008-04-15  Jan Hubicka  <jh@suse.cz>
1589
1590         * gengtype.c (write_root): Param_is argument is OK.
1591         * expr.c (expand_expr_real_1): Update call of get_exception_*.
1592         * function.h: Include varray.h
1593         (rtl_eh): New stucture based on except.c one.
1594         (call_site_record): New forward declaration and vector type.
1595         * calls.c (emit_call_1): Do not call
1596         note_current_region_may_contain_throw.
1597         * except.c (eh_status): Remove cur_region, try_region since they are
1598         unused.
1599         Move filter, exc_ptr, ttype_data, ehspec_data, action_record_data and
1600         exception_handler_label_map, ehr_stackadj, ehr_handler, ehr_label,
1601         sjlj_fc, sjlj_exit_after to rth_eh in function.h. 
1602         Remove call_site_data_used, call_site_data_size.
1603         Turn call_site_record into vector in function.h.
1604         (note_current_region_may_contain_throw): Remove.
1605         (get_exception_pointer, get_exception_filter): Do not take struct
1606         function argument; update.
1607         (add_ehl_entry, find_exception_handler_labels, ehspec_filter_hash,
1608         add_ttypes_entry, add_ehspec_entry, assign_filter_values,
1609         build_post_landing_pads, dw2_build_landing_pads,
1610         sjlj_assign_call_site_values, sjlj_mark_call_sites,
1611         sjlj_emit_function_enter, sjlj_emit_function_enter, 
1612         sjlj_emit_function_exit, sjlj_emit_dispatch_table,
1613         sjlj_build_landing_pads, finish_eh_generation,
1614         remove_exception_handler_label, remove_eh_handler,
1615         maybe_remove_eh_handler, add_reachable_handler,
1616         reachable_handlers, expand_builtin_eh_return, expand_eh_return,
1617         add_action_record, collect_one_action_chain, add_call_site,
1618         convert_to_eh_region_ranges, sjlj_size_of_call_site_table,
1619         sjlj_output_call_site_table, output_function_exception_table,
1620         * except.h (note_current_region_may_contain_throw): Remove
1621         (get_exception_pointer, get_exception_filter): Do not take struct
1622         function argument.
1623         * Makefile.in (GTFILES): Put varargs before struct function.
1624
1625 2008-04-15  Eric Botcazou  <ebotcazou@adacore.com>
1626
1627         * tree-ssa-structalias.c (get_constraint_for_component_ref): Do not
1628         punt for STRING_CST.
1629         (get_constraint_for): Deal with STRING_CST here instead.
1630
1631 2008-04-15  Richard Guenther  <rguenther@suse.de>
1632
1633         * tree-ssa-propagate.c (substitute_and_fold): Substitute
1634         statements in a basic-block with a backward walk.  Do not
1635         substitute into dead statements but instead remove those.
1636
1637 2008-04-15  Richard Guenther  <rguenther@suse.de>
1638
1639         * params.def (PARAM_MAX_FIELDS_FOR_FIELD_SENSITIVE): Set default
1640         to zero, thus disable creation of SFTs.
1641
1642 2008-04-15  Eric Botcazou  <ebotcazou@adacore.com>
1643
1644         * tree-predcom.c (suitable_reference_p): Return false if the
1645         reference can throw.
1646
1647 2008-04-15  Jakub Jelinek  <jakub@redhat.com>
1648
1649         PR c/35751
1650         * c-decl.c (finish_decl): If extern or static var has variable
1651         size, set TREE_TYPE (decl) to error_mark_node.
1652
1653 2008-04-15  Rafael Espindola  <espindola@google.com>
1654
1655         * fold-const.c (tree_call_nonnegative_warnv_p): Remove local
1656         variable arg1.
1657
1658 2008-04-15  Richard Guenther  <rguenther@suse.de>
1659
1660         * tree-ssa-sccvn.h (vn_reference_lookup): Adjust prototype.
1661         * tree-ssa-sccvn.c (vn_reference_lookup): New parameter maywalk.
1662         (visit_reference_op_load): Do walk vuse-vdef chains on
1663         vn_reference_lookup.
1664         (visit_reference_op_store): But do not here.
1665         * tree-vn.c (vn_lookup): Do not walk vuse-vdef chains on
1666         vn_reference_lookup.
1667         (vn_lookup_with_vuses): But do so here.
1668
1669 2008-04-14  Ian Lance Taylor  <iant@google.com>
1670
1671         * fold-const.c (fold_overflow_warning): Remove assertion.
1672
1673 2008-04-15  Ben Elliston  <bje@au.ibm.com>
1674
1675         * config/alpha/alpha.c (alpha_initialize_trampoline): Remove temp,
1676         temp1 local variables.
1677
1678 2008-04-15  Zuxy Meng  <zuxy.meng@gmail.com>
1679
1680         PR target/35661
1681         * config/i386/winnt.c (i386_pe_section_type_flags): Mark
1682         ".text.unlikely" section as executable.
1683
1684 2008-04-14  James E. Wilson  <wilson@tuliptree.org>
1685
1686         * config/ia64/ia64.c (rtx_needs_barrier): Handle
1687         UNSPEC_FR_SQRT_RECIP_APPROX_RES.
1688         * config/ia64/ia64.c (UNSPEC_FR_SQRT_RECIP_APPROX_RES): Define.
1689         (divsi3_internal, divdi3_internal_lat, divdi3_internal_thr,
1690         divsf3_internal_lat, sqrt_approx, sqrtsf2_internal_thr,
1691         divdf3_internal_lat, sqrtdf2_internal_thr, divxf3_internal_lat,
1692         divxf3_internal_thr, sqrtxf2_internal_thr, recip_approx): Use it.
1693
1694 2008-04-14  Ian Lance Taylor  <iant@google.com>
1695
1696         * flags.h (POINTER_TYPE_OVERFLOW_UNDEFINED): Define.
1697         * fold-const.c (fold_comparison): If appropriate, test
1698         POINTER_TYPE_OVERFLOW_UNDEFINED, and issue an overflow warning.
1699         (fold_binary): Test POINTER_TYPE_OVERFLOW_UNDEFINED when
1700         reassociating a pointer type.
1701         * doc/invoke.texi (Optimize Options): Document that
1702         -fstrict-overflow applies to pointer wraparound.
1703
1704 2008-04-13  Jan Hubicka  <jh@suse.cz>
1705
1706         * m32.c (m32c_pushm_popm): Use crtl->retrun_rtx.
1707
1708 2008-04-12  Andrew Pinski  <pinskia@gmail.com>
1709
1710         * config/rs6000/rs6000.c (compute_save_world_info): Set lr_save_p if
1711         we are going to "save the world".
1712
1713 2008-04-13  Hans-Peter Nilsson  <hp@axis.com>
1714
1715         * config/cris/cris.md ("*andhi_lowpart_non_v32", "*andhi_lowpart_v32")
1716         ("*andqi_lowpart_non_v32", "*andqi_lowpart_v32"): Use "+" for the
1717         operand 0 constraint, not "=".
1718
1719 2008-04-11  James E. Wilson  <wilson@tuliptree.org>
1720
1721         * system.h: Change ASSERT_CHECKING to ENABLE_ASSERT_CHECKING.
1722
1723 2008-04-11  H.J. Lu  <hongjiu.lu@intel.com>
1724
1725         * dse.c (record_store): Use HOST_BITS_PER_WIDE_INT instead
1726         of size of positions_needed * CHAR_BIT.
1727
1728 2008-04-11  H.J. Lu  <hongjiu.lu@intel.com>
1729
1730         PR middle-end/35897
1731         * dse.c (store_info): Change positions_needed to unsigned
1732         HOST_WIDE_INT.
1733         (lowpart_bitmask): New.
1734         (record_store): Cast to unsigned HOST_WIDE_INT for
1735         positions_needed.  Assert width <= size of positions_needed *
1736         CHAR_BIT.  Call lowpart_bitmask to initialize positions_needed.
1737         (check_mem_read_rtx): Use unsigned HOST_WIDE_INT on mask.  Call
1738         lowpart_bitmask to set mask.
1739
1740 2008-04-11  Bernd Schmidt  <bernd.schmidt@analog.com>
1741
1742         * config/bfin/constraints.md: New file.
1743         * config/bfin/bfin.md: Include it.
1744         (adddi3): Use satisfies_constraint functions instead of the old macros.
1745         * config/bfin/bfin.h (REG_CLASS_FROM_LETTER, CONSTRAINT_LEN,
1746         CONST_18UBIT_IMM_P, CONST_16BIT_IMM_P, CONST_16UBIT_IMM_P,
1747         CONST_7BIT_IMM_P, CONST_7NBIT_IMM_P, CONST_5UBIT_IMM_P,
1748         CONST_4BIT_IMM_P, CONST_4UBIT_IMM_P, CONST_3BIT_IMM_P,
1749         CONST_3UBIT_IMM_P, CONST_OK_FOR_K, CONST_OK_FOR_P, CONST_OK_FOR_M,
1750         CONST_OK_FOR_CONSTRAINT_P, CONST_DOUBLE_OK_FOR_LETTER,
1751         EXTRA_CONSTRAINT): Delete.
1752         * config/bfin/predicates.md (highbits_operand, reg_or_7bit_operand,
1753         reg_or_neg7bit_operand): Use satisfies_constraint functions instead
1754         of the old macros.
1755         * config/bfin/bfin.c: Include "tm-constrs.h".
1756         (bfin_secondary_reload, split_load_immediate, bfin_rtx_costs):
1757         Use satisfies_constraint functions instead of the old macros.
1758         * doc/md.texi (Blackfin Constraints): Update file name reference.
1759
1760 2008-04-11  Richard Guenther  <rguenther@suse.de>
1761
1762         PR tree-optimization/35869
1763         * tree-vrp.c (execute_vrp): Move switch statement update after
1764         jump threading.  Schedule another cfg cleanup run.
1765
1766 2008-04-11  Volker Reichelt  <v.reichelt@netcologne.de>
1767
1768         PR c/35744
1769         * attribs.c (decl_attributes): Return early on errorneous node.
1770
1771 2008-04-10  Oleg Ryjkov  <olegr@google.com>
1772
1773         * tree.h (struct tree_base): Added a new flag default_def_flag.
1774         (SSA_NAME_IS_DEFAULT_DEF): Changed to use the new flag.
1775
1776 2008-04-11  Kaz Kojima  <kkojima@gcc.gnu.org>
1777
1778         * config.gcc (need_64bit_hwint): Need 64bit hwint for sh-*-*.
1779
1780 2008-04-10  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
1781
1782         PR target/35768
1783         * pa.md: Define mode iterator P.  Define mode attribute dwc.
1784         (dcacheflush): Update pattern to use iterator P and attribute dwc.
1785         (icacheflush): Likewise.
1786         * pa.h (INITIALIZE_TRAMPOLINE): Use dcacheflushsi/icacheflushsi if
1787         !TARGET_64BIT, and dcacheflushdi/icacheflushdi if TARGET_64BIT.
1788
1789 2008-04-11  Ben Elliston  <bje@au.ibm.com>
1790
1791         * config/spu/spu.c (spu_init_builtins): Mark builtins as nothrow.
1792
1793 2008-04-10  Rafael Espindola  <espindola@google.com>
1794
1795         * tree-vrp.c (extract_range_from_binary_expr): Don't handle
1796         TRUTH_ANDIF_EXPR or TRUTH_ORIF_EXPR.
1797         (extract_range_from_expr): The same.
1798
1799 2008-04-10  Adam Nemet  <anemet@caviumnetworks.com>
1800
1801         * config/mips/mips.md (GPR2): New mode iterator.
1802         (seq): Add comment.
1803         (*seq_<mode>, *seq_<mode>_mips16, *sne_<mode>, *sgt<u>_<mode>,
1804         *sgt<u>_<mode>_mips16, *sge<u>_<mode>, *slt<u>_<mode>,
1805         *slt<u>_<mode>_mips16 *sle<u>_<mode>, *sle<u>_<mode>_mips16):
1806         Rewrite these to take two modes, the mode of comparison and the
1807         mode of the destination.
1808         * config/mips/mips.c (mips_expand_scc): Instead of having
1809         paradoxical subreg as destination, expand "narrowing" scc if mode
1810         of comparison is SI and target is requested in DI mode.
1811         (mips_emit_int_order_test): Update comment.  Make mode of
1812         comparison match CMP0 rather than TARGET.  When creating inverse
1813         target use mode of TARGET.
1814
1815 2008-04-10  Adam Nemet  <anemet@caviumnetworks.com>
1816
1817         * gcov-dump.c (tag_summary): Only print summaries for the first
1818         GCOV_COUNTERS_SUMMABLE counters.
1819
1820 2008-04-10  Uros Bizjak  <ubizjak@gmail.com>
1821
1822         * config/i386/i386.md (absneg): New code iterator.
1823         (absnegprefix): New code attribute.
1824         (<code><mode>2): Macroize expander from abs<mode>2 and neg<mode>2
1825         patterns using absneg code iterator.
1826         (<code>tf2): Macroize expander from abstf2 and negtf2 patterns
1827         using absneg code iterator.
1828         (*<code><mode>2_1): Macroize insn pattern from *abs<mode>2_1 and
1829         *neg<mode>2 patterns using absneg code iterator.
1830         (*<code>extendsfdf2): Macroize insn pattern from *absextendsfdf2 and
1831         *negextendsfdf2 patterns using absneg code iterator.
1832         (*<code>extendsfxf2): Macroize insn pattern from *absextendsfxf2 and
1833         *negextendsfxf2 patterns using absneg code iterator.
1834         (*<code>extendsfdf2): Macroize insn pattern from *absextendsfdf2 and
1835         *negextendsfdf2 patterns using absneg code iterator.
1836         * config/i386/sse.md (<code><mode>2): Macroize expander from
1837         abs<mode>2 and neg<mode>2 patterns using absneg code iterator. 
1838
1839 2008-04-10  Andreas Krebbel  <krebbel1@de.ibm.com>
1840
1841         * config/s390/s390.h: Remove the remains of the recent search
1842         & replace action of current_function_outgoing_args_size.
1843
1844 2008-04-10  Ira Rosen  <irar@il.ibm.com>
1845
1846         PR tree-optimization/35821
1847         * tree-vect-transform.c (vect_create_data_ref_ptr): Add check that
1848         NEW_STMT_LIST is not NULL.
1849
1850 2008-04-09  David Edelsohn  <edelsohn@gnu.org>
1851
1852         PR libstdc++/35597
1853         * toplev.c (process_options): Remove -ffunction-sections debugging
1854         warning.
1855
1856 2008-04-09  Peter Bergner  <bergner@vnet.ibm.com>
1857
1858         PR middle-end/PR28690
1859         * explow.c (break_out_memory_refs): Use simplify_gen_binary rather
1860         than gen_rtx_fmt_ee to perform more canonicalizations.
1861
1862 2008-04-08  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
1863
1864         PR driver/35665
1865         * collect2.c (write_c_file): Don't wrap in "#ifdef __cplusplus".
1866
1867 2008-04-09  Richard Guenther  <rguenther@suse.de>
1868
1869         * tree-cfg.c (verify_stmt): Print complete bogus stmt.
1870         (dump_function_to_file): Dump function arguments with types.
1871
1872 2008-04-08  Richard Guenther  <rguenther@suse.de>
1873
1874         * fold-const.c (fold_widened_comparison): Do not allow
1875         sign-changes that change the result.
1876
1877 2008-04-08  Janis Johnson  <janis187@us.ibm.com>
1878
1879         PR target/35839
1880         * config/rs6000/rs6000.c (rs6000_check_sdmode): Handle additional
1881         kinds of indirect references.
1882
1883 2008-04-08  David Edelsohn  <edelsohn@gnu.org>
1884
1885         * config/rs6000/rs6000.c (rs6000_output_function_epilogue): Update
1886         GNU Fortran language string.
1887
1888 2008-04-08  Rafael Espindola  <espindola@google.com>
1889
1890         * fold-canst.c (tree_call_nonnegative_warnv_p): New.
1891         (tree_invalid_nonnegative_warnv_p): Use tree_call_nonnegative_warnv_p.
1892         * tree.h (tree_call_nonnegative_warnv_p): New.
1893
1894 2008-04-08  Jan Hubicka  <jh@suse.cz>
1895
1896         * function.c (free_after_compilation): Clear out regno_reg_rtx
1897         pointer.
1898
1899 2008-04-08  Peter Bergner  <bergner@vnet.ibm.com>
1900
1901         Revert
1902         2008-04-07  Peter Bergner  <bergner@vnet.ibm.com>
1903
1904         PR middle-end/PR28690
1905         * rtlanal.c: (commutative_operand_precedence): Give SYMBOL_REF's the
1906         same precedence as REG_POINTER and MEM_POINTER operands.
1907
1908 2008-04-08  Richard Guenther  <rguenther@suse.de>
1909
1910         PR middle-end/35834
1911         * tree-ssa-address.c (create_mem_ref): Use POINTER_PLUS_EXPR
1912         for adding index to base.
1913
1914 2008-04-08  Kai Tietz  <kai.tietz@onevision.com>
1915
1916         * config/i386/mingw32.h (ENABLE_EXECUTE_STACK): New.
1917         (MINGW_ENABLE_EXECUTE_STACK): New.
1918         (IN_LIBGCC2): For libgcc include windows.h file for
1919         function declarations.
1920
1921 2008-04-08  Hans-Peter Nilsson  <hp@axis.com>
1922
1923         * config/cris/cris.c (cris_address_cost): For a PLUS, swap tem1
1924         and tem2 if tem1 is not a REG or MULT.
1925
1926 2008-04-08  Jan Hubicka  <jh@suse.cz>
1927
1928         * function.h (incomming_args): Break out of struct function.
1929         (function_subsections): Break out of struct function.
1930         (rtl_data): Add args, subsections fields. Break out outgoing_args_size,
1931         return_rtx and hard_reg_initial_vals from struct function.
1932         Kill inl_max_label_num.
1933         (current_function_pops_args, current_function_args_info,
1934         current_function_args_size, current_function_args_size,
1935         current_function_pretend_args_size,
1936         current_function_outgoing_args_size,
1937         current_function_internal_arg_pointer, current_function_return_rtx):
1938         Kill compatibility accestor macros.
1939         * builtins.c (expand_builtin_apply_args_1): Update.
1940         (expand_builtin_next_arg): Update.
1941         * df-scan.c (df_get_call_refs): Update.
1942         * dbxout.c (dbxout_function_end): Update.
1943         * dwarf2out.c (dwarf2out_switch_text_section): Update.
1944         (output_line_info): Update.
1945         (secname_for_decl): Update.
1946         (dwarf2out_var_location): Update.
1947         * function.c (free_after_compilation): Update.
1948         (assign_parm_find_stack_rtl): Update.
1949         (assign_parms): Update.
1950         (expand_dummy_function_end): Update.
1951         (expand_function_end): Update.
1952         * calls.c (mem_overlaps_already_clobbered_arg_p): Update.
1953         (expand_call): Update.
1954         (emit_library_call_value_1): Update.
1955         (store_one_arg): Update.
1956         * varasm.c (initialize_cold_section_name): Update.
1957         (unlikely_text_section): Update.
1958         (unlikely_text_section_p): Update.
1959         (assemble_start_function): Update.
1960         (assemble_end_function): Update.
1961         (default_section_type_flags): Update.
1962         (switch_to_section): Update.
1963         * integrate.c (set_decl_abstract_flags): Update.
1964         (get_hard_reg_initial_val): Update.
1965         (has_hard_reg_initial_val): Update.
1966         (allocate_initial_values): Update.
1967         * resource.c (init_resource_info): Update.
1968         * config/alpha/alpha.c (NUM_ARGS): Update.
1969         (direct_return): Update.
1970         (alpha_va_start): Update.
1971         (alpha_sa_size): Update.
1972         (alpha_initial_elimination_offset): Update.
1973         (alpha_expand_prologue): Update.
1974         (alpha_start_function): Update.
1975         (alpha_expand_epilogue): Update.
1976         (unicosmk_initial_elimination_offset):
1977         * config/alpha/alpha.md (call expander): Update.
1978         * config/s390/s390.c (s390_register_info): Update.
1979         (s390_register_info): Update.
1980         (s390_frame_info): Update.
1981         (s390_initial_elimination_offset): Update.
1982         (s390_build_builtin_va_list): Update.
1983         (s390_va_start): Update.
1984         * config/spu/spu.c (direct_return): Update.
1985         (spu_expand_prologue): Update.
1986         (spu_initial_elimination_offset): Update.
1987         (spu_build_builtin_va_list): Update.
1988         (spu_va_start): Update.
1989         * config/sparc/sparc.c (sparc_init_modes): Update.
1990         (sparc_compute_frame_size): Update.
1991         (function_value): Update.
1992         * config/m32r/m32r.c (m32r_compute_frame_size): Update.
1993         * config/i386/i386.md (return expander): Update.
1994         * config/i386/i386.c (ix86_va_start): Update.
1995         (ix86_can_use_return_insn_p): Update.
1996         (ix86_compute_frame_layout): Update.
1997         (ix86_expand_epilogue): Update.
1998         * config/sh/sh.c (output_stack_adjust): Update.
1999         (calc_live_regs): Update.
2000         (sh_expand_prologue): Update.
2001         (sh_builtin_saveregs): Update.
2002         (sh_va_start): Update.
2003         (initial_elimination_offset): Update.
2004         (sh_allocate_initial_value): Update.
2005         (sh_function_ok_for_sibcall): Update.
2006         (sh_get_pr_initial_val): Update.
2007         * config/sh/sh.md (return expander): Update.
2008         * config/avr/avr.c (frame_pointer_required_p): UPdate.
2009         * config/crx/crx.c (crx_compute_frame): UPdate.
2010         (crx_initial_elimination_offset): UPdate.
2011         * config/xtensa/xtensa.c (compute_frame_size): Update
2012         (xtensa_builtin_saveregs): Update.
2013         (xtensa_va_start): Update.
2014         (order_regs_for_local_alloc): Update.
2015         * config/stormy16/stormy16.c (xstormy16_compute_stack_layout): Update.
2016         (xstormy16_expand_builtin_va_start): Update.
2017         * config/fr30/fr30.c (fr30_compute_frame_size): Update.
2018         * config/m68hc11/m68hc11.md (return expanders): Update.
2019         * config/m68hc11/m68hc11.c (expand_prologue): Update.
2020         (expand_epilogue): Update.
2021         * config/cris/cris.c (cris_initial_frame_pointer_offset): Update.
2022         (cris_simple_epilogue): Update.
2023         (cris_expand_prologue): Update.
2024         (cris_expand_epilogue): Update.
2025         * config/iq2000/iq2000.c (iq2000_va_start): Update.
2026         (compute_frame_size): Update.
2027         * config/mt/mt.c (mt_compute_frame_size): Update.
2028         * config/mn10300/mn10300.c (expand_prologue): Update.
2029         (expand_epilogue): Update.
2030         (initial_offset): Update.
2031         (mn10300_builtin_saveregs):
2032         * config/mn10300/mn10300.md (return expander): Update.
2033         * config/ia64/ia64.c (ia64_compute_frame_size): Update.
2034         (ia64_initial_elimination_offset): Update.
2035         (ia64_initial_elimination_offset): Update.
2036         (ia64_expand_prologue): Update.
2037         * config/m68k/m68k.md (return expander): Update.
2038         * config/rs6000/rs6000.c (rs6000_va_start): Update.
2039         (rs6000_stack_info): Update.
2040         * config/mcore/mcore.c (layout_mcore_frame): Update.
2041         (mcore_expand_prolog): Update.
2042         * config/arc/arc.c (arc_compute_frame_size): Update.
2043         * config/score/score3.c (score3_compute_frame_size): Update.
2044         * config/score/score7.c (score7_compute_frame_size): Update.
2045         * config/arm/arm.c (use_return_insn): Update.
2046         (thumb_find_work_register): Update.
2047         (arm_compute_save_reg_mask): Update.
2048         (arm_output_function_prologue): Update.
2049         (arm_output_epilogue): Update.
2050         (arm_size_return_regs): Update.
2051         (arm_get_frame_offsets): Update.
2052         (arm_expand_prologue): Update.
2053         (thumb_exit): Update.
2054         (thumb_unexpanded_epilogue): Update.
2055         (thumb1_output_function_prologue): Update.
2056         * config/pa/pa.md (return expander): Update.
2057         * config/pa/pa.c (compute_frame_size): Update.
2058         (hppa_builtin_saveregs): Update.
2059         * config/mips/mips.c (mips_va_start): Update.
2060         (mips16_build_function_stub): Update.
2061         (mips_compute_frame_info): Update.
2062         (mips_restore_gp): Update.
2063         (mips_output_function_prologue): Update.
2064         (mips_expand_prologue): Update.
2065         * config/v850/v850.c (compute_frame_size): Update.
2066         (expand_prologue): * config/mmix/mmix.c (along): update.
2067         (mmix_initial_elimination_offset): update.
2068         (mmix_reorg): update.
2069         (mmix_use_simple_return): update.
2070         (mmix_expand_prologue): update.
2071         (mmix_expand_epilogue): Update.
2072         * config/bfin/bfin.c (bfin_initial_elimination_offset): Update.
2073         (emit_link_insn): Update.
2074
2075 2008-04-08  Anatoly Sokolov <aesok@post.ru>
2076
2077         * config/avr/avr.h (TARGET_CPU_CPP_BUILTINS): Define 
2078         __AVR_HAVE_EIJMP_EICALL__ macro if device have EIJMP and EICALL 
2079         instructions.
2080         * config/avr/avr.c (avr_mcu_types): Set AVR31 architecture for 
2081         atmega103 device.
2082
2083 2008-04-07  Jan Hubicka  <jh@suse.cz>
2084
2085         * function.h (rtl): Rename to x_rtl.
2086         (crtl): New define.
2087         (return_label, naked_return_label, stack_slot_list, parm_birth_insn,
2088         frame_offset, stack_check_probe_note, arg_pointer_save_area,
2089         used_temp_slots avail_temp_slots, temp_slot_level,
2090         nonlocal_goto_handler_labels): Update accesstors.
2091         (rtl): New global variable.
2092         (struct function): Move some fileds to rtl_data.
2093         (get_arg_pointer_save_area): Update prototype.
2094         * builtins.c (expand_builtin_setjmp_receiver): Update call of
2095         get_arg_pointer_save_area.
2096         * expr.c (init_expr): Update
2097         * function.c (get_frame_size): Update
2098         (assign_stack_local): Update
2099         (expand_function_end): Update.
2100         (get_art_pointer_save_area): Update
2101         * function.h 
2102         * emit-rtl.c (rtl): Declare.
2103         (regno_reg_rtx): Declare.
2104         (first_insn, last_insn, cur_insn_uid, last_location, first_label_num):
2105         Update.
2106         (gen_reg_rtx): Update.
2107         * varasm.c (n_deferred_constatns): Update accestor.
2108         (init_varasm_status): Do not allocate varasm_status.
2109         (force_const_mem, get_pool_size, output_constant_pool): Update.
2110         * stmt.c (force_label_rtx): Do not use x_ prefixes.
2111         (expand_nl_goto_receiver): Update get_arg_pointer_save_area.
2112         * m32c/m32.c (m32c_leaf_function_p, m32c_function_needs_enter): Update.
2113         * sparc/sparc.h (INIT_EXPANDERS): Update.
2114         * ia64/ia64.h (INIT_EXPANDERS): Update.
2115
2116 2008-04-07  James E. Wilson  <wilson@tuliptree.org>
2117
2118         * reload.c (push_secondary_reload): Add missing break to for loop.
2119
2120 2008-04-07  Peter Bergner  <bergner@vnet.ibm.com>
2121
2122         PR middle-end/PR28690
2123         * rtlanal.c: Update copyright years.
2124         (commutative_operand_precedence): Give SYMBOL_REF's the same precedence
2125         as REG_POINTER and MEM_POINTER operands.
2126         * emit-rtl.c (gen_reg_rtx_and_attrs): New function.
2127         (set_reg_attrs_from_value): Call mark_reg_pointer as appropriate.
2128         * rtl.h (gen_reg_rtx_and_attrs): Add prototype for new function.
2129         * gcse.c: Update copyright years.
2130         (pre_delete): Call gen_reg_rtx_and_attrs.
2131         (hoist_code): Likewise.
2132         (build_store_vectors): Likewise.
2133         (delete_store): Likewise.
2134         * loop-invariant.c (move_invariant_reg): Likewise.
2135         Update copyright years.
2136
2137 2008-04-07  Uros Bizjak  <ubizjak@gmail.com>
2138
2139         * config/i386/i386.md ("*sse_prologue_save_insn"): Use braced output
2140         control string instead of quoted.
2141
2142 2008-04-07  Kenneth Zadeck <zadeck@naturalbridge.com>
2143
2144         * doc/rtl.texi: Rewrite of subreg section.
2145
2146 2008-04-07  Kai Tietz  <kai.tietz@onevision.com>
2147
2148         PR/35842
2149         * config/i386/i386.c (legitimize_pic_address): Add treating
2150         of dllimport SYM_REF's.
2151         (legitimize_dllimport_symbol): Add prototype.
2152
2153 2008-04-07  Eric Botcazou  <ebotcazou@adacore.com>
2154
2155         * fold-const.c (fold) <ARRAY_REF>: New case.  Try to fold constant
2156         reference in constructor with non self-referential type.
2157
2158 2008-04-07  Eric Botcazou  <ebotcazou@adacore.com>
2159
2160         Removal of Return with Depressed Stack Pointer support
2161         * tree.h (TYPE_RETURNS_STACK_DEPRESSED): Delete.
2162         (ECF_SP_DEPRESSED): Likewise.
2163         (ECF_LIBCALL_BLOCK, ECF_NOVOPS): Adjust.
2164         * calls.c (emit_call_1): Do not test ECF_SP_DEPRESSED.
2165         (flags_from_decl_or_type): Do not test TYPE_RETURNS_STACK_DEPRESSED.
2166         (expand_call): Do not test ECF_SP_DEPRESSED.
2167         * dse.c (dse_step0): Do not test TYPE_RETURNS_STACK_DEPRESSED.
2168         * function.c (keep_stack_depressed): Delete.
2169         (handle_epilogue_set): Likewise.
2170         (update_epilogue_consts): Likewise.
2171         (emit_equiv_load): Likewise.
2172         (thread_prologue_and_epilogue_insns): Remove support for Return with
2173         Depressed Stack Pointer.
2174         * print-tree.c (print_node): Do not test TYPE_RETURNS_STACK_DEPRESSED.
2175
2176 2008-04-06  Richard Guenther  <rguenther@suse.de>
2177
2178         PR tree-optimization/35400
2179         * tree-vrp.c (vrp_evaluate_conditional): Only query value-range
2180         information from SSA_NAMEs.
2181
2182 2008-04-06  Anatoly Sokolov <aesok@post.ru>
2183
2184         * config/avr/avr.h (avr_mega_p): Remove declaration.
2185         (AVR_MEGA): Remove macro.
2186         * config/avr/avr.c (avr_mega_p): Remove variable.
2187         (avr_override_options): Remove inicializion of avr_mega_p.
2188         Use AVR_HAVE_JMP_CALL instead of AVR_MEGA.
2189         (print_operand): Use AVR_HAVE_JMP_CALL instead of AVR_MEGA.
2190         (avr_jump_mode): (Ditto.).
2191         (avr_output_progmem_section_asm_op): (Ditto.).
2192         (avr_asm_init_sections): (Ditto.).
2193         (avr_asm_init_sections): (Ditto.).
2194         (avr_rtx_costs): (Ditto.).
2195         * config/avr/avr.md: (Ditto.).
2196         * config/avr/avr.h: Use '__AVR_HAVE_JMP_CALL__' instead of 
2197         '__AVR_MEGA__'.
2198
2199 2008-04-06  Richard Guenther  <rguenther@suse.de>
2200
2201         PR tree-optimization/35842
2202         * tree-ssa-address.c (fixed_address_object_p): Adjust to match
2203         is_gimple_invariant_address.
2204
2205 2008-04-06  Francois-Xavier Coudert  <fxcoudert@gcc.gnu.org>
2206
2207         * gcc.c (default_compilers): Sync Fortran extensions list with
2208         that in fortran/lang-specs.h.
2209         * doc/invoke.texi: Likewise.
2210         * dbxout.c (get_lang_number): Use "GNU Fortran" in "GNU F95".
2211         * dwarf2out.c (gen_compile_unit_die): Likewise.
2212
2213 2008-04-06  Tom G. Christensen  <tgc@jupiterrise.com>
2214
2215         * gthr-posix95.h (__gthread_cond_wait_recursive): Add missing &.
2216
2217 2008-04-05  Uros Bizjak  <ubizjak@gmail.com>
2218
2219         PR target/12329
2220         * config/i386/i386.c (ix86_function_regparm): Error if regparm(3)
2221         attribute is used for nested functions.
2222
2223 2008-04-05  Jan Hubicka  <jh@suse.cz>
2224
2225         * emit-rtl.c (init_emit): xcalloc regno_pointer_align.
2226
2227         * tree-dump.c (dump_enable_all): Remove prototype; do not accept
2228         letter argument.
2229         (dump_files): Update.
2230         (enable_rtl_dump_file): Do not accept letter argument.
2231         * tree-pass.h (dump_file_info): Remove letter argument.
2232         * toplev.c (decode_d_option): Update -da handling.
2233         * toplev.h (enable_rtl_dump_file): Update prototype.
2234         * passes.c (register_one_dump_file): Do not accept IPA argument; work
2235         it out based on pass type.
2236         (register_dump_files_1): Likewise.
2237         (init_optimization_passes): Update register_one_dump_file calls.
2238         (execute_one_pass): Sanity check that IPA passes are called at IPA
2239         level and RTL passes at RTL level.
2240         (execute_pass_list): IPA pass can not be after or subpass of
2241         GIMPLE/RTL pass.
2242         (execute_ipa_pass_list): Handle IPA subpasses of IPA subpasses and
2243         disallov RTL subpasses of IPA subpasses.
2244
2245 2008-04-05  Ben Elliston  <bje@au.ibm.com>
2246
2247         * tree-cfg.c (need_fake_edge_p): Return false for calls to
2248         builtins that return exactly once and do not throw. Cache call to
2249         call_expr_flags.
2250
2251 2008-04-04 Andy Hutchinson <hutchinsonandy@aim.com>
2252
2253         PR rtl-optimization/34916
2254         PR middle-end/35519
2255         * combine.c (create_log_links): Do not create duplicate LOG_LINKS
2256         between instruction pairs.
2257
2258 2008-04-04  Naveen.H.S  <naveen.hs@kpitcummins.com>
2259
2260         * doc/invoke.texi: Document -mbitops for SH.
2261         * config/sh/constraints.md (K03, K12, Sbv, Sbw): New constraints.
2262         * config/sh/predicates.md (bitwise_memory_operand): New predicate.
2263         * config/sh/sh.c (print_operand): Add %t operand code.
2264         * config/sh/sh.h (GO_IF_LEGITIMATE_INDEX): Add condition for SH2A.
2265         * config/sh/sh.md (*iorsi3_compact): Fix condition for SH2A.
2266         (extendqisi2_compact): Add the alternative for SH2A 4-byte mov.b.
2267         (extendqihi2): Likewise.
2268         (movqi_i): Likewise.
2269         (insv): Use bset, bclr and bst instructions for SH2A if possible.
2270         (extv): Use bld instruction for SH2A if possible.
2271         (extzv): Likewise.
2272         (bclr_m2a, bclrmem_m2a, bset_m2a, bsetmem_m2a, bst_m2a, bld_m2a,
2273         bldsign_m2a, bld_reg, *bld_regqi, band_m2a, bandreg_m2a,
2274         bor_m2a, borreg_m2a, bxor_m2a, bxorreg_m2a): New insns.
2275         (bset.b, bclr.b): Define peepholes.
2276         * config/sh/sh.opt (mbitops): New option.
2277
2278 2008-04-04  Janis Johnson  <janis187@us.ibm.com>
2279
2280         PR target/35620
2281         * config/rs6000/rs6000.c (rs6000_check_sdmode): Handle indirect ref
2282         and view convert expression.
2283
2284 2008-04-04  Jakub Jelinek  <jakub@redhat.com>
2285
2286         PR target/35364
2287         * tree-cfg.c (remove_useless_stmts_1): Handle OMP_* containers.
2288
2289 2008-04-04  H.J. Lu  <hongjiu.lu@intel.com>
2290
2291         * config.gcc (extra_headers): Add wmmintrin.h for x86 and x86-64.
2292
2293         * config/i386/cpuid.h (bit_AES): New.
2294         (bit_PCLMUL): Likewise.
2295
2296         * config/i386/i386.c (pta_flags): Add PTA_AES and PTA_PCLMUL.
2297         (override_options): Handle PTA_AES and PTA_PCLMUL.  Enable
2298         SSE2 if AES or PCLMUL is enabled.
2299         (ix86_builtins): Add IX86_BUILTIN_AESENC128,
2300         IX86_BUILTIN_AESENCLAST128, IX86_BUILTIN_AESDEC128,
2301         IX86_BUILTIN_AESDECLAST128, IX86_BUILTIN_AESIMC128,
2302         IX86_BUILTIN_AESKEYGENASSIST128 and IX86_BUILTIN_PCLMULQDQ128.
2303         (bdesc_sse_3arg): Add IX86_BUILTIN_PCLMULQDQ128.
2304         (bdesc_2arg): Add IX86_BUILTIN_AESENC128,
2305         IX86_BUILTIN_AESENCLAST128, IX86_BUILTIN_AESDEC128,
2306         IX86_BUILTIN_AESDECLAST128 and IX86_BUILTIN_AESKEYGENASSIST128.
2307         (bdesc_1arg): Add IX86_BUILTIN_AESIMC128.
2308         (ix86_init_mmx_sse_builtins): Define __builtin_ia32_aesenc128,
2309         __builtin_ia32_aesenclast128, __builtin_ia32_aesdec128,
2310         __builtin_ia32_aesdeclast128,__builtin_ia32_aesimc128,
2311         __builtin_ia32_aeskeygenassist128 and
2312         __builtin_ia32_pclmulqdq128.
2313         * config/i386/i386.c (ix86_expand_binop_imm_builtin): New.
2314         (ix86_expand_builtin): Use it for IX86_BUILTIN_PSLLDQI128 and
2315         IX86_BUILTIN_PSRLDQI128.  Handle IX86_BUILTIN_AESKEYGENASSIST128.
2316
2317         * config/i386/i386.h (TARGET_AES): New.
2318         (TARGET_PCLMUL): Likewise.
2319         (TARGET_CPU_CPP_BUILTINS): Handle TARGET_AES and TARGET_PCLMUL.
2320
2321         * config/i386/i386.md (UNSPEC_AESENC): New.
2322         (UNSPEC_AESENCLAST): Likewise.
2323         (UNSPEC_AESDEC): Likewise.
2324         (UNSPEC_AESDECLAST): Likewise.
2325         (UNSPEC_AESIMC): Likewise.
2326         (UNSPEC_AESKEYGENASSIST): Likewise.
2327         (UNSPEC_PCLMUL): Likewise.
2328
2329         * config/i386/i386.opt (maes): New.
2330         (mpclmul): Likewise.
2331
2332         * config/i386/sse.md (aesenc): New pattern.
2333         (aesenclast): Likewise.
2334         (aesdec): Likewise.
2335         (aesdeclast): Likewise.
2336         (aesimc): Likewise.
2337         (aeskeygenassist): Likewise.
2338         (pclmulqdq): Likewise.
2339
2340         * config/i386/wmmintrin.h: New.
2341
2342         * doc/extend.texi: Document AES and PCLMUL built-in function.
2343
2344         * doc/invoke.texi: Document -maes and -mpclmul.
2345
2346 2008-04-04  Paolo Bonzini  <bonzini@gnu.org>
2347
2348         * function.c (free_after_parsing): Replace with
2349         cxx_push_function_context from C++ front-end.
2350         (allocate_struct_function): Don't call langhook.
2351         * langhooks.h (struct lang_hooks_for_functions): Delete.
2352         (struct lang_hooks): Add back missing_noreturn_ok_p here, delete
2353         member "function".
2354         * langhooks-def.h (LANG_HOOKS_MISSING_NORETURN_OK_P): Add.
2355         (LANG_HOOKS_FUNCTION_INIT, LANG_HOOKS_FUNCTION_FINAL,
2356         LANG_HOOKS_FUNCTION_MISSING_NORETURN_OK_P,
2357         LANG_HOOKS_FUNCTION_INITIALIZER): Delete.
2358         (LANG_HOOKS_INITIALIZER): Add LANG_HOOKS_MISSING_NORETURN_OK_P,
2359         remove LANG_HOOKS_FUNCTION_INITIALIZER.
2360         * tree-cfg.c: Adjust call to missing_noreturn_ok_p langhook.
2361
2362         * c-objc-common.h (LANG_HOOKS_FUNCTION_MISSING_NORETURN_OK_P):
2363         Rename to LANG_HOOKS_MISSING_NORETURN_OK_P.
2364         
2365 2008-04-04  Jakub Jelinek  <jakub@redhat.com>
2366
2367         PR c/35440
2368         * c-pretty-print.c (pp_c_initializer_list): Handle CONSTRUCTOR
2369         for all types.
2370
2371 2008-04-04  Richard Guenther  <rguenther@suse.de>
2372
2373         PR middle-end/35823
2374         * fold-const.c (optimize_minmax_comparison): Use the correct
2375         type for the constant in the simplified comparison.
2376
2377 2008-04-04  Zuxy Meng <zuxy.meng@gmail.com>
2378
2379         * config/i386/driver-i386.c (describe_cache): Add l2_sizekb argument.
2380         Pass L2 size as "--param l2-cache-size" to the compiler.
2381         (decode_l2_cache): New function to decode L2 cache parameters using
2382         0x8000006 extended cpuid function.
2383         (detect_caches_amd): Determine parameters of L2 cache using
2384         decode_l2_caches function.
2385         (decode_caches_intel): Decode L2 cache parameters.
2386         (detect_caches_intel): Determine L2 cache parameters using
2387         decode_caches_intel and decode_l2_caches functions.
2388
2389 2008-04-03  Bob Wilson  <bob.wilson@acm.org>
2390
2391         * config/xtensa/xtensa.c (xtensa_secondary_reload_class): Use a
2392         secondary input reload for subword loads from the constant pool.
2393
2394 2008-04-03  Janis Johnson  <janis187@us.ibm.com>
2395
2396         PR target/35713
2397         * config/rs6000/rs6000.c (rs6000_gimplify_va_arg): Use integer
2398           constants of the appropriate size for runtime calculations.
2399
2400         PR c/35712
2401         * dfp.c (decimal_from_decnumber): Retain trailing zeroes for
2402           decimal-float literal constant zero.
2403
2404 2008-04-03  Jakub Jelinek  <jakub@redhat.com>
2405
2406         PR c/35738
2407         * c-parser.c (c_parser_omp_atomic): Call
2408         default_function_array_conversion on the RHS.
2409
2410         PR middle-end/35818
2411         * omp-low.c (scan_sharing_clauses) <case OMP_CLAUSE_SHARED>: Don't
2412         call is_variable_sized if decl has incomplete type.
2413
2414 2008-04-03  H.J. Lu  <hongjiu.lu@intel.com>
2415
2416         * config/i386/i386-protos.h (ix86_aligned_p): Removed.
2417
2418 2008-04-03  Adam Nemet  <anemet@caviumnetworks.com>
2419
2420         * config/mips/mips.md (any_gt, any_ge, any_lt, any_le): New code
2421         iterators.
2422         (u): Add attribute values for gt, gtu, ge, geu, lt, ltu, le and leu.
2423         (sgt<u>): Merge sgt and sgtu into new expander.
2424         (sgt, sgtu): Remove expanders.
2425         (*sgt<u>_<mode>): Merge *sgt_<mode> and *sgtu_<mode> into new pattern.
2426         (*sgt_<mode>, *sgtu_<mode>): Remove patterns.
2427         (*sgt<u>_<mode>_mips16): Merge *sgt_<mode>_mips16 and
2428         *sgtu_<mode>_mips16 into new pattern.
2429         (*sgt_<mode>_mips16, *sgtu_<mode>_mips16): Remove patterns.
2430         (sge<u>): Merge sge and sgeu into new expander.
2431         (sge, sgeu): Remove expanders.
2432         (*sge<u>_<mode>): Merge *sge_<mode> and second *sge_<mode> into
2433         new pattern.
2434         (*sge_<mode>, second *sge_<mode>): Remove patterns.
2435         (slt<u>): Merge slt and sltu into new expander.
2436         (slt, sltu): Remove expanders.
2437         (*slt<u>_<mode>): Merge *slt_<mode> and *sltu_<mode> into new pattern.
2438         (*slt_<mode>, *sltu_<mode>): Remove patterns.
2439         (*slt<u>_<mode>_mips16): Merge *slt_<mode>_mips16 and
2440         *sltu_<mode>_mips16 into new pattern.
2441         (*slt_<mode>_mips16, *sltu_<mode>_mips16): Remove patterns.
2442         (sle<u>): Merge sle and sleu into new expander.
2443         (sle, sleu): Remove expanders.
2444         (*sle<u>_<mode>): Merge *sle_<mode> and *sleu_<mode> into new pattern.
2445         (*sle_<mode>, *sleu_<mode>): Remove patterns.
2446         (*sle<u>_<mode>_mips16): Merge *sle_<mode>_mips16 and
2447         *sleu_<mode>_mips16 into new pattern.
2448         (*sle_<mode>_mips16, *sleu_<mode>_mips16): Remove patterns.
2449
2450 2008-04-03  Jan Hubicka  <jh@suse.cz>
2451
2452         PR tree-optimization/35795
2453         * alpha/alpha.c (alpha_output_mi_thunk_osf): Free after compilation.
2454         * sparc/sparc.c (sparc_output_mi_thunk): Likewise.
2455         * ia64/ia64.c (ia64_output_mi_thunk): Likewise.
2456         * m68k/m68k.c (m68k_output_mi_thunk): Likewise.
2457         * score/score3.c (score3_output_mi_thunk): Likewise.
2458         * score/score7.c (score7_output_mi_thunk): Likewise.
2459         * mips/mips.c (mips_output_mi_thunk): Likewise.
2460
2461 2008-04-03  Richard Guenther  <rguenther@suse.de>
2462
2463         * tree-vrp.c (extract_range_from_unary_expr): Handle all
2464         conversions.  Simplify code.
2465
2466 2008-04-03  Kaz Kojima  <kkojima@gcc.gnu.org>
2467
2468         * config/sh/sh.c (sh_output_mi_thunk): Free cfun.
2469
2470 2008-04-03  Tom Tromey  <tromey@redhat.com>
2471             Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
2472
2473         * config/m68k/t-uclinux (generated_files): Add sysroot-suffix.h.
2474         * config/bfin/t-bfin-linux (generated_files): Add
2475         linux-sysroot-suffix.h.
2476         * doc/install.texi (Prerequisites): Require make 3.80.
2477         * doc/sourcebuild.texi (Front End Directory): Document new
2478         variable.
2479         * Makefile.in (generated_files): New variable.
2480         (ALL_HOST_OBJS): New variable.
2481         ($(ALL_HOST_OBJS)): New target.
2482
2483 2008-04-03  Paolo Bonzini  <bonzini@gnu.org>
2484
2485         * tree-inline.c (copy_generic_body, copy_decl_no_change): Export.
2486         (remap_block): Call id->transform_lang_insert_block instead
2487         of langhook.
2488         (optimize_inline_calls, unsave_expr_now, tree_function_versioning):
2489         Set id.transform_lang_insert_block to NULL.
2490         (clone_body): Move to cp/optimize.c
2491         * tree-inline.h (struct copy_body_data): Change
2492         transform_lang_insert_block to function pointer.
2493         (copy_generic_body, copy_decl_no_change): Export.
2494         * langhooks.h (struct lang_hooks_for_decls): Kill insert_block.
2495         * langhooks-def.h (LANG_HOOKS_INSERT_BLOCK): Kill.
2496         (LANG_HOOKS_DECLS): Remove LANG_HOOKS_INSERT_BLOCK.
2497
2498         * c-tree.h (insert_block): Kill.
2499         * c-decl.c (insert_block): Kill.
2500
2501 2008-04-03  Paolo Bonzini  <bonzini@gnu.org>
2502
2503         * c-objc-common.h (LANG_HOOKS_FUNCTION_ENTER_NESTED,
2504         LANG_HOOKS_FUNCTION_LEAVE_NESTED): Delete.
2505         * c-tree.h (c_push_function_context, c_pop_function_context): Remove
2506         argument.
2507         * c-decl.c (c_push_function_context, c_pop_function_context): Remove
2508         argument, call {push,pop}_function_context from here.
2509         * c-parser.c: Use c_{push,pop}_function_context.
2510
2511         * function.c (push_function_context_to): Move meat ...
2512         (push_function_context): ... here.  Simplify.
2513         * function.c (pop_function_context_from): Move meat ...
2514         (pop_function_context): ... here.  Simplify.
2515         * langhooks.h (struct lang_hooks_for_functions): Remove enter_nested,
2516         leave_nested).
2517         * langhooks-def.h (LANG_HOOKS_FUNCTION_ENTER_NESTED,
2518         LANG_HOOKS_FUNCTION_LEAVE_NESTED): Delete.
2519         (LANG_HOOKS_FUNCTION_INITIALIZER): Delete them from here.
2520         * tree.h (push_function_context_to, pop_function_context_from): Remove.
2521
2522 2008-04-03  Ben Elliston  <bje@au.ibm.com>
2523
2524         * expmed.c (extract_force_align_mem_bit_field): Remove.
2525
2526 2008-04-03  Richard Guenther  <rguenther@suse.de>
2527
2528         PR middle-end/35800
2529         * expr.h (try_casesi): Adjust prototype.
2530         * expr.c (try_casesi): Take fallback label as extra parameter.
2531         Use that for gen_casesi if default_label is NULL.
2532         * stmt.c (expand_case): Pass fallback label to try_casesi,
2533         make sure to fill gaps with a fallback label if default_label
2534         is not present.
2535
2536 2008-04-03  Dominique d'Humieres <dominiq@lps.ens.fr>
2537
2538         PR target/35801
2539         * config/rs6000/rs6000.c (rs6000_output_mi_thunk): Free cfun.
2540
2541 2008-04-03  Ben Elliston  <bje@au.ibm.com>
2542
2543         * expmed.c (extract_split_bit_field): Remove if (0) code.
2544         * tree-ssa-structalias.c (do_sd_constraint): Likewise.
2545         (do_ds_constraint): Likewise.
2546
2547 2008-04-02  Joseph Myers  <joseph@codesourcery.com>
2548
2549         * doc/cppopts.texi (-dU): Document.
2550         * c-common.h (flag_dump_macros): Update comment.
2551         * c-opts.c (handle_OPT_d): Handle -dU.
2552         * c-ppoutput.c (macro_queue, define_queue, undef_queue,
2553         dump_queued_macros, cb_used_define, cb_used_undef): New.
2554         (init_pp_output): Handle -dU.
2555         (cb_line_change): Call dump_queued_macros.
2556         * toplev.c (decode_d_option): Accept -dU as preprocessor option.
2557
2558 2008-04-02  Anatoly Sokolov <aesok@post.ru>
2559
2560         * config/avr/predicates.md (io_address_operand): New predicate. 
2561         * config/avr/avr-protos.h (avr_io_address_p): Remove declaration.
2562         * config/avr/avr.c (avr_io_address_p): Remove function.
2563         (out_movqi_r_mr): Use 'io_address_operand' predicate instead of 
2564         'avr_io_address_p' function.
2565         (out_movhi_r_mr): (Ditto.).
2566         (out_movqi_mr_r): (Ditto.).
2567         (out_movhi_mr_r): (Ditto.).
2568         (avr_address_cost): (Ditto.).
2569
2570 2008-04-02  Uros Bizjak  <ubizjak@gmail.com>
2571
2572         * config/i386/i386.md (*float<SSEMODEI24:mode><X87MODEF:mode>2_1):
2573         Emit gen_floatdi<X87MODEF:mode>2_i387_with_xmm for DImode values
2574         in 32bit mode when XMM registers are available to avoid store
2575         forwarding stalls.
2576         (floatdi<X87MODEF:mode>2_i387_with_xmm): New insn pattern and
2577         corresponding post-reload splitters.
2578
2579 2008-04-02  H.J. Lu  <hongjiu.lu@intel.com>
2580
2581         * config/i386/i386.c (bdesc_sse_3arg): Add __builtin_ia32_shufps
2582         and __builtin_ia32_shufpd.  Provide __builtin_ia32_roundsd and
2583         __builtin_ia32_roundss.
2584         (ix86_init_mmx_sse_builtins): Remove __builtin_ia32_shufps,
2585         __builtin_ia32_shufpd, __builtin_ia32_roundsd and
2586         __builtin_ia32_roundss.
2587         (ix86_expand_builtin): Don't handle IX86_BUILTIN_SHUFPS and
2588         IX86_BUILTIN_SHUFPD here.
2589
2590 2008-04-02  H.J. Lu  <hongjiu.lu@intel.com>
2591
2592         * config/i386/i386.md (plogic): New.
2593         (plogicprefix): Likewise.
2594
2595         * config/i386/mmx.md (mmx_<code><mode>3): New.
2596         (mmx_and<mode>3): Removed.
2597         (mmx_ior<mode>3): Likewise.
2598         (mmx_xor<mode>3): Likewise.
2599
2600         * config/i386/sse.md (<code><mode>3): New.
2601         (*<code><mode>3): Likewise.
2602         (*<code><mode>3): Likewise.
2603         (<code><mode>3): Likewise.
2604         (*sse_<code><mode>3): Likewise.
2605         (*sse2_<code><mode>3): Likewise.
2606         (<code>tf3): Likewise.
2607         (*<code>tf3): Likewise.
2608         (and<mode>3): Likewise.
2609         (*and<mode>3): Likewise.
2610         (ior<mode>3): Removed.
2611         (*ior<mode>3): Likewise.
2612         (xor<mode>3): Likewise.
2613         (*xor<mode>3): Likewise.
2614         (*and<mode>3): Likewise.
2615         (*ior<mode>3): Likewise.
2616         (*xor<mode>3): Likewise.
2617         (and<mode>3): Likewise.
2618         (*sse_and<mode>3): Likewise.
2619         (*sse2_and<mode>3): Likewise.
2620         (andtf3): Likewise.
2621         (*andtf3): Likewise.
2622         (ior<mode>3): Likewise.
2623         (*sse_ior<mode>3): Likewise.
2624         (*sse2_ior<mode>3): Likewise.
2625         (iortf3): Likewise.
2626         (*iortf3): Likewise.
2627         (xor<mode>3): Likewise.
2628         (*sse_xor<mode>3): Likewise.
2629         (*sse2_xor<mode>3): Likewise.
2630         (xortf3): Likewise.
2631         (*xortf3): Likewise.
2632
2633 2008-04-02  Richard Guenther  <rguenther@suse.de>
2634
2635         PR tree-optimization/14495
2636         PR tree-optimization/34793
2637         * tree-vrp.c (struct switch_update): New structure.
2638         (to_remove_edges, to_update_switch_stmts): New VECs.
2639         (simplify_switch_using_ranges): New function.  Remove not taken
2640         case labels and edges.
2641         (simplify_stmt_using_ranges): Call it.
2642         (identify_jump_threads): Mark edges we have queued for removal
2643         so we don't thread them.
2644         (execute_vrp): Remove edges queued for removal, update SWITCH_STMT
2645         case label vector.
2646         * tree-cfg.c (group_case_labels): Deal with missing default label.
2647         (tree_verify_flow_info): Allow missing default label.
2648         * stmt.c (emit_case_bit_tests): Deal with NULL default_label.
2649         (emit_case_nodes): Likewise.
2650         (expand_case): Do not rely on the default label to be present.
2651         * expr.c (try_casesi): Deal with NULL default_label.
2652         (do_tablejump): Likewise.
2653
2654 2008-04-02  Richard Guenther  <rguenther@suse.de>
2655
2656         PR tree-optimization/14495
2657         * tree-vrp.c (vrp_visit_cond_stmt): Do not handle
2658         SWITCH_EXPR here ...
2659         (vrp_visit_switch_stmt): ... but here (new function).
2660         (find_case_label_index): New helper function.
2661         (vrp_visit_stmt): Dispatch to vrp_visit_switch_stmt.
2662
2663 2008-04-02  Paolo Bonzini  <bonzini@gnu.org>
2664
2665         * fwprop.c: Fix ISO-C99ism.
2666
2667 2008-04-02  Paolo Bonzini  <bonzini@gnu.org>
2668
2669         PR bootstrap/35752
2670         * Makefile.in (objdir): Set it here.
2671         * configure.ac: Not here.  Find dynamic linker characteristics.
2672         * exec-tool.in: Use them.
2673         * aclocal.m4: Regenerate.
2674         * configure: Regenerate.
2675
2676 2008-04-02  Paolo Bonzini  <bonzini@gnu.org>
2677
2678         * expr.c (expand_var): Delete it.
2679         * expr.h (expand_var): Delete prototype.
2680         * function.c (expand_function_start): Use expand_decl instead.
2681         * cfgexpand.c (expand_one_static_var, expand_one_var): Don't call
2682         langhook.
2683
2684 2008-04-02  Andy Hutchinson <hutchinsonamdy@aim.com>
2685
2686         PR rtl-optimization/35542
2687         * fwprop.c (forward_propagate_and_simplify): Replace
2688         loc_reg_mentioned_in_p with reg_mentioned_p.
2689
2690 2008-04-02  Paolo Bonzini  <bonzini@gnu.org>
2691
2692         PR rtl-optimization/35281
2693         * fwprop.c (PR_CAN_APPEAR, PR_HANDLE_MEM): New.
2694         (propagate_rtx_1): Handle PR_HANDLE_MEM.
2695         (propagate_rtx): Pass PR_HANDLE_MEM if appropriate.
2696         (varying_mem_p): Move above propagate_rtx.
2697         (all_uses_available_at): Do not check MEMs.
2698
2699 2008-04-02  Rafael Espindola  <espindola@google.com>
2700
2701         * tree-vrp.c (extract_code_and_val_from_cond): Remove.
2702         (register_edge_assert_for_2): Split the cond argument.
2703         (register_edge_assert_for_1): Adjust for the change in
2704         register_edge_assert_for_2.
2705         (register_edge_assert_for): Split the cond argument.
2706         (find_switch_asserts): Adjust for the change in
2707         register_edge_assert_for.
2708
2709 2008-04-02  Kai Tietz  <kai.tietz@onevision.com>
2710
2711         * config.gcc: Add for x86_64-*-mingw* the t-crtfm to tbuild.
2712         * config/i386/cygming.h (ASM_OUTPUT_DWARF_OFFSET): Add 8 byte
2713         offsets for 64-bit mingw.
2714         * config/i386/i386.c (ix86_pass_by_reference): Correct calling
2715         abi for x86_64-pc-mingw.
2716
2717 2008-04-02  Richard Guenther  <rguenther@suse.de>
2718
2719         * tree-vrp.c (extract_range_from_assert): Make sure to not
2720         produce range min/max with TREE_OVERFOW set.
2721         If merging a anti-range and a range keep the anti-range if
2722         the range covers all values of the type.
2723         (register_edge_assert_for_2): Only allow sign-changing
2724         conversions in detecting canonical range checks.  Also
2725         register an assert for the unsigned name if useful.
2726
2727         PR tree-optimization/35787
2728         * tree-vrp.c (vrp_val_max): New function.
2729         (vrp_val_min): Likewise.
2730         (vrp_val_is_max): Move earlier, use vrp_val_{min,max}.
2731         (vrp_val_is_min): Likewise.
2732         (supports_overflow_infinity): Use vrp_val_{min,max}.
2733         (negative_overflow_infinity): Likewise.
2734         (positive_overflow_infinity): Likewise.
2735         (is_negative_overflow_infinity): Use vrp_val_is_{min,max}.
2736         (is_positive_overflow_infinity): Likewise.
2737         (is_overflow_infinity): Likewise.
2738         (avoid_overflow_infinity): Use vrp_val_{min,max} and
2739         vrp_val_is_{min,max}.
2740         (set_and_canonicalize_value_range): Canonicalize anti-ranges
2741         to ranges if possible.  Avoid empty ranges.
2742
2743 2008-04-01  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
2744
2745         PR middle-end/35705
2746         * fold-const.c (get_pointer_modulus_and_residue): Return modulus 1 if
2747         the expression is a function address.
2748
2749 2008-04-01  George Helffrich  <george@gcc.gnu.org>
2750
2751         PR fortran/35154, fortran/23057
2752         * dbxout.c: Emit .stabs debug info for Fortran COMMON block
2753         variables as base symbol name + offset using N_BCOMM/N_ECOMM.
2754         (is_fortran, dbxout_common_name, dbxout_common_check): New functions.
2755         (dbxout_symbol_location): Transform N_LCSYM to N_GSYM for storage
2756         in common.
2757         (dbxout_syms): Check for COMMON-based symbol and wrap in
2758         N_BCOMM/N_ECOMM stab bracket, including as many symbols as possible
2759         in bracket for efficiency.
2760
2761         * dwarf2out.c: Emit DWARF debug info for Fortran COMMON block
2762         using DW_TAG_common_block + member offset.
2763         (add_pubname_string): New function.
2764         (dw_expand_expr): New function to find block name and offset for
2765         COMMON var.
2766         (common_check): New function to check whether symbol in Fortran COMMON.
2767         (gen_variable_die): If COMMON, use DW_TAG_common_block.
2768
2769 2008-04-01  Volker Reichelt  <v.reichelt@netcologne.de>
2770
2771         PR c/35436
2772         * c-format.c (init_dynamic_gfc_info): Ignore invalid locus type.
2773
2774 2008-04-02  Ben Elliston  <bje@au.ibm.com>
2775
2776         * config/v850/v850.md (casesi): Remove if (0) code.
2777         * config/i386/uwin.h (ASM_DECLARE_FUNCTION_NAME): Likewise.
2778         * config/alpha/alpha.c (alpha_initialize_trampoline): Likewise.
2779
2780 2008-04-01  Uros Bizjak  <ubizjak@gmail.com>
2781
2782         * config/i386/i386.md (rex64suffix): New mode attribute.
2783         (floathi<mode>2): Disable expander for SSE math.
2784         (*floathi<mode>2_1): New insn insn_and_split pattern.
2785         (*floathi<mode>2_i387_with_temp): New macroized instruction pattern and
2786         corresponding post-reload splitters.
2787         (*floathi<mode>2_i387): New macroized insn pattern.
2788         (float<SSEMODEI24:mode><X87MODEF:mode>2): New macroized expander.
2789         (*float<SSEMODEI24:mode><X87MODEF:mode>2_1): New macroized
2790         insn_and_split pattern.
2791         (*floatsi<mode>2_vector_mixed_with_temp, *floatsi<mode>2_vector_mixed):
2792         New macroized instruction patterns and corresponding post-reload
2793         splitters.
2794         (*floatsi<mode>2_mixed_with_temp): New macroized instruction pattern
2795         and corresponding post-reload splitters.
2796         (*floatsi<mode>2_mixed_interunit, *floatsi<mode>2_mixed_nointerunit):
2797         New macroized instruction patterns.
2798         (*floatsi<mode>2_vector_sse_with_temp, *floatsi<mode>2_vector_sse): New
2799         macroized instruction patterns and corresponding post-reload splitters.
2800         (*floatsi<mode>2_sse_with_temp): New macroized instruction pattern and
2801         corresponding post-reload splitters.
2802         (*floatsi<mode>2_sse_interunit, *floatsi<mode>2_mixed_nointerunit):
2803         New macroized instruction patterns.
2804         (*floatsi<mode>2_i387_with_temp): New macroized instruction pattern and
2805         corresponding post-reload splitters.
2806         (*floatsi<mode>2_i387): New macroized instruction patterns.
2807
2808 2008-04-01  H.J. Lu  <hongjiu.lu@intel.com>
2809
2810         * config/i386/i386.md (smaxmin): New.
2811         (umaxmin): Likewise.
2812         (maxminiprefix): Likewise.
2813         (maxminfprefix): Likewise.
2814         (<code><mode>3): Likewise.
2815         (smin<mode>3): Removed.
2816         (smax<mode>3): Likewise.
2817
2818         * config/i386/mmx.md (mmx_<code>v2sf3): New.
2819         (mmx_<code>v4hi3): Likewise.
2820         (mmx_<code>v8qi3): Likewise.
2821         (mmx_smaxv2sf3): Removed.
2822         (mmx_sminv2sf3): Likewise.
2823         (mmx_umaxv8qi3): Likewise.
2824         (mmx_smaxv4hi3): Likewise.
2825         (mmx_uminv8qi3): Likewise.
2826         (mmx_sminv4hi3): Likewise.
2827
2828         * config/i386/sse.md (<addsub><mode>3): New.
2829         (*<addsub><mode>3): Likewise.
2830         (<sse>_vm<addsub><mode>3): Likewise.
2831         (<maxmin><mode>3): Likewise.
2832         (*<maxmin><mode>3_finite): Likewise.
2833         (*<maxmin><mode>3): Likewise.
2834         (<sse>_vm<maxmin><mode>3): Likewise.
2835         (sse3_h<addsub>v4sf3): Likewise.
2836         (sse3_h<addsub>v2df3): Likewise.
2837         (<maxmin>v16qi3): Likewise.
2838         (*<maxmin>v16qi3): Likewise.
2839         (<maxmin>v8hi3): Likewise.
2840         (*<maxmin>v8hi3): Likewise.
2841         (*sse4_1_<maxmin><mode>3): Likewise.
2842         (*sse4_1_<maxmin><mode>3): Likewise.
2843         (add<mode>3): Removed.
2844         (*add<mode>3): Likewise.
2845         (<sse>_vmadd<mode>3): Likewise.
2846         (sub<mode>3): Likewise.
2847         (*sub<mode>3): Likewise.
2848         (<sse>_vmsub<mode>3): Likewise.
2849         (smin<mode>3): Likewise.
2850         (*smin<mode>3_finite): Likewise.
2851         (*smin<mode>3): Likewise.
2852         (<sse>_vmsmin<mode>3): Likewise.
2853         (smax<mode>3): Likewise.
2854         (*smax<mode>3_finite): Likewise.
2855         (*smax<mode>3): Likewise.
2856         (<sse>_vmsmax<mode>3): Likewise.
2857         (sse3_haddv4sf3): Likewise.
2858         (sse3_haddv2df3): Likewise.
2859         (sse3_hsubv4sf3): Likewise.
2860         (sse3_hsubv2df3): Likewise.
2861         (umaxv16qi3): Likewise.
2862         (*umaxv16qi3): Likewise.
2863         (smaxv8hi3): Likewise.
2864         (*smaxv8hi3): Likewise.
2865         (*sse4_1_smax<mode>3): Likewise.
2866         (*sse4_1_umax<mode>3): Likewise.
2867         (uminv16qi3): Likewise.
2868         (*uminv16qi3): Likewise.
2869         (sminv8hi3): Likewise.
2870         (*sminv8hi3): Likewise.
2871         (*sse4_1_smin<mode>3): Likewise.
2872         (*sse4_1_umin<mode>3): Likewise.
2873
2874 2008-04-01  Rafael Espindola  <espindola@google.com>
2875
2876         * tree-cfg.c (verify_expr): remove in_phi.
2877         (verify_stmt): Don't call walk_tree with verify_expr. Use
2878         is_gimple_min_invariant instead of is_gimple_val.
2879
2880 2008-04-01  Joseph Myers  <joseph@codesourcery.com>
2881
2882         * doc/include/gpl_v3.texi: Update for manpage generation.
2883         * doc/gcc.texi, doc/gccint.texi: Include gpl_v3.texi instead of
2884         gpl.texi.
2885         * doc/sourcebuild.texi: Document gpl_v3.texi as well as gpl.texi.
2886         * Makefile.in (TEXI_GCC_FILES, TEXI_GCCINT_FILES): Include
2887         gpl_v3.texi instead of gpl.texi.
2888         (gpl.pod): New.
2889
2890 2008-04-01  Jakub Jelinek  <jakub@redhat.com>
2891
2892         PR pch/13675
2893         * c-pch.c (c_common_read_pch): On error close (fd) resp. fclose (f).
2894
2895 2008-04-01  Rafael Espindola  <espindola@google.com>
2896
2897         * tree-vrp.c (extract_code_and_val_from_cond_with_ops): New.
2898         (extract_code_and_val_from_cond): Use
2899         extract_code_and_val_from_cond_with_ops.
2900
2901 2008-04-01  Jan Hubicka  <jh@suse.cz>
2902
2903         * function.c (free_after_compilation): Free epilogue_delay_list.
2904         (prepare_function_start): Assert that previous compilation was freed.
2905
2906 2008-04-01  Jan Hubicka  <jh@suse.cz>
2907             Jim Wilson  <wilson@tuliptree.org>
2908             Andreas Tobler <andreast@gcc.gnu.org>
2909
2910         PR middle-end/35781
2911         * m32c/m32.c (m32c_leaf_function_p, m32c_function_needs_enter): Use
2912         rtl.emit instead cfun->emit.
2913         * sparc/sparc.h (INIT_EXPANDERS): Likewise.
2914         * ia64/ia64.h (INIT_EXPANDERS): Likewise.
2915
2916 2008-04-01  Ben Elliston  <bje@au.ibm.com>
2917
2918         * doc/c-tree.texi (Function Basics): Fix grammatical error.
2919
2920 2008-03-31  Seongbae Park <seongbae.park@gmail.com>
2921
2922         * common.opt (fprofile-dir=, fprofile-use=, fprofile-generate=):
2923         New options
2924         (fprofile-use): Add var flag_profile_use
2925         * coverage.c (coverage_begin_output): Do not open a gcno file for
2926         output only if -ftest-coverage is set.
2927         Do not add getpwd() to gcda file path.
2928         (build_gcov_info): Check the new flag
2929         flag_profile_datafile_relative_path.
2930         (coverage_init): Use profile_data_prefix.
2931         Read profile counter only if flag_profile_use is set.
2932         * opts.c (common_handle_option): New option fprofile-use=,
2933         fprofile-dir=, fprofile-generate=.
2934         * toplev.c (profile_data_prefix): New variable definition.
2935         * toplev.h (profile_data_prefix): New declaration.
2936         * doc/invoke.tex (Option Summary, Optimization Options):
2937         Add new options.
2938
2939 2008-03-31  James E. Wilson  <wilson@tuliptree.org>
2940
2941         * varasm.c (output_constant_pool_1): In LABEL_REF check,
2942         use tmp consistently.
2943
2944         PR target/35695
2945         * config/ia64/div.md (recip_approx_rf): Use UNSPEC not DIV.
2946         * config/ia64/ia64.c (rtx_needs_barrier): Handle
2947         UNSPEC_FR_RECIP_APPROX_RES.
2948         * config/ia64/ia64.md (UNSPEC_FR_RECIP_APPROX_RES): Define.
2949
2950 2008-03-31  Volker Reichelt  <v.reichelt@netcologne.de>
2951
2952         PR c/35750
2953         * c-decl.c (store_parm_decls_oldstyle): Skip invalid parameters.
2954
2955 2008-03-31  Andrew Pinski  <andrew_pinski@playstation.sony.com>
2956
2957         PR middle-end/30186
2958         * fold-const.c (fold_indirect_ref_1): Support accessing non first
2959         element of the vector via a pointer.
2960
2961 2008-03-31  Ian Lance Taylor  <iant@google.com>
2962
2963         * tlink.c (scan_linker_output): Look for symbol name in single quotes.
2964
2965 2008-03-31  Jan Hubicka  <jh@suse.cz>
2966
2967         * builtins.c (expand_builtin_setjmp_receiver): Update call of
2968         get_arg_pointer_save_area.
2969         * expr.c (init_expr): Just clear out rtl.expr.
2970         * function.c (free_after_compilation): Clear out whole RTL structure.
2971         (get_func_frame_size): Merge into ...
2972         (get_frame_size): ... this one.
2973         (assign_stack_local_1): Merge into ...
2974         (assign_stack_local): ... this one.
2975         (expand_function_end): Update call of get_arg_pointer_save_area.
2976         (get_art_pointer_save_area): Remove cfun argument.
2977         * function.h (emit_status): regno_pointer_align does not need length
2978         attribute. Move x_regno_reg_rtx to ...
2979         (regno_reg_rtx): ... new global array.
2980         (reg_rtx_no, seq_stack, REGNO_POINTER_ALIGN): Update accestors.
2981         (pending_stack_adjust, inhibit_defer_pop, saveregs_value,
2982         apply_args_value, forced_labels, stack_pointer_delta):
2983         Update accestors.
2984         (struct varasm_status): Move here from varasm.c
2985         (struct rtl_data): New. Move here some fields from struct function.
2986         (return_label, naked_return_label, stack_slot_list, parm_birth_insn,
2987         frame_offset, stack_check_probe_note, arg_pointer_save_area,
2988         used_temp_slots avail_temp_slots, temp_slot_level,
2989         nonlocal_goto_handler_labels): Update accesstors.
2990         (rtl): New global variable.
2991         (struct function): Move some fileds to rtl_data.
2992         (get_arg_pointer_save_area): Update prototype.
2993         * emit-rtl.c (rtl): Declare.
2994         (regno_reg_rtx): Declare.
2995         (first_insn, last_insn, cur_insn_uid, last_location, first_label_num):
2996         Update.
2997         (gen_reg_rtx): Update.
2998         (init_virtual_regs): Do not tate emit_status argument.
2999         (init_emit): Do not allocate emit.
3000         * varasm.c (varasm_statuc): Move to function.h.
3001         (n_deferred_constatns): Update accestor.
3002         (init_varasm_status): Do not allocate varasm_status.
3003         (force_const_mem, get_pool_size, output_constant_pool): Update.
3004         * stmt.c (force_label_rtx): Do not use x_ prefixes.
3005         (expand_nl_goto_receiver): Update get_arg_pointer_save_area.
3006
3007 2008-03-31  Zdenek Dvorak  <ook@ucw.cz>
3008
3009         PR rtl-optimization/35729
3010         * loop-invariant.c (check_maybe_invariant): Disallow volatile memory
3011         references.
3012
3013 2008-03-31  H.J. Lu  <hongjiu.lu@intel.com>
3014
3015         PR target/32000
3016         * config/i386/i386.md (*movti_internal): Emit unaligned SSE
3017         load/store if memory is unaligned.
3018         (*movti_rex64): Likewise.
3019
3020         * config/i386/predicates.md (misaligned_operand): New.
3021
3022 2008-03-31  Andrew Pinski  <pinskia@gmail.com>
3023
3024         PR tree-opt/35431
3025         * tree-ssa-phiopt.c (conditional_replacement): Return early for
3026         complex types.
3027
3028 2008-03-31  Jan Beulich  <jbeulich@novell.com>
3029
3030         * config/ia64/constraints.md: Add 'j' constraint.
3031         * config/ia64/ia64.md (movsi_internal): Add addp4 case.
3032         (movdi_internal): Likewise.
3033
3034 2008-03-30  Volker Reichelt  <v.reichelt@netcologne.de>
3035
3036         PR c/35748
3037         * c-typeck.c (build_c_cast): Skip invalid fields in unions.
3038
3039 2008-03-30  H.J. Lu  <hongjiu.lu@intel.com>
3040
3041         PR target/35757
3042         * config/i386/i386.c (ix86_expand_sse_4_operands_builtin): Issue
3043         proper error message for the third argument on blendpd and
3044         blendps.
3045
3046         * config/i386/sse.md (blendbits): New.
3047         (sse4_1_blendp<ssemodesuffixf2c>): Use it.
3048
3049 2008-03-30  Eric Botcazou  <ebotcazou@adacore.com>
3050
3051         * fold-const.c (fold_binary) <BIT_IOR_EXPR>: Add missing conversions.
3052
3053 2008-03-30  Richard Guenther  <rguenther@suse.de>
3054
3055         PR middle-end/31023
3056         * fold-const.c (fold_sign_changed_comparison): Do leave
3057         conversions to base-types alone.
3058
3059 2008-03-29  Andrew Pinski  <andrew_pinski@playstation.sony.com>
3060
3061         * config/rs6000/rs6000.c (rs6000_stack_info): Don't force saving of
3062         the link register if one altivec register is be saved.
3063
3064 2008-03-30  Ben Elliston  <bje@au.ibm.com>
3065
3066         * final.c (final_scan_insn): Remove if (0) code.
3067
3068 2008-03-28  Volker Reichelt  <v.reichelt@netcologne.de>
3069
3070         * c-parser.c (c_parser_next_token_is_keyword): Simplify.
3071
3072 2008-03-28  H.J. Lu  <hongjiu.lu@intel.com>
3073
3074         * config/i386/sse.md (*and<mode>3): Pass <MODE>mode instead
3075         of V4SFmode to ix86_binary_operator_ok.
3076
3077 2008-03-28  Uros Bizjak  <ubizjak@gmail.com>
3078
3079         * config/i386/i386.c (override_options): Initialize
3080         ix86_veclib_handler to ix86_veclibabi_svml when
3081         -mveclibabi=svml is used.
3082         (ix86_veclibabi_svml): New function for SVML ABI style
3083         vectorization support.
3084         * doc/invoke.texi (-mveclibabi) [svml]: Document new target option.
3085
3086 2008-03-28  Rafael Espindola  <espindola@google.com>
3087
3088         * fold-const.c (tree_unary_nonnegative_warnv_p): Make it public.
3089         (tree_binary_nonnegative_warnv_p): Make it public.
3090         (tree_single_nonnegative_warnv_p): Make it public.
3091         (tree_invalid_nonnegative_warnv_p): Make it public.
3092         (tree_unary_nonzero_warnv_p): Make it public.
3093         (tree_binary_nonzero_warnv_p): Make it public
3094         (tree_single_nonzero_warnv_p): Make it public.
3095         * tree-vrp.c (vrp_evaluate_conditional_warnv_with_ops): New function.
3096         (extract_range_from_binary_expr): Split the expr argument.
3097         (extract_range_from_unary_expr): Split the expr argument.
3098         (extract_range_from_comparison): Split the expr argument.
3099         (extract_range_from_expr): Use the new aux functions.
3100         (vrp_evaluate_conditional_warnv): Use
3101         vrp_evaluate_conditional_warnv_with_ops.
3102         * tree.h (tree_unary_nonzero_warnv_p): Declare.
3103         (tree_binary_nonzero_warnv_p): Declare.
3104         (tree_single_nonzero_warnv_p): Declare.
3105         (tree_expr_nonzero_warnv_p): Declare.
3106         (tree_unary_nonnegative_warnv_p): Declare.
3107         (tree_binary_nonnegative_warnv_p): Declare.
3108         (tree_single_nonnegative_warnv_p): Declare.
3109         (tree_invalid_nonnegative_warnv_p): Declare.
3110
3111 2008-03-28  Richard Guenther  <rguenther@suse.de>
3112
3113         PR tree-optimization/30317
3114         PR tree-optimization/30911
3115         PR tree-optimization/34793
3116         * tree-vrp.c (set_and_canonicalize_value_range): New function.
3117         (struct assert_locus_d): New member EXPR.
3118         (register_new_assert_for): Add EXPR parameter to support
3119         ASSERT_EXPR <name, expr OP limit>.
3120         (register_edge_assert_for_1): Adjust callers.
3121         (find_assert_locations): Likewise.
3122         (process_assert_insertions_for): Build condition from expression.
3123         (extract_range_from_assert): Handle ASSERT_EXPRs
3124         of the form ASSERT_EXPR <name, expr OP limit>.
3125         (register_edge_assert_for_2): New helper registering
3126         asserts for comparisons.  Recognize range tests of the form
3127         (unsigned)i - CST1 OP CST2.
3128         (register_edge_assert_for_1): Use it.
3129         (register_edge_assert_for): Likewise.
3130         (needs_overflow_infinity): Integer sub-types
3131         do not need overflow infinities.
3132         (vrp_val_is_max): The extreme values of integer sub-types
3133         are those of the base type.
3134         (vrp_val_is_min): Likewise.
3135         * tree.def (ASSERT_EXPR): Document extra allowed conditional
3136         expressions.
3137
3138 2008-03-28  Nick Clifton  <nickc@redhat.com>
3139
3140         PR target/31110
3141         * config/mn10300/mn10300.c (mn10300_secondary_reload_class):
3142         Return GENERAL_REGS for stack adjustment reloads.
3143
3144 2008-03-28  Andrew Pinski  <andrew_pinski@playstation.sony.com>
3145
3146         PR target/31334
3147         * config/rs6000/rs6000.c (rs6000_expand_vector_init): Create a
3148         const_vector when all the vectors are constant.
3149
3150 2008-03-27  Bob Wilson  <bob.wilson@acm.org>
3151
3152         * config/xtensa/xtensa.c (gen_float_relational): Handle unordered
3153         comparisons.
3154         * config/xtensa/xtensa.md (any_cond): Add unordered comparisons.
3155         (any_scc_sf): Add uneq, unlt, unle and unordered operators.
3156         (scc_sf): New.
3157         (s<code>_sf): Use new scc_sf attribute for opcode names.
3158
3159 2008-03-27  Tom Tromey  <tromey@redhat.com>
3160
3161         * doc/sourcebuild.texi, doc/install.texi, configure, aclocal.m4,
3162         configure.ac, Makefile.in, config/t-darwin, config/m32c/t-m32c,
3163         config/spu/t-spu-elf, config/i386/t-interix,
3164         config/i386/t-cygming, config/i386/x-i386, config/i386/t-cygwin,
3165         config/i386/x-darwin, config/i386/x-mingw32,
3166         config/i386/t-netware, config/i386/x-cygwin, config/i386/t-nwld,
3167         config/sh/t-sh, config/sh/t-symbian, config/x-linux,
3168         config/t-sol2, config/x-hpux, config/x-darwin, config/ia64/t-ia64,
3169         config/x-solaris, config/t-vxworks, config/m68k/t-uclinux,
3170         config/rs6000/x-rs6000, config/rs6000/x-darwin64,
3171         config/rs6000/x-darwin, config/rs6000/t-rs6000,
3172         config/score/t-score-elf, config/arm/t-strongarm-pe,
3173         config/arm/t-pe, config/arm/t-arm, config/arm/t-wince-pe,
3174         config/v850/t-v850, config/v850/t-v850e, config/bfin/t-bfin-linux:
3175         Revert automatic dependency patch.
3176
3177 2008-03-27  H.J. Lu  <hongjiu.lu@intel.com>
3178
3179         PR target/35657
3180         * config/i386/i386.c (ix86_function_arg_boundary): Align
3181         decimal floating point to its natural boundary.
3182
3183 2008-03-27  Richard Guenther  <rguenther@suse.de>
3184
3185         PR middle-end/35716
3186         * fold-const.c (fold_comparison): Restrict distinct decl
3187         comparison folding to VAR_DECLs and PARM_DECLs.  Do not
3188         solely rely on operand_equal_p.
3189
3190 2008-03-27  Richard Guenther  <rguenther@suse.de>
3191
3192         PR c/32511
3193         * c-common.c (handle_weak_attribute): Reject combination of
3194         weak and inline.
3195
3196 2008-03-27  Richard Guenther  <rguenther@suse.de>
3197
3198         PR tree-optimization/32810
3199         * tree-ssa-ccp.c (get_symbol_constant_value): Strip useless
3200         conversions from DECL_INITIAL.
3201         (fold_const_aggregate_ref): Likewise from constructor elements.
3202
3203 2008-03-27  Zdenek Dvorak  <ook@ucw.cz>
3204
3205         * tree-affine.h (aff_combination_expand): Declare.
3206         (get_inner_reference_aff): Likewise.
3207         * tree-affine.c (aff_combination_expand): Split out from
3208         tree_to_aff_combination_expand.
3209         (get_inner_reference_aff): New function.
3210         * tree-parloops.c (loop_parallel_p): Free vectorizer info.
3211         * tree-ssa-loop-im.c: Include tree-affine.h and pointer-set.h.
3212         (struct lim_aux_data): sm_done field removed.
3213         (mem_ref_loc_p, mem_ref_locs_p): New types.
3214         (struct mem_ref): Added id, stored, accesses_in_loop,
3215         indep_loop, dep_loop, indep_ref, dep_ref fields.
3216         Removed is_stored, locs and next fields.
3217         (memory_accesses): New variable.
3218         (movement_possibility): Do not allow moving statements
3219         that store to memory.
3220         (outermost_indep_loop, simple_mem_ref_in_stmt, mem_ref_in_stmt):
3221         New functions.
3222         (determine_max_movement): For statements with memory references,
3223         find the outermost loop in that the reference is independent.
3224         (move_computations_stmt): Mark the virtual operands for renaming.
3225         (memref_free, mem_ref_alloc, mem_ref_locs_alloc, mark_ref_stored,
3226         gather_mem_refs_stmt, gather_mem_refs_in_loops, vtoe_hash, vtoe_eq,
3227         vtoe_free, record_vop_access, get_vop_accesses, get_vop_stores,
3228         add_vop_ref_mapping, create_vop_ref_mapping_loop,
3229         create_vop_ref_mapping, analyze_memory_references,
3230         cannot_overlap_p, mem_refs_may_alias_p, rewrite_mem_ref_loc,
3231         get_all_locs_in_loop, ref_always_accessed_p,
3232         refs_independent_p, record_indep_loop, ref_indep_loop_p_1,
3233         ref_indep_loop_p, can_sm_ref_p, find_refs_for_sm,
3234         store_motion_loop, store_motion): New functions.
3235         (struct vop_to_refs_elt): New type.
3236         (record_mem_ref_loc, free_mem_ref_locs, rewrite_mem_refs,
3237         memref_hash, memref_eq, hoist_memory_references): Rewritten.
3238         (schedule_sm): Replaced by...
3239         (execute_sm): ... this.
3240         (determine_lsm_ref, hoist_memory_references,
3241         loop_suitable_for_sm, gather_mem_refs_stmt, gather_mem_refs,
3242         find_more_ref_vops, free_mem_ref, free_mem_refs,
3243         determine_lsm_loop, determine_lsm): Removed.
3244         (tree_ssa_lim_finalize): Free data structures used by store motion.
3245         (tree_ssa_lim): Call analyze_memory_references.  Use
3246         store_motion instead of determine_lsm.
3247
3248 2008-03-27  Paolo Bonzini  <bonzini@gnu.org>
3249
3250         * config.cc (m68hc11, m6811, m68hc12, m6812): Add usegas.h,
3251         rename tmake_file to m68hc11/t-m68hc11.
3252         (mcore): Set inhibit_libc to true.
3253         * config.host (alpha*-dec-*vms*): Set extra_programs.
3254         (interix3*): Don't use host_xmake_file.
3255         * configure.ac: Let config.gcc override inhibit_libc.
3256         * configure: Regenerate.
3257
3258         * config/alpha/x-vms (EXTRA_PROGRAMS): Remove.
3259         * config/t-openbsd-thread: Remove commented out lines.
3260         
3261         * config/x-interix: Remove.
3262
3263         * config/m68hc11/t-m68hc11-gas: Rename to...
3264         * config/m68hc11/t-m68hc11: ... this.  Remove T_CPPFLAGS.
3265
3266         * config/mcore/t-mcore: Remove T_CFLAGS.
3267         * config/mcore/t-mcore-pe: Likewise.
3268
3269 2008-03-27  Paolo Bonzini  <bonzini@gnu.org>
3270
3271         * configure.ac: Replace custom __GNU_SOURCE test with
3272         AC_USE_SYSTEM_EXTENSIONS.  Move it earlier.
3273         * aclocal.m4: Regenerate.
3274         * configure: Regenerate.
3275         * config.in: Regenerate.
3276
3277 2008-03-27  Richard Guenther  <rguenther@suse.de>
3278
3279         * fold-const.c (target.h): Include.
3280         (fold_comparison): Fold comparison of addresses of decls
3281         that bind locally or of constants.  Consolidate address folding code.
3282         * tree-vrp.c (operand_less_p): Deal with non-INTEGER_CST
3283         results from fold_binary_to_constant.
3284         (compare_values_warnv): Likewise.
3285
3286 2008-03-27  Andrew Pinski  <pinskia@gmail.com>
3287
3288         PR middle-end/35429
3289         * fold-const.c (fold_truthop): Check for integeral types when folding
3290         a == 0 && b == 0 and a != 0 || b != 0 .
3291
3292 2008-03-26  Eric Botcazou  <ebotcazou@adacore.com>
3293
3294         * tree.c (get_unwidened): Remove code fiddling with COMPONENT_REF.
3295
3296 2008-03-26  Andreas Schwab  <schwab@suse.de>
3297
3298         * doc/invoke.texi: Fix use of @item vs. @itemx.
3299
3300 2008-03-26  Tom Tromey  <tromey@redhat.com>
3301
3302         * Makefile.in (build/gensupport.o, build/print-rtl.o,
3303         build/read-rtl.o, build/rtl.o, build/gencondmd.o, build/genattr.o,
3304         build/genattrtab.o, build/genautomata.o, build/gencheck.o,
3305         build/gencodes.o, build/genconditions.o, build/genconfig.o,
3306         build/genconstants.o, build/genemit.o, build/genextract.o,
3307         build/genflags.o, build/genmddeps.o, build/genopinit.o,
3308         build/genoutput.o, build/genpeep.o, build/genrecog.o): Depend on
3309         options.h.
3310
3311 2008-03-26  Richard Guenther  <rguenther@suse.de>
3312
3313         Revert
3314         2008-03-26  Richard Guenther  <rguenther@suse.de>
3315
3316         * fold-const.c (target.h): Include.
3317         (fold_comparison): Fold comparison of addresses of two decls
3318         that bind locally.  Consolidate address folding code.
3319
3320 2008-03-26  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
3321
3322         * builtins.c (expand_builtin_pow, fold_builtin_cabs,
3323         fold_builtin_sqrt, fold_builtin_cbrt, fold_builtin_logarithm,
3324         fold_builtin_hypot, fold_builtin_pow): Remove uses of dconst3,
3325         dconstsqrt2, dconstthird, dconste and/or dconst10.
3326         * config/i386/i386.c (ix86_emit_swsqrtsf): Likewise.
3327         * emit-rtl.c (dconst3, dconst10, dconstm2, dconstthird,
3328         dconstsqrt2, dconste): Delete.
3329         (init_emit_once): Likewise.  Simplify initializing dconstm1.
3330         Constify variable.
3331         * real.c (get_real_const): New.
3332         * real.h (dconst3, dconst10, dconstm2, dconstthird,
3333         dconstsqrt2, dconste): Delete.
3334         (real_value_const, get_real_const): New.
3335
3336 2008-03-26  H.J. Lu  <hongjiu.lu@intel.com>
3337
3338         * config/i386/cygming.h (BIGGEST_ALIGNMENT): Removed.
3339
3340         * config/i386/i386.c (ix86_function_arg_boundary): Check
3341         BIGGEST_ALIGNMENT instead of 128.
3342         (setup_incoming_varargs_64): Likewise.
3343
3344 2008-03-26  Tom Tromey  <tromey@redhat.com>
3345
3346         * Makefile.in (DEPFILES): Add missing '/'.
3347
3348 2008-03-26  Richard Guenther  <rguenther@suse.de>
3349
3350         * fold-const.c (target.h): Include.
3351         (fold_comparison): Fold comparison of addresses of two decls
3352         that bind locally.  Consolidate address folding code.
3353
3354 2008-03-26  Nick Clifton  <nickc@redhat.com>
3355
3356         PR target/31232
3357         * config/stormy16/stormy16.c (xstormy16_legitimate_address_p): Do
3358         not allow INT+INT as a legitimate addressing mode.
3359
3360 2008-03-26  Richard Guenther  <rguenther@suse.de>
3361
3362         * tree-flow.h (widen_bitfield): Remove declaration.
3363         * tree-ssa-ccp.c (visit_assignment): Remove unneeded code.
3364         (widen_bitfield): Remove function.
3365         * tree-ssa-dom.c (record_equivalences_from_stmt): Remove unneeded
3366         code.
3367
3368 2008-03-25  Andrew Pinski  <andrew_pinski@playstation.sony.com>
3369
3370         PR target/31558
3371         * config/rs6000/rs6000-c.c (rs6000_builtin_type_compatible): Handle
3372         error_mark_node's.
3373
3374 2008-03-25  Richard Sandiford  <rsandifo@nildram.co.uk>
3375
3376         PR rtl-optimization/35232
3377         * reload1.c (reg_reloaded_call_part_clobbered): Clarify comment.
3378         (forget_old_reloads_1, forget_marked_reloads): Don't clear
3379         reg_reloaded_call_part_clobbered here.
3380         (reload_regs_reach_end_p): New function.
3381         (reload_reg_rtx_for_input): New variable.
3382         (reload_reg_rtx_for_output): Likewise.
3383         (emit_input_reload_insns): Use reloadreg rather than rl->reg_rtx
3384         when reassigning a pseudo register.  Load reloadreg from 
3385         reload_reg_rtx_for_input, moving the mode and register
3386         calculation to...
3387         (do_input_reload): ...here.  Use the mode-adjusted reg_rtx
3388         instead of the original when deciding whether an input reload
3389         would be a no-op or whether an output reload can be deleted.
3390         (emit_output_reload_insns): Use the mode-adjusted reg_rtx
3391         when setting up new_spill_reg_store.  Load it from
3392         reload_reg_rtx_for_output, moving the mode and register
3393         calculation to...
3394         (do_output_reload): ...here.  Use the mode-adjusted reg_rtx
3395         instead of the original when deciding whether an output reload
3396         would be a no-op.  Do the same when modifying insn notes.
3397         Use rtx_equal_p instead of == to compare the registers.
3398         (inherit_piecemeal_p): Take a mode and two register numbers
3399         as argument.
3400         (emit_reload_insns): Clear new_spill_reg_store for every hard
3401         register in the reload register.  Remove spill registers
3402         from reg_reloaded_valid before considering whether to record
3403         inheritance information for them.  Use reload_reg_rtx_for_output
3404         instead of reg_rtx when recording output reloads.  Use
3405         reload_reg_rtx_for_input instead of reg_rtx when recording
3406         input reloads.  Set or clear reg_reloaded_call_part_clobbered
3407         at the same time as setting reg_reloaded_valid.
3408         (delete_output_reload): Add a new_reload_reg parameter and use it
3409         instead of rld[j].reg_rtx.