OSDN Git Service

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