OSDN Git Service

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