OSDN Git Service

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