OSDN Git Service

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