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